From 4d99599c7fe2cb128c97ed86fdde3ecbe603b487 Mon Sep 17 00:00:00 2001 From: KappaBot Date: Wed, 13 Mar 2024 09:02:51 +0000 Subject: [PATCH] Sync website for js with Kappa-Dev/KaSim@ --- try/JsSim.js | 415 +++++++++++++++++++++++--------------------- try/KaSaWorker.js | 2 +- try/KaStorWorker.js | 2 +- try/index.html | 30 ++-- 4 files changed, 238 insertions(+), 211 deletions(-) diff --git a/try/JsSim.js b/try/JsSim.js index 7f431d660..53e8a06ab 100644 --- a/try/JsSim.js +++ b/try/JsSim.js @@ -156166,7 +156166,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 return caml_call2 (Lwt[33][1], _n_, function(param){return add_projects(projects);}); } - function with_project(label, handler){ + function eval_with_project(label, handler){ var match = caml_call1(React[2][3], state)[1]; if(match){var current = match[1]; return caml_call1(handler, current[4]);} var @@ -156219,7 +156219,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 remove_project, init, sync, - with_project, + eval_with_project, on_project_change_async]; runtime.caml_register_global (82, Dune_exe_State_project, "Dune__exe__State_project"); @@ -157256,7 +157256,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 caml_call2(set_state, 0, [0, simulation_state]); return; } - function with_simulation(label, handler){ + function eval_with_sim_manager(label, handler){ function project_handler(manager){ return caml_call2(handler, manager, caml_call1(React[2][3], state)); } @@ -157266,7 +157266,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 var _X_ = caml_call4(Kappa_json_api_Api_common[2], 0, 0, 0, error_msg); return caml_call1(Lwt[4], _X_); } - function with_simulation_info(label, opt, _V_, _U_, param){ + function eval_with_sim_manager_and_info(label, opt, _V_, _U_, param){ if(opt) var sth = opt[1], stopped = sth; else @@ -157281,7 +157281,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 var sth$1 = _U_[1], ready = sth$1; else var ready = function(param, _W_){return fail_lwt(cst_Simulation_ready);}; - return with_simulation + return eval_with_sim_manager (label, function(manager, s){ var match = s[1]; @@ -157293,7 +157293,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 return caml_call2(ready, manager, simulation_info); }); } - function when_ready(label, opt, operation){ + function eval_when_ready(label, opt, operation){ if(opt) var sth = opt[1], handler = sth; else @@ -157304,7 +157304,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 function(param){ var _R_ = - with_simulation_info + eval_with_sim_manager_and_info (label, [0, function(param){ @@ -157393,7 +157393,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 } function init(param){return Lwt[36];} function continue_simulation(pause_condition){ - return with_simulation_info + return eval_with_sim_manager_and_info (cst_continue_simulation, [0, function(param){ @@ -157424,7 +157424,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0); } function pause_simulation(param){ - return with_simulation_info + return eval_with_sim_manager_and_info (cst_pause_simulation, [0, function(param){ @@ -157450,7 +157450,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0); } function stop_simulation(param){ - return with_simulation_info + return eval_with_sim_manager_and_info (cst_stop_simulation, [0, function(param){ @@ -157488,7 +157488,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0); } function start_simulation(simulation_parameter){ - return with_simulation_info + return eval_with_sim_manager_and_info (cst_start_simulation, [0, function(manager){ @@ -157596,7 +157596,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0); } function intervene_simulation(code){ - return with_simulation_info + return eval_with_sim_manager_and_info (cst_perturb_simulation, [0, function(param){ @@ -157653,9 +157653,9 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 model_simulation_state, init, refresh, - with_simulation, - with_simulation_info, - when_ready, + eval_with_sim_manager, + eval_with_sim_manager_and_info, + eval_when_ready, continue_simulation, pause_simulation, stop_simulation, @@ -159908,13 +159908,13 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_File_gui_panel_settings_co$12 = 'File "gui/panel_settings_controller.ml", line 82, characters 23-30', cst_File_gui_panel_settings_co$13 = - 'File "gui/panel_settings_controller.ml", line 81, characters 37-44', + 'File "gui/panel_settings_controller.ml", line 81, characters 42-49', cst_simulation_outputs_zip = "simulation_outputs.zip", cst_application_zip = "application/zip", cst_File_gui_panel_settings_co$14 = 'File "gui/panel_settings_controller.ml", line 93, characters 23-30', cst_File_gui_panel_settings_co$15 = - 'File "gui/panel_settings_controller.ml", line 92, characters 37-44'; + 'File "gui/panel_settings_controller.ml", line 92, characters 42-49'; function continue_simulation(param){ return caml_call2 (Kappa_js_lib_Common[16], @@ -160761,7 +160761,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 [12, 37, [11, " of event loops were productive.", [16, [17, 0, 0]]]]]], "@[%.2f%% of event loops were productive.%t@]"], cst_File_gui_panel_settings_ml = - 'File "gui/panel_settings.ml", line 757, characters 59-66', + 'File "gui/panel_settings.ml", line 757, characters 69-76', _aL_ = [0, "visible-md-block", [0, "visible-lg-block", 0]], _aM_ = [0, cst_col_xs_3, 0], _aN_ = [0, cst_col_xs_9, 0], @@ -164768,7 +164768,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 match$0 = caml_call2(React[2][2], 0, [0, 0]), set_accuracy = match$0[2], accuracy = match$0[1], - contactmap = + contact_map_js = caml_call2 (Dune_exe_Js_contact[1], display_id, Dune_exe_State_settings[9]), cst_Wrong_ugly_contact_map_ext = "Wrong ugly contact_map extractor", @@ -164842,12 +164842,12 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 var map_json = match[2], data = caml_call5(Yojson_Basic[1], 0, 0, 0, 0, map_json); - contactmap.setData(runtime.caml_jsstring_of_string(data)); + contact_map_js.setData(runtime.caml_jsstring_of_string(data)); return data; }, function(mh){ caml_call2(Dune_exe_State_error[3], cst_tab_contact_map, mh); - contactmap.clearData(); + contact_map_js.clearData(); return cst_null; }), _F_ = @@ -164983,7 +164983,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 } function onresize(param){ var _l_ = caml_call1(React[2][3], tab_is_active); - return _l_ ? contactmap.redraw() : _l_; + return _l_ ? contact_map_js.redraw() : _l_; } var Dune_exe_Tab_contact_map = @@ -165284,7 +165284,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][310], _B_, _w_), cst_application_json = "application/json", cst_File_gui_tab_influences_ml = - 'File "gui/tab_influences.ml", line 193, characters 55-62', + 'File "gui/tab_influences.ml", line 193, characters 60-67', cst_influence_map_export = "influence_map_export", export_config = [0, @@ -165334,13 +165334,13 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 _D_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], "Graph"), l = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][181], cst_graph), 0], cst_File_gui_tab_influences_ml$4 = - 'File "gui/tab_influences.ml", line 793, characters 50-57', + 'File "gui/tab_influences.ml", line 793, characters 55-62', cst_influence_map_prev_node = "influence_map_prev_node", cst_File_gui_tab_influences_ml$3 = - 'File "gui/tab_influences.ml", line 769, characters 50-57', + 'File "gui/tab_influences.ml", line 769, characters 55-62', cst_influence_map_next_node = "influence_map_next_node", cst_File_gui_tab_influences_ml$2 = - 'File "gui/tab_influences.ml", line 745, characters 50-57', + 'File "gui/tab_influences.ml", line 745, characters 55-62', cst_influence_map_recenter = "influence_map_recenter", _aw_ = [0, [0, 0, 0, 1]], _ax_ = [1, 0], @@ -165349,10 +165349,10 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_shown_bs_tab = "shown.bs.tab", cst_navinfluences$0 = cst_navinfluences$1, cst_File_gui_tab_influences_ml$1 = - 'File "gui/tab_influences.ml", line 659, characters 43-50', + 'File "gui/tab_influences.ml", line 659, characters 48-55', _ar_ = [0, 2], cst_File_gui_tab_influences_ml$0 = - 'File "gui/tab_influences.ml", line 621, characters 45-52', + 'File "gui/tab_influences.ml", line 621, characters 50-57', cst_influence_map = "influence_map", _as_ = [0, 1], _ap_ = [0, cst_flex_content, 0], @@ -166670,7 +166670,6 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 Dune_exe_Tab_influences = global_data.Dune__exe__Tab_influences, Dune_exe_Tab_constraints = global_data.Dune__exe__Tab_constraints, Dune_exe_Tab_polymers = global_data.Dune__exe__Tab_polymers, - React = global_data.React, Kappa_js_lib_Common = global_data.Kappa_js_lib__Common, Stdlib_Format = global_data.Stdlib__Format, Kappa_generic_toolset_Pp = global_data.Kappa_generic_toolset__Pp, @@ -166682,6 +166681,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 Lwt = global_data.Lwt, Dune_exe_State_project = global_data.Dune__exe__State_project, Dune_exe_State_error = global_data.Dune__exe__State_error, + React = global_data.React, Js_of_ocaml_tyxml_Tyxml_js = global_data.Js_of_ocaml_tyxml__Tyxml_js, Dune_exe_Ui_common = global_data.Dune__exe__Ui_common, ReactiveData = global_data.ReactiveData, @@ -166703,12 +166703,12 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 _d_ = [0, cst_col_md_6, [0, cst_flex_content, 0]], cst_Dead_rule = "Dead rule ", cst_File_gui_tab_editor_ml_lin = - 'File "gui/tab_editor.ml", line 78, characters 43-50', + 'File "gui/tab_editor.ml", line 81, characters 48-55', cst_tab_editor_dead_rule = cst_tab_editor_dead_rule$1, _e_ = [0, 1], cst_Dead_agent = "Dead agent ", cst_File_gui_tab_editor_ml_lin$0 = - 'File "gui/tab_editor.ml", line 124, characters 43-50', + 'File "gui/tab_editor.ml", line 127, characters 48-55', cst_tab_editor_dead_agent = "tab_editor_dead_agent", _f_ = [0, 1], cst_s = "s", @@ -166726,7 +166726,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 [2, 0, [12, 58, [2, 0, [15, 0]]]]]]], "Rule %s may induce non weakly reversible events in the following context%s:%s%a"], cst_File_gui_tab_editor_ml_lin$1 = - 'File "gui/tab_editor.ml", line 166, characters 43-50', + 'File "gui/tab_editor.ml", line 169, characters 48-55', cst_tab_editor_dead_rule$0 = cst_tab_editor_dead_rule$1, _j_ = [0, 1], cst_hide_bs_tab = "hide.bs.tab", @@ -166734,6 +166734,19 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_shown_bs_tab = "shown.bs.tab", cst_naveditor$0 = cst_naveditor$1; function navli(param){return ReactiveData[1][1];} + function childs_hide(b){ + return b + ? (caml_call1 + (Dune_exe_Tab_contact_map[5], 0), + caml_call1(Dune_exe_Tab_influences[5], 0), + caml_call1(Dune_exe_Tab_constraints[5], 0), + caml_call1(Dune_exe_Tab_polymers[6], 0)) + : (caml_call1 + (Dune_exe_Tab_contact_map[6], 0), + caml_call1(Dune_exe_Tab_influences[6], 0), + caml_call1(Dune_exe_Tab_constraints[6], 0), + caml_call1(Dune_exe_Tab_polymers[5], 0)); + } function content(param){ var _I_ = @@ -166787,25 +166800,13 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0, Dune_exe_Subpanel_editor[1], function(editor_full){ + childs_hide(editor_full); var _Y_ = editor_full ? _c_ : _d_; return caml_call1(React[2][1], _Y_); }), _X_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _W_), 0]]; return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _X_, _V_), _U_]; } - function childs_hide(b){ - return b - ? (caml_call1 - (Dune_exe_Tab_contact_map[5], 0), - caml_call1(Dune_exe_Tab_influences[5], 0), - caml_call1(Dune_exe_Tab_constraints[5], 0), - caml_call1(Dune_exe_Tab_polymers[6], 0)) - : (caml_call1 - (Dune_exe_Tab_contact_map[6], 0), - caml_call1(Dune_exe_Tab_influences[6], 0), - caml_call1(Dune_exe_Tab_constraints[6], 0), - caml_call1(Dune_exe_Tab_polymers[5], 0)); - } function onload(param){ caml_call1(Dune_exe_Subpanel_editor[4], 0); caml_call3 @@ -167004,7 +167005,6 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 caml_call1(Dune_exe_Tab_influences[3], 0); caml_call1(Dune_exe_Tab_constraints[3], 0); caml_call1(Dune_exe_Tab_polymers[3], 0); - caml_call3(React[2][11], 0, childs_hide, Dune_exe_Subpanel_editor[1]); caml_call3 (Kappa_js_lib_Common[9], cst_naveditor, @@ -167121,7 +167121,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 Dune_exe_State_simulation[2], Dune_exe_State_simulation[3]), cst_File_gui_tab_flux_ml_line_ = - 'File "gui/tab_flux.ml", line 29, characters 57-64', + 'File "gui/tab_flux.ml", line 29, characters 67-74', _c_ = [1, 0], _b_ = caml_call1(React[2][15], _a_), _d_ = @@ -167184,7 +167184,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 din_select = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][5][311], _e_, din_list), cst_File_gui_tab_flux_ml_line_$0 = - 'File "gui/tab_flux.ml", line 53, characters 65-72', + 'File "gui/tab_flux.ml", line 53, characters 75-82', _f_ = caml_call2(ReactiveData[1][12], 0, din_list), din_data = caml_call3 @@ -167359,7 +167359,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 _l_, din_table), cst_File_gui_tab_flux_ml_line_$1 = - 'File "gui/tab_flux.ml", line 129, characters 37-44'; + 'File "gui/tab_flux.ml", line 129, characters 42-49'; function export_current_din(to_string, mime, filename){ var t1 = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[9][15], din_select), @@ -167529,16 +167529,16 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 } var global_data = runtime.caml_get_global_data(), - cst$1 = "\n", + cst$1 = cst$3, cst$0 = cst$3, - cst = cst$3, + cst = "\n", cst$2 = cst$3, Kappa_js_lib_Common = global_data.Kappa_js_lib__Common, - Stdlib_List = global_data.Stdlib__List, - Stdlib_String = global_data.Stdlib__String, Kappa_generic_toolset_Result_u = global_data.Kappa_generic_toolset__Result_util, Lwt = global_data.Lwt, + Stdlib_List = global_data.Stdlib__List, + Stdlib_String = global_data.Stdlib__String, Dune_exe_State_simulation = global_data.Dune__exe__State_simulation, Lwt_react = global_data.Lwt_react, React = global_data.React, @@ -167549,7 +167549,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 tab_is_active = match[1], tab_was_active = [0, 0], cst_File_gui_tab_log_ml_line_3 = - 'File "gui/tab_log.ml", line 38, characters 63-70', + 'File "gui/tab_log.ml", line 33, characters 70-77', _a_ = [0, "panel-pre", [0, "panel-scroll", 0]], cst_hide_bs_tab = "hide.bs.tab", cst_navlog = cst_navlog$1, @@ -167594,13 +167594,14 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 function(param){ var _i_ = - caml_call2(Kappa_generic_toolset_Result_u[14], 0, cst$0); + caml_call2(Kappa_generic_toolset_Result_u[14], 0, cst$1); return caml_call1(Lwt[4], _i_); }], [0, function(param){ var - _h_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, cst); + _h_ = + caml_call2(Kappa_generic_toolset_Result_u[14], 0, cst$0); return caml_call1(Lwt[4], _h_); }], [0, @@ -167611,7 +167612,8 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 }], 0); return caml_call2 - (Lwt[28], + (Lwt[33][2], + _f_, function(x){ var match = x[1]; if(0 === match[0]){var x$0 = match[1]; return x$0;} @@ -167622,9 +167624,8 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (Stdlib_List[19], function(param){var text = param[2]; return text;}, list); - return caml_call2(Stdlib_String[6], cst$1, _g_); - }, - _f_); + return caml_call2(Stdlib_String[6], cst, _g_); + }); }); return caml_call3(React[2][9], 0, cst$2, _e_); }), @@ -167700,6 +167701,11 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 ? f(a0, a1, a2, a3) : runtime.caml_call_gen(f, [a0, a1, a2, a3]); } + function caml_call5(f, a0, a1, a2, a3, a4){ + return (f.l >= 0 ? f.l : f.l = f.length) == 5 + ? f(a0, a1, a2, a3, a4) + : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]); + } var global_data = runtime.caml_get_global_data(), cst = cst$6, @@ -167716,7 +167722,6 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 Dune_exe_Ui_common = global_data.Dune__exe__Ui_common, Js_of_ocaml_tyxml_Tyxml_js = global_data.Js_of_ocaml_tyxml__Tyxml_js, Stdlib_List = global_data.Stdlib__List, - ReactiveData = global_data.ReactiveData, Kappa_generic_toolset_Result_u = global_data.Kappa_generic_toolset__Result_util, Lwt = global_data.Lwt, @@ -167725,6 +167730,8 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 Stdlib = global_data.Stdlib, React = global_data.React, Assert_failure = global_data.Assert_failure, + Lwt_react = global_data.Lwt_react, + ReactiveData = global_data.ReactiveData, match = caml_call2(React[2][2], 0, 0), set_tab_is_active = match[2], tab_is_active = match[1], @@ -167732,22 +167739,23 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 set_current_file = match$0[2], current_file = match$0[1], cst_File_gui_tab_outputs_ml_li = - 'File "gui/tab_outputs.ml", line 17, characters 37-44', + 'File "gui/tab_outputs.ml", line 17, characters 42-49', _a_ = [0, "form-control", 0], - _b_ = [0, "gui/tab_outputs.ml", 38, 17], + _b_ = [0, "gui/tab_outputs.ml", 37, 17], + _c_ = [1, 0], cst_File_gui_tab_outputs_ml_li$0 = - 'File "gui/tab_outputs.ml", line 69, characters 52-59', - _c_ = [0, "list-group-item", 0], - _d_ = [0, "panel-scroll", [0, "flex-content", 0]], - _e_ = [0, "center-block", [0, "display-header", 0]], - _f_ = [0, "row", 0], - _g_ = [0, "navcontent-view", 0], + 'File "gui/tab_outputs.ml", line 65, characters 69-76', + _d_ = [0, "list-group-item", 0], + _e_ = [0, "panel-scroll", [0, "flex-content", 0]], + _f_ = [0, "center-block", [0, "display-header", 0]], + _g_ = [0, "row", 0], + _h_ = [0, "navcontent-view", 0], cst_hide_bs_tab = "hide.bs.tab", cst_navoutputs = cst_navoutputs$1, cst_shown_bs_tab = "shown.bs.tab", cst_navoutputs$0 = cst_navoutputs$1, cst_change = "change", - _h_ = [0, [12, 35, [2, 0, 0]], "#%s"]; + _i_ = [0, [12, 35, [2, 0, 0]], "#%s"]; function update_outputs(key){ return caml_call3 (Dune_exe_State_simulation[11], @@ -167755,21 +167763,21 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 0, function(manager){ var - _aw_ = + _aD_ = caml_call1 (Kappa_json_api_Api_common[8], function(lines){ caml_call2(set_current_file, 0, [0, [0, key, lines]]); var - _ay_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _ay_); + _aF_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aF_); }), - _ax_ = + _aE_ = caml_call2 (caml_get_public_method(manager, 266276129, 1), manager, key); - return caml_call2(Lwt[33][1], _ax_, _aw_); + return caml_call2(Lwt[33][1], _aE_, _aD_); }); } function file_count(state){ @@ -167784,34 +167792,51 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 } function xml(param){ var - match = caml_call1(ReactiveData[1][2], 0), - handle = match[2], - list = match[1], - _k_ = + _l_ = caml_call4 (React[2][17], 0, tab_is_active, Dune_exe_State_simulation[2], - Dune_exe_State_simulation[3]); - caml_call3 - (React[2][11], - 0, - function(param){ - return caml_call3 - (Dune_exe_State_simulation[11], - cst_File_gui_tab_outputs_ml_li$0, - 0, - function(manager){ + Dune_exe_State_simulation[3]), + _m_ = caml_call1(React[2][15], _l_), + _n_ = + caml_call2 + (Lwt_react[1][43], + function(param){ + var + _al_ = + caml_call2 + (Kappa_generic_toolset_Result_u[9], + function(x){return [1, x];}, + function(param){return _c_;}), + _am_ = + caml_call5 + (Dune_exe_State_simulation[10], + cst_File_gui_tab_outputs_ml_li$0, + [0, + function(param){ var - _ah_ = + _aC_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aC_); + }], + [0, + function(param){ + var + _aB_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, 0); + return caml_call1(Lwt[4], _aB_); + }], + [0, + function(manager, param){ + var + _an_ = caml_call1 (Kappa_json_api_Api_common[8], function(file_line_ids){ if(file_line_ids){ var key = file_line_ids[1]; if(file_line_ids[2]){ - var lines = caml_call1(React[2][3], current_file), _al_ = 0; + var lines = caml_call1(React[2][3], current_file), _ar_ = 0; if(! file_line_ids) throw caml_maybe_attach_backtrace ([0, Assert_failure, _b_], 1); @@ -167822,66 +167847,68 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (Stdlib_List[19], function(key){ var - _ar_ = caml_call1(Dune_exe_Ui_common[12], key), - _as_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ar_), - _at_ = + _aw_ = caml_call1(Dune_exe_Ui_common[12], key), + _ax_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _aw_), + _ay_ = runtime.caml_string_equal(key, current_file_id) ? [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][175], 0), 0] : 0, - _au_ = + _az_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][181], key), 0], - _av_ = [0, caml_call2(Stdlib[37], _au_, _at_)]; + _aA_ = [0, caml_call2(Stdlib[37], _az_, _ay_)]; return caml_call2 - (Js_of_ocaml_tyxml_Tyxml_js[4][314], _av_, _as_); + (Js_of_ocaml_tyxml_Tyxml_js[4][314], _aA_, _ax_); }, file_line_ids); update_outputs(current_file_id); var - _aj_ = + _ap_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][7], select_id), 0], - _ak_ = + _aq_ = [0, - [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _a_), _aj_]], - _am_ = + [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _a_), _ap_]], + _as_ = [0, caml_call2 - (Js_of_ocaml_tyxml_Tyxml_js[3][311], _ak_, file_options), - _al_]; + (Js_of_ocaml_tyxml_Tyxml_js[3][311], _aq_, file_options), + _ar_]; } else{ update_outputs(key); var - _ap_ = caml_call1(Dune_exe_Ui_common[12], key), - _aq_ = - [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ap_), 0], - _am_ = + _au_ = caml_call1(Dune_exe_Ui_common[12], key), + _av_ = + [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _au_), 0], + _as_ = [0, - caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][235], 0, _aq_), + caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][235], 0, _av_), 0]; } - var _an_ = _am_; + var select_file = _as_; } else - var _an_ = 0; - caml_call2(ReactiveData[1][7], handle, _an_); + var select_file = 0; var - _ao_ = caml_call2(Kappa_generic_toolset_Result_u[14], 0, 0); - return caml_call1(Lwt[4], _ao_); + _at_ = + caml_call2 + (Kappa_generic_toolset_Result_u[14], 0, select_file); + return caml_call1(Lwt[4], _at_); }), - _ai_ = + _ao_ = caml_call1 (caml_get_public_method(manager, -107807751, 2), manager); - return caml_call2(Lwt[33][1], _ai_, _ah_); - }); - }, - _k_); - var - _l_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _c_), 0]], - file_select = - caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][3][247], _l_, list), - _m_ = + return caml_call2(Lwt[33][1], _ao_, _an_); + }], + 0); + return caml_call2(Lwt[33][2], _am_, _al_); + }, + _m_), + _o_ = caml_call2(ReactiveData[1][3], 0, _n_), + _p_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _d_), 0]], + file_select = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][3][247], _p_, _o_), + _q_ = caml_call3 (React[2][11], 0, @@ -167892,75 +167919,75 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (Stdlib_List[19], function(line){ var - _ag_ = + _ak_ = [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], line), 0]; return caml_call2 - (Js_of_ocaml_tyxml_Tyxml_js[4][243], 0, _ag_); + (Js_of_ocaml_tyxml_Tyxml_js[4][243], 0, _ak_); }, lines); }, current_file), - _n_ = caml_call2(ReactiveData[1][4], 0, _m_), - _o_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _d_), 0]], + _r_ = caml_call2(ReactiveData[1][4], 0, _q_), + _s_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _e_), 0]], file_content = - [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][3][247], _o_, _n_), 0], - _p_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), - _q_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst), - _r_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _q_), - _s_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _r_), - _t_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _s_, _p_), - _u_ = - caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][6], file_content, _t_), - _v_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$0), - _w_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _v_), - _x_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _w_), - _y_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _x_, _u_), - _z_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), - _A_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$1), - _B_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _A_), - _C_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _B_), - _D_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _C_, _z_), - _E_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), - _F_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$2), - _G_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _F_), - _H_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _G_), - _I_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _H_, _E_), - _J_ = + [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[8][3][247], _s_, _r_), 0], + _t_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), + _u_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst), + _v_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _u_), + _w_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _v_), + _x_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _w_, _t_), + _y_ = + caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][6], file_content, _x_), + _z_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$0), + _A_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _z_), + _B_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _A_), + _C_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _B_, _y_), + _D_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), + _E_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$1), + _F_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _E_), + _G_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _F_), + _H_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _G_, _D_), + _I_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][3], 0), + _J_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$2), + _K_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _J_), + _L_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _K_), + _M_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _L_, _I_), + _N_ = caml_call2 - (Js_of_ocaml_tyxml_Tyxml_js[4][1][1][6], [0, file_select, 0], _I_), - _K_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$3), - _L_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _K_), - _M_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _L_), - _N_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _M_, _J_), - _O_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _e_), - _P_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _O_), 0]], - _Q_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _P_, _N_), - _R_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _Q_), - _S_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _R_, _D_), - _T_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$4), - _U_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _T_), + (Js_of_ocaml_tyxml_Tyxml_js[4][1][1][6], [0, file_select, 0], _M_), + _O_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$3), + _P_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _O_), + _Q_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _P_), + _R_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _Q_, _N_), + _S_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _f_), + _T_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _S_), 0]], + _U_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _T_, _R_), _V_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _U_), - _W_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _V_, _S_), - _X_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _f_), - _Y_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _X_), 0]], - _Z_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _Y_, _W_), - ___ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _Z_), - _$_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], ___, _y_), - _aa_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$5), - _ab_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _aa_), + _W_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _V_, _H_), + _X_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$4), + _Y_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _X_), + _Z_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _Y_), + ___ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _Z_, _W_), + _$_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _g_), + _aa_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _$_), 0]], + _ab_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _aa_, ___), _ac_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _ab_), - _ad_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _ac_, _$_), - _ae_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _g_), - _af_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _ae_), 0]]; - return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _af_, _ad_), 0]; + _ad_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _ac_, _C_), + _ae_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], cst$5), + _af_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][221], _ae_), + _ag_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _af_), + _ah_ = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][5], _ag_, _ad_), + _ai_ = caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][1][1][1], _h_), + _aj_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[4][5], _ai_), 0]]; + return [0, caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][247], _aj_, _ah_), 0]; } function content(param){ - var _j_ = xml(0); + var _k_ = xml(0); return [0, caml_call2 (Dune_exe_Ui_common[1], function(t){return 0 < file_count(t) ? 1 : 0;}, - _j_), + _k_), 0]; } function onload(param){ @@ -167974,10 +168001,10 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_navoutputs$0, cst_shown_bs_tab, function(param){return caml_call2(set_tab_is_active, 0, 1);}); - var _i_ = caml_call2(Stdlib_Format[132], _h_, select_id); + var _j_ = caml_call2(Stdlib_Format[132], _i_, select_id); caml_call3 (Kappa_js_lib_Common[9], - _i_, + _j_, cst_change, function(param){ var @@ -167991,7 +168018,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 function onresize(param){return 0;} var Dune_exe_Tab_outputs = [0, navli, content, onload, onresize]; runtime.caml_register_global - (38, Dune_exe_Tab_outputs, "Dune__exe__Tab_outputs"); + (40, Dune_exe_Tab_outputs, "Dune__exe__Tab_outputs"); return; } (globalThis)); @@ -168116,10 +168143,10 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_application_json = "application/json", _a_ = [0, 0, 0], cst_File_gui_tab_plot_ml_line_ = - 'File "gui/tab_plot.ml", line 31, characters 37-44', + 'File "gui/tab_plot.ml", line 31, characters 42-49', _b_ = [0, 0, 0], cst_File_gui_tab_plot_ml_line_$0 = - 'File "gui/tab_plot.ml", line 45, characters 37-44'; + 'File "gui/tab_plot.ml", line 45, characters 42-49'; function has_plot(state){ if(! state) return 0; var state$0 = state[1]; @@ -168237,7 +168264,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 _p_ = [0, [0, caml_call1(Js_of_ocaml_tyxml_Tyxml_js[8][3][5], _o_), _m_]], plot_offset_input = caml_call2(Js_of_ocaml_tyxml_Tyxml_js[4][309], _p_, 0), cst_File_gui_tab_plot_ml_line_$1 = - 'File "gui/tab_plot.ml", line 152, characters 37-44', + 'File "gui/tab_plot.ml", line 152, characters 42-49', cst_text_tsv = cst_text_tsv$0, cst_tsv = cst_tsv$1, cst_tsv$0 = cst_tsv$1, @@ -168824,7 +168851,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 cst_snapshot_kappa = "snapshot_kappa", cst_snapshot_graph = "snapshot_graph", cst_File_gui_tab_snapshot_ml_l = - 'File "gui/tab_snapshot.ml", line 133, characters 43-50'; + 'File "gui/tab_snapshot.ml", line 135, characters 48-55'; function snapshot_count(state){ if(! state) return 0; var state$0 = state[1]; @@ -169047,9 +169074,9 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (Dune_exe_Js_snapshot[1], display_id, Dune_exe_State_settings[9]), _a_ = [0, 0], _b_ = [0, 1], - cst_File_gui_tab_snapshot_ml_l$0 = - 'File "gui/tab_snapshot.ml", line 204, characters 59-66', _c_ = [1, 0], + cst_File_gui_tab_snapshot_ml_l$0 = + 'File "gui/tab_snapshot.ml", line 203, characters 66-73', _d_ = [0, cst_hidden, 0], _e_ = [0, "oneliner", [0, cst_visible, 0]], _f_ = [0, cst_hidden, 0], @@ -169098,7 +169125,7 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 _z_ = [0, "row", 0], _A_ = [0, "navcontent-view", [0, cst_flex_content$1, 0]], cst_onchange = cst_onchange$0, - _B_ = [0, "gui/tab_snapshot.ml", 374, 14], + _B_ = [0, "gui/tab_snapshot.ml", 376, 14], cst_hide_bs_tab = "hide.bs.tab", cst_navsnapshot = cst_navsnapshot$1, cst_shown_bs_tab = "shown.bs.tab", @@ -169120,6 +169147,11 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 select_snapshot(snapshot_js); var _dT_ = + caml_call2 + (Kappa_generic_toolset_Result_u[9], + function(x){return [1, x];}, + function(param){return _c_;}), + _dU_ = caml_call5 (Dune_exe_State_simulation[10], cst_File_gui_tab_snapshot_ml_l$0, @@ -169179,13 +169211,8 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (caml_get_public_method(manager, 1048140386, 6), manager); return caml_call2(Lwt[33][1], _dW_, _dV_); }], - 0), - _dU_ = - caml_call2 - (Kappa_generic_toolset_Result_u[9], - function(x){return [1, x];}, - function(param){return _c_;}); - return caml_call2(Lwt[28], _dU_, _dT_); + 0); + return caml_call2(Lwt[33][2], _dU_, _dT_); }, _H_), list = caml_call2(ReactiveData[1][3], 0, _I_), @@ -170633,4 +170660,4 @@ k2=[2,dD],k3=[0,0,[2,dZ],iC,0,1],k4=[2,jX],k5=[0,[0,0,[2,g1],aX,0,1],[2,bI],dU,0 (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsInN5bWJvbCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkiLCJpJDAiLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sJDAiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX291dF9nZW4iLCJtb2RlIiwicGVybSIsIm5hbWUiLCJjIiwib3Blbl9vdXQiLCJvcGVuX291dF9iaW4iLCJmbHVzaF9hbGwiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wkMSIsInN0cjIiLCJzdHIxIiwiZXhpdF9mdW5jdGlvbiIsImF0X2V4aXQiLCJmX3lldF90b19ydW4iLCJvbGRfZXhpdCIsImZfeWV0X3RvX3J1biQwIiwib2xkX2V4aXQkMCIsIm5ld19leGl0Iiwic3VjY2VzcyIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIm1heF9pbnQiLCJtaW5faW50IiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJzb21lIiwidmFsdWUiLCJvIiwiZGVmYXVsdCQwIiwiYmluZCIsImpvaW4iLCJmb2xkIiwibm9uZSIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJsb2dub3QiLCJjb3B5Iiwib2Zfc3RyaW5nIiwic3ViIiwic3ViX3N0cmluZyIsImV4dGVuZCIsImRzdG9mZiIsInNyY29mZiIsImNweWxlbiIsImZpbGwiLCJibGl0Iiwib2ZzMSIsIm9mczIiLCJibGl0X3N0cmluZyIsInNlcCIsInNlcGxlbiIsImRzdCIsInBvcyIsImhkJDAiLCJjYXQiLCJpc19zcGFjZSIsInRyaW0iLCJqIiwiYXBwbHkxIiwiY2FwaXRhbGl6ZV9hc2NpaSIsInVuY2FwaXRhbGl6ZV9hc2NpaSIsInN0YXJ0c193aXRoIiwicHJlZml4IiwibGVuX3MiLCJsZW5fcHJlIiwiZW5kc193aXRoIiwic3VmZml4IiwibGVuX3N1ZiIsImRpZmYiLCJpbmRleF9yZWMiLCJsaW0iLCJpJDEiLCJpbmRleCIsImluZGV4X3JlY19vcHQiLCJpbmRleF9vcHQiLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9vcHQiLCJyaW5kZXhfcmVjIiwicmluZGV4IiwicmluZGV4X2Zyb20iLCJyaW5kZXhfcmVjX29wdCIsInJpbmRleF9vcHQiLCJyaW5kZXhfZnJvbV9vcHQiLCJjb250YWluc19mcm9tIiwiY29udGFpbnMiLCJyY29udGFpbnNfZnJvbSIsInNwbGl0X29uX2NoYXIiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwidG9fc2VxaSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0X2ludDgiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQxNl9uZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJidHMiLCJib3MiLCJvZl9ieXRlcyIsInRvX2J5dGVzIiwiZyIsInRvX2J1ZmZlciIsImJ1ZmYiLCJmbGFncyIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImluZm8iLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJleHRlbnNpb25fbmFtZSIsImV4dGVuc2lvbl9pZCIsIm1heF9lcGhlX2xlbmd0aCIsImNyZWF0ZSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IiwibXNnIiwiZ2V0X2tleSIsImdldF9rZXlfY29weSIsInNldF9rZXkiLCJ1bnNldF9rZXkiLCJjaGVja19rZXkiLCJibGl0X2tleSIsIm8yIiwibWFrZV9mbG9hdCIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImxhIiwibGIiLCJyZXMkMCIsImxpc3RfbGVuZ3RoIiwidCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJiMCIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJpJDYiLCJlJDEiLCJpJDQiLCJlJDAiLCJpJDUiLCJqJDAiLCJpJDIiLCJpJDMiLCJmYXRoZXIiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJkIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsIm5vX2FyZyQwIiwiZiQwIiwiZ2V0X2FyZyQwIiwiY29uc3VtZV9hcmckMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJ0cmVhdF9hY3Rpb24kMCIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJ0b19zdHJpbmdfZGVmYXVsdCIsImNoYXIkMCIsImxpbmUiLCJjaGFyJDEiLCJsaW5lJDAiLCJmaWxlJDAiLCJjaGFyJDIiLCJsaW5lJDEiLCJmaWxlJDEiLCJjb25zdHJ1Y3RvciIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaXNfcmFpc2UiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImZsaXAiLCJuZWdhdGUiLCJwcm90ZWN0IiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsInByaW50X3N0YXQiLCJhbGxvY2F0ZWRfYnl0ZXMiLCJtYSIsInBybyIsIm1pIiwiY3JlYXRlX2FsYXJtIiwiZGVsZXRlX2FsYXJtIiwibnVsbF90cmFja2VyIiwic2FtcGxpbmdfcmF0ZSIsInRyYWNrZXIiLCJjYWxsc3RhY2tfc2l6ZSIsInN0cmluZyIsImJ5dGVzIiwic3Vic3RyaW5nIiwic3ViYnl0ZXMiLCJmaWxlbmFtZSIsImRpZ2VzdCIsImNoYXJfaGV4IiwidG9faGV4IiwiZnJvbV9oZXgiLCJkaWdpdCIsIm5ld19zdGF0ZSIsImFzc2lnbiIsInN0MSIsInN0MiIsImZ1bGxfaW5pdCIsInNlZWQiLCJzZWVkJDAiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJjdXJ2YWwiLCJuZXd2YWwiLCJuZXd2YWwzMCIsImludGF1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImIxIiwiYjIiLCJtYXhfaW50XzMyIiwiYnBvcyIsImIzIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0cyQwIiwiaW50JDEiLCJmdWxsX2ludCQwIiwiaW50MzIkMCIsIm5hdGl2ZWludCQwIiwiaW50NjQkMCIsImZsb2F0JDEiLCJzY2FsZSIsImJvb2wkMCIsImZ1bGxfaW5pdCQwIiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIiwib25nb2luZ190cmF2ZXJzYWwiLCJmbGlwX29uZ29pbmdfdHJhdmVyc2FsIiwicGFyYW1zIiwicmFuZG9taXplZF9kZWZhdWx0IiwicmFuZG9taXplZCIsInJhbmRvbWl6ZSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nIiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImIkMCIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInN6IiwiaGFzaF9wYXJhbSIsInNlZWRlZF9oYXNoIiwicmVidWlsZCIsImdldF9jb3B5IiwiYXIiLCJlbXB0eWJ1Y2tldCIsImdldF9pbmRleCIsImNyZWF0ZSQwIiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJhZGRfYXV4Iiwic2V0dGVyIiwiYnVja2V0JDAiLCJoYXNoZXMiLCJuZXdzeiIsIm5ld2J1Y2tldCQwIiwibmV3aGFzaGVzIiwiaGJ1Y2tldCIsInByZXZfbGVuIiwibGl2ZSIsImokMiIsIm5ld2J1Y2tldCIsIm9sZGxlbiIsIm5ld3QiLCJvYiIsIm9pIiwib2giLCJvaSQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX2xpbmUiLCJicmVha19zYW1lX2xpbmUiLCJmb3JtYXRfcHBfdG9rZW4iLCJzaXplJDAiLCJ0YWJzIiwiYWRkX3RhYiIsImxzIiwidGFnX25hbWUiLCJtYXJrZXIiLCJicmVha3MiLCJmaXRzIiwib2ZmIiwiYm94X3R5cGUkMCIsIm9mZiQwIiwiaW5zZXJ0aW9uX3BvaW50IiwidGFicyQwIiwiZmlyc3QiLCJoZWFkIiwidGFiIiwib2ZmJDEiLCJpbnNlcnRpb25fcG9pbnQkMCIsIndpZHRoJDIiLCJib3hfdHlwZSQxIiwidGJveCIsInRhZ19uYW1lJDAiLCJtYXJrZXIkMCIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJlbnF1ZXVlX3N0cmluZ19hcyIsImluaXRpYWxpemVfc2Nhbl9zdGFjayIsInN0YWNrIiwicXVldWVfZWxlbSIsInNldF9zaXplIiwibGVmdF90b3RhbCIsInNjYW5fcHVzaCIsImVsZW0iLCJwcF9vcGVuX2JveF9nZW4iLCJicl90eSIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9vcGVuX3RhZyIsInBwX2Nsb3NlX3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJwcF9tYXJnaW4iLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl90YWciLCJjbG9zZV90YWciLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2xpc3QiLCJwcF92Iiwib3B0JDAiLCJwcF9zZXAiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwicHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1IiwicHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1Iiwic2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwicHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwic3RyaW5naWZ5IiwicHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZnVucyIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsInByaW50X29wZW5fdGFnIiwicHJpbnRfY2xvc2VfdGFnIiwic2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJpYyQwIiwibWVtbyIsIm1lbW9fZnJvbV9jaGFubmVsIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwiYXJnX3Jlc3QiLCJrc2NhbmYiLCJlZiIsImV4YyQwIiwiZXhjIiwiYXJncyQxIiwiYXJncyQwIiwiYnNjYW5mIiwia3NzY2FuZiIsInNzY2FuZiIsInNjYW5mIiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJrZnNjYW5mIiwiZnNjYW5mIiwicmVnaXN0ZXIiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJvJDAiLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInJvb3RfZGF0YSIsInRhYmxlcyQwIiwidGFibGVzJDEiLCJ0YWJsZXNfZGF0YSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwieCQyMCIsImNsbyQwIiwibiQzOCIsImUkMTAiLCJuJDM3IiwibiQzNiIsIm4kMiIsIm4kMzUiLCJmJDIwIiwieCQxOSIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ4JDE4IiwieSQwIiwibiQ2IiwiZiQxNSIsIngkMTciLCJuJDMxIiwieCQzIiwibiQ3IiwiZiQxNCIsIngkMTYiLCJlJDgiLCJuJDMwIiwieCQ0IiwibiQ4IiwiZiQxMyIsIngkMTUiLCJuJDI5IiwibiQ5IiwieCQ1IiwiZiQxMiIsIm4kMjgiLCJ4JDE0IiwiZiQ4IiwiZSQyIiwibiQxMCIsIngkNiIsImYkMTEiLCJlJDciLCJuJDI3IiwieCQxMyIsImYkOSIsIm4kMTEiLCJ4JDciLCJmJDEwIiwibiQyNiIsIngkMTIiLCJuJDEyIiwieCQ4IiwibiQyNSIsIngkMTEiLCJuJDEzIiwibiQyNCIsIm0kMTIiLCJuJDE0IiwiZSQzIiwibiQyMyIsImUkNiIsIm0kMTEiLCJuJDE1IiwibSQxIiwibiQyMiIsIm0kMTAiLCJtJDIiLCJ4JDkiLCJtJDkiLCJ4JDEwIiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsIm5leHRfdG9rZW4iLCJlc2NhcGUiLCJjb21tZW50IiwibnVtYmVyIiwiaWRlbnQyIiwiZXhwb25lbnRfcGFydCIsImVuZF9leHBvbmVudF9wYXJ0IiwiYzMiLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwibmV3X2QiLCJidWNrZXRfbGVuZ3RoX2FsaXZlIiwic3RhdHNfYWxpdmUiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDAiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJjcmVhdGUkMSIsImdldF9rZXkkMCIsImdldF9rZXlfY29weSQwIiwic2V0X2tleSQwIiwidW5zZXRfa2V5JDAiLCJjaGVja19rZXkkMCIsImJsaXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUiLCJxdW90ZV9jb21tYW5kIiwiYmFzZW5hbWUiLCJkaXJuYW1lIiwiaXNfZGlyX3NlcCQwIiwiaXNfcmVsYXRpdmUkMCIsImlzX2ltcGxpY2l0JDAiLCJjaGVja19zdWZmaXgkMCIsImNob3Bfc3VmZml4X29wdCQwIiwidGVtcF9kaXJfbmFtZSQwIiwicXVvdGUkMCIsImxvb3AkMCIsImxvb3BfYnMiLCJhZGRfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDEiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNob3Bfc3VmZml4IiwiZXh0ZW5zaW9uX2xlbiIsImkwIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJvcGVuX3RlbXBfZmlsZSIsInN0aCQwIiwicGVybXMiLCJzdGgkMSIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjbG9vcCIsImlkeCIsImNvbCIsImZsb29wIiwibGF5b3V0IiwiZGltcyIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImRpbSIsInNpemVfaW5fYnl0ZXMkMSIsInNsaWNlIiwiaW5pdCQwIiwib2ZfYXJyYXkiLCJiYSIsImRpbTEiLCJkaW0yIiwic2l6ZV9pbl9ieXRlcyQyIiwic2xpY2VfbGVmdCIsInNsaWNlX3JpZ2h0IiwiaW5pdCQxIiwib2ZfYXJyYXkkMCIsInJvdyIsImNyZWF0ZSQyIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQyIiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsInZlcnNpb24iLCJnaXRfdmVyc2lvbiIsInJhaXNlIiwibWF4IiwieCIsInkiLCJtaW4iLCJlcXVhbCIsImVxdWFsJDAiLCJtYXgkMCIsIm1pbiQwIiwiZ2xvYmFsIiwibnVsbCQwIiwidW5kZWZpbmVkJDAiLCJyZXR1cm4kMCIsIm1hcCIsImYiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwieCQwIiwidG9fb3B0aW9uIiwicmV0dXJuJDEiLCJtYXAkMCIsImJpbmQkMCIsInRlc3QkMCIsIml0ZXIkMCIsImNhc2UkMSIsImdldCQwIiwib3B0aW9uJDAiLCJ0b19vcHRpb24kMCIsImNvZXJjZSIsImNvZXJjZV9vcHQiLCJ0cnVlJDAiLCJmYWxzZSQwIiwibmZjIiwibmZkIiwibmZrYyIsIm5ma2QiLCJzdHJpbmdfY29uc3RyIiwicmVnRXhwIiwib2JqZWN0X2NvbnN0cnVjdG9yIiwib2JqZWN0X2tleXMiLCJvIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJhIiwiaWR4IiwiYXJyYXlfbWFwaSIsInN0cl9hcnJheSIsIm1hdGNoX3Jlc3VsdCIsImRhdGVfY29uc3RyIiwibWF0aCIsImVycm9yX2NvbnN0ciIsImV4bl93aXRoX2pzX2JhY2t0cmFjZSIsIm5hbWUiLCJtZXNzYWdlIiwic3RhY2siLCJ0b19zdHJpbmciLCJlIiwicmFpc2VfanNfZXJyb3IiLCJzdHJpbmdfb2ZfZXJyb3IiLCJKU09OIiwiZGVjb2RlVVJJIiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVuY29kZVVSSSIsImVuY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInVuZXNjYXBlIiwiaXNOYU4iLCJpIiwicGFyc2VJbnQiLCJzJDAiLCJwYXJzZUZsb2F0IiwiZXhwb3J0X2pzIiwiZmllbGQiLCJleHBvcnQkMCIsImV4cG9ydF9hbGwiLCJvYmoiLCJrZXlzIiwia2V5IiwibGlzdF9vZl9ub2RlTGlzdCIsImxlbmd0aCIsImFjYyIsImkkMCIsImFjYyQwIiwiaSQxIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInAiLCJuIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJub2RlVHlwZSIsInQxMyIsImNhc3QiLCJ0MTQiLCJlbGVtZW50IiwidGV4dCIsImF0dHIiLCJub19oYW5kbGVyIiwiaGFuZGxlciIsInJlcyIsImZ1bGxfaGFuZGxlciIsInRoaXMkMCIsImludm9rZV9oYW5kbGVyIiwiZXZlbnQiLCJldmVudFRhcmdldCIsIm1ha2UiLCJhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMiLCJ0MjgiLCJ0eXAiLCJjYXB0dXJlIiwib25jZSIsInBhc3NpdmUiLCJoIiwiYiIsImV2IiwiY2FsbGJhY2siLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpZCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsIm9wdF9pdGVyIiwiY29uc3RyIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJ1aW50OEFycmF5IiwiaW50MTZBcnJheSIsInVpbnQxNkFycmF5IiwiaW50MzJBcnJheSIsInVpbnQzMkFycmF5IiwiZmxvYXQzMkFycmF5IiwiZmxvYXQ2NEFycmF5Iiwic2V0IiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwiYWIiLCJ1aW50OCIsImJsb2JfY29uc3RyIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJvcHRpb25zJDAiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJmaWxlbmFtZSIsIm5hbWUkMCIsImRvY19jb25zdHIiLCJkb2N1bWVudCIsImJsb2IiLCJzdHJpbmciLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwibG9hZGVuZCIsImZpbGVSZWFkZXIiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbGVmdCIsInRyeV9rZXlfY29kZV9yaWdodCIsInRyeV9rZXlfY29kZV9udW1wYWQiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJydW5fbmV4dCIsInZhbHVlIiwic3ltYm9sIiwib2ZfZXZlbnQiLCJjaGFyX29mX2ludCIsImVtcHR5X3N0cmluZyIsIm5vbmUiLCJvZl9ldmVudCQwIiwiZWxlbWVudCQwIiwidGFnZ2VkIiwidDEwNSIsIm9wdF90YWdnZWQiLCJ0YWdnZWRFdmVudCIsIm9wdF90YWdnZWRFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInJlcSIsImMiLCJub3ciLCJsYXN0IiwiZHQiLCJkdCQwIiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZm9ybV9lbGVtZW50cyIsImkkMiIsInN0aCIsIm5hbWUkMSIsImxpc3QiLCJmaWxlIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwiZW1wdHlfZm9ybV9jb250ZW50cyIsInBvc3RfZm9ybV9jb250ZW50cyIsImNvbnRlbnRzIiwiZ2V0X2Zvcm1fY29udGVudHMiLCJyZWFkeXN0YXRlY2hhbmdlIiwidGltZW91dCIsIndvcmtlciIsImNyZWF0ZSIsImltcG9ydF9zY3JpcHRzIiwic2NyaXB0cyIsInNldF9vbm1lc3NhZ2UiLCJqc19oYW5kbGVyIiwicG9zdF9tZXNzYWdlIiwibXNnIiwid2ViU29ja2V0IiwiaXNfc3VwcG9ydGVkIiwiZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsImdldENvbnRleHQiLCJjdHgiLCJnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMiLCJhdHRyaWJzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsX3JlIiwicXVvdGVfcmVwbCIsImdsb2JhbF9yZXBsYWNlIiwic19ieSIsInJlcGxhY2VfZmlyc3QiLCJ0MjkiLCJmbGFncyIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlX3JlIiwicXVvdGUiLCJyZWdleHBfc3RyaW5nIiwicmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQiLCJpbnRlcnJ1cHQiLCJwbHVzX3JlIiwidXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmciLCJ1cmxkZWNvZGUiLCJ1cmxlbmNvZGUiLCJvcHQiLCJ3aXRoX3BsdXMiLCJwYXRoX29mX3BhdGhfc3RyaW5nIiwiYXV4IiwiaiIsIndvcmQiLCJlbmNvZGVfYXJndW1lbnRzIiwiZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmciLCJsZW4iLCJpbmRleCIsImRlY29kZV9hcmd1bWVudHMiLCJ1cmxfcmUiLCJmaWxlX3JlIiwidXJsX29mX2pzX3N0cmluZyIsImhhbmRsZSIsInBhdGhfc3RyIiwicHJvdF9zdHJpbmciLCJzc2wiLCJ1cmwiLCJ1cmxfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3VybCIsImZyYWciLCJhcmdzIiwicGF0aCIsInBvcnQiLCJob3N0IiwiZnJhZyQwIiwiYXJncyQwIiwicGF0aCQwIiwicG9ydCQwIiwiaG9zdCQwIiwiZnJhZyQxIiwiYXJncyQxIiwicGF0aCQxIiwiZGVmYXVsdF9odHRwX3BvcnQiLCJkZWZhdWx0X2h0dHBzX3BvcnQiLCJwcm90b2NvbCIsInBhdGhfc3RyaW5nIiwiYXJndW1lbnRzJDAiLCJnZXRfZnJhZ21lbnQiLCJzZXRfZnJhZ21lbnQiLCJ1IiwiYXNfc3RyaW5nIiwidXBkYXRlX2ZpbGUiLCJjb250ZW50Iiwib2MiLCJzZXRfY2hhbm5lbF9mbHVzaGVyIiwib3V0X2NoYW5uZWwiLCJmJDAiLCJzZXRfY2hhbm5lbF9maWxsZXIiLCJpbl9jaGFubmVsIiwibW91bnQiLCJwcmVmaXgiLCJ1bm1vdW50IiwianNfb2Zfb2NhbWxfdmVyc2lvbiIsImVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zIiwicmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwibm9kZSIsImJveCIsIm9icyIsInBlcmZvcm1hbmNlT2JzZXJ2ZXIiLCJlbnRyeV90eXBlcyIsImVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsImsiLCJyZW1vdmUiLCJmaW5kIiwianNvbiIsInJldml2ZXIiLCJpbnB1dF9yZXZpdmVyIiwidW5zYWZlX2lucHV0IiwibWxJbnQ2NF9jb25zdHIiLCJvdXRwdXRfcmV2aXZlciIsIm91dHB1dCIsInN0cmluZ19vZl9uYW1lIiwibmFtZV9vZl9zdHJpbmciLCJyZ2Jfb2ZfbmFtZSIsInJnYiIsImhzbCIsInN0cmluZ19vZl90IiwiYiQwIiwiZyQwIiwiciQwIiwiYiQxIiwiZyQxIiwiciQxIiwiYiQyIiwiZyQyIiwiciQyIiwiYSQxIiwiaCQwIiwiaGV4X29mX3JnYiIsImJsdWUiLCJncmVlbiIsInJlZCIsImluX3JhbmdlIiwianNfdF9vZl9qc19zdHJpbmciLCJyZ2JfcmUiLCJyZ2JfcGN0X3JlIiwicmdiYV9yZSIsInJnYmFfcGN0X3JlIiwiaHNsX3JlIiwiaHNsYV9yZSIsImpzIiwiY24iLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJzdG9wX2xpc3RlbiIsInhtbG5zIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsIm1lbSIsInMkMCIsInJlbSIsImhhc2hfcmVjIiwiaiIsImhhc2giLCJwcmludF9vbmUiLCJjaCIsIml0ZXIiLCJ0IiwiZiIsInQkMCIsInhzIiwib25lX2NoYXIiLCJ2IiwidSIsImZvbGRfcmlnaHQiLCJpbml0IiwiY3NpbmdsZSIsImlzX2VtcHR5IiwicHJlcGVuZCIsIngkMCIsImQiLCJkJDAiLCJwaWNrIiwiZ2VuIiwiZXBzX2V4cHIiLCJoYXNoX2NvbWJpbmUiLCJoIiwiYWNjdSIsImVtcHR5IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwiZHVtbXkiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiYnJlYWskMCIsImZpbmRfc3RhdGUiLCJuY29sIiwiYnJlYWtfc3RhdGUiLCJpbmZvIiwicG9zIiwidmFsaWRhdGUiLCJnZXRfY29sb3IiLCJzbGVuIiwic2Nhbl9zdHIiLCJpbml0aWFsX3N0YXRlIiwiZ3JvdXBzIiwicG9zJDMiLCJsYXN0IiwiaW5mbyQwIiwic3QkNSIsInBvcyQ0Iiwic3QkMyIsInJlYWxfYyIsInN0JDQiLCJwb3MkMCIsInBvcyQxIiwic3QkMSIsInN0JDIiLCJwb3MkMiIsImZpbmFsX2JvdW5kYXJ5X2NoZWNrIiwiZmluYWxfY2F0IiwicmVzJDAiLCJtYXRjaF9zdHIiLCJwYXJ0aWFsIiwiaW5pdGlhbF9jYXQiLCJzdGF0dXMkMCIsInBtYXJrcyIsIm5vX21hdGNoX3N0YXJ0c19iZWZvcmUiLCJjc2VxIiwiY2FkZCIsInZpZXciLCJ2YXIkMCIsInJlbCIsInNxIiwicmUkMCIsInJlJDEiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJpc19jaGFyc2V0IiwiY3VwcGVyIiwiY2xvd2VyIiwiY2FscGhhIiwiY2RpZ2l0IiwiY2FsbnVtIiwiY3dvcmQiLCJ4MSIsIngyIiwieDEkMCIsIngyJDAiLCJlcV9saXN0IiwiajIiLCJpMiIsIngyJDEiLCJqMSIsImkxIiwieDEkMSIsIngyJDIiLCJzZW0yIiwieDEkMiIsInNlbTEiLCJ4MiQzIiwiazIiLCJ4MSQzIiwiazEiLCJ4MiQ0IiwieDEkNCIsIngyJDUiLCJ4MSQ1IiwieDIkNiIsIngxJDYiLCJ4MiQ3IiwieDEkNyIsImwyJDIiLCJsMSQyIiwieDIkOCIsIngyJDkiLCJ4MSQ4IiwieDEkOSIsIm0yIiwic2VxdWVuY2UiLCJtZXJnZV9zZXF1ZW5jZXMiLCJlbmZvcmNlX2tpbmQiLCJjciIsInRyYW5zbGF0ZSIsImlnbl9jYXNlIiwibmFtZXMiLCJjYWNoZSIsImlnbl9ncm91cCQwIiwiZ3JlZWR5JDAiLCJ0cmFuc19zZXEiLCJtZXJnZWRfc2VxdWVuY2VzIiwia2luZCQxIiwiY3IkMCIsImokMCIsImtpbmQkMiIsImtpbmQkMyIsImNyJDEiLCJncmVlZHkkMSIsInAiLCJuYW1lIiwia2luZCQ0IiwiY3IkMiIsInIkNSIsImtpbmQkNSIsImNyJDMiLCJyJDYiLCJpJDEiLCJraW5kJDYiLCJjciQ0IiwiaWduX2dyb3VwIiwiZ3JlZWR5IiwiYXNfc2V0IiwiaGFuZGxlX2Nhc2UiLCJpZ25fY2FzZSQwIiwiciQ3IiwiciQ4IiwiciQ5IiwiciQxMCIsInIkMTEiLCJyJDEyIiwibCQ1IiwiciQxMyIsInIkMTQiLCJyJDE1IiwiYW5jaG9yZWQiLCJlcHNpbG9uIiwicmVwbiIsInJlcDEiLCJvcHQiLCJib3ciLCJlb3ciLCJ3b3JkIiwiYm9zIiwiZW9zIiwid2hvbGVfc3RyaW5nIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld2xpbmUiLCJmbWFwIiwiZiIsIm5pbCIsInNpbmdsZXRvbiIsIngiLCJjb25zIiwieHMiLCJhcHBlbmQiLCJ5IiwibWFwIiwib2ZfbGlzdCIsImwiLCJhIiwiYiIsIm1rIiwiY2hpbGRyZW4iLCJzZXEiLCJjaGlsZHJlbiQwIiwic2VxJDAiLCJyZXN0IiwicSIsImF0dHJzIiwibmFtZSIsInYiLCJyZXN0JDAiLCJzdWJfY2hpbGRyZW4iLCJjaGlsZHJlbiQxIiwic2VxJDEiLCJzIiwiY2hpbGRyZW4kMiIsInNlcSQyIiwicyQwIiwiY2hpbGRyZW4kMyIsIm9mX3NlcSIsImFkZF91bnNhZmVfY2hhciIsImMiLCJlbmNvZGVfdW5zYWZlX2NoYXIiLCJlbmNvZGVfdW5zYWZlX2NoYXJfYW5kX2F0IiwiY29tcG9zZV9kZWNsIiwib3B0Iiwic3RoIiwidmVyc2lvbiIsInN0aCQwIiwiZW5jb2RpbmciLCJjb21wb3NlX2RvY3R5cGUiLCJkdCIsImFyZ3MiLCJwcF9hcmdzIiwiZm10IiwicmVfZW5kX2NvbW1lbnQiLCJwcF9udW1iZXIiLCJ2aW50IiwiczEiLCJzMiIsIm4iLCJpIiwiaSQwIiwibiQwIiwic3RyaW5nX29mX251bWJlciIsIm5vcm1hbGl6ZSIsInNyYyIsIndhcm4iLCJidWZmZXIiLCJkIiwiY29kZSIsIm5vcm1hbGl6ZV9odG1sIiwidSIsInUkMCIsInBwX25vb3AiLCJvcGVuX2JveCIsImluZGVudCIsImNsb3NlX2JveCIsInNwIiwiY3V0Iiwic2V0IiwiaXNfZW1wdHl0YWciLCJwcF9lbmNvZGUiLCJlbmNvZGUiLCJwcF9zZXAiLCJwcF9hdHRyaWJfdmFsdWUiLCJzbGlzdCIsInNlcCIsInBwX2F0dHJpYiIsInBwX2F0dHJpYnMiLCJwcF90YWdfYW5kX2F0dHJpYnMiLCJ0YWciLCJwcF9jbG9zZWR0YWciLCJwcF90YWciLCJwcF9lbHRzIiwicHBfZWx0IiwiZWx0IiwidGV4dGUiLCJnIiwidGV4dGUkMCIsInRleHRlJDEiLCJlIiwieGhfYXR0cnMiLCJ4aF90YWdsaXN0IiwieGhfYXR0cnMkMCIsIm5hbWUkMCIsInBwIiwic3ltYm9sIiwic2VwYXJhdG9yX3RvX3N0cmluZyIsImF0dHJpYl92YWx1ZV90b19zdHJpbmciLCJhdHRyaWJfdG9fc3RyaW5nIiwieGhfcHJpbnRfYXR0cnMiLCJxdWV1ZSIsImF0dHIiLCJ4aF9wcmludF9jbG9zZWR0YWciLCJ4aF9wcmludF90YWciLCJ0YWdsaXN0IiwieGhfcHJpbnRfdGFnbGlzdCIsInByaW50X25vZGVzIiwidGFnbGlzdCQwIiwidGFnbGlzdCQxIiwicHJpbnRfbGlzdCIsImZvcmV0IiwicHJpbnQiLCJkb2MiLCJhZHZlcnQiLCJkb2MkMCIsImEkMCIsImRvYyQxIiwiZW1wdHkiLCJjb25jYXQiLCJmMSIsImYyIiwicHV0IiwibWFrZSIsIm91dHB1dCIsImFtYXAxIiwiYXR0cmlicyIsImVsdHMiLCJhdHRyaWJzJDAiLCJhbWFwIiwiYWRkX2Zsb2F0X2F0dHJpYiIsInZhbHVlIiwiaGVhZCIsInRhaWwiLCJ0YWlsJDAiLCJtYXBfZmxvYXRfYXR0cmliIiwiaXNfYXR0cmliIiwiYXV4IiwiYWRkX2ludF9hdHRyaWIiLCJybV9hdHRyaWIiLCJtYXBfaW50X2F0dHJpYiIsImFkZF9zdHJpbmdfYXR0cmliIiwibWFwX3N0cmluZ19hdHRyaWIiLCJhZGRfc3BhY2Vfc2VwX2F0dHJpYiIsInZhbHVlcyIsImFkZF9jb21tYV9zZXBfYXR0cmliIiwicm1fYXR0cmliX2Zyb21fbGlzdCIsImlzX3ZhbHVlIiwidmFsdWVzJDAiLCJtYXBfc3RyaW5nX2F0dHJpYl9pbl9saXN0IiwiZm9sZCIsIm9mX2VtcHR5Iiwib2ZfY29tbWVudCIsIm9mX3R4dCIsIm9mX2VuY29kZWRwY2RhdGEiLCJvZl9lbnRpdHkiLCJvZl9sZWFmIiwib2Zfbm9kZSIsInMkMSIsInMkMiIsImFsbF9lbnRpdGllcyIsImVuYW1lIiwiZmxhdG1hcCIsInRyYW5zbGF0ZSIsInJvb3RfbGVhZiIsInJvb3Rfbm9kZSIsInN1Yl9sZWFmIiwic3ViX25vZGUiLCJ1cGRhdGVfc3RhdGUiLCJzdGF0ZSIsImNvbnRlbnRfdHlwZSIsInN0YW5kYXJkIiwibmFtZXNwYWNlIiwiY3N0JDEiLCJzdHJpbmdfb2ZfaXJpIiwidG9fc3RyaW5nIiwidW5pdCIsInVuaXQkMCIsImFuZ2xlX25hbWVzIiwic3RyaW5nX29mX2FuZ2xlIiwibGVuZ3RoX25hbWVzIiwic3RyaW5nX29mX2xlbmd0aCIsImxpc3QiLCJzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MiLCJzdHJpbmdfb2ZfcGFpbnQiLCJpcmkiLCJzdHJpbmdfb2ZfZmlsbF9ydWxlIiwiZG9jdHlwZSIsInN0cmluZ19vZl91cmkiLCJ1cmlfb2Zfc3RyaW5nIiwidG90IiwidG90bCIsInRvZWx0IiwidG9lbHRsIiwidG9fYXR0cmliIiwibnVsbGFyeSIsInVuYXJ5Iiwic3RhciIsInRvX3htbGF0dHJpYnMiLCJmbG9hdF9hdHRyaWIiLCJzdHJpbmdfYXR0cmliIiwic3RyaW5nX29mX2Nvb3JkIiwic3RyaW5nX29mX2xlbmd0aHMiLCJ1c2VyX2F0dHJpYiIsImNvbG9yX2F0dHJpYiIsIm1ldGFkYXRhIiwiZm9yZWlnbk9iamVjdCIsInR4dCIsImFfdmVyc2lvbiIsImFfYmFzZVByb2ZpbGUiLCJhX3giLCJhX3kiLCJhX3dpZHRoIiwiYV9oZWlnaHQiLCJhX3ByZXNlcnZlQXNwZWN0UmF0aW8iLCJhX2NvbnRlbnRTY3JpcHRUeXBlIiwiYV9jb250ZW50U3R5bGVUeXBlIiwiYV96b29tQW5kUGFuIiwiYV9ocmVmIiwiYV94bGlua19ocmVmIiwiYV9yZXF1aXJlZEZlYXR1cmVzIiwiYV9yZXF1aXJlZEV4dGVuc2lvbnMiLCJhX3N5c3RlbUxhbmd1YWdlIiwiYV9leHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZCIsImFfaWQiLCJhX3VzZXJfZGF0YSIsImFfeG1sX2Jhc2UiLCJhX3htbF9sYW5nIiwiYV94bWxfc3BhY2UiLCJhX3R5cGUiLCJhX21lZGlhIiwiYV94bGlua190aXRsZSIsImFfY2xhc3MiLCJhX3N0eWxlIiwiYV90cmFuc2Zvcm0iLCJhX3ZpZXdCb3giLCJhX2QiLCJhX3BhdGhMZW5ndGgiLCJhX3J4IiwiYV9yeSIsImFfY3giLCJhX2N5IiwiYV9yIiwiYV94MSIsImFfeTEiLCJhX3gyIiwiYV95MiIsImFfcG9pbnRzIiwiYV94X2xpc3QiLCJhX3lfbGlzdCIsImFfZHgiLCJhX2R5IiwiYV9keF9saXN0IiwiYV9keV9saXN0IiwiYV9sZW5ndGhBZGp1c3QiLCJhX3RleHRMZW5ndGgiLCJhX3RleHRfYW5jaG9yIiwiYV90ZXh0X2RlY29yYXRpb24iLCJhX3RleHRfcmVuZGVyaW5nIiwiYV9yb3RhdGUiLCJhX3N0YXJ0T2Zmc2V0IiwiYV9tZXRob2QiLCJhX3NwYWNpbmciLCJhX2dseXBoUmVmIiwiYV9mb3JtYXQiLCJhX21hcmtlclVuaXRzIiwiYV9yZWZYIiwiYV9yZWZZIiwiYV9tYXJrZXJXaWR0aCIsImFfbWFya2VySGVpZ2h0IiwiYV9vcmllbnQiLCJhX2xvY2FsIiwiYV9yZW5kZXJpbmdfaW50ZW50IiwiYV9ncmFkaWVudFVuaXRzIiwiYV9ncmFkaWVudFRyYW5zZm9ybSIsImFfc3ByZWFkTWV0aG9kIiwiYV9meCIsImFfZnkiLCJhX29mZnNldCIsImFfcGF0dGVyblVuaXRzIiwiYV9wYXR0ZXJuQ29udGVudFVuaXRzIiwiYV9wYXR0ZXJuVHJhbnNmb3JtIiwiYV9jbGlwUGF0aFVuaXRzIiwiYV9tYXNrVW5pdHMiLCJhX21hc2tDb250ZW50VW5pdHMiLCJhX3ByaW1pdGl2ZVVuaXRzIiwiYV9maWx0ZXJSZXMiLCJhX3Jlc3VsdCIsImFfaW4iLCJhX2luMiIsImFfYXppbXV0aCIsImFfZWxldmF0aW9uIiwiYV9wb2ludHNBdFgiLCJhX3BvaW50c0F0WSIsImFfcG9pbnRzQXRaIiwiYV9zcGVjdWxhckV4cG9uZW50IiwiYV9zcGVjdWxhckNvbnN0YW50IiwiYV9saW1pdGluZ0NvbmVBbmdsZSIsImFfbW9kZSIsImFfZmVDb2xvck1hdHJpeF90eXBlIiwiYV92YWx1ZXMiLCJhX3RyYW5zZmVyX3R5cGUiLCJhX3RhYmxlVmFsdWVzIiwiYV9pbnRlcmNlcHQiLCJhX2FtcGxpdHVkZSIsImFfZXhwb25lbnQiLCJhX3RyYW5zZmVyX29mZnNldCIsImFfZmVDb21wb3NpdGVfb3BlcmF0b3IiLCJhX2sxIiwiYV9rMiIsImFfazMiLCJhX2s0IiwiYV9vcmRlciIsImFfa2VybmVsTWF0cml4IiwiYV9kaXZpc29yIiwiYV9iaWFzIiwiYV9rZXJuZWxVbml0TGVuZ3RoIiwiYV90YXJnZXRYIiwiYV90YXJnZXRZIiwiYV9lZGdlTW9kZSIsImFfcHJlc2VydmVBbHBoYSIsImFfc3VyZmFjZVNjYWxlIiwiYV9kaWZmdXNlQ29uc3RhbnQiLCJhX3NjYWxlIiwiYV94Q2hhbm5lbFNlbGVjdG9yIiwiYV95Q2hhbm5lbFNlbGVjdG9yIiwiYV9zdGREZXZpYXRpb24iLCJhX2ZlTW9ycGhvbG9neV9vcGVyYXRvciIsImFfcmFkaXVzIiwiYV9iYXNlRnJlbnF1ZW5jeSIsImFfbnVtT2N0YXZlcyIsImFfc2VlZCIsImFfc3RpdGNoVGlsZXMiLCJhX2ZlVHVyYnVsZW5jZV90eXBlIiwiYV94bGlua19zaG93IiwiYV94bGlua19hY3R1YXRlIiwiYV90YXJnZXQiLCJhX3ZpZXdUYXJnZXQiLCJhX2F0dHJpYnV0ZU5hbWUiLCJhX2F0dHJpYnV0ZVR5cGUiLCJhX2JlZ2luIiwiYV9kdXIiLCJhX21pbiIsImFfbWF4IiwiYV9yZXN0YXJ0IiwiYV9yZXBlYXRDb3VudCIsImFfcmVwZWF0RHVyIiwiYV9maWxsIiwiYV9hbmltYXRpb25fZmlsbCIsImFfZmlsbF9ydWxlIiwiYV9jYWxjTW9kZSIsImFfYW5pbWF0aW9uX3ZhbHVlcyIsImFfa2V5VGltZXMiLCJhX2tleVNwbGluZXMiLCJhX2Zyb20iLCJhX3RvIiwiYV9ieSIsImFfYWRkaXRpdmUiLCJhX2FjY3VtdWxhdGUiLCJhX2tleVBvaW50cyIsImFfcGF0aCIsImFfYW5pbWF0ZVRyYW5zZm9ybV90eXBlIiwiYV9ob3Jpel9vcmlnaW5feCIsImFfaG9yaXpfb3JpZ2luX3kiLCJhX2hvcml6X2Fkdl94IiwiYV92ZXJ0X29yaWdpbl94IiwiYV92ZXJ0X29yaWdpbl95IiwiYV92ZXJ0X2Fkdl95IiwiYV91bmljb2RlIiwiYV9nbHlwaF9uYW1lIiwiYV9vcmllbnRhdGlvbiIsImFfYXJhYmljX2Zvcm0iLCJhX2xhbmciLCJhX3UxIiwiYV91MiIsImFfZzEiLCJhX2cyIiwiYV9rIiwiYV9mb250X2ZhbWlseSIsImFfZm9udF9zdHlsZSIsImFfZm9udF92YXJpYW50IiwiYV9mb250X3dlaWdodCIsImFfZm9udF9zdHJldGNoIiwiYV9mb250X3NpemUiLCJhX3VuaWNvZGVfcmFuZ2UiLCJhX3VuaXRzX3Blcl9lbSIsImFfc3RlbXYiLCJhX3N0ZW1oIiwiYV9zbG9wZSIsImFfY2FwX2hlaWdodCIsImFfeF9oZWlnaHQiLCJhX2FjY2VudF9oZWlnaHQiLCJhX2FzY2VudCIsImFfd2lkdGhzIiwiYV9iYm94IiwiYV9pZGVvZ3JhcGhpYyIsImFfYWxwaGFiZXRpYyIsImFfbWF0aGVtYXRpY2FsIiwiYV9oYW5naW5nIiwiYV92aWRlb2dyYXBoaWMiLCJhX3ZfYWxwaGFiZXRpYyIsImFfdl9tYXRoZW1hdGljYWwiLCJhX3ZfaGFuZ2luZyIsImFfdW5kZXJsaW5lX3Bvc2l0aW9uIiwiYV91bmRlcmxpbmVfdGhpY2tuZXNzIiwiYV9zdHJpa2V0aHJvdWdoX3Bvc2l0aW9uIiwiYV9zdHJpa2V0aHJvdWdoX3RoaWNrbmVzcyIsImFfb3ZlcmxpbmVfcG9zaXRpb24iLCJhX292ZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaW5nIiwiYV9uYW1lIiwiYV9hbGlnbm1lbnRfYmFzZWxpbmUiLCJhX2RvbWluYW50X2Jhc2VsaW5lIiwiYV9vbmFib3J0IiwiYV9vbmFjdGl2YXRlIiwiYV9vbmJlZ2luIiwiYV9vbmVuZCIsImFfb25lcnJvciIsImFfb25mb2N1c2luIiwiYV9vbmZvY3Vzb3V0IiwiYV9vbmxvYWQiLCJhX29ucmVwZWF0IiwiYV9vbnJlc2l6ZSIsImFfb25zY3JvbGwiLCJhX29udW5sb2FkIiwiYV9vbnpvb20iLCJhX29uY2xpY2siLCJhX29ubW91c2Vkb3duIiwiYV9vbm1vdXNldXAiLCJhX29ubW91c2VvdmVyIiwiYV9vbm1vdXNlb3V0IiwiYV9vbm1vdXNlbW92ZSIsImFfb250b3VjaHN0YXJ0IiwiYV9vbnRvdWNoZW5kIiwiYV9vbnRvdWNobW92ZSIsImFfb250b3VjaGNhbmNlbCIsImFfc3RvcF9jb2xvciIsImFfc3RvcF9vcGFjaXR5IiwiYV9zdHJva2UiLCJhX3N0cm9rZV93aWR0aCIsImFfc3Ryb2tlX2xpbmVjYXAiLCJhX3N0cm9rZV9saW5lam9pbiIsImFfc3Ryb2tlX21pdGVybGltaXQiLCJhX3N0cm9rZV9kYXNoYXJyYXkiLCJhX3N0cm9rZV9kYXNob2Zmc2V0IiwiYV9zdHJva2Vfb3BhY2l0eSIsInN2ZyIsImRlZnMiLCJkZXNjIiwidGl0bGUiLCJ1c2UiLCJpbWFnZSIsInN3aXRjaCQwIiwic3R5bGUiLCJwYXRoIiwicmVjdCIsImNpcmNsZSIsImVsbGlwc2UiLCJsaW5lIiwicG9seWxpbmUiLCJwb2x5Z29uIiwidGV4dCIsInRzcGFuIiwidHJlZiIsInRleHRQYXRoIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImdseXBoUmVmIiwibWFya2VyIiwiY29sb3JfcHJvZmlsZSIsImxpbmVhckdyYWRpZW50IiwicmFkaWFsR3JhZGllbnQiLCJzdG9wIiwicGF0dGVybiIsImNsaXBQYXRoIiwiZmlsdGVyIiwiZmVEaXN0YW50TGlnaHQiLCJmZVBvaW50TGlnaHQiLCJmZVNwb3RMaWdodCIsImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlRnVuY0EiLCJmZUZ1bmNHIiwiZmVGdW5jQiIsImZlRnVuY1IiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVGbG9vZCIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSIsImN1cnNvciIsInZpZXciLCJzY3JpcHQiLCJhbmltYXRlIiwiYW5pbWF0ZU1vdGlvbiIsIm1wYXRoIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImZvbnQiLCJnbHlwaCIsIm1pc3NpbmdfZ2x5cGgiLCJoa2VybiIsInZrZXJuIiwiZm9udF9mYWNlIiwiZm9udF9mYWNlX3NyYyIsImZvbnRfZmFjZV91cmkiLCJmb250X2ZhY2VfZm9ybWF0IiwiZm9udF9mYWNlX25hbWUiLCJkb2NfdG9lbHQiLCJkYXRhIiwibGVhZiIsIm5vZGUiLCJjb2VyY2VfZWx0IiwiZmxvYXRfYXR0cmliJDAiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiQwIiwidXJpX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJjb21tYV9zZXBfYXR0cmliIiwic3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSIsInN0cmluZ19vZl9iaWdfdmFyaWFudCIsInN0cmluZ19vZl9ib29sIiwic3RyaW5nX29mX2Nvb3JkcyIsInN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSIsInN0cmluZ19vZl9pbl92YWx1ZSIsInN0cmluZ19vZl9pbnQiLCJzdHJpbmdfb2ZfcGVyY2VudGFnZSIsInN0cmluZ19vZl9mb3VyZmxvYXRzIiwic3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iIiwic3RyaW5nX29mX251bWJlcnMiLCJzdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24iLCJzdHJpbmdfb2Zfb2Zmc2V0IiwieCQwIiwic3RyaW5nX29mX29yaWVudCIsInN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtIiwieCQyIiwiYW5nbGUiLCJhbmdsZSQwIiwiYW5nbGUkMSIsIngkMSIsInN0cmluZ19vZl90cmFuc2Zvcm1zIiwiYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyIsImVtcHR5dGFncyIsImJvb2xfYXR0cmliIiwiY29uc3RhbnRfYXR0cmliIiwibGlua3R5cGVzX2F0dHJpYiIsIm1lZGlhZGVzY19hdHRyaWIiLCJzcmNzZXRfYXR0cmliIiwiYV90aXRsZSIsImFfcHJvcGVydHkiLCJhX29uYWZ0ZXJwcmludCIsImFfb25iZWZvcmVwcmludCIsImFfb25iZWZvcmV1bmxvYWQiLCJhX29uYmx1ciIsImFfb25jYW5wbGF5IiwiYV9vbmNhbnBsYXl0aHJvdWdoIiwiYV9vbmNoYW5nZSIsImFfb25jbG9zZSIsImFfb25kdXJhdGlvbmNoYW5nZSIsImFfb25lbXB0aWVkIiwiYV9vbmVuZGVkIiwiYV9vbmZvY3VzIiwiYV9vbmZvcm1jaGFuZ2UiLCJhX29uZm9ybWlucHV0IiwiYV9vbmhhc2hjaGFuZ2UiLCJhX29uaW5wdXQiLCJhX29uaW52YWxpZCIsImFfb25vZmZsaW5lIiwiYV9vbm9ubGluZSIsImFfb25wYXVzZSIsImFfb25wbGF5IiwiYV9vbnBsYXlpbmciLCJhX29ucGFnZWhpZGUiLCJhX29ucGFnZXNob3ciLCJhX29ucG9wc3RhdGUiLCJhX29ucHJvZ3Jlc3MiLCJhX29ucmF0ZWNoYW5nZSIsImFfb25yZWFkeXN0YXRlY2hhbmdlIiwiYV9vbnJlZG8iLCJhX29uc2Vla2VkIiwiYV9vbnNlZWtpbmciLCJhX29uc2VsZWN0IiwiYV9vbnNob3ciLCJhX29uc3RhbGxlZCIsImFfb25zdG9yYWdlIiwiYV9vbnN1Ym1pdCIsImFfb25zdXNwZW5kIiwiYV9vbnRpbWV1cGRhdGUiLCJhX29udW5kbyIsImFfb252b2x1bWVjaGFuZ2UiLCJhX29ud2FpdGluZyIsImFfb25sb2FkZWRkYXRhIiwiYV9vbmxvYWRlZG1ldGFkYXRhIiwiYV9vbmxvYWRzdGFydCIsImFfb25tZXNzYWdlIiwiYV9vbm1vdXNld2hlZWwiLCJhX29uY29udGV4dG1lbnUiLCJhX29uZGJsY2xpY2siLCJhX29uZHJhZyIsImFfb25kcmFnZW5kIiwiYV9vbmRyYWdlbnRlciIsImFfb25kcmFnbGVhdmUiLCJhX29uZHJhZ292ZXIiLCJhX29uZHJhZ3N0YXJ0IiwiYV9vbmRyb3AiLCJhX29ua2V5cHJlc3MiLCJhX29ua2V5ZG93biIsImFfb25rZXl1cCIsImFfeG1sbnMiLCJhX21hbmlmZXN0IiwiYV9jaXRlIiwiYV9hY2Nlc3NrZXkiLCJhX2NoYXJzZXQiLCJhX2FjY2VwdF9jaGFyc2V0IiwiYV9hY2NlcHQiLCJhX2hyZWZsYW5nIiwiYV9kb3dubG9hZCIsImZpbGUiLCJhX3JlbCIsImFfdGFiaW5kZXgiLCJhX21pbWVfdHlwZSIsImFfYWx0IiwicCIsImFfc3JjIiwiYV9sYWJlbF9mb3IiLCJhX291dHB1dF9mb3IiLCJhX3NlbGVjdGVkIiwiYV90ZXh0X3ZhbHVlIiwiYV9pbnRfdmFsdWUiLCJhX3ZhbHVlIiwiYV9mbG9hdF92YWx1ZSIsImFfYWN0aW9uIiwiYV9mb3JtbWV0aG9kIiwiYV9lbmN0eXBlIiwiYV9jaGVja2VkIiwiYV9kaXNhYmxlZCIsImFfcmVhZG9ubHkiLCJhX21heGxlbmd0aCIsImFfbWlubGVuZ3RoIiwiYV9hbGxvd2Z1bGxzY3JlZW4iLCJhX2FsbG93cGF5bWVudHJlcXVlc3QiLCJhX3JlZmVycmVycG9saWN5IiwiYV9hdXRvY29tcGxldGUiLCJhX2FzeW5jIiwiYV9hdXRvZm9jdXMiLCJhX2F1dG9wbGF5IiwiYV9tdXRlZCIsImFfY3Jvc3NvcmlnaW4iLCJhX2ludGVncml0eSIsImFfbWVkaWFncm91cCIsImFfY2hhbGxlbmdlIiwiYV9jb250ZW50ZWRpdGFibGUiLCJjZSIsImFfY29udGV4dG1lbnUiLCJhX2NvbnRyb2xzIiwiYV9kaXIiLCJhX2RyYWdnYWJsZSIsImFfZm9ybSIsImFfZm9ybWFjdGlvbiIsImFfZm9ybWVuY3R5cGUiLCJhX2Zvcm1ub3ZhbGlkYXRlIiwiYV9mb3JtdGFyZ2V0IiwiYV9oaWRkZW4iLCJhX2hpZ2giLCJhX2ljb24iLCJhX2lzbWFwIiwiYV9rZXl0eXBlIiwiYV9saXN0IiwiYV9sb29wIiwiYV9sb3ciLCJhX2lucHV0X21heCIsImFfaW5wdXRfbWluIiwiYV9pbnB1dG1vZGUiLCJhX25vdmFsaWRhdGUiLCJhX29wZW4iLCJhX29wdGltdW0iLCJhX3BhdHRlcm4iLCJhX3BsYWNlaG9sZGVyIiwiYV9wb3N0ZXIiLCJhX3ByZWxvYWQiLCJhX3B1YmRhdGUiLCJhX3JhZGlvZ3JvdXAiLCJhX3JlcXVpcmVkIiwiYV9yZXZlcnNlZCIsImFfc2FuZGJveCIsImFfc3BlbGxjaGVjayIsInNjIiwiYV9zY29wZWQiLCJhX3NlYW1sZXNzIiwiYV9zaXplcyIsInNpemVzIiwiYV9zcGFuIiwiYV9zcmNsYW5nIiwiYV9zcmNzZXQiLCJhX2ltZ19zaXplcyIsImFfc3RhcnQiLCJhX3N0ZXAiLCJzdGVwIiwiYV90cmFuc2xhdGUiLCJhX3dyYXAiLCJhX3NpemUiLCJhX2lucHV0X3R5cGUiLCJpdCIsImFfbWVudV90eXBlIiwiYV9jb21tYW5kX3R5cGUiLCJhX2J1dHRvbl90eXBlIiwiYnQiLCJhX3NjcmlwdF90eXBlIiwiYV9tdWx0aXBsZSIsImFfY29scyIsImFfcm93cyIsImFfc3VtbWFyeSIsImFfYWxpZ24iLCJhX2F4aXMiLCJhX2NvbHNwYW4iLCJhX2hlYWRlcnMiLCJhX3Jvd3NwYW4iLCJhX3Njb3BlIiwiYV9ib3JkZXIiLCJhX3J1bGVzIiwiYV9jaGFyIiwiYV9kYXRhIiwiYV9jb2RldHlwZSIsImFfZnJhbWVib3JkZXIiLCJhX21hcmdpbmhlaWdodCIsImFfbWFyZ2lud2lkdGgiLCJhX3Njcm9sbGluZyIsImFfY29udGVudCIsImFfaHR0cF9lcXVpdiIsImFfcm9sZSIsImFfYXJpYSIsInRlcm1pbmFsIiwicGx1cyIsIm9wdGlvbl9jb25zIiwiYm9keSIsImh0bWwiLCJjb250ZW50IiwiZm9vdGVyIiwiaGVhZGVyIiwic2VjdGlvbiIsIm5hdiIsImVudGl0eSIsInNwYWNlIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhncm91cCIsImFkZHJlc3MiLCJibG9ja3F1b3RlIiwiZGlhbG9nIiwiZGl2IiwicHJlIiwiYWJiciIsImJyIiwiY2l0ZSIsImRmbiIsImVtIiwia2JkIiwic2FtcCIsInNwYW4iLCJzdHJvbmciLCJ0aW1lIiwidmFyJDAiLCJkbCIsIm9sIiwidWwiLCJkZCIsImxpIiwiaHIiLCJzbWFsbCIsInN1YiIsInN1cCIsIm1hcmsiLCJycCIsInJ0IiwicnVieSIsIndiciIsImJkbyIsImRpciIsImFfZGF0ZXRpbWUiLCJhX3NoYXBlIiwiYV9jb29yZHMiLCJjb29yZHMiLCJhX3VzZW1hcCIsImFfZGVmZXIiLCJhX2xhYmVsIiwiYXJlYSIsImFsdCIsImRlbCIsImlucyIsIm5vc2NyaXB0IiwidGVtcGxhdGUiLCJhcnRpY2xlIiwiYXNpZGUiLCJtYWluIiwidmlkZW9fYXVkaW8iLCJzcmNzIiwidXJpIiwic3JjcyQwIiwiYXVkaW8iLCJ2aWRlbyIsImNhbnZhcyIsImNvbW1hbmQiLCJsYWJlbCIsIm1lbnUiLCJlbWJlZCIsInNvdXJjZSIsIm1ldGVyIiwib3V0cHV0X2VsdCIsImZvcm0iLCJpbnB1dCIsImtleWdlbiIsIm9wdGlvbiIsInNlbGVjdCIsInRleHRhcmVhIiwiYnV0dG9uIiwiZGF0YWxpc3QiLCJwcm9ncmVzcyIsImxlZ2VuZCIsImRldGFpbHMiLCJzdW1tYXJ5IiwiZmllbGRzZXQiLCJvcHRncm91cCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJjJDAiLCJjYXB0aW9uIiwidGFibGV4IiwiY29sdW1ucyIsInRoZWFkIiwidGZvb3QiLCJjb2x1bW5zJDAiLCJjb250ZW50JDAiLCJjb250ZW50JDEiLCJ0ZCIsInRoIiwidHIiLCJjb2xncm91cCIsImNvbCIsInRib2R5IiwiaWZyYW1lIiwib2JqZWN0IiwicGFyYW1zIiwiZWx0cyQwIiwiaW1nIiwicGljdHVyZSIsInRhaWxfbm9kZSIsIm1ldGEiLCJsaW5rIiwicmVsIiwiaHJlZiIsImJhc2UiLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwiZXZlbnQiLCJtc2ciLCJwIiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImNvbnMiLCJzbm9jIiwiaW5zZXJ0IiwidXBkYXRlIiwibW92ZSIsImluZGV4IiwiaGQiLCJ0bCIsInVwZGF0ZV9lcSIsImhhbmRsZSIsImRhdGEiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9lcSIsInNpbmdsZXRvbiIsInNpbmdsZXRvbl9zIiwiZmlyc3QiLCJlIiwicmVzdWx0IiwiY29uY2F0IiwidjEiLCJ2MiIsInNpemUxIiwic2l6ZTIiLCJzaXplX3dpdGhfcGF0Y2giLCJzaXpleCIsInNpemVfd2l0aF9zZXQiLCJ1cGRhdGVfcGF0Y2gxIiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMiIsInR1cGxlX2V2IiwicDEiLCJwMiIsIm1lcmdlZF9ldiIsInAyJDIiLCJwMiQzIiwicDEkMCIsInAyJDAiLCJzMiIsInMxIiwicDEkMSIsInMyJDAiLCJwMiQxIiwiaW52ZXJzZSIsInJldiIsInQiLCJmaWx0ZXIiLCJwcmVkIiwic2l6ZSIsImZpbHRlcl9saXN0IiwicmVzIiwidGhlaXJfaSIsIm15X2kiLCJteV9pJDAiLCJ0aGVpcl9pJDAiLCJyZXMkMCIsInRoZWlyX2kkMSIsIm5vcm1hbGlzZSIsInVwZGF0ZV9pbmRleF9pbnNlcnQiLCJpbnNlcnRfcG9zX2Z1bGxfbGlzdCIsInZpc2libGUiLCJpbnNlcnRfcG9zX2Z1bGxfbGlzdCQwIiwidXBkYXRhYmxlcyIsImRpc3BsYWNlZCIsImxlZnRfYWxvbmUiLCJkaXNwbGFjZWRfaW5fZmlsdGVyZWQiLCJ1cGRhdGFibGVzJDAiLCJ1cGRhdGVfaiIsImpfZnVsbF9saXN0Iiwial9maWx0ZXJlZF9saXN0IiwibmV3X2pfZmlsdGVyZWQiLCJpbnNlcnRfcG9zX2ZpbHRlcmVkIiwidXBkYXRlX2luZGV4X21vdmUiLCJmcm9tX2Z1bGxfbGlzdCIsInRvX2Z1bGxfbGlzdCIsInRvX2ZpbHRlcmVkIiwid2FzX3Zpc2libGUiLCJmb3J3YXJkIiwiaV9mdWxsIiwiZGVsdGEiLCJpX2ZpbHRlcmVkIiwibmV3X3ZhbCIsImlfZnVsbCQwIiwiZGVsdGEkMCIsImlfZmlsdGVyZWQkMCIsIm5ld192YWwkMCIsInRvX2ZpbHRlcmVkJDAiLCJjb252ZXJ0X3AiLCJyZW1vdmVfcG9zX2Z1bGxfbGlzdCIsInJldCIsIm5ld19qIiwibGFzdF9pIiwidXBkYXRlX3Bvc19mdWxsX2xpc3QiLCJvbGRfaiIsInVwZGF0ZV9qJDAiLCJ1cGRhdGFibGVzJDEiLCJub25lIiwidXBkYXRlX2okMSIsInByZXZpb3VzX3Bvc19maWx0ZXJlZCIsIm5ld19wb3NfZmlsdGVyZWRfbGlzdCIsIm9mZnNldF9mdWxsIiwib3JpZ2luX2Z1bGwiLCJvcmlnaW5fZnVsbCQwIiwiZGVzdF9mdWxsIiwib3JpZ2luX2ZpbHRlcmVkIiwiZGVzdF9maWx0ZXJlZCIsInNtYWxsX29uZXMiLCJmaWx0ZXJfZSIsImZvcl9hbGwiLCJmbiIsIm1heWJlX3VwZGF0ZSIsImluaXQiLCJ1cGRhdGVfaWR4X2FmdGVyIiwidXBkYXRlcyIsInYkMCIsImsiLCJrJDAiLCJnIiwia2V5IiwidyIsInckMCIsInYkMSIsImckMCIsImVtcHR5JDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaWFsb2ciLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaSQxIiwiaSIsImkkMCIsImluZGV4IiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsInByb21pc2UiLCJjbGVhcmVkJDAiLCJlbGVtZW50cyIsImVsZW1lbnQiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDIiLCJ4MSIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJsb2MiLCJ0YXNrIiwiZXhuIiwiZ3VpZCQwIiwibW9kYWwkMCIsImFjdGlvbiIsImVsZW1lbnRfZGF0YSIsImVsZW1lbnQiLCJsYWJlbCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsInN0IiwiaSQyIiwiaSQwIiwibiQxIiwiaSQxIiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJyZWFkX2p1bmsiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJpbnB1dF9maWxlIiwiZm5hbWUiLCJyZWFkIiwiaWMiLCJ4IiwiZSQwIiwiZSIsIm91dHB1dF9maWxlIiwid3JpdGUiLCJvYyIsImZyb21fY2hhbm5lbCIsImxlbiIsIm9wdCIsInN0aCIsInNocmxlbiIsImliIiwiZnJvbV9maWxlIiwidG9fY2hhbm5lbCIsIm9iIiwidG9fZmlsZSIsImZyb21fbGV4YnVmIiwibHMiLCJsZXhidWYiLCJzdHJlYW0iLCJmcm9tX3N0cmluZyIsImJ1ZiIsImxudW0iLCJzIiwiZnJvbV9jaGFubmVsJDAiLCJmcm9tX2ZpbGUkMCIsInNyYyIsImZuYW1lMCIsInNlcV91bmZvbGQiLCJmIiwidSIsInUkMCIsInNlcV9mcm9tX2xleGJ1ZiIsImZpbiIsInYiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZpbiQwIiwibGlzdF9mcm9tX3N0cmluZyIsInNlcSIsImxpc3RfZnJvbV9jaGFubmVsIiwibGlzdF9mcm9tX2ZpbGUiLCJ0b19zdHJpbmciLCJ0b19jaGFubmVsJDAiLCJ0b19maWxlJDAiLCJzZXFfdG9fc3RyaW5nIiwic3RoJDAiLCJsZiIsInNlcV90b19jaGFubmVsIiwic2VxX3RvX2ZpbGUiLCJsaXN0X3RvX3N0cmluZyIsImwiLCJsaXN0X3RvX2NoYW5uZWwiLCJsaXN0X3RvX2ZpbGUiLCJwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyIiwibG9jIiwibmFtZSIsIm1zZyIsInVua25vd25fZmllbGRfaGFuZGxlciIsInN0cmluZ19vZl9wYXRoIiwibiIsImVycm9yIiwicGF0aCIsInN0cmluZ19vZl9lcnJvciIsInZhbGlkYXRlX2xpc3QiLCJpIiwibCQwIiwic3VicGF0aCIsImVyciIsInZhbGlkYXRlX2FycmF5IiwiYSIsImkkMCIsInZhbGlkYXRlX29wdGlvbiIsImVycm9yX3dpdGhfbGluZSIsInAiLCJzMiIsImxpc3RfaXRlciIsInNlcCIsImwkMSIsInkkMCIsInkiLCJhcnJheV9pdGVyIiwid3JpdGVfY29tbWEiLCJ3cml0ZV9saXN0Iiwid3JpdGVfaXRlbSIsIndyaXRlX2FycmF5Iiwid3JpdGVfYXNzb2NfbGlzdCIsIndyaXRlX2tleSIsImsiLCJ3cml0ZV9hc3NvY19hcnJheSIsIndyaXRlX29wdGlvbiIsIndyaXRlX3N0ZF9vcHRpb24iLCJ3cml0ZV9udWxsYWJsZSIsIndyaXRlX2ludF9hc19zdHJpbmciLCJ3cml0ZV9pbnQ4Iiwid3JpdGVfaW50OF9hc19zdHJpbmciLCJ3cml0ZV9pbnQzMiIsIndyaXRlX2ludDMyX2FzX3N0cmluZyIsIndyaXRlX2ludDY0Iiwid3JpdGVfaW50NjRfYXNfc3RyaW5nIiwibWluX2Zsb2F0IiwibWF4X2Zsb2F0Iiwid3JpdGVfZmxvYXRfYXNfaW50Iiwid3JpdGVfZmxvYXRfYXNfaW50X3N0cmluZyIsInJlYWRfbnVsbCIsImxiIiwicmVhZF9ib29sIiwicmVhZF9pbnQiLCJyZWFkX2ludDgiLCJyZWFkX2ludDMyIiwicmVhZF9pbnQ2NCIsInJlYWRfbnVtYmVyIiwicmVhZF9zdHJpbmciLCJyZWFkX2pzb24iLCJyZWFkX2xpc3QiLCJyZWFkX2l0ZW0iLCJyZWFkX2FycmF5IiwicmVhZF9hc3NvY19saXN0X3JldiIsInJlYWRfa2V5IiwiYWNjIiwicmVhZF9hc3NvY19saXN0IiwicmVhZF9hc3NvY19hcnJheSIsInRsIiwiciIsInJlYWRfdW50aWxfZmllbGRfdmFsdWUiLCJtaXNzaW5nX3R1cGxlX2ZpZWxkcyIsInJlcV9maWVsZHMiLCJtaXNzaW5nIiwibWlzc2luZ19maWVsZCIsImZpZWxkX25hbWUiLCJtaXNzaW5nX2ZpZWxkcyIsImJpdF9maWVsZHMiLCJmaWVsZF9uYW1lcyIsInoiLCJqIiwiaW52YWxpZF92YXJpYW50X3RhZyIsInJlYWRfd2l0aF9hZGFwdGVyIiwibm9ybWFsaXplIiwicmVhZGVyIiwiYXN0IiwiYXN0JDAiLCJsYiQwIiwid3JpdGVfd2l0aF9hZGFwdGVyIiwicmVzdG9yZSIsIndyaXRlciIsIm9iX3RtcCIsInNfdG1wIiwicmVhZF9lcnJvciIsInJlYWRfZXJyb3JfYXQiLCJ0YWdfZXJyb3IiLCJ0YWciLCJ1bnN1cHBvcnRlZF92YXJpYW50IiwiaCIsImhhc19hcmciLCJnZXRfdW5pdF9yZWFkZXIiLCJyZWFkX3VuaXQiLCJnZXRfYm9vbF9yZWFkZXIiLCJnZXRfaW50X3JlYWRlciIsImdldF9jaGFyX3JlYWRlciIsInJlYWRfY2hhciIsImdldF9pbnQzMl9yZWFkZXIiLCJnZXRfaW50NjRfcmVhZGVyIiwiZ2V0X2Zsb2F0MzJfcmVhZGVyIiwiZ2V0X2Zsb2F0NjRfcmVhZGVyIiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwiZ2V0X3N0cmluZ19yZWFkZXIiLCJyZWFkX2FycmF5X3ZhbHVlIiwiZ2V0X3JlYWRlciIsImdldF9hcnJheV9yZWFkZXIiLCJnZXRfbGlzdF9yZWFkZXIiLCJ3cml0ZV91bnRhZ2dlZF9vcHRpb24iLCJ4JDAiLCJhcnJheV9pbml0MiIsImFycmF5X2l0ZXIyIiwid3JpdGVfdW50YWdnZWRfYXJyYXkiLCJjZWxsX3RhZyIsIndyaXRlX3VudGFnZ2VkX2xpc3QiLCJzYWZlX3IiLCJ0eXBlX2ZpZWxkX25hbWUiLCJub3JtYWxpemVfdHlwZV9maWVsZCIsImZpZWxkcyIsInR5cGUiLCJyZXN0b3JlX3R5cGVfZmllbGQiLCJmaWVsZHMkMCIsIm5vcm1hbGl6ZSQwIiwidmFsdWUiLCJyZXN0b3JlJDAiLCJ0YmwiLCJpc19rbm93bl90YWciLCJpc19jYXRjaF9hbGxfdGFnIiwiY2F0Y2hfYWxsX3RhZyIsImZvdW5kIiwiZmllbGQiLCJ2YXJpYW50IiwiZmllbGRzJDEiLCJ0YWdnZWQiLCJ0YWckMCIsInJlYWxfdiIsInJlYWxfdGFnIiwib3B0X3ZhbHVlIiwidGFnJDEiLCJ2JDAiLCJjcmVhdGUiLCJuIiwiYSIsImxlbmd0aCIsImdldCIsImkiLCJzZXQiLCJ2IiwibiQxIiwibiQwIiwiYXJyYXkiLCJpbml0IiwiZiIsImFwcGVuZCIsImIiLCJsYiIsImxhIiwiYyIsIngiLCJjb25jYXQiLCJsIiwibCQwIiwidCIsImVsdCIsInNvbCIsIm0iLCJrIiwibCQxIiwicSIsInQkMCIsInMiLCJvZmZzZXQiLCJrJDAiLCJrJDEiLCJvZmZzZXQkMCIsInN1YiIsInN0YXJ0IiwibGVuIiwic2l6ZSIsImNvcHkiLCJmaWxsIiwiaSQwIiwib2ZfbGlzdCIsImRlZmF1bHQkMCIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJmb2xkX3JpZ2h0aSIsIm1hcCIsImJsaXQiLCJhMSIsIm9mczEiLCJhMiIsIm9mczIiLCJwcmludCIsInRyYWlsaW5nIiwicHJfcyIsInByX2EiLCJtYXhfYXJyYXlfc2l6ZTEiLCJtYXhfYXJyYXlfc2l6ZTIiLCJldWNsaWRlZW4iLCJwIiwicCQwIiwiYXV4IiwibSQwIiwiYSQwIiwiYSQxIiwiaiIsImcyIiwiZzEiLCJ5IiwiZSIsImciLCJjdXJyZW50IiwiaW5pdCQwIiwib3B0IiwicHJfc2VwIiwicHJfZWwiLCJzdGgiLCJjc3QiLCJmbG9hdF9pc196ZXJvIiwicG93IiwiYWNjdSIsImFjY3UkMCIsImFjY3UkMSIsImZhY3QiLCJpJDEiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2MiLCJjb21iaW5lIiwidCQxIiwib2xkJDEiLCJvbGQiLCJvY2MiLCJoIiwib2NjJDAiLCJvbGQkMCIsImdldF9wcm9kdWN0X2ltYWdlX29jY18yIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwiY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwiLCJoJDAiLCJsMSQxIiwibDIkMSIsImgyIiwiaDEiLCJvY2MxIiwibDEkMiIsIm9jYzIiLCJsMiQyIiwib2NjMiQwIiwibDIkMyIsIm9jYzEkMCIsImwxJDMiLCJhY2N1JDIiLCJkaXYyIiwicG93NjQiLCJjYW50b3JfcGFpcmluZyIsInJlYWRfaW5wdXQiLCJ1c2VyX2lucHV0IiwiYWNjIiwiYWNjJDAiLCJub3RfYW5faWQiLCJhcnJheV9mb2xkX2xlZnRfbWFwaSIsIm8iLCJvdXQiLCJ5JDAiLCJhcnJheV9tYXBfb2ZfbGlzdCIsIngkMCIsImFucyIsImFycmF5X3Jldl9vZl9saXN0IiwiYXJyYXlfcmV2X21hcF9vZl9saXN0IiwiYXJyYXlfZm9sZF9sZWZ0aSIsImFycmF5X2ZvbGRfcmlnaHRpIiwieCQxIiwiYXJyYXlfZm9sZF9sZWZ0MmkiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9taW5fZXF1YWxfbm90X251bGwiLCJhZzEiLCJuYjEiLCJhZzIiLCJuYjIiLCJqJDAiLCJvdXQkMSIsImkkMiIsInZhIiwiYWcxJDAiLCJuYjEkMCIsImFnMiQwIiwibmIyJDAiLCJvdXQkMCIsImFycmF5X2NvbXBhcmUiLCJjb21wYXJlIiwiZCIsInJlY3RpIiwibWluX3Bvc19pbnRfbm90X3plcm8iLCJkYXRhYiIsImtleWIiLCJkYXRhYSIsImtleWEiLCJtYXhfcG9zX2ludF9ub3RfemVybyIsImZvbGRfb3Zlcl9wZXJtdXRhdGlvbnMiLCJ0b19kbyIsImRpc2NhcmRlZCIsInBlcm11dGF0aW9uIiwidG9fZG8kMCIsImRpc2NhcmRlZCQwIiwidG9fZG8kMSIsInRvX2RvMSIsImxpc3QiLCJkaXNjYXJkZWQkMSIsImdjZF8yIiwiYiQwIiwiYiQxIiwibGNtXzIiLCJsY20iLCJnZXRfaW50ZXJ2YWxfbGlzdCIsImFkZCIsIm91dHB1dCIsImN1cnJlbnQkMCIsIm91dHB1dCQwIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInN0cmluZ19zcGxpdF9vbl9jaGFyIiwiZGVsaW1pdGVyIiwiaW5kZXgiLCJzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXMiLCJ0YWlsJDIiLCJub2NjJDIiLCJjdXJyZW50JDEiLCJ0YWlsIiwibm9jYyIsInRhaWwkMCIsIm5vY2MkMCIsInRhaWwkMSIsIm5vY2MkMSIsImNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiIsIm5hbWUiLCJleHQiLCJmaW5kX2F2YWlsYWJsZV9uYW1lIiwiYWxyZWFkeV90aGVyZSIsImZhY3VsdGF0aXZlIiwiZXh0JDAiLCJiYXNlIiwiYmFzZSQwIiwiZ2V0X3JlZiIsInJlZiIsInJlbW92ZV9kb3VibGVfZWxlbWVudHMiLCJzb3J0X2J5X3ByaW9yaXR5Iiwia2V5cyIsInNvcnQiLCJrZXkiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwid3JpdGVfdG9fY2hhbm5lbCIsInN0cmluZ19vZl93cml0ZSIsIm9iIiwicmVhZF9vZl9zdHJpbmciLCJsZXhfc3QiLCJsZXhfYnVmIiwicmVhZF9iZXR3ZWVuX3NwYWNlcyIsInJlYWRfbmV4dF9pdGVtIiwic3QiLCJidWlsZF9tc2ciLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcnJvcl9tc2ciLCJvZl9pbnQiLCJ0b19pbnQiLCJvZl9ib29sIiwidG9fYm9vbCIsIm9mX3VuaXQiLCJ0b191bml0Iiwib2Zfb3B0aW9uIiwidG9fanNvbiIsInRvX29wdGlvbiIsIndyaXRlX29wdGlvbiIsInJlYWRfb3B0aW9uIiwidG9fbGlzdCIsIm9mX2pzb24iLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJmX2VsdCIsIm9mX2FycmF5IiwidG9fYXJyYXkiLCJ3cml0ZV9hcnJheSIsIndyaXRlX3NlcXVlbmNlIiwicSQwIiwiZiQwIiwicmVhZF92YXJpYW50IiwicmVhZF9pZCIsInJlYWQiLCJzbWFydF9hc3NvYyIsIm9mX2Fzc29jIiwidG9fYXNzb2MiLCJqc29uIiwid3JpdGVfZmllbGQiLCJuYSIsIm9mX3BhaXIiLCJ0b19qc29uMSIsInRvX2pzb24yIiwibGFiMSIsInN0aCQwIiwibGFiMiIsInRvX3RyaXBsZSIsIm9mX2pzb24xIiwib2ZfanNvbjIiLCJvZl9qc29uMyIsInN0aCQxIiwibGFiMyIsInN0aCQyIiwib2ZfdHJpcGxlIiwidG9fanNvbjMiLCJ0b19wYWlyIiwid3JpdGVfY29tcGFjdF9wYWlyIiwicmVhZF9jb21wYWN0X3BhaXIiLCJjb21wYWN0X3RvX3BhaXIiLCJvZl9tYXAiLCJmb2xkIiwia2V5X3RvX2pzb24iLCJ2YWx1ZV90b19qc29uIiwibGFiX2tleSIsImxhYl92YWx1ZSIsInZhbHVlIiwidG9fbWFwIiwiZW1wdHkiLCJqc29uX3RvX2tleSIsImpzb25fdG9fdmFsdWUiLCJvZl91bml4X2xhYmVsIiwiaW50JDAiLCJ0b191bml4X2xhYmVsIiwib2ZfdW5peF9lcnJvciIsInRvX3VuaXhfZXJyb3IiLCJzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQiLCJzdWNjZXNzIiwic3RvcCIsInN1Y2Nlc3Nfb3Jfc3RvcCIsImhlaWdodCIsIm5vZGUiLCJsZWZ0IiwicmlnaHQiLCJobCIsImhyIiwiaGwkMCIsImlzX2VtcHR5Iiwic2luZ2xldG9uIiwiaXNfc2luZ2xldG9uIiwic2V0MiIsInNldDEiLCJiYWxhbmNlIiwiaGVpZ2h0X2xlZnQiLCJoZWlnaHRfcmlnaHQiLCJsZWZ0cmlnaHQiLCJsZWZ0dmFsdWUiLCJsZWZ0bGVmdCIsImxlZnRyaWdodHJpZ2h0IiwibGVmdHJpZ2h0dmFsdWUiLCJsZWZ0cmlnaHRsZWZ0IiwicmlnaHRyaWdodCIsInJpZ2h0dmFsdWUiLCJyaWdodGxlZnQiLCJyaWdodGxlZnRyaWdodCIsInJpZ2h0bGVmdHZhbHVlIiwicmlnaHRsZWZ0bGVmdCIsImJhbGFuY2Vfd2l0aF9sb2dzIiwid2FybiIsInBhcmFtZXRlcnMiLCJlcnJvciIsImxvYyIsImVycm9yJDAiLCJyIiwibyQwIiwiYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIiwibmV3X3ZhbCIsInZhbHVlX3NldCIsInJpZ2h0JDAiLCJib29sIiwic2V0JDAiLCJlcnJvciQxIiwibGVmdCQwIiwiYm9vbCQwIiwiZXJyb3IkMiIsInNldCQxIiwiZXJyb3IkMyIsImFkZF93aXRoX2xvZ3MiLCJuZXdfdmFsdWUiLCJhZGRfZXZlbl9pZl9pdF9leGlzdHMiLCJqb2luIiwicmlnaHRoZWlnaHQiLCJsZWZ0aGVpZ2h0Iiwic2FmZV9leHRyYWN0X21pbl9lbHQiLCJtaW4iLCJtaW5fZWx0X3dpdGhfbG9ncyIsInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyIsImpvaW5fd2l0aF9sb2dzIiwicmlnaHQyIiwidmFsdWUyIiwibGVmdDIiLCJzZXQyJDAiLCJtaW4yIiwiY29uY2F0X3dpdGhfbG9ncyIsImVsdF9vcHQiLCJzcGxpdF93aXRoX2xvZ3MiLCJzcGxpdF92YWwiLCJzZXRfdmFsIiwibGVmdGxlZnQkMCIsInJpZ2h0cmlnaHQkMCIsInJlbW92ZSIsInJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSIsImVycm9yJDQiLCJlcnJvciQ1IiwiZXJyb3IkNiIsImVycm9yJDciLCJlcnJvciQ4Iiwic2V0JDIiLCJlcnJvciQ5IiwicmVtb3ZlX3dpdGhfbG9ncyIsInNwbGl0Iiwic3BsaXRfdmFsdWUiLCJzZXRfdmFsdWUiLCJ1bmlvbiIsImhlaWdodDIiLCJoZWlnaHQxIiwicmlnaHQxIiwidmFsdWUxIiwibGVmdDEiLCJyaWdodDIkMCIsImxlZnQyJDAiLCJyaWdodDEkMCIsImxlZnQxJDAiLCJkaXNqb2ludF91bmlvbiIsInVuaW9uX2dlbiIsImFkZF9nZW4iLCJ1bmlvbl93aXRoX2xvZ3MiLCJ3IiwicyQwIiwiZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIiwic3V0dXJlX25vdCIsImludGVyIiwidHJpcGxlMiIsInN1dHVyZV9ub3Rfd2l0aF9sb2dzIiwiaW50ZXJfd2l0aF9sb2dzIiwiZGlmZiIsImRpZmZfd2l0aF9sb2dzIiwibWludXMiLCJtaW51c193aXRoX2xvZ3MiLCJtZW0iLCJzZWFyY2hlZF92YWx1ZSIsImZpbHRlciIsImZpbHQiLCJmaWx0ZXJfd2l0aF9sb2dzIiwicGFydGl0aW9uIiwicGFydCIsInBhcnRpdGlvbl93aXRoX2xvZ3MiLCJyaCIsImNvbnNfZW51bSIsImVudW0kMSIsImUyJDIiLCJlMSQyIiwiZTEiLCJlMiIsImUyJDAiLCJyMiIsInYyIiwiZTEkMCIsInIxIiwidjEiLCJlMiQxIiwiZTEkMSIsImVxdWFsIiwic3Vic2V0Iiwic2V0MSQwIiwiZm9sZF9pbnYiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZWxlbWVudHMiLCJlbGVtZW50c19hdXgiLCJhdXhfcHJpbnQiLCJrZXkkMSIsImtleSQwIiwibWluX2VsdCIsIm1heF9lbHQiLCJjaG9vc2UiLCJyYW5kb20iLCJycyIsImFpbV9hY2MiLCJhY2NfbCIsImFjY19yIiwiZW1wdHkkMCIsImhlaWdodCQwIiwic2l6ZSQwIiwibm9kZSQwIiwia2V5MCIsImRhdGEiLCJpc19lbXB0eSQwIiwicm9vdCIsIm1heF9rZXkiLCJiYWxhbmNlJDAiLCJyaWdodDAiLCJkYXRhMCIsImxlZnQwIiwiZGF0YTEiLCJrZXkxIiwicmlnaHQwJDAiLCJkYXRhMCQwIiwia2V5MCQwIiwibGVmdDAkMCIsImRhdGExJDAiLCJrZXkxJDAiLCJiYWxhbmNlX3dpdGhfbG9ncyQwIiwiYWRkJDAiLCJkYXRhX21hcCIsImtleV9tYXAiLCJjbXAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MkMCIsInBhcmFtZXRlciIsIm1hcCQwIiwiYWRkX3dpdGhfbG9ncyQwIiwiZXh0cmFjdF9taW5fYmluZGluZyIsImRhdGEyIiwia2V5MiIsImV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIiwibWVyZ2UiLCJtYXAxIiwibWFwMiIsImRhdGEzIiwia2V5MyIsIm1lcmdlX3dpdGhfbG9ncyIsInJlbW92ZSQwIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlJDAiLCJtYXAkMSIsIm1hcCQyIiwicmVtb3ZlX3dpdGhfbG9ncyQwIiwicG9wIiwiam9pbiQwIiwidmFsdWUkMCIsImpvaW5fd2l0aF9sb2dzJDAiLCJzcGxpdCQwIiwiZGF0YTIkMCIsImxlZnQyJDEiLCJyaWdodDIkMSIsInNwbGl0X3dpdGhfbG9ncyQwIiwiZGlmZiQwIiwib2xlZnQyIiwib2xlZnQxIiwib3JpZ2h0MiIsIm9yaWdodDEiLCJ1bmlvbiQwIiwib3BfZGF0YTIiLCJkMiIsImQyJDAiLCJvcF9kYXRhMSIsImQxIiwiZDEkMCIsInVuaW9uX3dpdGhfbG9ncyQwIiwidXBkYXRlIiwidXBkYXRlX3dpdGhfbG9ncyIsImRpZmZfcHJlZCIsInByZWQiLCJtaW5fZWx0JDAiLCJmaW5kX29wdGlvbiIsImZpbmRfZGVmYXVsdCIsImZpbmRfb3B0aW9uX3dpdGhfbG9ncyIsImZpbmRfZGVmYXVsdF93aXRoX2xvZ3MiLCJtZW0kMCIsImZpbHRlcl9vbmUiLCJpdGVyJDAiLCJmb2xkJDAiLCJ2YWx1ZSQxIiwib3V0cHV0bCIsImludGVycnVwdGVkIiwidmFsX29wdCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJtb25hZGljX2ZvbGQiLCJwYXJhbSIsImVyciIsImVyciQwIiwiZXJyJDEiLCJ2YWx1ZSQyIiwiZXJyJDIiLCJtb25hZGljX2ZvbGQyIiwicmVzIiwicmgkMCIsIm1hcDEkMCIsIm1hcDIkMCIsInJlcyQwIiwicmVzJDEiLCJyaCQxIiwicmVzJDIiLCJyaCQyIiwicmVzJDMiLCJyaCQzIiwicmVzJDQiLCJyaCQ0IiwibW9uYWRpY19mb2xkMl9zcGFyc2UiLCJpZCIsIm1vbmFkaWNfaXRlcjJfc3BhcnNlIiwibW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIiwibWFwaSIsIm1hcF93aXRoX2xvZ3MiLCJlcnJvcnMiLCJlcnJvcnMkMCIsImRhdGEkMCIsImVycm9ycyQxIiwibWFwMl93aXRoX2xvZ3MiLCJtYXAyel93aXRoX2xvZ3MiLCJmb2xkMl93aXRoX2xvZ3MiLCJmb2xkMnpfd2l0aF9sb2dzIiwiZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyIsIml0ZXIyX3NwYXJzZV93aXRoX2xvZ3MiLCJwYXIiLCJmb3JfYWxsJDAiLCJjb25zX2VudW0kMCIsImUkMCIsImUkMSIsImNvbXBhcmUkMCIsIm0xIiwibTIiLCJjJDAiLCJlcXVhbCQwIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJhdXhfcHJpbnQkMCIsInByIiwiZGF0YSQxIiwiZGF0YSQyIiwicHJpbnQkMCIsImRpZmZfd2l0aF9sb2dzJDAiLCJvMSQxIiwibzIkMSIsIm8xIiwibzIiLCJvMSQwIiwibzIkMCIsImRpZmZfcHJlZF93aXRoX2xvZ3MiLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyIsInByb2pfbWFwIiwiaWRlbnRpdHlfZWx0Iiwia2V5X2EiLCJkYXRhX2EiLCJtYXBfYiIsImtleV9iIiwicHJval9tYXBfbW9uYWRpYyIsImhhbmRsZXIiLCJtb25hZGljX21lcmdlIiwiaGFuZGxlciQwIiwicHJval9zZXQiLCJzZXRfYSIsInByb2pfc2V0X21vbmFkaWMiLCJzZXRfYiIsInBhcnRpdGlvbl9zZXQiLCJwYXJ0aXRpb25fc2V0X21vbmFkaWMiLCJwcm9qMiIsImtleV9jIiwic3VibWFwIiwic3VibWFwJDAiLCJwcm9qMl9tb25hZGljIiwiaW50X2NvbXBhcmUiLCJpbnRfcGFpcl9jb21wYXJlIiwic3RyaW5nX3BhaXJfY29tcGFyZSIsInBhaXJfZXF1YWwiLCJlcWEiLCJlcWIiLCJ5YiIsInlhIiwieGIiLCJ4YSIsInByaW50JDEiLCJwcmludCQyIiwicHJpbnQkMyIsInVuc29tZSIsInVuc29tZV9vcl9yYWlzZSIsImV4Y2VwIiwiYmluZCIsImVxIiwiZ2V0X2Fubm90IiwiYW5ub3QiLCJjb3B5X2Fubm90IiwibWFwX2Fubm90Iiwib2ZfcG9zIiwic3RhcnRfbG9jYXRpb24iLCJlbmRfbG9jYXRpb24iLCJkdW1teV9wb3NpdGlvbiIsImR1bW15IiwiYW5ub3Rfd2l0aF9kdW1teSIsImlzX2R1bW15IiwiaXNfYW5ub3RlZF93aXRoX2R1bW15IiwicHJfZiIsInByX2wiLCJwcmludF9hbm5vdGVkIiwicmVhZF9wb3NpdGlvbiIsImNociIsImxpbmUiLCJ3cml0ZV9wb3NpdGlvbiIsInRvX2NvbXBhY3RfeW9qc29uIiwiZGVjbHMiLCJvZl9jb21wYWN0X3lvanNvbiIsImZpbGVuYW1lcyIsImZpbGUiLCJ4JDIiLCJvZl9saW5lIiwieCQzIiwib2ZfY2hyIiwieCQ0IiwidG9fY2hyIiwieCQ1IiwidG9fbGluZSIsInlvanNvbl9vZl9hbm5vdGVkIiwianAiLCJhbm5vdGVkX29mX3lvanNvbiIsIndyaXRlX3JhbmdlIiwic3RyaW5nX29mX3JhbmdlIiwicmVhZF9yYW5nZSIsInJhbmdlX29mX3N0cmluZyIsImlzX2luY2x1ZGVkX2luIiwicmFuZ2UiLCJsaXN0aSIsImVsIiwiaGFzaHRibCIsInRibCIsImJvdHRvbSIsIm51IiwiZW1wdHlfc2V0IiwiY29tbWEiLCJkb3QiLCJjb21wYWN0X2NvbW1hIiwiY29sb24iLCJzcGFjZSIsImN1dCIsInVuaXQiLCJwYWlyIiwicHBhIiwicHBiIiwib3B0aW9uIiwid2l0aF9zcGFjZSIsInBsYWluX2FycmF5IiwibGlzdF90b19zdHJpbmciLCJzZXRfdG9fc3RyaW5nIiwiYWNjdmFsIiwiciQwIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwiYWNjX2xyciIsImFjY19sJDEiLCJhY2NfciQxIiwiYWNjX3IkMCIsInJyIiwicnYiLCJybCIsImFjY19sJDAiLCJybHIiLCJybHYiLCJybGwiLCJhY2NfcmxsIiwid2VpZ2h0Iiwid2VpZ2h0JDAiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ0MiIsInQxIiwic3RhdGUiLCJhaW1fYWNjJDEiLCJ3cml0ZV9zZXZlcml0eSIsIndyaXRlX3N0YXR1cyIsIndyaXRlX21lc3NhZ2UiLCJ0ZXh0Iiwic2V2ZXJpdHkiLCJyZWFkX21lc3NhZ2UiLCJwcmludF9tZXNzYWdlIiwicmFuZ2UkMCIsIndyaXRlX3QiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwibWVzc2FnZXMiLCJzdGF0dXMiLCJtZXNzYWdlcyQwIiwic3RhdHVzJDAiLCJzdHJpbmdfb2ZfdCIsInJlYWRfdF9jb250ZW50IiwicmVhZF90IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJhdXhfcmVhZF90IiwiY2xvc2luZyIsInBvcyIsInYkMCIsInRfb2Zfc3RyaW5nIiwibGlmdCIsIm9rX3N0YXR1cyIsImVycm9yX3N0YXR1cyIsIm9rIiwib3ZlcndyaXRlX3N0YXR1cyIsInNwZWNpYWxfdmFsIiwiaWRlbnRpdHkiLCJtYXgiLCJpbW1lZGlhdGUiLCJpc19pZGVudGl0eSIsImNvbXB1dGUiLCJ2JDEiLCJmb3JjZSIsImltYWdlIiwiZGVidWdfbW9kZSIsIm5vdF9vayIsInVuc2FmZV9pbXBlcmF0aXZlX2FkZCIsImltcGVyYXRpdmVfYWRkIiwib3JpZ2luIiwiY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdCIsInN0b3BfYXQiLCJwcmUkMSIsInN1YnN0IiwicHJlIiwicHJlJDAiLCJhcHBseSIsImNvbXBvc2UiLCJleHRlbnNpYmxlIiwiaW52ZXJzZSIsInNyYyIsImRzdCIsInByaW50X2Z1bGwiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJtYXNrIiwidW5tYXNrIiwiaXNfaW5maW5pdGUiLCJmaW5kIiwiY29weV92ZWN0X2luIiwiY29weV9pbiIsImRlY2xhcmVfdW5iYWxhbmNlZCIsInVwZGF0ZV9zdHJ1Y3R1cmUiLCJuX2xheWVyIiwidXBkYXRlX3N0cnVjdHVyZV9hdXgiLCJmYXRoZXIiLCJ0X25vZGUiLCJ0X3N1YnRyZWUiLCJsYXllciIsImN1cnJlbnRfbGF5ZXIiLCJsYXllcl9lbmQiLCJ1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciIsInVuYmFsYW5jZWRfZXZlbnRzIiwibGF5ZXJfZW5kJDAiLCJjdXJyZW50X2xheWVyJDAiLCJ3JDAiLCJ0b3RhbCIsInJlcCIsInIkMSIsImxzb24iLCJyc29uIiwiciQyIiwiZGVidWdfcHJpbnQiLCJpbnYiLCJpbmYiLCJncmFwaF9wYWdlIiwidGl0bGUiLCJzdWJ0aXRsZSIsImRlcHMiLCJoZWFkZXIiLCJjb3JlIiwiZGVwZW5kZW5jeSIsImJpbl9hbGdfb3BfdG9fc3RyaW5nIiwiYmluX2FsZ19vcF9pc19wcmVmaXgiLCJwcmludF9iaW5fYWxnX29wIiwiZngiLCJmeSIsIm9wIiwiYmluX2FsZ19vcF90b19qc29uIiwiYmluX2FsZ19vcF9vZl9qc29uIiwidW5fYWxnX29wX3RvX3N0cmluZyIsInByaW50X3VuX2FsZ19vcCIsInVuX2FsZ19vcF90b19qc29uIiwidW5fYWxnX29wX29mX2pzb24iLCJzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfc3RhdGVfYWxnX29wIiwic3RhdGVfYWxnX29wX3RvX2pzb24iLCJzdGF0ZV9hbGdfb3Bfb2ZfanNvbiIsImJpbl9ib29sX29wX3RvX3N0cmluZyIsInByaW50X2Jpbl9ib29sX29wIiwiYmluX2Jvb2xfb3BfdG9fanNvbiIsImJpbl9ib29sX29wX29mX2pzb24iLCJ1bl9ib29sX29wX3RvX3N0cmluZyIsInByaW50X3VuX2Jvb2xfb3AiLCJ1bl9ib29sX29wX3RvX2pzb24iLCJ1bl9ib29sX29wX29mX2pzb24iLCJjb21wYXJlX29wX3RvX3N0cmluZyIsInByaW50X2NvbXBhcmVfb3AiLCJjb21wYXJlX29wX3RvX2pzb24iLCJjb21wYXJlX29wX29mX2pzb24iLCJwcmludF9yZXZfZGVwIiwiaWQkMCIsImlkJDEiLCJyZXZfZGVwX3RvX3lvanNvbiIsInJldl9kZXBfb2ZfeW9qc29uIiwiZGVwc2V0X3RvX3lvanNvbiIsImRlcHNldF9vZl95b2pzb24iLCJ6ZXJvIiwib25lIiwiY2FzdF9iaW5fb3AiLCJvcF9mIiwib3BfaSIsIm9wX2k2NCIsInkkMSIsInkkMiIsInkkMyIsInkkNCIsIm9wX2kkMCIsInkkNSIsIm9wX2k2NCQwIiwieSQ2IiwieSQ3Iiwib3BfaTY0JDEiLCJ5JDgiLCJvcF9pNjQkMiIsImNhc3RfdW5fb3AiLCJvcF9mJDAiLCJvcF9pJDEiLCJvcF9mJDEiLCJvcF9mJDIiLCJuMSIsIm4yIiwiaXNfZ3JlYXRlciIsImlzX3NtYWxsZXIiLCJpc19lcXVhbCIsIm11bHQiLCJyZW0iLCJpbnRlcm5hbF9kaXYiLCJzdWNjIiwibmVnIiwidG9fZmxvYXQiLCJpc196ZXJvIiwiaXNfc3RyaWN0bHlfcG9zaXRpdmUiLCJwb3NfcG93IiwicHJldHR5X3ByaW50IiwicHJpbnRfb3B0aW9uIiwibWF5YmVfaXRlcmkiLCJvZl9iaW5fYWxnX29wIiwib2ZfdW5fYWxnX29wIiwib2ZfY29tcGFyZV9vcCIsIndhcm5pbmdfYnVmZmVyIiwiZm9yYmlkZGVuIiwiYmFkIiwiY3JlYXRlX2Zyb21fbGlzdCIsImNyZWF0ZV9ub19sb2MiLCJuZCIsImVsdF9uYW1lIiwiZWx0X2lkIiwia2luZCIsInNlcCIsInBwIiwiZWx0X3ZhbCIsInJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1ciIsImxpc3QkMCIsImJ1ZmZlciIsImxpc3QkMSIsImxpc3QkMiIsImJ1ZmZlciQwIiwibGFzdCIsInBvcF9sYXN0IiwiY29uc19vcHRpb24iLCJzbWFydF9maWx0ZXIiLCJzbWFydF9tYXAiLCJyZXZfbWFwaSIsIm1hcF9vcHRpb24iLCJleGlzdHNfdW5pcSIsIm1lcmdlX3VuaXEiLCJrJDMiLCJ0MiQwIiwiaDIkMCIsInQxJDAiLCJoMSQwIiwiayQyIiwicmV2X21hcF9hcHBlbmQiLCJhY2MkMSIsIm1hcF9mbGF0dGVuIiwicmVtb3ZlX2NvbnNlY3V0aXZlX2RvdWJsZSIsInEkMSIsImxhc3QkMSIsImxhc3QkMCIsImZvbGRfcmlnaHRfbWFwIiwiZm9sZF9sZWZ0MiIsImNsZWFuIiwiaW50X29mX2hhc2hlZF9saXN0IiwiZnN0X2VsdF9pZCIsImZzdF9saXN0X2lkIiwiY29ucyIsImNhY2hlJDAiLCJoZWFkIiwiaGFzaF9oZWFkIiwiY2FjaGUkMSIsInN1YnRhYiIsInN1YnRhYiQwIiwic3VidGFiJDEiLCJoYXNoJDAiLCJoYXNoIiwiY2FjaGUiLCJmb3JtYXR0ZXIiLCJwcmludF9jYWNoZSIsIm9wdCQwIiwic2ltcGxpZnkiLCJnY2QiLCJkaXYiLCJiX2ludiIsInB1c2giLCJjcmNfdGFibGUiLCJzdHJpbmciLCJzdHIiLCJjcmMiLCJ0cmlwbGVfb2ZfY29sb3IiLCJjcmVhdGVfaW5maW5pdGUiLCJ0JDIiLCJ0JDQiLCJ0JDMiLCJvdmVyd3JpdHRlbl92YWx1ZSIsIm92ZXJ3cml0dGVuX3ZhbHVlJDAiLCJjb250ZW50cyIsIm50aCIsIm9mcyIsImNsZWFyIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImFkZF9zdWJzdHJpbmciLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiZGVmYXVsdF9hbHBoYWJldCIsInVyaV9zYWZlX2FscGhhYmV0IiwicGFkZGluZyIsIm9mX2NoYXIiLCJhbHBoYWJldCIsInRvX2NoYXIiLCJkZWNvZGUiLCJpbnB1dCIsImlucHV0JDAiLCJsZW5ndGgkMCIsIndvcmRzIiwicGFkZGluZyQwIiwieiIsImVuY29kZSIsInBhZCIsInBhZGRpbmdfbGVuIiwicHJpbnQiLCJjb21wYXJlIiwieSIsIngiLCJ5JDAiLCJ4JDAiLCJjIiwicHJpbnRfYWdlbnQiLCJ3aXRoX2lkIiwid2l0aF9saW5rIiwibm9kZSIsImYiLCJhZyIsImlkIiwic2kiLCJpIiwicCQwIiwicGFjayIsInAiLCJmcmVlX2lkIiwiZGFuZ2xpbmciLCJ0eSIsImwiLCJteXNlbGYiLCJ2YSIsInZhJDAiLCJwcmludF9jYyIsIm1peCIsImxpbmsiLCJhbCIsImFyIiwic3RvcmUiLCJwcmludF9kb3RfY2MiLCJuYl9jYyIsImlsIiwiaXIiLCJ2IiwicyIsImxpbmtzIiwicyQwIiwiYXIkMCIsImFsJDAiLCJ3cml0ZV9zaXRlIiwib2IiLCJ3cml0ZV9jY19zaXRlIiwibGlua3Nfb2ZfeW9qc29uIiwiYiIsImVycm9yX21zZyIsInJlYWRfY2Nfc2l0ZSIsImxiIiwia2V5JDAiLCJuIiwia2V5Iiwib3V0IiwicG9ydF9zdGF0ZXMiLCJwb3J0X2xpbmtzIiwic2l0ZV90eXBlIiwic2l0ZV9uYW1lIiwid3JpdGVfY2Nfbm9kZSIsIm5vZGVfaWQiLCJyZWFkX2NjX25vZGUiLCJub2RlX3NpdGVzIiwibm9kZV90eXBlIiwid3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCIsInJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCIsInN0cmluZ19vZl9jb25uZWN0ZWRfY29tcG9uZW50Iiwib3B0Iiwic3RoIiwibGVuIiwiY29ubmVjdGVkX2NvbXBvbmVudF9vZl9zdHJpbmciLCJmb2xkIiwibyIsIm51bV9vZl9zaXRlIiwiYWdlbnRfbmFtZSIsInNpZ25hdHVyZSIsImFnZW50X25hbWUkMCIsImtpbmQiLCJzaXRlX29mX251bSIsImFkZHIiLCJudW1fb2ZfaW50ZXJuYWxfc3RhdGUiLCJzaXRlX2lkIiwic3RhdGUiLCJzaXRlX3NpZyIsImludGVybmFsX3N0YXRlX29mX3NpdGVfaWQiLCJ2YWxfaWQiLCJjb3VudGVyX29mX3NpdGVfaWQiLCJoYXNfY291bnRlciIsInBfaWQiLCJvayIsIm9rJDAiLCJvbmVfdG9fanNvbiIsImMyIiwiYzEiLCJhIiwiYWNjIiwib25lX29mX2pzb24iLCJzaXplIiwic2lncyIsImdldCIsImFnZW50X2lkIiwiYXJpdHkiLCJtYXhfYXJpdHkiLCJhZ2VudF9vZl9udW0iLCJudW1fb2ZfYWdlbnQiLCJuYW1lIiwiaWRfb2Zfc2l0ZSIsImFnZW50X3R5Iiwic2l0ZV9vZl9pZCIsImlkX29mX2ludGVybmFsX3N0YXRlIiwiaW50ZXJuYWxfc3RhdGVfb2ZfaWQiLCJpZF9zaXRlIiwiaWRfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIiwiZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSIsImFsbG93ZWRfbGluayIsImFnMSIsInMxIiwiYWcyIiwiczIiLCJhZzEkMCIsInMxJDAiLCJhZzIkMCIsInMyJDAiLCJjcmVhdGUiLCJjb3VudGVyc19wZXJfYWdlbnQiLCJhZ2VudF9zaWdzIiwiaXNfY291bnRlcl9hZ2VudCIsIm5faWQiLCJhZ2VudF9pbmZvIiwicG9ydHNfaWZfY291bnRlcl9hZ2VudCIsInNpdGVfaXNfY291bnRlciIsImFnX3R5IiwiZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInByaW50X3NpdGUiLCJwcmludF9pbnRlcm5hbF9zdGF0ZSIsInNpdGUiLCJwcmludF9zaXRlX2ludGVybmFsX3N0YXRlIiwicHJpbnRfY291bnRlciIsInBwX2ludCIsIm5hIiwicHBfY291bnRzIiwidG9fanNvbiIsIm9mX2pzb24iLCJhZ2VudF9zaWduYXR1cmUiLCJwb3J0cyIsImVtcHR5IiwiaW5jcmVtZW50X2luX3NuYXBzaG90IiwicmF3IiwiY2J0X2EiLCJjbGFzc2lmeSIsImFncyIsIm5iIiwiaHMiLCJhdXhfaW5jcmVtZW50IiwidCIsImgiLCJjYnRfeSIsImgxIiwiYm9vbCIsImRvbiIsInEiLCJpX29rIiwiYiQwIiwiZG9uJDEiLCJ0b2RvIiwiYSQwIiwiYWdzJDAiLCJjb3VudGVyX3ZhbHVlIiwiY2MiLCJjb3VudCIsInNpZCIsIm5pZCIsImNjX3RvX3VzZXJfY2MiLCJkZWJ1Z19tb2RlIiwiciIsInBvcyIsImluZGV4ZXMiLCJpbmRleGVzJDAiLCJjY19saXN0IiwiY2Nfd2l0aG91dF9jb3VudGVycyIsImRuX2lkIiwiZG5faWQkMCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJpZDIiLCJpZDEiLCJ3cml0ZV9qc29uIiwicmVhZF9qc29uIiwicHJpbnQkMCIsImxvb3BpbmciLCJpbnRfbCIsIm1hcmsiLCJvbGQiLCJ0ZXN0IiwicmVzZXQiLCJpdGVyaV9yZXNldCIsImsiLCJqIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwiaSQwIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJzaW5nbGV0b25fcGF0aCIsIm4kMCIsInJldl9wYXRoIiwiaXNfdmFsaWRfcGF0aCIsImFyZV9jb25uZWN0ZWQiLCJtYXhfZGlzdGFuY2UiLCJub2Rlc194Iiwibm9kZXNfeSIsInByZXBhcmUiLCJkZXB0aCIsIm91dCQxIiwiaWQkMSIsImFjYyQxIiwic2l0ZSQ0IiwicGF0aCIsInBhdGgkMCIsIm91dCQwIiwiYWNjJDAiLCJuZXh0JDIiLCJvdXQkMiIsInN0b3AiLCJkIiwicHJpbnRfaWQiLCJwcmludF9pZF9zaXRlIiwic291cmNlIiwiZmluZF90eSIsInR5JDEiLCJwb3J0X3RvX3lvanNvbiIsInBvcnRfb2ZfeW9qc29uIiwic3RlcF90b195b2pzb24iLCJzdGVwX29mX3lvanNvbiIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsImV4dGVuZCIsInBvcnQiLCJ0JDEiLCJjb21wYXRpYmxlX2ZyZXNoX3BvaW50IiwiZSIsInNzaXRlIiwiYXJyb3ciLCJzdHkiLCJpbmokMCIsImluaiQzIiwic3NpdGUkMSIsInN0eSQxIiwic2lkJDEiLCJpZCQyIiwiaW5qJDEiLCJpbmokMiIsInNzaXRlJDAiLCJzdHkkMCIsInNpZCQwIiwiY29tcGF0aWJsZV9wb2ludCIsImUkMCIsImlkJDMiLCJ0eSQyIiwiaWQkNCIsInNpdGUkNSIsInR5JDMiLCJpZCQ1Iiwic3NpdGUkMiIsInNpZCQyIiwiaW5qJDQiLCJzaXRlJDYiLCJ0eSQ0IiwiaWQkNiIsImlzX3N1Ym5hdmlnYXRpb24iLCJuYXYkMCIsImdvYWwiLCJuYXYkMSIsInJlbmFtZV9pZCIsImluajJjYyIsImltZyIsIngkMSIsInQkMiIsImNoZWNrX2VkZ2UiLCJkc3RfaXNfb2theSIsImluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSIsImRzdCIsImRzdCQwIiwicnR5IiwicnR5JDAiLCJyb290JDAiLCJpbXBlcmF0aXZlX2RzdF9pc19va2F5IiwiaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIiwiY29uY3JldGl6ZV9wb3J0IiwiY29uY3JldGl6ZSIsIm5hdiIsInN0ZXAiLCJzdCIsImNvcHlfYWdlbnQiLCJhZ2VudCIsImNyZWF0ZSIsIm4iLCJpIiwiZmluZF9hdXgiLCJhIiwiYWkiLCJyb290IiwiZmluZCIsImgiLCJ4IiwiY29tYmluZV9yYW5rcyIsImJ5IiwiaXkiLCJieCIsIml4IiwiYnkkMCIsInVuaW9uIiwieSIsInJvb3RfeCIsInJvb3RfeSIsInJhbmtfeCIsInJhbmtfeSIsInVuaW9uX2ZpbmRfY291bnRlcnMiLCJzaWdzIiwibWl4IiwidCIsInNpZ3MkMCIsImFnIiwiYWZ0ZXIiLCJiZWZvcmUiLCJiIiwibG5rX2IiLCJsbmtfYSIsInMiLCJwcmludCIsIm5vQ291bnRlcnMiLCJjcmVhdGVkIiwiaW5pdGlhbF9jb21tYSIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsImkkMSIsImlzX2NvdW50ZXIiLCJjb3VudGVyIiwiaSQwIiwiYWdlbnRfdG9fanNvbiIsImFjYyIsImFnZW50X29mX2pzb24iLCJwIiwidG9fanNvbiIsIm0iLCJvZl9qc29uIiwibCIsImVfdG9feW9qc29uIiwiZmlsZW5hbWVzIiwiZl9taXgiLCJmX2lkIiwib3AiLCJhJDAiLCJvcCQwIiwib3AkMSIsImNjIiwibm8iLCJ5ZXMiLCJjb25kIiwiYm9vbF90b195b2pzb24iLCJ0b2tlbiIsImV4cHIiLCJtaXh0dXJlIiwiZXhwciQwIiwiYiQwIiwiYSQxIiwiZV9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInRvayIsInByX21peCIsInByX3RvayIsInByX3ZhciIsImxhYiIsImFzdCIsInRrIiwicHJpbnRfYm9vbCIsImNvbnN0JDAiLCJpbnQkMCIsImZsb2F0JDAiLCJhZGQiLCJlMSIsImUyIiwibWludXMiLCJtdWx0IiwiZGl2IiwicG93IiwibG9nIiwibG4iLCJzaW4iLCJjb3MiLCJ1bWludXMiLCJzcXJ0IiwiYWRkX2RlcCIsImQiLCJ4JDAiLCJvdXQiLCJ0b2tzX2QiLCJpbl9lIiwiaW5fdCIsImoiLCJhZGRfZGVwX2Jvb2wiLCJoYXNfbWl4JDAiLCJ2YXJfZGVjbHMiLCJoYXNfbWl4IiwiYm9vbF9oYXNfbWl4JDAiLCJib29sX2hhc19taXgiLCJpc19jb25zdGFudCIsImMiLCJib29sX2lzX2NvbnN0YW50IiwiaXNfdGltZV9ob21vZ2VuZW91cyIsImJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyIsImF1eF9leHRyYWN0X2NjIiwiYWNjJDAiLCJleHRyYWN0X2NjX2Jvb2wiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19iIiwic2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCIsInRva3MiLCJ2YXJzIiwicHJvcGFnYXRlX2NvbnN0YW50Iiwid2FybmluZyIsIm1heF90aW1lIiwibWF4X2V2ZW50cyIsInVwZGF0ZWRfdmFycyIsInBvcyIsImMxIiwiYzIiLCJwb3MkMCIsImEkMiIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiY29uZCQwIiwicHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wiLCJwb3MkNSIsInQkMCIsImEkMyIsImEkNCIsInBvcyQ2IiwiYSQ1IiwiYSQ2IiwiYiQxIiwiYiQyIiwibjEiLCJuMiIsImhhc19wcm9ncmVzc19kZXAiLCJvbmx5X3RpbWUiLCJ2YXJzX2RlcHMiLCJkZXBzIiwiYXV4IiwiayIsImJvb2xfaGFzX3Byb2dyZXNzX2RlcCIsImlzX2VxdWFsaXR5X3Rlc3RfdGltZSIsIm1hcF9vbl9taXh0dXJlIiwibyIsInAkMCIsIngkMSIsIm8kMCIsInAkMSIsInAkMiIsInkkMCIsIngkMiIsIm1hcF9ib29sX29uX21peHR1cmUiLCJwJDMiLCJvJDEiLCJmb2xkX29uX21peHR1cmUkMCIsImZvbGRfb25fbWl4dHVyZSIsInYiLCJ1IiwiZm9sZF9ib29sX29uX21peHR1cmUkMCIsImZvbGRfYm9vbF9vbl9taXh0dXJlIiwiZXF1YWwiLCJhMiIsImExIiwib3BhIiwiYjIiLCJiMSIsIm9wYiIsImExJDAiLCJvcGEkMCIsImIxJDAiLCJvcGIkMCIsIm9wYSQxIiwib3BiJDEiLCJpZDEiLCJpZDIiLCJtaXgxIiwibWl4MiIsImlkMSQwIiwiaWQyJDAiLCJhMiQwIiwiYTEkMSIsImNvbmRhIiwiYjIkMCIsImIxJDEiLCJjb25kYiIsImVxdWFsX2Jvb2wiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJhcnJheV9vZl9qc29uIiwibHMiLCJhcnJheTEiLCJhcnJheTIiLCJwcmludF9rYXBwYSIsImludGYiLCJpcyIsInNkIiwiYWQiLCJwcmludF9jeWNsZXMiLCJmb3JtIiwiY29udGFjdF9tYXAiLCJkZnMiLCJwYXRoIiwibGFzdF9zIiwia25vd24iLCJrbm93biQwIiwicyQwIiwidHkiLCJhY2MkMSIsImFnJDAiLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwib2IiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsIm9wdCIsInJlYWRfc2hhcmluZ19sZXZlbCIsImxiIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJkZWJ1Z19wcmludF9pZCIsImZtdCIsImlkIiwic2l6ZV9vZl9jYyIsImNvbXBhcmVfY2Fub25pY2FscyIsImNjJDAiLCJpc19lcXVhbF9jYW5vbmljYWxzIiwiY29hcnNlX2hhc2giLCJwbHVzX2ludGVybmFsIiwibm9kZV9zaGFwZSIsImUiLCJuJDAiLCJleHRyYSIsImlkX3RvX3lvanNvbiIsImlkX29mX3lvanNvbiIsImR1bW15IiwiZW1wdHlfY2MiLCJuYnQiLCJyYXdfZmluZF90eSIsInR5cyIsImZpbmRfdHkiLCJhZGRfb3JpZ2luIiwicmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiIsImFscmVhZHlfc3BlY2lmaWVkIiwicmF3X2ZpbmRfcm9vdCIsIm5vZGVzX2J5X3R5cGUiLCJ0eSQwIiwiZmluZF9yb290Iiwid2VpZ2h0IiwibCQwIiwiZCQwIiwibCQxIiwiZG91YmxlJDAiLCJsaW5rcyIsImFyZV9jb21wYXRpYmxlIiwiZGVidWdfbW9kZSIsInBvc3NpYmlsaXRpZXMiLCJzdHJpY3QiLCJyb290MSIsImNjMSIsInJvb3QyIiwiY2MyIiwicmVuYW1lJDEiLCJhdF9sZWFzdF9vbmVfZWRnZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UiLCJyZW5hbWUiLCJ0b2RvcyIsInBhaXIiLCJseSIsImx4IiwicmVuIiwidG9kbyIsIm9uZV9lZGdlIiwib25lX2VkZ2UkMSIsInMxIiwiczIiLCJyIiwib25lX2VkZ2UkMCIsImNvbmZsaWN0IiwicmVuYW1lJDAiLCJ0b2RvcyQwIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMCIsImFncyIsImgxIiwiYm9vbCIsImFncyQwIiwiYXV0b21vcnBoaXNtcyIsInBvdGVudGlhbF9wYWlyaW5nIiwibGEiLCJtYXRjaGluZ3MiLCJyYXdfdG9fbmF2aWdhdGlvbiIsImZ1bGwiLCJub2RlcyIsImRvbiIsImZpcnN0IiwiZG9uJDEiLCJoJDAiLCJyZSIsImFucyIsImFucyQwIiwiZmlyc3QkMCIsIm91dCQwIiwiaW5mcyIsImNhbmRfbm9kZXMiLCJsbmsxIiwibG5rMSQwIiwiaXkkMCIsIml5JDYiLCJpeSQyIiwiaXkkNSIsIml5JDMiLCJpeSQ0IiwiaXkkMSIsIm91dGwiLCJjYW5kX25vZGVzJDAiLCJub2Rlc19ieV90eXBlJDAiLCJyZWZfbmJ0IiwicmVmX25idCQwIiwicmUkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmVfaW1nIiwicmVfaW1nJDAiLCJyZSQxIiwic2l0ZXMiLCJzaXRlcyQwIiwiY291bnRlcl92YWx1ZSIsImNvdW50Iiwic2lkIiwibmlkIiwiZWwiLCJkaSIsImRuIiwiY291bnRlcl92YWx1ZV9jYyIsImRvdGNvbW1hIiwiZG90bmV0IiwicHJpbnRfY2MiLCJjY19pZCIsIndpdGhfaWQiLCJzdGgiLCJzdGgkMCIsImZ1bGxfc3BlY2llcyIsImNjX2lkJDAiLCJuZWlnaCIsImxpbmtfaWRzIiwibm90X2VtcHR5IiwiYWdfeCIsImFnX2kiLCJzdCIsImZyZWUiLCJkc3RfcCIsImRzdF9hIiwiZHN0X3R5Iiwib3V0JDEiLCJwcmludF9jY19hc19pZCIsIm5vdF9lbXB0eSQwIiwibWVyZ2VfY29tcGF0aWJsZSIsInJlc2VydmVkX2lkcyIsImZyZWVfaWQiLCJpbmoxX3RvXzIiLCJpbWciLCJhdmFpbGFibGVfaWRzIiwidXNlZF9pZHMiLCJhdmFpbGFibGVfaW5fY2MxIiwiZnJlZV9pZF9mb3JfY2MxIiwiZ2V0X2NjMiIsInBhY2siLCJ0b2RvczIiLCJ0b2RvczEiLCJpbmoyIiwiaW5qMSIsImZyZWVfaWQkMCIsImZyZWVfaWQkMSIsImdldF9jYzEiLCJub2Rlc2kiLCJub2Rlc28iLCJub2Rlc2oiLCJub2Rlc28kMCIsIm5vZGVzaiQwIiwic3RpJDEiLCJuJDEiLCJzdGokMyIsInN0byQwIiwibiQyIiwic3RqIiwic3RpIiwic3RqJDIiLCJzdG8iLCJzdGokMCIsInN0aSQwIiwic3RqJDEiLCJpbmoyJDAiLCJwYWNrJDAiLCJ0b2RvczIkMCIsImokMCIsIm5vZGVzaSQwIiwiaW5qMiQxIiwicGFjayQxIiwiY29udGVudCIsInJvb3RzIiwic29ucyIsInNpZ25hdHVyZXMiLCJlbnYiLCJwcmludCQwIiwicHBfcG9pbnQiLCJwX2lkIiwiZ2V0X3NpbmdsZV9hZ2VudCIsImdldCQwIiwidG9fbmF2aWdhdGlvbiIsInRyYW5zaXRpb25fdG9feW9qc29uIiwidHJhbnNpdGlvbl9vZl95b2pzb24iLCJkc3QiLCJzb3J0cyIsInNpZ19kZWNsIiwibCQyIiwicyQxIiwibCQzIiwibmV3X29ic19tYXAiLCJnZXRfZWxlbWVudGFyeSIsImRvbWFpbiIsIm5vZGUiLCJhcnJvdyIsInNhIiwidGFpbCIsImluaiIsInByaW50JDEiLCJlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCIsImFfaWQiLCJmcmVzaCIsImlkX2J5X3R5cGUiLCJuYl9pZCIsImluc2VydF9uYXZpZ2F0aW9uIiwiZHN0X2lkIiwiY2NfZCIsImluajJkc3QiLCJpbmoyZHN0JDAiLCJwX2lkJDAiLCJwb2ludCIsInQkMyIsIm5hdiQwIiwic2kiLCJzaSQwIiwidCQxIiwic2kkMSIsImFnJDEiLCJuJDMiLCJzaWwiLCJhZ2wiLCJpbmokMCIsInQkMiIsIm4kNCIsInN1cCIsImlual9lMnN1cCIsImlual9zdXAyZHN0IiwiaW5qX2RfdG9fbyIsImNjX28iLCJpbnRlciIsImRpc2MiLCJub2Rlc2QiLCJkaXNjJDAiLCJub2Rlc28kMSIsImRzIiwiZGwiLCJvcyIsIm9sIiwibGkiLCJkaXMiLCJpbnQkMSIsImludGVybiQxIiwiYWxsX2xpbmtzIiwiZGlzY292ZXJlZCQyIiwiZGlzY292ZXJlZCIsIm5leHRfcm91bmQiLCJyZWNvZ24iLCJpbnRlcm4iLCJpbnRlcm4kMCIsInJlY29nbiQwIiwicmVjb2duJDEiLCJuYXYiLCJpbmpfcF8yZHN0IiwicF9pZCQxIiwiaW5qMmRzdCQxIiwiYWRkX2NjIiwidG9wbGV2ZWwiLCJvcmlnaW4iLCJlbGVtZW50IiwidyIsImhhc2giLCJydHkkMCIsInJpZCQwIiwicm9vdHMkMCIsInJ0eSIsInJpZCIsImVudl93Iiwib3V0X2lkIiwiZW52X3dfaCIsIm9mX2VudiIsImFjY193IiwiZGVidWdfcHJpbnQiLCJjaGVja19kYW5nbGluZyIsIndrIiwiYmVnaW5fbmV3IiwiZnJlc2hfY2NfaWQiLCJyYXdfZmluaXNoX25ldyIsImNjX2NhbmRpZGF0ZSIsInByZWVudiIsImZpbmlzaF9uZXciLCJuZXdfbGluayIsInhfbiIsInlfbiIsInN0eSIsInN0eCIsIm5ld19mcmVlIiwibmV3X2ludGVybmFsX3N0YXRlIiwidmEiLCJuZXdfbm9kZSIsInR5cGVfaWQiLCJhcml0eSIsIm5vZGUkMCIsImZvbGRfYnlfdHlwZSIsImFnZW50X3R5cGUiLCJsaXN0X3BvcyIsImZvbGQiLCJmaW5hbGl6ZSIsInNoYXJpbmciLCJlbnYkMCIsInckMCIsInckMSIsInckMiIsInckMyIsInckNCIsInckNSIsImRvbWFpbiQxIiwibGV2ZWwkNCIsImFjYyQzIiwibGV2ZWwkMSIsImRvbWFpbiQwIiwibGlzdCIsImFjYyQyIiwidGhpcyQwIiwibGV2ZWwiLCJ0aGlzJDEiLCJuZXdzIiwicmVuYW1pbmciLCJhY2NuIiwibm9kZXMxIiwibm9kZXMyIiwiaTIiLCJsMiIsImkxIiwibDEiLCJpbWFnZSIsIm1pZCIsImlkJDAiLCJpZCQxIiwibGV2ZWwkMiIsImxldmVsJDMiLCJjb21wbGV0ZV9kb21haW4iLCJkb21haW4kMiIsInNpbmdsZXMiLCJzaWdzJDEiLCJlbGVtZW50YXJpZXMiLCJzdGVwIiwiYXJyIiwidHkxIiwic2ExIiwiczIkMCIsInR5MiIsInNhMiIsInN0YXRfbmF2X3N0ZXBzIiwiZG9tYWluX2xldmVsIiwiYWNjX2xldmVsIiwibGwiLCJhY2NsIiwiaW5qcyIsImlual9lX3giLCJsZXZlbDAiLCJzaW5nbGVfYWdlbnRfcG9pbnRzIiwibWVyZ2Vfb25faW5mIiwiZzEiLCJnMiIsIm1fbGlzdCIsInBhaXJpbmciLCJtJDAiLCJwdXNob3V0IiwibGVuZ3RoIiwiY28iLCJjbyQwIiwibm0iLCJjY2lkIiwicmVjb25zdHJ1Y3RfcmVuYW1pbmciLCJncmFwaCIsInJpZHMiLCJpbmplY3RpdmUiLCJyZWNvbnN0cnVjdCIsImlzX3Jvb3Rfb2YiLCJyb290JDAiLCJyb290c19vZiIsImdldCIsImVsZW1lbnRzX3dpdGhfdHlwZXMiLCJjY3MiLCJtYXAiLCJjb21wYXJlIiwiZW1wdHlfY2FjaGUiLCJmcm9tX2VkZ2UiLCJzaXRlIiwiY2FjaGUiLCJjYWNoZSQwIiwicmV2X2RlcHMiLCJvYnMiLCJyZW1haW5zIiwiaW5qX3BvaW50MmdyYXBoIiwicGlkIiwiaW5qX3BvaW50MmdyYXBoJDAiLCJwaWQkMCIsInNvbiIsImNhIiwiY2EkMCIsIm5leHQiLCJjYWNoZSQxIiwicmVtYWlucyQwIiwib2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCIsInJkZXBzIiwib2JzZXJ2YWJsZXNfZnJvbV9mcmVlIiwib2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCIsIm9ic2VydmFibGVzX2Zyb21fbGluayIsInNpdGUkMCIsInByaW50X3NpdGUiLCJwbGFjZSIsInByaW50X2ludGVybmFsIiwiZ2V0X3R5cGUiLCJnZXRfaWQiLCJpc19mcmVzaCIsImNvbmNyZXRpemUiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJlbXB0eV9ldmVudCIsImpzb25fZGljdGlvbm5hcnkiLCJhY3Rpb24iLCJ3ZWlnaHRfcmV2ZXJzZSIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmUiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0Iiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdF9yZXZlIiwiY29uY3JldGl6ZV90ZXN0IiwiaW5qMmdyYXBoIiwicGwiLCJwbCQwIiwicGwkMSIsInBsJDIiLCJzJDIiLCJwbCQzIiwicyQzIiwicGwkNCIsInMkNCIsInBsJDUiLCJjb25jcmV0aXplX2FjdGlvbiIsInBsJDYiLCJ0cnlfY29uY3JldGl6ZV9hY3Rpb24iLCJhY3Rpb25zIiwiY29uY3JldGl6ZV9ldmVudCIsImJ0IiwibWFwX3Rlc3QiLCJtYXBfYWN0aW9uIiwibWF0Y2hfdGVzdHMiLCJiJDMiLCJjJDAiLCJtYXRjaF9hY3Rpb25zIiwiYmxzIiwiYWxzIiwib2siLCJnZXRfaWRzIiwibWF0Y2hfcXVhcmtzIiwiYV9xdWFya3MiLCJjX3F1YXJrcyIsImZtYXRjaCIsImFfcXVhcmtzJDAiLCJjX3F1YXJrcyQwIiwiYV9xdWFya3MkMSIsImFxIiwiYXEkMCIsImNxIiwiY19xdWFya3MkMSIsImNxcyIsIm1hdGNoaW5nX2Fic3RyYWN0X2NvbmNyZXRlIiwiYWUiLCJjZSIsImFlX3Rlc3RzIiwiY2VfdGVzdHMiLCJhYnN0cmFjdF9pZHMiLCJjb25jcmV0ZV9pZHMiLCJwYXJ0aXRpb24iLCJmbWFwIiwibWF0Y2hpbmciLCJ0ZXN0cyIsImNhY3Rpb25zJDAiLCJ0bCIsImNpZCIsImNpZCQwIiwiY3Rlc3RzIiwidGVzdCIsImNhY3Rpb25zIiwiYWN0Iiwic3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IiwibmEiLCJhZ2VudCQwIiwic3Vic3RfbWFwX3NpdGUiLCJzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCIsImludGVybmFsX3N0YXRlIiwic2l0ZSQxIiwic2l0ZSQyIiwic2l0ZSQzIiwic2l0ZSQ0IiwiYmluZGluZ190eXBlIiwic2l0ZSQ1Iiwic2l0ZSQ2Iiwic2l0ZTIiLCJzaXRlMSIsInNpdGUxJDAiLCJzaXRlMiQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3RlIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCIsInJlbmFtZV9hYnN0cmFjdF90ZXN0Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24iLCJmJDAiLCJzMSQwIiwiczIkMSIsInMxJDEiLCJzMSQyIiwiczIkMiIsImFnZW50JDEiLCJhZ2VudCQyIiwic3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hYyIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiIsInJlbmFtZV9hYnN0cmFjdF9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QiLCJic3RhdGUiLCJic3RhdGUkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZSIsInJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCIsInN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldiIsInN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZSIsImYkMSIsImYkMiIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IiwicmVuYW1lX2Fic3RyYWN0X2V2ZW50IiwicHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSIsInByaW50X2NvbmNyZXRlX3Rlc3QiLCJwcmludF9jb25jcmV0ZV9hY3Rpb24iLCJwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlIiwiYWdfaWQiLCJzaWdzJDIiLCJzaWdzJDMiLCJ3cml0ZV9iaW5kaW5nX3R5cGUiLCJyZWFkX2JpbmRpbmdfdHlwZSIsImJpbmRpbmdfdHlwZV90b19qc29uIiwid3JpdGVfcXVhcmsiLCJyZWFkX3F1YXJrIiwicXVhcmtfdG9fanNvbiIsInF1YXJrX29mX2pzb24iLCJ3cml0ZV90ZXN0IiwicmVhZF90ZXN0IiwiYmkiLCJ0ZXN0X3RvX2pzb24iLCJ0ZXN0X29mX2pzb24iLCJ3cml0ZV9hY3Rpb24iLCJpbmZvIiwicmVhZF9hY3Rpb24iLCJhY3Rpb25fdG9fanNvbiIsImFjdGlvbl9vZl9qc29uIiwid3JpdGVfZXZlbnQiLCJiZiIsInJlYWRfZXZlbnQiLCJzaWRlX2VmZmVjdHNfc3JjIiwic2lkZV9lZmZlY3RzX2RzdCIsImNvbm5lY3Rpdml0eV90ZXN0cyIsImV2ZW50X3RvX2pzb24iLCJjY3QiLCJldmVudF9vZl9qc29uIiwiY190Iiwic19lX2RzdCIsInNfZV9zcmMiLCJjY2wiLCJwMiIsInAxIiwicDEkMCIsInAyJDAiLCJwJDQiLCJwJDUiLCJwJDYiLCJwJDciLCJwJDgiLCJuJDUiLCJtYXBfZm9sZF9hZ2VudCIsImFjYyQ0IiwiYWNjJDUiLCJhJDciLCJhY2MkNiIsImEkOCIsIm1hcF9hZ2VudCIsImZvbGRfYWdlbnQiLCJzJDUiLCJzJDYiLCJhJDkiLCJnZXRfbmVnYXRpdmVfcGFydCIsImNyZWF0ZWRfYWdlbnRzIiwibG5rX2RzdCIsImFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiIsIm5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInNpZGVfZWZmZWN0X2RzdHMiLCJyZW0iLCJyZXYiLCJleHRyYWN0X2NjX2lkcyIsImV4dHJhY3RfYWJzdHJhY3RfZXZlbnQiLCJhbGdfZXhwcl90b195b2pzb24iLCJhbGdfZXhwcl9vZl95b2pzb24iLCJydWxlX3RvX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwiZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zIiwidHIiLCJnIiwiZW1iIiwiZyQwIiwiZW1iJDAiLCJwcmludF9leHByX3RvX3lvanNvbiIsImZfdmFyIiwicHJpbnRfZXhwcl9vZl95b2pzb24iLCJtYXBfZXhwcl9wcmludCIsImZvbGRfZXhwcl9wcmludCIsImRpbl9raW5kX3RvX3lvanNvbiIsImRpbl9raW5kX29mX3lvanNvbiIsIndyaXRlX2Rpbl9raW5kIiwic3RyaW5nX29mX2Rpbl9raW5kIiwibGVuIiwicmVhZF9kaW5fa2luZCIsImRpbl9raW5kX29mX3N0cmluZyIsInByaW50X3RfZXhwcl90b195b2pzb24iLCJwcmludF90X2V4cHJfb2ZfeW9qc29uIiwibW9kaWZpY2F0aW9uX3RvX3lvanNvbiIsInJhdyIsIm5hbWUiLCJraW5kIiwiaWRzJDAiLCJuYW1lJDAiLCJmJDMiLCJ0ZXN0cyQwIiwiaWRzJDEiLCJmJDQiLCJmJDUiLCJtb2RpZmljYXRpb25fb2ZfeW9qc29uIiwicmF3JDAiLCJib29sX2V4cHJfdG9feW9qc29uIiwiYm9vbF9leHByX29mX3lvanNvbiIsInBlcnR1cmJhdGlvbl90b195b2pzb24iLCJwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIiwiZXhpc3RzX21vZGlmaWNhdGlvbiIsImNoZWNrIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19lIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tIiwiZSQwIiwiZm4iLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20kMCIsIm1hcF9leHByX3J1bGUiLCJmb2xkX2V4cHJfcnVsZSIsIm1hcF9leHByX3BlcnR1cmJhdGlvbiIsImZfYWxnIiwiZl9ib29sIiwiZm9sZF9leHByX3BlcnR1cmJhdGlvbiIsInByaW50X2xpbmsiLCJwcl9wb3J0IiwicHJfdHlwZSIsInByX2Fubm90IiwibGlua190b19qc29uIiwicG9ydF90b19qc29uIiwidHlwZV90b19qc29uIiwiYW5ub3RfdG9fanNvbiIsImxpbmtfb2ZfanNvbiIsInBvcnRfb2ZfanNvbiIsInR5cGVfb2ZfanNvbiIsImFubm90ZWRfb2ZfanNvbiIsInByaW50X2xpbmtfYW5ub3QiLCJsdHlwZXMiLCJydWxlX2ludGVybmFsX29mX2pzb24iLCJwcmludF9jb3VudGVyX3Rlc3QiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwicF9zd2l0Y2giLCJkc3RfaW5mbyIsImFnX3RhaWwiLCJvdXRfdGFpbCIsInBvcnQiLCJwb3J0cyQwIiwic3ciLCJ0b2RvJDAiLCJwb3J0cyQxIiwiaXNfbGlua2VkX29uX3BvcnQiLCJtZSIsImlzX2xpbmtlZF9vbiIsImRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIiwidHJhbnNmIiwibGlua3NfdHJhbnNmIiwiY2FuZCIsImFkZGVkIiwicmVtb3ZlZCIsImxpbmtzX3RyYW5zZiQwIiwibGlua3NfdHJhbnNmJDEiLCJkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJhZGRfaW5zdGFudGlhdGlvbl9mcmVlIiwiYWRkX3NpZGVfc2l0ZSIsInNpZGVfc2l0ZXMiLCJhZGRfZnJlZWRfc2lkZV9lZmZlY3QiLCJzaWRlX2VmZmVjdHMiLCJhZGRfYWdlbnRzX2luX2NjIiwicmVnaXN0ZXJlZF9saW5rcyIsImluc3RhbnRpYXRpb25zIiwiYWdfbCIsIndrJDAiLCJ0cmFuc2YkMCIsImhhbmRsZV9wb3J0cyIsInJfbCIsImNfbCIsImxfdCIsInNpdGVfaWQkNCIsInJfbCQwIiwibGlua3MkMiIsImxfdCQwIiwic2l0ZV9pZCQ1IiwiaXNfZXJhc2VkIiwicmVmX3BvcnRzIiwib19jY190ZXN0cyIsInRoaXNfY2NfdGVzdHMiLCJzaWRlX2VmZmVjdHNfZHN0JDEiLCJzaWRlX2VmZmVjdHNfc3JjJDEiLCJhY3Rpb25zJDMiLCJ0ZXN0cyQyIiwic2l0ZV9pZCQyIiwiaW5zdGFudGlhdGlvbnMkMCIsImFjdGlvbnMkMCIsImxpbmtzJDAiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJzaWRlX2VmZmVjdHNfc3JjJDAiLCJhY3Rpb25zJDIiLCJ0ZXN0cyQxIiwic2lkZV9lZmZlY3RzJDEiLCJhY3Rpb25zJDEiLCJzaXRlX2lkJDMiLCJzaWRlX2VmZmVjdHMkMiIsInNpdGVfaWQkMSIsInNpdGVfaWQiLCJzaXRlX2lkJDAiLCJzaWRlX2VmZmVjdHMkMCIsIndrJDEiLCJqJDEiLCJqJDIiLCJpJDMiLCJpJDQiLCJ3ayQ2IiwidHJhbnNmJDciLCJ3ayQyIiwibF90JDIiLCJ0cmFuc2YkMSIsInNpdGVfaWQkNyIsImxfdCQxIiwic2l0ZV9pZCQ2IiwiaSQyIiwiZHN0X3BsYWNlIiwid2skMyIsImNfbCQwIiwibF90JDMiLCJ0cmFuc2YkMiIsInNpdGVfaWQkOCIsInJfbCQxIiwicl9sJDIiLCJsX3QkNyIsInRyYW5zZiQ2IiwicmUkMiIsInNpdGVfaWQkMTIiLCJzaXRlX2lkJDExIiwic2l0ZV9pZCQ5IiwibF90JDUiLCJ0cmFuc2YkNCIsIndrJDQiLCJsX3QkNiIsInRyYW5zZiQ1IiwiY19sJDEiLCJzaXRlX2lkJDEwIiwiaW5jcl9vcmlnaW4iLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0iLCJjb21waWxlX21vZGVfb24iLCJwcmVjb21wX21peHMiLCJuZXdfc3dpdGNoIiwiYXV4X29uZSQwIiwicHJldmlvdXMiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiYXV4X2FncyQwIiwiaSQ1Iiwib3JfdHkiLCJwcmV2IiwiYXV4X29uZSIsImkkNiIsIm9yX3R5JDAiLCJpJDciLCJ0b2RvcyQxIiwiYXV4X2FncyIsImFsbF9taXhzIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWN0aW9ucyQ0IiwiYWNzIiwiYXkiLCJheCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwibG5rX3BhY2skMCIsImtub3duX3NyYyIsImRzdF9zIiwic3JjX2luZm8iLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsImFjY3UkMiIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsInIiLCJpbnNfZnJlc2giLCJ0ayIsInByaW50X3NuYXBzaG90IiwiZWwiLCJuYSIsIm1peCIsInByaW50X2RvdF9zbmFwc2hvdCIsIndyaXRlX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsImtleSIsInNuYXBzaG90X3Rva2VucyIsInNuYXBzaG90X2FnZW50cyIsInNuYXBzaG90X3RpbWUiLCJzbmFwc2hvdF9ldmVudCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsIndyaXRlX2RpbiIsInJlYWRfZGluIiwiaCIsImsiLCJkaW5fZW5kIiwiZGluX3J1bGVzIiwiZGluX2ZsdXhzIiwiZGluX2hpdHMiLCJkaW5fc3RhcnQiLCJkaW5fa2luZCIsInN0cmluZ19vZl9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwicHJpbnRfZG90X2RpbiIsImZsdXgiLCJkIiwidiIsImFycm93aGVhZCQwIiwiY29sb3IkMCIsInByaW50X2h0bWxfZGluIiwiYWRkX3Bsb3RfbGluZSIsIm5ld19vYnNlcnZhYmxlcyIsInBsb3QiLCJuZXdfdmFsdWVzIiwibmJyIiwiaW5pdF9wbG90IiwicGxvdF9sZWdlbmQiLCJ3cml0ZV9wbG90IiwicmVhZF9wbG90IiwicGxvdF9zZXJpZXMiLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwicHJpbnRfcGxvdF9zZXAiLCJpc190c3YiLCJwcmludF9wbG90X2xlZ2VuZCIsInByaW50X3Bsb3RfbGluZSIsInBwIiwiZXhwb3J0X3Bsb3QiLCJwcmludF93YXJuaW5nIiwicG9zIiwibXNnIiwicHIiLCJwb3MkMCIsImNyZWF0ZV9mbHV4IiwiaW5jcl9mbHV4X2ZsdXgiLCJvZl9ydWxlIiwib25fcnVsZSIsImluY3JfZmx1eF9oaXQiLCJzdG9wX2ZsdXgiLCJkaW5fZGF0YSIsImoiLCJlbXB0eSIsImluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4iLCJwYXR0ZXJuIiwibWF0Y2hpbmdzIiwiYWRkX2ludHNldF9pbl9pbnRtYXAiLCJpZCIsInNldCIsIm1hcCIsImJyZWFrX2FwYXJ0X2NjIiwiZWRnZXMiLCJtb2RfY29ubmVjdGl2aXR5X3N0b3JlIiwibmV3X2NjIiwib3JpZ2luX2NjIiwibW9kX2Nvbm4iLCJjY19pZCIsImNjX21hcCIsIm9zZXQiLCJvc2V0JDAiLCJuc2V0IiwibWVyZ2VfY2MiLCJjYzIiLCJjYzEiLCJtb2RfY29ubmVjdGl2aXR5IiwiY2NfbWFwJDAiLCJzZXQyIiwic2V0MSIsInVwZGF0ZV9yb290cyIsImlzX2FkZCIsInVuYXJ5X2NjcyIsInJvb3QiLCJ2YSIsInNldCQwIiwibnVtYmVyIiwicGF0IiwiZGVidWdfcHJpbnQiLCJkb21haW4iLCJyb290c19vZl9wYXR0ZXJucyIsInJvb3RzIiwicm9vdHNfb2ZfcGF0dGVybnMkMCIsInJvb3RfbWFwcyIsIm9mX3BhdHRlcm4iLCJwYXRfaWQiLCJvZl91bmFyeV9wYXR0ZXJuIiwicmVjZWl2ZV9tZXNzYWdlIiwiY2NzIiwiaXNfdmFsaWQiLCJudW1iZXJfb2ZfaW5zdGFuY2VzIiwicGF0cyIsIm51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fYyIsInBhdDIiLCJwYXQxIiwibWFwMSIsIm1hcDIiLCJjYyIsInBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MiLCJyYW5kb21fc3RhdGUiLCJyb290MSIsInJvb3QyIiwiZm9sZF9waWNrZWRfaW5zdGFuY2UiLCJhY2MkMiIsImFjYyQwIiwicm9vdF9vcHQiLCJhY2MkMSIsImkkMCIsIm5vX25vX25vIiwiZm9sZF9pbnN0YW5jZXMiLCJleGNwIiwic2VudF90b19maXhlZF9yb290IiwiZXhjcF9yb290Iiwic2VudF90b19leGNwX3Jvb3QiLCJ0YWIiLCJhdXgiLCJpdGhfcm9vdHMiLCJpJDEiLCJmb2xkX3VuYXJ5X2luc3RhbmNlcyIsImV4ZWNfYWxnJDAiLCJ0aW1lJDAiLCJnZXRfYWxnIiwiZ2V0X21peCIsImdldF90b2siLCJhbGciLCJzayIsImFsZyQwIiwic2skMCIsImFsZyQxIiwic2skMSIsImFsZyQyIiwib3AkMCIsInNrJDIiLCJ3aXRoX3ZhbHVlIiwiYWxnJDMiLCJuJDAiLCJubyIsInllcyIsImNvbmQiLCJleGVjX2Jvb2wkMCIsImV4ZWNfYWxnIiwiZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsIm9wJDEiLCJleGVjX2Jvb2wiLCJ5ZXMkMCIsInNrJDQiLCJzayQzIiwic2skNSIsIm4xIiwic2skNiIsIm4xJDAiLCJvcCQyIiwic2skNyIsIm9wJDMiLCJzayQ4IiwidmFsdWVfYm9vbCIsInZhbHVlX2FsZyIsImdldF9lZGdlcyIsInN1bV9pbnN0YW5jZXNfbnVtYmVycyIsImluc3RzIiwicGF0dGVybnMiLCJyZWNvbXB1dGUiLCJvdmVyd3IiLCJhY3Rpdml0eSIsInNldF9hY3Rpdml0eSIsInJ1bGUiLCJ3aXRoX3RyYWNlIiwiYWN0aXZpdHlfdHJlZSIsInVuYXJ5X3BhdHRlcm5zIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiYWx3YXlzX291dGRhdGVkIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsInZhcmlhYmxlc19vdmVyd3JpdGUiLCJ2YXJpYWJsZXNfY2FjaGUiLCJyYXRlIiwiaXNfYmxvY2tlZCIsImRlYnVnX21vZGUiLCJtYXRjaGluZyIsInRvX2Jsb2NrIiwiYWJzdHJhY3RfYWN0aW9ucyIsImluaiIsImFic3RyYWN0X3Rlc3RzIiwiaW5qJDAiLCJzZXRfZXZlbnRzX3RvX2Jsb2NrIiwicHJlZGljYXRlIiwiYWxsX2luamVjdGlvbnMiLCJ1bmFyeV9yYXRlIiwic3RhdGVfaW5zdHMiLCJwYXR0ZXJuYSIsImluc3RhbmNlIiwibWF0Y2hpbmckMCIsInJldl9yb290cyIsIm1heF9kaXN0YW5jZSIsIm5vZGVzIiwicjIiLCJyMSIsInBpY2tfYV9ydWxlX2luc3RhbmNlIiwiZnJvbV9wYXR0ZXJucyIsInByaW50Iiwic3RhdHMiLCJwcmludF9zdGF0cyIsImFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5zdGFuY2VzIiwic2lkZV9lZmZlY3RzIiwiZWRnZXMkMCIsImlkJDAiLCJlZGdlcyQxIiwiaWQkMSIsImlkJDIiLCJjY19tb2RpZiIsImVkZ2VzJDIiLCJzJDIiLCJpZCQzIiwic2lkZV9lZmZlY3RzJDAiLCJzJDMiLCJuYyIsImlkJDQiLCJjY19tb2RpZiQwIiwiZWRnZXMkMyIsInMkNCIsImlkJDUiLCJlZGdlcyQ0IiwiYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJpbmoyZ3JhcGgiLCJ0eSIsImZyZWVfaWQiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJpbmoyZ3JhcGgkMCIsIm5jJDAiLCJuJDEiLCJuJDIiLCJuYyQxIiwibmMkMiIsIm1vZGlmX2NjIiwic2lkZV9lZmZlY3RzJDEiLCJuJDMiLCJuYyQzIiwiYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmIiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb24iLCJuYyQ0IiwibmMkNSIsInMkNSIsIm5jJDYiLCJvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMiLCJ0cmFucyIsImdldF9zcGVjaWVzX29icyIsIm9icyIsInRyYWNrZWQiLCJmbiIsIm9rIiwicGlkIiwic3BlYyIsInVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMiLCJzaWRlX2VmZmVjdF9kc3QiLCJsbmtfZHN0IiwiY29uY3JldGVfcmVtb3ZlZCIsImRlbF9kZXBzIiwiZGVsX29icyIsImVkZ2VzX2FmdGVyX25lZyIsImNvbmNyZXRlX2luc2VydGVkIiwibmV3X2RlcHMiLCJuZXdfb2JzIiwic3BlY2llcyIsIm1peHR1cmUiLCJmaWxlIiwicmV2X2RlcHMiLCJtYXhfZGlzdF90b19pbnQiLCJzdG9yZV9hY3Rpdml0eSIsInN0b3JlIiwic3ludGF4X2lkIiwiY2NfdmEiLCJyYXRlJDAiLCJhY3QiLCJ1bmFyeSIsIm9sZF9hY3QiLCJ1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyIsImtub3duX3BlcnRzIiwiZGVwIiwicGVydHMiLCJtYXRjaGluZ3Nfb2ZfcnVsZSIsInJ1bGUkMCIsInBhdHRlcm5fdmEiLCJ1bmFyeV9jYW5kaWRhdGVzIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjIiwibW9kaWZpZWRfY2NzIiwicGFjayQwIiwidW5yYXRlIiwib2xkX3BhY2siLCJuZXdfcGFjayIsImlfaW5zdCIsIm5ld192IiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJDAiLCJ1bmFyeV9jYW5kaWRhdGVzJDAiLCJwYWNrIiwib3ZlcndyaXRlX3ZhciIsInRyYW5zZm9ybV9ieV9hX3J1bGUiLCJzdGF0ZSQxIiwiZXZlbnRfa2luZCIsInBhdGgkMCIsImluamVjdGVkJDAiLCJpbmplY3RlZCIsInJkZXBzIiwiZGVwcyIsInN0YXRlJDAiLCJoJDAiLCJyZW1haW5pbmdfc2lkZV9lZmZlY3RzIiwiZmluYWxfaW5qMmdyYXBoIiwiY29uY3JldGVfaW5zZXJ0ZWQkMCIsIm5ld190cmFja2VkX29ic19pbnN0YW5jZXMiLCJldiIsInRlc3RzJDAiLCJjZXZlbnQiLCJwYXRoIiwia25vd25fYWdlbnRzIiwicHJldGVzdHMiLCJwYXRoX3Rlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwiZnVsbF9jb25jcmV0ZV9ldmVudCIsImFwcGx5X2dpdmVuX2luc3RhbmNlIiwiZGlzdCIsImRpc3QkMCIsInJvb3QwIiwiYXBwbHlfZ2l2ZW5fcnVsZSIsImluc3QiLCJmb3JjZV9ydWxlIiwib3V0JDEiLCJkaXN0X29wdCIsImxvYyIsIm91dCQwIiwic25hcHNob3QiLCJyYXciLCJwaWNrX2FuX2luc3RhbmNlIiwicnQiLCJjaG9pY2UiLCJwYXR0ZXJuMSIsInBhdHRlcm4yIiwiaW5qMSIsImlual9vdXQiLCJpc19jb3JyZWN0X2luc3RhbmNlIiwiZ3JhcGgiLCJpc191bmFyeSIsImludl9yb290cyIsImFwcGx5X2luc3RhbmNlIiwibWF4Q29uc2VjdXRpdmVCbG9ja2VkIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImdyYXBoJDAiLCJjYXVzZSIsImFwcGx5X2dpdmVuIiwiZ3JhcGgkMSIsImZpbmFsX3N0ZXAiLCJjb250aW51ZSQwIiwiZG9tYWluJDAiLCJsaXN0IiwiY2FuZHMiLCJtYXRjaGVzIiwibWF0Y2hlcyQwIiwiYXV4X2FkZF90cmFja2VkIiwibmFtZSIsInRwYXR0ZXJuIiwiYWRkX3RyYWNrZWQiLCJyZW1vdmVfdHJhY2tlZCIsIm5hbWUkMCIsInRlc3RlciIsInBsaXN0IiwidGVzdGVyJDAiLCJhZGRfdHJhY2tlZF9zcGVjaWVzIiwicmVtb3ZlX3RyYWNrZWRfc3BlY2llcyIsImdldF9yYW5kb21fc3RhdGUiLCJzZW5kX2luc3RhbmNlc19tZXNzYWdlIiwiYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyIsIm91dGRhdGVkX2VsZW1lbnRzIiwiZGVidWdfcHJpbnRfaW5zdGFuY2VzIiwiY29tcGFyZV9zdG9wcyIsInAyIiwidDIiLCJwMSIsInQxIiwid2l0aF9kZWx0YV9hY3Rpdml0aWVzIiwidDAiLCJhbGdzX2RlcHMiLCJzdG9wcGluZ190aW1lcyIsInN0b3BzIiwidGltZV9kZXBlbmRlbnRfcGVydHMiLCJvYnNlcnZhYmxlc192YWx1ZXMiLCJkb19tb2RpZmljYXRpb24iLCJleHRyYSIsIm1vZGlmaWNhdGlvbiIsInByaW50X2V4cHJfdmFsIiwidGV4dCIsImciLCJleHRyYSQwIiwiZ3JhcGgkMiIsImV4dHJhJDEiLCJncmFwaCQzIiwicGV4cHIiLCJwZXhwciQwIiwiZmlsZSQwIiwicmVsIiwiZmlsZSQxIiwiZmlsZSQyIiwib3RoZXJzIiwidGhlc2UiLCJjYyQwIiwibmFtZSQxIiwicGVfZXhwciIsInBlX2ZpbGUiLCJmaWxlX29wdCIsImxpbmUiLCJjYyQxIiwiZmlsZSQzIiwiZmlsZSQ0IiwicGVydHVyYmF0ZSIsImlzX2FsYXJtJDAiLCJtaXhfY2hhbmdlZCQwIiwidGFpbCIsInBlcnQiLCJtb2RfYWxhcm0iLCJtaXhfY2hhbmdlZCQxIiwiZWZmZWN0Iiwic3RvcCIsInRhaWwkMCIsImFsaXZlIiwibWl4X2NoYW5nZWQkMiIsImRvX21vZGlmaWNhdGlvbnMiLCJpbml0aWFsaXplIiwiYmluZCIsInJldHVybiQwIiwiZ3JhcGgwIiwic3RhdGUwIiwiaW5pdF9sIiwibWdyYXBoIiwibXN0YXRlIiwiY29tcGlsZWRfcnVsZSIsInZhbHVlIiwiY3JlYXRpb25zX3NvcnQiLCJtaWRfZ3JhcGgiLCJtaXhfY2hhbmdlZCIsInBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2siLCJwZSIsIm91dHB1dHMkMCIsImNhbmQiLCJyZWd1bGFyX2xvb3BfYm9keSIsInBpY2tlZF9pbnN0YW5jZSIsInN0b3AkMCIsInByZXZfYWN0aXZpdHkiLCJhY3Rfc3RhY2siLCJhcHBsaWVkX3JpZF9zeW50YXgiLCJteV9zeW50YXhfcmRfaWQiLCJyZWdpc3Rlcl9uZXdfYWN0aXZpdHkiLCJzeW50YXhfcmRfaWQiLCJuZXdfYWN0IiwiZmwiLCJjdCIsImZvcmNlX3Rlc3RlZCIsImV4dHJhX3BlcnQiLCJuX2FjdGl2aXR5IiwiZmluYWxfc3RlcCQwIiwiYV9sb29wIiwiZHVtcElmRGVhZGxvY2tlZCIsInN0YXRlJDIiLCJyZCIsImR0JDIiLCJkdGkiLCJkdCQwIiwiZHQkMSIsInN0b3AkMSIsIm5lZWRzX2JhY2t0cmFjayIsImVuZF9vZl9zaW11bGF0aW9uIiwiaW5pdF9zdGF0ZSIsImNjX29mX3N0YXRlIiwiY2NfbWFwcyIsImFnZW50IiwiZSQwIiwid29yayQ1IiwiZm9sZF9hcml0eV9saXN0IiwiYXJpdHkiLCJhZGRfYWdlbnQiLCJ0b2RvcyIsIm1vcnBoaXNtIiwid29yayIsImFpZCIsIndvcmskMCIsIndfYWdlbnQiLCJ0b2RvcyQwIiwid29yayQxIiwidyIsImludGVybmFsIiwibSIsInRvZG9zJDMiLCJtb3JwaGlzbSQwIiwid29yayQzIiwicG9ydCIsImFpZCQwIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJmbGlwX2xhYmVsIiwic3RyIiwibm9fbW9yZV9zaXRlX29uX3JpZ2h0IiwiZXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJwIiwicCQwIiwicHJpbnRfY291bnRlcl90ZXN0IiwiZiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJwcmludF9jb3VudGVyIiwiYyIsInRlc3QiLCJkZWx0YSIsInByaW50X2FzdF9zaXRlIiwibW9kX2wiLCJtb2RfaSIsImwiLCJpIiwic3RyaW5nX2Fubm90X3RvX2pzb24iLCJmaWxlbmFtZXMiLCJzdHJpbmdfYW5ub3RlZF9vZl9qc29uIiwic3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24iLCJjb3VudGVyX3Rlc3RfdG9fanNvbiIsImNvdW50ZXJfdGVzdF9vZl9qc29uIiwieCQzIiwiYnVpbGRfcG9ydF9vZl9qc29uIiwibiIsImkkMCIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfb2ZfanNvbiIsIm4kMiIsIm4kMCIsIm4kMSIsImQiLCJ0IiwibiQzIiwicHJpbnRfYWdlbnRfbW9kIiwicHJpbnRfYXN0X2FnZW50IiwiYWdlbnRfbmFtZSIsImFnZW50X21vZF9vZl95b2pzb24iLCJhZ2VudF90b19qc29uIiwibmEiLCJhZ2VudF9vZl9qc29uIiwicyIsInMkMCIsInByaW50X2FzdF9taXgiLCJwb3MiLCJ0b19lcmFzZWRfbWl4dHVyZSIsInRvX2NyZWF0ZWRfbWl4dHVyZSIsInRvX2R1bW15X3VzZXJfc2l0ZSIsImNvdW50ZXJfbmFtZSIsInBvcnRfbmFtZSIsInN0Iiwic2kiLCJ0eSIsInRvX2R1bW15X3VzZXJfYWdlbnQiLCJzZXR1cF9saW5rIiwidmEiLCJzaXRlIiwicm93IiwibGluZSIsIm5vZGVfc2l0ZXMiLCJtaXh0dXJlX3RvX3VzZXJfZ3JhcGgiLCJvdXQiLCJhY2MiLCJpZCIsImFjYyQwIiwidmEkMCIsImFjYyQxIiwicHJpbnRfb25lX3NpemUiLCJ0ayIsIm1peCIsInByX3ZhciIsInByX3RvayIsInByX21peCIsIm5iIiwicHJpbnRfYXJyb3ciLCJiaWRpciIsInByaW50X2FzdF9hbGdfZXhwciIsInByaW50X3JhdGVzX29uZV9kaXIiLCJ1biIsImRlZiIsIm1heF9kaXN0IiwibWQiLCJwcmludF9ydWxlX2NvbnRlbnQiLCJiaWRpcmVjdGlvbmFsIiwiciIsInIkMCIsInByaW50X2FzdF9ydWxlIiwicHJpbnRfY29uZmlndXJhdGlvbiIsInByaW50X2luaXQiLCJwcmludF9hc3RfYm9vbF9leHByIiwicHJpbnRfcHJpbnRfZXhwciIsImF1eCIsImFsZyIsImUiLCJwcmludF9tb2RpZiIsInJhdyIsImZpbGUiLCJvbiIsInAkMSIsIm9uJDAiLCJwJDIiLCJrIiwicCQzIiwicCQ0Iiwib24kMSIsInByaW50X3BlcnR1cmJhdGlvbiIsInJlcCIsIm1vZGlmIiwiY29uZCIsImFsYXJtIiwicHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEiLCJydWxlX3RvX2pzb24iLCJmX21peCIsImZfdmFyIiwiciQxIiwibWl4X3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJtaXhfb2ZfanNvbiIsIm1vZGlmX29mX2pzb24iLCJleHByIiwiZmlsZSQwIiwiZmlsZSQxIiwiZmlsZSQyIiwiYiQwIiwiaWQkMCIsImIkMSIsImIkMiIsImFsZyQwIiwibWVyZ2VfaW50ZXJuYWxzIiwieSIsIm1lcmdlX3NpdGVzX2NvdW50ZXIiLCJoIiwiYyQwIiwibWVyZ2Vfc2l0ZXNfcG9ydCIsImgkMCIsInhfb3AiLCJ0JDAiLCJtZXJnZV9zaXRlcyIsIm5hJDAiLCJtZXJnZV9hZ2VudHMiLCJtZXJnZV90b2tlbnMiLCJ0b2siLCJvIiwic2lnX2Zyb21faW5pdHMiLCJ0b2tzIiwiYWdzIiwic2lnX2Zyb21fcnVsZSIsInRva3MkMSIsImFncyQwIiwic2lnX2Zyb21fcnVsZXMiLCJzaWdfZnJvbV9wZXJ0cyIsImluZmVyX2FnZW50X3NpZ25hdHVyZXMiLCJzcGxpdF9taXh0dXJlIiwicmhzIiwibGhzIiwiYWciLCJwYWNrIiwiaW50ZiIsInBvcyQwIiwiaW50ZnIiLCJpbnRmbCIsInJyIiwibGwiLCJjb21waWxfdG9fanNvbiIsImZpbGVzIiwibWFwIiwidmFyX3RvX2pzb24iLCJwb3N0IiwicHJlIiwiY29tcGlsX29mX2pzb24iLCJ2YXJfb2ZfanNvbiIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwiYXN0IiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsImxiIiwiY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCIsImxzMSIsImxzMiIsImNzIiwiZHMiLCJ1cGRhdGVfcmF0ZSIsImNvdW50ZXJfdmFyX3ZhbHVlcyIsInVwZGF0ZV9ib29sX2V4cHIiLCJhMiIsImsyIiwiYTEiLCJrMSIsIm9wIiwiayQwIiwib3AkMCIsImEyJDAiLCJrMiQwIiwiYTEkMCIsImsxJDAiLCJvcCQxIiwidXBkYXRlX2V4cHIiLCJhMyIsImszIiwiYTEkMSIsImsxJDEiLCJrMiQxIiwiYTEkMiIsImsxJDIiLCJjb3VudGVyc19tYXRjaGluZ19zIiwibmFtZV9tYXRjaCIsImhhc19jb3VudGVycyIsImNvbXBpbCIsInNpdGVzIiwic3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zIiwid2FybmluZyIsImRlYnVnX21vZGUiLCJzaWduYXR1cmVzIiwicnVsZXMkMSIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsImlkcyIsImNvdW50ZXJfZGVmcyIsInZhbHVlIiwiYW5ub3QiLCJ2YWx1ZSQwIiwidmFyX25hbWUiLCJhbm5vdCQwIiwiY291bnRlcl9kZWYiLCJjb3VudGVyIiwiY291bnRlcl9kZWx0YSIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsImFzdF9hZ2VudCIsInNpdGVzJDAiLCJzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJ2YXJfdmFsdWVzIiwidXBkYXRlX29wdF9yYXRlIiwidXBkYXRlX3BhaXJfcmF0ZSIsInIyIiwicjEiLCJjaGVja19zeW50YXgiLCJwcmVwYXJlX2xoc19ydWxlIiwicnNpdGVzIiwicm5hIiwibHNpdGVzJDAiLCJsbmEiLCJwcmVwYXJlX3NpdGUiLCJ0bCIsImhkIiwiY291bnRlcnMiLCJyc2l0ZSIsImxzaXRlcyIsImxhZ2VudCQwIiwibHNpdGVzJDEiLCJsYWdlbnQiLCJydWxlcyIsInJ1bGUiLCJjb250ZW50IiwicnVsZV9hbm5vdGVkIiwicnVsZV9uYW1lIiwibWl4X2xocyIsImNvbnRlbnQkMCIsInJfa19vcF91bl9yYXRlcyIsInJfa3VuX3JhdGVzIiwiZXhwcnNfZnJvbV9yYXRlcyIsImF1eF9leHByIiwiZXhwciQwIiwiZXhwciQxIiwiZXhwciQyIiwiZXhwciQzIiwiYWNjJDIiLCJhdXhfYm9vbCIsImV4cHJfb3B0IiwibWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92Iiwia19kZWYiLCJrX3VuIiwia19vcCIsImtfb3BfdW4iLCJsaHMkMCIsIm5ld19ydWxlX25hbWUiLCJjb3VudGVyc19pZHNfYXNfc3RyaW5nIiwibG9jYWxpdHkiLCJydWxlX25hbWVfc3RyaW5nIiwicnVsZXMkMCIsImxhYmVsIiwiYWRkX2luY3IiLCJmaXJzdF9saW5rIiwibGFzdF9saW5rIiwiZXF1YWwiLCJzaWdzIiwiaXNfZmlyc3QiLCJpc19sYXN0IiwiaiIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInBvcnRfYSIsInBvcnRfYiIsInBvcnRzIiwiaW50ZXJuYWxzIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyYXdfaW5jciIsImxpbmtfaW5jciIsImFnX2luZm8iLCJsaW5rIiwibG9jIiwiY3JlYXRlZCIsInJhX2VyYXNlZCIsImRzdCIsInJhX3R5cGUiLCJyYV9wb3J0cyIsImJlZm9yZV9zd2l0Y2giLCJyYV9pbnRzIiwicmFfYWdlbnQiLCJlcmFzZV9pbmNyIiwiaW5jcnMiLCJpbmNyX3MiLCJpbmNyIiwicnVsZV9hZ2VudCIsImNvbXBpbGVfY291bnRlcl9pbl9ydWxlIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwicF9pZCIsInN0YXJ0X2xpbmtfbmIiLCJhY2NfaW5jcnMiLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJpbmNyc19jcmVhdGVkJDAiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsInJ1bGVfYWdlbnRfbWl4IiwicmF3X21peCIsImNvdW50ZXJzX3BlcnR1cmJhdGlvbnMiLCJhc3Rfc2lncyIsImFnX3R5IiwiZmlsZW5hbWUiLCJzdG9wX21lc3NhZ2UiLCJtb2RzIiwiYWdfaWQiLCJzaWduIiwiYXJpdHkiLCJjX25hIiwiY19pZCIsIm1heF92YWwiLCJtYXhfdmFsJDAiLCJ2YWxfb2ZfY291bnRlciIsIm1ha2VfY291bnRlciIsIm5hbWUiLCJhZGRfY291bnRlcl90b19jb250YWN0X21hcCIsImFkZF9saW5rX2NvbnRhY3RfbWFwIiwiYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyIsImFzdF9jb3VudGVycyIsInJhX2NvdW50ZXJzIiwicHNldCIsInBzZXQkMCIsImFubm90YXRlX2VkaXRfY291bnRlcnMiLCJhbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYiLCJsYyIsInJjIiwicmNfciIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwiYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyIsIm1pbiIsImNfbmFtZSIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IiwiYnVpbGRfbF90eXBlIiwiZHN0X3R5IiwiZHN0X3AiLCJ0eV9pZCIsImNvbnRhY3RfbWFwIiwic3R5Iiwic3AiLCJkdHkiLCJkcCIsImNvbnRhY3RfbWFwJDAiLCJzbCIsImRsIiwiZGkiLCJydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiIsInNvcnQiLCJ3YXJuaW5nX2Zvcl9jb3VudGVycyIsInNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSIsImJ1aWxkX2xpbmsiLCJ3YXJuX29uX3N3YXAiLCJsaW5rc190d28iLCJsaW5rc19vbmUiLCJvbmUkMCIsIm5ld19saW5rIiwib25lIiwic3dpdGNoJDEiLCJkc3RfaWQiLCJtYWludGFpbmVkIiwibGlua19zd2FwIiwiYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCIsInN5bnRheF92ZXJzaW9uIiwicl9lZGl0X3N0eWxlIiwibGlua3NfYW5ub3QiLCJjb3VudHMiLCJsYW5ub3QiLCJwX3BvcyIsInBvcyQ1IiwicG9zJDEiLCJwb3NfbGluayIsInBvcyQyIiwicG9zJDMiLCJsYW5ub3QkMCIsInBvc19saW5rJDAiLCJwb3MkNCIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuIiwicmhzX2xpbmtzIiwibGhzX2xpbmtzIiwicG9zX2oiLCJyaHNfbGlua3MkMCIsImFubm90YXRlX2FnZW50X3dpdGhfZGlmZiIsImxwIiwicnAiLCJyZWdpc3Rlcl9wb3J0X21vZGlmIiwibG5rMSIsInJoc19saW5rcyQxIiwicG9zJDYiLCJuYSQxIiwicmhzX2xpbmtzJDIiLCJwb3MkNyIsImkkMiIsImxoc19saW5rcyQyIiwidmEkMSIsImxoc19saW5rcyQwIiwibGhzX2xpbmtzJDEiLCJyaHNfbGlua3MkMyIsInBvc19saW5rJDEiLCJkc3RfdHkkMCIsImRzdF9wJDAiLCJwb3MkMTEiLCJuYSQ0IiwicG9zJDgiLCJuYSQyIiwicG9zJDkiLCJpJDMiLCJwb3MkMTAiLCJuYSQzIiwicmhzX2xpbmtzJDQiLCJkc3RfdHkkMSIsImRzdF9wJDEiLCJwb3MkMTIiLCJpJDQiLCJyaHNfbGlua3MkNSIsInJlZ2lzdGVyX2ludGVybmFsX21vZGlmIiwiaW50MSIsInZhcG9zIiwidmFwb3MkMCIsInZhJDIiLCJhbm5vdGVkIiwicnAkMCIsImFubm90ZWQkMCIsInJwX3IiLCJzZXBhcmF0ZV9zaXRlcyIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJhZ190eSQwIiwibGFnZW50X25hbWUkMCIsImxocyQyIiwibG1vZCQwIiwibHBvcyQwIiwicmhzJDMiLCJyYSQxIiwibWl4JDIiLCJsaW5rc19hbm5vdCQ0IiwicmhzJDIiLCJybW9kJDAiLCJyYWdfcyQwIiwicnBvcyQwIiwicmFnZW50X25hbWUkMCIsImxhZ19jJDAiLCJsYWdfcCQwIiwicmFnX2MkMCIsInJhZ19wJDAiLCJsaW5rc19hbm5vdCQzIiwibWl4JDEiLCJsaHMkMyIsInJocyQ0Iiwicm1vZCQxIiwiY291bnRzJDAiLCJpbnRmJDAiLCJjbWl4JDEiLCJsaW5rc19hbm5vdCQ1IiwicmhzJDUiLCJhbm5vdGF0ZV9lZGl0X21peHR1cmUiLCJpc19ydWxlIiwibmV3cyIsInNjYW5fcG9ydCIsIm1vZGlmJDAiLCJtb2RpZiQxIiwibW9kaWYkMiIsIm1vZGlmJDMiLCJ2YSQzIiwibW9kaWYkNCIsImlfaWQiLCJtaXh0dXJlX29mX2FzdCIsImNvbnZlcnRfdG9rZW5fbmFtZSIsInRrX25hbWUiLCJhbGdfZXhwcl9vZl9hc3QiLCJhbGdzIiwibWF4X2FsbG93ZWRfdmFyIiwiYSQwIiwibGFiIiwibm8iLCJ5ZXMiLCJib29sX2V4cHJfb2ZfYXN0IiwidGtfbmFtZSQwIiwiYXN0JDAiLCJ5JDAiLCJwcmludF9leHByX29mX2FzdCIsImFzc2VtYmxlX3J1bGUiLCJyX2NyZWF0ZWQiLCJyX21peCIsImFsIiwicl9kZWx0YV90b2tlbnMiLCJyX3JhdGUiLCJyX3VuX3JhdGUiLCJkaXN0IiwidW5fcmF0ZSIsInVuX3JhdGUkMCIsIm1vZGlmX2V4cHJfb2ZfYXN0IiwiYXN0X3J1bGUiLCJydWxlX2NvbnRlbnQiLCJjcmVhdGVkX21peCIsIm1peHR1cmUiLCJydWxlX2NvbnRlbnQkMCIsImNyZWF0ZWRfbWl4JDAiLCJtaXh0dXJlJDAiLCJob3ciLCJyZWwiLCJwJDUiLCJhZGRfdW5fdmFyaWFibGUiLCJyYXRlX3ZhciIsImskMSIsImFjY191biIsImFnZW50X3NpZ3Nfb2ZfYWdlbnRfc2lnc193aXRoXyIsImJ1aWxkX2NvbnRhY3RfbWFwIiwiYWdlbnRfc2lnc19wcmUiLCJzaXplX3NpZ3MiLCJhZ19uYW1lIiwic2l0ZV9uYW1lX2FnMSIsInNpdGVfc2lnIiwic2l0ZV9saW5rcyIsImFnMl9uYW1lIiwic2l0ZV9uYW1lIiwic2l0ZV9uYW1lX2FnMiIsImFnMl9pZCIsInNpdGVfaWQiLCJzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayIsImluaXRfb2ZfYXN0IiwiaW5pdHMiLCJpbmkiLCJ3aG8iLCJjb21waWxfb2ZfYXN0IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWwkMCIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cyIsImFjYzEiLCJydWxlX2RlZiIsImFjYzIiLCJhZ2VudF9saXN0IiwiYWNjMyIsImFnZW50Iiwic2l0ZV9saXN0IiwiYWNjNCIsImNvdW50ZXJfbmFtZTIiLCJhZ2VudF9uYW1lMiIsImFnZW50X21vZCIsImNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tXyIsImFnZW50X25hbWVfY291bnRlciIsIm5ld19jb3VudGVyX3NpdGVzIiwic3VtX2JvdW5kc19yZWYiLCJjb3VudGVyX29yaWciLCJjb3VudGVyX25hbWUkMCIsImluZl9ib3VuZCIsInN1cF9ib3VuZCIsInJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQiLCJjbHRlX3ZhbHVlX29yX25vbmUiLCJuZXdfc2l0ZSIsIm9yaWdpbmFsX2NvdW50ZXJfc2l0ZSIsImludmVydGVkX2NvdW50ZXJfc2l0ZSIsInNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyIsImFkZGVkX3NpdGVzIiwibmV3X3NpdGVfbGlzdCIsInJld3JpdGUiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJpbml0IiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjY19jb3VudGVyc19wZXJfYWdlbnQiLCJhY2Nfc2lncyIsImFjY19jb3VudGVyX25hbWVzIiwiYWNjX3NpdGVfc2lncyIsImFjY19saW5rcyIsImNvdW50ZXJzX2FnZW50Iiwic2l0ZV9zaWdzX3ByZV9uYW1lZGRlY2xzIiwic2l0ZV9zaWdzX25kIiwiY291bnRlcnNfcGVyX2FnZW50Iiwic2lnc193aXRoX2xpbmtzX2FzX2xpc3RzIiwic2lnc193aXRoX2xpbmtzX2FzX2xpc3RzJDAiLCJjb3VudGVyX2FnZW50X25hbWUiLCJhX3BvcnRfbmFtZSIsImJfcG9ydF9uYW1lIiwiYV9wb3J0X3NpZyIsImJfbGlua3MiLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX3BvcnRfc2lnIiwic2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQiLCJhZ2VudF9zaWdzIiwiYWdlbnRzX3NpZyIsImFjYyQzIiwicl9wb3MiLCJsYWJlbF9vcHQiLCJwcmludGVyIiwic2V0Iiwic2V0JDAiLCJzZXQkMSIsInJ1bGVfbGFiZWwiLCJydWxlX25hbWVzIiwia19kZWYkMCIsImtfZGVmJDEiLCJyYXRlX3ZhciQwIiwicmF0ZV92YXJfdW4iLCJjcmVhdGVkX21peCQxIiwibWl4dHVyZSQxIiwicmF0ZV92YXJfdW4kMCIsImtfb3BfdW4kMCIsImFjY191biQwIiwiY3JlYXRlZF9taXgkMiIsIm1peHR1cmUkMiIsImNsZWFuZWRfcnVsZXMiLCJleHRyYV92YXJzIiwidmFycyIsInZhciQwIiwiYWNjX3ZhcnMiLCJvdmVyd3JpdGVfdmFyc19yZW1haW5pbmciLCJvdGhlcl9vdmVyd3JpdGVfdmFycyIsIm1hdGNocyIsInYiLCJhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3AiLCJyZXZfYWxnX3ZhcnMiLCJ2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIiwiYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyIsImFsZ192YXJzX2FycmF5IiwiYWxnX3ZhcnNfZmluZGVyIiwidG9rZW5fbmFtZXMiLCJ0b2tlbnNfZmluZGVyIiwidXBfdmFycyQwIiwidXBfdmFycyIsInVwZGF0ZWRfYWxnX3ZhcnMiLCJwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycyIsInBlcnR1cmJhdGlvbnMiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsImluaXQkMCIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwiYWRkX3BvcyIsInJoc19wb3MiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwiaW50ZXJuYWxfbWVtb3J5IiwiYWRkIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsIl81IiwiXzMiLCJfNyIsIl80IiwiXzgiLCJhbiIsInBlbmQiLCJfOSIsIl8xMSIsInoiLCJybV90b2tlbiIsImFkZF90b2tlbiIsImRlbHRhX3Rva2VuIiwiXzYiLCJrYmFjazEiLCJrYmFjayIsInBvc19lbmQiLCJlcGF0IiwicGF0IiwicGVuZHAiLCJwYXVzZSIsImVmZiIsInl5dGFibGVzIiwibW9kZWwiLCJsZXhmdW4iLCJsZXhidWYiLCJpbnRlcmFjdGl2ZV9jb21tYW5kIiwic3RhbmRhbG9uZV9lZmZlY3RfbGlzdCIsInN0YW5kYWxvbmVfYm9vbF9leHByIiwiYXBwZW5kX3RvX2FzdF9jb21waWwiLCJyZXZfaW5zdHIiLCJzdHJfcG9zIiwidm9sX3BhcmFtIiwidm9sIiwidm9sX3R5cGUiLCJpbml0X3QiLCJ2YXIkMSIsImxibCIsIm9wdCIsImVmZmVjdCIsInZhbHVlX2xpc3QiLCJwYXJhbV9uYW1lIiwicnUiLCJvY2FtbF9sZXhfdGFibGVzIiwia2V5d29yZHMiLCJ0b2tlbiIsIm9jYW1sX2xleF90b2tlbl9yZWMiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwiaW5saW5lX2NvbW1lbnQiLCJzJDEiLCJsYWIkMCIsInMkMiIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsIngkNCIsImFjYyQ3IiwieCQ1IiwiYWNjJDgiLCJhY2MkOSIsImVyciIsImVyciQwIiwiY29tcGlsZSIsImxvZ2dlciIsImZpYyIsImNvbXBpbCQwIiwibXNnIiwid3JpdGVfY2F0YWxvZ19pdGVtIiwib2IiLCJwb3NpdGlvbiIsInJlYWRfY2F0YWxvZ19pdGVtIiwia2V5IiwiY291bnQiLCJjcmVhdGUiLCJwdXQiLCJyYW5rIiwiY2F0YWxvZyIsImFpZSIsImZpbGVfY3JlYXRlIiwiZmlsZV9tb3ZlIiwiZmlsZV9wYXRjaCIsImZpbGVfZGVsZXRlIiwiZmlsZV9nZXQiLCJwYXJzZSIsInlpZWxkJDAiLCJjb21waWxlJDAiLCJpbnN0cyIsImV4biIsInJhbmdlIiwibWVzc2FnZSIsIm1lc3NhZ2UkMCIsInRleHQiLCJvdmVyd3JpdGUiLCJpdCIsInN0YXJ0X3J1bGUiLCJzcGFjZV9jaGFycyIsInJlc2V0X2VvZiIsInRva2VuJDAiLCJyZWFkX2xhYmVsIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJvY2FtbF9sZXhfc3RhdGUkMyIsInN0ciQwIiwiY2hhcl9saXN0IiwicmVwbHkiLCJ3cml0ZV92Iiwid3JpdGVfY2F0YWxvZ19pdGVtcyIsImxpZnRfYW5zd2VyIiwib25fbWVzc2FnZSIsImN1cnJlbnRfaWQiLCJtc2dfaWQiLCJvdXQkNCIsInBvc2l0aW9uJDAiLCJpZCQ0IiwiY29udGVudCQxIiwib3V0JDMiLCJpZCQzIiwib3V0JDIiLCJpZCQyIiwib3V0JDEiLCJpZCQxIiwib3V0JDAiLCJhbnN3ZXIiLCJtc2dfaWQkMCIsIm1zZ19pZCQxIiwibXNnX2lkJDIiLCJlJDAiLCJjb21waWxlX21vZGVfb24iLCJkb21haW4iLCJkb21haW4kMCIsImRvbWFpbiQxIiwiYSQxIiwiYSQyIiwiZG9tYWluJDIiLCJkb21haW4kMyIsIm9yaWdpbiIsImNjcyIsImRvbWFpbiQ0Iiwib3V0X2NjcyIsImNvbmQkMCIsImRvbWFpbiQ1IiwieWVzJDAiLCJkb21haW4kNiIsIm5vJDAiLCJkb21haW4kNyIsImEkMyIsImEkNCIsImNvbXBpbGVfcHVyZV9hbGciLCJjb21waWxlX2FsZyIsImNvbXBpbGVfYm9vbCIsInJ1bGVzX29mX2FzdCIsImRlcHNfbWFjaGluZXJ5Iiwic3ludGF4X3JlZiIsImFsZ19leHByIiwiZGVsdGFfdG9rcyIsImRlcHMiLCJjcnAiLCJyYXRlIiwiZCQwIiwiZCQxIiwiZGlzdCQwIiwidW5yYXRlIiwidW5hcnlfaW5mb3MiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwiZGVwc19hbGdzIiwidXIiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJpbml0X2wiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImUkMSIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImVycm9yX21zZyIsImFnZW50IiwiY29udGFjdG1hcCIsImFjY3VyYWN5X3N0cmluZyIsImRlYWRfcnVsZXMiLCJkZWFkX2FnZW50cyIsIm1hcCIsImludGVyZmFjZSQwIiwic2l0ZSIsInN0YXRlc2xpc3QiLCJzaXRlbmFtZSIsInNpdGV0eXBlIiwic2l0ZWxpbmtzIiwic2l0ZXN0YXRlcyIsInNpdGVub2RlbmFtZSIsInNpdGVub2RlaWQiLCJzaXRlbm9kZXNpdGVzIiwiaHlwIiwicmVmaW5lbWVudCIsImRvbWFpbl9uYW1lIiwicmVmaW5lbWVudHNfbGlzdCIsInJlZmluZW1lbnRfbGVtbWFzIiwicnVsZV9pZCIsImFnZW50X2lkIiwibGFiZWwiLCJhc3QiLCJwb3NpdGlvbiIsInBvc2l0aW9uX2xpc3QiLCJ2YXJpYWJsZSIsInJ1bGUiLCJkaXJlY3QiLCJzaWRlX2VmZmVjdCIsInNvdXJjZSIsInRhcmdldF9tYXAiLCJ0YXJnZXQiLCJsb2NhdGlvbl9wYWlyX2xpc3QiLCJyaHMiLCJsaHMiLCJpbmZsdWVuY2VtYXAiLCJub2Rlc29maW5mbHVlbmNlbWFwIiwid2FrZXVwIiwiaW5oaWJpdGlvbiIsIm5vZGVzIiwidG90YWxfc3RyaW5nIiwiZndkX3N0cmluZyIsImJ3ZF9zdHJpbmciLCJvcmlnaW4iLCJkaXJlY3Rpb24iLCJydWxlX2hpZGRlbiIsInNjYyIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiY29udGFjdG1hcHNjYyIsImNvdW50ZXIiLCJpbmYiLCJzdXAiLCJrZXkiLCJsb2NhbGl0eSIsImFjY3VyYWN5X2xldmVscyIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwicmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyIsImZyZWUiLCJ3aWxkY2FyZCIsImJvdW5kIiwiYm9uZF9pZCIsImJvdW5kX3RvIiwiYmluZGluZ190eXBlIiwicHJvcCIsImJpbmQiLCJiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wiLCJmcmVlX2JhY2tlbmRfc3ltYm9sIiwibWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zIiwid2lsZGNhcmRfYmFja2VuZF9zeW1ib2wiLCJib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm8iLCJpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmEiLCJpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2UiLCJiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW4iLCJiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmQiLCJpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmQiLCJjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3kiLCJvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm8iLCJvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm8iLCJwbHVzX2luZmluaXR5X3N5bWJvbCIsIm1pbnVzX2luZmluaXR5X3N5bWJvbCIsImFjY3VyYWN5X3RvX3N0cmluZyIsImFjY3VyYWN5X3RvX2pzb24iLCJ4IiwiYWNjdXJhY3lfb2Zfc3RyaW5nIiwiYWNjdXJhY3lfb2ZfanNvbiIsImpzb24iLCJjb21wYXJlIiwiYSIsImIiLCJwcmludCIsImYiLCJzaXRlX3RvX2pzb24iLCJwIiwibCIsInkiLCJ4ciIsInhsIiwidHkiLCJzaSIsImkiLCJzaXRlX29mX2pzb24iLCJsJDAiLCJqc29uJDEiLCJzaXRlX25hbWUiLCJqc29uJDIiLCJwb3J0X2xpbmtzIiwianNvbiQwIiwicG9ydF9zdGF0ZXMiLCJzaXRlX3R5cGUiLCJzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiIsInNpdGVfbm9kZV90b19qc29uIiwibm9kZSIsImxpc3QiLCJzaXRlX25vZGVfb2ZfanNvbiIsIm5vZGVfaWQiLCJub2RlX3R5cGUiLCJub2RlX3NpdGVzIiwiY29udGFjdF9tYXBfdG9fanNvbiIsImNvbnRhY3RfbWFwIiwiY29udGFjdF9tYXBfb2ZfanNvbiIsInN0cmluZ19wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvXyIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mXyIsInNjY190b19qc29uIiwic2NjX2FjYyIsImNtX2FjYyIsInNjY19vZl9qc29uIiwicnVsZV90b19qc29uIiwiZCIsImpzb25fdG9fcnVsZSIsInMiLCJ2YXJfdG9fanNvbiIsInZhciQwIiwianNvbl90b192YXIiLCJpbmZsdWVuY2Vfbm9kZV90b19qc29uIiwiaSQwIiwiaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwibG9jIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX3RvX2pzb24iLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIiwicG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2VfIiwiciIsInYiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiciQwIiwiZHVtcF9sb2NhdGlvbiIsImZtdCIsImludCQwIiwiaW50JDEiLCJkdW1wX2xvY2F0aW9uX3BhaXIiLCJkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCIsInN0cmluZ19vZl9sYWJlbF9saXN0IiwibG9jYXRpb25fdG9fanNvbiIsImxvY2F0aW9uX29mX2pzb24iLCJvcHQiLCJzdGgiLCJoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibm9kZXNfbGlzdF90b19qc29uIiwibm9kZXNfbGlzdF9vZl9qc29uIiwiaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsIm5vZGVzX2xpc3QiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwJDAiLCJvcmlnaW5fb3B0IiwiZndkIiwiYndkIiwidG90YWwiLCJhY2N1cmFjeSIsImluZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImVycm9yX21zZyQwIiwib3JpZ2luJDAiLCJ4JDAiLCJsJDEiLCJkZWFkX3J1bGVzX3RvX2pzb24iLCJkZWFkX3J1bGVzX29mX2pzb24iLCJqc29uX3RvX2FnZW50X2tpbmQiLCJhZ2VudF9raW5kX3RvX2pzb24iLCJhZ2VudF9raW5kIiwianNvbl9vZl9kZWFkX2FnZW50cyIsImpzb25fdG9fZGVhZF9hZ2VudHMiLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24iLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24iLCJsZW1tYV90b19qc29uIiwic2l0ZV9ncmFwaF90b19qc29uIiwibGVtbWFfb2ZfanNvbiIsInNpdGVfZ3JhcGhfb2ZfanNvbiIsImdldF9oeXAiLCJoIiwiZ2V0X3JlZmluZW1lbnQiLCJzdHJpbmdfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJqIiwiYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uIiwiYm9uZF9pbmRleCIsImNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiIsImludGVyZmFjZV9saWdodF90b19qc29uIiwiaW50ZiIsImMiLCJrIiwiaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiIsImludGVyZmFjZV9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbiIsImxlbW1hc19saXN0X3RvX2pzb25fZ2VuIiwiaW50ZXJmYWNlX3RvX2pzb24iLCJjb25zdHJhaW50cyIsImxlbW1hc19saXN0X3RvX2pzb24iLCJyYXdfdmVyc2lvbl9zdHJpbmciLCJleHRyYWN0X3RhZ19yZSIsImdyIiwidmVyc2lvbl9zdHJpbmciLCJ2ZXJzaW9uX21zZyIsInZlcnNpb25fa2FzYV9mdWxsX25hbWUiLCJ2ZXJzaW9uX2thZGVfZnVsbF9uYW1lIiwidGtfaXNfaW5pdGlhbGl6ZWQiLCJleHBlcnRfbW9kZSIsImNvbXBhcmUiLCJkIiwiYyIsImIiLCJhIiwiY21wIiwicHJpbnQiLCJmbXQiLCJtYXhfbGV2ZWxfb3B0IiwiYiQwIiwic2hvd19sZXZlbCIsImx2bCIsImFjY2VwdF9sZXZlbF9kaXNwbGF5IiwiYWNjZXB0X2xldmVsX3VzZSIsIm5va2V5IiwiayIsImN1dF9saXN0IiwicyIsImRvaXQiLCJhY2N1bSIsInBvcyIsImkiLCJwIiwibCIsImwkMCIsImkkMCIsIm9yZGVyIiwib3JkZXJlZCIsImNhdCIsIm9sZF9sdmwiLCJhc3NvIiwiY2hlY2siLCJvcHRzIiwia2V5IiwidCIsImYiLCJwcmludF9tc2ciLCJwcmludF9vcHRpb24iLCJ2ZXJib3NlIiwibXNnIiwic3BlYyIsImtleTIiLCJyIiwiciQwIiwiciQxIiwiciQyIiwiciQzIiwicyQwIiwiciQ0IiwiciQ1IiwibGlzdCIsImxpc3QkMCIsInRhaWwiLCJoMiIsImgxIiwiciQ2IiwiciQ3IiwidiIsInIkOCIsInIkOSIsImwkMSIsInByaW50X2hlbHAiLCJoZWFkZXIiLCJuYiIsImhlYWRlciQwIiwibHZsJDAiLCJsdmxfb3B0IiwieCIsInZlcmJvc2UkMCIsInZlcmJvc2UkMSIsInBhcnNlX2xpc3QiLCJ3aXRoX3RrIiwidGl0bGUiLCJsb25nX2hlbHAiLCJzaG9ydF9oZWxwIiwic2hvd192ZXJzaW9uIiwiYWNjdW0kMCIsInJlbSIsIm9wdCIsIm9wdCQwIiwiYWEiLCJyZW0kMyIsInJlbSQyIiwicmVtJDEiLCJ2JDAiLCJyZW0kNyIsInJlbSQ1IiwicmVtJDQiLCJyZW0kNiIsInJlbSQ4IiwidiQxIiwicmVtJDkiLCJ2JDIiLCJyZW0kMTMiLCJyZW0kMTEiLCJyZW0kMTAiLCJyZW0kMTIiLCJ2JDMiLCJyZW0kMTciLCJyZW0kMTUiLCJyZW0kMTQiLCJyZW0kMTYiLCJ2JDQiLCJyZW0kMjIiLCJyZW0kMjAiLCJyZW0kMTgiLCJ2JDUiLCJyZW0kMTkiLCJyZW0kMjEiLCJ2JDYiLCJyZW0kMjUiLCJyZW0kMjQiLCJyZW0kMjMiLCJ2JDciLCJyZW0kMjkiLCJyZW0kMjciLCJyZW0kMjYiLCJyZW0kMjgiLCJyZW0kMzAiLCJ2JDgiLCJyZW0kMzEiLCJ2JDkiLCJyZW0kMzIiLCJyJDEwIiwieSIsInJlbSQzMyIsInYkMTAiLCJyZW0kMzQiLCJsJDIiLCJyZW0kMzUiLCJ2JDExIiwicmVtJDM2IiwicmVtJDAiLCJmaWxlbmFtZXMiLCJ4JDAiLCJwYXJzZSIsImRlZiIsImFyZ3MiLCJkYXRhX3NldCIsIm91dHB1dCIsInNlbWFudGljcyIsImludGVncmF0aW9uX3NldHRpbmdzIiwibW9kZWxfcmVkdWN0aW9uIiwic3RhdGljX2FuYWx5c2lzIiwiZGVidWdfbW9kZSIsImRlZmF1bHQkMCIsImRlZmF1bHRfZ3VpIiwiZG9fdmVyc2lvbiIsImRvX2dsdXR0b255IiwiY29weV9mcm9tX2d1aSIsInRfZ3VpIiwib3B0aW9uc19nZW4iLCJvcHRpb25zIiwib3B0aW9uc19ndWkiLCJlIiwiYXV4IiwiYWNjdSIsImFjY3UkMCIsInZhcl92YWwiLCJhY2N1JDEiLCJmaWMiLCJ0aW1lIiwicG9pbnROdW1iZXJWYWx1ZSIsIm91dHB1dERhdGFGaWxlIiwib3V0cHV0RGlyZWN0b3J5IiwibSIsImNyZWF0ZSIsImJhcl9zaXplIiwiYmFyX2NoYXIiLCJmb3IkMCIsInBwX25vdF9udWxsIiwicHBfdGV4dCIsImRlbHRhX3QiLCJ0X3IiLCJldmVudCIsImVfciIsInN0cmluZyIsImR0IiwiYXV4X3RpY2siLCJzb21ldGhpbmciLCJuIiwic29tZXRoaW5nJDAiLCJuJDAiLCJuJDEiLCJ0aWNrIiwiZWZmaWNpZW5jeSIsIm5fdCIsIm5fZSIsInJ1biIsImNvbXBsZXRlX3Byb2dyZXNzX2JhciIsInQkMCIsIm91dHB1dERpck5hbWUiLCJtYXJzaGFsaXplZE91dEZpbGUiLCJjZmxvd0ZpbGVOYW1lIiwiZmx1eEZpbGVOYW1lIiwibWtfZGlyX3IiLCJvdmVyd3JpdGVfcGVybWlzc2lvbiIsInBhdGgiLCJvcGVuX291dCIsIm9wZW5fb3V0X2ZyZXNoIiwibmFtZSIsImNvbmNhdF9saXN0IiwiZmFjdWx0YXRpdmUiLCJleHQiLCJuYW1lJDAiLCJ0bXBfbmFtZSIsImJhc2UiLCJvdmVyX2ZsYWciLCJmbGFncyIsImJhc2UkMCIsInNldCIsImV4dF9vcHQiLCJmbmFtZSIsImNoZWNrX25vdF9leGlzdHMiLCJmaWxlIiwiZmlsZSQwIiwiYW5zd2VyIiwic2V0Q2hlY2tGaWxlRXhpc3RzIiwiYmF0Y2htb2RlIiwib3V0cHV0RmlsZSIsIndpdGhfY2hhbm5lbCIsInN0ciIsImRlc2MiLCJ3cmFwX2Zvcm1hdHRlciIsImZyIiwic2V0X2RpciIsImdldF9kaXIiLCJzZXRfbWFyc2hhbGl6ZWQiLCJ3aXRoX21hcnNoYWxpemVkIiwic2V0X2NmbG93Iiwid2l0aF9jZmxvd19maWxlIiwib3Blbl90YXNrc19wcm9maWxpbmciLCJvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm8iLCJzZXRfZmx1eCIsIm5tZSIsIndpdGhfZmx1eCIsInN0ciQwIiwid2l0aF9zbmFwc2hvdCIsInNpemUiLCJib3JkZXIkMCIsImJvcmRlciIsImR1bW15X3ZhbHVlcyIsImNvbG9ycyIsInN0eWxlcyIsImdyYWR1YXRpb25fc3RlcCIsImRyYXdfbCIsIm1pbl9ncmFkX2wiLCJ2YV9taW4iLCJ2YV9tYXgiLCJuYnJfZGVsdGEiLCJkZWx0YV92YSIsIm5iX2dyYWQiLCJleGFjdF9zdGVwIiwiZGVsdGFfZ3JhZCIsInZhX21pbiQwIiwidmFfbWF4JDAiLCJkcmF3IiwiaCQwIiwidyQwIiwiYl9oIiwiemVyb193IiwiYl9vcCIsImgiLCJ3IiwidmEkMCIsInRfbWF4IiwicSIsInZhIiwidmFfbWF4JDEiLCJ2YV9taW4kMiIsInRfbWF4JDEiLCJkYXRhX3ciLCJkYXRhX2giLCJ0X21heCQyIiwiZ3JhZF93IiwibmJfdyIsInZhX21heCQyIiwiZ3JhZF9oIiwibmJfaCIsInZhX21pbiQzIiwiemVyb19oIiwiZHJhd19mdW4iLCJ5JDAiLCJwcF9saW5lIiwidG9fc3RyaW5nIiwic3RoIiwid2lkdGgiLCJ0b19maWxlIiwiY2hhbiIsImZvcm0iLCJ4bHN3ZWFrRmlsZU5hbWUiLCJ4bHNzdHJvbmdGaWxlTmFtZSIsImRlZmF1bHRFeHRBcnJheVNpemUiLCJkZWZhdWx0R3JhcGhTaXplIiwiZGVmYXVsdExpZnRTZXRTaXplIiwiZGVmYXVsdEhlYXBTaXplIiwiZGVidWdfbW9kZU9uIiwidGltZV9pbmRlcGVuZGVudCIsImJsYWNrbGlzdF9ldmVudHMiLCJnZXRfY2FjaGVfc2l6ZSIsInByaW50X2Rlc2MiLCJzcGVjaWVzX2Rlc2MiLCJ1dWlkIiwiZ2V0X2Rlc2MiLCJ0YmwiLCJkX2NoYW4iLCJhY3RzRGVzY3IiLCJlbXB0eUFjdHMiLCJwbG90RGVzY3IiLCJ0cmFjZURlc2NyIiwidHJhY2VOb3RFbXB0eSIsImluaXRpYWxpemUiLCJhY3Rpdml0aWVzX2ZpbGUiLCJ0cmFjZV9maWxlIiwicGxvdFBhY2siLCJlbnYiLCJkZXNjJDAiLCJub0NvdW50ZXJzIiwibmJfciIsInBhY2siLCJ3YXJuaW5nX2J1ZmZlciIsImdvIiwiZmx1eCIsImRpbl9uYW1lIiwiZmx1eCQwIiwibGFzdCIsImskMCIsImhlYWQiLCJmaWxlbmFtZSIsImZvcm1hdCIsImlzX3RzdiIsImZkIiwicCQwIiwic3RlcCIsImQkMCIsInMkMSIsIm1peHR1cmUiLCJmaWxlJDEiLCJpbnB1dHNEZXNjIiwiZmx1c2hfd2FybmluZyIsImNsb3NlIiwiZXZlbnQkMCIsInBsb3QiLCJpbnB1dHMiLCJpbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbml0IiwiaW5wdXRzX2Zvcm0iLCJpbnB1dF9tb2RpZmljYXRpb25zIiwibW9kcyIsInRtcF92YXJfbmFtZSIsIm1hcnNoYWxpemVPdXRGaWxlIiwiZG9tYWluT3V0cHV0RmlsZSIsInRyYWNlRmlsZSIsImxvZ0ZpbGUiLCJwcmVwcm9jZXNzX2FzdCIsIndhcm5pbmciLCJrYXNpbV9hcmdzIiwiY2xpX2FyZ3MiLCJhc3QiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwic3ludGF4X3ZlcnNpb24iLCJrYXNpbV9hcmdzJDAiLCJpbml0aWFsTWl4IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWxlZF9kYXRhIiwiY29tcGlsIiwiY29uZiQwIiwib3ZlcndyaXRlX3QwJDAiLCJvdmVyd3JpdGVfaW5pdCIsImdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIiwiZmlsZV9saXN0IiwiY29tcGlsaW5nX2Z1bmN0aW9uIiwiZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIiwiZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfIiwiZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IiwiY29tcGlsZV9tb2RlX29uIiwicHJlcHJvY2Vzc2VkX2FzdCIsImluaXRfbCIsImhhc190cmFja2luZyIsImdldF9jb21waWxhdGlvbl9mcm9tX3BhY2siLCJpbml0X3RfZnJvbV9maWxlcyIsInBsb3RfcGVyaW9kJDAiLCJtYXhfZXZlbnQkMCIsImluaXRfZSIsIm1heF90aW1lIiwiaW5pdF90IiwiYSQwIiwicGxvdF9wZXJpb2QkMSIsIm1heF90aW1lJDAiLCJpbml0X3QkMCIsImNvdW50ZXIiLCJnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXMiLCJzdGgkMCIsImdldF9jb21waWxhdGlvbiIsIm1hcnNoYWxpemVkX2ZpbGUiLCJjb21waWxhdGlvbl9yZXN1bHQiLCJhbGdfb3ZlcndyaXRlIiwib3ZlcndyaXRlX3QwIiwicmF3X2luaXRzIiwiZSQwIiwiZCQxIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJleG5fdG9fanNvbiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJjIiwiYiIsImEiLCJjJDAiLCJiJDAiLCJhJDAiLCJ4JDMiLCJ4JDQiLCJjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24iLCJ4JDUiLCJ1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwiZXhuX29mX2pzb24iLCJqc29uIiwibCIsImwkMCIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImJ1aWxkX2NhdWdodF9leGNlcHRpb24iLCJzdGFjayIsInJhaXNlX2V4Y2VwdGlvbiIsImtleSIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ5IiwiZXIiLCJ5JDAiLCJlciQwIiwieCQ2IiwicHBfdW5jYXVnaHQiLCJ4JDciLCJwcF9jYXVnaHQiLCJ3aXRoX3NwYWNlIiwic3RyaW5nbGlzdF9vZl9leGNlcHRpb24iLCJzdHJpbmdsaXN0X29mX2NhdWdodCIsInN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQiLCJzb2wiLCJzdHJpbmciLCJzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCIsInN0YWNrJDAiLCJ0b19qc29uIiwibWV0aG9kX2hhbmRsZXIiLCJvZl9qc29uIiwiY2F1Z2h0X3RvX3VpIiwidW5jYXVnaHRfdG9fdWkiLCJhZGRfdW5jYXVnaHRfZXJyb3IiLCJ0b191aSIsImVycm9yJDAiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsImRhdGUiLCJ2ZXJzaW9uIiwib3V0cHV0X2RpcmVjdG9yeSIsIm91dHB1dF9jbV9kaXJlY3RvcnkiLCJvdXRwdXRfaW1fZGlyZWN0b3J5Iiwib3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsInVuc2FmZSIsInRyYWNlIiwic3ludGF4X3ZlcnNpb24iLCJkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2MiLCJsb2ciLCJmb3JtYXR0ZXIiLCJmaWxlIiwibGlua19tb2RlIiwiZG9faW5mbHVlbmNlX21hcCIsInJ1bGVfc2hhcGUiLCJydWxlX2NvbG9yIiwidmFyaWFibGVfc2hhcGUiLCJ2YXJpYWJsZV9jb2xvciIsImNlbnRlcl9jb2xvciIsIndha2VfdXBfY29sb3IiLCJpbmhpYml0aW9uX2NvbG9yIiwid2FrZV91cF9hcnJvdyIsImluaGliaXRpb25fYXJyb3ciLCJpbmZsdWVuY2VfbWFwX2ZpbGUiLCJpbmZsdWVuY2VfbWFwX2Zvcm1hdCIsInByb21wdF9mdWxsX3Zhcl9kZWYiLCJwcm9tcHRfZnVsbF9ydWxlX2RlZiIsIm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kbyIsImRvX2NvbnRhY3RfbWFwIiwiZG9fc2NjIiwicHVyZV9jb250YWN0IiwiY29udGFjdF9tYXBfZmlsZSIsImNvbnRhY3RfbWFwX2Zvcm1hdCIsImJpbmRpbmdfc2l0ZV9zaGFwZSIsImJpbmRpbmdfc2l0ZV9jb2xvciIsImludGVybmFsX3NpdGVfc2hhcGUiLCJpbnRlcm5hbF9zaXRlX2NvbG9yIiwiY291bnRlcl9zaXRlX3NoYXBlIiwiY291bnRlcl9zaXRlX2NvbG9yIiwiYWdlbnRfc2hhcGVfYXJyYXkiLCJhZ2VudF9jb2xvcl9hcnJheSIsImFnZW50X3NoYXBlX2RlZiIsImFnZW50X2NvbG9yX2RlZiIsImxpbmtfY29sb3IiLCJpbmZsdWVuY2VfY29sb3IiLCJpbmZsdWVuY2VfYXJyb3ciLCJkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdCIsImRvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3JlcyIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5biIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsIiwiaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlIiwiaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0Iiwic21hc2hfcmVsYXRpb25zIiwidXNlX25hdHVyYWxfbGFuZ3VhZ2UiLCJjb21wdXRlX2xvY2FsX3RyYWNlcyIsInNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZSIsInVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsXyIsImFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZyIsImxvY2FsX3RyYWNlX3ByZWZpeCIsImxvY2FsX3RyYWNlX2Zvcm1hdCIsImNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyIsIndpdGhfdmlld3NfYW5hbHlzaXMiLCJ3aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2kiLCJ3aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwid2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIiwid2l0aF9jb3VudGVyc19hbmFseXNpcyIsImNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIiwidmlld19hY2N1cmFjeV9sZXZlbCIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsInNjY19hY2N1cmFjeV9sZXZlbCIsImRvX3N5bW1ldHJpZXMiLCJyYXRlX2NvbnZlbnRpb24iLCJwcmludF9lZmZpY2llbmN5IiwiYmFja2Rvb3JfbmJyX29mX3NjYyIsImJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MiLCJiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImJhY2tkb29yX25icl9vZl9ydWxlcyIsImJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uIiwiYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2IiwiYmFja2Rvb3JfdGltaW5nIiwiYmFja2Rvb3JfZmlsZSIsImJhY2tkb29yX2RpcmVjdG9yeSIsImNzdF90ZXgiLCJjc3RfaHRtbCQwIiwiYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tIiwiZXh0Iiwic2l6ZV9hIiwic2l6ZV9leHQiLCJvcGVuX291dCIsImQiLCJvcGVuX2FwcGVuZCIsImNvbXBvc2UiLCJnIiwiZXh0X2Zvcm1hdCIsImZldGNoX2xldmVsX2dlbiIsInMiLCJyIiwiZmV0Y2hfZ3JhcGhfZm9ybWF0IiwiZmV0Y2hfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc3ludGF4X3ZlcnNpb24iLCJyZWFjaGFiaWxpdHlfbWFwXzAiLCJyZWFjaGFiaWxpdHlfbWFwXzEiLCJyZWFjaGFiaWxpdHlfbWFwXzIiLCJyZWFjaGFiaWxpdHlfbWFwXzMiLCJyZWFjaGFiaWxpdHlfbWFwXzQiLCJnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMiLCJjYWNoZSIsImdldF9wYXJhbWV0ZXJzIiwib3B0IiwiY2FsbGVkX2Zyb20iLCJzdGgiLCJodG1sX21vZGUiLCJjb21tYW5kJDAiLCJjaGFubmVsX2JhY2tkb29yJDAiLCJjaGFubmVsX2VyciQwIiwiY2hhbm5lbCQxIiwiY2hhbm5lbCIsImNoYW5uZWwkMCIsImNvbW1hbmQkMiIsInJlYWNoYWJpbGl0eSQwIiwicmVhY2hhYmlsaXR5IiwibWFwIiwiYSQxIiwiZm10IiwiY2hhbm5lbCQyIiwiZHVtbXlfcGFyYW1ldGVycyIsInAiLCJwJDAiLCJnZXRfYm91bmRfc3ltYm9sXzEiLCJzeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2xpbmtfdG9fYW55XzEiLCJnZXRfbGlua190b19zb21lXzEiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfZnJlZV8xIiwiZ2V0X2F0X3N5bWJvbF8xIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbF8xIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSIsImdldF91bmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMSIsImdldF9vcGVuX2NvdW50ZXJjZXFfMSIsImdldF9vcGVuX2NvdW50ZXJjdmFyXzEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhXzEiLCJnZXRfb3Blbl9jb3VudGVydmFsXzEiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSIsImdldF9jbG9zZV9jb3VudGVyY3Zhcl8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEiLCJnZXRfY2xvc2VfY291bnRlcnZhbF8xIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSIsImdldF9jb3VudGVydmFsX3N5bWJvbF8xIiwiZ2V0X2ltX2Zvcm1hdF8xIiwiaW5mbHVlbmNlIiwiZ2V0X2ltX2ZpbGVfMSIsImdldF9pbV9kaXJlY3RvcnlfMSIsImdldF9ydWxlX3NoYXBlXzEiLCJnZXRfcnVsZV9jb2xvcl8xIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlXzEiLCJnZXRfdmFyaWFibGVfY29sb3JfMSIsImdldF93YWtlX3VwX2NvbG9yXzEiLCJnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfYXJyb3dfMSIsImdldF9pbmhpYml0aW9uX2Fycm93XzEiLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzEiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xIiwiZ2V0X3B1cmVfY29udGFjdF8xIiwiY20iLCJnZXRfY21fZm9ybWF0XzEiLCJnZXRfY21fZmlsZV8xIiwiZ2V0X2NtX2RpcmVjdG9yeV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzEiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlXzEiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yXzEiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMSIsImdldF9hZ2VudF9jb2xvcl9hcnJheV8xIiwiZ2V0X2FnZW50X3NoYXBlX2RlZl8xIiwiZ2V0X2FnZW50X2NvbG9yX2RlZl8xIiwiZ2V0X2xpbmtfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfYXJyb3dfMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQwIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDQiLCJnZXRfc21hc2hfcmVsYXRpb25zXzEiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8iLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8iLCJnZXRfcG9zdF9wcm9jZXNzaW5nXzEiLCJnZXRfYmFja2VuZF9tb2RlXzEiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzEiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsImdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90IiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIiwiZ2V0X3ZpZXdfYW5hbHlzaXNfMSIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMSIsImdldF9jb3VudGVyc19hbmFseXNpc18xIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIiwibWFyc2hhbGlzYWJsZSIsImdldF9yYXRlX2NvbnZlbnRpb25fMSIsImdldF9lbXB0eV9oYXNodGJsX3NpemVfMSIsImdldF9zeW1ib2xzXzEiLCJnZXRfZmlsZV8xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfMSIsImdldF9jb250YWN0X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSIsImdldF91bnNhZmVfMSIsImdldF90cmFjZV8xIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5IiwiZ2V0X3ByZWZpeF8xIiwiZ2V0X2NhbGxfc3RhY2tfMSIsImdldF9saW5rX21vZGVfMSIsImdldF9rYXNhX3N0YXRlXzEiLCJnZXRfZG9fY29udGFjdF9tYXBfMSIsImdldF9zeW50YXhfdmVyc2lvbl8xIiwiZ2V0X2RvX3NjY18xIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfbGF1bmNoaW5nX2RhdGVfMSIsInQiLCJnbXQiLCJnZXRfc2hvcnRfdmVyc2lvbl8xIiwiZ2V0X2Z1bGxfdmVyc2lvbl8xIiwiZ2V0X2xhdW5jaGVkX3doZXJlXzEiLCJnZXRfY29tbWFuZF9saW5lXzEiLCJnZXRfbWFyc2hhbGlzYWJsZSIsInBhcmFtZXRlciIsImdldF9sb2dnZXIiLCJnZXRfbG9nZ2VyX2VyciIsImdldF9sb2dnZXJfYmFja2Rvb3IiLCJ1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCIsImdldF9jb21tYW5kX2xpbmUiLCJnZXRfc2hvcnRfdmVyc2lvbiIsImdldF9sYXVuY2hlZF93aGVyZSIsImdldF9mdWxsX3ZlcnNpb24iLCJnZXRfbGF1bmNoaW5nX2RhdGUiLCJnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUiLCJwYXJhbWV0ZXJzIiwiZ2V0X2RvX2NvbnRhY3RfbWFwIiwiZ2V0X3N5bnRheF92ZXJzaW9uJDAiLCJnZXRfZG9fc2NjIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXAiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24kMCIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyQwIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfc3ltYm9scyIsImdldF9maWxlIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyIsImdldF9yYXRlX2NvbnZlbnRpb24iLCJnZXRfaW5mbHVlbmNlX21hcCIsImdldF9jb250YWN0X21hcCIsImdldF9yZWFjaGFiaWxpdHlfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhJDAiLCJnZXRfdW5zYWZlIiwiZ2V0X3RyYWNlIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5JDAiLCJnZXRfcHJlZml4IiwiZ2V0X2NhbGxfc3RhY2siLCJnZXRfbGlua19tb2RlIiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsJDAiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2JDAiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbCIsImdldF9lbXB0eV9oYXNodGJsX3NpemUiLCJ1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWUiLCJ1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQiLCJ1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwXyIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbCIsImdldF9ib3VuZF9zeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGUiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlIiwiZ2V0X2xpbmtfdG9fYW55IiwiZ2V0X2xpbmtfdG9fc29tZSIsImdldF9mcmVlX3N5bWJvbCIsImdldF9hdF9zeW1ib2wiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2wiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2wiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbCIsImdldF9kb193ZV9zaG93X2dob3N0IiwiZ2V0X3VuaV9hcnJvd19zeW1ib2wiLCJnZXRfcmV2X2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQkMCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbCIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0kMCIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGUiLCJnZXRfb3Blbl9jb3VudGVyY2VxIiwiZ2V0X29wZW5fY291bnRlcmNndGUiLCJnZXRfb3Blbl9jb3VudGVyY3ZhciIsImdldF9vcGVuX2NvdW50ZXJkZWx0YSIsImdldF9vcGVuX2NvdW50ZXJ2YWwiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSIsImdldF9jbG9zZV9jb3VudGVyY2VxIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YSIsImdldF9jbG9zZV9jb3VudGVydmFsIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbCIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sIiwiZ2V0X2ltX2Zvcm1hdCIsImdldF9pbV9maWxlIiwiZ2V0X2ltX2RpcmVjdG9yeSIsImdldF9ydWxlX3NoYXBlIiwiZ2V0X3J1bGVfY29sb3IiLCJnZXRfdmFyaWFibGVfc2hhcGUiLCJnZXRfdmFyaWFibGVfY29sb3IiLCJnZXRfd2FrZV91cF9jb2xvciIsImdldF9pbmhpYml0aW9uX2NvbG9yIiwiZ2V0X3dha2VfdXBfYXJyb3ciLCJnZXRfaW5oaWJpdGlvbl9hcnJvdyIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0IiwiZ2V0X3B1cmVfY29udGFjdCIsImdldF9jbV9mb3JtYXQiLCJnZXRfY21fZmlsZSIsImdldF9jbV9kaXJlY3RvcnkiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvciIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3IiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciIsImdldF9hZ2VudF9zaGFwZV9hcnJheSIsImdldF9hZ2VudF9jb2xvcl9hcnJheSIsImdldF9hZ2VudF9zaGFwZV9kZWYiLCJnZXRfYWdlbnRfY29sb3JfZGVmIiwiZ2V0X2xpbmtfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9hcnJvdyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ1IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDYiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ4IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDkiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMTAiLCJnZXRfcG9zdF9wcm9jZXNzaW5nIiwiZ2V0X2JhY2tlbmRfbW9kZSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyQwIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfJDAiLCJnZXRfc21hc2hfcmVsYXRpb25zIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCQwIiwic2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiciQwIiwiciQxIiwic2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90JDAiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8kMCIsImdldF9pZ25vcmVfbG9jYWxfbG9zYW5nZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImdldF9sb2NhbF90cmFjZV9wcmVmaXgiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwiZ2V0X3ZpZXdfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMkMCIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbiIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJzZXRfcHJlZml4XzEiLCJwcmVmaXgiLCJzZXRfY2FsbF9zdGFja18xIiwiY2FsbF9zdGFjayIsInNldF90cmFjZV8xIiwiYm9vbCIsInVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSIsInNldF9wcmVmaXgiLCJzZXRfY2FsbF9zdGFjayIsInNldF90cmFjZSIsInVwZGF0ZV9wcmVmaXgiLCJzdWZmaXgiLCJ1cGRhdGVfY2FsbF9zdGFjayIsIm5hbWUiLCJyZXBfYm9vbCIsIm9wZW5faW5mbHVlbmNlX21hcF9maWxlIiwibWF0Y2gkMSIsImZvcm1hdCIsImxvZ2dlciIsIm9wZW5fY29udGFjdF9tYXBfZmlsZSIsImxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubCIsImdldF9jYWxsZWRfZnJvbSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEiLCJiYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzEiLCJnZXRfYmFja2Rvb3JfZmlsZV8xIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIiwiZ2V0X2JhY2tkb29ycyIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMCIsImdldF9iYWNrZG9vcl90aW1pbmdfMiIsImdldF9iYWNrZG9vcl9maWxlXzIiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2MiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMSIsImdldF9iYWNrZG9vcl90aW1pbmciLCJnZXRfYmFja2Rvb3JfZmlsZSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnkiLCJnZXRfcHJvZmlsZXIiLCJnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciIsImdldF9rYXNhX3N0YXRlIiwic2V0X3ByaW50X2VmZmljaWVuY3kiLCJnZXRfcHJpbnRfZWZmaWNpZW5jeSIsInNldF9sb2dnZXIiLCJzYXZlX2Vycm9yX2xpc3QiLCJzYXZlX3Byb2dyZXNzX2JhciIsImJhciIsInJlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkZWZhdWx0JDAiLCJjb21iaW5lIiwibDEiLCJsMiIsImxpc3QiLCJhMSIsImEyIiwib3B0aW9ucyIsImdldF9vcHRpb24iLCJ0aXRsZSIsImlucHV0IiwiYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIiwidF9jb21tb24iLCJkb3RfY29tbWVudCIsImRvdF90b19wZGYiLCJoZWFkIiwicSIsImhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QiLCJoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCIsIm91dHB1dCIsImFjdGlvbnMiLCJzeW50YXgiLCJ0cmFjZXMiLCJjb250YWN0X21hcCIsImluZmx1ZW5jZV9tYXAiLCJmbG93IiwiZGVidWciLCJlbXB0eV9lcnJvcl9oYW5kbGVyIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsIndhcm5fYXV4IiwicGFyYW1ldGVycyIsImVycm9yX2hhbmRsZXIiLCJ0b191aSIsImZpbGVfbmFtZSIsIm1lc3NhZ2UiLCJleG4iLCJkZWZhdWx0JDAiLCJ1bmNhdWdodCQwIiwiZGZ0IiwiZXJyb3IiLCJ1bmNhdWdodCIsInN0cmluZ2xpc3QiLCJ3YXJuX3dpdGhfZXhuIiwib3B0IiwibGluZSIsImZpbGUiLCJzdGgiLCJzdGgkMCIsInBvcyIsImxpYWlzb24iLCJzIiwicG9zJDAiLCJ3YXJuIiwiZmlsZV9saW5lIiwicHJpbnRfZm9yX0thU2ltIiwiaGFuZGxlcnMiLCJwYXJhbWV0ZXJzJDAiLCJjYXVnaHQiLCJwcmludCIsInByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0iLCJ3cmFwIiwic3RyaW5nIiwic3RyaW5nX29wdCIsImNoZWNrX3BvaW50IiwicGFyYW1ldGVyIiwiZXJyb3IkMCIsImVycm9yJDEiLCJmb3JfS2FTaW0iLCJmIiwibGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0iLCJhIiwiYiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2ZvciIsImMiLCJiJDAiLCJsaWZ0X2dlbmVyaWNfdGVybmFyeV9mb3JfS2FTaW0iLCJsaWZ0X2dlbl91bmFyeSIsImR1bXAiLCJvdXRwdXQiLCJsaWZ0X2dlbl9iaW5hcnkiLCJsaWZ0X2dlbl90ZXJuYXJ5IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iIiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ190IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ19iaW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5Iiwic3RyaW5nX29mX3N0ZXBfa2luZCIsIngiLCJpbnQkMCIsImludCQxIiwic3RyaW5nIiwiaW50JDIiLCJpbnQkMyIsImludCQ0IiwiaW50JDUiLCJzdHJpbmckMCIsInN0cmluZyQxIiwicHJpbnRfc3RlcF9raW5kIiwicGFyYW1ldGVycyIsInByaW50X3Rhc2siLCJwYXJhbWV0ZXIiLCJiIiwiYSIsImsiLCJsIiwib3V0cHV0IiwicSIsInQiLCJvdXRwdXQkMCIsImskMCIsImskMSIsIm91dHB1dCQxIiwib3V0cHV0JDIiLCJrJDIiLCJiJDAiLCJ0YWIiLCJpIiwiaSQwIiwidGltZSIsImNsb3NlX2xvZ2dlciIsImZsdXNoX2xvZ2dlciIsImlzX2R1bW15Iiwic3RlcF9raW5kIiwiYWRkX2V2ZW50IiwiZXJyb3IiLCJmIiwibG9nX2luZm8iLCJlcnJvciQwIiwibmV4dF9kZXB0aCIsImYkMCIsInRhc2siLCJ0ZXJtaW5hdGVkX3Rhc2siLCJjdXJyZW50X3Rhc2siLCJjbG9zZV9ldmVudCIsImxvZ19pbmZvJDAiLCJlcnJvciQxIiwiaW50ZXJydXB0ZWQiLCJlcnJvciQyIiwidGFpbCIsInRhaWwkMCIsInRlcm1pbmF0ZWRfdGFzayQwIiwibG9nX2luZm8kMSIsInNpemVfYWZ0ZXIiLCJnZW5fb3B0IiwiZ2VuIiwiZSIsImFkZF9ldmVudF9vcHQiLCJjbG9zZV9ldmVudF9vcHQiLCJwcm9wYWdhdGlvbl9sYWJlbHMiLCJwcm9wYWdhdGlvbl9jYXNlcyIsImNvcHkiLCJpbml0X2xvZ19pbmZvIiwibG9nX2luZm9fdG9fanNvbiIsImZsb2F0X29mX2pzb24iLCJpbnRfb2ZfanNvbiIsImxvZ19pbmZvX29mX2pzb24iLCJpbml0IiwiZHVtcF9zaG9ydF9sb2ciLCJyZXNldF9sb2ciLCJsb2ciLCJlbGxhcHNlZF90aW1lIiwiZWxsYXBzZWRfZ2xvYmFsX3RpbWUiLCJzZXRfdGltZSIsInNldF9zdGVwX3RpbWUiLCJzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSIsInN0Iiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uIiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fIiwic2V0X2dyaWRfZ2VuZXJhdGlvbiIsInNldF9jYW5vbmljYWxpc2F0aW9uIiwiYWRkX2Nhc2UiLCJhZGRfbG9va19kb3duX2Nhc2UiLCJhZGRfbG9va191cF9jYXNlIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIiwiaW5jX2N1dCIsImluY19icmFuY2giLCJpbmNfbl9rYXNpbV9ldmVudHMiLCJpbmNfbl9vYnNfZXZlbnRzIiwiaW5jX25fc2lkZV9ldmVudHMiLCJpbmNfbl9pbml0X2V2ZW50cyIsImluY19jdXRfZXZlbnRzIiwiaW5jX2tfY3V0X2V2ZW50cyIsInJlc2V0X2N1dF9ldmVudHMiLCJpbmNfc2VsZWN0ZWRfZXZlbnRzIiwiaW5jX3JlbW92ZWRfZXZlbnRzIiwiZHVtcF9jb21wbGV0ZV9sb2ciLCJsb2dnZXIiLCJ0aWNrIiwic2V0X2dsb2JhbF9jdXQiLCJuIiwic2V0X3BzZXVkb19pbnYiLCJsaWZ0IiwiZiIsImVtcHR5IiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJhZGQiLCJhZGRfd2hlbl9ub3RfaW4iLCJwIiwiZSIsIngiLCJzIiwicyQwIiwiZSQwIiwicmVtb3ZlIiwidW5pb24iLCJkaXNqb2ludF91bmlvbiIsImludGVyIiwiZGlmZiIsIm1pbnVzIiwiY2FyZGluYWwiLCJtZW0iLCJleGlzdHMiLCJmaWx0ZXIiLCJmb3JfYWxsIiwicGFydGl0aW9uIiwiY29tcGFyZSIsImVxdWFsIiwic3Vic2V0IiwiaXRlciIsImZvbGQiLCJmb2xkX2ludiIsImVsZW1lbnRzIiwiY2hvb3NlIiwibWluX2VsdCIsIm1heF9lbHQiLCJlbXB0eSQwIiwiaXNfZW1wdHkkMCIsIm1pbl9lbHQkMCIsIm1lbSQwIiwiZmluZF9vcHRpb24iLCJhIiwiYiIsImMiLCJkIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyIsImFkZCQwIiwib3ZlcndyaXRlIiwicGFyYW1ldGVyIiwiZXJyb3IiLCJtYXAiLCJib29sIiwiZXJyb3IkMCIsImFkZF9vcl9vdmVyd3JpdGUiLCJyZW1vdmUkMCIsInJlbW92ZV9vcl9ub3QiLCJ1cGRhdGUiLCJtYXAyIiwibWFwMnoiLCJmb2xkMnoiLCJmb2xkMiIsIml0ZXIyIiwiZyIsImgiLCJtYXBmIiwibWFwZyIsImZvbGQyX3NwYXJzZSIsIml0ZXIyX3NwYXJzZSIsImRpZmYkMCIsImRpZmZfcHJlZCIsIm1lcmdlIiwidW5pb24kMCIsImZvbGRfcmVzdHJpY3Rpb24iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJpdGVyJDAiLCJmb2xkJDAiLCJtYXBpIiwiZm9yX2FsbCQwIiwiZmlsdGVyX29uZSIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJiaW5kaW5ncyIsInRvX2pzb24iLCJvZl9qc29uIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJvbGQiLCJtb25hZGljX3Byb2pfbWFwX2kiLCJlcnJvciQxIiwiZGF0YSIsImVycm9yJDIiLCJkYXRhJDAiLCJlcnJvciQzIiwibW9uYWRpY19wcm9qX21hcCIsInBhcnRpdGlvbl9zZXQiLCJzZXQiLCJuZXdzZXQiLCJtb25hZGljX3BhcnRpdGlvbl9zZXQiLCJwcm9qX3NldCIsInNldF9hIiwic2V0X2IiLCJtb25hZGljX3Byb2pfc2V0IiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImhhbmRsZXIiLCJtdmJkdV9oYW5kbGVyIiwiaGFuZGxlciQwIiwiaGFuZGxlciQxIiwibXZiZHVfaGFuZGxlciQwIiwiaGFuZGxlciQyIiwiaGFuZGxlciQzIiwiaGFuZGxlciQ0IiwicG9vbCIsInB1c2giLCJvdXRfbGlzdCIsImluX2xpc3QiLCJhZGRfZWx0IiwiZm9sZF9sZWZ0IiwiYWNjIiwicHJpbnRfd2wiLCJwYXJhbWV0ZXJzIiwid2wiLCJpIiwicG9wIiwieCQwIiwidGwiLCJyZW1vdmVfZWx0IiwieCQxIiwiaW52YWxpZF9hcmciLCJtaCIsInBvcyIsImV4biIsInZhbHVlIiwiZGltZW5zaW9uIiwia2V5X2xpc3QiLCJwYXJlbWV0ZXJzIiwidCIsInNpemUiLCJhcnJheSIsImsiLCJzb2wiLCJzb2wkMCIsImskMCIsImskMSIsImNyZWF0ZSIsImNyZWF0ZV9iaWdnZXN0X2tleSIsImV4cGFuZF9hbmRfY29weSIsImRpbWVuc2lvbiQwIiwiYXJyYXkkMCIsImtleSIsImluaXQiLCJhcnJheSQyIiwiZXJyb3IkNCIsImFycmF5JDEiLCJnZXQiLCJmcmVlIiwidW5zYWZlX2dldCIsInByaW50IiwicHJpbnRfZWx0IiwiZWx0IiwicGFyYW1ldGVycyQwIiwiaSQwIiwicmVtYW5lbnQkMSIsInJlbWFuZW50IiwicmVtYW5lbnQkMCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJvdXRwdXRfb3B0IiwiZm9sZDJfY29tbW9uIiwidDEiLCJ0MiIsImFycmF5MSIsImFycmF5MiIsIngyIiwieDEiLCJyZW1hbmVudCQ0IiwieDIkMCIsInJlbWFuZW50JDIiLCJrJDIiLCJyZW1hbmVudCQzIiwiayQzIiwiZnJlZV9hbGwiLCJvbGRfZGltZW5zaW9uIiwibWF0cml4IiwibWF0cml4JDAiLCJleHRfbGlzdCIsImxpc3QiLCJ0MiQwIiwibDIiLCJrZXkyIiwiZGltIiwiaiIsIm9sZF91bmRlcmx5aW5nIiwib2xkX3VuZGVybHlpbmckMCIsIm9sZF91bmRlcmx5aW5nJDEiLCJvbGRfdW5kZXJseWluZyQyIiwibmV3X3VuZGVybHlpbmciLCJuZXdfbWF0cml4IiwidW5kZXJseWluZyIsInVuZGVybHlpbmckMCIsInByaW50X29mIiwiZm9sZF9nZW4iLCJmb2xkMSIsImIkMCIsImMkMCIsImJhc2ljIiwibiIsImtleXMiLCJuZXdfYXJyYXkiLCJuZXdfYmFzaWMiLCJpbSIsImltJDAiLCJsIiwidCQwIiwib3V0cHV0JDEiLCJsaXN0JDAiLCJvdXRwdXQiLCJ0YWlsIiwiaGVhZCIsIm91dHB1dCQwIiwiZmluZFNldCIsInBhcmVudCIsInJvb3QiLCJsJDAiLCJnZXRfcmVwcmVzZW50ZW50IiwidW5pb25fbGlzdCIsInRvX3Zpc2l0IiwidCQxIiwidG9fdmlzaXQkMCIsImEkMCIsInRvX3Zpc2l0JDEiLCJ0JDIiLCJyb290X3giLCJyb290X3kiLCJ1bmlvbl9hcnJheSIsIml0ZXJpIiwiZnN0X29wdGlvbiIsInNuZF9vcHRpb24iLCJlc2NhcGVfbGFiZWxfaW5fZG90IiwibWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2ZvIiwic3RyaW5nIiwidGFiIiwicG9zJDIiLCJjaGFyJDAiLCJsaXN0ZV9jaGFyIiwicG9zJDAiLCJsJDEiLCJwb3MkMSIsInNvcnRlZF9wYXJ0c19vZl9saXN0IiwiYXV4Iiwic3VmZml4IiwibGlzdCQxIiwic29ydF9saXN0IiwicmVmaW5lZF9saXN0Iiwia2V5JDAiLCJyZWZpbmVkX3NvcnRlZF9saXN0IiwiY29uc3RfdW5pdCIsImFycmF5X29mX2xpc3QiLCJxIiwiYSQxIiwidW5zb21lIiwidHJhY2UiLCJpbnRlcl9saXN0IiwibDEkMSIsImwyJDEiLCJsMSIsInJlcCIsImwyJDAiLCJsMSQwIiwicmVwJDAiLCJsaXN0XzBfbiIsImxpc3RfbWludXMiLCJxMiIsInExIiwicTEkMCIsInByaW50X2NvbW1hIiwiY29tbWEiLCJmZXRjaF9hcnJheSIsImRlZiIsImkkMSIsImFzc28iLCJpbnQkMCIsImZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5Iiwibm9kZV9vZl9pbnQiLCJpbnRfb2Zfbm9kZSIsImxvY2FsX3RyYWNlIiwibm9kZV9vZl9ub2RlX2xhYmVsIiwibm9kZV9saXN0IiwiZWRnZV9saXN0IiwibWF4X25vZGUiLCJtIiwibm9kZXMiLCJub2RlcyQwIiwiZWRnZXMiLCJlZGdlIiwibjIiLCJsYWJlbCIsIm4xIiwiZWRnZXMkMCIsImNvbXB1dGVfc2NjIiwibG93IiwicHJlIiwib25fc3RhY2siLCJuX3RvX3N0cmluZyIsImdyYXBoIiwib25fc3RhY2skMCIsInByZSQwIiwibG93JDAiLCJvbl9zdGFjayQxIiwicHJlJDEiLCJsb3ckMSIsImVycm9yJDgiLCJsb3ckNCIsImxvdyQ1IiwiZXJyb3IkOSIsImxvdyQ2IiwiZXJyb3IkMTQiLCJwcmUkNCIsInByZSQ1IiwiZXJyb3IkMTAiLCJwcmUkNiIsImVycm9yJDEzIiwib25fc3RhY2skNCIsIm9uX3N0YWNrJDUiLCJlcnJvciQxMSIsIm9uX3N0YWNrJDYiLCJlcnJvciQxMiIsInNjY19saXN0Iiwic3RhY2siLCJjb3VudGVyIiwidiIsInN0YWNrJDAiLCJjb3VudGVyJDAiLCJlZGdlc192IiwidyIsInByZV93Iiwic2NjX2xpc3QkMCIsImxvd192IiwibG93X3ciLCJlcnJvciQ1Iiwic3RhY2skMSIsInNjY19saXN0JDEiLCJjb3VudGVyJDEiLCJsb3ckMiIsImVycm9yJDYiLCJsb3dfdiQwIiwiZXJyb3IkNyIsInByZV93JDAiLCJsb3ckMyIsInByZV92Iiwib25fc3RhY2skMiIsInN0YWNrJDIiLCJjYyIsInN0YWNrJDMiLCJvbl9zdGFjayQzIiwiY2MkMCIsInByZSQyIiwicHJlJDMiLCJhZGRfYnJpZGdlcyIsInNjYyIsInN0cmluZ19vZl9uIiwic3RyaW5nX29mX2UiLCJicmlkZ2VzIiwic2NjJDAiLCJzY2MkMSIsInNjYyQ0Iiwibm9kZSIsIm4kMCIsInNjYyQyIiwibmkiLCJzY2NpIiwic2NjaSQwIiwic2NjaSQxIiwibmoiLCJzY2NqIiwic2NjaiQwIiwic2NjaiQxIiwibnN0cmluZ2kiLCJuc3RyaW5naiIsImJyaWRnZXMkMCIsInNjYyQzIiwiaW52YWxpZCIsIlBPUyIsIm1lc3NhZ2UiLCJpbnZhbGlkX2FyZ19ib29sIiwibWVtYmVyIiwiZGljdGlvbmFyeSIsImluX2NvbnN0cnVjdGlvbiIsInN0YWJpbGl6ZSIsImFzc28kMCIsInRyYW5zbGF0ZSIsImRpY3Rpb25hcnkkMCIsInN0YWJpbGl6ZWQiLCJhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QiLCJ1bmlxdWVseSIsImJ1aWxkIiwiZnJlc2giLCJhc3NvX2lkJDEiLCJoYXNoX3RhYmxlIiwiaGFzaCIsImRpY3Rpb25hcnkkMSIsImFzc29faWQiLCJhc3NvX2lkJDAiLCJhbGxvY2F0ZSIsImFhIiwiYWxsb2NhdGVfdW5pcXVlbHkiLCJhbGxvY2F0ZV9ib29sIiwidW5zYWZlX2FsbG9jYXRlIiwiZGljIiwiZGljJDAiLCJsYXN0X2VudHJ5IiwidGlja19zdG9yaWVzIiwiZiIsImNvbmYiLCJzYXZlX3Byb2dyZXNzX2JhciIsIm5fc3RvcmllcyIsImNvdW50ZXIiLCJsYXN0IiwiaW5pdCIsImMiLCJuIiwibmMiLCJubCIsIm4kMCIsImJhciIsIm4kMSIsInRpY2skMCIsInRpY2siLCJjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3MiLCJjb25maWdfc21hbGxfZ3JhcGgiLCJjb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3IiLCJzd2FwIiwiYSIsImIiLCJpZ25vcmVfZnN0IiwiY29tcGFyZV9zdWNjIiwicCIsImwiLCJsJDAiLCJxIiwic3RyaWN0bHlfaW5jcmVhc2luZyIsInN0cmljdGx5X2RlY3JlYXNpbmciLCJjb25jYXQiLCJwcmludF9saXN0IiwiY2hlY2siLCJmb3JtIiwic3RyaW5nIiwicmVwIiwiaXNfc3RyaWN0X3N1Ymxpc3QiLCJhJDAiLCJiJDAiLCJoIiwidCIsImgkMCIsInQkMCIsInQkMSIsImluc2VydF9lbHQiLCJlIiwiZGlmZl9saXN0IiwiYWNjdSIsImFjY3UkMCIsImNvbXBhcmVfYm9vbCIsImRpZmZfbGlzdF9kZWNyZWFzaW5nIiwibWVyZ2VfbGlzdF9kZWNyZWFzaW5nIiwieCIsInkiLCJjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQiLCJwYXJhbWV0ZXIiLCJoYW5kbGVyIiwibG9nX2luZm8iLCJlcnJvciIsImV2ZW50IiwiY29uZmlnIiwicHJlYyIsImlzX29icyIsImVycl9sb2dnZXIiLCJpc19vYnMkMCIsIm1heF9pbmRleCIsImkiLCJuX2VkZ2VzIiwiZiQwIiwiY2xvc2UiLCJjbG9zZV90aWNrIiwidGljayQxIiwiZG9fdGljayIsImNsb3NlX3RpY2skMCIsImRvX3RpY2skMCIsInNfcHJlZF9zdGFyIiwibWF4X3N1Y2MiLCJzdWNjIiwicHJlZCIsImlzX2xhc3Rfc3VjY19vZiIsImFkZCIsIm5vZGUiLCJvbGRfbCIsImxvZ19pbmZvJDAiLCJlcnJvciQwIiwib3V0cHV0Iiwic19wcmVkIiwibF9wcmVkIiwiaiIsInByZWRfc3RhciIsIm5ld19sIiwiZGlmZiIsImsiLCJjbG9zdXJlX2JvdHRvbV91cCIsImV2ZW50X29wdCIsInMiLCJncmFwaCIsImNsb3N1cmVfdG9wX2Rvd24iLCJkZWx0YSIsInByZWMkMCIsIm1lcmdlX3RhaW50cyIsImwxIiwibDIiLCJxJDAiLCJ0YWludGluZyIsIm91dHB1dCQxIiwiZGVsdGEkMCIsIm91dHB1dCQwIiwiZGVsdGEkMSIsIm5ld190YWludCIsInRhaW50cyIsInRhaW50Iiwic2hpZnRlZF90YWludHMiLCJnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3ciLCJtb2RlIiwibSIsImNsb3N1cmVfY2hlY2siLCJsb2dfaW5mbyQxIiwiZXJyb3IkMSIsInMkMCIsInMkMSIsImNsb3N1cmUiLCJyZWR1Y3Rpb25fdG9wX2Rvd24iLCJwcmVjX3N0YXIiLCJlaWQiLCJuZWlnaCIsIm91dCIsInRvX3JlbW92ZSIsImwxJDAiLCJsMiQwIiwibDEkMSIsImNtcCIsImwxJDIiLCJzZXQiLCJsb2dfaW5mbyQyIiwiZXJyb3IkMiIsImF0b21fdGVzdGVkIiwiYXRvbV9tb2RpZmllZCIsImVtcHR5X2NvbmZpZyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJkZWJ1Z19wcmludF9jYXVzYWwiLCJkZWJ1Z19wcmludF9hdG9tIiwiZGVidWdfcHJpbnRfZ3JpZCIsImciLCJzaXRlX2lkIiwibm9kZV9pZCIsImVtcHR5X2dyaWQiLCJncmlkX2ZpbmQiLCJncmlkIiwicXVhcmsiLCJpc19saW5rIiwidmEiLCJldmVudF9udW1iZXIiLCJraW5kIiwiYXR0JDAiLCJhdHQiLCJhdHRyaWJ1dGUiLCJwaWQiLCJlaWRfaW5pdCIsIm9sZCIsImFkZF9hY3Rpb25zIiwiYWN0aW9ucyIsImdyaWQkMCIsInNpdGUiLCJxJDEiLCJzaXRlMiIsInNpdGUxIiwiZ3JpZCQ0IiwicSQyIiwic2l0ZTEkMCIsInEkMyIsInNpdGUkMCIsImFnIiwibmEiLCJzaWdzIiwiYWdfaW50ZiIsImdyaWQkMSIsImFnJDAiLCJuYSQwIiwic2lncyQwIiwiZ3JpZCQyIiwiYWRkX3Rlc3RzIiwidGVzdHMiLCJyZWNvcmQiLCJyZWNvcmRfb2JzIiwic2lkZV9lZmZlY3RzIiwicmVjb3JkX2luaXQiLCJsYmwiLCJjdXQiLCJvcHQiLCJhdHRyaWJ1dGVfaWRzIiwic3RoIiwid2l0aF9yZWR1Y3Rpb24iLCJhdHRyaWJ1dGVfaWRzJDAiLCJjZmciLCJhdHRyaWJ1dGVfaWRzJDEiLCJ0eXBlX2kiLCJzaXRlX2kiLCJub2RlX2kiLCJhdHRyaWJ1dGUkMSIsImF0dHJpYnV0ZSQyIiwiYXRvbSQwIiwiZXZlbnRzX2tpbmQkMSIsInByZWRzJDAiLCJwcmVjXzEkMCIsImxhc3RfdGVzdGVkJDIiLCJsYXN0X21vZGlmJDEiLCJjb25maWckMyIsImxhc3RfbW9kaWYiLCJsYXN0X3Rlc3RlZCIsImF0dHJpYnV0ZSQwIiwiYXRvbSIsImV2ZW50c19raW5kJDAiLCJwcmVkcyIsInByZWNfMSIsImNvbmZpZyQwIiwiZXZlbnRzX2tpbmQiLCJjZmxjdF9zZXQiLCJjZmxjdCIsImNvbmZpZyQyIiwibGFzdF90ZXN0ZWQkMSIsImNvbmZpZyQxIiwicHJlZF9pZCIsInByZWRfc2V0IiwibGFzdF90ZXN0ZWQkMCIsImxhc3RfbW9kaWYkMCIsImNmZyQwIiwicmVkdWN0aW9uIiwicmVkdWN0aW9uJDAiLCJpZHNfb2ZfZ3JpZCIsImtleSIsInByZWNfc3Rhcl9vZl9jb25maWciLCJlbnJpY2hfZ3JpZCIsImNvbmZpZ19jbG9zdXJlIiwia2VlcF9sIiwidG9fa2VlcCIsImlkcyIsInByZWNfZWlkcyIsImVtYXAiLCJkIiwiZCQwIiwiZGVwdGgiLCJkZXB0aF9vZl9ldmVudCIsImZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnMiLCJjaGVja19jcmVhdGVfcXVhcmtzIiwiYWlkIiwic2l0ZXMiLCJxdWFya3MiLCJpbnRlcm5hbCIsImNoZWNrX21vZGlmaWVkX3F1YXJrcyIsIm1vZGlmIiwiY2hlY2tfdGVzdGVkX3F1YXJrcyIsImNoZWNrX2V2ZW50X3F1YXJrcyIsImFzaXRlIiwiYXNpdGUkMCIsImFpZCQwIiwiYXNpdGUyIiwiYXNpdGUxIiwicHJldHR5X3ByaW50IiwiZG90Rm9ybWF0IiwiY29tcHJlc3Npb25fdHlwZSIsImxhYmVsIiwiZ3JpZF9saXN0IiwiZXJyX2ZtdCIsImNvbXByZXNzaW9uX3R5cGUkMCIsInoiLCJsaXN0IiwieCQwIiwic3RvcnlfbGlzdCIsInN0b3J5X2xpc3QkMCIsImNwdCIsInN0b3JpZXMiLCJlbnJpY2hlZF9jb25maWciLCJzdGVwcyIsImluZm8iLCJhdl90IiwiZ3JpZF9zdG9yeSIsInRibCIsImF0dF9scyIsInNvcnRlZF9ldmVudHMiLCJkbWFwIiwibm9kZV90b19qc29uIiwiZXZlbnRfa2luZCIsInN0cCIsInJpZCIsInN0cCQwIiwicmlkJDAiLCJzdHAkMSIsInBlcnQiLCJzdHAkMiIsInBlcnQkMCIsIm5vZGVzX3RvX2xpc3QiLCJlaWRzX2F0X2QiLCJscyIsImxzJDAiLCJub2Rlc190b19qc29uIiwiZWRnZV90b19qc29uIiwiZWlkJDAiLCJwcmVjX2VkZ2VzIiwicHJlY19lZGdlc190b19qc29uIiwiY29uZmxfZWRnZXMiLCJwcmVjJDEiLCJwcmVjJDIiLCJib29sIiwiY29uZmxfZWRnZXNfdG9fanNvbiIsInByb2ZpbGluZyIsImRlc2MiLCJ0aXRsZSIsImF0b21fa2luZCIsInByb2ZpbGluZyQwIiwibmFtZSIsInN0b3J5Iiwic2l6ZSIsInRpbWUiLCJwcmludF9zdGF0IiwiZW5yaWNoZWRfZ3JpZCIsImNvdW50X29icyIsIm5fc3RlcCIsImxvbmdlc3Rfc3RvcnkiLCJuX25vbmVtcHR5IiwibGVuZ3RoX3N1bSIsImxlbmd0aF9zcXVhcmVfc3VtIiwiY2MiLCJjYyQwIiwibGVuZ3RoX3NxdWFyZV9zdW0kMCIsImxlbmd0aF9zdW0kMCIsIm5fbm9uZW1wdHkkMCIsImxvbmdlc3Rfc3RvcnkkMCIsIm5fc3RlcCQwIiwiayQwIiwic3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIiwicGkiLCJhZyQxIiwiY29tcGFyZSIsInByaW50IiwiZW1wdHkiLCJpdGVyIiwiaGFzaCIsInByZWRpY2F0ZSIsImxpZnQiLCJwcmVkaWNhdGVfaWQiLCJ0YWIiLCJmaW5kX2RlZmF1bHQiLCJkZWYiLCJmaW5kX29wdGlvbiIsIm1lbSIsInJlY3ljbGUiLCJwcmVkaWNhdGVfbWF4IiwiZW1wdHkkMCIsIml0ZXIkMCIsImZpbmRfZGVmYXVsdCQwIiwiZmluZF9vcHRpb24kMCIsIm1lbSQwIiwiYWRkJDAiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwibWluX2xldmVsIiwic3RyaW5nX29mX2xldmVsIiwibGV2ZWwiLCJsb3dlciIsImhpZ2hlciIsIm5fc3RvcnkiLCJuX2JyYW5jaCIsInN0YXJ0IiwiaW5wcm9ncmVzcyIsInN1Y2Nlc3MiLCJmYWlsbHVyZSIsImludF9vZl9qc29uIiwibWVzc2FnZV90b19qc29uIiwicHJvZ3Jlc3NfYmFyIiwib25lX2NvbXByZXNzaW9uIiwibG9nX2luZm9fdG9fanNvbiIsIm5ld19zdG9yeSIsImludCQwIiwibWVzc2FnZV9vZl9qc29uIiwieCQzIiwibG9nX2luZm9fb2ZfanNvbiIsImwkMSIsImwkMiIsIngkMSIsImwkMyIsIngkMiIsInAkMCIsImdldF9jYXVzYWxfdHJhY2UiLCJnZXRfY2F1c2FsX3RyYWNlX29ubHkiLCJnZXRfd2Vha19jb21wcmVzc2lvbiIsImdldF9zdHJvbmdfY29tcHJlc3Npb24iLCJnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIiwiYnVpbGRfcGFyYW1ldGVyIiwiY2FsbGVkX2Zyb20iLCJub25lIiwic2VuZF9tZXNzYWdlIiwibG9nX3N0ZXBfY2hhbm5lbCQwIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDAiLCJvdXRfY2hhbm5lbF9lcnIkMCIsIm91dF9jaGFubmVsJDAiLCJvdXRfc2VydmVyIiwic2VydmVyIiwiY2hhbm5lbCIsImxvZ19zdGVwX2NoYW5uZWwkMSIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQxIiwib3V0X2NoYW5uZWxfZXJyJDEiLCJvdXRfY2hhbm5lbCQxIiwib3V0X3NlcnZlciQwIiwic2V0X2NvbXByZXNzaW9uX3dlYWsiLCJzZXRfY29tcHJlc3Npb25fc3Ryb25nIiwic2V0X2NvbXByZXNzaW9uX25vbmUiLCJpbml0X2hhbmRsZXIiLCJuX3J1bGVzIiwicnVsZV9uYW1lX2NhY2hlIiwiciIsIm5fYWdlbnRzIiwiYWdlbnRfbmFtZV9jYWNoZSIsInN0ZXBzX2J5X2NvbHVtbiIsInN0cmluZ19vZl9leG4iLCJnZXRfcHJpb3JpdGllcyIsInNldF9maXJzdF9zdG9yeV9wZXJfb2JzIiwic2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9kZWJ1Z2dpbmdfbW9kZSIsInNldF9kZWJ1Z2dpbmdfbW9kZSIsImdldF9sb2dfc3RlcCIsInNldF9sb2dfc3RlcCIsImdldF9sb2dnZXIiLCJzZXRfbG9nZ2VyIiwiZm10IiwiZ2V0X291dF9jaGFubmVsIiwic2V0X291dF9jaGFubmVsIiwiZ2V0X2RlYnVnZ2luZ19jaGFubmVsIiwic2V0X2RlYnVnZ2luZ19jaGFubmVsIiwiZ2V0X2thc2FfcGFyYW1ldGVycyIsInNldF9rYXNhX3BhcmFtZXRlcnMiLCJwYXJhbWV0ZXIkMCIsImRvX3dlX3VzZV9idWNrZXRfc29ydCIsInVzZV9idWNrZXRfc29ydCIsInVzZV9mdXNpb25fc29ydCIsImFsd2F5c19kaXNhbWJpZ3VhdGUiLCJzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSIsImRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyIsInNldF9pdHRlcmF0aW9uX2JvdW5kIiwiZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIiwiZ2V0X3Byb2ZpbGluZ19sb2dnZXIiLCJzdHJpbmdfb2ZfcnVsZV9pZCIsInN0cmluZ19vZl9hZ2VudF9pZCIsImdldF9wcmVkaWNhdGVfbWFwIiwiZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQiLCJnZXRfYmxhY2tsaXN0X2V2ZW50cyIsImlzX3NlcnZlcl9tb2RlIiwiZ2V0X3NlcnZlcl9jaGFubmVsIiwic2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIiwiaXNfc2VydmVyX2NoYW5uZWxfb24iLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkdW1wX2pzb24iLCJtZXNzYWdlIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX3Byb2dyZXNzX2JhciIsInNldF9yZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2Vycm9yX2xvZyIsInNldF9zYXZlX2Vycm9yX2xvZyIsInB1c2hfanNvbiIsImpzb24iLCJyZWYiLCJwb3BfanNvbiIsImVsdF9vcHQiLCJmaWZvIiwiY29tcG9zZV93aXRoX2hhbmRsZXIiLCJzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9pZF9vZl9hZ2VudCIsImFnZW50X25hbWVfb2ZfYWdlbnQiLCJhZ2VudF9vZl9zaXRlIiwiYWdlbnRfaWRfb2Zfc2l0ZSIsImFnZW50X25hbWVfb2Zfc2l0ZSIsInNpdGVfbmFtZV9vZl9zaXRlIiwiZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIiwiYnVpbGRfZ3JpZCIsImVtcHR5X3NldCIsInNpZGUiLCJzdWJzIiwic2lkZV9lZmZlY3QiLCJtYXliZV9zaWRlX2VmZmVjdCIsInNlIiwidHJhbnNsYXRlIiwiaWQiLCJldmVudCQwIiwic2lkZV9lZmZlY3RzX2RzdCIsImluZm8kMCIsImV2ZW50JDEiLCJpZCQwIiwiZXZlbnQkMiIsInNpZGVfZWZmZWN0c19kc3QkMCIsImFjdGlvbnMkMCIsImluZm8kMSIsImlkJDEiLCJ0ZXN0cyQwIiwiY2xlYW5fZXZlbnRzIiwicHJpbnRfc2lkZV9lZmZlY3QiLCJsb2ciLCJzaWRlX2VmZmVjdF9vZl9saXN0IiwibGV2ZWxfb2ZfZXZlbnQiLCJwcmlvcml0eV9vcHQiLCJwcmlvcml0aWVzIiwicHJpb3JpdHkiLCJhZ19pZCIsImRpc2FtYmlndWF0ZSIsImV2ZW50X2xpc3QiLCJldmVudF9saXN0X3JldiIsIm1hcHBpbmciLCJ1c2VkIiwibWF4X2lkIiwibWFwcGluZyQwIiwidXNlZCQwIiwibWF4X2lkJDAiLCJhJDEiLCJjb252ZXJ0X2luaXQiLCJyZW1hbmVudCIsInN0ZXBfbGlzdCIsImFjdGlvbl9saXN0IiwicmVjdXIiLCJhY2MiLCJzb3VwIiwiYWNjJDIiLCJzaXRlX2xpc3QiLCJzb3VwJDAiLCJ0aGlzJDAiLCJzdGFuZGFsb25lIiwidGhpcyQxIiwibWFwIiwidSIsImFnZW50X2luZm8iLCJhc19pbml0IiwicmVzdHJpY3Rpb25fbWFwIiwiYWdpZCIsInJlc3RyaWN0aW9uIiwidW5iaW5kIiwicmVtIiwic19uYW1lIiwiYWdfaW5mbyIsImFnX2luZm8kMCIsInJlbWFuZW50JDAiLCJiaW5kIiwic3BsaXRfaW5pdCIsInJlZmluZWRfc3RlcF9saXN0IiwicmVmaW5lZF9zdGVwIiwiYWRkX2luX3Njb3BlIiwic2NvcGUiLCJvbGRfc2V0IiwibmV3X3NldCIsImRlYWxfd2l0aF90ZXN0cyIsImZpbGxfc2lwaG9uIiwicmV2X3RyYWNlIiwicmVmaW5lZF9zdGVwX3dpdGhfc2NvcGVfbGlzdCIsInNjb3BlJDEiLCJzY29wZSQwIiwic3RhdGUiLCJzdGF0ZV9yZWYiLCJhZ19pbmZvJDEiLCJyZW1hbmVudCQxIiwic2V0JDAiLCJhZ2VudF9pZF9pbl9vYnMiLCJwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyIsInNpZGVzIiwic19pZCIsImluaXRfY3V0IiwiZmluYWxpemVfY3V0IiwiY3V0X3N0ZXAiLCJuX2N1dCIsImtlcHQiLCJzZWVuIiwic2VlbiQwIiwiYWN0aW9uIiwiaW50ZXJmYWNlJDAiLCJsaXN0JDAiLCJlbHQiLCJxMCIsImFnX2lkJDAiLCJzMiIsInMxIiwicTEiLCJ0MSIsImtlcHQkMCIsInNlZW4kMSIsInRlc3QiLCJhZ2VudCIsInByZWRpY2F0ZV9pbmZvIiwic2VlbiQyIiwiY3V0X3Jldl90cmFjZSIsInJldl9ldmVudF9saXN0IiwidHJhY2UiLCJjbGVhbiIsImNvbHVtbiIsImJsYWNrYm9hcmQiLCJ0YWlsIiwiaGVhZCIsImNvbHVtbiQwIiwiYmxhY2tib2FyZCQwIiwicG9wIiwicHJlZGljYXRlX2xpc3QiLCJibGFja2JvYXJkJDEiLCJuX3N0ZXBzIiwic3RlcCIsImJsYWNrYm9hcmQkMyIsInByZV9ldmVudCIsInRlc3RfbGlzdCIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyIsImJ1aWxkX21hcF90ZXN0IiwidGVzdF9tYXAiLCJwcmVkaWNhdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQxIiwiYWdfaWQkMSIsInNpdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQyIiwiYWdfaWQkMiIsInNpdGVfaWQkMSIsInByZWRpY2F0ZV9pZCQzIiwiYWdfaWQxIiwiYWdfaWQyIiwic2l0ZV9pZDEiLCJzaXRlX2lkMiIsInByZWRpY2F0ZV9pZDEiLCJwcmVkaWNhdGVfaWQyIiwiYm9vbF9jcmVhdGlvbiIsImFjdGlvbl9tYXAiLCJsaXN0MiIsImxpc3QxIiwibGlzdDEkMCIsImxpc3QyJDAiLCJhZ2VudF9uYW1lMSIsImFnZW50X25hbWUyIiwiczIkMCIsInMxJDAiLCJhZ19pZDEkMCIsImFnX2lkMiQwIiwiYWdlbnRfbmFtZTIkMCIsInNpdGVfaWQxJDAiLCJzaXRlX2lkMiQwIiwicHJlZGljYXRlX2lkMSQwIiwiYm9vbF9jcmVhdGlvbiQwIiwiYm9vbCQwIiwiYm9vbF9jcmVhdGlvbiQxIiwiYm9vbCQxIiwidmFsdWUiLCJpc19yZW1vdmVfYWN0aW9uIiwidGVzdF9tYXAkMCIsIm1lcmdlZF9tYXAiLCJtZXJnZWRfbWFwJDAiLCJtYXAkMCIsImFjdGlvbiQwIiwidGVzdCQwIiwidGVzdCQxIiwiYWN0aW9uJDEiLCJuc2lkIiwibW9kX3dpdGhvdXRfdGVzdCIsIm5fbW9kaWZpY2F0aW9ucyIsIm9sZF9saXN0IiwidiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsIm1vZF93aXRob3V0X3Rlc3QkMCIsIm1vZF93aXRob3V0X3Rlc3QkMSIsImJvb2xfYWN0aW9uIiwibl9tb2RpZmljYXRpb25zJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uIiwiYmxhY2tib2FyZCQyIiwicHJlZGljYXRlX2xpc3QkMCIsInByZWRpY2F0ZV9saXN0JDEiLCJ5JDAiLCJjYW5kaWRhdGVzIiwiZWlkYiIsImVpZGEiLCJjb2x1bW4kMSIsImNvbHVtbiQyIiwidG9fcG9wIiwiZTIiLCJlMSIsImJsYWNrYm9hcmQkNCIsImJsYWNrYm9hcmQkNSIsImVycm9yJDMiLCJrJDIiLCJsaXN0JDEiLCJrJDEiLCJkZWJ1Z19tb2RlIiwid2FybiIsInBvcyIsImV4biIsImRlZmF1bHQkMCIsImludF9vZl9zdGVwX2lkIiwic3RlcF9pZF9vZl9pbnQiLCJkZWNfc3RlcF9pZCIsImluY19zdGVwX2lkIiwiaW50X29mX3N0ZXBfc2hvcnRfaWQiLCJzdGVwX3Nob3J0X2lkX29mX2ludCIsImluY19zdGVwX3Nob3J0X2lkIiwiZGVjX3N0ZXBfc2hvcnRfaWQiLCJ3ZWFrZW5pbmciLCJpc191bmtub3duIiwiaXNfdW5kZWZpbmVkIiwiY29tcGFyZSQwIiwicHJpbnQkMCIsImNvbXBhcmUkMSIsInByaW50JDEiLCJsZXZlbHMiLCJnZXRfcHJlX2NvbHVtbl9tYXBfaW52IiwiZ2V0X3ByZV9ldmVudCIsInByaW50X3ByZWRpY2F0ZV9pbmZvIiwiaSQwIiwiaSQxIiwiaW50NCIsImludDMiLCJpbnQyIiwiaW50MiQwIiwiaW50JDEiLCJpbnQyJDEiLCJpbnQkMiIsImludDMkMCIsImludDIkMiIsImludCQzIiwiaWQyIiwiaWQxIiwicHJpbnRfa25vd24iLCJzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIiwiYWdlbnRfaWQiLCJpbnRlcm5hbF9zdGF0ZSIsImFnZW50X25hbWUiLCJhZ2VudF9pZCQwIiwicHJpbnRfcHJlZGljYXRlX3ZhbHVlIiwicHJpbnRfcHJlZGljYXRlX2lkIiwicHJpbnRfcHJlYmxhY2tib2FyZCIsIm5ldmVudHMiLCJzZWlkIiwic3RyaWN0bHlfbW9yZV9yZWZpbmVkIiwibW9yZV9yZWZpbmVkIiwiY29uaiIsImNvbXBhdGlibGUiLCJkaXNqdW5jdGlvbiIsImFsbG9jYXRlIiwibWFwX2ludiIsInNpZCQwIiwic2lkIiwiY3JlYXRlX2FnZW50IiwibmV3X2xpc3QiLCJmcmVlX2FnZW50IiwiZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9ub19zdWJzIiwibG9nX2luZm8kMyIsImVycm9yJDQiLCJsb2dfaW5mbyQ0IiwiZXJyb3IkNSIsImJsYWNrYm9hcmQkNiIsImxvZ19pbmZvJDUiLCJlcnJvciQ2IiwiYmxhY2tib2FyZCQ3IiwibG9nX2luZm8kNiIsImVycm9yJDciLCJwcmVkaWNhdGVfaWQyJDAiLCJibGFja2JvYXJkJDgiLCJsb2dfaW5mbyQ3IiwiZXJyb3IkOCIsImJsYWNrYm9hcmQkOSIsImxvZ19pbmZvJDgiLCJlcnJvciQ5IiwiYmxhY2tib2FyZCQxMCIsImxvZ19pbmZvJDkiLCJlcnJvciQxMCIsImJsYWNrYm9hcmQkMTEiLCJsb2dfaW5mbyQxMCIsImVycm9yJDExIiwicHJlZGljYXRlaWQiLCJibGFja2JvYXJkJDEyIiwiZXJyb3IkMTIiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzIiwicHJlZGljYXRlc19vZl9hY3Rpb24iLCJwcmVkaWNhdGVzX29mX3Rlc3QiLCJzaXRlX25hbWUiLCJ0eXBlX29mX3N0ZXAiLCJnZXRfbGV2ZWxfb2ZfZXZlbnQiLCJpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIiwiaW5pdF9zdGVwIiwibnNpZCQwIiwiYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIiwidmFsdWUkMCIsInByZWRpY2F0ZV90YXJnZXRfaWQiLCJzbmFtZSIsInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YSIsImJ0IiwicG90ZW50aWFsX3RhcmdldCIsImJpbmRpbmdfc3RhdGUiLCJmb3JtZXJfc3RhdGVzIiwiYnQkMCIsImluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nIiwiYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyIsImRhdGFfc3RydWN0dXJlIiwiYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUkMCIsImFkZF9zdXJlX3Rlc3QiLCJhZGRfc3Vic190ZXN0IiwiYWRkX3N1YnNfdGVzdF9saW5rIiwibGluayIsImxpbmskMCIsImRhdGFfc3RydWN0dXJlJDEiLCJhZGRfc3VyZV9hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb25fbGluayIsImFkZF9zdGVwX3N0cm9uZyIsInN0ZXBfaWQiLCJhZzFfaWQiLCJhZzJfaWQiLCJzaXRlMV9pZCIsInNpdGUyX2lkIiwidGVzdGVkX3NpdGVzIiwibW9kX3NpdGVzIiwicHJpb3JpdHlfc2l0ZXMiLCJzdXJlX2FnZW50cyIsInN1cmVfYWdlbnQiLCJkYXRhX3N0cnVjdHVyZSQyIiwiYWdlbnQxIiwiYWdlbnQyIiwibWl4X3NpdGUxIiwibWl4X3NpdGUyIiwiZGF0YV9zdHJ1Y3R1cmUkMyIsImRhdGFfc3RydWN0dXJlJDQiLCJhZ2VudCQwIiwic2l0ZV9uYW1lMSIsInNpdGVfbmFtZTIiLCJ3ZWFrMSIsIndlYWsyIiwiYWdlbnQkMSIsImRhdGFfc3RydWN0dXJlJDUiLCJkYXRhX3N0cnVjdHVyZSQ2IiwiYTIiLCJhMSIsInNpZGVfZWZmZWN0JDAiLCJhY3Rpb25fbGlzdCQwIiwidGVzdF9saXN0JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QiLCJmaWN0aXRpb3VzX2xpc3QiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4IiwicnVsZV9hZ2VudF9pZF9zdWJzIiwicnVsZV9hZ2VudF9pZF9tdXRleCIsImluaXRfc3RlcCQwIiwicnVsZV9hZ2VudF9pZF9tdXRleCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDAiLCJmaWN0aXRpb3VzX2xpc3QkMCIsInByZWRpY2F0ZV9pbmZvJDAiLCJydWxlX2FnZW50X2lkX3N1YnMkMCIsImluaXRfc3RlcCQxIiwiaW5pdF9zdGVwJDIiLCJydWxlX2FnZW50X2lkX3N1YnMkMSIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgkMCIsImluaXRfc3RlcCQzIiwibGlua3NfbXV0ZXgiLCJsaW5rc19tdXRleCQwIiwiZmljdGl0aW91c19saXN0JDEiLCJidWlsZF9tYXAiLCJhZGRfc3RhdGUiLCJmYWRkIiwibnNpZF92b2lkIiwibnNpZF9uZXh0IiwicG90ZW50aWFsX3RhcmdldCQwIiwicnVsZV9hZ19pZCIsImZpY3RpdGlvdXNfbGlzdCQyIiwic2lkZV9lZmZlY3QkMSIsInN0ZXBfaWQkMCIsInByZV9zdGVwc19ieV9jb2x1bW4kMCIsIm9ic2VydmFibGVfbGlzdCQwIiwiYmxhY2tib2FyZCQxNCIsIm5saXN0IiwibWl4dHVyZV9hZ19pZCIsInBpZF9ydWxlX2FnZW50X211dGV4IiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgkMCIsInRlc3RfbWFwJDEiLCJhY3Rpb25fbWFwJDAiLCJtX2lkIiwiYWN0aW9uX21hcCQyIiwidGVzdF9tYXAkMiIsIm5saXN0JDAiLCJtZXJnZWRfbWFwJDEiLCJtZXJnZWRfbWFwJDIiLCJsaW5rX211dGV4IiwicnVsZV9hZ19pZDIiLCJydWxlX2FnX2lkMSIsImxfYWdfMSIsImxfYWdfMiIsIm1peHR1cmVfYWdfMSIsInN1YnMkMCIsIm1peHR1cmVfYWdfMiIsImFjdGlvbl9saXN0JDEiLCJ0ZXN0X2xpc3QkMSIsIm1faWQkMCIsImZpY3RpdGlvdXNfbGlzdCQzIiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzJDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMSIsImZpY3RpdGlvdXNfbGlzdCQ0IiwibG9nX2luZm8kMTEiLCJlcnJvciQxMyIsIm1lcmdlZF9tYXAkMyIsIm1lcmdlZF9tYXAkNCIsInNpZGVfZWZmZWN0JDIiLCJvYnNlcnZhYmxlX2xpc3QiLCJibGFja2JvYXJkJDEzIiwiYWRkX3N0ZXAiLCJmaW5hbGl6ZSIsImhldXJpc3RpYyIsImFnZW50c19pbl9vYnMiLCJuX3ByZWRpY2F0ZXMiLCJldmVudF9saXN0X29mX3ByZWRpY2F0ZSIsIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUiLCJuX2V2ZW50cyIsIm1hbmRhdG9yeV9ldmVudHMiLCJnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIiwiZ2V0X3NpZGVfZWZmZWN0IiwiaXNfaWdub3JlZCIsImlzX2ZhaWxlZCIsImlzX3N1Y2NlZWRlZCIsIm51bGxfcG9pbnRlciIsInBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQiLCJpc19iZWZvcmVfYmxhY2tib2FyZCIsImJ1aWxkX3BvaW50ZXIiLCJwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIiwiaXNfYm91bmRhcnkiLCJldmVudF9hZGRyZXNzIiwiYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiaXNfZXhpc3RfZXZlbnQiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uXyIsInBvaW50ZXJfdG9fbmV4dCIsInZhbHVlX2FmdGVyIiwicG9pbnRlcl90b19wcmV2aW91cyIsIm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwiLCJleGlzdCIsInN0cmluZ19vZl9wb2ludGVyIiwicHJlZGljYXRlX3ZhbHVlIiwicG9pbnRlciIsImJvb2xlYW4kMCIsImNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZCIsInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIiwiY2FzZV92YWx1ZSIsInkkMSIsImxpbmUiLCJmaWxlIiwiZHVtbXlfY2FzZV9pbmZvX3N0YXRpYyIsImR1bW15X2Nhc2VfaW5mb19keW5hbWljIiwiY29ycmVjdF9wb2ludGVyIiwiaW50X3NlaWQiLCJkdW1teV9jYXNlX2luZm8iLCJwcm9maWxpbmdfaW5mbyIsImdldF9ldmVudCIsImdldF9uX2VpZCIsImdldF9zdGFja19kZXB0aCIsImZvcmNlZF9ldmVudHMiLCJzaWRlX2VmZmVjdF9vZl9ldmVudCIsImNhc2VfbGlzdF9vZl9laWQiLCJnZXRfY2FzZSIsImNhc2VfYWRkcmVzcyIsImdldF9zdGF0aWMiLCJhZGRyZXNzIiwiY2FzZSQwIiwic3RhdGljJDAiLCJwcmludF9ldmVudF9jYXNlX2FkZHJlc3MiLCJnZXRfbnByZWRpY2F0ZV9pZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCQwIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMiLCJmb2xsb3dfcG9pbnRlcl9kb3duIiwiZm9sbG93X3BvaW50ZXJfdXAiLCJnZXRfZmlyc3RfbGlua2VkX2V2ZW50IiwiZ2V0X2xhc3RfbGlua2VkX2V2ZW50IiwicHJpbnRfa25vd25fY2FzZSIsInByZWYiLCJpbmYiLCJzdWYiLCJzdHJpbmdfb2ZfdmFsdWUiLCJwYiIsInByaW50X2Fzc2lnbm1lbnQiLCJpJDIiLCJpJDMiLCJpJDQiLCJpJDUiLCJpJDYiLCJpJDciLCJsb2ckMCIsImkkOCIsInByaW50X2JsYWNrYm9hcmQiLCJlcnIiLCJhcnJheSIsImokMiIsImokMCIsInN0YXR1cyIsImokMSIsInN0YWNrIiwiZW1wdHlfc3RhY2siLCJwcmVfYmxhY2tib2FyZCIsImV2ZW50X2Nhc2VfbGlzdCIsIm5fc2VpZCIsInVuc29sdmVkX2J5X2xldmVsIiwibGV2ZWxfb3B0JDEiLCJsZXZlbF9vcHQiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmUiLCJsZXZlbF9vcHQkMCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWQiLCJsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGUiLCJwX2lkJDEiLCJwX2lkIiwic2l6ZSQwIiwic2VpZCQxIiwidHJpcGxlIiwic2l6ZSQxIiwibGV2ZWwkMCIsIm9sZCQwIiwidW5zb2x2ZWQiLCJldmVudF9jYXNlX2FkZHJlc3MiLCJzZWlkJDAiLCJwcmVkX3NpemUiLCJwX2lkJDAiLCJ1bnNvbHZlZF9ieV9sZXZlbCQwIiwibGV2ZWwkMSIsIm1hcCQxIiwibG9nX2luZm8kMTIiLCJmaWN0aXRpb3VzX29icyIsImxvZ19pbmZvJDEzIiwiZXhpc3RfY2FzZSIsInNldF9jYXNlIiwiY2FzZV9hZGRyZXNzJDAiLCJjYXNlX3ZhbHVlJDAiLCJjYXNlX2FkZHJlc3MkMSIsImNhc2VfdmFsdWUkMSIsImNhc2VfYWRkcmVzcyQyIiwib2xkJDEiLCJjYXNlX3ZhbHVlJDIiLCJjYXNlX2FkZHJlc3MkMyIsIm9sZCQyIiwiY2FzZV92YWx1ZSQzIiwiaXNfc2VsZWN0ZWRfZXZlbnQiLCJnZXQiLCJjYXNlJDEiLCJjYXNlJDIiLCJjYXNlX2FkZHJlc3MkNCIsImNhc2VfYWRkcmVzcyQ1IiwiY2FzZSQzIiwibHZsIiwiY2FzZV9hZGRyZXNzJDYiLCJjYXNlJDQiLCJleHBvcnRfYmxhY2tib2FyZF90b194bHMiLCJwcmVmaXgiLCJmaWxlX25hbWUiLCJkZXNjX2NoYW4iLCJyb3dfb2ZfcHJlY29uZGl0aW9uIiwiY29sb3JzIiwiYmFja2NvbG9yIiwiY29sb3IiLCJjb2xvciQwIiwidGV4dGNvbG9yIiwiZ2V0Y2VsbCIsInJvdyIsImNvbCIsInByaW50X2Nhc2UiLCJjb2xvcl9mb250IiwiY29sb3JfYmFjayIsInByaW50X2Nhc2VfZnVuIiwicF9pbmZvIiwicm93X3ByZWNvbmRpdGlvbiIsInJvd19wb3N0Y29uZGl0aW9uIiwibWF5YmVrZXB0IiwiZWlkJDEiLCJzdHJpbmdfZWlkIiwidmFsdWVfYmVmb3JlIiwiY2FuZCIsInN0cmluZ19laWQkMCIsInN0YWNrJDAiLCJzdGFjayQxIiwicmVjb3JkX21vZGlmIiwicmVmaW5lIiwib3ZlcndyaXRlIiwiZGVjIiwiYnJhbmNoIiwicmVzZXRfbGFzdF9icmFuY2hpbmciLCJyZXNldF9pbml0IiwiaXNfbWF4aW1hbF9zb2x1dGlvbiIsInRyYW5zbGF0ZV9ibGFja2JvYXJkIiwic3RlcF9hcnJheSIsInNpZGVfYXJyYXkiLCJwcmludF9zdGFjayIsImV2ZW50X2xpc3QkMiIsImV2ZW50X2FycmF5Iiwia2VwdF9ldmVudHMiLCJrZXB0X2V2ZW50cyQwIiwiZXZlbnRfbGlzdCQwIiwicG9pbnRlciQwIiwicHJldl9ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2X2Nhc2UiLCJwcmV2X2VpZCIsInBvaW50ZXIkMSIsInByZXZfZWlkJDAiLCJrZXB0X2V2ZW50cyQxIiwiZXZlbnRfbGlzdCQxIiwiZXZlbnRzX3RvX2tlZXAiLCJuX2V2ZW50c19yZW1vdmVkIiwiY3V0X2NhdXNhbF9mbG93IiwiaW1wb3J0JDAiLCJwcmVibGFja2JvYXJkIiwicmVmaW5lZF9ldmVudCIsInByZWJsYWNrYm9hcmQkMCIsInRvX3hscyIsInByZWJsYWNrYm9hcmQkMSIsInByZWJsYWNrYm9hcmQkMyIsInRvX3hscyQwIiwic3RyaW5nJDAiLCJwcmVibGFja2JvYXJkJDQiLCJwcmVibGFja2JvYXJkJDIiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwiZm9yYmlkZGVuX2V2ZW50cyIsInBhcmFtdGVyIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpIiwiZmlyc3QiLCJzdG9wIiwia19pbml0Iiwia19lbmQiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQiLCJuZXh0X2Nob2ljZSIsInByaW9yaXR5JDAiLCJuX3BfaWQiLCJsZXZlbF9vcHQkMiIsImJlc3QkMSIsImJlc3QiLCJncmFkZSIsImJlc3QkMCIsInN0ZXAkMCIsImV2ZW50X2lkIiwiZXZlbnRfaWQkMCIsInByb3BhZ2F0ZV9kb3duIiwiaW5zdHJ1Y3Rpb25fbGlzdCIsInByb3BhZ2F0ZV9saXN0IiwibmV4dF9ldmVudF9jYXNlX2FkZHJlc3MiLCJib29sMiIsIm5leHRfYWN0aW9uIiwibmV4dF90ZXN0IiwicHJlZGljYXRlX3ZhbHVlJDAiLCJjb25qJDAiLCJsb2dfaW5mbyQxNCIsImxvZ19pbmZvJDE1IiwibmV4dF9hY3Rpb24kMCIsIm5leHRfdGVzdCQwIiwibmV4dF9laWQiLCJsb2dfaW5mbyQxNiIsImxvZ19pbmZvJDE3IiwibG9nX2luZm8kMTgiLCJsb2dfaW5mbyQxOSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNCIsImxvZ19pbmZvJDI1IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUiLCJsb2dfaW5mbyQyMCIsImxvZ19pbmZvJDIxIiwibG9nX2luZm8kMjIiLCJsb2dfaW5mbyQyMyIsImxhc3RfY2hhbmNlX3VwIiwiZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX3ZhbHVlIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV92YWx1ZSQwIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUkMCIsImR1bW15X3VwZGF0ZV9vcmRlciIsImxhc3RfY2hhbmNlX3VwJDAiLCJwcm9wYWdhdGVfdXAiLCJsb2dfaW5mbyQzMSIsIm5ld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2IiwibG9nX2luZm8kMjkiLCJlcnJvciQxNiIsImxvZ19pbmZvJDMwIiwibmV3X3Rlc3QiLCJlcnJvciQxNCIsIm5ld19wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI2IiwiZXJyb3IkMTUiLCJsb2dfaW5mbyQyNyIsImxvZ19pbmZvJDI4IiwibG9nX2luZm8kMzIiLCJsb2dfaW5mbyQzMyIsInByb3BhZ2F0ZSIsImN1dF9jYXNlIiwicG9pbnRlcl9uZXh0IiwicG9pbnRlcl9wcmV2aW91cyIsInJlc3VsdCIsImxvb2tfZG93biIsImxpc3RfdmFsdWVzIiwiY2EiLCJuZXh0X2Nhc2UiLCJwcm9wYWdhdGVfbGlzdCQwIiwibG9va19kb3duJDAiLCJyZWZpbmVfdmFsdWVfYWZ0ZXIiLCJyZWZpbmVfdmFsdWVfYmVmb3JlIiwiZGlzY2FyZF9jYXNlIiwicmVzdWx0JDAiLCJpbnN0cnVjdGlvbl9saXN0JDAiLCJwcm9wYWdhdGVfbGlzdCQxIiwiZ2VuX2V2ZW50IiwiZl9jYXNlIiwic3VjY2VzcyQxIiwic3VjY2VzcyQwIiwic3VjY2VzczIiLCJzdWNjZXNzJDIiLCJhcHBseV9pbnN0cnVjdGlvbiIsImluc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb25fbGlzdCQzIiwicHJvcGFnYXRlX2xpc3QkMiIsInJlc3VsdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQyIiwic3RlcF9pZCQxIiwiYWRkcmVzcyQwIiwiZW1wdHlfY2hvaWNlX2xpc3QiLCJhc3NpZ25fcmVzdWx0IiwiYXNzaWduX3Jlc3VsdCQwIiwiYmFja3RyYWNrIiwiY2hvaWNlX2xpc3QiLCJjaG9pY2VfbGlzdCQwIiwiY2hvaWNlX2xpc3QkMSIsInN1Ymxpc3QiLCJkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIiwibGlzdF9laWQiLCJ0cmFuc2xhdGVfcmVzdWx0IiwiZmlsdGVyIiwic29sIiwic29sJDAiLCJzb2wkMSIsImV2ZW50c190b19yZW1vdmUiLCJzdWIiLCJjb21wcmVzcyIsImxpc3Rfb3JkZXIiLCJjaG9pY2VfbGlzdCQyIiwiY2hvaWNlX2xpc3QkMyIsImNob2ljZV9saXN0JDQiLCJjaG9pY2VfbGlzdCQ1IiwiY2hvaWNlIiwiY2hvaWNlX2xpc3QkNiIsImNob2ljZV9saXN0JDciLCJzdG9yeV9saXN0JDEiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJnb29kb25lcyIsImdvb2RvbmVzJDAiLCJ0b192aXNpdCQxIiwiYmxhY2tfbGlzdCIsImlzX2JsYWNrX2xpc3RlZCIsImR1bW15X2dyYXBoIiwiY29tcGFyZV9lbHQiLCJxdWlja19jb21wYXJlIiwidDIiLCJhdXgiLCJsMiQxIiwiY29tcGFyZV9jYW5vbmljIiwiZ3JhcGhfb2ZfZ3JpZCIsInN1Y2Nfc2l6ZSIsImxhYmVscyIsImNvbmZsaWN0X3ByZWQiLCJsaXN0MiQyIiwibGlzdDIkMSIsImxpc3QxJDEiLCJjb21wYXJlX25vZGUiLCJwcmVoYXNoIiwid2VpZ2h0JDIiLCJmb3JtZXIkMSIsImZvcm1lciIsIndlaWdodCIsImZvcm1lciQwIiwid3QiLCJ3ZWlnaHQkMCIsIndlaWdodCQxIiwiY2Fub25pY2FsaXplIiwiYXNzbyIsImNhbmRpZGF0ZSIsInRvX2JlYXQiLCJjYW5kaWRhdGUkMCIsInRvX2JlYXQkMCIsImNhbmRpZGF0ZSQxIiwicXIiLCJ0ciIsInRvX2JlYXQkMSIsInZpc2l0IiwiZnJlc2hfcG9zIiwiZnJlc2hfcG9zJDAiLCJzaWJibGluZzEiLCJzaWJibGluZzIiLCJtJDAiLCJjYW5kaWRhdGVzJDEiLCJub3RfYmVzdCIsImNhbmRpZGF0ZXMkMCIsInJlc2lkdWUiLCJmcmVzaCIsImVuY29kaW5nIiwidG9fYmVhdF9hZnRlciIsIm5vdF9iZXN0JDAiLCJyZWNvcmQkMCIsIm5vdF9iZXN0JDEiLCJyZWNvcmQkMSIsInJlY29yZCQyIiwibm90X2Jlc3QkMiIsInRvX2JlYXRfYWZ0ZXIkMCIsInNpYmJsaW5nMSQwIiwidG9fYmVhdCQyIiwiZnJlc2hfcG9zJDEiLCJ0b19iZWF0JDMiLCJnJDAiLCJzaWJibGluZzIkMCIsInRvX2JlYXQkNCIsImxpc3QkMiIsImZyZXNoX3BvcyQyIiwibWFwJDIiLCJ0b19iZWF0JDUiLCJsaXN0JDMiLCJzb3J0X291dGVyIiwic29ydF9pbm5lciIsImNvbXBhcmUkMiIsImdldF9jYW5ub25pY2FsX2Zvcm0iLCJ0YWJsZSIsImFzc29jIiwiY2Fubm9uaWMiLCJjYW5ub25pYyQwIiwidGFibGUkMCIsImNob29zZV9mc3QiLCJpbml0X3RhYmxlIiwicGFyYW1ldGVycyIsImFkZF9zdG9yeSIsInByZXRyYWNlIiwic3RvcnlfaW5mbyIsInRhYmxlJDIiLCJ0YWJsZSQzIiwiZ3JhcGgkMCIsInByZWhhc2gkMSIsImxvZ2dlciQwIiwibG9nZ2VyIiwibm9kZV9raW5kIiwiZGlyZWN0aXZlcyIsImFkZF9zdG9yeV9pbmZvIiwiYXNzb19vcHQiLCJjYW5vbmljIiwidXBkYXRlX2Fzc29jIiwiY2Fub25pY19mb3JtIiwiYXV4X2lubmVyMiIsImNhbm9uaWNfZm9ybSQwIiwidHJlZSIsInRhYmxlJDEiLCJpZCQyIiwidGFibGUkNCIsImF1eF9vdXRlcjIiLCJwcmVoYXNoJDAiLCJjYW5ub25pY19mb3JtIiwiYXNzb2MkMCIsImNhbm5vbmljX2Zvcm0kMCIsImlubmVyIiwidGFibGUkNSIsImF1eF9pbm5lciIsInN1ZmZpeCIsImlubmVyX3RyZWUiLCJpbm5lcl90cmVlJDAiLCJpbm5lcl90cmVlJDEiLCJpbm5lcl90cmVlJDIiLCJpZCQzIiwiaWQkNCIsImF1eF9vdXRlciIsIm91dGVyX3RyZWUiLCJpZCQ1IiwidGFibGUkOCIsImlkJDciLCJpZCQ2IiwiZ3JhcGgkMSIsImFzc29jJDEiLCJ0YWJsZSQ2IiwiaW5uZXIkMCIsInRhYmxlJDciLCJpZCQ4IiwidGFibGUkOSIsImlubmVyJDEiLCJzdWZmaXgkMCIsImFzc29jJDIiLCJpbm5lciQyIiwidGFibGUkMTAiLCJvdXRlcl90cmVlJDAiLCJvdXRlcl90cmVlJDEiLCJoYXNoX2xpc3QiLCJlbGVtZW50c190b19zdG9yZSQyIiwiZWxlbWVudHNfdG9fc3RvcmUkMyIsInN0b3JlZF9lbGVtZW50cyQxIiwibGFzdF9lbGVtZW50JDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMyIsImVsZW1lbnRzX3RvX3N0b3JlJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ1IiwibGFzdF9lbGVtZW50JDMiLCJzdG9yZWRfZWxlbWVudHMkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ2IiwibGFzdF9lbGVtZW50JDQiLCJkYWciLCJkYWckMCIsImRhZyQxIiwiZGFnJDIiLCJlbGVtZW50c190b19zdG9yZSIsImVsZW1lbnRzX3RvX3N0b3JlJDAiLCJzdG9yZWRfZWxlbWVudHMiLCJsYXN0X2VsZW1lbnQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMiLCJlbGVtZW50c190b19zdG9yZSQxIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMSIsImxhc3RfZWxlbWVudCQwIiwic3RvcmVkX2VsZW1lbnRzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMiIsImxhc3RfZWxlbWVudCQxIiwiYWNjJDAiLCJzb3J0X2xpc3QiLCJmbGF0X2xpc3QiLCJsaXN0X291dCIsInR1cGxlIiwiY29tcGFyZV9wYWlyIiwiZmxhdF9saXN0JDAiLCJjb3VudF9zdG9yaWVzIiwiZm9sZF90YWJsZSIsIndlX3NoYWxsIiwid2Vfc2hhbGxfbm90IiwiZ2V0X3ByZXRyYWNlX29mX3RyYWNlIiwic2l6ZV9vZl9wcmV0cmFjZSIsInNldF9hbWJpZ3VpdHlfbGV2ZWwiLCJnZXRfY29tcHJlc3NlZF90cmFjZSIsImlzX2NvbXByZXNzZWRfdHJhY2UiLCJ0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWkiLCJ3aXRoX2FtYmlndWl0eSIsInRyYWNlX29mX3ByZXRyYWNlIiwiZ2V0X2lkX29mX2V2ZW50IiwiZ2V0X3NpbXVsYXRpb25fdGltZV9vZl9ldmVudCIsInByaW50X3RyYWNlIiwidHJhbnNmb3JtX3RyYWNlX2dlbiIsImxvZ19tZXNzYWdlIiwiZGVidWdfbWVzc2FnZSIsInByb2ZpbGluZ19ldmVudCIsImthcHBhX2hhbmRsZXIiLCJzaGFsbF93ZV9jb21wdXRlIiwic3RoJDAiLCJwcmludF9pZl96ZXJvIiwicHJvZmlsaW5nX2luZm8kMCIsImxvZ19tZXNzYWdlJDAiLCJwcmV0cmFjZSQwIiwicHJvZmlsaW5nX2luZm8kMSIsInRyYWNlJDAiLCJ0cmFjZSQxIiwicHJvZmlsaW5nX2luZm8kMiIsIm1vbmFkaWNfbGlmdCIsIm1ha2VfdW5hbWJpZ3VvdXMiLCJzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmYiLCJzdGgkMSIsImxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyIsInJlcXVpcmVtZW50IiwiZWZmZWN0IiwidHJhY2UkMiIsIm9uX3RoZV9mbHlfY3V0X2luaXQiLCJvbl90aGVfZmx5X2N1dF9zdGVwIiwib25fdGhlX2ZseV9jdXRfZmluYWxpemUiLCJjdXRfc3RhdGUiLCJyZW1vdmVfb2JzX2JlZm9yZSIsImxhc3RfaW5mbyIsImxhc3RfaW5mbyQwIiwibGFzdF9laWQiLCJzY29yZSIsInNjb3JlJDAiLCJyZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIiwicmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyIsInN0b3J5X3RhYmxlIiwiZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFiIiwiZXJyb3JfaW5pdCIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbSIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdSIsImMkMCIsImNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZSIsIm9ic2VydmFibGVfaWQiLCJldmVudF9pZF9saXN0IiwiZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMiLCJwcmludF9tdXNpY2FsX2dyaWQiLCJjcmVhdGVfc3RvcnlfdGFibGUiLCJjbG9zZV9wcm9ncmVzc19iYXJfb3B0IiwicHJpbnRfZmFpbHMiLCJpbmNfZmFpbHMiLCJmb2xkX3N0b3J5X3RhYmxlX2dlbiIsIm5fc3Rvcmllc19pbnB1dCIsIm5fZmFpbHMiLCJwcm9ncmVzc19iYXIkMCIsIm5fZmFpbHMkMCIsImZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzcyIsImZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9nciIsImdldF9jb3VudGVyIiwic3RvcmVfdHJhY2UiLCJjb21wdXRhdGlvbl9pbmZvJDEiLCJvYnNfaW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMiIsInRyYWNlMiIsImNvbXB1dGF0aW9uX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDAiLCJjb21wdXRhdGlvbl9pbmZvJDMiLCJjb21wdXRhdGlvbl9pbmZvJDQiLCJzdG9yeV90YWJsZSQwIiwiY29tcHV0YXRpb25faW5mbyQ1IiwiZmxhdHRlbl9zdG9yeV90YWJsZSIsImxpc3Rfb3JkZXIkMCIsInN0cm9uZ2x5X2NvbXByZXNzIiwid2Vha2x5X2NvbXByZXNzIiwiY29udmVydF90cmFjZV9pbnRvX2dyaWQiLCJjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3QiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2wiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQxIiwic29ydF9zdG9yeV9saXN0IiwiZXhwb3J0X3N0b3J5X3RhYmxlIiwiaGFzX29icyIsImZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiIsInN0aCQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOSIsIm5fZmFpbCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQxIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNCIsImJhciQwIiwibl9mYWlsJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNSIsIm91dHB1dF9vcHQiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ2IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDciLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOCIsImZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2ZfbyIsImxvZ19zdGVwIiwib2JzZXJ2YWJsZV9oaXQiLCJjYXVzYWxfcGFzdCIsImluZm8kMiIsImNvcHlfbG9nX2luZm8iLCJjb21wYXJlX2Nhbm9uaWNhbF9mb3JtIiwiY29tcHV0ZV9jYW5vbmljYWxfZm9ybSIsImtleV9vZl9ldmVudCIsImNyZWF0ZV9ibGFja19saXN0IiwiYmxhY2tsaXN0IiwiYmxhY2tsaXN0JDAiLCJyZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQiLCJsYXN0X2VpZF9pbl9wcmV0cmFjZSIsInByb2ZpbGluZ19zdGF0ZV90b19qc29uIiwiZXJyb3JfbGlzdF90b19qc29uIiwiY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiIsImNtcF9vcHQiLCJjbXBfZmxvYXRfb3B0IiwiY21wX2ludF9vcHQiLCJnZW5fYmluX29wdCIsIm9wIiwiYWRkX2Zsb2F0X29wdCIsIm11bHRfZmxvYXRfb3B0IiwibXVsdF9pbnRfb3B0IiwibWF4X29wdCIsImNmbG93X3BhcmFtZXRlcnMiLCJuZXZlciIsImdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiIsInN0b3JlX3Jlc3VsdCIsImdsb2JhbF9zdGF0dXMiLCJzdG9wX25leHQiLCJnbG9iYWxfc3RhdHVzJDAiLCJzdG9wJDAiLCJnbG9iYWxfc3RhdHVzJDEiLCJnbG9iYWxfc3RhdHVzJDIiLCJzdGFydF9pdGVyYXRpb24iLCJlbmRfc2ltcGxpZmljYXRpb24iLCJnZXRfc3RkX2J1ZmZlciIsImNmbG93X3N0YXRlIiwiZ2V0X2Vycl9idWZmZXIiLCJnZXRfcHJvZmlsaW5nX2J1ZmZlciIsImdldF9icmFuY2hfYW5kX2N1dF9zdGF0dXMiLCJnZXRfcHJvZ3Jlc3NfYmFyIiwiZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJnZXRfY2F1c2FsX2Zsb3dfdGFibGUiLCJnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsImdldF93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsImdldF9lcnJvcl9saXN0Iiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsImNmbG93X3N0YXRlX3B0ciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4Iiwic2F2ZV9wcm9ncmVzc19iYXJfYXV4IiwicmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4Iiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1Iiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfIiwic2F2ZV9lcnJvcl9sb2dfYXV4IiwicmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXgiLCJsb2dnZXJzIiwicmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciIsImNmbG93X3N0YXRlX3B0cl9vcHQiLCJkYXRhIiwibGlmdF9yZXNldCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGUiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUkMCIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9lcnJvcl9saXN0IiwicmVkaXJlY3Rfc3RkX2J1ZmZlciIsInJlZGlyZWN0X2Vycl9idWZmZXIiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyJDAiLCJpbml0X3NlY3JldF9sb2dfaW5mbyIsImRvX25vdF9sb2ciLCJjb21wcmVzc19hbmRfcHJpbnQiLCJqc19pbnRlcmZhY2UiLCJwYXJhbWV0ZXIkMSIsInBhcmFtZXRlciQxMiIsInBhcmFtZXRlciQyIiwiY2F1c2FsX3RyYWNlX29uIiwid2Vha19jb21wcmVzc2lvbl9vbiIsInN0cm9uZ19jb21wcmVzc2lvbl9vbiIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInBhcmFtZXRlciQzIiwicGFyYW1ldGVyJDQiLCJwYXJhbWV0ZXIkNSIsInBhcmFtZXRlciQ2IiwicGFyYW1ldGVyJDciLCJwYXJhbWV0ZXIkOCIsInBhcmFtZXRlciQ5IiwicGFyYW1ldGVyX2NhdXNhbCIsInBhcmFtZXRlcl93ZWFrIiwicGFyYW1ldGVyX3N0cm9uZyIsInN0ZXBfbGlzdCQwIiwic3Ryb25nJDAiLCJlcnJvciQxOSIsInN0ZXBfbGlzdCQxIiwic3RlcF9saXN0JDIiLCJzdGVwX2xpc3QkMyIsInRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiIsImNhdXNhbF9zdG9yeV9hcnJheSIsImNhdXNhbF9zdG9yeV9saXN0IiwiY2F1c2FsX3N0b3J5X2xpc3QkMCIsImNhdXNhbF90YWJsZSIsInBhcmFtZXRlcl9kZWVwZXIiLCJldmVudF9saXN0JDMiLCJ3ZWFrbHlfc3RvcnlfdGFibGUiLCJ0YWJsZTIkMCIsInRhYmxlMyQwIiwid2Vha19zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSQwIiwid2Vha19zdG9yeV90YWJsZSQwIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDEiLCJlcnJvciQyOSIsImNhdXNhbF9zdG9yeV90YWJsZSQyIiwiZXJyb3IkMzAiLCJuX2NhdXNhbF9zdG9yaWVzIiwicGFyYW1ldGVyJDExIiwibGlzdF9pbmZvIiwid2Vha2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQzMSIsIndlYWtseV9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMzIiLCJuX3dlYWtfc3RvcmllcyIsInBhcmFtZXRlciQxMCIsInJlZmluZWRfZXZlbnRfbGlzdCIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlIiwic3Ryb25nbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDE3IiwiZXJyb3IkMTgiLCJleHBvcnQkMCIsImVycm9yJDIwIiwiZXJyb3IkMjEiLCJlcnJvciQyMiIsImV4cG9ydCQxIiwiZXJyb3IkMjMiLCJlcnJvciQyNCIsImVycm9yJDI1IiwiZXhwb3J0JDIiLCJlcnJvciQyNiIsImVycm9yJDI3IiwiZXJyb3IkMjgiLCJvbl9tZXNzYWdlIiwidGV4dCIsInN0Iiwibm9uZSQwIiwiYiQxIiwid2VhayQwIiwiYiQyIiwiZSQwIiwiZm9sZCIsImNvbXBhcmVfbGlzdCIsImgxIiwiaDIiLCJjb21wYXJlX3N1cGVybGlzdCIsInNvcnQiLCJzdXBlcmxpc3QiLCJkdW1wX3N1cGVyX2xpc3QiLCJjb21wYXJlX2ZzdF90cmlwbGUiLCJzbWFzaCIsImFjY3UkMSIsInRvX2RvJDEiLCJjdXJyZW50JDIiLCJ0b19kbyIsImN1cnJlbnQiLCJ0b19kbyQwIiwiY3VycmVudCQwIiwiY3VycmVudCQxIiwiZXJyb3JfbXNnIiwib3B0IiwicmFuZ2UiLCJ0ZXh0Iiwic3RoIiwic2V2ZXJpdHkiLCJyZXN1bHRfZXJyb3JfbXNnIiwicmVzdWx0X2NvZGUiLCJtZXNzYWdlIiwicmVzdWx0X21lc3NhZ2VzIiwibWVzc2FnZXMiLCJyZXN1bHRfZXJyb3JfZXhjZXB0aW9uIiwiZSIsIm1ldGhvZF9oYW5kbGVyX2Vycm9ycyIsIm1oIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJ4IiwibCIsIm1ldGhvZF9oYW5kbGVyX21lc3NhZ2VzIiwicmVzdWx0X2thc2EiLCJyZXN1bHRfYmluZF9sd3QiLCJvayIsInN0YXR1cyIsInZhbHVlIiwiZGF0YSIsInJlc3VsdF9mb2xkX2x3dCIsImYiLCJpZCIsInQiLCJoIiwicmVzdWx0IiwicmVzdWx0X2NvbWJpbmUiLCJkYXRhXzEiLCJkYXRhX3IiLCJtZDVzdW0iLCJ3cml0ZV9zbmFwc2hvdF9pZCIsInN0cmluZ19vZl9zbmFwc2hvdF9pZCIsImxlbiIsIm9iIiwicmVhZF9zbmFwc2hvdF9pZCIsInNuYXBzaG90X2lkX29mX3N0cmluZyIsInMiLCJ3cml0ZV9zbmFwc2hvdCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc25hcHNob3RfZGV0YWlsIiwic25hcHNob3RfZGV0YWlsX29mX3N0cmluZyIsIndyaXRlX3NuYXBzaG90X2lkX2xpc3QiLCJyZWFkX3NuYXBzaG90X2lkX2xpc3QiLCJzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfc2l0ZV9ncmFwaCIsInN0cmluZ19vZl9zaXRlX2dyYXBoIiwicmVhZF9zaXRlX2dyYXBoIiwic2l0ZV9ncmFwaF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3N0YXRlIiwic3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUiLCJyZWFkX3NpbXVsYXRpb25fc3RhdGUiLCJwIiwibGIiLCJ4JDAiLCJ4JDEiLCJzaW11bGF0aW9uX3N0YXRlX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc2VlZCIsInN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQiLCJyZWFkX3NpbXVsYXRpb25fc2VlZCIsInNpbXVsYXRpb25fc2VlZF9vZl9zdHJpbmciLCJ3cml0ZV9pbnRfbnVsbGFibGUiLCJyZWFkX2ludF9udWxsYWJsZSIsIndyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJpc19maXJzdCIsInN0cmluZ19vZl9zaW11bGF0aW9uX3Byb2dyZXNzIiwicmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW4iLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW4kMCIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhYyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfciIsInBvcyIsImkiLCJmJDAiLCJpJDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJ4JDgiLCJ4JDkiLCJ4JDEwIiwic2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJyZWFkX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSIsIndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwic3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwicmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciIsImZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QiLCJmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGkiLCJmaWVsZF9zaW11bGF0aW9uX3NlZWQiLCJmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQiLCJ3cml0ZV9wbG90Iiwid3JpdGVfZGlucyIsIndyaXRlX2ZpbGVfbGluZXMiLCJ3cml0ZV9zbmFwc2hvdHMiLCJ3cml0ZV9pbnB1dHMiLCJ3cml0ZV9sb2dfbWVzc2FnZXMiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQiLCJyZWFkX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9wbG90IiwicmVhZF9kaW5zIiwicmVhZF9maWxlX2xpbmVzIiwicmVhZF9zbmFwc2hvdHMiLCJyZWFkX2lucHV0cyIsInJlYWRfbG9nX21lc3NhZ2VzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2wiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2giLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWUiLCJzaW11bGF0aW9uX291dHB1dF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiIsInN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudCIsInJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzaW11bGF0aW9uX2ludGVydmVudGlvbl9vZl9zdHIiLCJ3cml0ZV9vdXRwdXRfOTM0MGFkNiIsInJlYWRfb3V0cHV0XzkzNDBhZDYiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHAiLCJzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmkiLCJ3cml0ZV9zaW11bGF0aW9uX2luZm8iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvIiwicmVhZF9zaW11bGF0aW9uX2luZm8iLCJmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MiLCJmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0Iiwic2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25faWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pZCIsInJlYWRfc2ltdWxhdGlvbl9pZCIsInNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0IiwicmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IiwiZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11Iiwic2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmciLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJzaGFyaW5nX2xldmVsX29mX3N0cmluZyIsIndyaXRlX3Jlc3VsdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJzdHJpbmdfb2ZfcmVzdWx0IiwicmVhZF9yZXN1bHQiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsInJlc3VsdF9vZl9zdHJpbmciLCJ3cml0ZV9wYXJzaW5nX2NvbXBpbCIsInN0cmluZ19vZl9wYXJzaW5nX2NvbXBpbCIsInJlYWRfcGFyc2luZ19jb21waWwiLCJwYXJzaW5nX2NvbXBpbF9vZl9zdHJpbmciLCJ3cml0ZV9uYnIiLCJzdHJpbmdfb2ZfbmJyIiwicmVhZF9uYnIiLCJuYnJfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX25icl9saXN0IiwicmVhZF9zdHJpbmdfbmJyX2xpc3QiLCJzdGRfdHVwbGUiLCJlbmRfb2ZfdHVwbGUiLCJ4MCIsIngxIiwid3JpdGVfcHJvamVjdF9wYXJzZSIsInN0cmluZ19vZl9wcm9qZWN0X3BhcnNlIiwicmVhZF9wcm9qZWN0X3BhcnNlIiwiZmllbGRfcGF0dGVybl9zaGFyaW5nIiwiZmllbGRfYXN0IiwiZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4iLCJwcm9qZWN0X3BhcnNlX29mX3N0cmluZyIsIndyaXRlX3Byb2plY3RfcGFyYW1ldGVyIiwic3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyIiwicmVhZF9wcm9qZWN0X3BhcmFtZXRlciIsImZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plYyIsInByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3Bsb3RfbGltaXQiLCJzdHJpbmdfb2ZfcGxvdF9saW1pdCIsInJlYWRfcGxvdF9saW1pdCIsImZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IiwiZmllbGRfcGxvdF9saW1pdF9wb2ludHMiLCJwbG90X2xpbWl0X29mX3N0cmluZyIsInN0cmluZ19vZl9wbG90X3BhcmFtZXRlciIsInBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyIsInN0cmluZ19vZl9wbG90IiwicGxvdF9vZl9zdHJpbmciLCJ3cml0ZV9tZXNzYWdlIiwic3RyaW5nX29mX21lc3NhZ2UiLCJyZWFkX21lc3NhZ2UiLCJtZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2xvZ19tZXNzYWdlIiwic3RyaW5nX29mX2xvZ19tZXNzYWdlIiwicmVhZF9sb2dfbWVzc2FnZSIsImxvZ19tZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2thcHBhX2NvZGUiLCJzdHJpbmdfb2Zfa2FwcGFfY29kZSIsInJlYWRfa2FwcGFfY29kZSIsImthcHBhX2NvZGVfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX251bGxhYmxlIiwicmVhZF9zdHJpbmdfbnVsbGFibGUiLCJ3cml0ZV9maWxlX2xpbmUiLCJzdHJpbmdfb2ZfZmlsZV9saW5lIiwicmVhZF9maWxlX2xpbmUiLCJmaWVsZF9maWxlX2xpbmVfbmFtZSIsImZpZWxkX2ZpbGVfbGluZV90ZXh0IiwiZmlsZV9saW5lX29mX3N0cmluZyIsIndyaXRlX2ZpbGVfbGluZV9saXN0IiwicmVhZF9maWxlX2xpbmVfbGlzdCIsInN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsIiwiZmlsZV9saW5lX2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbGlzdCIsInJlYWRfc3RyaW5nX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2NhdGFsb2ciLCJmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9lbnZpcm9ubWVudF9pbmZvIiwic3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8iLCJyZWFkX2Vudmlyb25tZW50X2luZm8iLCJmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyIsImZpZWxkX2Vudmlyb25tZW50X2J1aWxkIiwiZW52aXJvbm1lbnRfaW5mb19vZl9zdHJpbmciLCJ3cml0ZV9kaW5faWQiLCJzdHJpbmdfb2ZfZGluX2lkIiwicmVhZF9kaW5faWQiLCJkaW5faWRfb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkX2xpc3QiLCJyZWFkX2Rpbl9pZF9saXN0Iiwic3RyaW5nX29mX2Rpbl9jYXRhbG9nIiwiZGluX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZGluIiwic3RyaW5nX29mX2RpbiIsInJlYWRfZGluIiwiZGluX29mX3N0cmluZyIsIm5ld19tYWlsYm94IiwicmVjZWl2ZSIsIm1haWxib3giLCJ0aHJlYWQiLCJ0aHJlYWQkMCIsIm91dCIsInRocmVhZCQxIiwidGhyZWFkJDIiLCJ0aHJlYWQkMyIsInRocmVhZCQ0IiwidGhyZWFkJDUiLCJ0aHJlYWQkNiIsImpzb24iLCJ0aHJlYWQkNyIsImpzb24kMCIsInRocmVhZCQ4IiwianNvbiQxIiwidGhyZWFkJDkiLCJqc29uJDIiLCJ0aHJlYWQkMTAiLCJqc29uJDMiLCJ0aHJlYWQkMTEiLCJqc29uJDQiLCJ0aHJlYWQkMTIiLCJqc29uJDUiLCJ0aHJlYWQkMTMiLCJqc29uJDYiLCJ0aHJlYWQkMTQiLCJqc29uJDciLCJ0aHJlYWQkMTUiLCJ0aHJlYWQkMTYiLCJ0aHJlYWQkMTciLCJ0aHJlYWQkMTgiLCJ0aHJlYWQkMTkiLCJ0aHJlYWQkMjAiLCJ0aHJlYWQkMjEiLCJpc19jb21wdXRpbmciLCJzZWxmXzEiLCJoYW5kbGUiLCJyZXF1ZXN0IiwiZmVlZGVyIiwiYiIsImZpbGVfaWQiLCJmaWxlX2NvbnRlbnQiLCJmaWxlX3Bvc2l0aW9uIiwiYXN0IiwiY29tcGlsIiwiYWNjdXJhY3kiLCJmd2QiLCJid2QiLCJvcmlnaW4iLCJ0b3RhbCIsImZpbGVuYW1lIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJwYXR0ZXJuU2hhcmluZyIsIm92ZXJ3cml0ZXMiLCJwYXVzZSIsInBhcmFtZXRlciIsImludGVydmVudGlvbiIsIndyaXRlX3NuYXBzaG90X2RldGFpbCIsInJlYWRfc25hcHNob3RfZGV0YWlsIiwid3JpdGVfc25hcHNob3RfY2F0YWxvZyIsInJlYWRfc25hcHNob3RfY2F0YWxvZyIsIndyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInN0cmluZ19vZl9zaW11bGF0aW9uX2VmZmljaWVuYyIsInJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5Iiwic2ltdWxhdGlvbl9lZmZpY2llbmN5X29mX3N0cmluIiwid3JpdGVfYXBpX3Jlc3VsdCIsInN0cmluZ19vZl9hcGlfcmVzdWx0IiwicmVhZF9hcGlfcmVzdWx0IiwiYXBpX3Jlc3VsdF9vZl9zdHJpbmciLCJ3cml0ZV9hcGlfbWVzc2FnZSIsInN0cmluZ19vZl9hcGlfbWVzc2FnZSIsInJlYWRfYXBpX21lc3NhZ2UiLCJhcGlfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9hcGlfbWVzc2FnZV9saXN0IiwicmVhZF9hcGlfbWVzc2FnZV9saXN0Iiwid3JpdGVfZmlsZV9saW5lX2NhdGFsb2ciLCJyZWFkX2ZpbGVfbGluZV9jYXRhbG9nIiwid3JpdGVfZGluX2NhdGFsb2ciLCJyZWFkX2Rpbl9jYXRhbG9nIiwid3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwic3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVuIiwicmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQiLCJ4JDM1IiwieCQxNyIsIngkMjYiLCJ4JDI1IiwieCQyNCIsIngkMjMiLCJ4JDIyIiwieCQyMSIsIngkMjAiLCJ4JDE5IiwieCQxOCIsIngkMzQiLCJ4JDMzIiwieCQzMiIsIngkMzEiLCJ4JDMwIiwieCQyOSIsIngkMjgiLCJ4JDI3IiwicmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluIiwid3JpdGVfcmVzdWx0XzRjYTZiOGYiLCJyZWFkX3Jlc3VsdF80Y2E2YjhmIiwic3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UiLCJyZXN0X3Jlc3BvbnNlX29mX3N0cmluZyIsIndyaXRlX3Bsb3RfcGFyYW1ldGVyIiwicmVhZF9wbG90X3BhcmFtZXRlciIsIndyaXRlX3Jlc3RfcmVxdWVzdCIsInN0cmluZ19vZl9yZXN0X3JlcXVlc3QiLCJyZWFkX3Jlc3RfcmVxdWVzdCIsInJlc3RfcmVxdWVzdF9vZl9zdHJpbmciLCJ3cml0ZV9yZXNwb25zZV9jb250ZW50Iiwic3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQiLCJyZWFkX3Jlc3BvbnNlX2NvbnRlbnQiLCJyZXNwb25zZV9jb250ZW50X29mX3N0cmluZyIsIndyaXRlX3Jlc3VsdF84OTBkOWZlIiwicmVhZF9yZXN1bHRfODkwZDlmZSIsInN0cmluZ19vZl9yZXNwb25zZSIsInJlc3BvbnNlX29mX3N0cmluZyIsIndyaXRlX3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVxdWVzdCIsInJlYWRfcmVxdWVzdCIsInJlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfaWQiLCJzdHJpbmdfb2ZfaWQiLCJyZWFkX2lkIiwiaWRfb2Zfc3RyaW5nIiwid3JpdGVfZGF0YSIsInJlYWRfZGF0YSIsImZpZWxkX2lkIiwiZmllbGRfZGF0YSIsIndyaXRlX2ZpbGVfbGluZV9kZXRhaWwiLCJyZWFkX2ZpbGVfbGluZV9kZXRhaWwiLCJvbl9tZXNzYWdlIiwibWFuYWdlciIsInBvc3RfbWVzc2FnZSIsInRleHRfbWVzc2FnZSIsImhhbmRsZXIiLCJwYWNrIiwibWVzc2FnZSQwIiwiZmlsZV9saW5lX2lkIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJkaW5faWQiLCJ2YXJpYWJsZV9vdmVyd3JpdHRlbiIsInBhdHRlcm5fc2hhcmluZyIsInBsb3RfcGFyYW1ldGVyIiwic25hcHNob3RfaWQiLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsInNpbXVsYXRpb25fcGFyYW1ldGVyJDAiLCJyZXNwb25zZSIsInBhdXNlX2NvbmRpdGlvbiIsImZpbGVfbGluZV9saXN0IiwiZmx1eF9tYXBfaWQiLCJmbHV4X21hcCIsImxvZ19tZXNzYWdlIiwicGxvdCIsInNuYXBzaG90Iiwic2ltdWxhdGlvbl9zdGF0dXMiLCJlZmZpY2llbmN5IiwiaW5mbyIsInNpbXVsYXRpb25faWQiLCJzZWxmXzIiLCJyZXNwb25zZV90ZXh0IiwibWFpbGJveGVzIiwibWFpbGJveGVzJDAiLCJtZXNzYWdlX3RleHQiLCJhcGlfc25hcHNob3RfZG90IiwiYXBpX3NuYXBzaG90X2thcHBhIiwiYXBpX3NpbXVsYXRpb25fc3RhdHVzIiwicHJvZ3Jlc3MiLCJkZXRhaWwiLCJvdXRwdXQiLCJhZ2VudF9jb3VudCIsInNwZWNpZXMiLCJ3cml0ZTEiLCJvYyIsIm4iLCJ3cml0ZTIiLCJ3cml0ZTQiLCJ3cml0ZTRfaW50Iiwid3JpdGVzdHJpbmciLCJkb3N0aW1lX29mX3VuaXh0aW1lIiwidG0iLCJvcGVuX291dCIsImNvbW1lbnQiLCJjbG9zZV9vdXQiLCJvZmlsZSIsInN0YXJ0X2NkIiwidmVyc2lvbiIsImRhdGUiLCJ0aW1lIiwiY2Rfc2l6ZSIsIm51bV9lbnRyaWVzIiwiYWRkX2VudHJ5X2hlYWRlciIsImV4dHJhIiwibGV2ZWwiLCJtdGltZSIsImFkZF9kYXRhX2Rlc2NyaXB0b3IiLCJjcmMiLCJjb21wcl9zaXplIiwidW5jb21wcl9zaXplIiwiZW50cnkiLCJhZGRfZW50cnkiLCJuYW1lIiwic3RoJDAiLCJzdGgkMSIsInN0aCQyIiwiY3JjJDAiLCJlJDAiLCJhZGRfZW50cnlfZ2VuZXJhdG9yIiwiZmluaXNoZWQiLCJjaGVjayIsImJ1ZiIsIm1zZ19wcm9jZXNzX25vdF9wYXVzZWQiLCJleG4iLCJjYXRjaF9lcnJvciIsInJhbmdlJDAiLCJyYW5nZSQxIiwibWVzc2FnZSQxIiwiZXJyb3IiLCJtZXNzYWdlJDIiLCJwYXJzZSIsInZhcl9vdmVyd3JpdGUiLCJzeXN0ZW1fcHJvY2VzcyIsInlpZWxkJDAiLCJsb2dfYnVmZmVyIiwibG9nX2Zvcm0iLCJpbnB1dHNfYnVmZmVyIiwiaW5wdXRzX2Zvcm0iLCJjb25mIiwid2FybmluZyIsIm1zZyIsImFzdF9jb21waWxlZF9kYXRhIiwibGFzdHlpZWxkIiwib3V0cHV0cyIsImluaXRfbCIsIndpdGhfdHJhY2UiLCJlbnYiLCJjb3VudGVyIiwidGhlU2VlZCIsInRoZVNlZWQkMCIsInJhbmRvbV9zdGF0ZSIsInN0YXRlIiwiZ3JhcGgiLCJtYXhDb25zZWN1dGl2ZUNsYXNoIiwiZHVtcElmRGVhZGxvY2tlZCIsImNvbnRhY3RfbWFwIiwic2ltdWxhdGlvbiIsImZsdXhfbmFtZSIsIm5ld19vYnNlcnZhYmxlcyIsImZpbGVfbGluZSIsIm5hIiwibGluZXMiLCJzdCIsImFscmVhZHlfdGhlcmUiLCJzbmFwc2hvdF9maWxlIiwibWl4IiwiZmlsZSIsImZpbmFsaXplX3NpbXVsYXRpb24iLCJydW5fc2ltdWxhdGlvbiIsInN0b3BwZWQiLCJyc3RvcCIsIml0ZXIiLCJzdG9wIiwic3RvcCQwIiwic3RhcnQiLCJsZXhidWYiLCJzZWVkIiwiZmlyc3Rfb2JzIiwicGVydHVyYmF0aW9uIiwiZm9ybWF0dGVyIiwidiIsImNvbnRpbnVlJDAiLCJnZXRfcmF3X3RyYWNlIiwiZ2V0X3Jhd19hc3QiLCJtJDEiLCJtJDAiLCJtIiwiYmluZF9zaW11bGF0aW9uIiwic2ltdWxhdGlvbiQwIiwiZGV0YWlsX3Byb2plY3Rpb24iLCJwcm9qZWN0aW9uIiwic2ltdWxhdGlvbl9kZXRhaWwiLCJlcnJvcnMiLCJmaWxlX2xpbmVzIiwiZmlsZV9saW5lX2NhdGFsb2ciLCJmbHV4X21hcF9jYXRhbG9nIiwiZmx1eF9tYXBzX2xpc3QiLCJzZWxmXzMiLCJzZWxmXzQiLCJwbG90X2xpbWl0IiwicGxvdF90aW1lX3NlcmllcyIsInBsb3RfZGV0YWlsX3NpemUiLCJwbG90X2xpbWl0X29mZnNldCIsInBsb3RfbGltaXRfcG9pbnRzIiwib2Zmc2V0IiwibmIiLCJuYiQwIiwibmV3X3Bsb3RfdGltZV9zZXJpZXMiLCJzZWxmXzUiLCJzbmFwc2hvdHMiLCJzbmFwc2hvdF9jYXRhbG9nIiwiYWNjIiwic25hcHNob3RfbGlzdCIsInNlbGZfNiIsImhhcmFraXJpIiwic2VlZCQwIiwic2ltdWxhdGlvbl9zZWVkIiwiZmFjYWRlIiwiY29udGVudCIsImZsdXgiLCJkaW5fbmFtZSIsIm5hbWUkMCIsInNpbXVsYXRpb25fcGVydHVyYmF0aW9uIiwicHJpbnRfY29tcHJlc3Npb25fbW9kZXMiLCJzdHJvbmciLCJ3ZWFrIiwiY2F1c2FsIiwiaW5pdGlhbF9zdGF0ZSIsInVwZGF0ZV9zdGF0ZSIsImluaXRfc3RhdGUiLCJjdXJyZW50X3N0YXRlIiwibSQyIiwiYyIsImluZm9zIiwiY20iLCJ0cmFjZV90ZXh0IiwicmVxdWVzdCQ0IiwicmVxdWVzdCQzIiwicmVxdWVzdCQyIiwicmVxdWVzdCQxIiwicmVxdWVzdCQwIiwiZXJyIiwiaWQkMCIsInBvc3QiLCJvdXRidWYiLCJvdXRiIiwiYSIsIm8iLCJiJDAiLCJpc19ydW5uaW5nIiwicnVudGltZV9zdGF0ZSIsInNldF9zdGF0ZV9lcnJvciIsInN0YXRlX2Vycm9yIiwiaGFzX2Vycm9ycyIsImFkZF9lcnJvciIsImxvY2F0aW9uIiwiZXJyb3JzIiwiY3VycmVudF9zdGF0ZV9lcnJvciIsIm5ld19zdGF0ZV9lcnJvciIsImFjYyIsInZhbHVlIiwid3JhcCIsIm9wdCIsInIiLCJzdGgiLCJhcHBlbmQiLCJ1cmxfYXJncyIsIm9wdCIsImtleSIsInN0aCIsImRlZmF1bHQkMCIsImFyZ3MiLCJrIiwic29tZSIsImNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdCIsImxhdW5jaF9hZ2VudCIsIm9uQ2xvc2UiLCJtZXNzYWdlX2RlbGltaXRlciIsImNvbW1hbmQiLCJhcmdzIiwiaGFuZGxlciIsImJ1ZmZlciIsIm1zZyIsIm1zZyQwIiwicHJlZml4Iiwic3VmZml4IiwibXNnJDEiLCJjb25maWd1cmF0aW9uIiwieCIsInNlbGZfMSIsInRpbWVvdXQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInN3aXRjaF9yZSIsInN0b3JfY29tbWFuZCIsInN3aXRjaF9tYWlsYm94IiwidXBkYXRlX3N0b3Jfc3RhdGUiLCJzdG9yX3N0YXRlIiwicnVubmluZ19yZWYiLCJzdG9yX3Byb2Nlc3MiLCJtZXNzYWdlX3RleHQiLCJyZXF1ZXN0X3VwIiwidiIsInJlcXVlc3RfZG93biIsImlzX2NvbXB1dGluZyIsInNlbmQiLCJ0aW1lb3V0IiwicmVxdWVzdF9jb3VudCIsInVybCIsIm1ldGgiLCJkYXRhIiwiaHlkcmF0ZSIsImZlZWRlciIsInJlcGx5IiwiaGFuZGxlciIsInN0YXR1cyIsInJlc3BvbnNlX3RleHQiLCJyZXN1bHRfY29kZSIsInJlc3VsdF9jb2RlJDAiLCJyZXNwb25zZSIsInJlc3VsdCIsImthc2FfZXJyb3IiLCJsIiwiYWNjIiwibSIsInNlbGZfMSIsInMiLCJmaWxlX2xpbmVfaWQiLCJsaW5lcyIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwiZmx1eF9tYXBfaWQiLCJzbmFwc2hvdF9pZCIsInBsb3RfbGltaXQiLCJwbG90X2xpbWl0X3BvaW50cyIsInBsb3RfbGltaXRfb2Zmc2V0IiwidmFsdWUiLCJrZXkiLCJhcmdzIiwicGF1c2VfY29uZGl0aW9uIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJwcm9qZWN0cyIsInByb2plY3RfcGFyYW1ldGVyIiwicHJvamVjdF9pZCIsInBhdHRlcm5TaGFyaW5nIiwiZiIsInZhIiwidnIiLCJwb3MiLCJpZCIsImNvbnRlbnQiLCJmaWxlX2lkIiwiYXN0IiwieCIsIngkMCIsImNvbXBpbCIsImFjY3VyYWN5IiwiYWNjdXJhY3kkMCIsImZ3ZCIsImJ3ZCIsIm9yaWdpbiIsInRvdGFsIiwiaSIsImkkMCIsImkkMSIsImkkMiIsInNob3J0X2lkX29wdCIsImZpbGVuYW1lIiwibGluZSIsImNociIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiYSIsImIiLCJvcHRpb25zIiwiYSQwIiwid2VhayIsImNhdXNhbCIsImNsaWVudF9pZCIsImdldF9jbGllbnRfaWQiLCJzZXRfY2xpZW50X2lkIiwiY2xpZW50X2lkJDAiLCJjdXJyZW50Rm9udFNpemUiLCJzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0IiwidiIsInN0IiwidXBkYXRlRm9udFNpemUiLCJkZWx0YSIsInNldF9zeW5jaCIsInN5bmNoIiwiYWdlbnRfY29sb3JpbmciLCJpbml0IiwiY2xpZW50X2lkcyIsInN5bmMiLCJzZWxmXzEiLCJ0aW1lb3V0IiwibWVzc2FnZV90ZXh0IiwicmVzcG9uc2VfdGV4dCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsIm91dCIsImxvYWQiLCJpbml0IiwiaW5mb3MiLCJlIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsIngiLCJrYXNhX3dvcmtlciIsImthc2FfbWFpbGJveCIsImthbW9oYV93b3JrZXIiLCJrYW1vaGFfbWFpbGJveCIsImthc3Rvcl93b3JrZXIiLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJzcGVjX2xhYmVsIiwicmVtb3RlIiwic3BlY19pZCIsImh0dHAiLCJjbGkiLCJyZWFkX3NwZWMiLCJ1cmwiLCJjbGVhbmVkX3VybCIsImNsZWFuZWQiLCJsZW5ndGgiLCJwYXJzZWQiLCJwcm90b2NvbCIsImh0dHBzJDEiLCJmaWxlJDEiLCJodHRwJDEiLCJodHRwcyQwIiwiZmlsZSQwIiwibGFiZWwiLCJodHRwJDAiLCJodHRwcyIsImZpbGUiLCJzZWxmXzEiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJpbmZvcyIsImUiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwieCIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsImV4biIsIm1zZyIsIm1lc3NhZ2VfdGV4dCIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwidmVyc2lvbl91cmwiLCJmcmFtZSIsImlzX3ZhbGlkX3NlcnZlciIsImVycm9yX21zZyIsIm1hbmFnZXIiLCJqc19ub2RlX3J1bnRpbWUiLCJjcmVhdGVfc3BlYyIsImlkIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUkMCIsImN1cnJlbnRfc3RhdGUiLCJtb2RlbCIsImhvc3RzIiwidXJscyIsInVybHMkMCIsInVybCQwIiwicHJvamVjdHMiLCJzeW5jIiwiaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnMiLCJwcm9qZWN0X2VxdWFsIiwiYSIsImIiLCJzdGF0ZV9lcXVhbCIsIngiLCJ5IiwibW9kZWxfZXF1YWwiLCJpbml0X3N0YXRlIiwic2V0X3N0YXRlIiwic3RhdGUiLCJ1cGRhdGVfcGFyYW1ldGVycyIsImhhbmRsZXIiLCJzdCIsInByb2oiLCJwcm9qZWN0X3BhcmFtZXRlcnMiLCJkZWZhdWx0X3BhcmFtZXRlcnMiLCJwcm9qZWN0X3BhcmFtZXRlcnMkMCIsImRlZmF1bHRfcGFyYW1ldGVycyQwIiwic2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCIsInBhIiwibHMiLCJ2YSIsInNldF9wbG90X3BlcmlvZCIsInBsb3RfcGVyaW9kIiwicGFyYW0iLCJzZXRfcGF1c2VfY29uZGl0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwic2V0X3NlZWQiLCJzZWVkIiwic2V0X3N0b3JlX3RyYWNlIiwic3RvcmVfdHJhY2UiLCJzZXRfc2hvd19kZWFkX3J1bGVzIiwic2hvd19kZWFkX3J1bGVzIiwic2V0X3Nob3dfZGVhZF9hZ2VudHMiLCJzaG93X2RlYWRfYWdlbnRzIiwic2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlIiwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhIiwiYWRkX3Byb2plY3QiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicHJvamVjdF9jYXRhbG9nIiwibWUiLCJvdXQiLCJwcm9qZWN0X21hbmFnZXIiLCJzZXRfY29tcHV0ZXMiLCJwcm9qZWN0X2lzX2NvbXB1dGluZyIsInNldHRlciIsInByb2plY3Rfd2F0Y2hlcl9jYW5jZWwiLCJkZWxheSIsImxvb3AiLCJwYXJhbXMiLCJjcmVhdGVfcHJvamVjdCIsInNldF9wcm9qZWN0IiwiZHVtbXlfbW9kZWwiLCJtb2RlbCIsIm1vZGVsX2NhdGFsb2ciLCJwIiwibW9kZWxfcGFyYW1ldGVycyIsInN5bmMiLCJjdXJyZW50IiwicmVtb3ZlX3Byb2plY3QiLCJzdGF0ZSQwIiwibWFuYWdlciIsIm0iLCJ2IiwiaCIsInByb2plY3RfY3VycmVudCIsIm91dCQwIiwiaW5pdCIsImV4aXN0aW5nX3Byb2plY3RzIiwiZGVmYXVsdCQwIiwiYXJnX3Bsb3RfcGVyaW9kIiwiZGVmYXVsdCQxIiwiYXJnX3BhdXNlX2NvbmRpdGlvbiIsImRlZmF1bHQkMiIsImFyZ19tb2RlbF9zZWVkIiwiZGVmYXVsdCQzIiwiYXJnX3N0b3JlX3RyYWNlIiwiZGVmYXVsdCQ0IiwiYXJnX3Nob3dfZGVhZF9ydWxlcyIsImRlZmF1bHQkNSIsImFyZ19zaG93X2RlYWRfYWdlbnRzIiwiZGVmYXVsdCQ2IiwiYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpIiwiYXJnIiwiYXJnJDAiLCJtc2ciLCJoJDAiLCJhcmckMSIsImFyZyQyIiwiaCQxIiwibXNnJDAiLCJoJDIiLCJoJDMiLCJoJDQiLCJoJDUiLCJwcm9qZWN0cyIsImFkZF9wcm9qZWN0cyIsInByb2plY3RzJDAiLCJwcm9qZWN0IiwiZXJyb3JzIiwid2l0aF9wcm9qZWN0IiwibGFiZWwiLCJlcnJvcl9tc2ciLCJvbl9wcm9qZWN0X2NoYW5nZV9hc3luYyIsImVxIiwib24iLCJvcHQiLCJpbml0X290aGVycyIsIm90aGVycyIsInN0aCIsIm90aGVyc19lcSIsImVxX3BhaXIiLCJvdGgiLCJlcnJvcl9tc2ckMiIsImVycm9yX21zZyQxIiwiZXJyb3JfbXNnIiwiZXJyb3JfbXNnJDAiLCJkdW1teV9jdXJzb3JfcG9zIiwiYmxhbmtfc3RhdGUiLCJzZXRfZGlyZWN0b3J5X3N0YXRlIiwibW9kZWwiLCJyZWZyZXNoX2ZpbGVfaG9vayIsInJlZ2lzdGVyX3JlZnJlc2hfZmlsZV9ob29rIiwieCIsImN1cnJlbnRfZmlsZW5hbWUiLCJtIiwibmFtZSIsIndpdGhfY3VycmVudF9wb3MiLCJlcSIsIm9wdCIsImYiLCJkZWZhdWx0JDAiLCJzdGgiLCJvbiIsIndpdGhfY3VycmVudF9maWxlIiwic3RhdGUiLCJhY3RpdmUiLCJnZXRfZmlsZSIsInRleHQiLCJuYW1lJDAiLCJtYW5hZ2VyIiwicmFuayIsInNlbmRfcmVmcmVzaCIsImxpbmUiLCJvdXRfb2Zfc3luYyIsImZpbGVuYW1lIiwiY29udGVudCIsInVwZGF0ZV9kaXJlY3RvcnkiLCJyZXNldCIsImN1cnJlbnQiLCJjYXRhbG9nIiwiZGlyZWN0b3J5IiwiYWNjIiwiaWQiLCJwb3NpdGlvbiIsImNyZWF0ZV9maWxlIiwibWF0Y2hpbmdfZmlsZSIsImZpbGVfbWV0YWRhdGEiLCJtZXRhZGF0YSIsIm1heF9wb3MiLCJzZWxlY3RfZmlsZSIsInQiLCJzZXRfY29udGVudCIsInNldF9jb21waWxlIiwiZmlsZV9pZCIsImNvbXBpbGUiLCJyYW5rJDAiLCJyZW1vdmVfZmlsZSIsImxvY2FsIiwieSIsImRvX2FfbW92ZSIsIngkMCIsImN1cnNvcl9wb3MiLCJwb3MiLCJzZXRfcG9zaXRpb24iLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsIm9yZGVyX2ZpbGUiLCJpbmRleCIsInRhaWwiLCJjdXJzb3JfYWN0aXZpdHkiLCJjaCIsInYiLCJzeW5jIiwiY2FuZCIsImxvYWRfbW9kZWxzIiwibW9kZWxzIiwiYWRkX21vZGVscyIsImxvYWRfZmlsZSIsIm1vZGVscyQwIiwiZXJyb3JzIiwibXNnIiwidSIsImgiLCJmaWxlY29udGVudCIsImluaXQiLCJlcnJvcl9tc2ckOCIsImVycm9yX21zZyQ3IiwiZXJyb3JfbXNnJDYiLCJlcnJvcl9tc2ckNSIsImVycm9yX21zZyQ0IiwiZXJyb3JfbXNnJDMiLCJlcnJvcl9tc2ckMiIsImVycm9yX21zZyQxIiwiZXJyb3JfbXNnJDAiLCJlcnJvcl9tc2ciLCJkdW1teV9tb2RlbCIsInRfc2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbiIsInNpbXVsYXRpb25faW5mbyIsIm1vZGVsX3N0YXRlX3RvX3N0cmluZyIsIm1vZGVsX3NpbXVsYXRpb25faW5mbyIsIm1vZGVsIiwibW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSIsInNldF9zdGF0ZSIsInN0YXRlIiwidXBkYXRlX3NpbXVsYXRpb25fc3RhdGUiLCJzaW11bGF0aW9uX3N0YXRlIiwid2l0aF9zaW11bGF0aW9uIiwibGFiZWwiLCJoYW5kbGVyIiwicHJvamVjdF9oYW5kbGVyIiwibWFuYWdlciIsImZhaWxfbHd0Iiwid2l0aF9zaW11bGF0aW9uX2luZm8iLCJvcHQiLCJzdGgiLCJzdG9wcGVkIiwic3RoJDAiLCJpbml0aWFsaXppbmciLCJzdGgkMSIsInJlYWR5IiwicyIsIndoZW5fcmVhZHkiLCJzbGVlcF90aW1lIiwic3luYyIsInJlZnJlc2giLCJpbml0IiwiY29udGludWVfc2ltdWxhdGlvbiIsInBhdXNlX2NvbmRpdGlvbiIsInBhdXNlX3NpbXVsYXRpb24iLCJzdG9wX3NpbXVsYXRpb24iLCJzdGFydF9zaW11bGF0aW9uIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJvbl9lcnJvciIsImVycm9yX21zZ3MiLCJzaW11bGF0aW9uX3N0YXR1cyIsImVycm9yIiwibXNnIiwibWVzc2FnZSIsImludGVydmVuZV9zaW11bGF0aW9uIiwiY29kZSIsIm91dCIsInJlZnJlc2giLCJyIiwiciQwIiwiciQxIiwiY3JlYXRlX3Byb2plY3QiLCJwcm9qZWN0X2lkIiwic2V0X3Byb2plY3QiLCJjbG9zZV9wcm9qZWN0Iiwic2V0X21hbmFnZXIiLCJydW50aW1lX2lkIiwiY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkIiwicHJlZmVyZW5jZXNfbW9kYWxfaWQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19idXR0b24iLCJvcHRpb25fc2VlZF9pbnB1dCIsIm9wdGlvbl93aXRodHJhY2UiLCJvcHRpb25fd2l0aGRlYWRydWxlcyIsIm9wdGlvbl93aXRoZGVhZGFnZW50cyIsIm9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIiwiZGVjcmVhc2VfZm9udCIsImluY3JlYXNlX2ZvbnQiLCJzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQiLCJvcHRpb25faHR0cF9zeW5jaCIsImxpc3RfdCIsImN1cnJlbnRfaWQiLCJzcGVjIiwic3BlY19pZCIsImJhY2tlbmRfb3B0aW9ucyIsImJhY2tlbmRfc2VsZWN0IiwiYm9kaWVzIiwic2V0X2J1dHRvbiIsInNhdmVfYnV0dG9uIiwiaGVhZCIsImJvZHkiLCJmb290IiwibW9kYWwiLCJjb250ZW50Iiwic2V0X2FjdGlvbiIsInNldHRpbmdzX2NsaWVudF9pZCIsImlzX2NoZWNrZWQiLCJ2YWx1ZSIsIm1vZGVsX3NlZWQiLCJvbmxvYWQiLCJzcCIsInRvZ2dsZV9lbGVtZW50IiwicHJvamVjdGlvbiIsImNvbnRlbnQiLCJtb2RlbCIsIm9wdGlvbl9sYWJlbCIsImxhYmVsIiwiZXhwb3J0X2NvbnRyb2xzIiwiZXhwb3J0X3NlbGVjdF9pZCIsImV4cG9ydF9maWxlbmFtZV9pZCIsImV4cG9ydF9idXR0b25faWQiLCJleHBvcnRfZGF0YV9sYWJlbCIsImV4cG9ydF9mb3JtYXRzIiwiZXhwb3J0X2ZpbGVuYW1lIiwiZXhwb3J0X2J1dHRvbiIsImV4cG9ydF9mb3JtYXRzX3NlbGVjdCIsImZvcm1hdCIsImRvY3VtZW50IiwibGFiZWxfbmV3cyIsInRhYl9pc19hY3RpdmUiLCJjb3VudGVyIiwic2ltdWxhdGlvbl9pbmZvIiwibGFzdF92YWx1ZSIsInRhYl9hY3RpdmUiLCJ2IiwiYmFkZ2UiLCJjb3VudCIsImFyZ3VtZW50cyQwIiwia2V5IiwiayIsInZlcnNpb24iLCJvcHQiLCJzdGgiLCJ0ZXN0IiwiZGV2IiwidGVzdCQwIiwibmF2bGkiLCJmb3JjZV9jbGFzcyIsImRlY29yYXRpb25zIiwiZGVmYXVsdF9hdHRyaWJ1dGVzIiwibCIsImF0dHJpYnV0ZXMiLCJ0ZXh0IiwibmF2dGFicyIsIm5hdl90YWJfaWQiLCJ0IiwidGkiLCJsaSIsImFfY2xhc3MiLCJvbmVuYXZjb250ZW50IiwiYWN0aXZlIiwiY2xhc3NlcyIsIm5hdmNvbnRlbnQiLCJpZCIsImMiLCJjbCIsImlkJDAiLCJpZCQxIiwibGV2ZWwiLCJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImV4dHJhY3QiLCJ2YWx1ZSIsInZhbHVlJDAiLCJmZWF0dXJlcyIsImRlZmF1bHQkMCIsImZlYXR1cmUiLCJtYXRjaGVzIiwiaW5wdXRfY2hhbmdlIiwic2lnbmFsX2hhbmRsZXIiLCJpZF9kb20iLCJjcmVhdGVfbW9kYWwiLCJ0aXRsZV9sYWJlbCIsImJvZHkiLCJzdWJtaXRfbGFiZWwiLCJidXR0b24iLCJmb3JtIiwicHJvamVjdF9pZF9tb2RhbF9pZCIsInByb2plY3RfaWRfaW5wdXQiLCJsaV9uZXciLCJsaV9wcmVmcyIsImNvbnRlbnQiLCJzZXR0aW5nc19jbGllbnRfaWQiLCJtb2RlbCIsImFjYyIsIm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nIiwibW9kZWxfcHJvamVjdF9pZCIsImN1cnJlbnRfcHJvamVjdF9pZCIsImxpX2NsYXNzIiwic3Bhbl9jbG9zZSIsImV2ZW50IiwiY2xhc3NlcyIsImIiLCJjb21wdXRpbmciLCJhX3Byb2plY3QiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF9tb2RlbF9pbnRlcnZlbnRpb24iLCJtb2RlbF9pbnRlcnZlbnRpb24iLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJwYXJhbSQwIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJpbnRlcnZlbmVfc2ltdWxhdGlvbiIsIm1vZGVsX3BlcnR1cmJhdGlvbiIsInRleHQiLCJmb2N1c19yYW5nZSIsInJhbmdlIiwiZmlsZV9pZCIsImxpbmUiLCJzaW11bGF0aW9uX3RyYWNlIiwibWFuYWdlciIsImRhdGFfc3RyaW5nIiwiZGF0YSIsInNpbXVsYXRpb25fb3V0cHV0cyIsImRhdGFfYmlnc3RyaW5nIiwiaGlkZGVuX2NsYXNzIiwidmlzaWJsZV9jbGFzcyIsImlkIiwiaWQkMCIsImlkJDEiLCJtZXNzYWdlX25hdl9pbmNfaWQiLCJtZXNzYWdlX25hdl9kZWNfaWQiLCJtZXNzYWdlX2ZpbGVfbGFiZWxfaWQiLCJpZCQyIiwiaWQkMyIsImlkJDQiLCJpZCQ1IiwiaWQkNiIsImlkJDciLCJpZCQ4IiwiaWQkOSIsInZpc2libGVfb25fc3RhdGVzIiwib3B0Iiwic3RoIiwiYV9jbGFzcyIsIm1vZGVsIiwiY3VycmVudF9zdGF0ZSIsImlucHV0IiwiYnV0dG9uIiwiZm9ybSIsInNpZ25hbF9jaGFuZ2UiLCJzaWduYWxfaGFuZGxlciIsIm0iLCJpbnB1dCQwIiwiZG9tIiwidmFsdWUiLCJuIiwibGVuZ3RoIiwiaW5wdXQkMSIsInNldF9lcnJvcl9pbmRleCIsImVycm9yX2luZGV4Iiwic2FuaXRpemVfaW5kZXgiLCJpbmRleCIsImVycm9ycyIsImluZGV4JDAiLCJpbmRleCQxIiwiZ2V0X21lc3NhZ2UiLCJtZXNhZ2VfbmF2X3RleHQiLCJlcnJvciIsIm1lc3NhZ2VfbmF2X2RlYyIsIm1lc3NhZ2VfbmF2X2luYyIsIm1lc3NhZ2VfbmF2IiwiZmlsZV9sYWJlbF90ZXh0IiwicmFuZ2UiLCJtZXNzYWdlIiwicmFuZ2UkMCIsImZpbGVfbGFiZWwiLCJlcnJvcl9tZXNzYWdlX3RleHQiLCJlcnJvcl9tZXNzYWdlIiwiYWxlcnRfbWVzc2FnZXMiLCJpbmRleF9jbGlja19oYW5kbGVyIiwiZGVsdGEiLCJvdXRfb2Zfc3luYyIsImJ1dHRvbiQwIiwiYnV0dG9uJDEiLCJidXR0b24kMiIsImJ1dHRvbiQzIiwiYnV0dG9uJDQiLCJidXR0b24kNSIsInByb2dyZXNzX2JhciIsInBlcmNlbnRfc2lnbmFsIiwidmFsdWVfc2lnbmFsIiwicyIsInRyYWNrZWRfZXZlbnRzIiwic3RhdGUiLCJzdGF0dXMiLCJ0cmFja2VkX2V2ZW50cyQwIiwiY29udGVudCIsInNldF9zdGF0ZV9sb2ciLCJzdGF0ZV9sb2ciLCJtYW5hZ2VyIiwiZWZmIiwiY3VycmVudF9ldmVudCIsImFsbCIsImYiLCJzaW11bGF0aW9uX2luZm8iLCJ0aW1lIiwidGltZSQwIiwidGltZV9wZXJjZW50IiwidGltZV9wZXJjZW50JDAiLCJldmVudCIsImV2ZW50JDAiLCJldmVudF9wZXJjZW50YWdlIiwiZXZlbnRfcGVyY2VudGFnZSQwIiwic3RvcHBlZF9ib2R5Iiwic3RvcHBlZF9yb3ciLCJwYXVzZWRfcm93IiwiZm9vdGVyIiwibGFiZWwiLCJkZWJ1ZyIsImNvbnRlbnQkMCIsIm9ubG9hZCIsImhhbmRsZXIiLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJ2IiwicmVzZXRfdmFsdWUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJkb20kMSIsImRvbSQyIiwib25yZXNpemUiLCJuYXZsaSIsImNvbnRlbnQiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInByb3RvdHlwZSIsImNyZWF0ZV9oYW5kbGVyIiwibGFiZWwiLCJoZWFkIiwidGFpbCIsIm9uX2xhYmVsIiwid3JhcHBlciIsImhhbmRsZXIiLCJwb3NpdGlvbiIsImNvbnN0cnVjdG9yX2xpbnQiLCJjcmVhdGVfbGludCIsIm1lc3NhZ2UiLCJzZXZlcml0eSIsImZyb20iLCJ0MTEiLCJjb25zdHJ1Y3Rvcl9jaGFuZ2UiLCJjcmVhdGVfY2hhbmdlIiwiY29uc3RydWN0b3JfbGludF9jb25maWd1cmF0aW9uIiwiY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiIsImRlZmF1bHRfY29uZmlndXJhdGlvbiIsImZyb21UZXh0QXJlYSIsImRvbSIsImNvbmZpZ3VyYXRpb24iLCJjb21tYW5kcyIsImNyZWF0ZV9maWxlIiwib3B0Iiwic3RoIiwidGV4dCIsInR4dCIsImNvbnRlbnQiLCJyIiwiciQwIiwic2V0X2ZpbGUiLCJmaWxlX2lkIiwiY2xvc2VfZmlsZSIsInNldF9maWxlX2NvbXBpbGUiLCJyYW5rIiwiY29tcGlsZSIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwiZXhwb3J0X2N1cnJlbnRfZmlsZSIsImZpbGVuYW1lIiwiZGF0YSIsImZpbGVfbmV3X21vZGFsX2lkIiwiZmlsZV9uZXdfaW5wdXRfaWQiLCJmaWxlX2Ryb3Bkb3duX21lbnVfaWQiLCJmaWxlX25ld19saV9pZCIsImZpbGVfb3Blbl9saV9pZCIsImZpbGVfb3Blbl9zZWxlY3Rvcl9pZCIsImZpbGVfY2xvc2VfbGlfaWQiLCJmaWxlX2V4cG9ydF9saV9pZCIsImZpbGVfY29tcGlsZV9jaGVja2JveCIsImVsZW1lbnRfZ2V0X2ZpbGVuYW1lIiwiZWxlbWVudCIsImVsZW1lbnRfc2V0X2ZpbGVuYW1lIiwibmFtZSIsImZpbGVfbmV3X2lucHV0Iiwib3Blbl9pbnB1dCIsIm1vZGVsIiwiaGlkZV9vbl9lbXB0eSIsImwiLCJjdXJyZW50X2ZpbGVfcG9zIiwicmFuayIsImZpbGVfbGkiLCJmaWxlX2lkIiwibG9jYWwiLCJpc19jaGVja2VkIiwibGlfY2xhc3MiLCJjaGVja2VkX2F0dHJpYnV0ZSIsInNlcGFyYXRvcl9saSIsIm5ld19saSIsIm9wZW5fbGkiLCJjbG9zZV9saSIsImV4cG9ydF9saSIsImxpX2xpc3QiLCJmaWxlbmFtZSIsImZpbGUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJmaWxlX3NlbGVjdF9oYW5kbGVyIiwiZmlsZXMiLCJvbmxvYWQiLCJvcGVuX2lucHV0X2RvbSIsInRhcmdldCIsImlkIiwiZmlsZW5hbWVzIiwid2l0aF9maWxlIiwiaGFuZGxlciIsInNldF9jb250ZW50IiwiZmlsZW5hbWUiLCJmaWxlY29udGVudCIsImN1cnJlbnRfZmlsZW5hbWUiLCJyIiwiciQwIiwibXNnIiwidG9nZ2xlX2J1dHRvbl9pZCIsInBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQiLCJjb2RlbWlycm9yX2lkIiwiZWRpdG9yX3BhbmVsX2lkIiwic2V0X2VkaXRvcl9mdWxsIiwiZWRpdG9yX2Z1bGwiLCJzZXRfZmlsZW5hbWUiLCJmaWxlbmFtZSIsIm1vdmVfY3Vyc29yX2hvb2siLCJzZXRfbW92ZV9jdXJzb3IiLCJsb2MiLCJmIiwiZmlsZV9sYWJlbCIsInRvZ2dsZV9idXR0b24iLCJtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQiLCJidXR0b25zIiwicGFuZWxfaGVhZGluZyIsImNvbnRlbnQiLCJ0ZXh0YXJlYSIsIm1vZGVsIiwiZXJyb3JzIiwicG9zaXRpb24iLCJwIiwiYWNjIiwidmFsdWUiLCJyYW5nZSIsImZpbGVfaWQiLCJ2YWx1ZSQwIiwib25sb2FkIiwiY29kZW1pcnJvciIsImlkIiwidGltZW91dCIsImhhbmRsZXIiLCJjaGFuZ2UiLCJ0aW1lb3V0JDAiLCJkZWxheSIsImZpbGVuYW1lJDAiLCJjb2RlbWlycm9yJDAiLCJsaW5lIiwiY2giLCJlZGl0b3JfZnVsbCQwIiwicmVmcmVzaCIsImNhbmQiLCJtb2RlIiwidG9wIiwibWlkZGxlSGVpZ2h0Iiwic2Nyb2xsTGluZSIsInBvcyIsImJlZyIsImZpcnN0IiwiZW4iLCJsYXN0Iiwib25yZXNpemUiLCJwcmludF9zdHJpbmciLCJzIiwibGlzdCIsInByaW50X25ld2xpbmUiLCJwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSIsImEiLCJwcmludF9zaXRlX2dyYXBoIiwiYWdlbnRfbGlzdCIsImFnZW50IiwibGlzdCQzIiwiYiIsImxpc3QkNCIsImludGVyZmFjZSQwIiwiYWdlbnRfbmFtZSIsImxpc3QkMCIsInNpdGUiLCJiJDEiLCJsaXN0JDUiLCJjb3VudGVyX29wdCIsImJpbmRpbmdfb3B0IiwicHJvcF9vcHQiLCJzaXRlX25hbWUiLCJpIiwic2l0ZV9uYW1lJDAiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiYSQxIiwiYiQwIiwiYSQwIiwiaW5mIiwib3Blbl9yYW5nZSIsImluZiQwIiwib3Blbl9yYW5nZSQwIiwic3VwIiwiY2xvc2VfcmFuZ2UiLCJzdXAkMCIsImNsb3NlX3JhbmdlJDAiLCJsaXN0JDEiLCJhJDIiLCJsaXN0JDIiLCJwcmludF9tZXRob2RfaGFuZGxlciIsIm1oIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJ4IiwibCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJjb250ZW50IiwiY29uc3RyYWludHNfZGl2IiwibWFuYWdlciIsImNvbnN0cmFpbnRzIiwicGFuZWxzIiwiYiIsImEiLCJ0ZXh0cyIsImxpc3QiLCJsZW1tYSIsImh5cCIsImNvbmNsdXNpb24iLCJzaXRlX2dyYXBoIiwibGlzdCQ0IiwibGlzdCQwIiwibGlzdCQxIiwibGlzdCQyIiwiYm9vbCIsImxpc3QkMyIsImxpc3QkNSIsImxpc3QkNiIsInRpdGxlIiwiciIsIm0iLCJvdXQiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsIm9ucmVzaXplIiwiY3JlYXRlX2NvbnRhY3RfbWFwIiwiaWQiLCJjb2xvcmluZyIsImV4cG9ydF9mb3JtYXRfaWQiLCJjb25maWd1cmF0aW9uIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiaW5saW5lX2NvbnRlbnQiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwiaGFuZGxlciIsImNvbnRlbnQiLCJvbmxvYWQiLCJleHBvcnRfYnV0dG9uX3RvZ2dsZSIsImRlZmF1bHQkMCIsInJvb3QiLCJleHBvcnRfc3ZnIiwic3ZnX3N0eWxlX2lkIiwic3ZnX2Rpdl9pZCIsImZpbGVuYW1lIiwiZXhwb3J0X3BuZyIsImV4cG9ydF9qc29uIiwic2VyaWFsaXplX2pzb24iLCJkYXRhIiwiZGlzcGxheV9pZCIsImV4cG9ydF9pZCIsImFjY3VyYWN5X2Nob29zZXJfaWQiLCJuYXZsaSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwic2V0X2FjY3VyYWN5IiwiYWNjdXJhY3kiLCJjb250YWN0bWFwIiwiY29udGFjdF9tYXBfdGV4dCIsIm1hbmFnZXIiLCJhY2MiLCJjb250YWN0X2pzb24iLCJjb250YWN0IiwiY29udGFjdCQwIiwibWFwX2pzb24iLCJkYXRhIiwibWgiLCJjb25maWd1cmF0aW9uIiwib3B0aW9uX2dlbiIsIngiLCJsIiwiYWNjdXJhY3lfY2hvb3NlciIsImNvbnRlbnQiLCJhY2N1cmFjeV9mb3JtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSQwIiwib25yZXNpemUiLCJjcmVhdGVfZ3JhcGhfbG9nZ2VyIiwiaWQiLCJvbl9jbGljayIsImVtcHR5X3NwaGVyZSIsImR1bW15X21vZGVsIiwidG90YWxfaW5wdXRfaWQiLCJmd2RfaW5wdXRfaWQiLCJid2RfaW5wdXRfaWQiLCJkaXNwbGF5X2lkIiwicmVuZGVyaW5nX2Nob29zZXJfaWQiLCJhY2N1cmFjeV9jaG9vc2VyX2lkIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNldF90cmFja19jdXJzb3IiLCJ0cmFja19jdXJzb3IiLCJzZXRfbW9kZWwiLCJtb2RlbCIsImluZmx1ZW5jZV9ub2RlX2xhYmVsIiwiciIsInIkMCIsInVwZGF0ZV9tb2RlbF9ncmFwaCIsImYiLCJtIiwiZyIsInVwZGF0ZV9tb2RlbCIsImluZmx1ZW5jZW1hcCIsIngiLCJub2RlIiwib3JpZ2luIiwib3JpZ2luX2xhYmVsIiwidG90YWxfaW5wdXQiLCJmd2RfaW5wdXQiLCJid2RfaW5wdXQiLCJuZXh0X25vZGUiLCJwcmV2X25vZGUiLCJyZWNlbnRlciIsInRjIiwidHJhY2tfY3Vyc29yX3N3aXRjaCIsImV4cG9ydF9jb25maWciLCJmaWxlbmFtZSIsIm1hbmFnZXIiLCJhY2N1cmFjeSIsImluZmx1ZW5jZXNfc3RyaW5nIiwiZGF0YSIsInJlbmRlcmluZyIsImwiLCJsJDAiLCJyZW5kZXJpbmdfY2hvb3NlciIsIm9wdGlvbl9nZW4iLCJhY2N1cmFjeV9jaG9vc2VyIiwiaXNfY2VudGVyIiwib3JpZ2luX3Nob3J0X29wdCIsImlkIiwiYSIsImlkJDAiLCJhJDAiLCJ0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24iLCJpbmZsdWVuY2VfbWFwIiwibmFtZXIiLCJhY2MiLCJlIiwib3JpZ2luX2lkX29wdCIsIm9yaWdpbl9pZCIsInNyYyIsImRzdCIsImJ5Iiwib24iLCJ2IiwidiQwIiwicG9zaXRpdmVfYnkiLCJwb3NpdGl2ZV9vbiIsIm5lZ2F0aXZlX2J5IiwibmVnYXRpdmVfb24iLCJwb3BfY2VsbCIsInQiLCJwb3NpdGl2ZSIsImluZmx1ZW5jZV9zcGhlcmUiLCJjb250ZW50IiwiYWNjdXJhY3lfZm9ybSIsImdyYXBoX2Zvcm0iLCJzcGhlcmUiLCJieSQxIiwib24kMSIsImJ5JDAiLCJiIiwib24kMCIsIm8iLCJsaW5lIiwiYWNjJDAiLCJvdXRzIiwiZXJyb3IiLCJ0b3RhbCIsImJ3ZCIsImZ3ZCIsImluZmx1ZW5jZXMiLCJidWYiLCJmbXQiLCJsb2dnZXIiLCJsb2dnZXJfZ3JhcGgiLCJub2RlcyIsIm1heF9ydWxlX2lkIiwiYmlnZ2VzdF9pZCIsIm4iLCJnZXRfaWRfb2Zfbm9kZV9pZCIsIm5vZGVfaWQiLCJqc29uIiwibGFiZWwiLCJwb3MiLCJjb250ZXh0dWFsX2hlbHAiLCJmaWxsY29sb3IiLCJkaXJlY3RpdmVzIiwicG9zJDAiLCJjb250ZXh0dWFsX2hlbHAkMCIsImZpbGxjb2xvciQwIiwicHJpbnRfbWFwcyIsIm9wdCIsIm1hcCIsInN0aCIsInNvdXJjZSIsInNvdXJjZV9pZCIsInRhcmdldCIsImxhYmVsX2xpc3QiLCJ0YXJnZXRfaWQiLCJsYWJlbF9zdHJpbmciLCJkaXJlY3RpdmVzJDAiLCJncmFwaCIsImdyYXBoX2pzb24iLCJjdXJzb3JfcG9zIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSQwIiwidmEiLCJvcmlnaW5fcmVmaW5lZCIsIm9ucmVzaXplIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNpdGUiLCJhIiwiY29udGVudCIsInNjYyIsIm1hbmFnZXIiLCJzY2MkMCIsImxpc3QiLCJsaXN0X2VkZ2VzIiwibGlzdCQwIiwiZCIsImMiLCJiIiwibGlzdCQxIiwib3V0cHV0IiwibWgiLCJtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInRhYiIsInNraXAiLCJwbHVyYWwiLCJyaWdodHN1YnBhbmVsX2lkIiwibmF2bGkiLCJjb250ZW50IiwiZWRpdG9yX2Z1bGwiLCJjaGlsZHNfaGlkZSIsImIiLCJvbmxvYWQiLCJtb2RlbCIsIm1hbmFnZXIiLCJsaXN0Iiwid2FybmluZ3MiLCJhY2MiLCJydWxlIiwidGV4dCIsIm1oIiwiYWdlbnQiLCJyYW5nZSIsImNvbnRleHRfbGlzdCIsInRhYiQwIiwic2tpcCQwIiwicGx1cmFsJDAiLCJmbXQiLCJhIiwib25yZXNpemUiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfZGluX2lkIiwiZGluX2lkIiwibWFuYWdlciIsImRpbl9pZHMiLCJvdXQiLCJpZCIsImRpbl9saXN0IiwiZGluX3NlbGVjdCIsImRpbl9kYXRhIiwieCIsImRpbiIsInIiLCJhY2MiLCJkaW5faGVhZGVyIiwiYWxsIiwiYm9keSIsImkiLCJkYXRhIiwidiIsImRpbl90YWJsZSIsInRoZWFkIiwiZXhwb3J0X2N1cnJlbnRfZGluIiwidG9fc3RyaW5nIiwibWltZSIsImZpbGVuYW1lIiwiZXhwb3J0X2NvbmZpZ3VyYXRpb24iLCJjb250ZW50IiwibmF2bGkiLCJzdGF0ZSIsInN0YXRlJDAiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJzdGF0ZSQwIiwic3RhdGUiLCJjb250ZW50Iiwic3RhdGVfbG9nIiwibWFuYWdlciIsIngiLCJ4JDAiLCJsaXN0IiwidGV4dCIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJzZWxlY3RfaWQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfY3VycmVudF9maWxlIiwiY3VycmVudF9maWxlIiwidXBkYXRlX291dHB1dHMiLCJrZXkiLCJtYW5hZ2VyIiwibGluZXMiLCJmaWxlX2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwibmF2bGkiLCJ4bWwiLCJoYW5kbGUiLCJsaXN0IiwiZmlsZV9saW5lX2lkcyIsImN1cnJlbnRfZmlsZV9pZCIsImZpbGVfb3B0aW9ucyIsImZpbGVfc2VsZWN0IiwibGluZSIsImZpbGVfY29udGVudCIsImNvbnRlbnQiLCJ0Iiwib25sb2FkIiwiZmlsZWluZGV4Iiwib25yZXNpemUiLCJjcmVhdGVfb2JzZXJ2YWJsZV9wbG90IiwibWFpbl9kaXZfaWQiLCJkaXZfZGlzcGxheV9pZCIsImV4cG9ydF9pZCIsInBsb3RfcG9pbnRzX2lucHV0X2lkIiwicGxvdF9vZmZzZXRfaW5wdXRfaWQiLCJzZXRfb2Zmc2V0Iiwib2Zmc2V0IiwiZGVmYXVsdF9wb2ludCIsInNldF9wb2ludHMiLCJwb2ludCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInBsb3RfcmVmIiwiaGFzX3Bsb3QiLCJzdGF0ZSIsInN0YXRlJDAiLCJleHBvcnRfanNvbiIsImZpbGVuYW1lIiwibWFuYWdlciIsInBsb3QiLCJkYXRhIiwiZXhwb3J0JDAiLCJtaW1lIiwicGxvdF9wb2ludHNfaW5wdXQiLCJtYXhfb2Zmc2V0IiwicGxvdF9vZmZzZXRfaW5wdXQiLCJ1cGRhdGVfcGxvdCIsImpzX3Bsb3QiLCJzaW11bGF0aW9uX21vZGVsIiwic2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbl9pbmZvJDAiLCJwbG90X3NpemUiLCJvZmZzZXRfbWF4Iiwib2xkX29mZnNldCIsIm9mZnNldCQwIiwib2Zmc2V0X2N1cnJlbnQiLCJuZXdfb2Zmc2V0IiwicG9pbnQkMCIsIngiLCJjb25maWd1cmF0aW9uIiwibW9kZWwiLCJvdXQiLCJ4bWwiLCJleHBvcnRfY29udHJvbHMiLCJjb250ZW50IiwicyIsIm9ubG9hZCIsInBsb3Rfb2Zmc2V0X2lucHV0X2RvbSIsInBsb3RfcG9pbnRzX3N0cmluZyIsInBsb3RfcG9pbnQkMCIsInBsb3RfcG9pbnRzX29wdGlvbiIsInBsb3RfcG9pbnRzIiwicGxvdF9wb2ludCIsInBsb3RfcG9pbnRfc3RyaW5nIiwidmFsdWUiLCJuYXZsaSIsIm9ucmVzaXplIiwiY3JlYXRlX3NuYXBzaG90IiwiaWQiLCJjb2xvcmluZyIsInNlbGVjdF9pZCIsImRpc3BsYXlfaWQiLCJmb3JtYXRfc2VsZWN0X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2N1cnJlbnRfc25hcHNob3QiLCJjdXJyZW50X3NuYXBzaG90Iiwic2V0X2Rpc3BsYXlfZm9ybWF0IiwiZGlzcGxheV9mb3JtYXQiLCJzbmFwc2hvdF9jb3VudCIsInN0YXRlIiwic3RhdGUkMCIsIm5hdmxpIiwiY29uZmlndXJhdGlvbl90ZW1wbGF0ZSIsImlkIiwiYWRkaXRpb25hbF9oYW5kbGVycyIsImpzb25faGFuZGxlciIsInMiLCJrYXBwYV9oYW5kbGVyIiwiZmlsZW5hbWUiLCJkYXRhIiwiZG90X2hhbmRsZXIiLCJkZWZhdWx0X2hhbmRsZXJzIiwibW9kZWwiLCJzaW11bGF0aW9uX2luZm8iLCJjb25maWd1cmF0aW9uX2thcHBhIiwiY29uZmlndXJhdGlvbl9ncmFwaCIsInJlbmRlcl9zbmFwc2hvdF9ncmFwaCIsInNuYXBzaG90X2pzIiwic25hcHNob3QiLCJqc29uIiwiY29udGFjdF9tYXAiLCJzZWxlY3Rfc25hcHNob3QiLCJpbmRleCIsImZpbGVpbmRleCIsInNpbXVsYXRpb25fb3V0cHV0IiwiaW5kZXgkMCIsIm1hbmFnZXIiLCJzbmFwc2hvdF9pZHMiLCJzbmFwc2hvdF9pZCIsImYiLCJmJDAiLCJzbmFwc2hvdF9jbGFzcyIsImVtcHR5Iiwic2luZ2xlIiwibXVsdGlwbGUiLCJ4bWwiLCJpIiwieCIsImxpc3QiLCJzbmFwc2hvdF9maWxlIiwic25hcHNob3RfbGFiZWwiLCJzbmFwc2hvdF9zZWxlY3QiLCJzbmFwc2hvdF9jaG9vc2VyIiwidG9nZ2xlX2NvbnRyb2xzIiwia2FwcGEiLCJncmFwaCIsImV4cG9ydF9jb250cm9scyIsInNuYXBzaG90JDAiLCJrYXBwYV9zbmFwc2hvdF9kaXNwbGF5Iiwia2FwcGFfZ3JhcGhfZGlzcGxheSIsImZvcm1hdF9jaG9vc2VyIiwiY29udGVudCIsIm9ubG9hZCIsInVwZGF0ZV9mb3JtYXQiLCJmb3JtYXRfdGV4dCIsImZvcm1hdCIsIm9ucmVzaXplIiwiY3JlYXRlX3N0b3J5X3JlbmRlcmluZyIsImlkIiwiZ3JhcGhfZGlzcGxheV9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJub25lX2NoZWNrYm94Iiwid2Vha19jaGVja2JveCIsInN0cm9uZ19jaGVja2JveCIsImxhdW5jaF9idXR0b24iLCJsaXN0X2NvbnRyb2wiLCJzdG9yeV9saXN0Iiwic3RvcnlfbGlzdF9odG1sIiwiY20iLCJpZCIsInNlbGVjdF9zdG9yaWVzIiwic2V0dXBfZm9ybSIsImxvZ19jb250cm9sIiwic3RvcnlfbG9nIiwic2V0X2luZm8iLCJjdXJyZW50X2luZm8iLCJzdG9yeV9sb2dfaHRtbCIsImxpbmUiLCJsb2dfZGl2IiwibG9nX3BhbmVsIiwic3RvcnlfZ3JhcGgiLCJjb250ZW50IiwibGlmdF9yZXN1bHQiLCJ4IiwiZSIsImRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCIsIm1hbmFnZXIiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwicHJlZF9pZCIsInNldF9hX3N0b3J5IiwidmEiLCJ2IiwiZCIsImYiLCJpbnNwZWN0X3N0b3JpZXMiLCJhY2MiLCJiIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ0cmFjZSIsIm9ucmVzaXplIiwibmF2X3RhYl9pZCIsIm5hdmNvbnRlbnRzX2lkIiwibmF2dGFicyIsInN0b3J5X2NsYXNzIiwicyIsIm5hdmNvbnRlbnRzIiwib25sb2FkIiwib25yZXNpemUiLCJzeW5jIiwiaW5pdCIsImxvb3AiLCJoIiwidCIsImxvb3Bfc3luYyIsIm9ubG9hZCIsIm9ubG9hZCIsIm1haW4iXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29iai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb2xvcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9lbWFjcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wZXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfd3JhcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9wcmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfaXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9zdmdfZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9odG1sX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3htbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZWFjdGl2ZURhdGEvcmVhY3RpdmVEYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9qc19vZl9vY2FtbF90eXhtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2Nhc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N3aXRjaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wb29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X212YXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3RfcmVhY3QvbHd0X3JlYWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0X18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfeG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNvbnAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNfZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9qc19vZl9vY2FtbF9sd3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvZWFzeS1mb3JtYXQvZWFzeV9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfc2hhcmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9pbmJ1Zi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX291dGJ1Zi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3ZpbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9pby5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2R1bXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIveW9qc29uL2xleGVyX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vdl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29qX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2JfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9qc29uX2FkYXB0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9keW5hbWljQXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sYXJnZUFycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvdG9vbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9qc29uVXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3N0b3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zZXRNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9tb2RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3B0aW9uX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9sb2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3ZhbE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Jlc3VsdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVuYW1pbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yYW5kb21fdHJlZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcGVyYXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25ici5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL0V4Y2VwdGlvbkRlZm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYW1lZERlY2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGlzdF91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW50Q29sbGVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2luZmluaXRlX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9oYXNoZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZyYWN0aW9ucy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ZpZm8ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jcmMzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NvbG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2lyY3VsYXJfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NhY2hlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmlnYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvYmFzZTY0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy91c2VyX2dyYXBoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9hZ2VudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvZWRnZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL25hdmlnYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3Jhd19taXh0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21hdGNoaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wcmltaXRpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9sS2FwcGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3BhdHRlcm5fZGVjb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbW9kZWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2thcHBhX3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbmZpZ3VyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByX2V4dHJhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi90cmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vY291bnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZmx1eG1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcm9vdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2luc3RhbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZXhwcl9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vZ2VuZXJpY19ydWxlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9zdGF0ZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vcmVwbGF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9hc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NvdW50ZXJzX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9sS2FwcGFfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2NzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tmaWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thbW9oYV9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2V2YWx1YXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL3R5cGVfaW50ZXJmYWNlL3B1YmxpY19kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdmVyc2lvbi92ZXJzaW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3N1cGVyYXJnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3N1cGVyYXJnVGsubm90ay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jb21tb25fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9ydW5fY2xpX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcHJvZ3Jlc3NfcmVwb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2thcHBhX2ZpbGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3BwX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wYXJhbWV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvb3V0cHV0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXNpbV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2NsaV9pbml0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2FnZW50X2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9sb2dnaW5nL2xvZ2dlcnNfc3RyaW5nX29mX29wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzX3NpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvc3ltYm9sX3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2V4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9yZW1hbmVudF9wYXJhbWV0ZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9vZGVfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvaGVhZGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZmlsZU5hbWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9nZXRfb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZXJyb3JfaGFuZGxlcnMvZXhjZXB0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZXJyb3JfaGFuZGxlcnMvbGlmdF9lcnJvcl9sb2dzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcHJvZmlsaW5nL3N0b3J5UHJvZmlsaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9tYXBfd3JhcHBlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvd29ya2luZ19saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9pbnRfc3RvcmFnZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvdW5pb25fZmluZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvdG9vbHNfa2FzYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvbWlzY19zYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvaGFzaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvZ3JhcGhzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9kaWN0aW9uYXJ5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdGlja19zdG9yaWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZ3JhcGhfY2xvc3VyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NhdXNhbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3ByZWRpY2F0ZV9tYXBzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJpb3JpdHkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9zdG9yeV9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfaGFuZGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thcHBhX2luc3RhbnRpYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wb19jdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wc2V1ZG9faW52ZXJzZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrYm9hcmRfZ2VuZXJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrYm9hcmQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcm9wYWdhdGlvbl9oZXVyaXN0aWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZ2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja19saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZGFnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdXRpbGl0aWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvdXRpbGl0aWVzX2V4cGVydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NmbG93X2pzX2ludGVyZmFjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NvbXByZXNzaW9uX21haW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9rYXN0b3JfbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvZGFnMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV90eXBlc19qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL3N3aXRjaG1hbl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbXBpX21lc3NhZ2Vfai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Zha2V6aXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FwcGFfZmFjYWRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21hbmFnZXJfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXN0b3JfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc2FfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thbW9oYV9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvZW52aXJvbm1lbnRfbWVtb3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29tbW9uX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9Kc05vZGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3Jlc3RfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9zZXR0aW5ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvd2ViX3dvcmtlcl9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3Byb2plY3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3NpbXVsYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21vZGFsX3ByZWZlcmVuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91aV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3Byb2plY3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9wZXJ0dXJiYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3NldHRpbmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfYWJvdXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvZGVtaXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbWVudV9lZGl0b3JfZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N1YnBhbmVsX2VkaXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdXRpbGl0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2NvbnN0cmFpbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19jb250YWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS93aWRnZXRfZXhwb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfY29udGFjdF9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX2dyYXBobG9nZ2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfaW5mbHVlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3BvbHltZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfZWRpdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfZmx1eC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2xvZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3Bsb3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19zdG9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3BhbmVsX3RhYi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfdWkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL0pzU2ltLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0EsQzs7Rzs7O1E7Uzs7O0c7STtJO0k7RztFOzs7O0dBME9BLFNBQVNBLG1CQUFtQkMsR0FBSyxTQUFRQSxXQUFZO0dDekxyRCxTQUFTQyxnQkFBZ0JDLEdBQUdDO0lBQzFCLEdBQUdELFFBQVE7SUFDWCxHQUFJQyxVQUFVLE9BQVFBLFNBQVNEO0lBQy9CLElBQUlFLFFBQVFDO0lBQ1osT0FBUTtLQUNOLEdBQUlILE9BQU9F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Ozs7O0k7SyxROzs7Ozs7Ozs7Ozs7d0Q7MEQ7MEQ7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STs7Ozs7O0c7O0ksc0I7Rzs7STtLLE07SyxNOztJO0k7SSxXO0ksc0I7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksa0Isc0IsZ0M7OztLLE07OztPLGE7O087USxLO1EsSzs7Ozs7TztRLE87USxPO1EsSzs7Z0M7O3VDO1E7Ozs7c0M7Tzs7TztRLE87USxPO1EsTztRLEs7Ozs7O3dDO1M7Ozs7dUM7UTs7Tzs7Rzs7STtLLEs7SyxLOzs7OzRCOztJLHNCO0c7O0k7SyxLO0ssSzs7O0s7O2E7O0k7cUM7Rzs7O0ssbUI7STtJLEksaUIsbUI7OztNLE07O00sTTtLOzs7Ozs7Ozs4Qjs7Ozs4Qjs7Ozs7O00sWTs7Ozs7OzhCOzs7OztNOztJLGdEO2dCOztLLE07STtHOztJOztlO2U7OztLLE8seUI7O0ksbUIsSTtJO2MseUI7SSxJLGtCOzs7O00seUI7TTs7Ozs7SSxPOztxQixpQzs7STs7OztHOztJOzs7O0k7Rzs7STs2Qzs7Szs7TSxLO0s7SyxPOztJO0ksTztHOzRCLCtCOzs7Szs7OztJO0k7SSxZLE87Ozs7O29DOzhCO0c7O0k7O0ksTztHOztJO0k7OztJOztLLEs7O0s7Ozt5QjtJO0c7O0k7STs7OztJOzs7O2MsNEI7OztHOztJOztLOzs7STtHOztJO0k7SSx5QjttQixpQjs7STs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw0QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw0QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozt3Qzs7O0k7OztLOzRCOzZCOzs7OztLOzRCOzs7O0k7O0sseUI7Ozs2Qjs7STs7Ozs7Rzs7O0ssSTs7Ozs7TTs7Ozs7O007Ozs7O3lCOztNOztNO08sSztPOzs7Ozs7Ozs7Szs7TTtPLEs7O087a0I7a0I7O007OztPLHlCOzs7O007SztLO00sSzs7TTs7TSxNOzs7UTs7UTs7Ozs7Ozs7O3NCOztROztpQzs7UTs7STtJO0k7RztxQix5QztvQiw4QjtzQiw4QjtxQixrQjs7SSxxQixVLFcsUztJLGMsTTs7OztNOzs7OztTO1M7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7O21COzs7OztpQixVLFcsVTs7OztLO0s7SztLOztJO0k7STtJOzs7SSxxQixVLFcsUztJLGMsUTs7Ozs7Ozs7TztPO087Tzs7Ozs7OztTOzttQjs7Ozs7aUIsVSxXLFU7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7O21COzs7OztpQixVLFcsVTs7OztLO0s7SztLOztJO0k7STtJOzs7STs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7SztNLE87Ozs7Ozs7Ozs7bUM7O0s7O00sVTtNLE07Ozs7O0k7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7YTs7O2MsTzs7YSxjLFE7Ozs7O2MsTzs7Ozs7OztjLE87Ozs7YSxPOzs7RztzQixPLHFCOzRCLGE7MkIsYTtrQyxhOzZCLGE7bUMsYTsyQixZOzJCLFk7Z0MsWTs7STs7O0c7cUIsaUM7O0k7Ozs7Ozs7WTs7Ozs7Rzs7STs7OztPO1EsTztPLE87O0s7Ozs7Szs7SyxPOztJLGtCLEk7STs7SSxPO0c7NEIsNkI7OztLOzs7O0k7SSxJOztpRDs2QjtHOztrQixxQixhOztJLGMsTSxpQztJOzs7aUMsMEI7Ozs7Ozs7O007OEI7O0s7SztLOzs7Ozs7Ozs7TTs4Qjs7SztLO0s7SztLOzs7Ozs7OztLOzZCOztJO0k7STtJO0c7O2tCLHdCLGE7O0ksYyxNLGlDO0k7Ozs7Ozs7TTs4Qjs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLOzZCOztJO0k7STtHOztrQix3QixhOztJLGMsTSxpQztJOzs7Ozs7O007OEI7O0s7TTs7O0s7SztLO0s7Szs7Ozs7Ozs7Szs2Qjs7STtJO0k7Rzs7STs7O0ssSSxNOzs7Ozs7STs7Ozs7O1k7Ozs7Rzt5QixPLHVCO2dDLFk7MkIsWTtHOztJO0ssTTtLOztpQjs7OztLOzs7O0s7OztJO0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7Syx5QjtLO007O08sUTs7Ozs7cUIsTztNOztPLFE7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7RztHOztJLFU7dUIsTyx5QztJOzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZSTdIQWEsTUFBT0MsR0FBVUMsR0FBVyxPQUFyQkQsTUFBVUMsVUFBZ0I7T0FDakNDO1lBQ0FDLE9BQU9ILEdBQUksT0FBSkEsRUFBSztPQUNaSTtZQUVBQyxVQUFVTCxHQUFFQyxHQUFJLGNBQU5ELElBQUVDLFdBQWlCO1lBQzdCSyxPQUFLTixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7T0FJbEJNLFlBQ0FDO1lBS0FDO0lBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBTFpEOztXQURBRDtHQWNVOzs7O09BbEJWRDtP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O1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsbENFN1g7SUFDQThYOztJQUNBcGdCO0lBQ0F1STtJQUNBQztJQUdBNlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLFcscUM7O0ksTzs7O0c7c0IsTyxvQzs7SSxRO0k7SSxPO0c7O0ksVzs7SyxVO0s7OztJOzs7Rzs7STs7SSxPO0c7O0ksSSx1Qzs7OztNLFk7NkM7TTs7Ozs7O0c7O0ksSSxxQjs7O2tCOzs7Rzs7STtJO0s7TTs7TTtNO2tCOzs7OztLOzs7RztHLCtCOzRCLG9CLHVCOztJLGlCOzs7STtJLEk7STs7Syw2QixtQjtpQjs7Ozs7O007OztVOztHOztJLG1DOzs7O00sWTs7TTs7Ozs7O0c7MkIsK0I7Z0MsbUI7O0k7Ozs7TTtNOzs7Ozs7Rzs7STs7STtLO007O1M7eUMsTyxrQjs7O1E7TTs7Uzt5QyxPLGtCOzs7UTtNLHFCLHFDO0s7Ozs7OztRO1M7UztTO1M7VTtVLFc7VTtVOzs7VTs7Ozs7Ozs7a0IsUyxTOzs7TTs7SztLOzs7Syx3QyxtQjtLO29DLE8sc0I7SztLOzs7Rzs7STs7Ozs7Ozs7OztRO1MsYTs7Ozs7Ozs7OztHOzt1QixTO2dDLFM7O0k7Rzs7STtJOzs7OztPLFk7Ozs7UztTLE07Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0k7STs7Ozs7WTtRO1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLDZCLG1CO0c7MEIsNkI7O0k7STs7Ozs7SSxnQjs7O0k7Ozs7O007OztPOzs7OztVLEc7VyxNOzs7Ozs7USxJOzs7Ozs7O087USxZOzs7UTtRLEk7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7RztHO0k7Ozt5QiwrQjs7STs7Ozs7OztHOztJLEksZ0I7O0c7O0ksYzs7O0k7aUI7Ozs7OztTLDJEO1M7UTs7O0c7O0k7O0ssTTs7STtHO3VCLG1DOzJCLGtCLGM7O0k7O0ksa0I7OztHOztJOztLLE07O0k7RzsyQixrQzs7STs7SSx3QjtrQiwrQjtJO0c7O0k7OztJLEcsMEI7Ozs7Rzs7STs7O0c7Ozs7Ozs7STtJOzs7YTtjOztjO2M7Ozs7Yzs7OztjO2E7O0c7O0k7OztJO0c7O0ksWTs7STs7O0k7OztpQjtJO0c7O0k7STtrQjthO0s7O007MEIsb0I7OztTO1M7UztRO0s7Szs7O0ksUTtJLGdCO3dCLGtDOztLO2lCOztLLGE7SztJO0k7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0s7O0k7STtJO0c7O0ksWTtJLGtCO3NCLG9COzttQixrQztLO0k7STtJO0c7O0ksWTs7SSxTO0ksZ0I7c0IsZ0M7O0s7OztNLGU7O0s7STtJO0k7STs7O0ksWTtJLGtCO3NCLG9CO2tCLGUsa0M7STtJOzs7SSxRO0ksYztzQixvQjtrQiwwQjtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O0s7SyxPO0k7STtJOzs7SSxZO0ksa0I7c0Isb0I7O0ssWTtpQjs7SztJO0k7STs7O0ksWTtJLGtCLHlCO3NCLG9COztLLEksZTs7OztNLGU7Ozs7STtJO0k7OztJO0ksWTtJLGtCLHlCO3NCLG9COztLLEksZTs7OztNLE87OztLO0k7STtJOzs7SSxROztJO0ksZTtzQixnQzs7SztJO0k7STtJOzs7SSxROztJLFE7SSxlO3NCLGdDO2tCLGlEO0k7STtJOzs7SSxROztJLFE7SSxlO3NCLGdDOztLOzs7Ozs7STtJO0k7STs7O0ksUztJLGUseUI7c0Isb0I7O0s7YztLO0k7STtJO0c7O0ksWTtJLGtCLHlCO3NCLG9COztLO2M7SztJO0k7STs7c0IsNkI7O0k7OztNO00sVzs7OztNOzs7TztPOzs7Ozs7O0c7O0k7Szs7O0s7O0ssTyx3QyxZO0k7O0s7TTs7d0I7TTs7Ozs7TyxNOzs7STtJO3FDLDRCO0k7Rzs7STtLOzs7Szs7SyxPLHdDLFk7STs7Szs7a0I7O007TztRLFE7Ozs7OztJO0k7cUMsNEI7STtHOztJLFk7O0k7SSxJLGU7O0s7aUI7O0s7STs7Szs7OztPLE07O007O0ssa0I7cUM7O2EseUIsMkI7O0s7SztLO007TTs7O21COztLO0k7MEI7STtJOzs7STtLO0s7Ozt5QixTOztVLE07UztLLE87O21DOzttQztzQixTOztLOzs7SywwQjs7STtJO0k7STtHOztJLFM7YTtJLDRCLDBCO3NCLGlDOztLOzs7TSxlOztLO0k7STtJO0k7Rzs7SSxTO2E7YTtJOzs7O0s7SztLO3NCLDZDOztLOzs7TSxlOztLO0k7STtJO0k7STtHOztJLFM7YTthO2E7STs7Ozs7SztLO0s7O0s7STs7Szs7O00sZTs7SztJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTtJOzs7Ozs7SztLO0s7Szs7SztJOztLOzs7Ozs7Ozs7Ozs7O00sZTs7SztJO0k7STtJO0k7STtJO0c7O0ksUzthO2E7YTthO2E7STs7Ozs7OztLO0s7SztLOztLOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O00sZTs7SztJO0k7STtJO0k7STtJO0k7RztvQix1QixjLE07O0ksZ0Isd0IsUzs7OztLOztlLFk7O2U7Yzs7OztJLFE7SSxjO3NCLGdDOztLO2dCOztpQjs7SztJO0k7STtJO0c7RztJOzs7O0k7Ozt1QyxTO0ksd0I7a0IsdUIsTzs7Szs7SztLO0s7SyxPO0k7STtHO3VCLGM7O0k7STs7STs7O2E7YSxHLDJCOztjOzs7YztjOzs7O2M7Ozs7Yzs7OztHOztJOzs7STtHOztJLG1COztJO0c7O0k7Ozs7Z0IsTzs7O0k7Rzs7SSxtQjs7O0ksd0I7O0ssTTsyQiwwQjtJOzs7STtJOztvQyxPOzs7Ozs7STtHOztJO0k7a0I7a0Msa0I7Szs7TTtNO00sb0Isb0I7OztTO1M7UztRO0s7Szs7O0k7Szs7TTs0QixxQjs7O1MsYTtTOztRO0s7Szs7SSxnQixlO3dCLGtDOztLLEksZTttQyxHLDRCO0ssYTtLO0k7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SztJO0k7STs7O0k7SSxxQyxXO0ksa0I7c0Isb0I7a0IsZSxnQztJO0k7OztJO0k7O3FCOztLLFc7Ozs7Szs7TTswQixxQjtzQixlLGlDO0s7Szs7SSxnQjt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0ksNkIsTztJLGM7c0Isb0I7O0s7SyxPO0k7STtJO0c7O0k7STtLOztNOzBCLG9COzs7UyxZO3FCOztTO1E7SztLOztJLGtCLFE7Z0I7O0k7OztJLG1CO0ksa0IseUI7c0Isb0I7O0ssSSxhOztNLE07OztLLGU7STtnQyxpQztJO0k7OztJLG1CO0ksa0I7c0Isb0I7a0IsZ0M7STtJO0c7O0k7O0ssd0IsTyxxQjs7O0ksUTtJLGU7c0IsaUM7O0s7aUI7O0ssZTtJO0k7STtJOzs7STtJOztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFE7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUztJLGU7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLLGU7STtJO0k7OztJO0k7SyxtQjs7Szs7STtLLG1COztLOztJLG1CO3NCLGlEOztLO2M7OztpQjs7a0IsTzs7O2lCLE87Ozs7OztJOztLLG1COztLO0k7STtJO0c7O0k7SSxxQztJOztLO0s7Szs7Szt3Qjs7SztJOztLOzs7eUI7O007OztnRDtLOzs7TSxvQjtNO007OztLOztNO007TTs7O0s7Szs7O0k7STtJO0k7OztJOzs7d0M7OztHOztJOztLO0s7bUI7SztLO0s7STtJO0s7Szs7b0MsUyxtQixTO0ssTzs7O0s7OzswQixTO3NCLHdCO007SztLOzs7bUM7d0IsUztvQixnQztJO0k7STtJO0c7O0k7STs7b0MsVztLOztNOzBCLG9CO3NCLGUsbUM7SztLOzs7O0s7O007NEIscUI7d0IsZSxzQztLO0s7O0ksZTt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0k7Ozs7c0MsVzs7Ozs7Ozs7Tzs7UTtRO1E7NEIsNkM7OztXLEksaUI7VyxlO1U7TztPO087Tzs7OztJOzs7d0M7Ozs7O0c7O0k7STs7Ozs7Ozs7USxXOzs7Ozs7Ozs7Ozs7UTs7UztTO1M7OztZO1c7OztZLEksaUIsaUI7WSxlO1c7UTtRO1E7UTtROzs7OztJOzs7d0M7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7UyxXOzs7Ozs7Ozs7Ozs7Ozs7Uzs7VTtVO1U7VTs7O2E7OztZOzs7YTtjO2M7YztjO2MsSTthO1k7UztTO1M7UztTO1M7Ozs7OztJOzs7d0M7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7VSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7VztXO1c7VztXOzs7Yzs7Ozs7YTs7O2M7ZTtlO2U7ZTtlO2UsSTtjO2E7VTtVO1U7VTtVO1U7VTs7Ozs7OztJOzs7d0M7Ozs7Ozs7O0c7NkI7Z0M7bUIsMEM7O0k7Ozs7O0c7O0k7Ozs7O0c7b0Isb0I7O0ksbUI7SSxrQjtzQixvQjs7SyxXO0s7STtJO0k7O29CLHlCO29CLHlCOztJLFk7STs7Szs4QztzQixvQjtrQixvRDtJO0k7O2dDOztJLDBDO0c7O0ksMEM7Rzs7SSwwQztHOztJOztrQzs7O0c7O0k7O2tDOzs7Rzs7STtHO3dCLG9EO21CLDBDO0csSSwyQjs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7RztvQiwwQzs7STtnRDtHOztJOztrQzs7O0c7O0k7Z0Q7RztnQzs7SSwwQztHOztJO2dEO0c7O0k7Z0Q7Rzs7SSw4QztHOztJLDZDO0c7O0k7O2dDOzs7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7RztxQix3RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7STs7Z0M7OztHO29CLHVEO29CLHVEO29CLHVEOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLDZDO0c7O0k7Rzs7STtHOztJO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7RztHO0k7STtJO0k7STtJOztJO29DOzs7Rzs7SSwrQixpQjtHO3VCLCtCLG9CO3VCLCtCLG9CO0csSTs7STs7Szs7TTs7Uzs7VSxPOztTLE07UTs7OztJLCtCLGM7Rzs7STtJOztpQzswRDs7SywrQjtLLGU7bUI7SztNOzBCLHFCOzs7UztTOztRO0s7Szs7Ozs7OztNLG1DLFM7O0ssdUI7O007Tzs2QixzQjs7O1U7c0I7O1U7UztNO007O0s7TTtNLHNCLHNCOzs7UztxQjs7UztRO2dDLG9DOzs7UztTOzs7VTs7O1U7UztRO0s7SztLOzs7OztLOzs7ZSxZOztlO2M7OztJLHVCO3dCLG9DOztLO2lCOztLO0k7STtJO0k7RztHOzhCLDhDOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOztnQzs7O0c7O0k7O2dDOzs7Rzs7O3VCLDRCOzJCLGdDOzBCLDJCO3lCLDhCO3VCLDRCOztLO0sscUI7STs7SztLLHFCO0k7MkIsOEI7O0s7SyxxQjtJOzBCLCtCOztLO0sscUI7STs2QixrQzt5Qiw0Qjt5Qiw4Qjs7SztLLHFCO0k7MkIsZ0M7K0Isb0M7bUMsd0M7O0s7STs7SztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUkvaENRLElBbkJSaUQsY0FDQUMsa0JBQ0FDLGlCQWlCQUM7YUFFQUMsT0FBT0M7S0FDVDtNQUF5QixRQUFBO01BQVBDO01BQWRDO01BQ0FDLGNBRktIO01BR0xJO1FBQVE7O21CQUFpQkM7V0FDekIsU0FEeUJBO2dCQUdmQyxJQUhlRDtZQUR6QkYsYUFJMEIsV0EzQjVCUixPQTJCWVcsR0FKVkg7O29CQUdRSCxJQUZpQkssUUFEekJGLGFBR1FIO1dBR1IsT0FMeUJLO1VBS3RCO1VBUEhIO0tBUUosbUJBUElDLFNBQ0FDLFNBRmNIO0lBUU07YUFFdEJNLFdBQVdQLEdBQUVFO0tBQ2Y7TUFBSUMsY0FEU0g7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7SSxjOztJOzs7aUI7O0s7Szs7OztzQixPLHNDOztJLDBCOzs7dUM7O0s7Ozt5Qzs7Szs7d0M7O0k7Rzs7OztLO0s7Szs7STtJO0ksTztHOztJO0k7SSxPO0c7O0ksMEI7Ozt1Qzs7Szs7Ozs7Ozs7O1U7VTtVOztNO007TSxPOzs7SztLO0ssTzs7d0M7O0k7Rzs7STtJO0ksUSw0QjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0k7STtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFc7STs7O007OztJLE87Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJO0k7SSxPOzs0Qjs7Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0ksTzs7O2M7YztjLE87YTs7Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJOzs7TSxjLE87TSxzQjs7O007O087Uzs7O1k7WTtXOztPLE07TTs7Yzs7O2lCO2lCLE87Z0I7Ozs7STtHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7SyxPOzs7O00sZ0IsTztNLE87O0ssZ0I7SyxPOzs7OztNLE87OztLO00sVztNO2M7OztNLFM7TTtjOztLLE87Ozs7YSxPO3dCO0s7OztTOzs7O1U7UyxPOzs7Ozt1Qzs7O0s7Ozs7NEI7OzttQjs7O2MsTzt1QjtJLEc7Szs7TSw0QjtLOzs7OzRCOzs7O0s7O00sNEI7Szs7Ozs0Qjs7OztrQjtHOztJOztJLE87Ozs7a0M7O0c7O0k7SyxPOzs7OztNO007TSxPOzs7SztLO0ssTzs7Ozs7TTtNO007OztTO1MsUTtTO1M7UztTO1M7UztROzs7TTtNLE87OztLO0s7Szs7O1EsUTtRO1E7Tzs7O0s7SyxPOzs7O0s7SztLLE87OztJO0k7SSxPOztvQixPLDhDOztJOzRDOzs7Ozs7OztRLE87Ozs7Ozs7UztVLGE7VTs7OztvQzs7Ozs7OztROzs7Uzs7WTtZLE87VztTLE87UyxPO1E7Uzs7WTs7O2U7Ozs7O3NCOzs7Yzs7O1M7Ozs7bUM7Ozs7Ozs7OztRLE87Ozs7Ozs7UyxPOzs7O3VHLE87O0k7RztzQyx1Qjs7SSxPOzs7a0M7O0c7O0ksVTtJLE87Ozs7a0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksTTtHOztJOztLOztLLE87Szs7bUM7OztJOzs7VTtVO0ssTTtJLE87Rzs7SSxXO0k7YTtHOztJO0ssTztLO0ssTTtJO0ksaUI7STthOzs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7OztJLE07Rzs7STs7SztLO0s7Szs7Ozt3QixNO00sVzs7TTs7Ozs7aUIsTTs7Rzs7STs7O0c7O0k7SSxPO0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtROztRO1M7Uzs7Ozs7VTs7OztRO1M7Uzs7Ozs7VTs7OztROztnQixxQjs7UTtRO1M7UztTO1M7UztTOzs7O1U7VTtVO1U7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7O1E7OztROztROzs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7OztROztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7OztRLGMsTztRLE8sYzs7UTs7UTtnQjs7O0c7O0k7STtLOztROztLOzs7OztPLFE7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TztRLEk7USxJO1EsTTtRLEk7UTtRO1E7Ozs7UTtTOztZOztTOzs7OztXO1ksTTtZLE07WSxNO1ksTTtZO1k7WTs7O1ksTztXOztXOztXOzs7TyxPOztPO2U7O0c7O0k7STtLOztROzs7O1M7O1UsSTtTO1M7UyxPOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1Msb0M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1MsSSx5Qzs7OztXOzs7O1MsSSx5Qzs7OztXOzs7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxtQjtVOztxQjs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLHFCO1U7O3FCOztTO1M7UyxJLFcseUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7UyxPLHFCOztTO1M7UyxJLFcseUI7Ozs7Ozs7Ozs7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTLFE7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7OztTLE87O2tCOzs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtpQjs7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTs7cUI7O1M7UztTOztzQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTs7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTs7UTs7UTs7UTtROzs7USx5Qzs7UTs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsMEI7O1E7UTs7O1EseUM7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTLE87O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsTzs7UTs7USx5QztnQjs7O0c7O0k7MkIsTztJO0c7O0k7SSxPO0c7O0k7WTtJOzs7SyxNO0ssSTtLO0s7Ozs7TSxXO007YTtNOzs7OztJO0c7O0k7SztHOzs7STtJO0k7SyxNO0k7O0s7O007O0k7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7O0k7OzsrQixPOztLLEksbUQ7OztpQyxvQjtNLEk7OztPLE07O00sTTs7STtJO0c7O0ksUTtJLDZCO0c7O0k7SyxTO0ssSTtJO0c7O0ksUztJLG9CLE8sMkI7STtLO0ssUztLLEk7STtHOztJOzs7K0IsTztJO0ksdUI7O0s7TTtPLE87TztPOzs7eUI7TTs7OzsyQixvQjtNO00sMkM7O0k7SSxzQjtHOztJLFM7SSxvQixPLDJCO0k7STtHOztJO0c7O0k7RztHOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs0QjtHO0c7O0k7O0ssSSxXLHdDOzs7NkI7Ozs7SSxXO0ksYzs7O0k7STtlOzs7O00sSSxZOzs7OEI7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSxpQzs7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0k7O3lDOzJDOztJO0c7O0k7MEI7Ozs7eUM7MkM7O0k7Rzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7SSwrRDtJO0c7O0k7MEI7OzhDO0k7Rzs7SSxpRTtJO0c7O0ksa0U7STtHOztJOzBCOztpRDtJO0c7O0k7O0ssTzs7STs7O0k7STthLE87Syx5QixROztNLGtCOzs7O0c7O0k7STthLE87OztNOztPLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztROztTO1c7OztjO2M7YTs7USxzQjs7TyxnQixPO08sc0I7Ozs7NEM7OzttQjs7Tzs7OztJO0c7O0k7SSxPO0c7O0k7STs7O0c7O0k7SSxJLDJEOzs7O00sUTs7O087Ozs7Ozs7Ozs7YTs7YTs7YTs7YTs7YTs7YTs7Ozs7Ozs7Ozs7O087TztPO087TztPOzs7TTs7Ozs7STtLOzs7Ozs7Ozs7Szs7Ozs7O0ssTTs7SSxPO0c7O0ksUztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7SSxZOztJO0k7SyxJO0ssTztJLE87Rzs7STs7OztnQjtpQjtHOztJOzs7OztPLFk7Ozs7Ozs7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0ksWTs7O0ssTzs7bUIsTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0k7O2E7Ozs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjt3Qjs7STtJO0ksYztHOztJLFk7OztlOzs7SSxPO0c7O0ksWTs7Ozs7OztLLE87OztLLE87STtLLEs7O087O1U7STtJO0ksYztHOztJLFk7OztlOzs7Ozs7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGM7O0k7OztpQjs7SztLOzs7O3NCLE8sc0M7O0ksMEI7OzswQzs7NEM7O007O3lDOztLOzs7eUM7O0s7Ozs7SyxPOzs7STtHOzs7O0s7SztLOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7OztLO0s7O0ksTztHOztJLDBCOzs7MEM7Ozs7Ozs7O1c7VztXOztPO087TyxPOzs7TTtNO00sTzs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7O0k7STtJLE87Rzs7SSxROztJO0k7STtJO0ksTztHOztJO0k7SSxRLDRCO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7STtJO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksVztJOzs7TTs7O0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7STtJLE87OzRCOztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7SSxPOzs7YztjO2MsTzthOztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087O1E7VTs7O2E7YTtZOztRLE07Tzs7ZTs7O2tCO2tCLE87aUI7Ozs7Ozs7TywrQjs7Ozs7TSxnQixPO00sc0I7OztJO0c7OztLLE87STtJLE87Rzs7STs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STtJOztNLE87Ozs7O1Esa0IsTztRLE87OztPO1EsVztRO2tCOzs7USxTO1E7a0I7O08sTzs7OztPLE87O00sa0I7TSxPOzs7O007bUIsTzswQjtPOztRLDRCO087Ozs7OEI7OztxQjs7TSxJOzs7Ozs7a0IsTzsyQjtROzs7WTs7OzthO1ksTzs7Ozs7MEM7OztROzs7OytCOzs7c0I7OztpQixPOzBCO08sRztROztTLDRCO1E7Ozs7K0I7Ozs7UTs7Uyw0QjtROzs7OytCOzs7O3FCOzs7O08sTzs7Ozs7TztRLEk7USxPOzs7OztzQzs7O087UTtROzs7OztRO1EsTzs7TyxJOzs7O0c7O0k7O0ksTzs7OztrQzs7Rzs7STtLLE87Ozs7O007TTtNOzs7UyxRO1M7UztROzs7TTtNLE87Ozs7O087TztPOzs7VTtVLFE7VTtVO1U7VTtVO1U7Uzs7O087TyxPOzs7TTtNO007OztTLFE7UztTO1E7OztNO00sTzs7OztNO007TSxPOzs7SztLO0s7Szs7O007TTtNOzs7TTtLO0ssTzs7Ozs7TTtNO00sTzs7O0s7SztLLE87Ozs7SztLO0ssTzs7O0k7STtJLE87O29CLE8sOEM7O0k7STs7O2lEOzs7Ozs7Ozs7O1M7OztVOzthO2EsTztZO1UsTztVLE87UztVOzthOzs7Z0I7Ozs7O3VCOzs7ZTs7O1U7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7O2MsMEI7Ozs7Ozs7MEI7Uzs7Ozs7O087USxhO1E7Ozs7a0M7Ozs7Ozs7O1MsTzs7OztnSCxPOzs7Ozs7UyxPOzs7Ozs7O1EsTzs7O0s7O0c7c0MsdUI7O0ksTzs7O2tDOztHOztJLFU7SSxPOzs7O2tDOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OztJLE07Rzs7STs7Szs7SyxPO0s7O21DOzs7STs7O1U7VTtLLE07SSxPO0c7O0ksVztJO2E7Rzs7STtLLE87SztLLE07STtJLGlCO0k7YTs7O0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7Ozs7SSxNO0c7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7O2lCLE07O0c7O0k7OztHOztJO0ksTztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UTs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTs7Z0IscUI7O1E7UTtTO1M7UztTO1M7Uzs7OztVO1U7VTtVO1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7Ozs7UTs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxjLE87USxPLGM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxRO08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O087USxJO1EsSTtRLE07USxJO1E7UTtROzs7O1E7Uzs7WTs7Uzs7Ozs7VztZLE07WSxNO1ksTTtZLE07WTtZO1k7OztZLE87Vzs7Vzs7Vzs7O08sTzs7TztlOztHOztJO0k7Szs7UTs7OztTOztVLEk7UztTO1MsTzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLG9DOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLEkseUM7Ozs7Vzs7OztTLEkseUM7Ozs7Vzs7OztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcsbUI7VTs7cUI7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxxQjtVOztxQjs7UztTO1MsSSxXLHlCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1MsTyxxQjs7UztTO1MsSSxXLHlCOzs7Ozs7Ozs7Ozs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7UyxRO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOzs7UyxPOztrQjs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7aUI7O1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7O3FCOztTO1M7Uzs7c0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxJLGM7TztRO1E7aUI7OztTO1M7UztrQjs7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7UTtTOztZOztTOzs7OztXO1c7Vzs7VztZOztlOzs7O2dCLE87O2dCOztnQjs7WTs7Ozs7VyxPOztXOztXOzs7O1E7O1E7UTs7O1EseUM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLDBCOztRO1E7OztRLHlDOztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UyxPOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLE87O1E7O1EseUM7Z0I7OztHOztJOzJCLE87STtHOztJO0ksTztHOztJO1k7STs7O0ssTTtLLEk7SztLOzs7O00sVztNO2E7TTs7Ozs7STtHOztJO0s7Rzs7O0k7STtJO0ssTTtJOztLOztNOztJO0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJLFM7STtLO0s7Szs7OztLO0ssTTs7RztHOztJOzs7K0IsTzs7SyxJLG1EOzs7aUMsb0I7TSxJOzs7TyxNOztNLE07O0k7STtHOztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs7OytCLE87STtJLHVCOztLO007TyxPO087Tzs7O3lCO007Ozs7MkIsb0I7TTtNLDJDOztJO0ksc0I7Rzs7SSxTO0ksb0IsTywyQjtJO0k7Rzs7STtHOztJO0c7Rzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07NEI7RztHOztJOztLLEksVyx3Qzs7OzZCOzs7O0ksVztJLGM7OztJO0k7ZTs7OztNLEksWTs7OzhCOzs7Ozs7Szs7Rzs7STtLOztNLE07TTs7TSxPO0s7TSxPO00sTztLLE07NEI7O0k7SyxPO0ssTztJLGM7OztJOztLLHNCOztJOzs7SSxtRTtJO0c7O0ksaUM7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7OztHOztJO0k7YSxPOzs7TTs7TyxROzs7Ozs7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O2U7Z0IsZTtnQjs7MkI7O2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLHdFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2M7O3NEOzBEOztjO2E7O0c7O0k7O2MsMkU7YzthOztHOztJO0ksTzthOzsrQixvQixXOztHOztJO0ksTzthOzsrQixzQixhOztHOztJOzs7Ozs7SyxzQjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJOzs7Rzs7STtJLEksMkQ7Ozs7TSxROzs7Tzs7Ozs7Ozs7OzthOzthOzthOzthOzthOzthOzs7Ozs7Ozs7Ozs7TztPO087TztPO087OztNOzs7OztJO0s7Ozs7Ozs7OztLOzs7Ozs7SyxNOztJLE87Rzs7SSxTO0k7SSxPO0c7O0ksTztHOztJO0ksTztHOztJLFk7O0k7STtLLEk7SyxPO0ksTztHOztJOzs7O2dCO2lCO0c7O0k7Ozs7O08sWTs7Ozs7OztRLE07Ozs7Ozs7SztLOzs7OzRCOzs7Rzs7SSxZOzs7SyxPOzttQixPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7STs7YTs7OztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCO3dCOztJO0k7SSxjO0c7O0ksWTs7O2U7OztJLE87Rzs7SSxZOzs7Ozs7O0ssTzs7O0ssTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0ksWTs7O2U7Ozs7Ozs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxjOztJOzs7aUI7O0s7Szs7OztzQixPLHNDOztJLDBCOzs7OzRDOztNOzs7MEM7O00sTzs7MkM7O0s7Ozs7SyxPOzs7eUM7O0s7Ozs7SyxPOzs7STtHOzs7O0s7SztLOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7OztLO0s7O0ksTztHOztJLDBCOzs7OzRDOztNOzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNLE87Ozs7TTtNO00sTzs7O0s7Ozs7SyxPOzs7eUM7O0s7Ozs7SyxPOzs7STtHOztJO0k7SSxPO0c7O0ksUTs7STtJO0k7STtJLE87Rzs7STtJO0ksUSw0QjtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0k7STtJLE87Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFc7STs7O007OztJLE87Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJO0k7SSxPOzs0Qjs7Rzs7STtJO0k7O0s7Ozs7Z0I7STtJLFE7STtJO0c7O0k7STtJOztLOzs7O2dCO0ksTzs7O2M7YztjLE87YTs7Rzs7STtJLFM7STtLO0ssVztLOzs7O0s7SyxNOztHOztJOzs7O08sYyxPO08sc0I7OztPOztRO1U7OzthO2E7WTs7USxNO087O2U7OztrQjtrQixPO2lCOzs7Ozs7O08sK0I7Ozs7O00sZ0IsTztNLHNCOzs7STtHOztJO0ssTzs7Ozs7O087TztPOzs7VSxRO1U7VTtTOzs7TztPLE87OztNO007TTtNOzs7TztPO087OztPO007TSxPOzs7OztPO087Tzs7O1U7VSxRO1U7VTtVO1U7VTtVO1M7OztPO08sTzs7O007TTtNLE87Ozs7TTtNO007OztTLFE7UztTO1E7OztNO00sTzs7O0s7SztLLE87Ozs7SztLO0ssTzs7Ozs7TTtNO00sTzs7O0s7SztLLE87Ozs7SztLO0ssTzs7O0k7STtJLE87O29CLE8sNEM7O0k7STs7O2lEOzs7Ozs7Ozs7O1MsTzs7Ozs7Uzs7O1U7O2E7YSxPO1k7VSxPO1UsTztTO1U7O2E7OztnQjs7Ozs7dUI7OztlOzs7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7O2MsMEI7Ozs7Ozs7MEI7Uzs7Ozs7O087USxlO1E7Ozs7a0M7Ozs7Ozs7O1MsTzs7Ozs7OztVLE87Ozs7Ozs7UyxPOzs7Ozs7O1MsTzs7Ozs7OztRLE87OztLOztHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7TSxPOzs7OztPLE87Ozs7USxrQixPO1EsTzs7O087USxXO1E7a0I7OztRLFM7UTtrQjs7TyxPOzs7O08sTzs7TSxrQjtNLE87Ozs7OztRLE87OztlLE87MEI7Tzs7O1c7Ozs7WTtXLE87Ozs7O3lDOzs7Tzs7Ozs4Qjs7O3FCOzs7O08sTzs7O2dCLE87eUI7TSxHO087O1EsNEI7Tzs7Ozs4Qjs7OztPOztRLDRCO087Ozs7OEI7Ozs7b0I7Ozs7TTtxQixPOzBCO087O1EsNEI7Tzs7Ozs4Qjs7O3FCOztNLEk7Ozs7OztPO1EsSTtRLE87Ozs7O3NDOzs7TztRO1E7Ozs7O1E7USxPOztPLEk7Ozs7Rzs7STs7SSxPOzs7O2tDOztHO3NDLHlCOztJLE87OztrQzs7Rzs7SSxVO0ksTzs7OztrQzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0duRko7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7OztZQUtJbUUsTUFBTXZDLEdBQUksTUFBQSx1Q0FBSkEsT0FBbUI7WUFFekJtRCxnQkFBZ0JDLEdBQUVwRDtJQUNwQixZQURrQm9EOztTQUdUOUMsY0FGTCtDLEtBRVUsa0NBQUwvQyxHQUhTOEMsTUFBRXBEOztTQUNoQnFELEtB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R2Q7SUFDMUIsSUFBVGtKLFNBQVM7SUFDYixXQUY2QkQsUUFDekJDLFFBRG1DbEo7SUFHM0I7S0FBUm1KLFFBQVEsNkJBRlJEO0tBR0FOLE1BQU0scUNBRE5PO0tBRUFOLFFBQU8sV0FMVUcsU0FJakJKO0lBRUosT0FBQSxpQ0FOb0M5SCxJQUtoQytIO0dBQ3lCOzs7OztPQTVQM0IvRTtPQXNDQXNCO09BS0FFO09BNEVBaUI7T0FZQUM7T0FuRkFqQjtPQVVBRztPQVdBQztPQU9BQztPQU9BQztPQUlBQztPQUtBQztPQUdBQztPQUtBQztPQUdBQztPQUtBQztPQUdBQztPQTJCQUs7T0FJQUU7T0FJQUM7T0FJQUM7T0FJQUM7T0FJQUM7T0FRQUU7T0FJQUM7T0FRQUc7T0FTQUk7T0FnQkFDO09BR0FHO09BaENBVjtPQVpBSDtPQTBFQXdCO09BekJBVjtPQVVBRztPQUdBRTtPQXNCQVk7T0FQQU47Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjtNLFc7Szs7O0ksSSxXLG9COzs7O0s7Ozs7TTtLO0s7SztLOztNO007TTs7SztLLFc7SztLLE87O0c7Ozs7Ozs7Ozs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxpQjtHOztJLHdCO0c7O0k7SSxPOztHOztJLFc7SSxPO0c7NEIsTyw2Qjs2QiwrQztHO0ksZ0I7SSxxQjtJLGlCO0ksc0I7Ozs7Ozs7Ozs7Ozs7Ozs7SSxtQjs7STtHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxnQjtHOztJO2lCO0c7Z0MsTyxvQzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7aUMsTyxrQzs7STtLO00sTztNLE87Szs7Ozs7SyxJLHVCO0s7OztROzs7Ozs7OztRO087O0s7OztTLEcsbUM7UztVLHVCO1U7Ozs7OztVO1c7OzBCO1c7Ozs7a0M7Ozs7UTtNOzs7Ozs7OztjOzs7O007TztPO2U7SztNO1E7Vzs7OzttQjtNO1E7OztXO1csTzs7O3FCO3FCO29COztVOztLLE87O0c7O0ksSSxXLHNDOzs7O3dDOztLO00sRztPLE07TSxJLE87Ozs7O00sRztPLE07cUI7O0s7TSxHO08sTTtNO08sTztPLE87Ozs7OztvQjs7Szs7Rzs7STtLLEksVyw4Qjs7Ozs7Ozs7O0c7O0k7O087O0k7Rzs7O0k7O0ssTzs7O2UsSSxXLHdCOzs7MkM7OztjOztJO0k7SztLO29CO00sVzs7OztJO0k7Ozs7SztJLE87Ozs7YyxPO2E7Rzs7STtHOzs7STs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ssUTs7O0ssUztJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztLLFU7SSxJOzs7SztLO0ssTTs7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOztJOzs7SyxTO0ssVTtJO0s7Ozs7O0s7SztLO0s7SyxNOztJO0k7STtHOztJO0ssUTs7O0ksSSxjOzs7SztLO0ssTTs7O0ksSSxjOzs7SztLO0s7SztLLE07O0k7OztLLFM7SyxVO0ssVTtJO0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTTs7STtJO0k7STtHOztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0ssVztLOzs7OztNLE07Ozs7Rzs7SSxPO0c7O0k7Rzs7STtHOzs7STs7OztJOzs7SSxJLG9CO0k7STtJO0c7O0ksSSxxQjtJO0ksSTs7Ozs7STtHOztJOzs7SztLO0k7STtJLEk7Ozs7O0k7OztJOzs7O0s7SztJO0k7SSxJOzs7OztJO0k7OztJLFc7STtLO0s7TSxPO00sVztLOzs7O0s7SyxNOztHOztJLE8sc0I7Rzs7SSxXO0k7STtJOztLO00sSSxZOzs7Ozs7Ozs7SyxrQixLOztlLHNCO007TTtPLFM7TyxVO007TTs7VSx1Qjs7Rzs7Ozs7c0I7O3NCO3NCOzs7NEI7NEI7O1E7OzRCOztROztzQjtzQjs0Qjs7c0I7c0I7c0I7c0I7Ozs7a0M7c0I7c0I7Ozs7OztzQjtzQjs7OztROzs0Qjs0Qjs7O3NCOzs7O1M7OzZCOzZCOzs7dUI7Ozs0QjtrQztzQjs0Qjs0Qjs7UTs7O1E7O3NCOzRCOzRCO2tDO3NCO3NCO3NCO3NCOzs7c0I7c0I7c0I7Ozs7OzRCOzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7UTs7NEI7NEI7c0I7c0I7O3NCO3NCOzs7O3NCOztzQjtzQjs7UTs7c0I7NEI7O3NCO3NCO3NCO3NCO3NCO3NCO3NCOzRCO3NCO3NCO3NCOztzQjtzQjtzQjs7Ozs7OztROzs7O1E7OzBCOzBCOzBCOzBCOzBCO3FCO3FCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCO3FCO3FCO3FCO3FCOzBCOzBCOzs7cUI7K0I7MEI7cUI7MEI7MEI7cUI7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw0QyxlOztLO1k7Szs7OztJOzs7Ozs7SyxVO007TTs7b0I7TTtNOzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOztJO0c7b0IsWTttQixZO3VCLFk7NEIsbUI7OEIsbUM7Z0MsMEM7O0k7Rzt3QixjO0c7O0k7O2M7STtJLE87MEMsdUI7RztHO0k7O0k7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0ssbUI7O0s7STt3QixzQjs7STtHO3NCLFk7cUIsWTt1QixZOztJO0c7MEIsVzs7O0ksTzs7Ozs7O0c7STs7Ozs7Ozs7Ozs7O3NCLE8sNEI7eUIsTyx1QztzQixPLDRCOztJO0s7TSxROzs7TSxNO00sTTtLOzs7OzJCOzs7Rzs7STtnQztJLFU7SSxPO0c7O0ksTzs7cUMsTyxzQjs7O0c7OztLLGU7SztLO0k7STtJO0k7STtHO0c7OzhCLE8sbUIsUzs7STs7RztHO0k7OztRO1EsTztPO0k7Ozs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7Ozs7Ozs7OztZOztJO0s7Uzs7OztJO2E7O0ssTzs7WSxPOztJLE87OztJOzs7O0k7Ozs7STs7Ozs7eUIscUIsTyxpQjtLLE87OztlOztnQixNO2dCLE07ZSxPOzs7Ozs7O2M7STtJO0c7RzsrQixvQjtrQyx5QjtHO2dDLHFCO21DLDBCO3dCLFM7O0k7STtnQixPOzs7O0ssTzs7O0k7Rzt5QixTO2tDLHFDOzJCLGlDOzJCLGlDOzRCLGlDOzRCLGlDOzZCLGlDOztJO0kscUM7Ozs2QiwwQjs7O3lCLE8sd0M7OztJO0ks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T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7RyxXOzhCLE8sbUM7O0ksVztJLE8sK0I7Rzt5Qix1QixXLFM7O0ksSSxJOztLLFc7SyxxQjtLO2tCOzs7Rzs7SSxJLEk7O0ssSSxPLHVCLE87SyxxQjtLO2tCOzs7Rzs7STs7O00sVztnQjtPLE07O21CLGM7Ozs7Ozs0Qjs7O0c7O0k7O0ssUTs7Ozs7USxlO087Ozs7O0s7Ozs7Rzs7STtJOztPLE87TyxjO007O0k7Rzs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEIsTzs7UTs7O1EsTzs7USxzQztRLFE7Ozs7UTs7OztROzs7Z0I7OztHOztJO0k7Ozs7Ozs7Ozs7OzRCOzs7USxPOzs0Qjs7O1E7OztRLGtCLE87O1E7O1Esc0M7UTs7Ozs7Ozs7Ozs7O0c7eUI7O0k7STs7Ozs7O1MsbUM7Uzs7UyxtQztTOztTLGtCLE87O1M7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7SSxxQjtJOzs7O0c7SSxrQjs7OztJO0ssVztLO0s7SztLO0s7O0s7TTs7O1EsWTtROzs7Ozs7O0ssSTtLOzs7STs7SztLO0s7STs7SztLO0s7STs7SyxJLFUsd0M7Ozs7O2lCOztNOztJOztLLHFCOztpQjs7SztJOztLOzs7Uzs7UztpQjs7Ozs7UTswQzs7O1Esa0IsUTt3Qjs7UztVLFE7VTtVO1U7VTs7Ozs7Ozs7a0M7Ozs7MEIsMkI7USxVO1EsK0I7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7O0c7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7Rzs7SSxVOzs7Rzs7SSxVOzs7Rzs7SSxVOzs2QixNO0k7Rzs7SSxVOzs2QixNO0k7Rzs7STs7SztLLGUsTTtLOztJLE87Rzs7STs7SztNO007SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksRyxnQzs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOztJO0c7O0k7STs7Ozs7O007O08sb0I7O1E7UztTO1M7Ozs7aUI7Ozs7Ozs7TztRO1E7UTs7Ozs7Ozs7SyxPOztHO21DLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJdUJ4REFpNEM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaEZBQyxZQUVBN1Q7SUFGYyxVQUVkQSw4QkFBQUEsVUFESzJDLElBQ0wzQyxNQURVLE9BQUwyQztJQUNBLE1BQUE7NERBQUwzQztHQUFrRTtZQWdJbEU4VDtJQUFrQjs7V0FDUi9QLGNBQUgzRix3Q0FBRzJGO2NBQUgzRjs7b0NBdERQcVY7O29DQUNBQzs7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QURsQkMsR0FDWTtJQUFNLE9BQUEsMEMsT0FEakRGLEtBQU1DLEdBQXlCQztHQUMwQjtZQUU3REM7SUFDRixPQUFHO2VBQ1EsaURBZFRMOztHQWlCZTtZQUVmTTtJQUNGLE9BQXFCOzs7O2NBQ2pCLElBQUEsV0FBQSxNQUFBLGdDQWhCRkw7Y0FnQitCLE9BQUE7OztxQyxPQVozQkMsS0FHSkc7YUFTa0Q7R0FBQzsrQkFyQm5ETCxNQUtBQyxNQWNBSzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNyQkFDO0lBQ087SUFDRTtLQUFQQyxPQUFPO0tBRW9DLE1BQUE7S0FBeEIsTUFBQTtJQUFyQiwrQkFGRUE7SUFJMEIsVUFBQTtJQUFyQiwrQkFKTEE7SUFLMEIsVUFBQTtJQUFyQiwrQkFMTEE7SUFPMkM7S0FBQSxNQUFBO0tBQXhCLE1BQUE7SUFBckIsK0JBUEVBO0lBVUs7SUFDQTtJQUNBO0lBSUw7S0FBQTtPQUFBOzs7VUFDYTtVQUNBO1VBQ0E7VUFDVDtTQUFRO0tBSlo7O0lBREY7R0FPTTtHQUUwQjtJQUFBLEtBQUEscUNBMUJoQ0Q7SUEwQmdDOztHQUE1Qjs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0NqQkE7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwLTIwMTQgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQW4gT0NhbWwgc3RyaW5nIGlzIGFuIG9iamVjdCB3aXRoIHRocmVlIGZpZWxkczpcbi8vIC0gdGFnICd0J1xuLy8gLSBsZW5ndGggJ2wnXG4vLyAtIGNvbnRlbnRzICdjJ1xuLy9cbi8vIFRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGNhbiBiZSBlaXRoZXIgYSBKYXZhU2NyaXB0IGFycmF5IG9yXG4vLyBhIEphdmFTY3JpcHQgc3RyaW5nLiBUaGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nIGNhbiBiZSBsZXNzIHRoYW4gdGhlXG4vLyBsZW5ndGggb2YgdGhlIE9DYW1sIHN0cmluZy4gSW4gdGhpcyBjYXNlLCByZW1haW5pbmcgYnl0ZXMgYXJlXG4vLyBhc3N1bWVkIHRvIGJlIHplcm9lcy4gQXJyYXlzIGFyZSBtdXRhYmxlIGJ1dCBjb25zdW1lcyBtb3JlIG1lbW9yeVxuLy8gdGhhbiBzdHJpbmdzLiBBIGNvbW1vbiBwYXR0ZXJuIGlzIHRvIHN0YXJ0IGZyb20gYW4gZW1wdHkgc3RyaW5nIGFuZFxuLy8gcHJvZ3Jlc3NpdmVseSBmaWxsIGl0IGZyb20gdGhlIHN0YXJ0LiBQYXJ0aWFsIHN0cmluZ3MgbWFrZXMgaXRcbi8vIHBvc3NpYmxlIHRvIGltcGxlbWVudCB0aGlzIGVmZmljaWVudGx5LlxuLy9cbi8vIFdoZW4gY29udmVydGluZyB0byBhbmQgZnJvbSBVVEYtMTYsIHdlIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVcbi8vIHN0cmluZyBpcyBjb21wb3NlZCBvbmx5IG9mIEFTQ0lJIGNoYXJhY3RlcnMgKGluIHdoaWNoIGNhc2UsIG5vXG4vLyBjb252ZXJzaW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCkgb3Igbm90LlxuLy9cbi8vIFRoZSBzdHJpbmcgdGFnIGNhbiB0aHVzIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4vLyAgIGZ1bGwgc3RyaW5nICAgICBCWVRFIHwgVU5LTk9XTjogICAgICAwXG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgQVNDSUk6ICAgICAgICA5XG4vLyAgICAgICAgICAgICAgICAgICBCWVRFIHwgTk9UX0FTQ0lJOiAgICA4XG4vLyAgIHN0cmluZyBwcmVmaXggICBQQVJUSUFMOiAgICAgICAgICAgICAyXG4vLyAgIGFycmF5ICAgICAgICAgICBBUlJBWTogICAgICAgICAgICAgICA0XG4vL1xuLy8gT25lIGNhbiB1c2UgYml0IG1hc2tpbmcgdG8gZGlzY3JpbWluYXRlIHRoZXNlIGRpZmZlcmVudCBjYXNlczpcbi8vICAga25vd25fZW5jb2RpbmcoeCkgPSB4Jjhcbi8vICAgaXNfYXNjaWkoeCkgPSAgICAgICB4JjFcbi8vICAga2luZCh4KSA9ICAgICAgICAgICB4JjZcblxuLy9Qcm92aWRlczogY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX3N0cl9yZXBlYXQobiwgcykge1xuICBpZihuID09IDApIHJldHVybiBcIlwiO1xuICBpZiAocy5yZXBlYXQpIHtyZXR1cm4gcy5yZXBlYXQobik7fSAvLyBFQ01Bc2NyaXB0IDYgYW5kIEZpcmVmb3ggMjQrXG4gIHZhciByID0gXCJcIiwgbCA9IDA7XG4gIGZvcig7Oykge1xuICAgIGlmIChuICYgMSkgciArPSBzO1xuICAgIG4gPj49IDE7XG4gICAgaWYgKG4gPT0gMCkgcmV0dXJuIHI7XG4gICAgcyArPSBzO1xuICAgIGwrKztcbiAgICBpZiAobCA9PSA5KSB7XG4gICAgICBzLnNsaWNlKDAsMSk7IC8vIGZsYXR0ZW4gdGhlIHN0cmluZ1xuICAgICAgLy8gdGhlbiwgdGhlIGZsYXR0ZW5pbmcgb2YgdGhlIHdob2xlIHN0cmluZyB3aWxsIGJlIGZhc3RlcixcbiAgICAgIC8vIGFzIGl0IHdpbGwgYmUgY29tcG9zZWQgb2YgbGFyZ2VyIHBpZWNlc1xuICAgIH1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChhLCBpLCBsZW4pIHtcbiAgdmFyIGYgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuICBpZiAoaSA9PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkgKG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsbGVuLT0xMDI0KVxuICAgIHMgKz0gZi5hcHBseSAobnVsbCwgYS5zbGljZShpLGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0Zjhfb2ZfdXRmMTZcbmZ1bmN0aW9uIGNhbWxfdXRmOF9vZl91dGYxNihzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gYiwgYywgZCwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4YzAgfCAoYyA+PiA2KSk7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA8IDB4ZDgwMCB8fCBjID49IDB4ZGZmZikge1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZTAgfCAoYyA+PiAxMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPj0gMHhkYmZmIHx8IGkgKyAxID09IGwgfHxcbiAgICAgICAgICAgICAgIChkID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgZCA+IDB4ZGZmZikge1xuICAgICAgLy8gVW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyLCByZXBsYWNlZCBieSBcXHVmZmZkIChyZXBsYWNlbWVudCBjaGFyYWN0ZXIpXG4gICAgICB0ICs9IFwiXFx4ZWZcXHhiZlxceGJkXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICAgIGMgPSAoYyA8PCAxMCkgKyBkIC0gMHgzNWZkYzAwO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAgfCAoYyA+PiAxOCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiAxMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH1cbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gY2FtbF91dGYxNl9vZl91dGY4KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBcIlwiLCBjLCBjMSwgYzIsIHYsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjMSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYzEgPCAweDgwKSB7XG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IChqIDwgbCkgJiYgKGMxID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIHYgPSAxO1xuICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICBjID0gYzIgKyAoYzEgPDwgNik7XG4gICAgICBpZiAoYzEgPCAweGUwKSB7XG4gICAgICAgIHYgPSBjIC0gMHgzMDgwO1xuICAgICAgICBpZiAodiA8IDB4ODApIHYgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IDI7XG4gICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpKSB7XG4gICAgICAgICAgYyA9IGMyICsgKGMgPDwgNik7XG4gICAgICAgICAgaWYgKGMxIDwgMHhmMCkge1xuICAgICAgICAgICAgdiA9IGMgLSAweGUyMDgwO1xuICAgICAgICAgICAgaWYgKCh2IDwgMHg4MDApIHx8ICgodiA+PSAweGQ3ZmYpICYmICh2IDwgMHhlMDAwKSkpIHYgPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ID0gMztcbiAgICAgICAgICAgIGlmICgoKytpIDwgbCkgJiYgKCgoYzIgPSBzLmNoYXJDb2RlQXQoaSkpICYgLTY0KSA9PSAxMjgpICYmXG4gICAgICAgICAgICAgICAgKGMxIDwgMHhmNSkpIHtcbiAgICAgICAgICAgICAgdiA9IGMyIC0gMHgzYzgyMDgwICsgKGMgPDwgNik7XG4gICAgICAgICAgICAgIGlmICh2IDwgMHgxMDAwMCB8fCB2ID4gMHgxMGZmZmYpIHYgPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodiA8IDQpIHsgLy8gSW52YWxpZCBzZXF1ZW5jZVxuICAgICAgaSAtPSB2O1xuICAgICAgdCArPSBcIlxcdWZmZmRcIjtcbiAgICB9IGVsc2UgaWYgKHYgPiAweGZmZmYpXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhkN2MwICsgKHYgPj4gMTApLCAweGRjMDAgKyAodiAmIDB4M0ZGKSlcbiAgICBlbHNlXG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodik7XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBqc29vX2lzX2FzY2lpIChzKSB7XG4gIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZ2V0cyBiZXR0ZXIgYXQgYXJvdW5kIHRoaXMgcG9pbnQgZm9yIGFsbCBicm93c2Vyc1xuICBpZiAocy5sZW5ndGggPCAyNCkge1xuICAgIC8vIFNwaWRlcm1vbmtleSBnZXRzIG11Y2ggc2xvd2VyIHdoZW4gcy5sZW5ndGggPj0gMjQgKG9uIDY0IGJpdCBhcmNocylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIGlmIChzLmNoYXJDb2RlQXQoaSkgPiAxMjcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlXG4gICAgcmV0dXJuICEvW15cXHgwMC1cXHg3Zl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBpZiAoaSA+PSBzLmMubGVuZ3RoKSByZXR1cm4gMDtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgY2FzZSA0OiAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBzLmNbaV1cbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSB7XG4gICAgaWYgKGkgPT0gcy5jLmxlbmd0aCkge1xuICAgICAgcy5jICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgaWYgKGkgKyAxID09IHMubCkgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKTtcbiAgfVxuICBzLmNbaV0gPSBjO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKSxcbiAgICAgIGIzID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDcpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gbmV3IEFycmF5KDgpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKXtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhGRiAmIGkxNiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQxNlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiNCA9IDB4RkYgJiBpMzIgPj4gMjQsXG4gICAgICBiMyA9IDB4RkYgJiBpMzIgPj4gMTYsXG4gICAgICBiMiA9IDB4RkYgJiBpMzIgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkzMjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDIsIGIzKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMywgYjQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDMyXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQzMlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDMyKHMsaSxpMzIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCl7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGk2NCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyA3IC0gaiwgYVtqXSk7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQ2NFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcgKHMpIHtcbiAgdmFyIHRhZyA9IDkgLyogQllURVMgfCBBU0NJSSAqLztcbiAgaWYgKCFqc29vX2lzX2FzY2lpKHMpKVxuICAgIHRhZyA9IDggLyogQllURVMgfCBOT1RfQVNDSUkgKi8sIHMgPSBjYW1sX3V0Zjhfb2ZfdXRmMTYocyk7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0YWcsIHMsIHMubGVuZ3RoKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEJ5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIE1sQnl0ZXMgKHRhZywgY29udGVudHMsIGxlbmd0aCkge1xuICB0aGlzLnQ9dGFnOyB0aGlzLmM9Y29udGVudHM7IHRoaXMubD1sZW5ndGg7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHN3aXRjaCAodGhpcy50KSB7XG4gIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICBkZWZhdWx0OlxuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXModGhpcyk7XG4gIGNhc2UgMDogLypCWVRFUyB8IFVOS09XTiovXG4gICAgaWYgKGpzb29faXNfYXNjaWkodGhpcy5jKSkge1xuICAgICAgdGhpcy50ID0gOTsgLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgfVxuICAgIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICBjYXNlIDg6IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIH1cbn07XG5NbEJ5dGVzLnByb3RvdHlwZS50b1V0ZjE2ID0gZnVuY3Rpb24gKCl7XG4gIHZhciByID0gdGhpcy50b1N0cmluZygpO1xuICBpZih0aGlzLnQgPT0gOSkgcmV0dXJuIHJcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChyKTtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gKCl7XG4gIHZhciBjb250ZW50ID0gdGhpcy50ID09IDQgPyB0aGlzLmMuc2xpY2UoKSA6IHRoaXMuYztcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCxjb250ZW50LHRoaXMubCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEJZVEVTICovXG4gIGlmIChzLnQgPT0gMiAvKiBQQVJUSUFMICovKVxuICAgIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgJ1xcMCcpXG4gIGVsc2VcbiAgICBzLmMgPSBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKHMuYywgMCwgcy5jLmxlbmd0aCk7XG4gIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocykge1xuICAvKiBBc3N1bWVzIG5vdCBBUlJBWSAqL1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KHMubCk7XG4gIHZhciBiID0gcy5jLCBsID0gYi5sZW5ndGgsIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGIuY2hhckNvZGVBdChpKTtcbiAgZm9yIChsID0gcy5sOyBpIDwgbDsgaSsrKSBhW2ldID0gMDtcbiAgcy5jID0gYTtcbiAgcy50ID0gNDsgLyogQVJSQVkgKi9cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIChzKSB7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIGwgPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF94ZGdfZGVmYXVsdHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3hkZ19kZWZhdWx0cyhfdW5pdCkge1xuICByZXR1cm4gMDsgLy8gZW1wdHkgbGlzdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7XG4gIGlmICh4ID49IDApIHtcbiAgICB2YXIgeSA9IE1hdGguZmxvb3IoeCk7XG4gICAgcmV0dXJuICh4IC0geSA+PSAwLjUpPyh5ICsgMSk6eVxuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiAoeSAtIHggPj0gMC41KT8oeSAtIDEpOnlcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jYnJ0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NicnRfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY2JydCh4KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9lcmZfZmxvYXQoeCkge1xuICB2YXIgYTEgPSAwLjI1NDgyOTU5MjtcbiAgdmFyIGEyID0gLTAuMjg0NDk2NzM2O1xuICB2YXIgYTMgPSAxLjQyMTQxMzc0MTtcbiAgdmFyIGE0ID0gLTEuNDUzMTUyMDI3O1xuICB2YXIgYTUgPSAxLjA2MTQwNTQyOTtcbiAgdmFyIHAgPSAwLjMyNzU5MTE7XG5cbiAgdmFyIHNpZ24gPSAxO1xuICBpZiAoeCA8IDApIHtcbiAgICBzaWduID0gLTE7XG4gIH1cbiAgeCA9IE1hdGguYWJzKHgpO1xuICB2YXIgdCA9IDEuMCAvICgxLjAgKyBwICogeCk7XG4gIHZhciB5ID0gMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZtYV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbWFfZmxvYXQoeCwgeSwgeikge1xuICB2YXIgU1BMSVQgPSBNYXRoLnBvdygyLCAyNykgKyAxO1xuICB2YXIgTUlOX1ZBTFVFID0gTWF0aC5wb3coMiwgLTEwMjIpO1xuICB2YXIgRVBTSUxPTiA9IE1hdGgucG93KDIsIC01Mik7XG4gIHZhciBDID0gNDE2O1xuICB2YXIgQSA9IE1hdGgucG93KDIsICtDKTtcbiAgdmFyIEIgPSBNYXRoLnBvdygyLCAtQyk7XG5cbiAgZnVuY3Rpb24gbXVsdGlwbHkgKGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSAoKGFoaSAqIGJoaSAtIHApICsgYWhpICogYmxvICsgYWxvICogYmhpKSArIGFsbyAqIGJsbztcbiAgICByZXR1cm4ge1xuICAgICAgcDogcCxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHZhciBzID0gYSArIGI7XG4gICAgdmFyIHYgPSBzIC0gYTtcbiAgICB2YXIgZSA9IChhIC0gKHMgLSB2KSkgKyAoYiAtIHYpO1xuICAgIHJldHVybiB7XG4gICAgICBzOiBzLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRqdXN0ICh4LCB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgJiYgeSAhPT0gMCAmJiBTUExJVCAqIHggLSAoU1BMSVQgKiB4IC0geCkgPT09IHggPyB4ICogKDEgKyAoeCA8IDAgPyAtMSA6ICsxKSAqICh5IDwgMCA/IC0xIDogKzEpICogRVBTSUxPTikgOiB4O1xuICB9O1xuXG4gIGlmICh4ID09PSAwIHx8IHggIT09IHggfHwgeCA9PT0gKzEgLyAwIHx8IHggPT09IC0xIC8gMCB8fFxuICAgICAgeSA9PT0gMCB8fCB5ICE9PSB5IHx8IHkgPT09ICsxIC8gMCB8fCB5ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICh6ICE9PSB6IHx8IHogPT09ICsxIC8gMCB8fCB6ID09PSAtMSAvIDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciBzY2FsZSA9IDE7XG4gIHdoaWxlIChNYXRoLmFicyh4KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHggKj0gQjtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB5ICo9IEI7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAxIC8gMCkge1xuICAgIHJldHVybiB4ICogeSAqIHNjYWxlO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh4KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHggKj0gQTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeSkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB5ICo9IEE7XG4gIH1cbiAgaWYgKHNjYWxlID09PSAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgeHMgPSB4O1xuICB2YXIgeXMgPSB5O1xuICB2YXIgenMgPSB6IC8gc2NhbGU7XG5cbiAgaWYgKE1hdGguYWJzKHpzKSA+IE1hdGguYWJzKHhzICogeXMpICogNCAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OIC8gNCAqIEVQU0lMT04gLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZmxvYXQgKGZtdCwgeCkge1xuICBmdW5jdGlvbiB0b0ZpeGVkKHgsZHApIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCAxLjApIHtcbiAgICAgIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZSA9IHBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdCgnKycpWzFdKTtcbiAgICAgIGlmIChlID4gMjApIHtcbiAgICAgICAgZSAtPSAyMDtcbiAgICAgICAgeCAvPSBNYXRoLnBvdygxMCxlKTtcbiAgICAgICAgeCArPSAobmV3IEFycmF5KGUrMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgaWYoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyAnLicgKyAobmV3IEFycmF5KGRwKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG4gICAgICBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApXG4gICAgfVxuICB9XG4gIHZhciBzLCBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSAoZi5wcmVjIDwgMCk/NjpmLnByZWM7XG4gIGlmICh4IDwgMCB8fCAoeCA9PSAwICYmIDEveCA9PSAtSW5maW5pdHkpKSB7IGYuc2lnbiA9IC0xOyB4ID0gLXg7IH1cbiAgaWYgKGlzTmFOKHgpKSB7IHMgPSBcIm5hblwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlIGlmICghaXNGaW5pdGUoeCkpIHsgcyA9IFwiaW5mXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgIGNhc2UgJ2UnOlxuICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAvLyBleHBvbmVudCBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGRpZ2l0c1xuICAgICAgdmFyIGkgPSBzLmxlbmd0aDtcbiAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZic6XG4gICAgICBzID0gdG9GaXhlZCh4LCBwcmVjKTsgYnJlYWs7XG4gICAgY2FzZSAnZyc6XG4gICAgICBwcmVjID0gcHJlYz9wcmVjOjE7XG4gICAgICBzID0geC50b0V4cG9uZW50aWFsKHByZWMgLSAxKTtcbiAgICAgIHZhciBqID0gcy5pbmRleE9mKCdlJyk7XG4gICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEpO1xuICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgIHZhciBpID0gaiAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSkgKyBzLnNsaWNlKGopO1xuICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT0gJ2UnKVxuICAgICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHAgPSBwcmVjO1xuICAgICAgICBpZiAoZXhwIDwgMCkgeyBwIC09IGV4cCArIDE7IHMgPSB4LnRvRml4ZWQocCk7IH1cbiAgICAgICAgZWxzZSB3aGlsZSAocyA9IHgudG9GaXhlZChwKSwgcy5sZW5ndGggPiBwcmVjICsgMSkgcC0tO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgICBzID0gcy5zbGljZSgwLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHJlcztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocylcbiAgcmVzID0gK3M7XG4gIGlmICgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSByZXR1cm4gcmVzO1xuICBzID0gcy5yZXBsYWNlKC9fL2csXCJcIik7XG4gIHJlcyA9ICtzO1xuICBpZiAoKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgdmFyIG0gPSAvXiAqKFsrLV0/KTB4KFswLTlhLWZdKylcXC4/KFswLTlhLWZdKikocChbKy1dP1swLTldKykpPy9pLmV4ZWMocyk7XG4gIC8vICAgICAgICAgIDEgICAgICAgIDIgICAgICAgICAgICAgMyAgICAgICAgICAgNVxuICBpZihtKXtcbiAgICB2YXIgbTMgPSBtWzNdLnJlcGxhY2UoLzArJC8sJycpO1xuICAgIHZhciBtYW50aXNzYSA9IHBhcnNlSW50KG1bMV0gKyBtWzJdICsgbTMsIDE2KTtcbiAgICB2YXIgZXhwb25lbnQgPSAobVs1XXwwKSAtIDQqbTMubGVuZ3RoO1xuICAgIHJlcyA9IG1hbnRpc3NhICogTWF0aC5wb3coMiwgZXhwb25lbnQpO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIEluZmluaXR5O1xuICBpZigvXi1pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gLUluZmluaXR5O1xuICBjYW1sX2ZhaWx3aXRoKFwiZmxvYXRfb2Zfc3RyaW5nXCIpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpe1xuICByZXR1cm4gKG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIikgPyAobmFtZSArIFwiL1wiKSA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCcvJyk7XG5lbHNlXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gIFwiL3N0YXRpY1wiO1xuY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2goY2FtbF9jdXJyZW50X2Rpcik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3Jvb3Rcbi8vUmVxdWlyZXM6IHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfZ2V0X3Jvb3QocGF0aCl7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCJ9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9IGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHwgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuXG4vL1Byb3ZpZGVzOiBNbEZpbGVcbmZ1bmN0aW9uIE1sRmlsZSgpeyAgfVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSAnLycpIHJldHVybiBbXCJcIiwgcGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpbjMyKHBhdGgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9iM2ZjYzI0NWZiMjU1Mzk5MDllZjFkNWVhYTAxZGJmOTJlMTY4NjMzL2xpYi9wYXRoLmpzI0w1NlxuICAgIHZhciBzcGxpdERldmljZVJlID0gL14oW2EtekEtWl06fFtcXFxcL117Mn1bXlxcXFwvXStbXFxcXC9dK1teXFxcXC9dKyk/KFtcXFxcL10pPyhbXFxzXFxTXSo/KSQvO1xuICAgIHZhciByZXN1bHQgPSBzcGxpdERldmljZVJlLmV4ZWMocGF0aCk7XG4gICAgdmFyIGRldmljZSA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICB2YXIgaXNVbmMgPSBCb29sZWFuKGRldmljZSAmJiBkZXZpY2UuY2hhckF0KDEpICE9PSAnOicpO1xuXG4gICAgLy8gVU5DIHBhdGhzIGFyZSBhbHdheXMgYWJzb2x1dGVcbiAgICBpZiAoQm9vbGVhbihyZXN1bHRbMl0gfHwgaXNVbmMpKSB7XG4gICAgICB2YXIgcm9vdCA9IChyZXN1bHRbMV0gfHwgJycpO1xuICAgICAgdmFyIHNlcCA9IChyZXN1bHRbMl0gfHwgJycpO1xuICAgICAgcmV0dXJuIFtyb290LCBwYXRoLnN1YnN0cmluZyhyb290Lmxlbmd0aCArIHNlcC5sZW5ndGgpXVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB3aW4zMiA6IHBvc2l4O1xuICB9XG4gIGVsc2UgcmV0dXJuIHBvc2l4XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoIChuYW1lKSB7XG4gIG5hbWU9Y2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKCAhcGF0aF9pc19hYnNvbHV0ZShuYW1lKSApXG4gICAgbmFtZSA9IGNhbWxfY3VycmVudF9kaXIgKyBuYW1lO1xuICB2YXIgY29tcDAgPSBwYXRoX2lzX2Fic29sdXRlKG5hbWUpO1xuICB2YXIgY29tcCA9IGNvbXAwWzFdLnNwbGl0KFwiL1wiKTtcbiAgdmFyIG5jb21wID0gW11cbiAgZm9yKHZhciBpID0gMDsgaTxjb21wLmxlbmd0aDsgaSsrKXtcbiAgICBzd2l0Y2goY29tcFtpXSl7XG4gICAgY2FzZSBcIi4uXCI6IGlmKG5jb21wLmxlbmd0aD4xKSBuY29tcC5wb3AoKTsgYnJlYWs7XG4gICAgY2FzZSBcIi5cIjogYnJlYWs7XG4gICAgY2FzZSBcIlwiOiBicmVhaztcbiAgICBkZWZhdWx0OiBuY29tcC5wdXNoKGNvbXBbaV0pO2JyZWFrXG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn0gZWxzZSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoY2FtbF9yb290KX0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOlwiL3N0YXRpYy9cIiwgZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKX0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9saXN0X21vdW50X3BvaW50KCl7XG4gIHZhciBwcmV2ID0gMFxuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKyl7XG4gICAgdmFyIG9sZCA9IHByZXY7XG4gICAgcHJldiA9IFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF1cbiAgfVxuICByZXR1cm4gcHJldjtcbn1cblxuLy9Qcm92aWRlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9nZXRfcm9vdCwgTWxOb2RlRGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gcGF0aC5qb2luKFwiL1wiKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpO1xuICB2YXIgcmVzO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZihuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09IDBcbiAgICAgICAmJiAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKSlcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gIH1cbiAgaWYoICFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdCAmJiByb290Lm1hdGNoKC9eW2EtekEtWl06XFwvJC8pKXtcbiAgICAgIHZhciBtID0ge3BhdGg6cm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShyb290KX07XG4gICAgICBqc29vX21vdW50X3BvaW50LnB1c2gobSk7XG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICAgIH1cbiAgfVxuICBpZiggcmVzICkgcmV0dXJuIHJlcztcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJubyBkZXZpY2UgZm91bmQgZm9yIFwiICsgbmFtZV9zbGFzaCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW91bnRfYXV0b2xvYWRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfbW91bnRfYXV0b2xvYWQobmFtZSxmKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6bmFtZSxkZXZpY2U6bmV3IE1sRmFrZURldmljZShuYW1lLGYpfSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5tb3VudFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9tYWtlX3BhdGgsIGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdW5tb3VudChuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICB2YXIgaWR4ID0gLTE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCA9PSBuYW1lKSBpZHggPSBpO1xuICBpZihpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LDEpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRjd2Rcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGN3ZCgpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9jdXJyZW50X2Rpcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX2NoZGlyKGRpcikge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRpcik7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgaWYocm9vdC5yZXN0KSBjYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChyb290LnBhdGggKyByb290LnJlc3QpO1xuICAgIGVsc2UgY2FtbF9jdXJyZW50X2RpciA9IHJvb3QucGF0aDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGRpcikpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfYV9kaXIobmFtZSl7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmlsZV9leGlzdHNcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19maWxlX2V4aXN0cyAobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9hX2RpciwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLnJlYWRkaXIocm9vdC5yZXN0KTtcbiAgdmFyIGwgPSBuZXcgQXJyYXkoYS5sZW5ndGggKyAxKTtcbiAgbFswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8YS5sZW5ndGg7aSsrKVxuICAgIGxbaSsxXSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYVtpXSk7XG4gIHJldHVybiBsO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW1vdmVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgb2sgPSByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0KTtcbiAgaWYob2sgPT0gMCkgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiBhPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVuYW1lKG8sbil7XG4gIHZhciBvX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShvKTtcbiAgdmFyIG5fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG4pO1xuICBpZihvX3Jvb3QuZGV2aWNlICE9IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZighb19yb290LmRldmljZS5yZW5hbWUpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm8gaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfc3lzX21rZGlyKG5hbWUsIHBlcm0pe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QscGVybSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vdF9hX2RpclxuZnVuY3Rpb24gY2FtbF9zeXNfcm1kaXIobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKHZmZCwga2luZCwgbGF5b3V0LCBzaGFyZWQsIGRpbXMsIHBvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndixhcmduKXtcbiAgcmV0dXJuIGNhbWxfYmFfbWFwX2ZpbGUoYXJndlswXSxhcmd2WzFdLGFyZ3ZbMl0sYXJndlszXSxhcmd2WzRdLGFyZ3ZbNV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlX2V4dGVyblxuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZV9leHRlcm4obmFtZSxjb250ZW50KXtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKVxuICAgIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZighZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCkgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICAgIGdsb2JhbFRoaXMuY2FtbF9mc190bXAucHVzaCh7bmFtZTpuYW1lLGNvbnRlbnQ6Y29udGVudH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCAoKXtcbiAgdmFyIHRtcD1nbG9iYWxUaGlzLmNhbWxfZnNfdG1wXG4gIGlmKHRtcCl7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKyl7XG4gICAgICBqc29vX2NyZWF0ZV9maWxlKHRtcFtpXS5uYW1lLHRtcFtpXS5jb250ZW50KTtcbiAgICB9XG4gIH1cbiAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlID0ganNvb19jcmVhdGVfZmlsZTtcbiAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcCA9IFtdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKCEgcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LGNvbnRlbnQpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBqc29vX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9maWxlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgbmFtZSA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk7XG4gIHZhciBjb250ZW50ID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjb250ZW50KTtcbiAgcmV0dXJuIGNhbWxfY3JlYXRlX2ZpbGUobmFtZSwgY29udGVudCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWFkX2ZpbGVfY29udGVudCAobmFtZSkge1xuICB2YXIgbmFtZSA9ICh0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiKT9jYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpOm5hbWU7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCx7cmRvbmx5OjF9KTtcbiAgICB2YXIgbGVuICA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKDAsYnVmLDAsbGVuKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYnVmKVxuICB9XG4gIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZihjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZCk7XG4gICAgY2hhbi5mZCA9IC0xO1xuICAgIGNoYW4uYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVscywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPj0gNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuLy9SZXF1aXJlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkLCBBbmR5IFJheVxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuLy9cbi8vIEJpZ2FycmF5LlxuLy9cbi8vIC0gYWxsIGJpZ2FycmF5IHR5cGVzIGluY2x1ZGluZyBJbnQ2NCBhbmQgQ29tcGxleC5cbi8vIC0gZm9ydHJhbiArIGMgbGF5b3V0c1xuLy8gLSBzdWIvc2xpY2UvcmVzaGFwZVxuLy8gLSByZXRhaW4gZmFzdCBwYXRoIGZvciAxZCBhcnJheSBhY2Nlc3NcblxuLy9Qcm92aWRlczogY2FtbF9iYV9pbml0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2JhX2luaXQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemUoZGltcykge1xuICB2YXIgbl9kaW1zID0gZGltcy5sZW5ndGg7XG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuX2RpbXM7IGkrKykge1xuICAgIGlmIChkaW1zW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIHNpemUgPSBzaXplICogZGltc1tpXTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKXtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDc6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiAyO1xuICBkZWZhdWx0OiByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpe1xuICB2YXIgdmlldztcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDA6ICB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxOiAgdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMjogIHZpZXcgPSBJbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDM6ICB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgNDogIHZpZXcgPSBJbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA1OiAgdmlldyA9IFVpbnQxNkFycmF5OyBicmVhaztcbiAgY2FzZSA2OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDc6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgODogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA5OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDEwOiB2aWV3ID0gRmxvYXQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMTogdmlldyA9IEZsb2F0NjRBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTI6IHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgfVxuICBpZiAoIXZpZXcpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmNyZWF0ZTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgdmFyIGRhdGEgPSBuZXcgdmlldyhzaXplICogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSk7XG4gIHJldHVybiBkYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246IDwgNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnJheVwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPj0gNC4xMVxudmFyIGNhbWxfYmFfY3VzdG9tX25hbWUgPSBcIl9iaWdhcnIwMlwiXG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2hpMzIsIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gTWxfQmlnYXJyYXkgKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG5cbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICB2YXIgb2ZzID0gMDtcbiAgaWYodHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIikgYXJnID0gW2FyZ107XG4gIGlmICghIChhcmcgaW5zdGFuY2VvZiBBcnJheSkpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYXJnLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5nZXQvc2V0OiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIGlmKHRoaXMubGF5b3V0ID09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFyZ1tpXSA8IDAgfHwgYXJnW2ldID49IHRoaXMuZGltc1tpXSlcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyBhcmdbaV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmRpbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSl7XG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgKGFyZ1tpXSAtIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2ZzO1xufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBoID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobCxoKTtcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciByID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaSA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXVxuICB9XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSB2WzJdO1xuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMFxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBhID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHZhciBiID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGlmKGEgPT0gYil7XG4gICAgICB0aGlzLmRhdGEuZmlsbChhKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBhIDogYjtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgaW0gPSB2WzFdO1xuICAgIHZhciByZSA9IHZbMl07XG4gICAgaWYoaW0gPT0gcmUpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoaW0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGltIDogcmU7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBkZWZhdWx0OlxuICAgIHRoaXMuZGF0YS5maWxsKHYpO1xuICAgIGJyZWFrO1xuICB9XG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoYiwgdG90YWwpIHtcbiAgaWYgKHRoaXMubGF5b3V0ICE9IGIubGF5b3V0IHx8IHRoaXMua2luZCAhPSBiLmtpbmQpIHtcbiAgICB2YXIgazEgPSB0aGlzLmtpbmQgfCAodGhpcy5sYXlvdXQgPDwgOCk7XG4gICAgdmFyIGsyID0gICAgYi5raW5kIHwgKGIubGF5b3V0IDw8IDgpO1xuICAgIHJldHVybiBrMiAtIGsxO1xuICB9XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGIuZGltcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYi5kaW1zLmxlbmd0aCAtIHRoaXMuZGltcy5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHRoaXMuZGltc1tpXSAhPSBiLmRpbXNbaV0pXG4gICAgICByZXR1cm4gKHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSkgPyAtMSA6IDE7XG4gIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICBjYXNlIDEwOlxuICBjYXNlIDExOlxuICAgIC8vIEZsb2F0c1xuICAgIHZhciB4LCB5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgeSA9IGIuZGF0YVtpXTtcbiAgICAgIGlmICh4IDwgeSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHggPiB5KVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICh4ICE9IHkpIHtcbiAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgaWYgKHggPT0geCkgcmV0dXJuIDE7XG4gICAgICAgIGlmICh5ID09IHkpIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSs9Mikge1xuICAgICAgLy8gQ2hlY2sgaGlnaGVzdCBiaXRzIGZpcnN0XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPCBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdID4gYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApIDwgKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA+IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMjpcbiAgY2FzZSAzOlxuICBjYXNlIDQ6XG4gIGNhc2UgNTpcbiAgY2FzZSA2OlxuICBjYXNlIDg6XG4gIGNhc2UgOTpcbiAgY2FzZSAxMjpcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA8IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKHRoaXMuZGF0YVtpXSA+IGIuZGF0YVtpXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheV9jXzFfMVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgdGhpcy5raW5kICAgPSBraW5kIDtcbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIHRoaXMuZGltcyAgID0gZGltcztcbiAgdGhpcy5kYXRhICAgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZSA9IG5ldyBNbF9CaWdhcnJheSgpXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24gKGFyZykge1xuICBpZih0eXBlb2YgYXJnICE9PSBcIm51bWJlclwiKXtcbiAgICBpZigoYXJnIGluc3RhbmNlb2YgQXJyYXkpICYmIGFyZy5sZW5ndGggPT0gMSlcbiAgICAgIGFyZyA9IGFyZ1swXTtcbiAgICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk1sX0JpZ2FycmF5X2NfMV8xLm9mZnNldFwiKTtcbiAgfVxuICBpZiAoYXJnIDwgMCB8fCBhcmcgPj0gdGhpcy5kaW1zWzBdKVxuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFyZztcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHRoaXMuZGF0YVtvZnNdID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jb21wYXJlXG5mdW5jdGlvbiBjYW1sX2JhX2NvbXBhcmUoYSxiLHRvdGFsKXtcbiAgcmV0dXJuIGEuY29tcGFyZShiLHRvdGFsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBNbF9CaWdhcnJheV9jXzFfMSwgY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKXtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpO1xuICBpZihjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPSBkYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImxlbmd0aCBkb2Vzbid0IG1hdGNoIGRpbXNcIik7XG4gIH1cbiAgaWYobGF5b3V0ID09IDAgJiYgLy8gY19sYXlvdXRcbiAgICAgZGltcy5sZW5ndGggPT0gMSAmJiAvLyBBcnJheTFcbiAgICAgc2l6ZV9wZXJfZWxlbWVudCA9PSAxKSAvLyAxLXRvLTEgbWFwcGluZ1xuICAgIHJldHVybiBuZXcgTWxfQmlnYXJyYXlfY18xXzEoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmKGJhLmxheW91dCA9PSBsYXlvdXQpIHJldHVybiBiYTtcbiAgdmFyIG5ld19kaW1zID0gW11cbiAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZGltXCIpO1xuICByZXR1cm4gYmEuZGltc1tpXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMVxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzEoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fMlxuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzIoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1fM1xuLy9SZXF1aXJlczogY2FtbF9iYV9kaW1cbmZ1bmN0aW9uIGNhbWxfYmFfZGltXzMoYmEpIHtcbiAgcmV0dXJuIGNhbWxfYmFfZGltKGJhLCAyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9nZW5lcmljKGJhLCBpKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKTtcbiAgcmV0dXJuIGJhLmdldChvZnMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDE2KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICByZXR1cm4gKGIxIHwgKGIyIDw8IDgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgcmV0dXJuICggKGIxIDw8IDApICB8XG4gICAgICAgICAgIChiMiA8PCA4KSAgfFxuICAgICAgICAgICAoYjMgPDwgMTYpIHxcbiAgICAgICAgICAgKGI0IDw8IDI0KSApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzKzQpO1xuICB2YXIgYjYgPSBiYS5nZXQob2ZzKzUpO1xuICB2YXIgYjcgPSBiYS5nZXQob2ZzKzYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzKzcpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbYjgsYjcsYjYsYjUsYjQsYjMsYjIsYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMV0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMyhiYSwgaTAsIGkxLCBpMikge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDE2KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMSA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQzMihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDMgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzIsICh2ID4+PiAxNikgJiAweGZmKTtcbiAgYmEuc2V0KG9mcyszLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgNyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgdiA9IGNhbWxfaW50NjRfdG9fYnl0ZXModik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA4OyBpKyspIGJhLnNldChvZnMraSwgdls3LWldKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMShiYSwgaTAsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChpMCksIHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8yXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8yKGJhLCBpMCwgaTEsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxLGkyXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9maWxsXG5mdW5jdGlvbiBjYW1sX2JhX2ZpbGwoYmEsIHYpIHtcbiAgYmEuZmlsbCh2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2JsaXQoc3JjLCBkc3QpIHtcbiAgaWYgKGRzdC5kaW1zLmxlbmd0aCAhPSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPSBzcmMuZGltc1tpXSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZHN0LmRhdGEuc2V0KHNyYy5kYXRhKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc3ViXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zdWIoYmEsIG9mcywgbGVuKSB7XG4gIHZhciBjaGFuZ2VkX2RpbTtcbiAgdmFyIG11bCA9IDE7XG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSAwO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgKGJhLmRpbXMubGVuZ3RoIC0gMSk7IGkrKylcbiAgICAgIG11bCA9IG11bCAqIGJhLmRpbXNbaV07XG4gICAgY2hhbmdlZF9kaW0gPSBiYS5kaW1zLmxlbmd0aCAtIDE7XG4gICAgb2ZzID0gb2ZzIC0gMTtcbiAgfVxuICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IChvZnMgKyBsZW4pID4gYmEuZGltc1tjaGFuZ2VkX2RpbV0pe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tpXTtcbiAgbmV3X2RpbXNbY2hhbmdlZF9kaW1dID0gbGVuO1xuICBtdWwgKj0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBtdWwsIChvZnMgKyBsZW4pICogbXVsKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2xpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc2xpY2UoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG51bV9pbmRzID0gdmluZC5sZW5ndGg7XG4gIHZhciBpbmRleCA9IFtdO1xuICB2YXIgc3ViX2RpbXMgPSBbXTtcbiAgdmFyIG9mcztcblxuICBpZiAobnVtX2luZHMgPiBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zbGljZTogdG9vIG1hbnkgaW5kaWNlc1wiKTtcblxuICAvLyBDb21wdXRlIG9mZnNldCBhbmQgY2hlY2sgYm91bmRzXG4gIGlmIChiYS5sYXlvdXQgPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gdmluZFtpXTtcbiAgICBmb3IgKDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAxO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZSgwLCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzKTtcbiAgfVxuICBvZnMgPSBiYS5vZmZzZXQoaW5kZXgpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoc3ViX2RpbXMpO1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogc2l6ZV9wZXJfZWxlbWVudCwgKG9mcyArIHNpemUpICogc2l6ZV9wZXJfZWxlbWVudCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgfVxuICB2YXIgbnVtX2VsdHMgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICBuZXdfZGltW2ldID0gdmluZFtpXTtcbiAgICBpZiAobmV3X2RpbVtpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgbnVtX2VsdHMgPSBudW1fZWx0cyAqIG5ld19kaW1baV07XG4gIH1cblxuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIC8vIENoZWNrIHRoYXQgc2l6ZXMgYWdyZWVcbiAgaWYgKG51bV9lbHRzICE9IHNpemUpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogc2l6ZSBtaXNtYXRjaFwiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIG5ld19kaW0sIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfc2VyaWFsaXplKHdyaXRlciwgYmEsIHN6KSB7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEuZGltcy5sZW5ndGgpO1xuICB3cml0ZXIud3JpdGUoMzIsIChiYS5raW5kIHwgKGJhLmxheW91dCA8PCA4KSkpO1xuICBpZihiYS5jYW1sX2N1c3RvbSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZihiYS5kaW1zW2ldIDwgMHhmZmZmKVxuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRpbXNbaV0pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgMHhmZmZmKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCAwKTtcbiAgICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIGVsc2VcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLGJhLmRpbXNbaV0pXG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSg4LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHdyaXRlci53cml0ZSg4LDApO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsxXSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoalsyXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBjb21wbGV4ID0gYmEuZ2V0KGkpO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHN6WzBdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA0O1xuICBzelsxXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kZXNlcmlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzLCBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2Rlc2VyaWFsaXplKHJlYWRlciwgc3osIG5hbWUpe1xuICB2YXIgbnVtX2RpbXMgPSByZWFkZXIucmVhZDMycygpO1xuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB3cm9uZyBudW1iZXIgb2YgYmlnYXJyYXkgZGltZW5zaW9uc1wiKTtcbiAgdmFyIHRhZyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBraW5kID0gdGFnICYgMHhmZlxuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW11cbiAgaWYobmFtZSA9PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmKHNpemVfZGltID09IDB4ZmZmZil7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmKHNpemVfZGltX2hpICE9IDApXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBiaWdhcnJheSBkaW1lbnNpb24gb3ZlcmZsb3cgaW4gMzJiaXRcIik7XG4gICAgICAgIHNpemVfZGltID0gc2l6ZV9kaW1fbG87XG4gICAgICB9XG4gICAgICBkaW1zLnB1c2goc2l6ZV9kaW0pO1xuICAgIH1cbiAgZWxzZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoKGtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYoc2l4dHkpIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAvLyAoaW50NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGludDY0ID0gY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KTtcbiAgICAgIGJhLnNldChpLGludDY0KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciBmID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksZik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciByZSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbSA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLFsyNTQscmUsaW1dKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL0RlcHJlY2F0ZWRcbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2Zyb21cbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9mcm9tKGRhdGExLCBkYXRhMiwganN0eXAsIGtpbmQsIGxheW91dCwgZGltcyl7XG4gIGlmKGRhdGEyIHx8IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkgPT0gMil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9jcmVhdGVfZnJvbTogdXNlIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcIik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKXtcbiAgdmFyIG51bV9lbHRzID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgdmFyIGggPSAwO1xuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDI1NikgbnVtX2VsdHMgPSAyNTY7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDQgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgOCkgfCAoYmEuZGF0YVtpKzJdIDw8IDE2KSB8IChiYS5kYXRhW2krM10gPDwgMjQpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIHcgPSAwO1xuICAgIHN3aXRjaCAobnVtX2VsdHMgJiAzKSB7XG4gICAgY2FzZSAzOiB3ICA9IGJhLmRhdGFbaSsyXSA8PCAxNjsgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDI6IHcgfD0gYmEuZGF0YVtpKzFdIDw8IDg7ICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMTogdyB8PSBiYS5kYXRhW2krMF07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAxMjgpIG51bV9lbHRzID0gMTI4O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyAyIDw9IGJhLmRhdGEubGVuZ3RoOyBpKz0yKXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDE2KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICBpZiAoKG51bV9lbHRzICYgMSkgIT0gMClcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDc6ICAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBudW1fZWx0cyAqPSAyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKXtcbiAgcmV0dXJuIGJhLmRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kO1xuICBpZiAgICAgICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQgPSBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpO1xuICB2YXIgdGEgPVxuICAgICAgLyogTmVlZGVkIHRvIGF2b2lkIHVuc2lnbmVkIHNldHRlcnMgb3ZlcmZsb3dpbmdcbiAgICAgICAgIHRoZSByYW5nZSBvZiBPQ2FtbCBbaW50MzJdIHZhbHVlcy4gKi9cbiAgICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkgP1xuICAgICAgbmV3IEludDMyQXJyYXkodGEuYnVmZmVyICx0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpIDogdGE7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBwYXJzaW5nLmMgODk4MyAyMDA4LTA4LTA2IDA5OjM4OjI1WiB4bGVyb3kgJCAqL1xuXG4vKiBUaGUgUERBIGF1dG9tYXRvbiBmb3IgcGFyc2VycyBnZW5lcmF0ZWQgYnkgY2FtbHlhY2MgKi9cblxuLyogVGhlIHB1c2hkb3duIGF1dG9tYXRhICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG52YXIgY2FtbF9wYXJzZXJfdHJhY2UgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9sZXhfYXJyYXksIGNhbWxfcGFyc2VyX3RyYWNlLGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpXG57XG4gIHZhciBFUlJDT0RFID0gMjU2O1xuXG4gIC8vdmFyIFNUQVJUID0gMDtcbiAgLy92YXIgVE9LRU5fUkVBRCA9IDE7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8xID0gMjtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzO1xuICAvL3ZhciBTRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQgPSA0O1xuICAvL3ZhciBFUlJPUl9ERVRFQ1RFRCA9IDU7XG4gIHZhciBsb29wID0gNjtcbiAgdmFyIHRlc3RzaGlmdCA9IDc7XG4gIHZhciBzaGlmdCA9IDg7XG4gIHZhciBzaGlmdF9yZWNvdmVyID0gOTtcbiAgdmFyIHJlZHVjZSA9IDEwO1xuXG4gIHZhciBSRUFEX1RPS0VOID0gMDtcbiAgdmFyIFJBSVNFX1BBUlNFX0VSUk9SID0gMTtcbiAgdmFyIEdST1dfU1RBQ0tTXzEgPSAyO1xuICB2YXIgR1JPV19TVEFDS1NfMiA9IDM7XG4gIHZhciBDT01QVVRFX1NFTUFOVElDX0FDVElPTiA9IDQ7XG4gIHZhciBDQUxMX0VSUk9SX0ZVTkNUSU9OID0gNTtcblxuICB2YXIgZW52X3Nfc3RhY2sgPSAxO1xuICB2YXIgZW52X3Zfc3RhY2sgPSAyO1xuICB2YXIgZW52X3N5bWJfc3RhcnRfc3RhY2sgPSAzO1xuICB2YXIgZW52X3N5bWJfZW5kX3N0YWNrID0gNDtcbiAgdmFyIGVudl9zdGFja3NpemUgPSA1O1xuICB2YXIgZW52X3N0YWNrYmFzZSA9IDY7XG4gIHZhciBlbnZfY3Vycl9jaGFyID0gNztcbiAgdmFyIGVudl9sdmFsID0gODtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gOTtcbiAgdmFyIGVudl9zeW1iX2VuZCA9IDEwO1xuICB2YXIgZW52X2FzcCA9IDExO1xuICB2YXIgZW52X3J1bGVfbGVuID0gMTI7XG4gIHZhciBlbnZfcnVsZV9udW1iZXIgPSAxMztcbiAgdmFyIGVudl9zcCA9IDE0O1xuICB2YXIgZW52X3N0YXRlID0gMTU7XG4gIHZhciBlbnZfZXJyZmxhZyA9IDE2O1xuXG4gIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxO1xuICB2YXIgdGJsX3RyYW5zbF9jb25zdCA9IDI7XG4gIHZhciB0YmxfdHJhbnNsX2Jsb2NrID0gMztcbiAgdmFyIHRibF9saHMgPSA0O1xuICB2YXIgdGJsX2xlbiA9IDU7XG4gIHZhciB0YmxfZGVmcmVkID0gNjtcbiAgdmFyIHRibF9kZ290byA9IDc7XG4gIHZhciB0Ymxfc2luZGV4ID0gODtcbiAgdmFyIHRibF9yaW5kZXggPSA5O1xuICB2YXIgdGJsX2dpbmRleCA9IDEwO1xuICB2YXIgdGJsX3RhYmxlc2l6ZSA9IDExO1xuICB2YXIgdGJsX3RhYmxlID0gMTI7XG4gIHZhciB0YmxfY2hlY2sgPSAxMztcbiAgLy8gdmFyIF90YmxfZXJyb3JfZnVuY3Rpb24gPSAxNDtcbiAgdmFyIHRibF9uYW1lc19jb25zdCA9IDE1O1xuICB2YXIgdGJsX25hbWVzX2Jsb2NrID0gMTY7XG5cblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoMiwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcilcbiAge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PSAnXFx4MDAnKVxuICAgICAgcmV0dXJuIFwiPHVua25vd24gdG9rZW4+XCI7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnXFx4MDAnKVtudW1iZXJdO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJpbnRfdG9rZW4oc3RhdGUsIHRvaylcbiAge1xuICAgIHZhciB0b2tlbiwga2luZDtcbiAgICBpZiAodG9rIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2Jsb2NrXSwgdG9rWzBdKTtcbiAgICAgIGlmICh0eXBlb2YgdG9rWzFdID09IFwibnVtYmVyXCIpXG4gICAgICAgIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PSBcInN0cmluZ1wiKVxuICAgICAgICBraW5kID0gdG9rWzFdXG4gICAgICBlbHNlIGlmICh0b2tbMV0gaW5zdGFuY2VvZiBNbEJ5dGVzKVxuICAgICAgICBraW5kID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0b2tbMV0pXG4gICAgICBlbHNlXG4gICAgICAgIGtpbmQgPSBcIl9cIlxuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4gKyBcIihcIiArIGtpbmQgKyBcIilcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuID0gdG9rZW5fbmFtZSh0YWJsZXNbdGJsX25hbWVzX2NvbnN0XSwgdG9rKTtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXRhYmxlcy5kZ290bykge1xuICAgIHRhYmxlcy5kZWZyZWQgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0Ymxfc2luZGV4XSk7XG4gICAgdGFibGVzLmNoZWNrICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3JpbmRleF0pO1xuICAgIHRhYmxlcy50YWJsZSAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9sZW5dKTtcbiAgICB0YWJsZXMubGhzICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGhzXSk7XG4gICAgdGFibGVzLmdpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9kZ290b10pO1xuICB9XG5cbiAgdmFyIHJlcyA9IDAsIG4sIG4xLCBuMiwgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgZXhpdDpmb3IgKDs7KSB7XG4gICAgbmV4dDpzd2l0Y2goY21kKSB7XG4gICAgY2FzZSAwOi8vU1RBUlQ6XG4gICAgICBzdGF0ZSA9IDA7XG4gICAgICBlcnJmbGFnID0gMDtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA2Oi8vbG9vcDpcbiAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTtcbiAgICAgIGlmIChuICE9IDApIHsgY21kID0gcmVkdWNlOyBicmVhazsgfVxuICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA+PSAwKSB7IGNtZCA9IHRlc3RzaGlmdDsgYnJlYWs7IH1cbiAgICAgIHJlcyA9IFJFQURfVE9LRU47XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGxleGVyIGFuZCB1cGRhdGVzICovXG4gICAgICAvKiBzeW1iX3N0YXJ0IGFuZCBzeW1iX2VuZCAqL1xuICAgIGNhc2UgMTovL1RPS0VOX1JFQUQ6XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gYXJnWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICBlbnZbZW52X2x2YWxdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4gKHN0YXRlLCBhcmcpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDc6Ly90ZXN0c2hpZnQ6XG4gICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgY21kID0gc2hpZnQ7IGJyZWFrO1xuICAgICAgfVxuICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBjbWQgPSByZWR1Y2U7IGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICByZXMgPSBDQUxMX0VSUk9SX0ZVTkNUSU9OO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICBjYXNlIDU6Ly9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgIGlmIChlcnJmbGFnIDwgMykge1xuICAgICAgICBlcnJmbGFnID0gMztcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3AgKyAxXTtcbiAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTtcbiAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBjbWQgPSBzaGlmdF9yZWNvdmVyOyBicmVhayBuZXh0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgICAgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICBzcC0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudltlbnZfY3Vycl9jaGFyXSA9PSAwKVxuICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjsgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIGxhc3QgdG9rZW4gcmVhZFwiKTtcbiAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA4Oi8vc2hpZnQ6XG4gICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgIGlmIChlcnJmbGFnID4gMCkgZXJyZmxhZy0tO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgY2FzZSA5Oi8vc2hpZnRfcmVjb3ZlcjpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiBzaGlmdCB0byBzdGF0ZSBcIiArIHRhYmxlcy50YWJsZVtuMl0pO1xuICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgc3ArKztcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAyOi8vU1RBQ0tTX0dST1dOXzE6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfbHZhbF07XG4gICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfc3RhcnRdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgY21kID0gbG9vcDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAxMDovL3JlZHVjZTpcbiAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWR1Y2UgYnkgcnVsZSBcIiArIG4pO1xuICAgICAgdmFyIG0gPSB0YWJsZXMubGVuW25dO1xuICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICBlbnZbZW52X3J1bGVfbnVtYmVyXSA9IG47XG4gICAgICBlbnZbZW52X3J1bGVfbGVuXSA9IG07XG4gICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICBtID0gdGFibGVzLmxoc1tuXTtcbiAgICAgIHN0YXRlMSA9IGVudltlbnZfc19zdGFja11bc3BdO1xuICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgbjIgPSBuMSArIHN0YXRlMTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBzdGF0ZTEpXG4gICAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzI7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMzovL1NUQUNLU19HUk9XTl8yOlxuICAgICAgcmVzID0gQ09NUFVURV9TRU1BTlRJQ19BQ1RJT047XG4gICAgICBicmVhayBleGl0O1xuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIHNlbWFudGljIGFjdGlvbiAqL1xuICAgIGNhc2UgNDovL1NFTUFOVElDX0FDVElPTl9DT01QVVRFRDpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gYXJnO1xuICAgICAgdmFyIGFzcCA9IGVudltlbnZfYXNwXTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIGlmIChzcCA+IGFzcCkge1xuICAgICAgICAvKiBUaGlzIGlzIGFuIGVwc2lsb24gcHJvZHVjdGlvbi4gVGFrZSBzeW1iX3N0YXJ0IGVxdWFsIHRvIHN5bWJfZW5kLiAqL1xuICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgIH1cbiAgICAgIGNtZCA9IGxvb3A7IGJyZWFrO1xuICAgICAgLyogU2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvLyBTQVZFXG4gIGVudltlbnZfc3BdID0gc3A7XG4gIGVudltlbnZfc3RhdGVdID0gc3RhdGU7XG4gIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9wYXJzZXJfdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VyX3RyYWNlXG5mdW5jdGlvbiBjYW1sX3NldF9wYXJzZXJfdHJhY2UoYm9vbCkge1xuICB2YXIgb2xkZmxhZyA9IGNhbWxfcGFyc2VyX3RyYWNlO1xuICBjYW1sX3BhcnNlcl90cmFjZSA9IGJvb2w7XG4gIHJldHVybiBvbGRmbGFnO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15ICh4LCB5KSB7XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIHZhciBpID0geS5sZW5ndGg7IHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmICh4KSB7IHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfYmxvY2sgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfYmxvY2sgKHgpIHsgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyAoeCkge1xuICBpZiAoKHggaW5zdGFuY2VvZiBBcnJheSkgJiYgeFswXSA9PSAoeFswXSA+Pj4gMCkpXG4gICAgcmV0dXJuIHhbMF1cbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoKHggaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgdHlwZW9mIHggPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAyNDdcbiAgZWxzZSBpZiAoeCAmJiB4LmNhbWxfY3VzdG9tKVxuICAgIHJldHVybiAyNTVcbiAgZWxzZVxuICAgIHJldHVybiAxMDAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF90YWcgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3RhZyAoeCwgdGFnKSB7IHhbMF0gPSB0YWc7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX29ial9ibG9jayBjb25zdCAoY29uc3QsY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9ibG9jayAodGFnLCBzaXplKSB7XG4gIHZhciBvID0gbmV3IEFycmF5KHNpemUrMSk7XG4gIG9bMF09dGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8PSBzaXplOyBpKyspIG9baV0gPSAwO1xuICByZXR1cm4gbztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfd2l0aF90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3dpdGhfdGFnKHRhZyx4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IodmFyIGkgPSAxOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCAoeCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdHJ1bmNhdGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX29ial90cnVuY2F0ZSAoeCwgcykge1xuICBpZiAoczw9MCB8fCBzICsgMSA+IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJPYmoudHJ1bmNhdGVcIik7XG4gIGlmICh4Lmxlbmd0aCAhPSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkIChiLHYpIHtcbiAgYlswXT0yNTA7XG4gIGJbMV09djtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LGksb2xkLG4pe1xuICBpZih4W2krMV0gPT0gb2xkKSB7XG4gICAgeFtpKzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19zaGFyZWRcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZCh4KXtcbiAgcmV0dXJuIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgKHYpIHsgcmV0dXJuIFsyNTAsIHZdOyB9XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbnZhciBjYW1sX21ldGhvZF9jYWNoZSA9IFtdO1xuZnVuY3Rpb24gY2FtbF9nZXRfcHVibGljX21ldGhvZCAob2JqLCB0YWcsIGNhY2hlaWQpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgb2ZzID0gY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF07XG4gIGlmIChvZnMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyYXkgaXMgbm90IHNwYXJzZVxuICAgIGZvciAodmFyIGkgPSBjYW1sX21ldGhvZF9jYWNoZS5sZW5ndGg7IGkgPCBjYWNoZWlkOyBpKyspXG4gICAgICBjYW1sX21ldGhvZF9jYWNoZVtpXSA9IDA7XG4gIH0gZWxzZSBpZiAobWV0aHNbb2ZzXSA9PT0gdGFnKSB7XG4gICAgcmV0dXJuIG1ldGhzW29mcyAtIDFdO1xuICB9XG4gIHZhciBsaSA9IDMsIGhpID0gbWV0aHNbMV0gKiAyICsgMSwgbWk7XG4gIHdoaWxlIChsaSA8IGhpKSB7XG4gICAgbWkgPSAoKGxpK2hpKSA+PiAxKSB8IDE7XG4gICAgaWYgKHRhZyA8IG1ldGhzW21pKzFdKSBoaSA9IG1pLTI7XG4gICAgZWxzZSBsaSA9IG1pO1xuICB9XG4gIGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdID0gbGkgKyAxO1xuICAvKiByZXR1cm4gMCBpZiB0YWcgaXMgbm90IHRoZXJlICovXG4gIHJldHVybiAodGFnID09IG1ldGhzW2xpKzFdID8gbWV0aHNbbGldIDogMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb29fbGFzdF9pZFxudmFyIGNhbWxfb29fbGFzdF9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X29vX2lkXG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkIChiKSB7XG4gIGJbMl09Y2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobyxpKSB7IHJldHVybiBvW2krMV0gfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfcmF3X2ZpZWxkKG8saSx2KSB7IHJldHVybiBvW2krMV0gPSB2IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXG5mdW5jdGlvbiBjYW1sX29ial9yZWFjaGFibGVfd29yZHMobykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KHYsb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX29ial91cGRhdGVfdGFnKGIsbyxuKSB7XG4gICAgaWYoYlswXT09bykgeyBiWzBdID0gbjsgcmV0dXJuIDEgfVxuICAgIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgaWYgKChvIGluc3RhbmNlb2YgQXJyYXkpICYmIG9bMF0gPT0gKG9bMF0gPj4+IDApICYmXG4gICAgICBjYW1sX29ial91cGRhdGVfdGFnKG8sIDI0NiwgMjQ0KSkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuICBmdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmQobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI1MCk7XG4gIHJldHVybiAwOyAvLyB1bml0XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNDYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3JlYWRfcmVzdWx0XG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiAoY2FtbF9vYmpfdGFnKG8pID09IDI1MCk/b1sxXTpvO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA8IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuICh0ID09IDI0NSkgPyAxIDogMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSl7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpIHJldHVybiAyNTI7IC8vIHN0cmluZ190YWdcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoYSkpIHJldHVybiAxMjUyOyAvLyBvY2FtbCBzdHJpbmcgKGlmIGRpZmZlcmVudCBmcm9tIGJ5dGVzKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYVswXSA9PT0gKGFbMF0+Pj4wKSAmJiBhWzBdIDw9IDI1NSkge1xuICAgIC8vIExvb2sgbGlrZSBhbiBvY2FtbCBibG9ja1xuICAgIHZhciB0YWcgPSBhWzBdIHwgMDtcbiAgICAvLyBpZ25vcmUgZG91YmxlX2FycmF5X3RhZyBiZWNhdXNlIHdlIGNhbm5vdCBhY2N1cmF0ZWx5IHNldFxuICAgIC8vIHRoaXMgdGFnIHdoZW4gd2UgY3JlYXRlIGFuIGFycmF5IG9mIGZsb2F0LlxuICAgIHJldHVybiAodGFnID09IDI1NCk/MDp0YWdcbiAgfVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzdHJpbmdcIikgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChhICYmIGEuY2FtbF9jdXN0b20pIHJldHVybiAxMjU1OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAoYSAmJiBhLmNvbXBhcmUpIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN5bWJvbFwiKSByZXR1cm4gMTI1MTtcbiAgcmV0dXJuIDEwMDE7IC8vb3V0X29mX2hlYXBfdGFnXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSl7XG4gIHJldHVybiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20obnVtLCBjdXN0b20sIHN3YXAsIHRvdGFsKSB7XG4gIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGN1c3RvbSk7XG4gIGlmKGNvbXApIHtcbiAgICB2YXIgeCA9IChzd2FwID4gMCk/Y29tcChjdXN0b20sbnVtLHRvdGFsKTpjb21wKG51bSxjdXN0b20sdG90YWwpO1xuICAgIGlmKHRvdGFsICYmIHggIT0geCkgcmV0dXJuIHN3YXA7IC8vIHRvdGFsICYmIG5hblxuICAgIGlmKCt4ICE9ICt4KSByZXR1cm4gK3g7IC8vIG5hblxuICAgIGlmKCh4IHwgMCkgIT0gMCkgcmV0dXJuICh4IHwgMCk7IC8vICFuYW5cbiAgfVxuICByZXR1cm4gc3dhcFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsIChjb25zdCwgY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfY29tcGFyZSwgY2FtbF9ieXRlc19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSwgY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0b3RhbCkge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKCEodG90YWwgJiYgYSA9PT0gYikpIHtcbiAgICAgIHZhciB0YWdfYSA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGEpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2EgPT0gMjUwKSB7IGEgPSBhWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYodGFnX2IgPT0gMjUwKSB7IGIgPSBiWzFdOyBjb250aW51ZSB9XG5cbiAgICAgIC8vIHRhZ3MgYXJlIGRpZmZlcmVudFxuICAgICAgaWYodGFnX2EgIT09IHRhZ19iKSB7XG4gICAgICAgIGlmKHRhZ19hID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYiA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGEsIGIsIC0xLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmKHRhZ19iID09IDEwMDApIHtcbiAgICAgICAgICBpZih0YWdfYSA9PSAxMjU1KSB7IC8vaW1tZWRpYXRlIGNhbiBjb21wYXJlIGFnYWluc3QgY3VzdG9tXG4gICAgICAgICAgICByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKGIsIGEsIDEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRhZ19hIDwgdGFnX2IpPy0xOjE7XG4gICAgICB9XG4gICAgICBzd2l0Y2godGFnX2Epe1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICBjYXNlIDI0NzogLy8gQ2xvc3VyZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNDg6IC8vIE9iamVjdFxuICAgICAgICB2YXIgeCA9IGNhbWxfaW50X2NvbXBhcmUoYVsyXSwgYlsyXSk7XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEZvcndhcmRfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MTogLy9BYnN0cmFjdFxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTI6IC8vIE9DYW1sIGJ5dGVzXG4gICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYik7XG4gICAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfYXJyYXlfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjU1OiAvLyBDdXN0b21fdGFnXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgQ3VzdG9tX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjQ3OiAvLyBGdW5jdGlvblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NTogLy8gQ3VzdG9tXG4gICAgICAgIHZhciBjb21wID0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpO1xuICAgICAgICBpZihjb21wICE9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShiKSl7XG4gICAgICAgICAgcmV0dXJuIChhLmNhbWxfY3VzdG9tPGIuY2FtbF9jdXN0b20pPy0xOjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYoIWNvbXApXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgIHZhciB4ID0gY29tcChhLGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1NjogLy8gY29tcGFyZSBmdW5jdGlvblxuICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KSB7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgYSA9ICthO1xuICAgICAgICBiID0gK2I7XG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDE6IC8vIFRoZSByZXN0XG4gICAgICAgIC8vIEhlcmUgd2UgY2FuIGJlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDIuIEphdmFTY3JpcHQgb2JqZWN0IHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vIDMuIEphdmFTY3JpcHQgb2JqZWN0IHRoYW4gY2Fubm90IGJlIGNvZXJjZWQgdG8gcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgIC8vXG4gICAgICAgIC8vICgzKSB3aWxsIHJhaXNlIGEgW1R5cGVFcnJvcl1cbiAgICAgICAgLy8gKDIpIHdpbGwgY29lcmNlIHRvIHByaW1pdGl2ZSB0eXBlcyB1c2luZyBbdmFsdWVPZl0gb3IgW3RvU3RyaW5nXVxuICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgLy8gLSBpZiBhIGFuZCBiIGFyZSBzdHJpbmdzLCBhcHBseSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb25cbiAgICAgICAgLy8gLSBpZiBhIG9yIGIgYXJlIG5vdCBzdHJpbmdzLCBjb252ZXJ0IGEgYW5kIGIgdG8gbnVtYmVyXG4gICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRXhjZXB0aW9uOiBgIT1gIHdpbGwgbm90IGNvZXJjZS9jb252ZXJ0IGlmIGJvdGggYSBhbmQgYiBhcmUgb2JqZWN0c1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUxOiAvLyBKYXZhU2NyaXB0IFN5bWJvbCwgbm8gb3JkZXJpbmcuXG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyOiAvLyBvY2FtbCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGIpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTIwOiAvLyBqYXZhc2NyaXB0IHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBhLnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZihhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0NjogLy8gTGF6eV90YWdcbiAgICAgIGNhc2UgMjU0OiAvLyBEb3VibGVfYXJyYXlcbiAgICAgIGRlZmF1bHQ6IC8vIEJsb2NrIHdpdGggb3RoZXIgdGFnXG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0YWdfYSkpIHtcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gKGEubGVuZ3RoIDwgYi5sZW5ndGgpPy0xOjE7XG4gICAgICAgIGlmIChhLmxlbmd0aCA+IDEpIHN0YWNrLnB1c2goYSwgYiwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RhY2subGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIHZhciBpID0gc3RhY2sucG9wKCk7XG4gICAgYiA9IHN0YWNrLnBvcCgpO1xuICAgIGEgPSBzdGFjay5wb3AoKTtcbiAgICBpZiAoaSArIDEgPCBhLmxlbmd0aCkgc3RhY2sucHVzaChhLCBiLCBpICsgMSk7XG4gICAgYSA9IGFbaV07XG4gICAgYiA9IGJbaV07XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlIChhLCBiKSB7IHJldHVybiBjYW1sX2NvbXBhcmVfdmFsIChhLCBiLCB0cnVlKTsgfVxuLy9Qcm92aWRlczogY2FtbF9pbnRfY29tcGFyZSBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2ludF9jb21wYXJlIChhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuICgtMSk7IGlmIChhID09IGIpIHJldHVybiAwOyByZXR1cm4gMTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9lcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgIT0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcmVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcmVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVydGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA+IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3NlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPD0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc3RoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzdGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPCAwKTsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfY2hhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2NoYW4oY2hhbmlkLHRvcmVhZCl7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDQwOTYpO1xuICBpZih0b3JlYWQgPCAwKXtcbiAgICB3aGlsZSh0cnVlKXtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7XG4gICAgICBpZihyZWFkID09IDApIGJyZWFrO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsYnVmZmVyLDAsICh0b3JlYWQgPiBidWZmZXIubGVuZ3RoID8gYnVmZmVyLmxlbmd0aCA6IHRvcmVhZCkpO1xuICAgICAgaWYocmVhZCA9PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICAgIHRvcmVhZCAtPSByZWFkXG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX21kNV9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tZDVfc3RyaW5nKHMsIG9mcywgbGVuKSB7XG4gIHJldHVybiBjYW1sX21kNV9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhzKSxvZnMsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVUcmFuc2Zvcm1cbnZhciBjYW1sX01ENVRyYW5zZm9ybSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGFkZCAoeCwgeSkgeyByZXR1cm4gKHggKyB5KSB8IDA7IH1cbiAgZnVuY3Rpb24geHgocSxhLGIseCxzLHQpIHtcbiAgICBhID0gYWRkKGFkZChhLCBxKSwgYWRkKHgsIHQpKTtcbiAgICByZXR1cm4gYWRkKChhIDw8IHMpIHwgKGEgPj4+ICgzMiAtIHMpKSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZmYoYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gZ2coYSxiLGMsZCx4LHMsdCkge1xuICAgIHJldHVybiB4eCgoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTsgfVxuICBmdW5jdGlvbiBpaShhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7IH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHcsIGJ1ZmZlcikge1xuICAgIHZhciBhID0gd1swXSwgYiA9IHdbMV0sIGMgPSB3WzJdLCBkID0gd1szXTtcblxuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA3LCAweEQ3NkFBNDc4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyAxXSwgMTIsIDB4RThDN0I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNywgMHgyNDIwNzBEQik7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgM10sIDIyLCAweEMxQkRDRUVFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNywgMHhGNTdDMEZBRik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNV0sIDEyLCAweDQ3ODdDNjJBKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTcsIDB4QTgzMDQ2MTMpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDddLCAyMiwgMHhGRDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDcsIDB4Njk4MDk4RDgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDldLCAxMiwgMHg4QjQ0RjdBRik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE3LCAweEZGRkY1QkIxKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzExXSwgMjIsIDB4ODk1Q0Q3QkUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA3LCAweDZCOTAxMTIyKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWzEzXSwgMTIsIDB4RkQ5ODcxOTMpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNywgMHhBNjc5NDM4RSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNV0sIDIyLCAweDQ5QjQwODIxKTtcblxuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA1LCAweEY2MUUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyA2XSwgOSwgMHhDMDQwQjM0MCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE0LCAweDI2NUU1QTUxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyAwXSwgMjAsIDB4RTlCNkM3QUEpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA1LCAweEQ2MkYxMDVEKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweEQ4QTFFNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA0XSwgMjAsIDB4RTdEM0ZCQzgpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA1LCAweDIxRTFDREU2KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzE0XSwgOSwgMHhDMzM3MDdENik7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE0LCAweEY0RDUwRDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWyA4XSwgMjAsIDB4NDU1QTE0RUQpO1xuICAgIGEgPSBnZyhhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA1LCAweEE5RTNFOTA1KTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWyAyXSwgOSwgMHhGQ0VGQTNGOCk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE0LCAweDY3NkYwMkQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OEQyQTRDOEEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDQsIDB4RkZGQTM5NDIpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDhdLCAxMSwgMHg4NzcxRjY4MSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMV0sIDE2LCAweDZEOUQ2MTIyKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzE0XSwgMjMsIDB4RkRFNTM4MEMpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDFdLCA0LCAweEE0QkVFQTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA0XSwgMTEsIDB4NEJERUNGQTkpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNiwgMHhGNkJCNEI2MCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMF0sIDIzLCAweEJFQkZCQzcwKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNCwgMHgyODlCN0VDNik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMF0sIDExLCAweEVBQTEyN0ZBKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTYsIDB4RDRFRjMwODUpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDZdLCAyMywgMHgwNDg4MUQwNSk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDQsIDB4RDlENEQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhFNkRCOTlFNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFGQTI3Q0Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyAyXSwgMjMsIDB4QzRBQzU2NjUpO1xuXG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDYsIDB4RjQyOTIyNDQpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDddLCAxMCwgMHg0MzJBRkY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweEFCOTQyM0E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA1XSwgMjEsIDB4RkM5M0EwMzkpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbMTJdLCA2LCAweDY1NUI1OUMzKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyAzXSwgMTAsIDB4OEYwQ0NDOTIpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNSwgMHhGRkVGRjQ3RCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMV0sIDIxLCAweDg1ODQ1REQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNiwgMHg2RkE4N0U0Rik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNV0sIDEwLCAweEZFMkNFNkUwKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyA2XSwgMTUsIDB4QTMwMTQzMTQpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMTNdLCAyMSwgMHg0RTA4MTFBMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDYsIDB4Rjc1MzdFODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhCRDNBRjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE1LCAweDJBRDdEMkJCKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyA5XSwgMjEsIDB4RUI4NkQzOTEpO1xuXG4gICAgd1swXSA9IGFkZChhLCB3WzBdKTtcbiAgICB3WzFdID0gYWRkKGIsIHdbMV0pO1xuICAgIHdbMl0gPSBhZGQoYywgd1syXSk7XG4gICAgd1szXSA9IGFkZChkLCB3WzNdKTtcbiAgfX0pKClcblxuLy9Qcm92aWRlczogY2FtbF9NRDVJbml0XG5mdW5jdGlvbiBjYW1sX01ENUluaXQoKSB7XG4gIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNjQpO1xuICB2YXIgYjMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gIHZhciBiOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIHJldHVybiB7bGVuOjAsXG4gICAgICAgICAgdzpuZXcgVWludDMyQXJyYXkoWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzZdKSxcbiAgICAgICAgICBiMzI6YjMyLFxuICAgICAgICAgIGI4OmI4fVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbil7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgdmFyIGlucHV0X3BvcyA9IDA7XG4gIGN0eC5sZW4gKz0gaW5wdXRfbGVuO1xuICBpZihpbl9idWYpe1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYoaW5wdXRfbGVuIDwgbWlzc2luZykge1xuICAgICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLGlucHV0X2xlbiksaW5fYnVmKTtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsbWlzc2luZyksaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUoaW5wdXRfbGVuID49IDY0KXtcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmKGlucHV0X2xlbilcbiAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KGlucHV0X3BvcyxpbnB1dF9wb3MgKyBpbnB1dF9sZW4pLCAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVGaW5hbFxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1RmluYWwoY3R4KXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZiArKztcbiAgaWYoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA2NDsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IodmFyIGogPSBpbl9idWY7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MUZGRkZGRkY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKVxuICAgICAgdFtpICogNCArIGpdID0gKGN0eC53W2ldID4+ICg4ICogaikpICYgMHhGRjtcbiAgcmV0dXJuIHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LGEuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pLCBsZW4pO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIEh1Z28gSGV1emFyZFxuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gU2hhY2hhciBJdHpoYWt5XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi80LjA3L290aGVybGlicy9zdHIvc3Ryc3R1YnMuY1xuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pzY29xL2pzY29xL2Jsb2IvdjguMTEvY29xLWpzL2pzX3N0dWIvc3RyLmpzXG5cbi8vUHJvdmlkZXM6IHJlX21hdGNoXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcblxudmFyIHJlX21hdGNoID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlX3dvcmRfbGV0dGVycyA9IFtcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDAwLTB4MUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweEZGLCAweDAzLCAgICAgICAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDg3LCAgICAgICAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsICAgICAgIC8qIDB4NjAtMHg3RjogYSB0byB6ICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHg4MC0weDlGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHhBMC0weEJGOiBub25lICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiwgICAgICAgLyogMHhDMC0weERGOiBMYXRpbi0xIGFjY2VudGVkIHVwcGVyY2FzZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYgICAgICAgIC8qIDB4RTAtMHhGRjogTGF0aW4tMSBhY2NlbnRlZCBsb3dlcmNhc2UgKi9cbiAgXTtcblxuICB2YXIgb3Bjb2RlcyA9IHtcbiAgICBDSEFSOiAwLCBDSEFSTk9STTogMSwgU1RSSU5HOiAyLCBTVFJJTkdOT1JNOiAzLCBDSEFSQ0xBU1M6IDQsXG4gICAgQk9MOiA1LCBFT0w6IDYsIFdPUkRCT1VOREFSWTogNyxcbiAgICBCRUdHUk9VUDogOCwgRU5ER1JPVVA6IDksIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsIFNJTVBMRVNUQVI6IDEzLCBTSU1QTEVQTFVTOiAxNCxcbiAgICBHT1RPOiAxNSwgUFVTSEJBQ0s6IDE2LCBTRVRNQVJLOiAxNyxcbiAgICBDSEVDS1BST0dSRVNTOiAxOFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1sgIChjID4+IDMpXSA+PiAoYyAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiBpbl9iaXRzZXQocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywoaSA+PiAzKSkgPj4gKGkgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVfbWF0Y2hfaW1wbChyZSwgcywgcG9zLCBwYXJ0aWFsKSB7XG5cbiAgICB2YXIgcHJvZyAgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICAgIGNwb29sICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMl0pLFxuICAgICAgICBub3JtdGFibGUgICAgID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZVszXSksXG4gICAgICAgIG51bWdyb3VwcyAgICAgPSByZVs0XSB8IDAsXG4gICAgICAgIG51bXJlZ2lzdGVycyAgPSByZVs1XSB8IDAsXG4gICAgICAgIHN0YXJ0Y2hhcnMgICAgPSByZVs2XSB8IDA7XG5cbiAgICB2YXIgcyA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHMpO1xuXG4gICAgdmFyIHBjID0gMCxcbiAgICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgICBzdGFjayA9IFtdLFxuICAgICAgICBncm91cHMgPSBuZXcgQXJyYXkobnVtZ3JvdXBzKSxcbiAgICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgZ3JvdXBzW2ldID0ge3N0YXJ0OiAtMSwgZW5kOi0xfVxuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpdGVtLnBvcykge1xuICAgICAgICAgIHBjID0gaXRlbS5wb3MucGM7XG4gICAgICAgICAgcG9zID0gaXRlbS5wb3MudHh0O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVpdCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBwdXNoID0gZnVuY3Rpb24oaXRlbSkgeyBzdGFjay5wdXNoKGl0ZW0pOyB9O1xuXG4gICAgdmFyIGFjY2VwdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGdyb3Vwc1swXS5lbmQgPSBwb3M7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDEgKyBncm91cHMubGVuZ3RoKjIpO1xuICAgICAgcmVzdWx0WzBdID0gMDsgLy8gdGFnXG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmKGcuc3RhcnQgPCAwIHx8IGcuZW5kIDwgMCkge1xuICAgICAgICAgIGcuc3RhcnQgPSBnLmVuZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxIF0gPSBnLnN0YXJ0O1xuICAgICAgICByZXN1bHRbMippICsgMSArIDEgXSA9IGcuZW5kO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKHBhcnRpYWwpIHJldHVybiBhY2NlcHQgKCk7XG4gICAgICBlbHNlIGJhY2t0cmFjayAoKTtcbiAgICB9XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgICAgc2FyZyA9IHByb2dbcGNdID4+IDgsXG4gICAgICAgICAgdWFyZyA9IHNhcmcgJiAweGZmLFxuICAgICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgICAgZ3JvdXA7XG5cbiAgICAgIHBjKys7XG5cbiAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChjID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUk5PUk06XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkdOT1JNOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUkNMQVNTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICBpZihwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVPTDpcbiAgICAgICAgaWYocG9zIDwgcy5sZW5ndGggJiYgc1twb3NdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5XT1JEQk9VTkRBUlk6XG4gICAgICAgIGlmKHBvcyA9PSAwKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbMF0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSAhPSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQkVHR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLnN0YXJ0fX0pO1xuICAgICAgICBncm91cC5zdGFydCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU5ER1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuZW5kfX0pO1xuICAgICAgICBncm91cC5lbmQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlJFRkdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgaWYoZ3JvdXAuc3RhcnQgPCAwIHx8IGdyb3VwLmVuZCA8IDApIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKyl7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKHNbaV0gIT0gc1twb3NdKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpXG4gICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVQTFVTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIH0gd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkFDQ0VQVDpcbiAgICAgICAgcmV0dXJuIGFjY2VwdCgpO1xuICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgIHBjID0gcGMgKyBzYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgcHVzaCh7cG9zOiB7cGM6IHBjICsgc2FyZywgdHh0OiBwb3N9fSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNFVE1BUks6XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6cmVfcmVnaXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOiB1YXJnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlX3JlZ2lzdGVyW3VhcmddfX0pO1xuICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hFQ0tQUk9HUkVTUzpcbiAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KCk7XG5cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2ZvcndhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2ZvcndhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2ZvcndhcmRcIilcbiAgd2hpbGUgKHBvcyA8PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9iYWNrd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfYmFja3dhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2JhY2t3YXJkXCIpXG4gIHdoaWxlIChwb3MgPj0gMCkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcy0tO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuXG4vL1Byb3ZpZGVzOiByZV9zdHJpbmdfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc3RyaW5nX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcGFydGlhbF9tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9wYXJ0aWFsX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnBhcnRpYWxfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCxncm91cHMsb3JpZykge1xuICB2YXIgcmVwbCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVwbCk7XG4gIHZhciBsZW4gPSByZXBsLmxlbmd0aDtcbiAgdmFyIG9yaWcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9yaWcpO1xuICB2YXIgcmVzID0gXCJcIjsgLy9yZXN1bHRcbiAgdmFyIG4gPSAwOyAvLyBjdXJyZW50IHBvc2l0aW9uXG4gIHZhciBjdXI7IC8vY3VycmVudCBjaGFyXG4gIHZhciBzdGFydCwgZW5kLCBjO1xuICB3aGlsZShuIDwgbGVuKXtcbiAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgIGlmKGN1ciAhPSAnXFxcXCcpe1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihuID09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2goY3VyKXtcbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICByZXMgKz0gY3VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzpcbiAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgIGlmIChjKjIgPj0gZ3JvdXBzLmxlbmd0aCAtIDEgKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiICk7XG4gICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLGMqMik7XG4gICAgICAgIGVuZCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcywgYyoyICsxKTtcbiAgICAgICAgaWYgKHN0YXJ0ID09IC0xKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiKTtcbiAgICAgICAgcmVzKz1vcmlnLnNsaWNlKHN0YXJ0LGVuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzICs9ICgnXFxcXCcgICsgY3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX2luaXRpYWxpemVcbmZ1bmN0aW9uIGNhbWxfc3RyX2luaXRpYWxpemUodW5pdCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKHMuY2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2ID4+IDE2O1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSByZXR1cm4gLWJhc2UtMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIE5ldyBsZXhlciBlbmdpbmUsIHdpdGggbWVtb3J5IG9mIHBvc2l0aW9ucyAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl9tZW0ocywgaSwgbWVtLCBjdXJyX3Bvcykge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gY3Vycl9wb3M7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX3RhZyhzLCBpLCBtZW0pIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybiA7XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSAtMTtcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxleGJ1Zikge1xuICB2YXIgbGV4X2J1ZmZlciA9IDI7XG4gIHZhciBsZXhfYnVmZmVyX2xlbiA9IDM7XG4gIHZhciBsZXhfc3RhcnRfcG9zID0gNTtcbiAgdmFyIGxleF9jdXJyX3BvcyA9IDY7XG4gIHZhciBsZXhfbGFzdF9wb3MgPSA3O1xuICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gODtcbiAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDk7XG4gIHZhciBsZXhfbWVtID0gMTA7XG4gIHZhciBsZXhfYmFzZSA9IDE7XG4gIHZhciBsZXhfYmFja3RyayA9IDI7XG4gIHZhciBsZXhfZGVmYXVsdCA9IDM7XG4gIHZhciBsZXhfdHJhbnMgPSA0O1xuICB2YXIgbGV4X2NoZWNrID0gNTtcbiAgdmFyIGxleF9iYXNlX2NvZGUgPSA2O1xuICB2YXIgbGV4X2JhY2t0cmtfY29kZSA9IDc7XG4gIHZhciBsZXhfZGVmYXVsdF9jb2RlID0gODtcbiAgdmFyIGxleF90cmFuc19jb2RlID0gOTtcbiAgdmFyIGxleF9jaGVja19jb2RlID0gMTA7XG4gIHZhciBsZXhfY29kZSA9IDExO1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG4gIGlmICghdGJsLmxleF9kZWZhdWx0X2NvZGUpIHtcbiAgICB0YmwubGV4X2Jhc2VfY29kZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VfY29kZV0pO1xuICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0X2NvZGVdKTtcbiAgfVxuICBpZiAodGJsLmxleF9jb2RlID09IG51bGwpIHRibC5sZXhfY29kZSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodGJsW2xleF9jb2RlXSk7XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2Jhc2VfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgcmV0dXJuIC1iYXNlLTE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICB2YXIgcHN0YXRlID0gc3RhdGUgO1xuICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0ZSlcbiAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107XG4gICAgZWxzZVxuICAgICAgc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKVxuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwibGV4aW5nOiBlbXB0eSB0b2tlblwiKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dO1xuICAgIH1lbHNle1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSwgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PSBwc3RhdGUpXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfdHJhbnNfY29kZVtiYXNlX2NvZGUgKyBjXTtcbiAgICAgIGVsc2VcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF9kZWZhdWx0X2NvZGVbcHN0YXRlXTtcbiAgICAgIGlmIChwY19vZmYgPiAwKVxuICAgICAgICBjYW1sX2xleF9ydW5fbWVtXG4gICAgICAodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pO1xuICAgICAgLyogRXJhc2UgdGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzXG4gICAgICAgICBjb25zdW1lZCBieSB0aGUgYXV0b21hdG9uIChpLmUuIHRoZXJlIHdhcyBubyBiYWNrdHJhY2sgYWJvdmUpXG4gICAgICAqL1xuICAgICAgaWYgKGMgPT0gMjU2KSBsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2dldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2Rscztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19sb2FkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19sb2FkKHJlZil7XG4gIHJldHVybiByZWZbMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuZnVuY3Rpb24gY2FtbF9hdG9taWNfY2FzKHJlZixvLG4pIHtcbiAgaWYocmVmWzFdID09PSBvKXtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2ZldGNoX2FkZChyZWYsIGkpIHtcbiAgdmFyIG9sZCA9IHJlZlsxXTtcbiAgcmVmWzFdICs9IGk7XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG5mdW5jdGlvbiBjYW1sX2F0b21pY19leGNoYW5nZShyZWYsIHYpIHtcbiAgdmFyIHIgPSByZWZbMV07XG4gIHJlZlsxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQoYSkge1xuICByZXR1cm4gWzAsIGFdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsdGVybV9zeW5jKXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gICAgLy9UT0RPOiBmaXggZXhuIGNhc2VcbiAgICB0ZXJtX3N5bmNbMV0gPSBbMCwgWzAsIHJlc11dO1xuICAgIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLG11dGV4KXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENhbWxpbnRlcm5hbEF0b21pYyBpcyBhIGRlcGVuZGVuY3kgb2YgU3RkbGliLCBzbyBpdCBpcyBjb21waWxlZCB3aXRoXG4gICAtbm9wZXJ2YXNpdmVzLiAqKVxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFdlIGFyZSBub3QgcmV1c2luZyAoJ2EgcmVmKSBkaXJlY3RseSB0byBtYWtlIGl0IGVhc2llciB0byByZWFzb25cbiAgIGFib3V0IGF0b21pY2l0eSBpZiB3ZSB3aXNoIHRvOiBldmVuIGluIGEgc2VxdWVudGlhbCBpbXBsZW1lbnRhdGlvbixcbiAgIHNpZ25hbHMgYW5kIG90aGVyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MgbWlnaHQgYnJlYWsgYXRvbWljaXR5LiAqKVxudHlwZSAnYSB0ID0ge211dGFibGUgdjogJ2F9XG5cbmxldCBtYWtlIHYgPSB7dn1cbmxldCBnZXQgciA9IHIudlxubGV0IHNldCByIHYgPSByLnYgPC0gdlxuXG4oKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgc2V0IHRvIG5ldmVyIGJlIGlubGluZWQ6IEZsYW1iZGEgaXNcbiAgIGFsbG93ZWQgdG8gbW92ZSBzdXJyb3VuZGluZyBjb2RlIGluc2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbixcbiAgIGluY2x1ZGluZyBhbGxvY2F0aW9ucy4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGV4Y2hhbmdlIHIgdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSB2O1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXRbQGlubGluZSBuZXZlcl0gY29tcGFyZV9hbmRfc2V0IHIgc2VlbiB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgaWYgY3VyID09IHNlZW4gdGhlbiAoXG4gICAgci52IDwtIHY7XG4gICAgKCogRU5EIEFUT01JQyAqKVxuICAgIHRydWVcbiAgKSBlbHNlXG4gICAgZmFsc2VcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2FuZF9hZGQgciBuID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIChjdXIgKyBuKTtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gIGxldCBtb2R1bGUgQXRvbWljID0gQ2FtbGludGVybmFsQXRvbWljIGluXG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gQXRvbWljLm1ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2F0X2V4aXQgKCkgPSAoQ2FtbGludGVybmFsQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBuYWtlZF9wb2ludGVyc19jaGVja2VkIDogdW5pdCAtPiBib29sXG4gID0gXCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkXCJcbmxldCAoKSA9IGlmIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgKCkgdGhlbiBhdF9leGl0IG1ham9yXG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgID0gQ29tcGxleFxubW9kdWxlIERpZ2VzdCAgICAgICA9IERpZ2VzdFxubW9kdWxlIEVpdGhlciAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgPSBHY1xubW9kdWxlIEdlbmxleCAgICAgICA9IEdlbmxleFxubW9kdWxlIEhhc2h0YmwgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbnQgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICA9IEludDY0XG5tb2R1bGUgTGF6eSAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICA9IExpc3Rcbm1vZHVsZSBMaXN0TGFiZWxzICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgID0gTWFyc2hhbFxubW9kdWxlIE1vcmVMYWJlbHMgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBOYXRpdmVpbnQgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgPSBPb1xubW9kdWxlIE9wdGlvbiAgICAgICA9IE9wdGlvblxubW9kdWxlIFBhcnNpbmcgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQZXJ2YXNpdmVzICAgPSBQZXJ2YXNpdmVzXG5tb2R1bGUgUHJpbnRleGMgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VxICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJlYW0gICAgICAgPSBTdHJlYW1cbm1vZHVsZSBTdHJpbmcgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEphbmUgU3RyZWV0IEdyb3VwIExMQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBAZGVwcmVjYXRlZCBVc2UgeyFTdGRsaWJ9ICopXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxubGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbmxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG5leGNlcHRpb24gRXhpdFxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgbWluID0gbWluXG5sZXQgbWF4ID0gbWF4XG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAoJiYpIGluc3RlYWQuXCJdXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKHx8KSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxubGV0IGFicyA9IGFic1xubGV0IG1heF9pbnQgPSBtYXhfaW50XG5sZXQgbWluX2ludCA9IG1pbl9pbnRcbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG5vdCA9IGxub3RcbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5sZXQgaW5maW5pdHkgPSBpbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IG5lZ19pbmZpbml0eVxubGV0IG5hbiA9IG5hblxubGV0IG1heF9mbG9hdCA9IG1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IG1pbl9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBlcHNpbG9uX2Zsb2F0XG50eXBlIG5vbnJlYyBmcGNsYXNzID0gZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxubGV0ICggXiApID0gKCBeIClcbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgPSBjaGFyX29mX2ludFxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5sZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc3RyaW5nID0gYm9vbF9vZl9zdHJpbmdcbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBib29sX29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgaW50X29mX3N0cmluZ19vcHQgPSBpbnRfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9mbG9hdCA9IHN0cmluZ19vZl9mbG9hdFxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5sZXQgKCBAICkgID0gKCBAIClcbnR5cGUgbm9ucmVjIGluX2NoYW5uZWwgPSBpbl9jaGFubmVsXG50eXBlIG5vbnJlYyBvdXRfY2hhbm5lbCA9IG91dF9jaGFubmVsXG5sZXQgc3RkaW4gPSBzdGRpblxubGV0IHN0ZG91dCA9IHN0ZG91dFxubGV0IHN0ZGVyciA9IHN0ZGVyclxubGV0IHByaW50X2NoYXIgPSBwcmludF9jaGFyXG5sZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfYnl0ZXMgPSBwcmludF9ieXRlc1xubGV0IHByaW50X2ludCA9IHByaW50X2ludFxubGV0IHByaW50X2Zsb2F0ID0gcHJpbnRfZmxvYXRcbmxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxubGV0IHByaW50X25ld2xpbmUgPSBwcmludF9uZXdsaW5lXG5sZXQgcHJlcnJfY2hhciA9IHByZXJyX2NoYXJcbmxldCBwcmVycl9zdHJpbmcgPSBwcmVycl9zdHJpbmdcbmxldCBwcmVycl9ieXRlcyA9IHByZXJyX2J5dGVzXG5sZXQgcHJlcnJfaW50ID0gcHJlcnJfaW50XG5sZXQgcHJlcnJfZmxvYXQgPSBwcmVycl9mbG9hdFxubGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5sZXQgcHJlcnJfbmV3bGluZSA9IHByZXJyX25ld2xpbmVcbmxldCByZWFkX2xpbmUgPSByZWFkX2xpbmVcbmxldCByZWFkX2ludCA9IHJlYWRfaW50XG5sZXQgcmVhZF9pbnRfb3B0ID0gcmVhZF9pbnRfb3B0XG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXRcbmxldCByZWFkX2Zsb2F0X29wdCA9IHJlYWRfZmxvYXRfb3B0XG50eXBlIG5vbnJlYyBvcGVuX2ZsYWcgPSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5sZXQgb3Blbl9vdXQgPSBvcGVuX291dFxubGV0IG9wZW5fb3V0X2JpbiA9IG9wZW5fb3V0X2JpblxubGV0IG9wZW5fb3V0X2dlbiA9IG9wZW5fb3V0X2dlblxubGV0IGZsdXNoID0gZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBmbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IG91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X3N0cmluZyA9IG91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBvdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBvdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gb3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9ieXRlID0gb3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IG91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X3ZhbHVlID0gb3V0cHV0X3ZhbHVlXG5sZXQgc2Vla19vdXQgPSBzZWVrX291dFxubGV0IHBvc19vdXQgPSBwb3Nfb3V0XG5sZXQgb3V0X2NoYW5uZWxfbGVuZ3RoID0gb3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2Vfb3V0ID0gY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfb3V0X25vZXJyID0gY2xvc2Vfb3V0X25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBvcGVuX2luID0gb3Blbl9pblxubGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9iaW5cbmxldCBvcGVuX2luX2dlbiA9IG9wZW5faW5fZ2VuXG5sZXQgaW5wdXRfY2hhciA9IGlucHV0X2NoYXJcbmxldCBpbnB1dF9saW5lID0gaW5wdXRfbGluZVxubGV0IGlucHV0ID0gaW5wdXRcbmxldCByZWFsbHlfaW5wdXQgPSByZWFsbHlfaW5wdXRcbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nID0gcmVhbGx5X2lucHV0X3N0cmluZ1xubGV0IGlucHV0X2J5dGUgPSBpbnB1dF9ieXRlXG5sZXQgaW5wdXRfYmluYXJ5X2ludCA9IGlucHV0X2JpbmFyeV9pbnRcbmxldCBpbnB1dF92YWx1ZSA9IGlucHV0X3ZhbHVlXG5sZXQgc2Vla19pbiA9IHNlZWtfaW5cbmxldCBwb3NfaW4gPSBwb3NfaW5cbmxldCBpbl9jaGFubmVsX2xlbmd0aCA9IGluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2VfaW4gPSBjbG9zZV9pblxubGV0IGNsb3NlX2luX25vZXJyID0gY2xvc2VfaW5fbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfaW4gPSBzZXRfYmluYXJ5X21vZGVfaW5cbm1vZHVsZSBMYXJnZUZpbGUgPSBMYXJnZUZpbGVcbnR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcbnR5cGUgbm9ucmVjICgnYSwnYikgcmVzdWx0ID0gKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcbmxldCBzdHJpbmdfb2ZfZm9ybWF0ID0gc3RyaW5nX29mX2Zvcm1hdFxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxubGV0ICggXl4gKSA9ICggXl4gKVxubGV0IGV4aXQgPSBleGl0XG5sZXQgYXRfZXhpdCA9IGF0X2V4aXRcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSA9IHZhbGlkX2Zsb2F0X2xleGVtXG5sZXQgZG9fYXRfZXhpdCA9IGRvX2F0X2V4aXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onXG4gIHwgJ1xcMTkyJyAuLiAnXFwyMTQnXG4gIHwgJ1xcMjE2JyAuLiAnXFwyMjInIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyArIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onXG4gIHwgJ1xcMjI0JyAuLiAnXFwyNDYnXG4gIHwgJ1xcMjQ4JyAuLiAnXFwyNTQnIGFzIGMgLT5cbiAgICB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBsaXN0cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGxpc3QgPSBbXSB8ICg6Oikgb2YgJ2EgKiAnYSBsaXN0XG5cbigqIExpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmVjIGxlbmd0aF9hdXggbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBsZW5cbiAgfCBfOjpsIC0+IGxlbmd0aF9hdXggKGxlbiArIDEpIGxcblxubGV0IGxlbmd0aCBsID0gbGVuZ3RoX2F1eCAwIGxcblxubGV0IGNvbnMgYSBsID0gYTo6bFxuXG5sZXQgaGQgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwiaGRcIlxuICB8IGE6Ol8gLT4gYVxuXG5sZXQgdGwgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhaWx3aXRoIFwidGxcIlxuICB8IF86OmwgLT4gbFxuXG5sZXQgbnRoIGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBmYWlsd2l0aCBcIm50aFwiXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgbnRoX29wdCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggbCAobi0xKVxuICBpbiBudGhfYXV4IGwgblxuXG5sZXQgYXBwZW5kID0gKEApXG5cbmxldCByZWMgcmV2X2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGEgOjogbCAtPiByZXZfYXBwZW5kIGwgKGEgOjogbDIpXG5cbmxldCByZXYgbCA9IHJldl9hcHBlbmQgbCBbXVxuXG5sZXQgcmVjIGluaXRfdGFpbHJlY19hdXggYWNjIGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gYWNjXG4gIGVsc2UgaW5pdF90YWlscmVjX2F1eCAoZiBpIDo6IGFjYykgKGkrMSkgbiBmXG5cbmxldCByZWMgaW5pdF9hdXggaSBuIGYgPVxuICBpZiBpID49IG4gdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHIgPSBmIGkgaW5cbiAgICByIDo6IGluaXRfYXV4IChpKzEpIG4gZlxuXG5sZXQgcmV2X2luaXRfdGhyZXNob2xkID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxMF8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQnc1xuICAgICBzbWFsbC4gKilcbiAgfCBTeXMuT3RoZXIgXyAtPiA1MFxuXG5sZXQgaW5pdCBsZW4gZiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QuaW5pdFwiIGVsc2VcbiAgaWYgbGVuID4gcmV2X2luaXRfdGhyZXNob2xkIHRoZW4gcmV2IChpbml0X3RhaWxyZWNfYXV4IFtdIDAgbGVuIGYpXG4gIGVsc2UgaW5pdF9hdXggMCBsZW4gZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgYSBpbiByIDo6IG1hcCBmIGxcblxubGV0IHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBhOjpsIC0+IGxldCByID0gZiBpIGEgaW4gciA6OiBtYXBpIChpICsgMSkgZiBsXG5cbmxldCBtYXBpIGYgbCA9IG1hcGkgMCBmIGxcblxubGV0IHJldl9tYXAgZiBsID1cbiAgbGV0IHJlYyBybWFwX2YgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCBhOjpsIC0+IHJtYXBfZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgcm1hcF9mIFtdIGxcblxuXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgYTsgaXRlciBmIGxcblxubGV0IHJlYyBpdGVyaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGkgYTsgaXRlcmkgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpIGYgbCA9IGl0ZXJpIDAgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBhKSBsXG5cbmxldCByZWMgZm9sZF9yaWdodCBmIGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGYgYSAoZm9sZF9yaWdodCBmIGwgYWNjdSlcblxubGV0IHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGxldCByID0gZiBhMSBhMiBpbiByIDo6IG1hcDIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubWFwMlwiXG5cbmxldCByZXZfbWFwMiBmIGwxIGwyID1cbiAgbGV0IHJlYyBybWFwMl9mIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICB8IChbXSwgW10pIC0+IGFjY3VcbiAgICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcm1hcDJfZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIHJtYXAyX2YgW10gbDEgbDJcblxuXG5sZXQgcmVjIGl0ZXIyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gKClcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTI7IGl0ZXIyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmb2xkX2xlZnQyIGYgKGYgYWNjdSBhMSBhMikgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfbGVmdDJcIlxuXG5sZXQgcmVjIGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBhY2N1XG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyIChmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UpXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX3JpZ2h0MlwiXG5cbmxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiB0cnVlXG4gIHwgYTo6bCAtPiBwIGEgJiYgZm9yX2FsbCBwIGxcblxubGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IHAgYSB8fCBleGlzdHMgcCBsXG5cbmxldCByZWMgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiB0cnVlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyICYmIGZvcl9hbGwyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcblxubGV0IHJlYyBleGlzdHMyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gZmFsc2VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgfHwgZXhpc3RzMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcblxubGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW0geCBsXG5cbmxldCByZWMgbWVtcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gYSA9PSB4IHx8IG1lbXEgeCBsXG5cbmxldCByZWMgYXNzb2MgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gYiBlbHNlIGFzc29jIHggbFxuXG5sZXQgcmVjIGFzc29jX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gU29tZSBiIGVsc2UgYXNzb2Nfb3B0IHggbFxuXG5sZXQgcmVjIGFzc3EgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gYiBlbHNlIGFzc3EgeCBsXG5cbmxldCByZWMgYXNzcV9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIFNvbWUgYiBlbHNlIGFzc3Ffb3B0IHggbFxuXG5sZXQgcmVjIG1lbV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGNvbXBhcmUgYSB4ID0gMCB8fCBtZW1fYXNzb2MgeCBsXG5cbmxldCByZWMgbWVtX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBhID09IHggfHwgbWVtX2Fzc3EgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPlxuICAgICAgaWYgY29tcGFyZSBhIHggPSAwIHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc29jIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKGEsIF8gYXMgcGFpcikgOjogbCAtPiBpZiBhID09IHggdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzcSB4IGxcblxubGV0IHJlYyBmaW5kIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IGVsc2UgZmluZCBwIGxcblxubGV0IHJlYyBmaW5kX29wdCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmRfb3B0IHAgbFxuXG5sZXQgcmVjIGZpbmRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwIGYgbFxuICAgICBlbmRcblxubGV0IGZpbmRfYWxsIHAgPVxuICBsZXQgcmVjIGZpbmQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmV2IGFjY3VcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gZmluZCAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCBhY2N1IGwgaW5cbiAgZmluZCBbXVxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0IGZpbHRlcmkgcCBsID1cbiAgbGV0IHJlYyBhdXggaSBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2NcbiAgfCB4OjpsIC0+IGF1eCAoaSArIDEpIChpZiBwIGkgeCB0aGVuIHg6OmFjYyBlbHNlIGFjYykgbFxuICBpblxuICBhdXggMCBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwIGYgPVxuICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCBhY2N1IGxcbiAgICAgICAgfCBTb21lIHYgLT4gYXV4ICh2IDo6IGFjY3UpIGxcbiAgaW5cbiAgYXV4IFtdXG5cbmxldCBjb25jYXRfbWFwIGYgbCA9XG4gIGxldCByZWMgYXV4IGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgIGxldCB4cyA9IGYgeCBpblxuICAgICAgIGF1eCBmIChyZXZfYXBwZW5kIHhzIGFjYykgbFxuICBpbiBhdXggZiBbXSBsXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgbGlzdCBvZiBsZW5ndGggYmV0d2VlbiBhYm91dCAxMDAwMDAgKGRlcGVuZGluZyBvbiB0aGUgbWlub3JcbiAgIGhlYXAgc2l6ZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGxpc3QpIGFuZCBTeXMubWF4X2FycmF5X3NpemUsIGl0IGlzXG4gICBhY3R1YWxseSBmYXN0ZXIgdG8gdXNlIHRoZSBmb2xsb3dpbmcsIGJ1dCBpdCBtaWdodCBhbHNvIHVzZSBtb3JlIG1lbW9yeVxuICAgYmVjYXVzZSB0aGUgYXJndW1lbnQgbGlzdCBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQgaW5jcmVtZW50YWxseS5cblxuICAgQWxzbywgdGhlcmUgc2VlbXMgdG8gYmUgYSBidWcgaW4gdGhpcyBjb2RlIG9yIGluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2Ygb2JqX3RydW5jYXRlLlxuXG5leHRlcm5hbCBvYmpfdHJ1bmNhdGUgOiAnYSBhcnJheSAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfdHJ1bmNhdGVcIlxuXG5sZXQgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgYWNjdSBuIHAgPVxuICAgIGlmIHAgPD0gMCB0aGVuIGFjY3UgZWxzZSBiZWdpblxuICAgICAgaWYgcCA9IG4gdGhlbiBiZWdpblxuICAgICAgICBvYmpfdHJ1bmNhdGUgYSBwO1xuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIChuLTEwMDApIChwLTEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsb29wIChhLihwLTEpIDo6IGFjY3UpIG4gKHAtMSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpblxuICBsb29wIFtdIChsLTEwMDApIGxcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICBBcnJheS5zdGFibGVfc29ydCBjbXAgYTtcbiAgYXJyYXlfdG9fbGlzdF9pbl9wbGFjZSBhXG5cbiopXG5cblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG47O1xuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuOztcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IHJlYyBkaXJlY3QgZGVwdGggc2VxIDogXyBsaXN0ID1cbiAgICBpZiBkZXB0aD0wXG4gICAgdGhlblxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gc2VxXG4gICAgICB8PiByZXYgKCogdGFpbHJlYyAqKVxuICAgIGVsc2UgbWF0Y2ggc2VxKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFtdXG4gICAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPiB4IDo6IGRpcmVjdCAoZGVwdGgtMSkgbmV4dFxuICBpblxuICBkaXJlY3QgNTAwIHNlcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIGNvcHkgcyBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB2aWEgb3RoZXIgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbmxldCB1cHBlcmNhc2UgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgbG93ZXJjYXNlIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2Ugc1xuXG5sZXQgY2FwaXRhbGl6ZSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlIHNcbmxldCB1bmNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZSBzXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJXN0cmluZ19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgY29weSBzID1cbiAgQi5jb3B5IChib3MgcykgfD4gYnRzXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGZpbGwgPVxuICBCLmZpbGxcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgcmVjIGVzY2FwZV9pZl9uZWVkZWQgcyBuIGkgPVxuICAgIGlmIGkgPj0gbiB0aGVuIHMgZWxzZVxuICAgICAgbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFwwMDAnLi4nXFwwMzEnIHwgJ1xcMTI3Jy4uICdcXDI1NScgLT5cbiAgICAgICAgICBidHMgKEIuZXNjYXBlZCAoYm9zIHMpKVxuICAgICAgfCBfIC0+IGVzY2FwZV9pZl9uZWVkZWQgcyBuIChpKzEpXG4gIGluXG4gIGVzY2FwZV9pZl9uZWVkZWQgcyAobGVuZ3RoIHMpIDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPVxuICBCLnVwcGVyY2FzZSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZSBzID1cbiAgQi5sb3dlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplIHMgPVxuICBCLmNhcGl0YWxpemUgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemUgcyA9XG4gIEIudW5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IG1hcnNoYWwgKG9iaiA6IHQpID1cbiAgTWFyc2hhbC50b19ieXRlcyBvYmogW11cbmxldCB1bm1hcnNoYWwgc3RyIHBvcyA9XG4gIChNYXJzaGFsLmZyb21fYnl0ZXMgc3RyIHBvcywgcG9zICsgTWFyc2hhbC50b3RhbF9zaXplIHN0ciBwb3MpXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0NVxuXG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcbmxldCBmaW5hbF90YWcgPSBjdXN0b21fdGFnXG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbmxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsXG5sZXQgZXh0ZW5zaW9uX25hbWUgPSBFeHRlbnNpb25fY29uc3RydWN0b3IubmFtZVxubGV0IGV4dGVuc2lvbl9pZCA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuXG5tb2R1bGUgRXBoZW1lcm9uID0gc3RydWN0XG4gIHR5cGUgb2JqX3QgPSB0XG5cbiAgdHlwZSB0ICgqKiBlcGhlbWVyb24gKilcblxuICAgKCoqIFRvIGNoYW5nZSBpbiBzeW5jIHdpdGggd2Vhay5oICopXG4gIGxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDJcbiAgbGV0IG1heF9lcGhlX2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9lcGhlX2NyZWF0ZVwiOztcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxubGV0IG1ha2VfZmxvYXQgPSBjcmVhdGVfZmxvYXRcblxubW9kdWxlIEZsb2F0YXJyYXkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGZsb2F0YXJyYXkgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCBsZW5ndGggOiBmbG9hdGFycmF5IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmxldCBpbml0IGwgZiA9XG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlXG4gIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgKCogU2VlICM2NTc1LiBXZSBjb3VsZCBhbHNvIGNoZWNrIGZvciBtYXhpbXVtIGFycmF5IHNpemUsIGJ1dCB0aGlzIGRlcGVuZHNcbiAgICAgb24gd2hldGhlciB3ZSBjcmVhdGUgYSBmbG9hdCBhcnJheSBvciBhIHJlZ3VsYXIgb25lLi4uICopXG4gIGVsc2VcbiAgIGxldCByZXMgPSBjcmVhdGUgbCAoZiAwKSBpblxuICAgZm9yIGkgPSAxIHRvIHByZWQgbCBkb1xuICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICBkb25lO1xuICAgcmVzXG5cbmxldCBtYWtlX21hdHJpeCBzeCBzeSBpbml0ID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSBzeCBbfHxdIGluXG4gIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgY3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4XG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXAyIGYgYSBiID1cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgaWYgbGEgPD4gbGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlIGJlZ2luXG4gICAgaWYgbGEgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSAoZiAodW5zYWZlX2dldCBhIDApICh1bnNhZmVfZ2V0IGIgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBtYXBpIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmIDAgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQgcmVjIHRvbGlzdCBpIHJlcyA9XG4gICAgaWYgaSA8IDAgdGhlbiByZXMgZWxzZSB0b2xpc3QgKGkgLSAxKSAodW5zYWZlX2dldCBhIGkgOjogcmVzKSBpblxuICB0b2xpc3QgKGxlbmd0aCBhIC0gMSkgW11cblxuKCogQ2Fubm90IHVzZSBMaXN0Lmxlbmd0aCBoZXJlIGJlY2F1c2UgdGhlIExpc3QgbW9kdWxlIGRlcGVuZHMgb24gQXJyYXkuICopXG5sZXQgcmVjIGxpc3RfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY3VcbiAgfCBfOjp0IC0+IGxpc3RfbGVuZ3RoIChzdWNjIGFjY3UpIHRcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGEgPSBjcmVhdGUgKGxpc3RfbGVuZ3RoIDAgbCkgaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpKzEpIHRsIGluXG4gICAgICBmaWxsIDEgdGxcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjIGlucHV0X2FycmF5ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBpbnB1dF9hcnJheSBpblxuICBpZiBsZW4gPSAwIHRoZW4gKGFjYywgW3x8XSkgZWxzZSBiZWdpblxuICAgIGxldCBhY2MsIGVsdCA9IGYgYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IDApIGluXG4gICAgbGV0IG91dHB1dF9hcnJheSA9IGNyZWF0ZSBsZW4gZWx0IGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGFjYycsIGVsdCA9IGYgIWFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSBpKSBpblxuICAgICAgYWNjIDo9IGFjYyc7XG4gICAgICB1bnNhZmVfc2V0IG91dHB1dF9hcnJheSBpIGVsdDtcbiAgICBkb25lO1xuICAgICFhY2MsIG91dHB1dF9hcnJheVxuICBlbmRcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbDIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZvcl9hbGwyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgZXhpc3RzMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZXhpc3RzMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3Jldl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBsZW4gPSBsaXN0X2xlbmd0aCAwIGwgaW5cbiAgICAgIGxldCBhID0gY3JlYXRlIGxlbiBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICAgIGluXG4gICAgICBmaWxsIChsZW4tMikgdGxcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gIG9mX3Jldl9saXN0IGxcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgTmljb2xhcyBPamVkYSBCYXIsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgbmVnIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCBhZGQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsIHN1YiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgbXVsIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCBkaXYgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsIHJlbSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZm1hIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1hX2Zsb2F0XCIgXCJjYW1sX2ZtYVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcblxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgaW5maW5pdHkgPSBTdGRsaWIuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBTdGRsaWIubmVnX2luZmluaXR5XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGlzX2Zpbml0ZSAoeDogZmxvYXQpID0geCAtLiB4ID0gMC5cbmxldCBpc19pbmZpbml0ZSAoeDogZmxvYXQpID0gMS4gLy4geCA9IDAuXG5sZXQgaXNfbmFuICh4OiBmbG9hdCkgPSB4IDw+IHhcblxubGV0IHBpID0gMHgxLjkyMWZiNTQ0NDJkMThwKzFcbmxldCBtYXhfZmxvYXQgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgbWluX2Zsb2F0ID0gU3RkbGliLm1pbl9mbG9hdFxubGV0IGVwc2lsb24gPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0b19pbnQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfZmxvYXRcbnR5cGUgZnBjbGFzcyA9IFN0ZGxpYi5mcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwb3cgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNicnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jYnJ0X2Zsb2F0XCIgXCJjYW1sX2NicnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cDJfZmxvYXRcIiBcImNhbWxfZXhwMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMl9mbG9hdFwiIFwiY2FtbF9sb2cyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmYgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZfZmxvYXRcIiBcImNhbWxfZXJmXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9lcmZjX2Zsb2F0XCIgXCJjYW1sX2VyZmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdHJ1bmMgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90cnVuY19mbG9hdFwiIFwiY2FtbF90cnVuY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCByb3VuZCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3JvdW5kX2Zsb2F0XCIgXCJjYW1sX3JvdW5kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbltAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBpc19pbnRlZ2VyIHggPSB4ID0gdHJ1bmMgeCAmJiBpc19maW5pdGUgeFxuXG5leHRlcm5hbCBuZXh0X2FmdGVyIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmV4dGFmdGVyX2Zsb2F0XCIgXCJjYW1sX25leHRhZnRlclwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCBzdWNjIHggPSBuZXh0X2FmdGVyIHggaW5maW5pdHlcbmxldCBwcmVkIHggPSBuZXh0X2FmdGVyIHggbmVnX2luZmluaXR5XG5cbmV4dGVybmFsIGNvcHlfc2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2lnbl9iaXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gYm9vbFxuICA9IFwiY2FtbF9zaWduYml0X2Zsb2F0XCIgXCJjYW1sX3NpZ25iaXRcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxudHlwZSB0ID0gZmxvYXRcbmV4dGVybmFsIGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmxldCBlcXVhbCB4IHkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0W0BpbmxpbmVdIG1pbiAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4ICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHx8IGlzX25hbiB5IHRoZW4gKG5hbiwgbmFuKVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCwgeSkgZWxzZSAoeSwgeClcblxubGV0W0BpbmxpbmVdIG1pbl9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIGlzX25hbiB4IHRoZW4gKHkseSlcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuICh4LHgpXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LHkpIGVsc2UgKHkseClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+IGludCAtPiBmbG9hdCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gZmxvYXRhcnJheVxuXG4gIGV4dGVybmFsIGxlbmd0aCA6IHQgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGxldCB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgZm9yIGkgPSBvZnMgdG8gb2ZzICsgbGVuIC0gMSBkbyB1bnNhZmVfc2V0IGEgaSB2IGRvbmVcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPVxuICAgIFwiY2FtbF9mbG9hdGFycmF5X2JsaXRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjaGVjayBhIG9mcyBsZW4gbXNnID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzICsgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBsZW5ndGggYSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBsZXQgbWFrZSBuIHYgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbiBpblxuICAgIHVuc2FmZV9maWxsIHJlc3VsdCAwIG4gdjtcbiAgICByZXN1bHRcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgICAgICBTb21lICh0b19pbnQgbilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgfCA2NCAtPlxuICAgICAgKCogU28gdGhhdCBpdCBjb21waWxlcyBpbiAzMi1iaXQgKilcbiAgICAgIGxldCBtYXNrID0gMHhGRkZGIGxzbCAxNiBsb3IgMHhGRkZGIGluXG4gICAgICBmdW4gbiAtPiBTb21lICh0b19pbnQgbiBsYW5kIG1hc2spXG4gIHwgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmcgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzIgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQ2NF06IDY0LWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfdG9fZmxvYXRcIiBcImNhbWxfaW50NjRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiBpbnQ2NCAtPiBpbnQzMiA9IFwiJWludDY0X3RvX2ludDMyXCJcbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5sZXQgemVybyA9IDBMXG5sZXQgb25lID0gMUxcbmxldCBtaW51c19vbmUgPSAtMUxcbmxldCBzdWNjIG4gPSBhZGQgbiAxTFxubGV0IHByZWQgbiA9IHN1YiBuIDFMXG5sZXQgYWJzIG4gPSBpZiBuID49IDBMIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDAwMDAwMDAwMExcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRkZGRkZGRkZGTFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xTClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgY29tcGFyZSB6ZXJvIG4gPD0gMCAmJiBjb21wYXJlIG4gbWF4X2ludCA8PSAwIHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHN1YnNldDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGVsdCAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgZm9yX2FsbDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgaXNfZW1wdHk6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBtZW06ICBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGFkZDoga2V5IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgICAgIChrZXkgLT4gJ2Egb3B0aW9uIC0+ICdiIG9wdGlvbiAtPiAnYyBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBmaW5kOiBrZXkgLT4gJ2EgdCAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDoga2V5IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGtleSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPSBzdHJ1Y3RcblxuICAgIHR5cGUga2V5ID0gT3JkLnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUgb2Yge2w6J2EgdDsgdjprZXk7IGQ6J2E7IHI6J2EgdDsgaDppbnR9XG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gaGVpZ2h0IGwgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgc2luZ2xldG9uIHggZCA9IE5vZGV7bD1FbXB0eTsgdj14OyBkOyByPUVtcHR5OyBoPTF9XG5cbiAgICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IGxkIChjcmVhdGUgbHIgeCBkIHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyBkPWxyZDsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIGxybCkgbHJ2IGxyZCAoY3JlYXRlIGxyciB4IGQgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IGQ9cmxkOyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsbCkgcmx2IHJsZCAoY3JlYXRlIHJsciBydiByZCBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBhZGQgeCBkYXRhID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggZGF0YSBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IGRhdGEgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gZFxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZFxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge2x9IC0+IG1pbl9iaW5kaW5nIGxcblxuICAgIGxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfS0+IG1pbl9iaW5kaW5nX29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZyByXG5cbiAgICBsZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmdfb3B0IHJcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHYgZCByXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IChOb2RlIHtsOyB2OyBkOyByfSBhcyBtKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW4gaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSB4IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVtcHR5XG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgICAgIGVuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBtZXJnZSBsIHJcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZW5kIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gdXBkYXRlIHggZiBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHVwZGF0ZSB4IGYgciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxubGV0IHJhaXNlX3VuZGVmaW5lZCA9IE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgVW5kZWZpbmVkKVxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiBPYmoudCAtPiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX29ial9tYWtlX2ZvcndhcmRcIlxuXG4oKiBBc3N1bWUgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBsYXp5ICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByYWlzZSBlXG5cblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX3ZhbF9sYXp5X2Jsb2NrIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgKE9iai5yZXByIGJsaykgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCByYWlzZV91bmRlZmluZWQ7XG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIG1ha2VfZm9yd2FyZCAoT2JqLnJlcHIgYmxrKSAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgcmVzdWx0XG5cblxuKCogW2ZvcmNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlXG4gICB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHMgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbFxuICAgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcblxubGV0IGZvcmNlIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdHMgdGFnIGNvdWxkIGhhdmVcbiAgICAgICBjaGFuZ2VkIGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW4gKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZykgZWxzZVxuICBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2xhenlfYmxvY2sgbHp2XG5cblxubGV0IGZvcmNlX3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV92YWxfbGF6eV9ibG9jayBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5cbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5cbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5cbmxldCBmb3JjZV92YWwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX3ZhbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbGF6eV9mcm9tX2Z1biA9IGZyb21fZnVuXG5cbmxldCBsYXp5X2Zyb21fdmFsID0gZnJvbV92YWxcblxubGV0IGxhenlfaXNfdmFsID0gaXNfdmFsXG5cblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBsYXp5X2Zyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2EgY2VsbCBvcHRpb25cbmFuZCAnYSBjZWxsID0geyBtdXRhYmxlIGNvdW50IDogaW50OyBtdXRhYmxlIGRhdGEgOiAnYSBkYXRhIH1cbmFuZCAnYSBkYXRhID1cbiAgICBTZW1wdHlcbiAgfCBTY29ucyBvZiAnYSAqICdhIGRhdGFcbiAgfCBTYXBwIG9mICdhIGRhdGEgKiAnYSBkYXRhXG4gIHwgU2xhenkgb2YgJ2EgZGF0YSBMYXp5LnRcbiAgfCBTZ2VuIG9mICdhIGdlblxuICB8IFNidWZmaW8gOiBidWZmaW8gLT4gY2hhciBkYXRhXG5hbmQgJ2EgZ2VuID0geyBtdXRhYmxlIGN1cnIgOiAnYSBvcHRpb24gb3B0aW9uOyBmdW5jIDogaW50IC0+ICdhIG9wdGlvbiB9XG5hbmQgYnVmZmlvID1cbiAgeyBpYyA6IGluX2NoYW5uZWw7IGJ1ZmYgOiBieXRlczsgbXV0YWJsZSBsZW4gOiBpbnQ7IG11dGFibGUgaW5kIDogaW50IH1cblxuZXhjZXB0aW9uIEZhaWx1cmVcbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGNvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHsgY291bnQgfSAtPiBjb3VudFxubGV0IGRhdGEgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gU2VtcHR5XG4gIHwgU29tZSB7IGRhdGEgfSAtPiBkYXRhXG5cbmxldCBmaWxsX2J1ZmYgYiA9XG4gIGIubGVuIDwtIGlucHV0IGIuaWMgYi5idWZmIDAgKEJ5dGVzLmxlbmd0aCBiLmJ1ZmYpOyBiLmluZCA8LSAwXG5cblxubGV0IHJlYyBnZXRfZGF0YSA6IHR5cGUgdi4gaW50IC0+IHYgZGF0YSAtPiB2IGRhdGEgPSBmdW4gY291bnQgZCAtPiBtYXRjaCBkIHdpdGhcbiAoKiBSZXR1cm5zIGVpdGhlciBTZW1wdHkgb3IgU2NvbnMoYSwgXykgZXZlbiB3aGVuIGQgaXMgYSBnZW5lcmF0b3JcbiAgICBvciBhIGJ1ZmZlci4gSW4gdGhvc2UgY2FzZXMsIHRoZSBpdGVtIGEgaXMgc2VlbiBhcyBleHRyYWN0ZWQgZnJvbVxuIHRoZSBnZW5lcmF0b3IvYnVmZmVyLlxuIFRoZSBjb3VudCBwYXJhbWV0ZXIgaXMgdXNlZCBmb3IgY2FsbGluZyBgU2dlbi1mdW5jdGlvbnMnLiAgKilcbiAgIFNlbXB0eSB8IFNjb25zIChfLCBfKSAtPiBkXG4gfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIGNvdW50IGQxIHdpdGhcbiAgICAgICBTY29ucyAoYSwgZDExKSAtPiBTY29ucyAoYSwgU2FwcCAoZDExLCBkMikpXG4gICAgIHwgU2VtcHR5IC0+IGdldF9kYXRhIGNvdW50IGQyXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBOb25lfSAtPiBTZW1wdHlcbiB8IFNnZW4gKHtjdXJyID0gU29tZShTb21lIGEpfSBhcyBnKSAtPlxuICAgICBnLmN1cnIgPC0gTm9uZTsgU2NvbnMoYSwgZClcbiB8IFNnZW4gZyAtPlxuICAgICBiZWdpbiBtYXRjaCBnLmZ1bmMgY291bnQgd2l0aFxuICAgICAgIE5vbmUgLT4gZy5jdXJyIDwtIFNvbWUoTm9uZSk7IFNlbXB0eVxuICAgICB8IFNvbWUgYSAtPiBTY29ucyhhLCBkKVxuICAgICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgIGVuZFxuIHwgU2J1ZmZpbyBiIC0+XG4gICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgIGlmIGIubGVuID09IDAgdGhlbiBTZW1wdHkgZWxzZVxuICAgICAgIGxldCByID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQgaW5cbiAgICAgICAoKiBXYXJuaW5nOiBhbnlvbmUgdXNpbmcgZyB0aGlua3MgdGhhdCBhbiBpdGVtIGhhcyBiZWVuIHJlYWQgKilcbiAgICAgICBiLmluZCA8LSBzdWNjIGIuaW5kOyBTY29ucyhyLCBkKVxuIHwgU2xhenkgZiAtPiBnZXRfZGF0YSBjb3VudCAoTGF6eS5mb3JjZSBmKVxuXG5cbmxldCByZWMgcGVla19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdiBvcHRpb24gPSBmdW4gcyAtPlxuICgqIGNvbnN1bHQgdGhlIGZpcnN0IGl0ZW0gb2YgcyAqKVxuIG1hdGNoIHMuZGF0YSB3aXRoXG4gICBTZW1wdHkgLT4gTm9uZVxuIHwgU2NvbnMgKGEsIF8pIC0+IFNvbWUgYVxuIHwgU2FwcCAoXywgXykgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZ2V0X2RhdGEgcy5jb3VudCBzLmRhdGEgd2l0aFxuICAgICAgIFNjb25zKGEsIF8pIGFzIGQgLT4gcy5kYXRhIDwtIGQ7IFNvbWUgYVxuICAgICB8IFNlbXB0eSAtPiBOb25lXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgZW5kXG4gfCBTbGF6eSBmIC0+IHMuZGF0YSA8LSAoTGF6eS5mb3JjZSBmKTsgcGVla19kYXRhIHNcbiB8IFNnZW4ge2N1cnIgPSBTb21lIGF9IC0+IGFcbiB8IFNnZW4gZyAtPiBsZXQgeCA9IGcuZnVuYyBzLmNvdW50IGluIGcuY3VyciA8LSBTb21lIHg7IHhcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gYmVnaW4gcy5kYXRhIDwtIFNlbXB0eTsgTm9uZSBlbmRcbiAgICAgZWxzZSBTb21lIChCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZiBiLmluZClcblxuXG5sZXQgcGVlayA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBzIC0+IHBlZWtfZGF0YSBzXG5cblxubGV0IHJlYyBqdW5rX2RhdGEgOiB0eXBlIHYuIHYgY2VsbCAtPiB1bml0ID0gZnVuIHMgLT5cbiAgbWF0Y2ggcy5kYXRhIHdpdGhcbiAgICBTY29ucyAoXywgZCkgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgcy5kYXRhIDwtIGRcbiAgfCBTZ2VuICh7Y3VyciA9IFNvbWUgX30gYXMgZykgLT4gcy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgZy5jdXJyIDwtIE5vbmVcbiAgfCBTYnVmZmlvIGIgLT5cbiAgICAgIGlmIGIuaW5kID49IGIubGVuIHRoZW4gZmlsbF9idWZmIGI7XG4gICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gcy5kYXRhIDwtIFNlbXB0eVxuICAgICAgZWxzZSAocy5jb3VudCA8LSAoc3VjYyBzLmNvdW50KTsgYi5pbmQgPC0gc3VjYyBiLmluZClcbiAgfCBfIC0+XG4gICAgICBtYXRjaCBwZWVrX2RhdGEgcyB3aXRoXG4gICAgICAgIE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IGp1bmtfZGF0YSBzXG5cblxubGV0IGp1bmsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRhdGEgLT4ganVua19kYXRhIGRhdGFcblxubGV0IHJlYyBuZ2V0X2RhdGEgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW4gW10sIHMuZGF0YSwgMFxuICBlbHNlXG4gICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgU29tZSBhIC0+XG4gICAgICAgIGp1bmtfZGF0YSBzO1xuICAgICAgICBsZXQgKGFsLCBkLCBrKSA9IG5nZXRfZGF0YSAocHJlZCBuKSBzIGluIGEgOjogYWwsIFNjb25zIChhLCBkKSwgc3VjYyBrXG4gICAgfCBOb25lIC0+IFtdLCBzLmRhdGEsIDBcblxuXG5sZXQgbnBlZWtfZGF0YSBuIHMgPVxuICBsZXQgKGFsLCBkLCBsZW4pID0gbmdldF9kYXRhIG4gcyBpblxuICBzLmNvdW50IDwtIChzLmNvdW50IC0gbGVuKTtcbiAgcy5kYXRhIDwtIGQ7XG4gIGFsXG5cblxubGV0IG5wZWVrIG4gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGQgLT4gbnBlZWtfZGF0YSBuIGRcblxubGV0IG5leHQgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBhIC0+IGp1bmsgczsgYVxuICB8IE5vbmUgLT4gcmFpc2UgRmFpbHVyZVxuXG5cbmxldCBlbXB0eSBzID1cbiAgbWF0Y2ggcGVlayBzIHdpdGhcbiAgICBTb21lIF8gLT4gcmFpc2UgRmFpbHVyZVxuICB8IE5vbmUgLT4gKClcblxuXG5sZXQgaXRlciBmIHN0cm0gPVxuICBsZXQgcmVjIGRvX3JlYyAoKSA9XG4gICAgbWF0Y2ggcGVlayBzdHJtIHdpdGhcbiAgICAgIFNvbWUgYSAtPiBqdW5rIHN0cm07IGlnbm9yZShmIGEpOyBkb19yZWMgKClcbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgZG9fcmVjICgpXG5cblxuKCogU3RyZWFtIGJ1aWxkaW5nIGZ1bmN0aW9ucyAqKVxuXG5sZXQgZnJvbSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2dlbiB7Y3VyciA9IE5vbmU7IGZ1bmMgPSBmfX1cblxubGV0IG9mX2xpc3QgbCA9XG4gIFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IExpc3QuZm9sZF9yaWdodCAoZnVuIHggbCAtPiBTY29ucyAoeCwgbCkpIGwgU2VtcHR5fVxuXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgKCogV2UgY2Fubm90IHVzZSB0aGUgaW5kZXggcGFzc2VkIGJ5IHRoZSBbZnJvbV0gZnVuY3Rpb24gZGlyZWN0bHlcbiAgICAgICBiZWNhdXNlIGl0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyZWFtIGNvdW50LCB3aXRoIGFic29sdXRlbHkgbm9cbiAgICAgICBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIHN0YXJ0IGZyb20gMC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlXG4gICAgICAgb2YgW1N0cmVhbS5pY29ucyAnYycgKFN0cmVhbS5mcm9tX3N0cmluZyBcImFiXCIpXSwgdGhlIGZpcnN0XG4gICAgICAgYWNjZXNzIHRvIHRoZSBzdHJpbmcgd2lsbCBiZSBtYWRlIHdpdGggY291bnQgWzFdIGFscmVhZHkuXG4gICAgKilcbiAgICBsZXQgYyA9ICFjb3VudCBpblxuICAgIGlmIGMgPCBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIHMuW2NdKVxuICAgIGVsc2UgTm9uZSlcblxuXG5sZXQgb2ZfYnl0ZXMgcyA9XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGZyb20gKGZ1biBfIC0+XG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgQnl0ZXMubGVuZ3RoIHNcbiAgICB0aGVuIChpbmNyIGNvdW50OyBTb21lIChCeXRlcy5nZXQgcyBjKSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2NoYW5uZWwgaWMgPVxuICBTb21lIHtjb3VudCA9IDA7XG4gICAgICAgIGRhdGEgPSBTYnVmZmlvIHtpYyA9IGljOyBidWZmID0gQnl0ZXMuY3JlYXRlIDQwOTY7IGxlbiA9IDA7IGluZCA9IDB9fVxuXG5cbigqIFN0cmVhbSBleHByZXNzaW9ucyBidWlsZGVycyAqKVxuXG5sZXQgaWFwcCBpIHMgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTYXBwIChkYXRhIGksIGRhdGEgcyl9XG5sZXQgaWNvbnMgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2NvbnMgKGksIGRhdGEgcyl9XG5sZXQgaXNpbmcgaSA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBTZW1wdHkpfVxuXG5sZXQgbGFwcCBmIHMgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTbGF6eSAobGF6eShTYXBwIChkYXRhIChmICgpKSwgZGF0YSBzKSkpfVxuXG5sZXQgbGNvbnMgZiBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIGRhdGEgcykpKX1cbmxldCBsc2luZyBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2NvbnMgKGYgKCksIFNlbXB0eSkpKX1cblxubGV0IHNlbXB0eSA9IE5vbmVcbmxldCBzbGF6eSBmID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoZGF0YSAoZiAoKSkpKX1cblxuKCogRm9yIGRlYnVnZ2luZyB1c2UgKilcblxubGV0IHJlYyBkdW1wIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IHQgLT4gdW5pdCA9IGZ1biBmIHMgLT5cbiAgcHJpbnRfc3RyaW5nIFwie2NvdW50ID0gXCI7XG4gIHByaW50X2ludCAoY291bnQgcyk7XG4gIHByaW50X3N0cmluZyBcIjsgZGF0YSA9IFwiO1xuICBkdW1wX2RhdGEgZiAoZGF0YSBzKTtcbiAgcHJpbnRfc3RyaW5nIFwifVwiO1xuICBwcmludF9uZXdsaW5lICgpXG5hbmQgZHVtcF9kYXRhIDogdHlwZSB2LiAodiAtPiB1bml0KSAtPiB2IGRhdGEgLT4gdW5pdCA9IGZ1biBmIC0+XG4gIGZ1bmN0aW9uXG4gICAgU2VtcHR5IC0+IHByaW50X3N0cmluZyBcIlNlbXB0eVwiXG4gIHwgU2NvbnMgKGEsIGQpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTY29ucyAoXCI7XG4gICAgICBmIGE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDtcbiAgICAgIHByaW50X3N0cmluZyBcIilcIlxuICB8IFNhcHAgKGQxLCBkMikgLT5cbiAgICAgIHByaW50X3N0cmluZyBcIlNhcHAgKFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDE7XG4gICAgICBwcmludF9zdHJpbmcgXCIsIFwiO1xuICAgICAgZHVtcF9kYXRhIGYgZDI7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTbGF6eSBfIC0+IHByaW50X3N0cmluZyBcIlNsYXp5XCJcbiAgfCBTZ2VuIF8gLT4gcHJpbnRfc3RyaW5nIFwiU2dlblwiXG4gIHwgU2J1ZmZpbyBfIC0+IHByaW50X3N0cmluZyBcIlNidWZmaW9cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxudHlwZSB0ID1cbiB7bXV0YWJsZSBidWZmZXIgOiBieXRlcztcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgbXV0YWJsZSBsZW5ndGggOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmxlbmd0aF1cbiAgIC0gW2IubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuYnVmZmVyXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHtidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0IHNyYy5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGIuYnVmZmVyIDwtIGIuaW5pdGlhbF9idWZmZXI7XG4gIGIubGVuZ3RoIDwtIEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5idWZmZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5sZW5ndGhdLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBhZnRlciBbcmVzaXplIGIgbW9yZV0gaXMgY2FsbGVkLCBhIGRpcmVjdCBhY2Nlc3Mgb2ZcbiAgIHNpemUgW21vcmVdIGF0IFtiLnBvc2l0aW9uXSB3aWxsIGFsd2F5cyBiZSBpbi1ib3VuZHMsIHNvIHRoYXRcbiAgICh1bnNhZmVfe2dldCxzZXR9KSBtYXkgYmUgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW47XG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGgpO1xuICBhc3NlcnQgKG9sZF9wb3MgKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgKClcbiAgKCogTm90ZTogdGhlcmUgYXJlIHZhcmlvdXMgc2l0dWF0aW9ucyAocHJlZW1wdGl2ZSB0aHJlYWRzLCBzaWduYWxzIGFuZFxuICAgICBnYyBmaW5hbGl6ZXJzKSB3aGVyZSBPQ2FtbCBjb2RlIG1heSBiZSBydW4gYXN5bmNocm9ub3VzbHk7IGluXG4gICAgIHBhcnRpY3VsYXIsIHRoZXJlIG1heSBiZSBhIHJhY2Ugd2l0aCBhbm90aGVyIHVzZXIgb2YgW2JdLCBjaGFuZ2luZ1xuICAgICBpdHMgbXV0YWJsZSBmaWVsZHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgW3Jlc2l6ZV0gY2FsbC4gVGhlIEJ1ZmZlclxuICAgICBtb2R1bGUgZG9lcyBub3QgcHJvdmlkZSBhbnkgY29ycmVjdG5lc3MgZ3VhcmFudGVlIGlmIHRoYXQgaGFwcGVucyxcbiAgICAgYnV0IHdlIG11c3Qgc3RpbGwgZW5zdXJlIHRoYXQgdGhlIGRhdGFzdHJ1Y3R1cmUgaW52YXJpYW50cyBob2xkIGZvclxuICAgICBtZW1vcnktc2FmZXR5IC0tIGFzIHdlIHBsYW4gdG8gdXNlIFt1bnNhZmVfe2dldCxzZXR9XS5cblxuICAgICBUaGVyZSBhcmUgdHdvIHBvdGVudGlhbCBhbGxvY2F0aW9uIHBvaW50cyBpbiB0aGlzIGZ1bmN0aW9uLFxuICAgICBbcmVmXSBhbmQgW0J5dGVzLmNyZWF0ZV0sIGJ1dCBhbGwgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgZmllbGRzXG4gICAgIG9mIFtiXSBoYXBwZW4gYmVmb3JlIGJvdGggb2YgdGhlbSBvciBhZnRlciBib3RoIG9mIHRoZW0uXG5cbiAgICAgV2UgdGhlcmVmb3JlIGFzc3VtZSB0aGF0IFtiLnBvc2l0aW9uXSBtYXkgY2hhbmdlIGF0IHRoZXNlIGFsbG9jYXRpb25zLFxuICAgICBhbmQgY2hlY2sgdGhhdCB0aGUgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBwb3N0Y29uZGl0aW9uXG4gICAgIGhvbGRzIGZvciBib3RoIHZhbHVlcyBvZiBbYi5wb3NpdGlvbl0sIGJlZm9yZSBvciBhZnRlciB0aGUgZnVuY3Rpb25cbiAgICAgaXMgY2FsbGVkLiBNb3JlIHByZWNpc2VseSwgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZCBpZiB0aGVcbiAgICAgZnVuY3Rpb24gcmV0dXJucyBjb3JyZWN0bHksIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBidWZmZXIgaW52YXJpYW50czpcbiAgICAgLSBbb2xkKGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtuZXcoYi5wb3NpdGlvbikgKyBtb3JlIDw9IG5ldyhiLmxlbmd0aCldXG4gICAgIC0gW29sZChiLmxlbmd0aCkgPD0gbmV3KGIubGVuZ3RoKV1cblxuICAgICBOb3RlOiBbYi5wb3NpdGlvbiArIG1vcmUgPD0gb2xkKGIubGVuZ3RoKV0gZG9lcyAqbm90KlxuICAgICBob2xkIGluIGdlbmVyYWwsIGFzIGl0IGlzIHByZWNpc2VseSB0aGUgY2FzZSB3aGVyZSB5b3UgbmVlZFxuICAgICB0byBjYWxsIFtyZXNpemVdIHRvIGluY3JlYXNlIFtiLmxlbmd0aF0uXG5cbiAgICAgTm90ZTogW2Fzc2VydF0gYWJvdmUgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGtub3cgdGhlIGNvbmRpdGlvbnNcbiAgICAgYWx3YXlzIGhvbGQsIGJ1dCB0aGF0IHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIGNvcnJlY3RseVxuICAgICBvbmx5IGlmIHRoZXkgaG9sZC5cblxuICAgICBOb3RlOiB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIGRvZXMgbm90IG5lZWRcbiAgICAgdG8gYmUgY2hlY2tlZCB3aXRoIHRoaXMgbGV2ZWwgb2Ygc2NydXRpbnksIGdpdmVuIHRoYXQgdGhleVxuICAgICByZWFkL3dyaXRlIHRoZSBidWZmZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgY2hlY2tpbmcgdGhhdFxuICAgICBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGQgb3IgY2FsbGluZyBbcmVzaXplXS5cbiAgKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgMCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gICgqIFRoZSBhc3NlcnRpb24gYmVsb3cgbWF5IGZhaWwgaW4gd2VpcmQgc2NlbmFyaW8gd2hlcmVcbiAgICAgdGhyZWFkZWQvZmluYWxpemVyIGNvZGUsIHJ1biBhc3luY2hyb25vdXNseSBkdXJpbmcgdGhlXG4gICAgIFtyZWFsbHlfaW5wdXRfdXBfdG9dIGNhbGwsIHJhY2VzIG9uIHRoZSBidWZmZXI7IHdlIGRvbid0IGVuc3VyZVxuICAgICBjb3JyZWN0bmVzcyBpbiB0aGlzIGNhc2UsIGJ1dCBuZWVkIHRvIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIGZvclxuICAgICBtZW1vcnktc2FmZXR5IChzZWUgZGlzY3Vzc2lvbiBvZiBbcmVzaXplXSkuICopXG4gIGFzc2VydCAoYi5wb3NpdGlvbiArIG4gPD0gYi5sZW5ndGgpO1xuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICB1bnNhZmVfc2V0X2ludDggYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gIHVuc2FmZV9zZXRfaW50MTYgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gIHVuc2FmZV9zZXRfaW50MzIgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDg7XG4gIHVuc2FmZV9zZXRfaW50NjQgYi5idWZmZXIgYi5wb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgICAgIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAgICAgY29uc3RydWN0b3IgXiAoZmllbGRzIHgpXG5cbmxldCB0b19zdHJpbmcgZSA9XG4gIG1hdGNoIHVzZV9wcmludGVycyBlIHdpdGhcbiAgfCBTb21lIHMgLT4gc1xuICB8IE5vbmUgLT4gdG9fc3RyaW5nX2RlZmF1bHQgZVxuXG5sZXQgcHJpbnQgZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGZsdXNoIHN0ZGVycjtcbiAgICByYWlzZSB4XG5cbmxldCBjYXRjaCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBmbHVzaCBzdGRvdXQ7XG4gICAgZXByaW50ZiBcIlVuY2F1Z2h0IGV4Y2VwdGlvbjogJXNcXG5cIiAodG9fc3RyaW5nIHgpO1xuICAgIGV4aXQgMlxuXG50eXBlIHJhd19iYWNrdHJhY2Vfc2xvdFxudHlwZSByYXdfYmFja3RyYWNlX2VudHJ5ID0gcHJpdmF0ZSBpbnRcbnR5cGUgcmF3X2JhY2t0cmFjZSA9IHJhd19iYWNrdHJhY2VfZW50cnkgYXJyYXlcblxubGV0IHJhd19iYWNrdHJhY2VfZW50cmllcyBidCA9IGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlOlxuICB1bml0IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlXCJcblxuZXh0ZXJuYWwgcmFpc2Vfd2l0aF9iYWNrdHJhY2U6IGV4biAtPiByYXdfYmFja3RyYWNlIC0+ICdhXG4gID0gXCIlcmFpc2Vfd2l0aF9iYWNrdHJhY2VcIlxuXG50eXBlIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgICA6IHN0cmluZztcbiAgICAgIGxpbmVfbnVtYmVyIDogaW50O1xuICAgICAgc3RhcnRfY2hhciAgOiBpbnQ7XG4gICAgICBlbmRfY2hhciAgICA6IGludDtcbiAgICAgIGlzX2lubGluZSAgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgIDogc3RyaW5nO1xuICAgIH1cbiAgfCBVbmtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlIDogYm9vbFxuICAgIH1cblxuKCogdG8gYXZvaWQgd2FybmluZyAqKVxubGV0IF8gPSBbS25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlOyBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gMDsgc3RhcnRfY2hhciA9IDA7IGVuZF9jaGFyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5saW5lID0gZmFsc2U7IGRlZm5hbWUgPSBcIlwiIH07XG4gICAgICAgICBVbmtub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZSB9XVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgIChpbmZvIGwuaXNfcmFpc2UpIGwuZGVmbmFtZSBsLmZpbGVuYW1lXG4gICAgICAgICAgICAgIChpZiBsLmlzX2lubGluZSB0aGVuIFwiIChpbmxpbmVkKVwiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgbC5saW5lX251bWJlciBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5saW5lX251bWJlcjtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9jaGFyO1xuICAgIH1cblxubGV0IGJhY2t0cmFjZV9zbG90X2RlZm5hbWUgPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gX1xuICB8IEtub3duX2xvY2F0aW9uIHsgZGVmbmFtZSA9IFwiXCIgfSAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBTb21lIGwuZGVmbmFtZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzIHJhd19iYWNrdHJhY2UgPVxuICAoKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCBTb21lIGlzXG4gICAgIHJldHVybmVkIG9ubHkgaWYgYSBwYXJ0IG9mIHRoZSB0cmFjZSBpcyB1c2FibGUuIFRoaXMgZ2l2ZXMgdXNcbiAgICAgYSBiaXQgbW9yZSB3b3JrIHRoYW4ganVzdCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UsIGJ1dCBpdCBtYWtlcyB0aGVcbiAgICAgQVBJIG1vcmUgdXNlci1mcmllbmRseSAtLSBvdGhlcndpc2UgbW9zdCB1c2VycyB3b3VsZCBoYXZlIHRvXG4gICAgIHJlaW1wbGVtZW50IHRoZSBcIlByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBzb3JyeVwiIGxvZ2ljXG4gICAgIHRoZW1zZWx2ZXMuICopXG4gIG1hdGNoIGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBiYWNrdHJhY2UgLT5cbiAgICAgIGxldCB1c2FibGVfc2xvdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG4gICAgICAgIHwgS25vd25fbG9jYXRpb24gXyAtPiB0cnVlIGluXG4gICAgICBsZXQgcmVjIGV4aXN0c191c2FibGUgPSBmdW5jdGlvblxuICAgICAgICB8ICgtMSkgLT4gZmFsc2VcbiAgICAgICAgfCBpIC0+IHVzYWJsZV9zbG90IGJhY2t0cmFjZS4oaSkgfHwgZXhpc3RzX3VzYWJsZSAoaSAtIDEpIGluXG4gICAgICBpZiBleGlzdHNfdXNhYmxlIChBcnJheS5sZW5ndGggYmFja3RyYWNlIC0gMSlcbiAgICAgIHRoZW4gU29tZSBiYWNrdHJhY2VcbiAgICAgIGVsc2UgTm9uZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSBlbnRyeSA9XG4gIGJhY2t0cmFjZV9zbG90cyBbfCBlbnRyeSB8XVxuXG5tb2R1bGUgU2xvdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBiYWNrdHJhY2Vfc2xvdFxuICBsZXQgZm9ybWF0ID0gZm9ybWF0X2JhY2t0cmFjZV9zbG90XG4gIGxldCBpc19yYWlzZSA9IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlXG4gIGxldCBpc19pbmxpbmUgPSBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmVcbiAgbGV0IGxvY2F0aW9uID0gYmFja3RyYWNlX3Nsb3RfbG9jYXRpb25cbiAgbGV0IG5hbWUgPSBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lXG5lbmRcblxubGV0IHJhd19iYWNrdHJhY2VfbGVuZ3RoIGJ0ID0gQXJyYXkubGVuZ3RoIGJ0XG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX3Nsb3QgOlxuICByYXdfYmFja3RyYWNlIC0+IGludCAtPiByYXdfYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCBvcHRpb25cbiAgPSBcImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcIlxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDpcbiAgIHJldHVybnMgdGhlICpzdHJpbmcqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IGdldF9iYWNrdHJhY2UgKCkgPSByYXdfYmFja3RyYWNlX3RvX3N0cmluZyAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmV4dGVybmFsIHJlY29yZF9iYWNrdHJhY2U6IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9yZWNvcmRfYmFja3RyYWNlXCJcbmV4dGVybmFsIGJhY2t0cmFjZV9zdGF0dXM6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXCJcblxubGV0IHJlYyByZWdpc3Rlcl9wcmludGVyIGZuID1cbiAgbGV0IG9sZF9wcmludGVycyA9IEF0b21pYy5nZXQgcHJpbnRlcnMgaW5cbiAgbGV0IG5ld19wcmludGVycyA9IGZuIDo6IG9sZF9wcmludGVycyBpblxuICBsZXQgc3VjY2VzcyA9IEF0b21pYy5jb21wYXJlX2FuZF9zZXQgcHJpbnRlcnMgb2xkX3ByaW50ZXJzIG5ld19wcmludGVycyBpblxuICBpZiBub3Qgc3VjY2VzcyB0aGVuIHJlZ2lzdGVyX3ByaW50ZXIgZm5cblxuZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjazogaW50IC0+IHJhd19iYWNrdHJhY2UgPSBcImNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrXCJcblxubGV0IGV4bl9zbG90IHggPVxuICBsZXQgeCA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLnRhZyB4ID0gMCB0aGVuIE9iai5maWVsZCB4IDAgZWxzZSB4XG5cbmxldCBleG5fc2xvdF9pZCB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAxKSA6IGludClcblxubGV0IGV4bl9zbG90X25hbWUgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMCkgOiBzdHJpbmcpXG5cbmV4dGVybmFsIGdldF9kZWJ1Z19pbmZvX3N0YXR1cyA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzXCJcblxuKCogRGVzY3JpcHRpb25zIGZvciBlcnJvcnMgaW4gc3RhcnR1cC5oLiBTZWUgYWxzbyBiYWNrdHJhY2UuYyAqKVxubGV0IGVycm9ycyA9IFt8IFwiXCI7XG4gICgqIEZJTEVfTk9UX0ZPVU5EICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBub3QgZm91bmQpXCI7XG4gICgqIEJBRF9CWVRFQ09ERSAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgYXBwZWFycyB0byBiZSBjb3JydXB0KVwiO1xuICAoKiBXUk9OR19NQUdJQyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgaGFzIHdyb25nIG1hZ2ljIG51bWJlcilcIjtcbiAgKCogTk9fRkRTICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBjYW5ub3QgYmUgb3BlbmVkO1xcbiBcXFxuICAgICAgLS0gdG9vIG1hbnkgb3BlbiBmaWxlcy4gVHJ5IHJ1bm5pbmcgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MilcIlxufF1cblxubGV0IGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2UgPVxuICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgbGV0IHN0YXR1cyA9IGdldF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSBpblxuICBpZiBzdGF0dXMgPCAwIHRoZW5cbiAgICBwcmVycl9lbmRsaW5lIGVycm9ycy4oYWJzIHN0YXR1cyk7XG4gIGZsdXNoIHN0ZGVyclxuXG5sZXQgdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgPSByZWYgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlclxuXG5sZXQgc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGZuID0gdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgOj0gZm5cblxubGV0IGVtcHR5X2JhY2t0cmFjZSA6IHJhd19iYWNrdHJhY2UgPSBbfCB8XVxuXG5sZXQgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpID1cbiAgdHJ5XG4gICAgZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgd2l0aCBfICgqIE91dF9vZl9tZW1vcnk/ICopIC0+XG4gICAgZW1wdHlfYmFja3RyYWNlXG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgKCogR2V0IHRoZSBiYWNrdHJhY2Ugbm93LCBpbiBjYXNlIG9uZSBvZiB0aGUgW2F0X2V4aXRdIGZ1bmN0aW9uXG4gICAgICAgZGVzdHJveXMgaXQuICopXG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPVxuICAgICAgaWYgZGVidWdnZXJfaW5fdXNlICgqIFNhbWUgdGVzdCBhcyBpbiBbcnVudGltZS9wcmludGV4Yy5jXSAqKSB0aGVuXG4gICAgICAgIGVtcHR5X2JhY2t0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKClcbiAgICBpblxuICAgICh0cnkgU3RkbGliLmRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICB0cnlcbiAgICAgICF1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZVxuICAgIHdpdGggZXhuJyAtPlxuICAgICAgbGV0IHJhd19iYWNrdHJhY2UnID0gdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiAlc1xcblwiICh0b19zdHJpbmcgZXhuKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gICAgICBlcHJpbnRmIFwiRmF0YWwgZXJyb3IgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXI6IGV4Y2VwdGlvbiAlc1xcblwiXG4gICAgICAgICh0b19zdHJpbmcgZXhuJyk7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlJztcbiAgICAgIGZsdXNoIHN0ZGVyclxuICB3aXRoXG4gICAgfCBPdXRfb2ZfbWVtb3J5IC0+XG4gICAgICAgIHByZXJyX2VuZGxpbmVcbiAgICAgICAgICBcIkZhdGFsIGVycm9yOiBvdXQgb2YgbWVtb3J5IGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyXCJcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgW2NhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXSBpblxuICAgW3J1bnRpbWUvcHJpbnRleGMuY10gd2hpY2ggZXhwZWN0cyBubyBleGNlcHRpb24gaXMgcmFpc2VkLiAqKVxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24gZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2VcbiAgd2l0aCBfIC0+XG4gICAgKCogVGhlcmUgaXMgbm90IG11Y2ggd2UgY2FuIGRvIGF0IHRoaXMgcG9pbnQgKilcbiAgICAoKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCJcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5sZXQgY29uc3QgYyBfID0gY1xubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSB2ZXJib3NlIDogaW50O1xuICBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludDtcbiAgbXV0YWJsZSBzdGFja19saW1pdCA6IGludDtcbiAgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5leHRlcm5hbCBnZXRfYnVja2V0IDogaW50IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfYnVja2V0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGdldF9jcmVkaXQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWFqb3JfY3JlZGl0XCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGh1Z2VfZmFsbGJhY2tfY291bnQgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XCJcbmV4dGVybmFsIGV2ZW50bG9nX3BhdXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2V2ZW50bG9nX3BhdXNlXCJcbmV4dGVybmFsIGV2ZW50bG9nX3Jlc3VtZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19yZXN1bWVcIlxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgcmVmXG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiAhKGFyZWMuYWN0aXZlKSB0aGVuIGJlZ2luXG4gICAgZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjO1xuICAgIGFyZWMuZiAoKTtcbiAgZW5kXG5cblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IHJlZiB0cnVlOyBmID0gZiB9IGluXG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBhIDo9IGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvclxuICAgVGhpcyBpcyBhIGxhZ2dlZC1GaWJvbmFjY2kgRig1NSwgMjQsICspIHdpdGggYSBtb2RpZmllZCBhZGRpdGlvblxuICAgZnVuY3Rpb24gdG8gZW5oYW5jZSB0aGUgbWl4aW5nIG9mIGJpdHMuXG4gICBJZiB3ZSB1c2Ugbm9ybWFsIGFkZGl0aW9uLCB0aGUgbG93LW9yZGVyIGJpdCBmYWlscyB0ZXN0cyAxIGFuZCA3XG4gICBvZiB0aGUgRGllaGFyZCB0ZXN0IHN1aXRlLCBhbmQgYml0cyAxIGFuZCAyIGFsc28gZmFpbCB0ZXN0IDcuXG4gICBJZiB3ZSB1c2UgbXVsdGlwbGljYXRpb24gYXMgc3VnZ2VzdGVkIGJ5IE1hcnNhZ2xpYSwgaXQgZG9lc24ndCBmYXJlXG4gICBtdWNoIGJldHRlci5cbiAgIEJ5IG1peGluZyB0aGUgYml0cyBvZiBvbmUgb2YgdGhlIG51bWJlcnMgYmVmb3JlIGFkZGl0aW9uIChYT1IgdGhlXG4gICA1IGhpZ2gtb3JkZXIgYml0cyBpbnRvIHRoZSBsb3ctb3JkZXIgYml0cyksIHdlIGdldCBhIGdlbmVyYXRvciB0aGF0XG4gICBwYXNzZXMgYWxsIHRoZSBEaWVoYXJkIHRlc3RzLlxuKilcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQ6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHsgc3QgOiBpbnQgYXJyYXk7IG11dGFibGUgaWR4IDogaW50IH1cblxuICBsZXQgbmV3X3N0YXRlICgpID0geyBzdCA9IEFycmF5Lm1ha2UgNTUgMDsgaWR4ID0gMCB9XG4gIGxldCBhc3NpZ24gc3QxIHN0MiA9XG4gICAgQXJyYXkuYmxpdCBzdDIuc3QgMCBzdDEuc3QgMCA1NTtcbiAgICBzdDEuaWR4IDwtIHN0Mi5pZHhcblxuXG4gIGxldCBmdWxsX2luaXQgcyBzZWVkID1cbiAgICBsZXQgY29tYmluZSBhY2N1IHggPSBEaWdlc3Quc3RyaW5nIChhY2N1IF4gSW50LnRvX3N0cmluZyB4KSBpblxuICAgIGxldCBleHRyYWN0IGQgPVxuICAgICAgQ2hhci5jb2RlIGQuWzBdICsgKENoYXIuY29kZSBkLlsxXSBsc2wgOCkgKyAoQ2hhci5jb2RlIGQuWzJdIGxzbCAxNilcbiAgICAgICsgKENoYXIuY29kZSBkLlszXSBsc2wgMjQpXG4gICAgaW5cbiAgICBsZXQgc2VlZCA9IGlmIEFycmF5Lmxlbmd0aCBzZWVkID0gMCB0aGVuIFt8IDAgfF0gZWxzZSBzZWVkIGluXG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGZvciBpID0gMCB0byA1NCBkb1xuICAgICAgcy5zdC4oaSkgPC0gaTtcbiAgICBkb25lO1xuICAgIGxldCBhY2N1ID0gcmVmIFwieFwiIGluXG4gICAgZm9yIGkgPSAwIHRvIDU0ICsgSW50Lm1heCA1NSBsIGRvXG4gICAgICBsZXQgaiA9IGkgbW9kIDU1IGluXG4gICAgICBsZXQgayA9IGkgbW9kIGwgaW5cbiAgICAgIGFjY3UgOj0gY29tYmluZSAhYWNjdSBzZWVkLihrKTtcbiAgICAgIHMuc3QuKGopIDwtIChzLnN0LihqKSBseG9yIGV4dHJhY3QgIWFjY3UpIGxhbmQgMHgzRkZGRkZGRjsgICgqIFBSIzU1NzUgKilcbiAgICBkb25lO1xuICAgIHMuaWR4IDwtIDBcblxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCByZXN1bHQgPSBuZXdfc3RhdGUgKCkgaW5cbiAgICBmdWxsX2luaXQgcmVzdWx0IHNlZWQ7XG4gICAgcmVzdWx0XG5cblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPSBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgYXNzaWduIHJlc3VsdCBzO1xuICAgIHJlc3VsdFxuXG5cbiAgKCogUmV0dXJucyAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgcy5pZHggPC0gKHMuaWR4ICsgMSkgbW9kIDU1O1xuICAgIGxldCBjdXJ2YWwgPSBzLnN0LihzLmlkeCkgaW5cbiAgICBsZXQgbmV3dmFsID0gcy5zdC4oKHMuaWR4ICsgMjQpIG1vZCA1NSlcbiAgICAgICAgICAgICAgICAgKyAoY3VydmFsIGx4b3IgKChjdXJ2YWwgbHNyIDI1KSBsYW5kIDB4MUYpKSBpblxuICAgIGxldCBuZXd2YWwzMCA9IG5ld3ZhbCBsYW5kIDB4M0ZGRkZGRkYgaW4gICgqIFBSIzU1NzUgKilcbiAgICBzLnN0LihzLmlkeCkgPC0gbmV3dmFsMzA7XG4gICAgbmV3dmFsMzBcblxuXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgbGV0IHJlYyBpbnQ2M2F1eCBzIG4gPVxuICAgIGxldCBtYXhfaW50XzMyID0gKDEgbHNsIDMwKSArIDB4M0ZGRkZGRkYgaW4gKCogMHg3RkZGRkZGRiAqKVxuICAgIGxldCBiMSA9IGJpdHMgcyBpblxuICAgIGxldCBiMiA9IGJpdHMgcyBpblxuICAgIGxldCAociwgbWF4X2ludCkgPVxuICAgICAgaWYgbiA8PSBtYXhfaW50XzMyIHRoZW5cbiAgICAgICAgKCogMzEgcmFuZG9tIGJpdHMgb24gYm90aCA2NC1iaXQgT0NhbWwgYW5kIEphdmFTY3JpcHQuXG4gICAgICAgICAgIFVzZSB1cHBlciAxNSBiaXRzIG9mIGIxIGFuZCAxNiBiaXRzIG9mIGIyLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoYjIgbGFuZCAweDNGRkZDMDAwKSBsc2wgMSkgbG9yIChiMSBsc3IgMTUpKVxuICAgICAgICBpblxuICAgICAgICAgIChicG9zLCBtYXhfaW50XzMyKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYjMgPSBiaXRzIHMgaW5cbiAgICAgICAgKCogNjIgcmFuZG9tIGJpdHMgb24gNjQtYml0IE9DYW1sOyB1bnJlYWNoYWJsZSBvbiBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMjAgYml0cyBvZiBiMSBhbmQgMjEgYml0cyBvZiBiMiBhbmQgYjMuICopXG4gICAgICAgIGxldCBicG9zID1cbiAgICAgICAgICAoKCgoYjMgbGFuZCAweDNGRkZGRTAwKSBsc2wgMTIpIGxvciAoYjIgbHNyIDkpKSBsc2wgMjApXG4gICAgICAgICAgICBsb3IgKGIxIGxzciAxMClcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludClcbiAgICBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgIGlmIHIgLSB2ID4gbWF4X2ludCAtIG4gKyAxIHRoZW4gaW50NjNhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICBlbHNlIGlmIGJvdW5kID4gMHgzRkZGRkZGRiB0aGVuXG4gICAgICBpbnQ2M2F1eCBzIGJvdW5kXG4gICAgZWxzZVxuICAgICAgaW50YXV4IHMgYm91bmRcblxuXG4gIGxldCByZWMgaW50MzJhdXggcyBuID1cbiAgICBsZXQgYjEgPSBJbnQzMi5vZl9pbnQgKGJpdHMgcykgaW5cbiAgICBsZXQgYjIgPSBJbnQzMi5zaGlmdF9sZWZ0IChJbnQzMi5vZl9pbnQgKGJpdHMgcyBsYW5kIDEpKSAzMCBpblxuICAgIGxldCByID0gSW50MzIubG9nb3IgYjEgYjIgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICBpZiBJbnQzMi5zdWIgciB2ID4gSW50MzIuYWRkIChJbnQzMi5zdWIgSW50MzIubWF4X2ludCBuKSAxbFxuICAgIHRoZW4gaW50MzJhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDMyIHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMlwiXG4gICAgZWxzZSBpbnQzMmF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50NjQub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50NjQuc2hpZnRfbGVmdCAoSW50NjQub2ZfaW50IChiaXRzIHMpKSAzMCBpblxuICAgIGxldCBiMyA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzIGxhbmQgNykpIDYwIGluXG4gICAgbGV0IHIgPSBJbnQ2NC5sb2dvciBiMSAoSW50NjQubG9nb3IgYjIgYjMpIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgaWYgSW50NjQuc3ViIHIgdiA+IEludDY0LmFkZCAoSW50NjQuc3ViIEludDY0Lm1heF9pbnQgbikgMUxcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG5cbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG5cbiAgKCogUmV0dXJucyBhIGZsb2F0IDAgPD0geCA8PSAxIHdpdGggYXQgbW9zdCA2MCBiaXRzIG9mIHByZWNpc2lvbi4gKilcbiAgbGV0IHJhd2Zsb2F0IHMgPVxuICAgIGxldCBzY2FsZSA9IDEwNzM3NDE4MjQuMCAgKCogMl4zMCAqKVxuICAgIGFuZCByMSA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGFuZCByMiA9IFN0ZGxpYi5mbG9hdCAoYml0cyBzKVxuICAgIGluIChyMSAvLiBzY2FsZSArLiByMikgLy4gc2NhbGVcblxuXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gIGxldCBib29sIHMgPSAoYml0cyBzIGxhbmQgMSA9IDApXG5cbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBzdGF0ZSB5b3UgZ2V0IHdpdGggW2luaXQgMjcxODI4MThdIGFuZCB0aGVuIGFwcGx5aW5nXG4gICB0aGUgXCJsYW5kIDB4M0ZGRkZGRkZcIiBmaWx0ZXIgdG8gdGhlbS4gIFNlZSAjNTU3NSwgIzU3OTMsICM1OTc3LiAqKVxubGV0IGRlZmF1bHQgPSB7XG4gIFN0YXRlLnN0ID0gW3xcbiAgICAgIDB4M2FlMjUyMmI7IDB4MWQ4ZDQ2MzQ7IDB4MTViNGZhZDA7IDB4MThiMTRhY2U7IDB4MTJmOGEzYzQ7IDB4M2IwODZjNDc7XG4gICAgICAweDE2ZDQ2N2Q2OyAweDEwMWQ5MWM3OyAweDMyMWRmMTc3OyAweDAxNzZjMTkzOyAweDFmZjcyYmYxOyAweDFlODg5MTA5O1xuICAgICAgMHgwYjQ2NGIxODsgMHgyYjg2Yjk3YzsgMHgwODkxZGE0ODsgMHgwMzEzNzQ2MzsgMHgwODVhYzVhMTsgMHgxNWQ2MWYyZjtcbiAgICAgIDB4M2JjZWQzNTk7IDB4MjljMWMxMzI7IDB4M2E4Njc2NmU7IDB4MzY2ZDhjODY7IDB4MWY1YjYyMjI7IDB4M2NlMWI1OWY7XG4gICAgICAweDJlYmY3OGUxOyAweDI3Y2QxYjg2OyAweDI1OGYzZGMzOyAweDM4OWE4MTk0OyAweDAyZTRjNDRjOyAweDE4YzQzZjdkO1xuICAgICAgMHgwZjZlNTM0ZjsgMHgxZTdkZjM1OTsgMHgwNTVkMGI3ZTsgMHgxMGU4NGU3ZTsgMHgxMjYxOThlNDsgMHgwZTc3MjJjYjtcbiAgICAgIDB4MWNiZWRlMjg7IDB4MzM5MWI5NjQ7IDB4M2Q0MGU5MmE7IDB4MGM1OTkzM2Q7IDB4MGI4Y2QwYjc7IDB4MjRlZmZmMWM7XG4gICAgICAweDI4MDNmZGFhOyAweDA4ZWJjNzJlOyAweDBmNTIyZTMyOyAweDA1Mzk4ZWRjOyAweDIxNDRhMDRjOyAweDBhZWYzY2JkO1xuICAgICAgMHgwMWFkNDcxOTsgMHgzNWI5M2NkNjsgMHgyYTU1OWQ0ZjsgMHgxZTZmZDc2ODsgMHgyNmUyN2YzNjsgMHgxODZmMThjMztcbiAgICAgIDB4MmZiZjk2N2E7XG4gICAgfF07XG4gIFN0YXRlLmlkeCA9IDA7XG59XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyBkZWZhdWx0XG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IGRlZmF1bHQgYm91bmRcbmxldCBmdWxsX2ludCBib3VuZCA9IFN0YXRlLmZ1bGxfaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIGRlZmF1bHQgYm91bmRcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgZGVmYXVsdCBib3VuZFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgZGVmYXVsdCBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgZGVmYXVsdCBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIGRlZmF1bHRcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IGRlZmF1bHQgc2VlZFxubGV0IGluaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgZGVmYXVsdFxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIGRlZmF1bHQgc1xuXG4oKioqKioqKioqKioqKioqKioqKipcblxuKCogVGVzdCBmdW5jdGlvbnMuICBOb3QgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICBUaGUgW2NoaXNxdWFyZV0gZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIG4gPiAxMHIuXG4gICBJdCByZXR1cm5zIGEgdHJpcGxlIChsb3csIGFjdHVhbCwgaGlnaCkuXG4gICBJZiBsb3cgPD0gYWN0dWFsIDw9IGhpZ2gsIHRoZSBbZ10gZnVuY3Rpb24gcGFzc2VkIHRoZSB0ZXN0LFxuICAgb3RoZXJ3aXNlIGl0IGZhaWxlZC5cblxuICBTb21lIHJlc3VsdHM6XG5cbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAgNTAwMFxuaW5pdCAyNzE4MjgxODsgY2hpc3F1YXJlIGludCAxMDAwMDAwIDEwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDEwMjRcbmluaXQgMjk5NzkyNjQzOyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDE0MTQyMTM2OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAyNDsgY2hpc3F1YXJlIGRpZmYgMTAwMDAwIDEwMjRcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZiAxMDA7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGluaXRfZGlmZjIgMTAyNDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMTQxNDIxMzY7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuaW5pdCAyOTk3OTI2NDM7IGluaXRfZGlmZjIgMTAwOyBjaGlzcXVhcmUgZGlmZjIgMTAwMDAwIDEwMFxuLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5OTcuNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg5Ljc0MDAwMDAwMDAwNTIzODcsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoNDg1OC41Nzg2NDM3NjI2OSwgNTA0NS41LCA1MTQxLjQyMTM1NjIzNzMxKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID1cbig5MzYuNzU0NDQ2Nzk2NjMyNDY1LCA5NDQuODA1OTk5OTk5OTgyMzA1LCAxMDYzLjI0NTU1MzIwMzM2NzU0KVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMTkuMTk3NDQwMDAwMDAzNTUsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTkuMzE3NzYwMDAwMDA1MzYsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwMzkuOTg0NjM5OTk5OTk1MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNTQuMzgyMDc5OTk5OTk1NzcsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgOTAuMDk2MDAwMDAwMDA1LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDk2MC4sIDEwNzYuNzg3MjAwMDAwMDA2MTIsIDEwODguKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODUuMTc2MDAwMDAwMDA2NzUyMSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjIxNjAwMDAwMDAwMDM0OTIsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4MC42MjIwMDAwMDAwMDMwMjY4LCAxMjAuKVxuXG4qKVxuXG4oKiBSZXR1cm4gdGhlIHN1bSBvZiB0aGUgc3F1YXJlcyBvZiB2W2kwLGkxWyAqKVxubGV0IHJlYyBzdW1zcSB2IGkwIGkxID1cbiAgaWYgaTAgPj0gaTEgdGhlbiAwLjBcbiAgZWxzZSBpZiBpMSA9IGkwICsgMSB0aGVuIFN0ZGxpYi5mbG9hdCB2LihpMCkgKi4gU3RkbGliLmZsb2F0IHYuKGkwKVxuICBlbHNlIHN1bXNxIHYgaTAgKChpMCtpMSkvMikgKy4gc3Vtc3EgdiAoKGkwK2kxKS8yKSBpMVxuXG5cbmxldCBjaGlzcXVhcmUgZyBuIHIgPVxuICBpZiBuIDw9IDEwICogciB0aGVuIGludmFsaWRfYXJnIFwiY2hpc3F1YXJlXCI7XG4gIGxldCBmID0gQXJyYXkubWFrZSByIDAgaW5cbiAgZm9yIGkgPSAxIHRvIG4gZG9cbiAgICBsZXQgdCA9IGcgciBpblxuICAgIGYuKHQpIDwtIGYuKHQpICsgMVxuICBkb25lO1xuICBsZXQgdCA9IHN1bXNxIGYgMCByXG4gIGFuZCByID0gU3RkbGliLmZsb2F0IHJcbiAgYW5kIG4gPSBTdGRsaWIuZmxvYXQgbiBpblxuICBsZXQgc3IgPSAyLjAgKi4gc3FydCByIGluXG4gIChyIC0uIHNyLCAgIChyICouIHQgLy4gbikgLS4gbiwgICByICsuIHNyKVxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgbGluZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tIG51bWJlcnMuXG4qKVxubGV0IHN0ID0gcmVmIDBcbmxldCBpbml0X2RpZmYgciA9IHN0IDo9IGludCByXG5sZXQgZGlmZiByID1cbiAgbGV0IHgxID0gIXN0XG4gIGFuZCB4MiA9IGludCByXG4gIGluXG4gIHN0IDo9IHgyO1xuICBpZiB4MSA+PSB4MiB0aGVuXG4gICAgeDEgLSB4MlxuICBlbHNlXG4gICAgciArIHgxIC0geDJcblxuXG5sZXQgc3QxID0gcmVmIDBcbmFuZCBzdDIgPSByZWYgMFxuXG5cbigqIFRoaXMgaXMgdG8gdGVzdCBmb3IgcXVhZHJhdGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgcmFuZG9tXG4gICBudW1iZXJzLlxuKilcbmxldCBpbml0X2RpZmYyIHIgPSBzdDEgOj0gaW50IHI7IHN0MiA6PSBpbnQgclxubGV0IGRpZmYyIHIgPVxuICBsZXQgeDEgPSAhc3QxXG4gIGFuZCB4MiA9ICFzdDJcbiAgYW5kIHgzID0gaW50IHJcbiAgaW5cbiAgc3QxIDo9IHgyO1xuICBzdDIgOj0geDM7XG4gICh4MyAtIHgyIC0geDIgKyB4MSArIDIqcikgbW9kIHJcblxuXG4qKioqKioqKioqKioqKioqKioqKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiBidWNrZXRzIGJlY29tZSB0b28gbG9uZy4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gcmVmIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gcmFuZG9taXplZCA6PSB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9ICFyYW5kb21pemVkXG5cbmxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILmhhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbigqIFBvbHltb3JwaGljIGhhc2ggZnVuY3Rpb24tYmFzZWQgdGFibGVzICopXG4oKiBDb2RlIGluY2x1ZGVkIGJlbG93IHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSB0byBndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWxcbiAgIHVzZSAtIHNlZSAjMjIwMiAqKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cblxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbmxldCBoYXNoX3BhcmFtIG4xIG4yIHggPSBzZWVkZWRfaGFzaF9wYXJhbSBuMSBuMiAwIHhcbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5cbmxldCBrZXlfaW5kZXggaCBrZXkgPVxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNFxuICB0aGVuIChzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJIYXNodGJsOiB1bnN1cHBvcnRlZCBoYXNoIHRhYmxlIGZvcm1hdFwiXG5cbmxldCBhZGQgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxubGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgICgpXG4gIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgZW5kXG4gICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxubGV0IHJlbW92ZSBoIGtleSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbmxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbmxldCBmaW5kIGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG5sZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBOb25lXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsgPSAwIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbmxldCBmaW5kX29wdCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbmxldCBmaW5kX2FsbCBoIGtleSA9XG4gIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCBtZW0gaCBrZXkgPVxuICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgbWVtX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9ICFyYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZylcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG4oKiogbnVtYmVyIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGluIGEgd2VhayBwb2ludGVyICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIHN0YXRzIDogdCAtPiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnQgKiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSCA6IEhhc2h0YmwuSGFzaGVkVHlwZSkgOiAoUyB3aXRoIHR5cGUgZGF0YSA9IEgudCkgPSBzdHJ1Y3RcblxuICB0eXBlICdhIHdlYWtfdCA9ICdhIHRcbiAgbGV0IHdlYWtfY3JlYXRlID0gY3JlYXRlXG4gIGxldCBlbXB0eWJ1Y2tldCA9IHdlYWtfY3JlYXRlIDBcblxuICB0eXBlIGRhdGEgPSBILnRcblxuICB0eXBlIHQgPSB7XG4gICAgbXV0YWJsZSB0YWJsZSA6IGRhdGEgd2Vha190IGFycmF5O1xuICAgIG11dGFibGUgaGFzaGVzIDogaW50IGFycmF5IGFycmF5O1xuICAgIG11dGFibGUgbGltaXQgOiBpbnQ7ICAgICAgICAgICAgICAgKCogYnVja2V0IHNpemUgbGltaXQgKilcbiAgICBtdXRhYmxlIG92ZXJzaXplIDogaW50OyAgICAgICAgICAgICgqIG51bWJlciBvZiBvdmVyc2l6ZSBidWNrZXRzICopXG4gICAgbXV0YWJsZSByb3ZlciA6IGludDsgICAgICAgICAgICAgICAoKiBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgKilcbiAgfVxuXG4gIGxldCBnZXRfaW5kZXggdCBoID0gKGggbGFuZCBtYXhfaW50KSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG4gIGxldCBsaW1pdCA9IDdcbiAgbGV0IG92ZXJfbGltaXQgPSAyXG5cbiAgbGV0IGNyZWF0ZSBzeiA9XG4gICAgbGV0IHN6ID0gaWYgc3ogPCA3IHRoZW4gNyBlbHNlIHN6IGluXG4gICAgbGV0IHN6ID0gaWYgc3ogPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2Ugc3ogaW5cbiAgICB7XG4gICAgICB0YWJsZSA9IEFycmF5Lm1ha2Ugc3ogZW1wdHlidWNrZXQ7XG4gICAgICBoYXNoZXMgPSBBcnJheS5tYWtlIHN6IFt8IHxdO1xuICAgICAgbGltaXQgPSBsaW1pdDtcbiAgICAgIG92ZXJzaXplID0gMDtcbiAgICAgIHJvdmVyID0gMDtcbiAgICB9XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICAgIHQudGFibGUuKGkpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgdC5oYXNoZXMuKGkpIDwtIFt8IHxdO1xuICAgIGRvbmU7XG4gICAgdC5saW1pdCA8LSBsaW1pdDtcbiAgICB0Lm92ZXJzaXplIDwtIDBcblxuXG4gIGxldCBmb2xkIGYgdCBpbml0ID1cbiAgICBsZXQgcmVjIGZvbGRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiAoZiB2IGFjY3UpXG4gICAgICB8IE5vbmUgLT4gZm9sZF9idWNrZXQgKGkrMSkgYiBhY2N1XG4gICAgaW5cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChmb2xkX2J1Y2tldCAwKSB0LnRhYmxlIGluaXRcblxuXG4gIGxldCBpdGVyIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gZiB2OyBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgICB8IE5vbmUgLT4gaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgIGluXG4gICAgQXJyYXkuaXRlciAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IGl0ZXJfd2VhayBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBqIGIgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuICgpIGVsc2VcbiAgICAgIG1hdGNoIGNoZWNrIGIgaSB3aXRoXG4gICAgICB8IHRydWUgLT4gZiBiIHQuaGFzaGVzLihqKSBpOyBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICAgIHwgZmFsc2UgLT4gaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyaSAoaXRlcl9idWNrZXQgMCkgdC50YWJsZVxuXG5cbiAgbGV0IHJlYyBjb3VudF9idWNrZXQgaSBiIGFjY3UgPVxuICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiBhY2N1IGVsc2VcbiAgICBjb3VudF9idWNrZXQgKGkrMSkgYiAoYWNjdSArIChpZiBjaGVjayBiIGkgdGhlbiAxIGVsc2UgMCkpXG5cblxuICBsZXQgY291bnQgdCA9XG4gICAgQXJyYXkuZm9sZF9yaWdodCAoY291bnRfYnVja2V0IDApIHQudGFibGUgMFxuXG5cbiAgbGV0IG5leHRfc3ogbiA9IEludC5taW4gKDMgKiBuIC8gMiArIDMpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gIGxldCBwcmV2X3N6IG4gPSAoKG4gLSAzKSAqIDIgKyAyKSAvIDNcblxuICBsZXQgdGVzdF9zaHJpbmtfYnVja2V0IHQgPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLih0LnJvdmVyKSBpblxuICAgIGxldCBoYnVja2V0ID0gdC5oYXNoZXMuKHQucm92ZXIpIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcHJldl9sZW4gPSBwcmV2X3N6IGxlbiBpblxuICAgIGxldCBsaXZlID0gY291bnRfYnVja2V0IDAgYnVja2V0IDAgaW5cbiAgICBpZiBsaXZlIDw9IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgbG9vcCBpIGogPVxuICAgICAgICBpZiBqID49IHByZXZfbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGxvb3AgKGkgKyAxKSBqXG4gICAgICAgICAgZWxzZSBpZiBjaGVjayBidWNrZXQgaiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBibGl0IGJ1Y2tldCBqIGJ1Y2tldCBpIDE7XG4gICAgICAgICAgICBoYnVja2V0LihpKSA8LSBoYnVja2V0LihqKTtcbiAgICAgICAgICAgIGxvb3AgKGkgKyAxKSAoaiAtIDEpO1xuICAgICAgICAgIGVuZCBlbHNlIGxvb3AgaSAoaiAtIDEpO1xuICAgICAgICBlbmQ7XG4gICAgICBpblxuICAgICAgbG9vcCAwIChsZW5ndGggYnVja2V0IC0gMSk7XG4gICAgICBpZiBwcmV2X2xlbiA9IDAgdGhlbiBiZWdpblxuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIFt8IHxdO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIHByZXZfbGVuIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgcHJldl9sZW47XG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKHQucm92ZXIpIDwtIEFycmF5LnN1YiBoYnVja2V0IDAgcHJldl9sZW5cbiAgICAgIGVuZDtcbiAgICAgIGlmIGxlbiA+IHQubGltaXQgJiYgcHJldl9sZW4gPD0gdC5saW1pdCB0aGVuIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSAtIDE7XG4gICAgZW5kO1xuICAgIHQucm92ZXIgPC0gKHQucm92ZXIgKyAxKSBtb2QgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKVxuXG5cbiAgbGV0IHJlYyByZXNpemUgdCA9XG4gICAgbGV0IG9sZGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IG5ld2xlbiA9IG5leHRfc3ogb2xkbGVuIGluXG4gICAgaWYgbmV3bGVuID4gb2xkbGVuIHRoZW4gYmVnaW5cbiAgICAgIGxldCBuZXd0ID0gY3JlYXRlIG5ld2xlbiBpblxuICAgICAgbGV0IGFkZF93ZWFrIG9iIG9oIG9pID1cbiAgICAgICAgbGV0IHNldHRlciBuYiBuaSBfID0gYmxpdCBvYiBvaSBuYiBuaSAxIGluXG4gICAgICAgIGxldCBoID0gb2guKG9pKSBpblxuICAgICAgICBhZGRfYXV4IG5ld3Qgc2V0dGVyIE5vbmUgaCAoZ2V0X2luZGV4IG5ld3QgaCk7XG4gICAgICBpblxuICAgICAgaXRlcl93ZWFrIGFkZF93ZWFrIHQ7XG4gICAgICB0LnRhYmxlIDwtIG5ld3QudGFibGU7XG4gICAgICB0Lmhhc2hlcyA8LSBuZXd0Lmhhc2hlcztcbiAgICAgIHQubGltaXQgPC0gbmV3dC5saW1pdDtcbiAgICAgIHQub3ZlcnNpemUgPC0gbmV3dC5vdmVyc2l6ZTtcbiAgICAgIHQucm92ZXIgPC0gdC5yb3ZlciBtb2QgQXJyYXkubGVuZ3RoIG5ld3QudGFibGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHQubGltaXQgPC0gbWF4X2ludDsgICAgICAgICAgICAgKCogbWF4aW11bSBzaXplIGFscmVhZHkgcmVhY2hlZCAqKVxuICAgICAgdC5vdmVyc2l6ZSA8LSAwO1xuICAgIGVuZFxuXG4gIGFuZCBhZGRfYXV4IHQgc2V0dGVyIGQgaCBpbmRleCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmV3c3ogPVxuICAgICAgICAgIEludC5taW4gKDMgKiBzeiAvIDIgKyAzKSAoU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlcylcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmV3c3ogPD0gc3ogdGhlbiBmYWlsd2l0aCBcIldlYWsuTWFrZTogaGFzaCBidWNrZXQgY2Fubm90IGdyb3cgbW9yZVwiO1xuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgbmV3c3ogaW5cbiAgICAgICAgbGV0IG5ld2hhc2hlcyA9IEFycmF5Lm1ha2UgbmV3c3ogMCBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHN6O1xuICAgICAgICBBcnJheS5ibGl0IGhhc2hlcyAwIG5ld2hhc2hlcyAwIHN6O1xuICAgICAgICBzZXR0ZXIgbmV3YnVja2V0IHN6IGQ7XG4gICAgICAgIG5ld2hhc2hlcy4oc3opIDwtIGg7XG4gICAgICAgIHQudGFibGUuKGluZGV4KSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLihpbmRleCkgPC0gbmV3aGFzaGVzO1xuICAgICAgICBpZiBzeiA8PSB0LmxpbWl0ICYmIG5ld3N6ID4gdC5saW1pdCB0aGVuIGJlZ2luXG4gICAgICAgICAgdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplICsgMTtcbiAgICAgICAgICBmb3IgX2kgPSAwIHRvIG92ZXJfbGltaXQgZG8gdGVzdF9zaHJpbmtfYnVja2V0IHQgZG9uZTtcbiAgICAgICAgZW5kO1xuICAgICAgICBpZiB0Lm92ZXJzaXplID4gQXJyYXkubGVuZ3RoIHQudGFibGUgLyBvdmVyX2xpbWl0IHRoZW4gcmVzaXplIHQ7XG4gICAgICBlbmQgZWxzZSBpZiBjaGVjayBidWNrZXQgaSB0aGVuIGJlZ2luXG4gICAgICAgIGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0dGVyIGJ1Y2tldCBpIGQ7XG4gICAgICAgIGhhc2hlcy4oaSkgPC0gaDtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGFkZCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggKGdldF9pbmRleCB0IGgpXG5cblxuICBsZXQgZmluZF9vciB0IGQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmQgaCBpbmRleFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgbWVyZ2UgdCBkID1cbiAgICBmaW5kX29yIHQgZCAoZnVuIGggaW5kZXggLT4gYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGluZGV4OyBkKVxuXG5cbiAgbGV0IGZpbmQgdCBkID0gZmluZF9vciB0IGQgKGZ1biBfaCBfaW5kZXggLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCBmaW5kX29wdCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IGZpbmRfc2hhZG93IHQgZCBpZmZvdW5kIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kXG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGlmZm91bmQgYnVja2V0IGlcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCByZW1vdmUgdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gdyBpIC0+IHNldCB3IGkgTm9uZSkgKClcblxuXG4gIGxldCBtZW0gdCBkID0gZmluZF9zaGFkb3cgdCBkIChmdW4gX3cgX2kgLT4gdHJ1ZSkgZmFsc2VcblxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSkgYWNjdVxuICAgIGluXG4gICAgbG9vcCAwIFtdXG5cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfb3Blbl90YWcgc3RhdGUgcyA9IHBwX29wZW5fc3RhZyBzdGF0ZSAoU3RyaW5nX3RhZyBzKVxubGV0IHBwX2Nsb3NlX3RhZyBzdGF0ZSAoKSA9IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKClcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV90YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGIgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGIgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIHRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1BlcnZhc2l2ZS5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIGZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID0gZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggPSBwcF9vcGVuX2hib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdmJveCA9IHBwX29wZW5fdmJveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9odmJveCA9IHBwX29wZW5faHZib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faG92Ym94ID0gcHBfb3Blbl9ob3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fYm94ID0gcHBfb3Blbl9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX2JveCA9IHBwX2Nsb3NlX2JveCBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl90YWcgPSBwcF9vcGVuX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGFnID0gcHBfY2xvc2VfdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3N0YWcgPSBwcF9vcGVuX3N0YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3N0YWcgPSBwcF9jbG9zZV9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9hcyA9IHBwX3ByaW50X2FzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zdHJpbmcgPSBwcF9wcmludF9zdHJpbmcgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2J5dGVzID0gcHBfcHJpbnRfYnl0ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2ludCA9IHBwX3ByaW50X2ludCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmxvYXQgPSBwcF9wcmludF9mbG9hdCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY2hhciA9IHBwX3ByaW50X2NoYXIgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Jvb2wgPSBwcF9wcmludF9ib29sIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9icmVhayA9IHBwX3ByaW50X2JyZWFrIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9jdXQgPSBwcF9wcmludF9jdXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3NwYWNlID0gcHBfcHJpbnRfc3BhY2Ugc3RkX2Zvcm1hdHRlclxuYW5kIGZvcmNlX25ld2xpbmUgPSBwcF9mb3JjZV9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9mbHVzaCA9IHBwX3ByaW50X2ZsdXNoIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9uZXdsaW5lID0gcHBfcHJpbnRfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfaWZfbmV3bGluZSA9IHBwX3ByaW50X2lmX25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuXG5hbmQgb3Blbl90Ym94ID0gcHBfb3Blbl90Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV90Ym94ID0gcHBfY2xvc2VfdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGJyZWFrID0gcHBfcHJpbnRfdGJyZWFrIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF90YWIgPSBwcF9zZXRfdGFiIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF90YWIgPSBwcF9wcmludF90YWIgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21hcmdpbiA9IHBwX3NldF9tYXJnaW4gc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXhfaW5kZW50ID0gcHBfc2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2dlb21ldHJ5ID0gcHBfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBzYWZlX3NldF9nZW9tZXRyeSA9IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuYW5kIHVwZGF0ZV9nZW9tZXRyeSA9IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2JveGVzID0gcHBfc2V0X21heF9ib3hlcyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21heF9ib3hlcyA9IHBwX2dldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIG92ZXJfbWF4X2JveGVzID0gcHBfb3Zlcl9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9wcmludF90YWdzID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9wcmludF90YWdzID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF9tYXJrX3RhZ3MgPVxuICBwcF9zZXRfbWFya190YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFya190YWdzID1cbiAgcHBfZ2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgc2V0X3RhZ3MgPVxuICBwcF9zZXRfdGFncyBzdGRfZm9ybWF0dGVyXG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCByZWMgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgW3ZdIC0+IHBwX3YgcHBmIHZcbiAgfCB2IDo6IHZzIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcF92IHBwZiB2c1xuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHJlYyBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzICFsZWZ0ICghcmlnaHQgLSAhbGVmdCkpO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG5sZXQgcHBfcHJpbnRfb3B0aW9uID8obm9uZSA9IGZ1biBfICgpIC0+ICgpKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IE5vbmUgLT4gbm9uZSBwcGYgKClcbnwgU29tZSB2IC0+IHBwX3YgcHBmIHZcblxubGV0IHBwX3ByaW50X3Jlc3VsdCB+b2sgfmVycm9yIHBwZiA9IGZ1bmN0aW9uXG58IE9rIHYgLT4gb2sgcHBmIHZcbnwgRXJyb3IgZSAtPiBlcnJvciBwcGYgZVxuXG5sZXQgcHBfcHJpbnRfZWl0aGVyIH5sZWZ0IH5yaWdodCBwcGYgPSBmdW5jdGlvblxufCBFaXRoZXIuTGVmdCBsIC0+IGxlZnQgcHBmIGxcbnwgRWl0aGVyLlJpZ2h0IHIgLT4gcmlnaHQgcHBmIHJcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNvbXB1dGVfdGFnIG91dHB1dCB0YWdfYWNjID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIG91dHB1dCBwcGYgdGFnX2FjYztcbiAgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgZWxzZSBCdWZmZXIuc3ViIGJ1ZiAxIChsZW4gLSAyKVxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgRGVmaW5pbmcgY29udGludWF0aW9ucyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIG9mXG4gIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi5cblxuICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIEludGVycHJldCBhIGZvcm1hdHRpbmcgZW50aXR5IG9uIGEgZm9ybWF0dGVyLiAqKVxubGV0IG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZm10aW5nX2xpdCA9IG1hdGNoIGZtdGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfYm94IHBwZiAoKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgLT4gcHBfY2xvc2VfdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRfZm9ybWF0dGVyIGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBlcnJfZm9ybWF0dGVyIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyICgpO1xuICBwcF9wcmludF9mbHVzaCBlcnJfZm9ybWF0dGVyICgpXG5cbmxldCAoKSA9IGF0X2V4aXQgZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVyc1xuXG4oKlxuXG4gIERlcHJlY2F0ZWQgc3R1ZmYuXG5cbiopXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlXG4gICAgfm91dDpmIH5mbHVzaDpnIH5uZXdsaW5lOmggfnNwYWNlczppID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaCxcbiAgIHN0YXRlLnBwX291dF9uZXdsaW5lLCBzdGF0ZS5wcF9vdXRfc3BhY2VzKVxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBzZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IHN1YnN1bWVkIGJ5IGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAqKVxubGV0IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcblxuXG4oKiBEZXByZWNhdGVkIDogZXJyb3IgcHJvbmUgZnVuY3Rpb24sIGRvIG5vdCB1c2UgaXQuXG4gICBUaGlzIGZ1bmN0aW9uIGlzIG5laXRoZXIgY29tcG9zaXRpb25hbCBub3IgaW5jcmVtZW50YWwsIHNpbmNlIGl0IGZsdXNoZXNcbiAgIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhdCBlYWNoIGNhbGwuXG4gICBUbyBnZXQgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgZGVmaW5lIGEgZm9ybWF0dGVyIG9mIHlvdXIgb3duIHdyaXRpbmcgdG9cbiAgIHRoZSBidWZmZXIgYXJndW1lbnQsIGFzIGluXG4gICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiXG4gICB0aGVuIHVzZSB7IWZwcmludGYgcHBmfSBhcyB1c3VhbC4gKilcbmxldCBicHJpbnRmIGIgKEZvcm1hdCAoZm10LCBfKSA6ICgnYSwgZm9ybWF0dGVyLCB1bml0KSBmb3JtYXQpID1cbiAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBsZXQgayBhY2MgPSBvdXRwdXRfYWNjIHBwZiBhY2M7IHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cblxuKCogRGVwcmVjYXRlZCA6IGFsaWFzIGZvciBrc3ByaW50Zi4gKilcbmxldCBrcHJpbnRmID0ga3NwcmludGZcblxuXG5cbigqIERlcHJlY2F0ZWQgdGFnIGZ1bmN0aW9ucyAqKVxuXG50eXBlIGZvcm1hdHRlcl90YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fdGFnIDogdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV90YWcgOiB0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3RhZyA6IHRhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV90YWcgOiB0YWcgLT4gdW5pdDtcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV90YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV90YWcgPSBwY3Q7XG4gICB9ID1cbiAgbGV0IHN0cmluZ2lmeSBmIGUgPSBmdW5jdGlvbiBTdHJpbmdfdGFnIHMgLT4gZiBzIHwgXyAtPiBlIGluXG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gc3RyaW5naWZ5IG1vdCBcIlwiO1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgbWN0IFwiXCI7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHN0cmluZ2lmeSBwb3QgKCk7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBzdHJpbmdpZnkgcGN0ICgpXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgZm10ICgpID1cbiAgbGV0IGZ1bnMgPSBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuICBsZXQgbWFya19vcGVuX3RhZyBzID0gZnVucy5tYXJrX29wZW5fc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgbWFya19jbG9zZV90YWcgcyA9IGZ1bnMubWFya19jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9vcGVuX3RhZyBzID0gZnVucy5wcmludF9vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IHByaW50X2Nsb3NlX3RhZyBzID0gZnVucy5wcmludF9jbG9zZV9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIHttYXJrX29wZW5fdGFnOyBtYXJrX2Nsb3NlX3RhZzsgcHJpbnRfb3Blbl90YWc7IHByaW50X2Nsb3NlX3RhZ31cblxubGV0IHNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS5cbiAgICAgW3N0ZGliXSBpcyBlcXVpdmFsZW50IHRvIFtTY2FubmluZy5mcm9tX2NoYW5uZWwgU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgc3RkaWIgOiBpbl9jaGFubmVsXG4gICgqIEFuIGFsaWFzIGZvciBbU2NhbmYuc3RkaW5dLCB0aGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbVxuICAgICBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbiAgdmFsIG1lbW9fZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuICAoKiBPYnNvbGV0ZS4gKilcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpYl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuXG4gIGxldCBzdGRpYiA9IHN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuXG4gICgqXG4gICAgIE9ic29sZXRlOiBhIG1lbW8gW2Zyb21fY2hhbm5lbF0gdmVyc2lvbiB0byBidWlsZCBhIFtTY2FubmluZy5pbl9jaGFubmVsXVxuICAgICBzY2FubmluZyBidWZmZXIgb3V0IG9mIGEgW1N0ZGxpYi5pbl9jaGFubmVsXS5cbiAgICAgVGhpcyBmdW5jdGlvbiB3YXMgdXNlZCB0byB0cnkgdG8gcHJlc2VydmUgdGhlIHNjYW5uaW5nXG4gICAgIHNlbWFudGljcyBmb3IgdGhlIChub3cgb2Jzb2xldGUpIGZ1bmN0aW9uIFtmc2NhbmZdLlxuICAgICBHaXZlbiB0aGF0IGFsbCBzY2FubmVyIG11c3QgcmVhZCBmcm9tIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIHNjYW5uaW5nXG4gICAgIGJ1ZmZlciwgW2ZzY2FuZl0gbXVzdCByZWFkIGZyb20gb25lIVxuICAgICBNb3JlIHByZWNpc2VseSwgZ2l2ZW4gW2ljXSwgYWxsIHN1Y2Nlc3NpdmUgY2FsbHMgW2ZzY2FuZiBpY10gbXVzdCByZWFkXG4gICAgIGZyb20gdGhlIHNhbWUgc2Nhbm5pbmcgYnVmZmVyLlxuICAgICBUaGlzIG9ibGlnZWQgdGhpcyBsaWJyYXJ5IHRvIGFsbG9jYXRlZCBzY2FubmluZyBidWZmZXJzIHRoYXQgd2VyZVxuICAgICBub3QgcHJvcGVybHkgZ2FyYmFnZSBjb2xsZWN0YWJsZSwgaGVuY2UgbGVhZGluZyB0byBtZW1vcnkgbGVha3MuXG4gICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgZnJvbSBhIFtTdGRsaWIuaW5fY2hhbm5lbF0gaW5wdXQgY2hhbm5lbFxuICAgICBbaWNdLCBzaW1wbHkgZGVmaW5lIGEgW1NjYW5uaW5nLmluX2NoYW5uZWxdIGZvcm1hdHRlZCBpbnB1dCBjaGFubmVsIGFzIGluXG4gICAgIFtsZXQgaWIgPSBTY2FubmluZy5mcm9tX2NoYW5uZWwgaWNdLCB0aGVuIHVzZSBbU2NhbmYuYnNjYW5mIGliXSBhcyB1c3VhbC5cbiAgKilcbiAgbGV0IG1lbW9fZnJvbV9pYyA9XG4gICAgbGV0IG1lbW8gPSByZWYgW10gaW5cbiAgICAoZnVuIHNjYW5fY2xvc2VfaWMgaWMgLT5cbiAgICAgdHJ5IExpc3QuYXNzcSBpYyAhbWVtbyB3aXRoXG4gICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgbGV0IGliID1cbiAgICAgICAgIGZyb21faWMgc2Nhbl9jbG9zZV9pYyAoRnJvbV9jaGFubmVsIGljKSBpYyBpblxuICAgICAgIG1lbW8gOj0gKGljLCBpYikgOjogIW1lbW87XG4gICAgICAgaWIpXG5cblxuICAoKiBPYnNvbGV0ZTogc2VlIHshbWVtb19mcm9tX2ljfSBhYm92ZS4gKilcbiAgbGV0IG1lbW9fZnJvbV9jaGFubmVsID0gbWVtb19mcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbmVuZFxuXG5cbigqIEZvcm1hdHRlZCBpbnB1dCBmdW5jdGlvbnMuICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkLCAnZCkgZm9ybWF0NiAtPiAnY1xuXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxudHlwZSAnYSBrc2NhbmZfcmVzdWx0ID0gQXJncyBvZiAnYSB8IEV4YyBvZiBleG5cblxubGV0IGtzY2FuZiBpYiBlZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCB0cnkgQXJncyAobWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycykgd2l0aFxuICAgICAgfCAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSkgYXMgZXhjIC0+IEV4YyBleGNcbiAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgKG1zZyBeIFwiIGluIGZvcm1hdCBcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzdHIgXiBcIlxcXCJcIilcbiAgICB3aXRoXG4gICAgICB8IEFyZ3MgYXJncyAtPiBhcHBseSBmIGFyZ3NcbiAgICAgIHwgRXhjIGV4YyAtPiBlZiBpYiBleGNcbiAgaW5cbiAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKVxuXG5sZXQga2JzY2FuZiA9IGtzY2FuZlxubGV0IGJzY2FuZiBpYiBmbXQgPSBrYnNjYW5mIGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuXG5cbigqIERlcHJlY2F0ZWQgKilcbmxldCBrZnNjYW5mIGljIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLm1lbW9fZnJvbV9jaGFubmVsIGljKSBlZiBmbXRcbmxldCBmc2NhbmYgaWMgZm10ID0ga3NjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgc2NhbmZfYmFkX2lucHV0IGZtdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gT2JqXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKG1hZ2ljICgpIDogaXRlbSlcblxuKCoqKiogVHlwZXMgKioqKilcblxudHlwZSB0YWdcbnR5cGUgbGFiZWwgPSBpbnRcbnR5cGUgY2xvc3VyZSA9IGl0ZW1cbnR5cGUgdCA9IER1bW15QSB8IER1bW15QiB8IER1bW15QyBvZiBpbnRcbmxldCBfID0gW0R1bW15QTsgRHVtbXlCOyBEdW1teUMgMF0gKCogdG8gYXZvaWQgd2FybmluZ3MgKilcblxudHlwZSBvYmogPSB0IGFycmF5XG5leHRlcm5hbCByZXQgOiAob2JqIC0+ICdhKSAtPiBjbG9zdXJlID0gXCIlaWRlbnRpdHlcIlxuXG4oKioqKiBMYWJlbHMgKioqKilcblxubGV0IHB1YmxpY19tZXRob2RfbGFiZWwgcyA6IHRhZyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBsZXQgdGFnID0gaWYgIWFjY3UgPiAweDNGRkZGRkZGIHRoZW4gIWFjY3UgLSAoMSBsc2wgMzEpIGVsc2UgIWFjY3UgaW5cbiAgKCogUHJpbnRmLmVwcmludGYgXCIlcyA9ICVkXFxuXCIgcyB0YWc7IGZsdXNoIHN0ZGVycjsgKilcbiAgbWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IG9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBtYWdpYyBsZW47XG4gIG1ldGhvZHMuKDEpIDwtIG1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gbWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gbWFnaWMgMCB0aGVuIFtdIGVsc2UgQXJyYXkudG9fbGlzdCBhcnJcblxubGV0IG5hcnJvdyB0YWJsZSB2YXJzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgPVxuICBsZXQgdmFycyA9IHRvX2xpc3QgdmFyc1xuICBhbmQgdmlydF9tZXRocyA9IHRvX2xpc3QgdmlydF9tZXRoc1xuICBhbmQgY29uY3JfbWV0aHMgPSB0b19saXN0IGNvbmNyX21ldGhzIGluXG4gIGxldCB2aXJ0X21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSB2aXJ0X21ldGhzIGluXG4gIGxldCBjb25jcl9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgY29uY3JfbWV0aHMgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtXG4gICAgICh0YWJsZS5tZXRob2RzX2J5X25hbWUsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwsIHRhYmxlLmhpZGRlbl9tZXRocyxcbiAgICAgIHRhYmxlLnZhcnMsIHZpcnRfbWV0aF9sYWJzLCB2YXJzKVxuICAgICA6OiB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICBWYXJzLmZvbGRcbiAgICAgIChmdW4gbGFiIGluZm8gdHZhcnMgLT5cbiAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZhcnMgdGhlbiBWYXJzLmFkZCBsYWIgaW5mbyB0dmFycyBlbHNlIHR2YXJzKVxuICAgICAgdGFibGUudmFycyBWYXJzLmVtcHR5O1xuICBsZXQgYnlfbmFtZSA9IHJlZiBNZXRocy5lbXB0eSBpblxuICBsZXQgYnlfbGFiZWwgPSByZWYgTGFicy5lbXB0eSBpblxuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj1cbiAgICAgICAgICBMYWJzLmFkZCBsYWJlbFxuICAgICAgICAgICAgKHRyeSBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlKVxuICAgICAgICAgICAgIWJ5X2xhYmVsKVxuICAgIGNvbmNyX21ldGhzIGNvbmNyX21ldGhfbGFicztcbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9IExhYnMuYWRkIGxhYmVsIGZhbHNlICFieV9sYWJlbClcbiAgICB2aXJ0X21ldGhzIHZpcnRfbWV0aF9sYWJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gIWJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gIWJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhfbGFicyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBbXVxuXG5sZXQgd2lkZW4gdGFibGUgPVxuICBsZXQgKGJ5X25hbWUsIGJ5X2xhYmVsLCBzYXZlZF9oaWRkZW5fbWV0aHMsIHNhdmVkX3ZhcnMsIHZpcnRfbWV0aHMsIHZhcnMpID1cbiAgICBMaXN0LmhkIHRhYmxlLnByZXZpb3VzX3N0YXRlc1xuICBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC0gTGlzdC50bCB0YWJsZS5wcmV2aW91c19zdGF0ZXM7XG4gIHRhYmxlLnZhcnMgPC1cbiAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIHMgdiAtPiBWYXJzLmFkZCB2IChWYXJzLmZpbmQgdiB0YWJsZS52YXJzKSBzKVxuICAgICAgIHNhdmVkX3ZhcnMgdmFycztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtIGJ5X25hbWU7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aHMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgc2F2ZWRfaGlkZGVuX21ldGhzXG5cbmxldCBuZXdfc2xvdCB0YWJsZSA9XG4gIGxldCBpbmRleCA9IHRhYmxlLnNpemUgaW5cbiAgdGFibGUuc2l6ZSA8LSBpbmRleCArIDE7XG4gIGluZGV4XG5cbmxldCBuZXdfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGluZGV4ID0gbmV3X3Nsb3QgdGFibGUgaW5cbiAgICBpZiBuYW1lIDw+IFwiXCIgdGhlbiB0YWJsZS52YXJzIDwtIFZhcnMuYWRkIG5hbWUgaW5kZXggdGFibGUudmFycztcbiAgICBpbmRleFxuXG5sZXQgdG9fYXJyYXkgYXJyID1cbiAgaWYgYXJyID0gT2JqLm1hZ2ljIDAgdGhlbiBbfHxdIGVsc2UgYXJyXG5cbmxldCBuZXdfbWV0aG9kc192YXJpYWJsZXMgdGFibGUgbWV0aHMgdmFscyA9XG4gIGxldCBtZXRocyA9IHRvX2FycmF5IG1ldGhzIGluXG4gIGxldCBubWV0aHMgPSBBcnJheS5sZW5ndGggbWV0aHMgYW5kIG52YWxzID0gQXJyYXkubGVuZ3RoIHZhbHMgaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG5tZXRocyArIG52YWxzKSAwIGluXG4gIGZvciBpID0gMCB0byBubWV0aHMgLSAxIGRvXG4gICAgcmVzLihpKSA8LSBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG1ldGhzLihpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnZhbHMgLSAxIGRvXG4gICAgcmVzLihpK25tZXRocykgPC0gbmV3X3ZhcmlhYmxlIHRhYmxlIHZhbHMuKGkpXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZ2V0X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFycyB3aXRoIE5vdF9mb3VuZCAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGdldF92YXJpYWJsZXMgdGFibGUgbmFtZXMgPVxuICBBcnJheS5tYXAgKGdldF92YXJpYWJsZSB0YWJsZSkgbmFtZXNcblxubGV0IGFkZF9pbml0aWFsaXplciB0YWJsZSBmID1cbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIGY6OnRhYmxlLmluaXRpYWxpemVyc1xuXG4oKlxubW9kdWxlIEtleXMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gdGFnIGFycmF5IGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG5sZXQga2V5X21hcCA9IHJlZiBLZXlzLmVtcHR5XG5sZXQgZ2V0X2tleSB0YWdzIDogaXRlbSA9XG4gIHRyeSBtYWdpYyAoS2V5cy5maW5kIHRhZ3MgIWtleV9tYXAgOiB0YWcgYXJyYXkpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAga2V5X21hcCA6PSBLZXlzLmFkZCB0YWdzIHRhZ3MgIWtleV9tYXA7XG4gICAgbWFnaWMgdGFnc1xuKilcblxubGV0IGNyZWF0ZV90YWJsZSBwdWJsaWNfbWV0aG9kcyA9XG4gIGlmIHB1YmxpY19tZXRob2RzID09IG1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBtYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IHJlcHIgaW5pdCB8XTtcbiAgICAgbWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiByZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemVcbiAgICB0aGVuIG4gZWxzZSBuZXdfbWV0aG9kIHRhYmxlXG4gIGluXG4gIHRhYmxlLm1ldGhvZHMuKG4pIDwtIE9iai5tYWdpYyAwO1xuICBuXG5cbnR5cGUgaW1wbCA9XG4gICAgR2V0Q29uc3RcbiAgfCBHZXRWYXJcbiAgfCBHZXRFbnZcbiAgfCBHZXRNZXRoXG4gIHwgU2V0VmFyXG4gIHwgQXBwQ29uc3RcbiAgfCBBcHBWYXJcbiAgfCBBcHBFbnZcbiAgfCBBcHBNZXRoXG4gIHwgQXBwQ29uc3RDb25zdFxuICB8IEFwcENvbnN0VmFyXG4gIHwgQXBwQ29uc3RFbnZcbiAgfCBBcHBDb25zdE1ldGhcbiAgfCBBcHBWYXJDb25zdFxuICB8IEFwcEVudkNvbnN0XG4gIHwgQXBwTWV0aENvbnN0XG4gIHwgTWV0aEFwcENvbnN0XG4gIHwgTWV0aEFwcFZhclxuICB8IE1ldGhBcHBFbnZcbiAgfCBNZXRoQXBwTWV0aFxuICB8IFNlbmRDb25zdFxuICB8IFNlbmRWYXJcbiAgfCBTZW5kRW52XG4gIHwgU2VuZE1ldGhcbiAgfCBDbG9zdXJlIG9mIGNsb3N1cmVcblxubGV0IG1ldGhvZF9pbXBsIHRhYmxlIGkgYXJyID1cbiAgbGV0IG5leHQgKCkgPSBpbmNyIGk7IG1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IG1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRva2VuID1cbiAgICBLd2Qgb2Ygc3RyaW5nXG4gIHwgSWRlbnQgb2Ygc3RyaW5nXG4gIHwgSW50IG9mIGludFxuICB8IEZsb2F0IG9mIGZsb2F0XG4gIHwgU3RyaW5nIG9mIHN0cmluZ1xuICB8IENoYXIgb2YgY2hhclxuXG4oKiBUaGUgc3RyaW5nIGJ1ZmZlcmluZyBtYWNoaW5lcnkgKilcblxubGV0IGluaXRpYWxfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDMyXG5cbmxldCBidWZmZXIgPSByZWYgaW5pdGlhbF9idWZmZXJcbmxldCBidWZwb3MgPSByZWYgMFxuXG5sZXQgcmVzZXRfYnVmZmVyICgpID0gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBidWZwb3MgOj0gMFxuXG5sZXQgc3RvcmUgYyA9XG4gIGlmICFidWZwb3MgPj0gQnl0ZXMubGVuZ3RoICFidWZmZXIgdGhlbiBiZWdpblxuICAgIGxldCBuZXdidWZmZXIgPSBCeXRlcy5jcmVhdGUgKDIgKiAhYnVmcG9zKSBpblxuICAgIEJ5dGVzLmJsaXQgIWJ1ZmZlciAwIG5ld2J1ZmZlciAwICFidWZwb3M7XG4gICAgYnVmZmVyIDo9IG5ld2J1ZmZlclxuICBlbmQ7XG4gIEJ5dGVzLnNldCAhYnVmZmVyICFidWZwb3MgYztcbiAgaW5jciBidWZwb3NcblxubGV0IGdldF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgIWJ1ZmZlciAwICFidWZwb3MgaW4gYnVmZmVyIDo9IGluaXRpYWxfYnVmZmVyOyBzXG5cbigqIFRoZSBsZXhlciAqKVxuXG5sZXQgbWFrZV9sZXhlciBrZXl3b3JkcyA9XG4gIGxldCBrd2RfdGFibGUgPSBIYXNodGJsLmNyZWF0ZSAxNyBpblxuICBMaXN0Lml0ZXIgKGZ1biBzIC0+IEhhc2h0YmwuYWRkIGt3ZF90YWJsZSBzIChLd2QgcykpIGtleXdvcmRzO1xuICBsZXQgaWRlbnRfb3Jfa2V5d29yZCBpZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgaWQgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IElkZW50IGlkXG4gIGFuZCBrZXl3b3JkX29yX2Vycm9yIGMgPVxuICAgIGxldCBzID0gU3RyaW5nLm1ha2UgMSBjIGluXG4gICAgdHJ5IEhhc2h0YmwuZmluZCBrd2RfdGFibGUgcyB3aXRoXG4gICAgICBOb3RfZm91bmQgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciAoXCJJbGxlZ2FsIGNoYXJhY3RlciBcIiBeIHMpKVxuICBpblxuICBsZXQgcmVjIG5leHRfdG9rZW4gKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJyAnIHwgJ1xcMDEwJyB8ICdcXDAxMycgfCAnXFwwMDknIHwgJ1xcMDI2JyB8ICdcXDAxMicpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbmV4dF90b2tlbiBzdHJtX19cbiAgICB8IFNvbWUgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXycgfCAnXFwxOTInLi4nXFwyNTUnIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBTb21lXG4gICAgICAgICgnIScgfCAnJScgfCAnJicgfCAnJCcgfCAnIycgfCAnKycgfCAnLycgfCAnOicgfCAnPCcgfCAnPScgfCAnPicgfFxuICAgICAgICAgJz8nIHwgJ0AnIHwgJ1xcXFwnIHwgJ34nIHwgJ14nIHwgJ3wnIHwgJyonIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICdcXCcnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBjaGFyIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAnXFwnJyAtPiBTdHJlYW0uanVuayBzdHJtX187IFNvbWUgKENoYXIgYylcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lICdcXFwiJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgU29tZSAoU3RyaW5nIChzdHJpbmcgcykpXG4gICAgfCBTb21lICctJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG5lZ19udW1iZXIgc3RybV9fXG4gICAgfCBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChrZXl3b3JkX29yX2Vycm9yIGMpXG4gICAgfCBfIC0+IE5vbmVcbiAgYW5kIGlkZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCdBJy4uJ1onIHwgJ2EnLi4neicgfCAnXFwxOTInLi4nXFwyNTUnIHwgJzAnLi4nOScgfCAnXycgfCAnXFwnJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50IHNcbiAgICB8IF8gLT4gU29tZSAoaWRlbnRfb3Jfa2V5d29yZCAoZ2V0X3N0cmluZyAoKSkpXG4gIGFuZCBpZGVudDIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy0nIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHxcbiAgICAgICAgICc+JyB8ICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGlkZW50MiBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgbmVnX251bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgJy0nOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgXyAtPiBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgaWRlbnQyIHNcbiAgYW5kIG51bWJlciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IG51bWJlciBzXG4gICAgfCBTb21lICcuJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICcuJzsgZGVjaW1hbF9wYXJ0IHNcbiAgICB8IFNvbWUgKCdlJyB8ICdFJykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnRSc7IGV4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChJbnQgKGludF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGRlY2ltYWxfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnMCcuLic5JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoZ2V0X3N0cmluZyAoKSkpKVxuICBhbmQgZXhwb25lbnRfcGFydCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICgnKycgfCAnLScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IGVuZF9leHBvbmVudF9wYXJ0IHN0cm1fX1xuICBhbmQgZW5kX2V4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBlbmRfZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIHN0cmluZyAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFwiJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGdldF9zdHJpbmcgKClcbiAgICB8IFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IGMgPVxuICAgICAgICAgIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgc3RyaW5nIHNcbiAgICB8IFNvbWUgYyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBjaGFyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ1xcXFwnIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gdHJ5IGVzY2FwZSBzdHJtX18gd2l0aFxuICAgICAgICAgIFN0cmVhbS5GYWlsdXJlIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBlc2NhcGUgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnbicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxuJ1xuICAgIHwgU29tZSAncicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFxyJ1xuICAgIHwgU29tZSAndCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAnXFx0J1xuICAgIHwgU29tZSAoJzAnLi4nOScgYXMgYzEpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgYmVnaW4gbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMikgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMzKSAtPlxuICAgICAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgICAgICAgICBDaGFyLmNoclxuICAgICAgICAgICAgICAgICAgKChDaGFyLmNvZGUgYzEgLSA0OCkgKiAxMDAgKyAoQ2hhci5jb2RlIGMyIC0gNDgpICogMTAgK1xuICAgICAgICAgICAgICAgICAgICAgKENoYXIuY29kZSBjMyAtIDQ4KSlcbiAgICAgICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgXCJcIilcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBuZXh0X3Rva2VuIHNcbiAgICB8IF8gLT4gU29tZSAoa2V5d29yZF9vcl9lcnJvciAnKCcpXG4gIGFuZCBjb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJygnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbWF5YmVfbmVzdGVkX2NvbW1lbnQgc3RybV9fXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgYW5kIG1heWJlX25lc3RlZF9jb21tZW50IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJyonIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gY29tbWVudCBzOyBjb21tZW50IHNcbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9lbmRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcpJyAtPiBTdHJlYW0uanVuayBzdHJtX187ICgpXG4gICAgfCBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX2VuZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBfIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY29tbWVudCBzdHJtX19cbiAgICB8IF8gLT4gcmFpc2UgU3RyZWFtLkZhaWx1cmVcbiAgaW5cbiAgZnVuIGlucHV0IC0+IFN0cmVhbS5mcm9tIChmdW4gX2NvdW50IC0+IG5leHRfdG9rZW4gaW5wdXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNlZWRlZFNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBIYXNodGJsLlNcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBoYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGdldF9rZXk6ICdhIGNvbnRhaW5lciAtPiB0IG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IGguc2l6ZSA8LSBoLnNpemUgLSAxOyBuZXh0XG4gICAgICAgICAgICB8IEVGYWxzZSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpXG4gICAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgICAgKCogVGhlIGRlYWQga2V5IGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZC4gSXQgaXMgYWNjZXB0YWJsZVxuICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyBmdW5jdGlvbiBzaW5jZSBpdCBhbHJlYWR5IHJlbW92ZXMgYSBiaW5kaW5nICopXG4gICAgICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgcmVtb3ZlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKGhrLGMsbmV4dCkgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KSBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIHJlbW92ZV9idWNrZXQgaC5kYXRhLihpKVxuXG4gICAgKCoqIHshZmluZH0gZG9uJ3QgcmVtb3ZlIGRlYWQga2V5cyBiZWNhdXNlIGl0IHdvdWxkIGJlIHN1cnByaXNpbmcgZm9yXG4gICAgICAgIHRoZSB1c2VyIHRoYXQgYSByZWFkLW9ubHkgZnVuY3Rpb24gbXV0YXRlcyB0aGUgc3RhdGUgKGVnLiBjb25jdXJyZW50XG4gICAgICAgIGFjY2VzcykuIFNhbWUgZm9yIHshaXRlcn0sIHshZm9sZH0sIHshbWVtfS5cbiAgICAqKVxuICAgIGxldCByZWMgZmluZF9yZWMga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBbXVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+IGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkOjpmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpXG5cblxuICAgIGxldCByZXBsYWNlIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGl0ZXIgZiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGRcbiAgICAgICAgICAgIGVuZDsgZG9fYnVja2V0IHJlc3QgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGZvbGQgZiBoIGluaXQgPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICAgICAgbWF0Y2ggYiB3aXRoXG4gICAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAgIGFjY3VcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IGJlZ2luIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPiBmIGsgZCBhY2N1XG4gICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0IGFjY3UgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgICAgZG9uZTtcbiAgICAgICFhY2N1XG5cbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEguZ2V0X2tleSBjLCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZiBrIGQgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZCAtPlxuICAgICAgICAgICAgICAgICAgICBILnNldF9rZXlfZGF0YSBjIGsgbmV3X2Q7XG4gICAgICAgICAgICAgICAgICAgIENvbnMoaGssIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCB0b19zZXEgdGJsID1cbiAgICAgICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICAgICAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgICAgICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gICAgICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgICAgICB8IENvbnMgKF8sIGMsIG5leHQpIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggaSBuZXh0ICgpXG4gICAgICAgICAgICAgIHwgU29tZSBrZXksIFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYXV4IDAgRW1wdHlcblxuICAgIGxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKHQyOignaywnZCkgdCk6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBnZXRfZGF0YV9jb3B5ICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19kYXRhIHRcbiAgbGV0IGJsaXRfZGF0YSAodDE6KF8sJ2QpIHQpICh0MjooXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggPSBILmhhc2hcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICAoKiB7IWdldF9rZXlfY29weX0gaXMgbm90IHVzZWQgYmVjYXVzZSB0aGUgZXF1YWxpdHkgb2YgdGhlIHVzZXIgY2FuIGJlXG4gICAgICAgICAgICB0aGUgcGh5c2ljYWwgZXF1YWxpdHkgKilcbiAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgaycgLT5cbiAgICAgICAgICAgIGlmIEguZXF1YWwgayBrJyB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSA9IGdldF9rZXlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgSzIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2sxLCAnazIsICdkKSB0ID0gT2JqRXBoLnRcblxuICBsZXQgY3JlYXRlICgpIDogKCdrMSwnazIsJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDJcblxuICBsZXQgZ2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMClcbiAgbGV0IGdldF9rZXkxX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2sxIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAwXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgZ2V0X2tleTJfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMSlcbiAgbGV0IHNldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSAoazonazIpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCAxIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDFcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cblxuICBsZXQgYmxpdF9rZXkxICh0MTooJ2sxLF8sXykgdCkgKHQyOignazEsXyxfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMVxuICBsZXQgYmxpdF9rZXkyICh0MTooXywnazIsXykgdCkgKHQyOihfLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAxIHQyIDEgMVxuICBsZXQgYmxpdF9rZXkxMiAodDE6KCdrMSwnazIsXykgdCkgKHQyOignazEsJ2syLF8pIHQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIDAgdDIgMCAyXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgKGQ6J2QpIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLF8sJ2QpIHQpICh0MjooXyxfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWRcbiAgICAgIChIMTpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpXG4gICAgICAoSDI6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChIMS50LEgyLnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50XG4gICAgICBsZXQgY3JlYXRlIChrMSxrMikgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgY1xuICAgICAgbGV0IGhhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuaGFzaCBzZWVkIGsxICsgSDIuaGFzaCBzZWVkIGsyICogNjU1OTlcbiAgICAgIGxldCBlcXVhbCBjIChrMSxrMikgPVxuICAgICAgICBtYXRjaCBnZXRfa2V5MSBjLCBnZXRfa2V5MiBjIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXyAsIE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+XG4gICAgICAgICAgICBpZiBIMS5lcXVhbCBrMSBrMScgJiYgSDIuZXF1YWwgazIgazInXG4gICAgICAgICAgICB0aGVuIEdlbkhhc2hUYWJsZS5FVHJ1ZSBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT4gU29tZSAoazEnLCBrMicpXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgKGsxLGsyKSBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9IGNoZWNrX2tleTEgYyAmJiBjaGVja19rZXkyIGNcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDE6IEhhc2h0YmwuSGFzaGVkVHlwZSkoSDI6IEhhc2h0YmwuSGFzaGVkVHlwZSk6XG4gICAgKFMgd2l0aCB0eXBlIGtleSA9IEgxLnQgKiBIMi50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDEudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgxLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IGdldF9rZXlfY29weSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCBuKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgKGs6J2spIDogdW5pdCA9XG4gICAgT2JqRXBoLnNldF9rZXkgdCBuIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgblxuICBsZXQgY2hlY2tfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgblxuXG4gIGxldCBibGl0X2tleSAodDE6KCdrLCdkKSB0KSAobzE6aW50KSAodDI6KCdrLCdkKSB0KSAobzI6aW50KSAobDppbnQpIDogdW5pdCA9XG4gICAgT2JqRXBoLmJsaXRfa2V5IHQxIG8xIHQyIG8yIGxcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50IGFycmF5XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlIChBcnJheS5sZW5ndGggaykgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgZ2V0X2tleSBjID1cbiAgICAgICAgbGV0IGxlbiA9IGxlbmd0aCBjIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiBTb21lIFt8fF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyAwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBrMCAtPlxuICAgICAgICAgICAgICBsZXQgcmVjIGZpbGwgYSBpID1cbiAgICAgICAgICAgICAgICBpZiBpIDwgMSB0aGVuIFNvbWUgYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgICAgICBhLihpKSA8LSBraTtcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsIGEgKGktMSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiBrMCBpblxuICAgICAgICAgICAgICBmaWxsIGEgKGxlbi0xKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBEYW1pZW4gRG9saWdleiwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBnZW5lcmljX3F1b3RlIHF1b3RlcXVvdGUgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgaWYgcy5baV0gPSAnXFwnJ1xuICAgIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBxdW90ZXF1b3RlXG4gICAgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYiAgcy5baV1cbiAgZG9uZTtcbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMV1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9iYXNlbmFtZS5odG1sXG4gIEluIHN0ZXAgMSBvZiBbWzFdXSwgd2UgY2hvb3NlIHRvIHJldHVybiBcIi5cIiBmb3IgZW1wdHkgaW5wdXQuXG4gICAgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwpXG4gIEluIHN0ZXAgMiwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuICBTdGVwIDYgaXMgbm90IGltcGxlbWVudGVkOiB3ZSBjb25zaWRlciB0aGF0IHRoZSBbc3VmZml4XSBvcGVyYW5kIGlzXG4gICAgYWx3YXlzIGFic2VudC4gIFN1ZmZpeGVzIGFyZSBoYW5kbGVkIGJ5IFtjaG9wX3N1ZmZpeF0gYW5kIFtjaG9wX2V4dGVuc2lvbl0uXG4qKVxubGV0IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIGZpbmRfZW5kIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBmaW5kX2VuZCAobiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyBuIChuICsgMSlcbiAgYW5kIGZpbmRfYmVnIG4gcCA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCBwXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIFN0cmluZy5zdWIgbmFtZSAobiArIDEpIChwIC0gbiAtIDEpXG4gICAgZWxzZSBmaW5kX2JlZyAobiAtIDEpIHBcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgZmluZF9lbmQgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbigqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgT3BlbiBHcm91cCBzcGVjaWZpY2F0aW9uIGZvdW5kIGhlcmU6XG4gIFtbMl1dIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L3V0aWxpdGllcy9kaXJuYW1lLmh0bWxcbiAgSW4gc3RlcCA2IG9mIFtbMl1dLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4qKVxubGV0IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgdHJhaWxpbmdfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiB0cmFpbGluZ19zZXAgKG4gLSAxKVxuICAgIGVsc2UgYmFzZSBuXG4gIGFuZCBiYXNlIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIG5cbiAgICBlbHNlIGJhc2UgKG4gLSAxKVxuICBhbmQgaW50ZXJtZWRpYXRlX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCAobiAtIDEpXG4gICAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAobiArIDEpXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIHRyYWlsaW5nX3NlcCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubW9kdWxlIHR5cGUgU1lTREVQUyA9IHNpZ1xuICB2YWwgbnVsbCA6IHN0cmluZ1xuICB2YWwgY3VycmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcGFyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBkaXJfc2VwIDogc3RyaW5nXG4gIHZhbCBpc19kaXJfc2VwIDogc3RyaW5nIC0+IGludCAtPiBib29sXG4gIHZhbCBpc19yZWxhdGl2ZSA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBpc19pbXBsaWNpdCA6IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaGVja19zdWZmaXggOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNob3Bfc3VmZml4X29wdCA6IHN1ZmZpeDpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIHRlbXBfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgcXVvdGVfY29tbWFuZCA6XG4gICAgc3RyaW5nIC0+ID9zdGRpbjogc3RyaW5nIC0+ID9zdGRvdXQ6IHN0cmluZyAtPiA/c3RkZXJyOiBzdHJpbmdcbiAgICAgICAgICAgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4gIHZhbCBiYXNlbmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGRpcm5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIFVuaXggOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBzLltpXSA9ICcvJ1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9IFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICAgU3RyaW5nLmVuZHNfd2l0aCB+c3VmZml4OnN1ZmYgbmFtZVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIHIgPSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRNUERJUlwiIHdpdGggTm90X2ZvdW5kIC0+IFwiL3RtcFwiXG4gIGxldCBxdW90ZSA9IGdlbmVyaWNfcXVvdGUgXCInXFxcXCcnXCJcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgKGNtZCA6OiBhcmdzKSlcbiAgICBeIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGUgZilcbiAgICBeIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGUgZilcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFdpbjMyIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiTlVMXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCJcXFxcXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gbGV0IGMgPSBzLltpXSBpbiBjID0gJy8nIHx8IGMgPSAnXFxcXCcgfHwgYyA9ICc6J1xuICBsZXQgaXNfcmVsYXRpdmUgbiA9XG4gICAgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJy8nKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICdcXFxcJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBuLlsxXSA8PiAnOicpXG4gIGxldCBpc19pbXBsaWNpdCBuID1cbiAgICBpc19yZWxhdGl2ZSBuXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgU3RyaW5nLnN1YiBuIDAgMiA8PiBcIi5cXFxcXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLlxcXFxcIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgU3RyaW5nLmxlbmd0aCBuYW1lID49IFN0cmluZy5sZW5ndGggc3VmZiAmJlxuICAgKGxldCBzID0gU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZy5sZW5ndGggc3VmZikgaW5cbiAgICBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmYpXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSByID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmaXggdGhlblxuICAgICAgICBTb21lIChTdHJpbmcuc3ViIGZpbGVuYW1lIDAgKGxlbl9mIC0gbGVuX3MpKVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVEVNUFwiIHdpdGggTm90X2ZvdW5kIC0+IFwiLlwiXG4gIGxldCBxdW90ZSBzID1cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAobCArIDIwKSBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJyBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdcXFwiJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCBjICAgIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGM7IGxvb3AgKGkrMSk7XG4gICAgYW5kIGxvb3BfYnMgbiBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgICAgICBhZGRfYnMgbjtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnXFxcIicgLT4gYWRkX2JzICgyKm4rMSk7IEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJzsgbG9vcCAoaSsxKTtcbiAgICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAobisxKSAoaSsxKTtcbiAgICAgICAgfCBfICAgIC0+IGFkZF9icyBuOyBsb29wIGlcbiAgICAgIGVuZFxuICAgIGFuZCBhZGRfYnMgbiA9IGZvciBfaiA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7IGRvbmVcbiAgICBpblxuICAgIGxvb3AgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuKCpcblF1b3RpbmcgY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBieSBjbWQuZXhlIGlzIGRpZmZpY3VsdC5cbjEtIEVhY2ggYXJndW1lbnQgaXMgZmlyc3QgcXVvdGVkIHVzaW5nIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmUsIHRvXG4gICBwcm90ZWN0IGl0IGFnYWluc3QgdGhlIHByb2Nlc3NpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLFxuICAgdGhlbiBjbWQuZXhlJ3Mgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIHdpdGggJ14nLCB1c2luZ1xuICAgdGhlIFwicXVvdGVfY21kXCIgZnVuY3Rpb24gYmVsb3cuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvMjAxMS8wNC8yM1xuMi0gVGhlIGNvbW1hbmQgYW5kIHRoZSByZWRpcmVjdGlvbiBmaWxlcywgaWYgYW55LCBtdXN0IGJlIGRvdWJsZS1xdW90ZWRcbiAgIGluIGNhc2UgdGhleSBjb250YWluIHNwYWNlcy4gIFRoaXMgcXVvdGluZyBpcyBpbnRlcnByZXRlZCBieSBjbWQuZXhlLFxuICAgbm90IGJ5IHRoZSBDIHJ1bnRpbWUgc3lzdGVtLCBoZW5jZSB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlXG4gICBjYW5ub3QgYmUgdXNlZC4gIFRoZSB0d28gY2hhcmFjdGVycyB3ZSBkb24ndCBrbm93IGhvdyB0byBxdW90ZVxuICAgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjbWQuZXhlIHN0cmluZyBhcmUgZG91YmxlLXF1b3RlIGFuZCBwZXJjZW50LlxuICAgV2UganVzdCBmYWlsIGlmIHRoZSBjb21tYW5kIG5hbWUgb3IgdGhlIHJlZGlyZWN0aW9uIGZpbGUgbmFtZXNcbiAgIGNvbnRhaW4gYSBkb3VibGUgcXVvdGUgKG5vdCBhbGxvd2VkIGluIFdpbmRvd3MgZmlsZSBuYW1lcywgYW55d2F5KVxuICAgb3IgYSBwZXJjZW50LiAgU2VlIGZ1bmN0aW9uIFwicXVvdGVfY21kX2ZpbGVuYW1lXCIgYmVsb3cuXG4zLSBUaGUgd2hvbGUgc3RyaW5nIHBhc3NlZCB0byBTeXMuY29tbWFuZCBpcyB0aGVuIGVuY2xvc2VkIGluIGRvdWJsZVxuICAgcXVvdGVzLCB3aGljaCBhcmUgaW1tZWRpYXRlbHkgc3RyaXBwZWQgYnkgY21kLmV4ZS4gIE90aGVyd2lzZSxcbiAgIHNvbWUgb2YgdGhlIGRvdWJsZSBxdW90ZXMgZnJvbSBzdGVwIDIgYWJvdmUgY2FuIGJlIG1pc3BhcnNlZC5cbiAgIFNlZSBlLmcuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85OTY1MTQxXG4qKVxuICBsZXQgcXVvdGVfY21kIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgMjApIGluXG4gICAgU3RyaW5nLml0ZXJcbiAgICAgIChmdW4gYyAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnKCcgfCAnKScgfCAnIScgfCAnXicgfCAnJScgfCAnXFxcIicgfCAnPCcgfCAnPicgfCAnJicgfCAnfCcgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdeJzsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGMpXG4gICAgICBzO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gIGxldCBxdW90ZV9jbWRfZmlsZW5hbWUgZiA9XG4gICAgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJ1xcXCInIHx8IFN0cmluZy5jb250YWlucyBmICclJyB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBcIlxcXCJcIiBeIGYgXiBcIlxcXCJcIlxuICAgIGVsc2VcbiAgICAgIGZcbiAgKCogUmVkaXJlY3Rpb25zIGluIGNtZC5leGU6IHNlZSBodHRwczovL3NzNjQuY29tL250L3N5bnRheC1yZWRpcmVjdGlvbi5odG1sXG4gICAgIGFuZCBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9wcmV2aW91cy12ZXJzaW9ucy93aW5kb3dzL2l0LXByby93aW5kb3dzLXhwL2JiNDkwOTgyKHY9dGVjaG5ldC4xMClcbiAgKilcbiAgbGV0IHF1b3RlX2NvbW1hbmQgY21kID9zdGRpbiA/c3Rkb3V0ID9zdGRlcnIgYXJncyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcbiAgICAgIFwiXFxcIlwiO1xuICAgICAgcXVvdGVfY21kX2ZpbGVuYW1lIGNtZDtcbiAgICAgIFwiIFwiO1xuICAgICAgcXVvdGVfY21kIChTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSBhcmdzKSk7XG4gICAgICAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRvdXQgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcIiAyPlwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgXCJcXFwiXCJcbiAgICBdXG4gIGxldCBoYXNfZHJpdmUgcyA9XG4gICAgbGV0IGlzX2xldHRlciA9IGZ1bmN0aW9uXG4gICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgaXNfbGV0dGVyIHMuWzBdICYmIHMuWzFdID0gJzonXG4gIGxldCBkcml2ZV9hbmRfcGF0aCBzID1cbiAgICBpZiBoYXNfZHJpdmUgc1xuICAgIHRoZW4gKFN0cmluZy5zdWIgcyAwIDIsIFN0cmluZy5zdWIgcyAyIChTdHJpbmcubGVuZ3RoIHMgLSAyKSlcbiAgICBlbHNlIChcIlwiLCBzKVxuICBsZXQgZGlybmFtZSBzID1cbiAgICBsZXQgKGRyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBsZXQgZGlyID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoIGluXG4gICAgZHJpdmUgXiBkaXJcbiAgbGV0IGJhc2VuYW1lIHMgPVxuICAgIGxldCAoX2RyaXZlLCBwYXRoKSA9IGRyaXZlX2FuZF9wYXRoIHMgaW5cbiAgICBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIEN5Z3dpbiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwID0gV2luMzIuaXNfZGlyX3NlcFxuICBsZXQgaXNfcmVsYXRpdmUgPSBXaW4zMi5pc19yZWxhdGl2ZVxuICBsZXQgaXNfaW1wbGljaXQgPSBXaW4zMi5pc19pbXBsaWNpdFxuICBsZXQgY2hlY2tfc3VmZml4ID0gV2luMzIuY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBXaW4zMi5jaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBVbml4LnRlbXBfZGlyX25hbWVcbiAgbGV0IHF1b3RlID0gVW5peC5xdW90ZVxuICBsZXQgcXVvdGVfY29tbWFuZCA9IFVuaXgucXVvdGVfY29tbWFuZFxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgU3lzZGVwcyA9XG4gICh2YWwgKG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICB8IFwiV2luMzJcIiAtPiAobW9kdWxlIFdpbjMyOiBTWVNERVBTKVxuICAgICAgIHwgXCJDeWd3aW5cIiAtPiAobW9kdWxlIEN5Z3dpbjogU1lTREVQUylcbiAgICAgICB8IF8gLT4gKG1vZHVsZSBVbml4OiBTWVNERVBTKSkpXG5cbmluY2x1ZGUgU3lzZGVwc1xuXG5sZXQgY29uY2F0IGRpcm5hbWUgZmlsZW5hbWUgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggZGlybmFtZSBpblxuICBpZiBsID0gMCB8fCBpc19kaXJfc2VwIGRpcm5hbWUgKGwtMSlcbiAgdGhlbiBkaXJuYW1lIF4gZmlsZW5hbWVcbiAgZWxzZSBkaXJuYW1lIF4gZGlyX3NlcCBeIGZpbGVuYW1lXG5cbmxldCBjaG9wX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICBsZXQgbiA9IFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZiBpblxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIG5cblxubGV0IGV4dGVuc2lvbl9sZW4gbmFtZSA9XG4gIGxldCByZWMgY2hlY2sgaTAgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkwIChpIC0gMSlcbiAgICBlbHNlIFN0cmluZy5sZW5ndGggbmFtZSAtIGkwXG4gIGluXG4gIGxldCByZWMgc2VhcmNoX2RvdCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaSAoaSAtIDEpXG4gICAgZWxzZSBzZWFyY2hfZG90IChpIC0gMSlcbiAgaW5cbiAgc2VhcmNoX2RvdCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxubGV0IGV4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLnN1YiBuYW1lIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKSBsXG5cbmxldCBjaG9wX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uXCJcbiAgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxubGV0IHJlbW92ZV9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gbmFtZSBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5leHRlcm5hbCBvcGVuX2Rlc2M6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcbmV4dGVybmFsIGNsb3NlX2Rlc2M6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5cbmxldCBwcm5nID0gbGF6eShSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJuZCA9IChSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID0gcmVmIHRlbXBfZGlyX25hbWVcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBjdXJyZW50X3RlbXBfZGlyX25hbWUgOj0gc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZVxuXG5sZXQgdGVtcF9maWxlID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IG9wZW5fdGVtcF9maWxlID8obW9kZSA9IFtPcGVuX3RleHRdKSA/KHBlcm1zID0gMG82MDApXG4gICAgICAgICAgICAgICAgICAgPyh0ZW1wX2RpciA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWUpIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9XG4gICgqIFdhdGNoIG91dCBmb3Igb3ZlcmZsb3cgaW4gY29tcHV0aW5nIHJlXjIgKyBpbV4yICopXG4gIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICBpZiByID0gMC4wIHRoZW4gaVxuICBlbHNlIGlmIGkgPSAwLjAgdGhlbiByXG4gIGVsc2UgaWYgciA+PSBpIHRoZW5cbiAgICBsZXQgcSA9IGkgLy4gciBpbiByICouIHNxcnQoMS4wICsuIHEgKi4gcSlcbiAgZWxzZVxuICAgIGxldCBxID0gciAvLiBpIGluIGkgKi4gc3FydCgxLjAgKy4gcSAqLiBxKVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgICBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBtYXRjaCBBcnJheS5sZW5ndGggZGltcywgbGF5b3V0IHdpdGhcbiAgICB8IDAsIF8gLT4gYXJyXG4gICAgfCBkbGVuLCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBkbGVuLCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBibG9iID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBibG9iIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV93aXRoQ29udGVudFR5cGUgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IGJsb2IgdCBtZXRoXG5lbmRcblxubGV0IGJsb2JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9CbG9iXG5cbnR5cGUgJ2EgbWFrZV9ibG9iID1cbiAgP2NvbnRlbnRUeXBlOnN0cmluZyAtPiA/ZW5kaW5nczpbIGBUcmFuc3BhcmVudCB8IGBOYXRpdmUgXSAtPiAnYSAtPiBibG9iIHRcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxubGV0IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgPVxuICBsZXQgb3B0aW9ucyA9XG4gICAgZmlsdGVyX21hcFxuICAgICAgKGZ1biAobmFtZSwgdikgLT5cbiAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSB2IC0+IFNvbWUgKG5hbWUsIFVuc2FmZS5pbmplY3QgKHN0cmluZyB2KSkpXG4gICAgICBbIFwidHlwZVwiLCBjb250ZW50VHlwZVxuICAgICAgOyAoIFwiZW5kaW5nc1wiXG4gICAgICAgICwgbWF0Y2ggZW5kaW5ncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgYFRyYW5zcGFyZW50IC0+IFNvbWUgXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgfCBTb21lIGBOYXRpdmUgLT4gU29tZSBcIm5hdGl2ZVwiIClcbiAgICAgIF1cbiAgaW5cbiAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgbCAtPiBVbnNhZmUub2JqIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgYSA9XG4gIGxldCBvcHRpb25zID0gbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyBpblxuICBuZXclanMgYmxvYl9jb25zdHIgKGFycmF5IGEpIG9wdGlvbnNcblxubGV0IGJsb2JfZnJvbV9zdHJpbmcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIHMgPVxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgW3wgc3RyaW5nIHMgfF1cblxubGV0IGJsb2JfZnJvbV9hbnkgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGwgPVxuICBsZXQgbCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBhcnJheUJ1ZmZlciBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBhcnJheUJ1ZmZlclZpZXcgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpXG4gICAgICAgIHwgYGpzX3N0cmluZyBzIC0+IFVuc2FmZS5pbmplY3Qgc1xuICAgICAgICB8IGBibG9iIGIgLT4gVW5zYWZlLmluamVjdCBiKVxuICAgICAgbFxuICBpblxuICBibG9iX3JhdyA/Y29udGVudFR5cGUgP2VuZGluZ3MgKEFycmF5Lm9mX2xpc3QgbClcblxuY2xhc3MgdHlwZSBmaWxlID0gb2JqZWN0XG4gIGluaGVyaXQgYmxvYlxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0TW9kaWZpZWREYXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGluIGZpcmVmb3ggMy4wLTMuNSBmaWxlLm5hbWUgaXMgbm90IGF2YWlsYWJsZSwgd2UgdXNlIHRoZSBub25zdGFuZGFyZCBmaWxlTmFtZSBpbnN0ZWFkICopXG5jbGFzcyB0eXBlIGZpbGVfbmFtZV9vbmx5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZU5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBmaWxlbmFtZSBmaWxlID1cbiAgbGV0IGZpbGUgOiBmaWxlX25hbWVfb25seSB0ID0gSnMuVW5zYWZlLmNvZXJjZSBmaWxlIGluXG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLm5hbWUgd2l0aFxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMuZmlsZU5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2FuJ3QgcmV0cmlldmUgZmlsZSBuYW1lOiBub3QgaW1wbGVtZW50ZWRcIlxuICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZSlcbiAgfCBTb21lIG5hbWUgLT4gbmFtZVxuXG50eXBlIGZpbGVfYW55ID0gPCA+IHRcblxubGV0IGRvY19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RvY3VtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBleHRlcm5hbCBqc29uIDogZmlsZV9hbnkgLT4gJ2EgT3B0LnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IGRvY3VtZW50IChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgZG9jX2NvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogZWxlbWVudCBkb2N1bWVudCB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBibG9iIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgYmxvYl9jb25zdHIgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiAjYmxvYiB0KSBlbHNlIEpzLm51bGxcblxuICBsZXQgc3RyaW5nIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiBlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBqc19zdHJpbmcgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXJyYXlCdWZmZXIgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdClcbiAgICBlbHNlIEpzLm51bGxcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVMaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2ZpbGVdIERvbS5ub2RlTGlzdFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gcHJvZ3Jlc3NFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgbGVuZ3RoQ29tcHV0YWJsZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvYWRlZCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvdGFsIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByb2dyZXNzRXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlbmQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgRU1QVFlcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG5jbGFzcyB0eXBlIGZpbGVSZWFkZXIgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgcmVhZEFzQXJyYXlCdWZmZXIgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNCaW5hcnlTdHJpbmcgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0IDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgOiAjYmxvYiB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNEYXRhVVJMIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXN1bHQgOiBmaWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogZmlsZUVycm9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIGluaGVyaXQgcHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBSZWFkZXJFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IGZpbGVSZWFkZXIgcHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgbG9hZHN0YXJ0ID0gRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBFdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IEV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBFdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBFdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxubGV0IGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GaWxlUmVhZGVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY2FtbF9qc19vbl9pZSA6IHVuaXQgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX29uX2llXCJcblxubGV0IG9uSUUgPSBKcy50b19ib29sIChjYW1sX2pzX29uX2llICgpKVxuXG5leHRlcm5hbCBodG1sX2VzY2FwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZXNjYXBlXCJcblxuZXh0ZXJuYWwgZGVjb2RlX2h0bWxfZW50aXRpZXMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VudGl0aWVzXCJcblxuY2xhc3MgdHlwZSBjc3NTdHlsZURlY2xhcmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBzZXRQcm9wZXJ0eSA6XG4gICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlWYWx1ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvcGVydHlQcmlvcml0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUHJvcGVydHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGVsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRHVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkZpbGxNb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25JdGVyYXRpb25Db3VudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uUGxheVN0YXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25UaW1pbmdGdW5jdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEF0dGFjaG1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZEltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRSZXBlYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21Db2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xsYXBzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJhZGl1cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlcldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNhcHRpb25TaWRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJJbmNyZW1lbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvdW50ZXJSZXNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzRmxvYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc1RleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnNvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNwbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbXB0eUNlbGxzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250RmFtaWx5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U2l6ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250VmFyaWFudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFdlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZXR0ZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZUltYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Cb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5Ub3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heEhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4V2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wYWNpdHkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVPZmZzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvdyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dYIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1kgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdUb3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0FmdGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtCZWZvcmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJFdmVudHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFibGVMYXlvdXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFuY2hvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dERlY29yYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRJbmRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRUcmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2ZXJ0aWNhbEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aXNpYmlsaXR5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aGl0ZVNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd29yZFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHpJbmRleCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYikgRG9tLmV2ZW50X2xpc3RlbmVyXG5cbnR5cGUgbW91c2VfYnV0dG9uID1cbiAgfCBOb19idXR0b25cbiAgfCBMZWZ0X2J1dHRvblxuICB8IE1pZGRsZV9idXR0b25cbiAgfCBSaWdodF9idXR0b25cblxudHlwZSBkZWx0YV9tb2RlID1cbiAgfCBEZWx0YV9waXhlbFxuICB8IERlbHRhX2xpbmVcbiAgfCBEZWx0YV9wYWdlXG5cbmNsYXNzIHR5cGUgZXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmV2ZW50XG5lbmRcblxuYW5kIFsnYV0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudCwgJ2FdIERvbS5jdXN0b21FdmVudFxuZW5kXG5cbmFuZCBmb2N1c0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidXR0b24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IG1vdXNlX2J1dHRvbiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcm9tRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBrZXlib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJDb2RlIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleUNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRNb2RpZmllclN0YXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qga2V5SWRlbnRpZmllciA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNld2hlZWxFdmVudCA9IG9iamVjdFxuICAoKiBBbGwgbW9kZXJuIGJyb3dzZXJzICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hlZWxEZWx0YVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFNb2RlIDogZGVsdGFfbW9kZSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlU2Nyb2xsRXZlbnQgPSBvYmplY3RcbiAgKCogRmlyZWZveCAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXhpcyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSE9SSVpPTlRBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJUSUNBTF9BWElTIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCB0b3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFuZ2VkVG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRvdWNoTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiB0b3VjaCB0IG9wdGRlZiBtZXRoXG5lbmRcblxuYW5kIHRvdWNoID0gb2JqZWN0XG4gIG1ldGhvZCBpZGVudGlmaWVyIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3VibWl0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdWJtaXR0ZXIgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZHJhZ0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkYXRhVHJhbnNmZXIgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaXBib2FyZEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgY2xpcGJvYXJkRGF0YSA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZGF0YVRyYW5zZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBkcm9wRWZmZWN0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlZmZlY3RBbGxvd2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR5cGVzIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZEVsZW1lbnQgOiBlbGVtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGFfYWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGEgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RHJhZ0ltYWdlIDogZWxlbWVudCB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGV2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9uY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRibGNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZWRvd24gOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNldXAgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3ZlciA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vtb3ZlIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW91dCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5cHJlc3MgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleWRvd24gOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXVwIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zY3JvbGwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253aGVlbCA6ICgnc2VsZiB0LCBtb3VzZXdoZWVsRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnc3RhcnQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VuZCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW50ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ292ZXIgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2xlYXZlIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWcgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJvcCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25zdGFydCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmVuZCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbml0ZXJhdGlvbiA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCBhbmltYXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25ydW4gOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnN0YXJ0IDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25lbmQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmNhbmNlbCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25nb3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb3N0cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmVudGVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJjYW5jZWwgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmRvd24gOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmxlYXZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJtb3ZlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdXQgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm92ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcnVwIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNwYXRjaEV2ZW50IDogZXZlbnQgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbmFuZCBwb3BTdGF0ZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgcG9pbnRlckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBwb2ludGVySWQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFuZ2VudGlhbFByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRZIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHdpc3QgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyVHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNQcmltYXJ5IDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qga2V5IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVybCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcmFnZUFyZWEgOiBzdG9yYWdlIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgc3RvcmFnZSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5IDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgaGFzaENoYW5nZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgb2xkVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXdVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGFuaW1hdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgYW5pbWF0aW9uTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHRyYW5zaXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHByb3BlcnR5TmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZWxhcHNlZFRpbWUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBzZXVkb0VsZW1lbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1lZGlhRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuZW5kXG5cbmFuZCBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzb3VyY2UgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG5vZGVTZWxlY3RvciA9IG9iamVjdFxuICBtZXRob2QgcXVlcnlTZWxlY3RvciA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yQWxsIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5lbmRcblxuYW5kIHRva2VuTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGFkZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdG9nZ2xlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZpZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc05hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTGlzdCA6IHRva2VuTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2VzdCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzdHlsZSA6IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0ZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0Q29udGVudCA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGlubmVyVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xpZW50TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0TGVmdCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFRvcCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFBhcmVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcm9sbExlZnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxUb3AgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxXaWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbEhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGdldENsaWVudFJlY3RzIDogY2xpZW50UmVjdExpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA6IGNsaWVudFJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEludG9WaWV3IDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGljayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB0b3AgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3R0b20gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3Qgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpZW50UmVjdExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gY2xpZW50UmVjdCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IERvbS5ub19oYW5kbGVyXG5cbmxldCBoYW5kbGVyID0gRG9tLmhhbmRsZXJcblxubGV0IGZ1bGxfaGFuZGxlciA9IERvbS5mdWxsX2hhbmRsZXJcblxubGV0IGludm9rZV9oYW5kbGVyID0gRG9tLmludm9rZV9oYW5kbGVyXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9ICdhIERvbS5FdmVudC50eXBcblxuICBsZXQgY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5jZWxcIlxuXG4gIGxldCBjbGljayA9IERvbS5FdmVudC5tYWtlIFwiY2xpY2tcIlxuXG4gIGxldCBjbG9zZSA9IERvbS5FdmVudC5tYWtlIFwiY2xvc2VcIlxuXG4gIGxldCBjb3B5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjb3B5XCJcblxuICBsZXQgY3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJjdXRcIlxuXG4gIGxldCBwYXN0ZSA9IERvbS5FdmVudC5tYWtlIFwicGFzdGVcIlxuXG4gIGxldCBkYmxjbGljayA9IERvbS5FdmVudC5tYWtlIFwiZGJsY2xpY2tcIlxuXG4gIGxldCBtb3VzZWRvd24gPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlZG93blwiXG5cbiAgbGV0IG1vdXNldXAgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNldXBcIlxuXG4gIGxldCBtb3VzZW92ZXIgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3ZlclwiXG5cbiAgbGV0IG1vdXNlbW92ZSA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vtb3ZlXCJcblxuICBsZXQgbW91c2VvdXQgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlb3V0XCJcblxuICBsZXQga2V5cHJlc3MgPSBEb20uRXZlbnQubWFrZSBcImtleXByZXNzXCJcblxuICBsZXQga2V5ZG93biA9IERvbS5FdmVudC5tYWtlIFwia2V5ZG93blwiXG5cbiAgbGV0IGtleXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXl1cFwiXG5cbiAgbGV0IG1vdXNld2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNld2hlZWxcIlxuXG4gIGxldCB3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwid2hlZWxcIlxuXG4gIGxldCBfRE9NTW91c2VTY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcIkRPTU1vdXNlU2Nyb2xsXCJcblxuICBsZXQgdG91Y2hzdGFydCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hzdGFydFwiXG5cbiAgbGV0IHRvdWNobW92ZSA9IERvbS5FdmVudC5tYWtlIFwidG91Y2htb3ZlXCJcblxuICBsZXQgdG91Y2hlbmQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoZW5kXCJcblxuICBsZXQgdG91Y2hjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoY2FuY2VsXCJcblxuICBsZXQgZHJhZ3N0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnc3RhcnRcIlxuXG4gIGxldCBkcmFnZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW5kXCJcblxuICBsZXQgZHJhZ2VudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnZW50ZXJcIlxuXG4gIGxldCBkcmFnb3ZlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ292ZXJcIlxuXG4gIGxldCBkcmFnbGVhdmUgPSBEb20uRXZlbnQubWFrZSBcImRyYWdsZWF2ZVwiXG5cbiAgbGV0IGRyYWcgPSBEb20uRXZlbnQubWFrZSBcImRyYWdcIlxuXG4gIGxldCBkcm9wID0gRG9tLkV2ZW50Lm1ha2UgXCJkcm9wXCJcblxuICBsZXQgaGFzaGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiaGFzaGNoYW5nZVwiXG5cbiAgbGV0IGNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiY2hhbmdlXCJcblxuICBsZXQgaW5wdXQgPSBEb20uRXZlbnQubWFrZSBcImlucHV0XCJcblxuICBsZXQgdGltZXVwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwidGltZXVwZGF0ZVwiXG5cbiAgbGV0IHN1Ym1pdCA9IERvbS5FdmVudC5tYWtlIFwic3VibWl0XCJcblxuICBsZXQgc2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJzY3JvbGxcIlxuXG4gIGxldCBmb2N1cyA9IERvbS5FdmVudC5tYWtlIFwiZm9jdXNcIlxuXG4gIGxldCBibHVyID0gRG9tLkV2ZW50Lm1ha2UgXCJibHVyXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwidW5sb2FkXCJcblxuICBsZXQgYmVmb3JldW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuXG4gIGxldCByZXNpemUgPSBEb20uRXZlbnQubWFrZSBcInJlc2l6ZVwiXG5cbiAgbGV0IG9yaWVudGF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJvcmllbnRhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IHBvcHN0YXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb3BzdGF0ZVwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IHNlbGVjdCA9IERvbS5FdmVudC5tYWtlIFwic2VsZWN0XCJcblxuICBsZXQgb25saW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvbmxpbmVcIlxuXG4gIGxldCBvZmZsaW5lID0gRG9tLkV2ZW50Lm1ha2UgXCJvZmZsaW5lXCJcblxuICBsZXQgY2hlY2tpbmcgPSBEb20uRXZlbnQubWFrZSBcImNoZWNraW5nXCJcblxuICBsZXQgbm91cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcIm5vdXBkYXRlXCJcblxuICBsZXQgZG93bmxvYWRpbmcgPSBEb20uRXZlbnQubWFrZSBcImRvd25sb2FkaW5nXCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgdXBkYXRlcmVhZHkgPSBEb20uRXZlbnQubWFrZSBcInVwZGF0ZXJlYWR5XCJcblxuICBsZXQgY2FjaGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJjYWNoZWRcIlxuXG4gIGxldCBvYnNvbGV0ZSA9IERvbS5FdmVudC5tYWtlIFwib2Jzb2xldGVcIlxuXG4gIGxldCBkb21Db250ZW50TG9hZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Db250ZW50TG9hZGVkXCJcblxuICBsZXQgYW5pbWF0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbnN0YXJ0XCJcblxuICBsZXQgYW5pbWF0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25lbmRcIlxuXG4gIGxldCBhbmltYXRpb25pdGVyYXRpb24gPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbml0ZXJhdGlvblwiXG5cbiAgbGV0IGFuaW1hdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uY2FuY2VsXCJcblxuICBsZXQgdHJhbnNpdGlvbnJ1biA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnJ1blwiXG5cbiAgbGV0IHRyYW5zaXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbnN0YXJ0XCJcblxuICBsZXQgdHJhbnNpdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmVuZFwiXG5cbiAgbGV0IHRyYW5zaXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25jYW5jZWxcIlxuXG4gIGxldCBjYW5wbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5XCJcblxuICBsZXQgY2FucGxheXRocm91Z2ggPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXl0aHJvdWdoXCJcblxuICBsZXQgZHVyYXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImR1cmF0aW9uY2hhbmdlXCJcblxuICBsZXQgZW1wdGllZCA9IERvbS5FdmVudC5tYWtlIFwiZW1wdGllZFwiXG5cbiAgbGV0IGVuZGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbmRlZFwiXG5cbiAgbGV0IGdvdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IGxvYWRlZGRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZGRhdGFcIlxuXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkbWV0YWRhdGFcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbWVzc2FnZSA9IERvbS5FdmVudC5tYWtlIFwibWVzc2FnZVwiXG5cbiAgbGV0IHBhdXNlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXVzZVwiXG5cbiAgbGV0IHBsYXkgPSBEb20uRXZlbnQubWFrZSBcInBsYXlcIlxuXG4gIGxldCBwbGF5aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5aW5nXCJcblxuICBsZXQgcG9pbnRlcmVudGVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZW50ZXJcIlxuXG4gIGxldCBwb2ludGVyY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyY2FuY2VsXCJcblxuICBsZXQgcG9pbnRlcmRvd24gPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJkb3duXCJcblxuICBsZXQgcG9pbnRlcmxlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybGVhdmVcIlxuXG4gIGxldCBwb2ludGVybW92ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm1vdmVcIlxuXG4gIGxldCBwb2ludGVyb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3V0XCJcblxuICBsZXQgcG9pbnRlcm92ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdmVyXCJcblxuICBsZXQgcG9pbnRlcnVwID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVydXBcIlxuXG4gIGxldCByYXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyYXRlY2hhbmdlXCJcblxuICBsZXQgc2Vla2VkID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVrZWRcIlxuXG4gIGxldCBzZWVraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWVraW5nXCJcblxuICBsZXQgc3RhbGxlZCA9IERvbS5FdmVudC5tYWtlIFwic3RhbGxlZFwiXG5cbiAgbGV0IHN1c3BlbmQgPSBEb20uRXZlbnQubWFrZSBcInN1c3BlbmRcIlxuXG4gIGxldCB2b2x1bWVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInZvbHVtZWNoYW5nZVwiXG5cbiAgbGV0IHdhaXRpbmcgPSBEb20uRXZlbnQubWFrZSBcIndhaXRpbmdcIlxuXG4gIGxldCBtYWtlID0gRG9tLkV2ZW50Lm1ha2VcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gRG9tLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA9IERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgPSBEb20ucmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgPSBEb20uY3JlYXRlQ3VzdG9tRXZlbnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIGNvbGxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBuYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBodG1sRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgcHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbmtFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyb3Nzb3JpZ2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWV0YUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbnRlbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0dHBFcXVpdiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2NoZW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYmFzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBib2R5RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBmb3JtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZWxlbWVudHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdENoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW5jdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX21ldGhvZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdWJtaXQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzZXQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25zdWJtaXQgOiAoJ3NlbGYgdCwgc3VibWl0RXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdEdyb3VwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBsYWJlbCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBvcHRHcm91cEVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVmYXVsdFNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2VsZWN0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWRJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcHRpb25zIDogb3B0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgYWRkIDogI29wdEdyb3VwRWxlbWVudCB0IC0+ICNvcHRHcm91cEVsZW1lbnQgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlucHV0RWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRDaGVja2VkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hlY2tlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWF4TGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0ZXh0QXJlYUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbHMgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRW5kIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWxlY3QgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAoJ3NlbGYgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBidXR0b25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsYWJlbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHRtbEZvciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZpZWxkU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxlZ2VuZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHVMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBvTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZExpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGxpRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkaWFsb2dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZV9yZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvcGVuXyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJldHVyblZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaG93IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNob3dNb2RhbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNhbmNlbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZGl2RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBwYXJhZ3JhcGhFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRpbmdFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHF1b3RlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHByZUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgYnJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBtb2RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRlVGltZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFuY2hvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb3dubG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmV2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW1hZ2VFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGlzTWFwIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsV2lkdGggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF0dXJhbEhlaWdodCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb21wbGV0ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFyY2hpdmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVCYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVjbGFyZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhbmRieSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGFyYW1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFyZWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29vcmRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub0hyZWYgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzaGFwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtYXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhcmVhcyA6IGFyZWFFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzeW5jIDogYm9vbCB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGVtYmVkRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2VsbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNlbGxJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFiYnIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBheGlzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbFNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWFkZXJzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dTcGFuIDogaW50IHByb3BcblxuICBtZXRob2Qgc2NvcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlUm93RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgcm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWN0aW9uUm93SW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjZWxscyA6IHRhYmxlQ2VsbEVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRDZWxsIDogaW50IC0+IHRhYmxlQ2VsbEVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNlbGwgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVTZWN0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ2FwdGlvbkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgdGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0Rm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdEJvZGllcyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFBhZGRpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmcmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcnVsZXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1bW1hcnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVUSGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRIZWFkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEZvb3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNhcHRpb24gOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGltZVJhbmdlcyA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBlbmRfIDogaW50IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG50eXBlIG5ldHdvcmtTdGF0ZSA9XG4gIHwgTkVUV09SS19FTVBUWVxuICB8IE5FVFdPUktfSURMRVxuICB8IE5FVFdPUktfTE9BRElOR1xuICB8IE5FVFdPUktfTk9fU09VUkNFXG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgSEFWRV9OT1RISU5HXG4gIHwgSEFWRV9NRVRBREFUQVxuICB8IEhBVkVfQ1VSUkVOVF9EQVRBXG4gIHwgSEFWRV9GVVRVUkVfREFUQVxuICB8IEhBVkVfRU5PVUdIX0RBVEFcblxuKCogaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvcmVmX2F2X2RvbS5hc3AgKilcbigqIG9ubHkgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGFsbCBicm93c2VyLiAoSUU5KykgKilcbmNsYXNzIHR5cGUgbWVkaWFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjYW5QbGF5VHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgbG9hZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwbGF5IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGF1dG9wbGF5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYnVmZmVyZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250cm9scyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTcmMgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUaW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb29wIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWFncm91cCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbXV0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlIDogbmV0d29ya1N0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF1c2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxheWJhY2tSYXRlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBwbGF5ZWQgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVsb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2FibGUgOiB0aW1lUmFuZ2VzIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVraW5nIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2b2x1bWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2FucGxheXRocm91Z2ggOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmR1cmF0aW9uY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbXB0aWVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lbmRlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVkbWV0YWRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGF1c2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBsYXlpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnJhdGVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2luZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3RhbGxlZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc3VzcGVuZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udm9sdW1lY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253YWl0aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGF1ZGlvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbmNsYXNzIHR5cGUgdmlkZW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxudHlwZSBjb250ZXh0ID0ganNfc3RyaW5nIHRcblxubGV0IF8yZF8gPSBKcy5zdHJpbmcgXCIyZFwiXG5cbnR5cGUgY2FudmFzUGF0dGVyblxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgdG9EYXRhVVJMIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGVfY29tcHJlc3Npb24gOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IG9iamVjdFxuICBtZXRob2QgY2FudmFzIDogY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2F2ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXN0b3JlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNmb3JtIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2xvYmFsQWxwaGEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGUgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZUxpbmVhckdyYWRpZW50IDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFkaWFsR3JhZGllbnQgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuIDogaW1hZ2VFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbVZpZGVvIDogdmlkZW9FbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsaW5lQ2FwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaW5lSm9pbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWl0ZXJMaW1pdCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93T2Zmc2V0WSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Qmx1ciA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgc2hhZG93Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlZ2luUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZVBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgbW92ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBxdWFkcmF0aWNDdXJ2ZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJlemllckN1cnZlVG8gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmNUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyYyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbGxpcHNlIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGlwIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzUG9pbnRJblBhdGggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3Rm9jdXNSaW5nIDogI2VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QmFzZWxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGxUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxUZXh0X3dpdGhXaWR0aCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0IDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHRfd2l0aFdpZHRoIDpcbiAgICBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWVhc3VyZVRleHQgOiBqc19zdHJpbmcgdCAtPiB0ZXh0TWV0cmljcyB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlIDogaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV93aXRoU2l6ZSA6XG4gICAgaW1hZ2VFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsIDpcbiAgICAgICBpbWFnZUVsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzV2l0aFNpemUgOlxuICAgIGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tQ2FudmFzIDpcbiAgICAgICBjYW52YXNFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoVmlkZW8gOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFNpemUgOlxuICAgIHZpZGVvRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21WaWRlbyA6XG4gICAgICAgdmlkZW9FbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUltYWdlRGF0YSA6IGludCAtPiBpbnQgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbWFnZURhdGEgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIHB1dEltYWdlRGF0YSA6IGltYWdlRGF0YSB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNHcmFkaWVudCA9IG9iamVjdFxuICBtZXRob2QgYWRkQ29sb3JTdG9wIDogbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIHRleHRNZXRyaWNzID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgaW1hZ2VEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBjYW52YXNQaXhlbEFycmF5IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjYW52YXNQaXhlbEFycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4dGVybmFsIHBpeGVsX2dldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2pzX2dldFwiXG5cbmV4dGVybmFsIHBpeGVsX3NldCA6IGNhbnZhc1BpeGVsQXJyYXkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuY2xhc3MgdHlwZSByYW5nZSA9IG9iamVjdFxuICBtZXRob2QgY29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0U3RhcnQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQmVmb3JlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGVDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZUNvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGV4dHJhY3RDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDb250ZW50cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Vycm91bmRDb250ZW50cyA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuKCoqIEluZm9ybWF0aW9uIG9uIGN1cnJlbnQgc2VsZWN0aW9uICopXG5jbGFzcyB0eXBlIHNlbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgYW5jaG9yTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c05vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0NvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlQ291bnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSYW5nZUF0IDogaW50IC0+IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXh0ZW5kIDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vZGlmeSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvU3RhcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb0VuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RBbGxDaGlsZHJlbiA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFkZFJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBbGxSYW5nZXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJvbURvY3VtZW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zTm9kZSA6IERvbS5ub2RlIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkIDogaGVhZEVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGJvZHkgOiBib2R5RWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogaHRtbEVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGltYWdlcyA6IGltYWdlRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsZXRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5rcyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9ybXMgOiBmb3JtRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmNob3JzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlc2lnbk1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdyaXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4ZWNDb21tYW5kIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmFuZ2UgOiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5TmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhY3RpdmVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpZGRlbiA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxudHlwZSBpbnRlcnZhbF9pZFxuXG50eXBlIHRpbWVvdXRfaWRcblxudHlwZSBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuXG5jbGFzcyB0eXBlIGxvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaG9zdG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvcnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhdGhuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWFyY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhhc2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFzc2lnbiA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbG9hZCA6IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBsb2NhdGlvbl9vcmlnaW4gKGxvYyA6IGxvY2F0aW9uIHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBsb2MjIy5vcmlnaW5cbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgPSBsb2MjIy5wcm90b2NvbCBpblxuICAgICAgbGV0IGhvc3RuYW1lID0gbG9jIyMuaG9zdG5hbWUgaW5cbiAgICAgIGxldCBwb3J0ID0gbG9jIyMucG9ydCBpblxuICAgICAgaWYgcHJvdG9jb2wjIy5sZW5ndGggPSAwICYmIGhvc3RuYW1lIyMubGVuZ3RoID0gMFxuICAgICAgdGhlbiBKcy5zdHJpbmcgXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgb3JpZ2luID0gcHJvdG9jb2wjI2NvbmNhdF8yIChKcy5zdHJpbmcgXCIvL1wiKSBob3N0bmFtZSBpblxuICAgICAgICBpZiBwb3J0IyMubGVuZ3RoID4gMCB0aGVuIG9yaWdpbiMjY29uY2F0XzIgKEpzLnN0cmluZyBcIjpcIikgbG9jIyMucG9ydCBlbHNlIG9yaWdpbilcbiAgICAoZnVuIG8gLT4gbylcblxuY2xhc3MgdHlwZSBoaXN0b3J5ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnbyA6IGludCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJhY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yd2FyZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlU3RhdGUgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdW5kb01hbmFnZXIgPSBvYmplY3QgZW5kXG5cbmNsYXNzIHR5cGUgbmF2aWdhdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBDb2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwVmVyc2lvbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llRW5hYmxlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uTGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXRmb3JtIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2ZW5kb3IgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJBZ2VudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyTGFuZ3VhZ2UgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhUb3VjaFBvaW50cyA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzY3JlZW4gPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsSGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGFwcGxpY2F0aW9uQ2FjaGUgPSBvYmplY3RcbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwZGF0ZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzd2FwQ2FjaGUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jaGVja2luZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ub3VwZGF0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25kb3dubG9hZGluZyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251cGRhdGVyZWFkeSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jYWNoZWQgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub2Jzb2xldGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbmNsYXNzIHR5cGUgX1VSTCA9IG9iamVjdFxuICBtZXRob2QgY3JlYXRlT2JqZWN0VVJMIDogI0ZpbGUuYmxvYiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmV2b2tlT2JqZWN0VVJMIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB3aW5kb3cgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IGRvY3VtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBsaWNhdGlvbkNhY2hlIDogYXBwbGljYXRpb25DYWNoZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlzdG9yeSA6IGhpc3RvcnkgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVuZG9NYW5hZ2VyIDogdW5kb01hbmFnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdmlnYXRvciA6IG5hdmlnYXRvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U2VsZWN0aW9uIDogc2VsZWN0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9wIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsQnkgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXNzaW9uU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhbFN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG9wIDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnQgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyYW1lRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB3aW5kb3cgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBhbGVydCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb25maXJtIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcHJvbXB0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcHJpbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50ZXJ2YWwgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiBpbnRlcnZhbF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFySW50ZXJ2YWwgOiBpbnRlcnZhbF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZW91dCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IHRpbWVvdXRfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclRpbWVvdXQgOiB0aW1lb3V0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOlxuICAgIChudW1iZXJfdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNhbmNlbEFuaW1hdGlvbkZyYW1lIDogYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcmVlbiA6IHNjcmVlbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVySGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZSA6ICNlbGVtZW50IHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZV9wc2V1ZG9FbHQgOlxuICAgICNlbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY3NzU3R5bGVEZWNsYXJhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgYXRvYiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYnRvYSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgb25sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmVmb3JldW5sb2FkIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZm9jdXMgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnJlc2l6ZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9yaWVudGF0aW9uY2hhbmdlIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucG9wc3RhdGUgOiAod2luZG93IHQsIHBvcFN0YXRlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmhhc2hjaGFuZ2UgOiAod2luZG93IHQsIGhhc2hDaGFuZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub25saW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9mZmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBfVVJMIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZXZpY2VQaXhlbFJhdGlvIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aW5kb3cgOiB3aW5kb3cgdCA9IEpzLlVuc2FmZS5nbG9iYWxcblxuKCogVGhlIHRvcGxldmVsIG9iamVjdCAqKVxuXG5sZXQgZG9jdW1lbnQgPSB3aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2V4biBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcImdldEVsZW1lbnRCeUlkX2V4bjogJVMgbm90IGZvdW5kXCIgaWQpKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9vcHQgaWQgPSBKcy5PcHQudG9fb3B0aW9uIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9jb2VyY2UgaWQgY29lcmNlID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAoZnVuIGUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNlIGUpKVxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBmcmFtZVNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNvbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9SZXNpemUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaUZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudERvY3VtZW50IDogZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50V2luZG93IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKioqKVxuXG4oKlhYWCBTaG91bGQgcHJvdmlkZSBjcmVhdGlvbiBmdW5jdGlvbnMgYSBsYSBsYWJsZ3RrLi4uICopXG5cbmxldCBvcHRfaXRlciB4IGYgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB2IC0+IGYgdlxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUVsZW1lbnRTeW50YXggPSByZWYgYFVua25vd25cblxubGV0IHJlYyB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHQgPVxuICBpZiBQb2x5LihfdHlwZSA9IE5vbmUpICYmIFBvbHkuKG5hbWUgPSBOb25lKVxuICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdClcbiAgZWxzZVxuICAgIG1hdGNoICFjcmVhdGVFbGVtZW50U3ludGF4IHdpdGhcbiAgICB8IGBTdGFuZGFyZCAtPlxuICAgICAgICBsZXQgcmVzID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KSBpblxuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT4gcmVzIyMuX3R5cGUgOj0gdCk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+IHJlcyMjLm5hbWUgOj0gbik7XG4gICAgICAgIHJlc1xuICAgIHwgYEV4dGVuZGVkIC0+XG4gICAgICAgIGxldCBhID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaF8yIChKcy5zdHJpbmcgXCI8XCIpIChKcy5zdHJpbmcgZWx0KSk7XG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiB0eXBlPVxcXCJcIikgKGh0bWxfZXNjYXBlIHQpIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIG9wdF9pdGVyIG5hbWUgKGZ1biBuIC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIG5hbWU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgbikgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgaWdub3JlIChhIyNwdXNoIChKcy5zdHJpbmcgXCI+XCIpKTtcbiAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSAoZG9jIyNjcmVhdGVFbGVtZW50IChhIyNqb2luIChKcy5zdHJpbmcgXCJcIikpKVxuICAgIHwgYFVua25vd24gLT5cbiAgICAgICAgY3JlYXRlRWxlbWVudFN5bnRheCA6PVxuICAgICAgICAgIGlmIHRyeVxuICAgICAgICAgICAgICAgbGV0IGVsIDogaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAgICAgICAgICAgKGRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgXCI8aW5wdXQgbmFtZT1cXFwieFxcXCI+XCIpKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLmVxdWFscyBlbCMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgJiYgSnMuZXF1YWxzIGVsIyMubmFtZSAoSnMuc3RyaW5nIFwieFwiKVxuICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgIHRoZW4gYEV4dGVuZGVkXG4gICAgICAgICAgZWxzZSBgU3RhbmRhcmQ7XG4gICAgICAgIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdFxuXG5sZXQgY3JlYXRlSHRtbCBkb2MgOiBodG1sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJodG1sXCJcblxubGV0IGNyZWF0ZUhlYWQgZG9jIDogaGVhZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGVhZFwiXG5cbmxldCBjcmVhdGVMaW5rIGRvYyA6IGxpbmtFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmtcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZU1ldGEgZG9jIDogbWV0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YVwiXG5cbmxldCBjcmVhdGVCYXNlIGRvYyA6IGJhc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJhc2VcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZUJvZHkgZG9jIDogYm9keUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYm9keVwiXG5cbmxldCBjcmVhdGVGb3JtIGRvYyA6IGZvcm1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcm1cIlxuXG5sZXQgY3JlYXRlT3B0Z3JvdXAgZG9jIDogb3B0R3JvdXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGdyb3VwXCJcblxubGV0IGNyZWF0ZU9wdGlvbiBkb2MgOiBvcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9wdGlvblwiXG5cbmxldCBjcmVhdGVTZWxlY3QgP190eXBlID9uYW1lIGRvYyA6IHNlbGVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwic2VsZWN0XCJcblxubGV0IGNyZWF0ZUlucHV0ID9fdHlwZSA/bmFtZSBkb2MgOiBpbnB1dEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiaW5wdXRcIlxuXG5sZXQgY3JlYXRlVGV4dGFyZWEgP190eXBlID9uYW1lIGRvYyA6IHRleHRBcmVhRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJ0ZXh0YXJlYVwiXG5cbmxldCBjcmVhdGVCdXR0b24gP190eXBlID9uYW1lIGRvYyA6IGJ1dHRvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwiYnV0dG9uXCJcblxubGV0IGNyZWF0ZUxhYmVsIGRvYyA6IGxhYmVsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsYWJlbFwiXG5cbmxldCBjcmVhdGVGaWVsZHNldCBkb2MgOiBmaWVsZFNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmllbGRzZXRcIlxuXG5sZXQgY3JlYXRlTGVnZW5kIGRvYyA6IGxlZ2VuZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGVnZW5kXCJcblxubGV0IGNyZWF0ZVVsIGRvYyA6IHVMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1bFwiXG5cbmxldCBjcmVhdGVPbCBkb2MgOiBvTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2xcIlxuXG5sZXQgY3JlYXRlRGwgZG9jIDogZExpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRsXCJcblxubGV0IGNyZWF0ZUxpIGRvYyA6IGxpRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaVwiXG5cbmxldCBjcmVhdGVEaWFsb2cgZG9jIDogZGlhbG9nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaWFsb2dcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaWFsb2cgb2YgZGlhbG9nRWxlbWVudCB0XG4gIHwgRGl2IG9mIGRpdkVsZW1lbnQgdFxuICB8IERsIG9mIGRMaXN0RWxlbWVudCB0XG4gIHwgRW1iZWQgb2YgZW1iZWRFbGVtZW50IHRcbiAgfCBGaWVsZHNldCBvZiBmaWVsZFNldEVsZW1lbnQgdFxuICB8IEZvcm0gb2YgZm9ybUVsZW1lbnQgdFxuICB8IEZyYW1lc2V0IG9mIGZyYW1lU2V0RWxlbWVudCB0XG4gIHwgRnJhbWUgb2YgZnJhbWVFbGVtZW50IHRcbiAgfCBIMSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDIgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgzIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINCBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDUgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg2IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIZWFkIG9mIGhlYWRFbGVtZW50IHRcbiAgfCBIciBvZiBockVsZW1lbnQgdFxuICB8IEh0bWwgb2YgaHRtbEVsZW1lbnQgdFxuICB8IElmcmFtZSBvZiBpRnJhbWVFbGVtZW50IHRcbiAgfCBJbWcgb2YgaW1hZ2VFbGVtZW50IHRcbiAgfCBJbnB1dCBvZiBpbnB1dEVsZW1lbnQgdFxuICB8IElucyBvZiBtb2RFbGVtZW50IHRcbiAgfCBMYWJlbCBvZiBsYWJlbEVsZW1lbnQgdFxuICB8IExlZ2VuZCBvZiBsZWdlbmRFbGVtZW50IHRcbiAgfCBMaSBvZiBsaUVsZW1lbnQgdFxuICB8IExpbmsgb2YgbGlua0VsZW1lbnQgdFxuICB8IE1hcCBvZiBtYXBFbGVtZW50IHRcbiAgfCBNZXRhIG9mIG1ldGFFbGVtZW50IHRcbiAgfCBPYmplY3Qgb2Ygb2JqZWN0RWxlbWVudCB0XG4gIHwgT2wgb2Ygb0xpc3RFbGVtZW50IHRcbiAgfCBPcHRncm91cCBvZiBvcHRHcm91cEVsZW1lbnQgdFxuICB8IE9wdGlvbiBvZiBvcHRpb25FbGVtZW50IHRcbiAgfCBQIG9mIHBhcmFncmFwaEVsZW1lbnQgdFxuICB8IFBhcmFtIG9mIHBhcmFtRWxlbWVudCB0XG4gIHwgUHJlIG9mIHByZUVsZW1lbnQgdFxuICB8IFEgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBTY3JpcHQgb2Ygc2NyaXB0RWxlbWVudCB0XG4gIHwgU2VsZWN0IG9mIHNlbGVjdEVsZW1lbnQgdFxuICB8IFN0eWxlIG9mIHN0eWxlRWxlbWVudCB0XG4gIHwgVGFibGUgb2YgdGFibGVFbGVtZW50IHRcbiAgfCBUYm9keSBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUZCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUZXh0YXJlYSBvZiB0ZXh0QXJlYUVsZW1lbnQgdFxuICB8IFRmb290IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRoIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRoZWFkIG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRpdGxlIG9mIHRpdGxlRWxlbWVudCB0XG4gIHwgVHIgb2YgdGFibGVSb3dFbGVtZW50IHRcbiAgfCBVbCBvZiB1TGlzdEVsZW1lbnQgdFxuICB8IFZpZGVvIG9mIHZpZGVvRWxlbWVudCB0XG4gIHwgT3RoZXIgb2YgZWxlbWVudCB0XG5cbmxldCBvdGhlciBlID0gT3RoZXIgKGUgOiAjZWxlbWVudCB0IDo+IGVsZW1lbnQgdClcblxubGV0IHRhZ2dlZCAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHRhZyA9IEpzLnRvX2J5dGVzdHJpbmcgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIGluXG4gIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMFxuICB0aGVuIG90aGVyIGVcbiAgZWxzZVxuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHRhZyAwIHdpdGhcbiAgICB8ICdhJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJhXCIgLT4gQSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXJlYVwiIC0+IEFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImF1ZGlvXCIgLT4gQXVkaW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYmFzZVwiIC0+IEJhc2UgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJsb2NrcXVvdGVcIiAtPiBCbG9ja3F1b3RlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJib2R5XCIgLT4gQm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnJcIiAtPiBCciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYnV0dG9uXCIgLT4gQnV0dG9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImNhbnZhc1wiIC0+IENhbnZhcyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY2FwdGlvblwiIC0+IENhcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbFwiIC0+IENvbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sZ3JvdXBcIiAtPiBDb2xncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdkJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJkZWxcIiAtPiBEZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRpdlwiIC0+IERpdiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGxcIiAtPiBEbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdlJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJlbWJlZFwiIC0+IEVtYmVkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImZpZWxkc2V0XCIgLT4gRmllbGRzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZvcm1cIiAtPiBGb3JtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZXNldFwiIC0+IEZyYW1lc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmcmFtZVwiIC0+IEZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2gnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImgxXCIgLT4gSDEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgyXCIgLT4gSDIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImgzXCIgLT4gSDMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg0XCIgLT4gSDQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg1XCIgLT4gSDUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImg2XCIgLT4gSDYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhlYWRcIiAtPiBIZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoclwiIC0+IEhyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJodG1sXCIgLT4gSHRtbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdpJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJpZnJhbWVcIiAtPiBJZnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImltZ1wiIC0+IEltZyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5wdXRcIiAtPiBJbnB1dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW5zXCIgLT4gSW5zIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2wnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImxhYmVsXCIgLT4gTGFiZWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxlZ2VuZFwiIC0+IExlZ2VuZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlcIiAtPiBMaSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGlua1wiIC0+IExpbmsgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibWFwXCIgLT4gTWFwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJtZXRhXCIgLT4gTWV0YSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdvJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJvYmplY3RcIiAtPiBPYmplY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9sXCIgLT4gT2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGdyb3VwXCIgLT4gT3B0Z3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm9wdGlvblwiIC0+IE9wdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdwJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJwXCIgLT4gUCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicGFyYW1cIiAtPiBQYXJhbSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwicHJlXCIgLT4gUHJlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInFcIiAtPiBRIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3MnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInNjcmlwdFwiIC0+IFNjcmlwdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic2VsZWN0XCIgLT4gU2VsZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzdHlsZVwiIC0+IFN0eWxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInRhYmxlXCIgLT4gVGFibGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRib2R5XCIgLT4gVGJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRkXCIgLT4gVGQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRleHRhcmVhXCIgLT4gVGV4dGFyZWEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRmb290XCIgLT4gVGZvb3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoXCIgLT4gVGggKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRoZWFkXCIgLT4gVGhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRpdGxlXCIgLT4gVGl0bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInRyXCIgLT4gVHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidWxcIiAtPiBVbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd2JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ2aWRlb1wiIC0+IFZpZGVvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgXyAtPiBvdGhlciBlXG5cbmxldCBvcHRfdGFnZ2VkIGUgPSBPcHQuY2FzZSBlIChmdW4gKCkgLT4gTm9uZSkgKGZ1biBlIC0+IFNvbWUgKHRhZ2dlZCBlKSlcblxudHlwZSB0YWdnZWRFdmVudCA9XG4gIHwgTW91c2VFdmVudCBvZiBtb3VzZUV2ZW50IHRcbiAgfCBLZXlib2FyZEV2ZW50IG9mIGtleWJvYXJkRXZlbnQgdFxuICB8IE1lc3NhZ2VFdmVudCBvZiBtZXNzYWdlRXZlbnQgdFxuICB8IE1vdXNld2hlZWxFdmVudCBvZiBtb3VzZXdoZWVsRXZlbnQgdFxuICB8IE1vdXNlU2Nyb2xsRXZlbnQgb2YgbW91c2VTY3JvbGxFdmVudCB0XG4gIHwgUG9wU3RhdGVFdmVudCBvZiBwb3BTdGF0ZUV2ZW50IHRcbiAgfCBPdGhlckV2ZW50IG9mIGV2ZW50IHRcblxubGV0IHRhZ2dlZEV2ZW50IChldiA6ICNldmVudCBKcy50KSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKENvZXJjZVRvLm1vdXNlRXZlbnQgZXYpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKENvZXJjZVRvLmtleWJvYXJkRXZlbnQgZXYpXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKENvZXJjZVRvLndoZWVsRXZlbnQgZXYpXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgKENvZXJjZVRvLm1vdXNlU2Nyb2xsRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLnBvcFN0YXRlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvZXJjZVRvLm1lc3NhZ2VFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gT3RoZXJFdmVudCAoZXYgOj4gZXZlbnQgdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1lc3NhZ2VFdmVudCBldikpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gUG9wU3RhdGVFdmVudCBldikpXG4gICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZVNjcm9sbEV2ZW50IGV2KSlcbiAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2V3aGVlbEV2ZW50IGV2KSlcbiAgICAgICAgKGZ1biBldiAtPiBLZXlib2FyZEV2ZW50IGV2KSlcbiAgICAoZnVuIGV2IC0+IE1vdXNlRXZlbnQgZXYpXG5cbmxldCBvcHRfdGFnZ2VkRXZlbnQgZXYgPSBPcHQuY2FzZSBldiAoZnVuICgpIC0+IE5vbmUpIChmdW4gZXYgLT4gU29tZSAodGFnZ2VkRXZlbnQgZXYpKVxuXG5sZXQgc3RvcFByb3BhZ2F0aW9uIGV2ID1cbiAgbGV0IGUgPSBKcy5VbnNhZmUuY29lcmNlIGV2IGluXG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnN0b3BQcm9wYWdhdGlvblxuICAgIChmdW4gKCkgLT4gZSMjLmNhbmNlbEJ1YmJsZSA6PSBKcy5fdHJ1ZSlcbiAgICAoZnVuIF8gLT4gZSMjX3N0b3BQcm9wYWdhdGlvbilcblxubGV0IF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0ID1cbiAgSnMuVW5zYWZlLnB1cmVfZXhwciAoZnVuIF8gLT5cbiAgICAgIGxldCB3ID0gSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cgaW5cbiAgICAgIGxldCBsID1cbiAgICAgICAgWyB3IyMucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1velJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMub1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICBdXG4gICAgICBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCByZXEgPSBMaXN0LmZpbmQgKGZ1biBjIC0+IEpzLk9wdGRlZi50ZXN0IGMpIGwgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCByZXEgW3wgSnMuVW5zYWZlLmluamVjdCBjYWxsYmFjayB8XVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG5vdyAoKSA9IEpzLnRvX2Zsb2F0IChuZXclanMgSnMuZGF0ZV9ub3cpIyNnZXRUaW1lIGluXG4gICAgICAgIGxldCBsYXN0ID0gcmVmIChub3cgKCkpIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPlxuICAgICAgICAgIGxldCB0ID0gbm93ICgpIGluXG4gICAgICAgICAgbGV0IGR0ID0gIWxhc3QgKy4gKDEwMDAuIC8uIDYwLikgLS4gdCBpblxuICAgICAgICAgIGxldCBkdCA9IGlmIFBvbHkuKGR0IDwgMC4pIHRoZW4gMC4gZWxzZSBkdCBpblxuICAgICAgICAgIGxhc3QgOj0gdDtcbiAgICAgICAgICBpZ25vcmUgKHdpbmRvdyMjc2V0VGltZW91dCBjYWxsYmFjayAoSnMuZmxvYXQgZHQpKSlcblxuKCoqKiopXG5cbmxldCBoYXNQdXNoU3RhdGUgKCkgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSB3aW5kb3cjIy5oaXN0b3J5KSMjLnB1c2hTdGF0ZVxuXG5sZXQgaGFzUGxhY2Vob2xkZXIgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucGxhY2Vob2xkZXJcblxubGV0IGhhc1JlcXVpcmVkICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnJlcXVpcmVkXG5cbmxldCBvdmVyZmxvd19saW1pdCA9IDIxNDc0ODNfMDAwLlxuXG4oKiBtcyAqKVxuXG50eXBlIHRpbWVvdXRfaWRfc2FmZSA9IHRpbWVvdXRfaWQgb3B0aW9uIHJlZlxuXG5sZXQgc2V0VGltZW91dCBjYWxsYmFjayBkIDogdGltZW91dF9pZF9zYWZlID1cbiAgbGV0IGlkID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wIGQgKCkgPVxuICAgIGxldCBzdGVwLCByZW1haW4gPVxuICAgICAgaWYgUG9seS4oZCA+IG92ZXJmbG93X2xpbWl0KSB0aGVuIG92ZXJmbG93X2xpbWl0LCBkIC0uIG92ZXJmbG93X2xpbWl0IGVsc2UgZCwgMC5cbiAgICBpblxuICAgIGxldCBjYiA9IGlmIFBvbHkuKHJlbWFpbiA9IDAuKSB0aGVuIGNhbGxiYWNrIGVsc2UgbG9vcCByZW1haW4gaW5cbiAgICBpZCA6PSBTb21lICh3aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgY2IpIChKcy5mbG9hdCBzdGVwKSlcbiAgaW5cbiAgbG9vcCBkICgpO1xuICBpZFxuXG5sZXQgY2xlYXJUaW1lb3V0IChpZCA6IHRpbWVvdXRfaWRfc2FmZSkgPVxuICBtYXRjaCAhaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIGlkIDo9IE5vbmU7XG4gICAgICB3aW5kb3cjI2NsZWFyVGltZW91dCB4XG5cbmxldCBqc19hcnJheV9vZl9jb2xsZWN0aW9uIChjIDogI2VsZW1lbnQgY29sbGVjdGlvbiBKcy50KSA6ICNlbGVtZW50IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgID1cbiAgSnMuVW5zYWZlLihtZXRoX2NhbGwgKGpzX2V4cHIgXCJbXS5zbGljZVwiKSBcImNhbGxcIiBbfCBpbmplY3QgYyB8XSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgZm9ybURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIGFwcGVuZCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRfYmxvYiA6IGpzX3N0cmluZyB0IC0+IEZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBmb3JtRGF0YSA6IGZvcm1EYXRhIHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG5sZXQgZm9ybURhdGFfZm9ybSA6IChmb3JtRWxlbWVudCB0IC0+IGZvcm1EYXRhIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxudHlwZSBmb3JtX2VsdCA9XG4gIFsgYFN0cmluZyBvZiBqc19zdHJpbmcgdFxuICB8IGBGaWxlIG9mIEZpbGUuZmlsZSB0XG4gIF1cblxudHlwZSBmb3JtX2NvbnRlbnRzID1cbiAgWyBgRmllbGRzIG9mIChzdHJpbmcgKiBmb3JtX2VsdCkgbGlzdCByZWZcbiAgfCBgRm9ybURhdGEgb2YgZm9ybURhdGEgdFxuICBdXG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmNsYXNzIHR5cGUgc3VibWl0dGFibGVFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmxldCBoYXZlX2NvbnRlbnQgKGVsdCA6IHN1Ym1pdHRhYmxlRWxlbWVudCB0KSA9XG4gIGVsdCMjLm5hbWUjIy5sZW5ndGggPiAwICYmIG5vdCAoSnMudG9fYm9vbCBlbHQjIy5kaXNhYmxlZClcblxubGV0IGdldF90ZXh0YXJlYV92YWwgKGVsdCA6IHRleHRBcmVhRWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9zZWxlY3RfdmFsIChlbHQgOiBzZWxlY3RFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgaWYgdG9fYm9vbCBlbHQjIy5tdWx0aXBsZVxuICAgIHRoZW5cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgQXJyYXkuaW5pdCBlbHQjIy5vcHRpb25zIyMubGVuZ3RoIChmdW4gaSAtPiBPcHQudG9fb3B0aW9uIChlbHQjIy5vcHRpb25zIyNpdGVtIGkpKVxuICAgICAgaW5cbiAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgICAgICBpZiBKcy50b19ib29sIGUjIy5zZWxlY3RlZCB0aGVuIFNvbWUgKG5hbWUsIGBTdHJpbmcgZSMjLnZhbHVlKSBlbHNlIE5vbmUpXG4gICAgICAgIChBcnJheS50b19saXN0IG9wdGlvbnMpXG4gICAgZWxzZSBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmNsYXNzIHR5cGUgZmlsZV9pbnB1dCA9IG9iamVjdFxuICBpbmhlcml0IGlucHV0RWxlbWVudFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZ2V0X2lucHV0X3ZhbCA/KGdldCA9IGZhbHNlKSAoZWx0IDogaW5wdXRFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgbGV0IHZhbHVlID0gZWx0IyMudmFsdWUgaW5cbiAgICBtYXRjaCB0b19ieXRlc3RyaW5nIGVsdCMjLl90eXBlIyN0b0xvd2VyQ2FzZSB3aXRoXG4gICAgfCBcImNoZWNrYm94XCIgfCBcInJhZGlvXCIgLT5cbiAgICAgICAgaWYgdG9fYm9vbCBlbHQjIy5jaGVja2VkIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF0gZWxzZSBbXVxuICAgIHwgXCJzdWJtaXRcIiB8IFwicmVzZXRcIiAtPiBbXVxuICAgIHwgXCJ0ZXh0XCIgfCBcInBhc3N3b3JkXCIgLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICB8IFwiZmlsZVwiIC0+IChcbiAgICAgICAgaWYgZ2V0XG4gICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBlbHQgOiBmaWxlX2lucHV0IHQgPSBVbnNhZmUuY29lcmNlIGVsdCBpblxuICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMuZmlsZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBsaXN0IC0+IChcbiAgICAgICAgICAgICAgaWYgbGlzdCMjLmxlbmd0aCA9IDBcbiAgICAgICAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgKEpzLnN0cmluZyBcIlwiKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLm11bHRpcGxlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+IChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobGlzdCMjaXRlbSAwKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBbIG5hbWUsIGBGaWxlIGZpbGUgXSlcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIGYgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFNvbWUgKG5hbWUsIGBGaWxlIGZpbGUpKVxuICAgICAgICAgICAgICAgICAgICAgIChBcnJheS50b19saXN0IChBcnJheS5pbml0IGxpc3QjIy5sZW5ndGggKGZ1biBpIC0+IGxpc3QjI2l0ZW0gaSkpKSkpXG4gICAgfCBfIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gIGVsc2UgW11cblxubGV0IGdldF9mb3JtX2VsZW1lbnRzIChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChmb3JtIyMuZWxlbWVudHMjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIChpIC0gaSlcbiAgICAgIHwgU29tZSB4IC0+IGxvb3AgKHggOjogYWNjKSAoaSAtIDEpXG4gIGluXG4gIGxvb3AgW10gKGZvcm0jIy5lbGVtZW50cyMjLmxlbmd0aCAtIDEpXG5cbmxldCBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdiA9XG4gIG1hdGNoIHRhZ2dlZCB2IHdpdGhcbiAgfCBTZWxlY3QgdiAtPiBnZXRfc2VsZWN0X3ZhbCB2XG4gIHwgSW5wdXQgdiAtPiBnZXRfaW5wdXRfdmFsID9nZXQgdlxuICB8IFRleHRhcmVhIHYgLT4gZ2V0X3RleHRhcmVhX3ZhbCB2XG4gIHwgXyAtPiBbXVxuXG5sZXQgZm9ybV9lbGVtZW50cyA/Z2V0IChmb3JtIDogZm9ybUVsZW1lbnQgdCkgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gdiAtPiBnZXRfZWxlbWVudF9jb250ZW50ID9nZXQgdikgKGdldF9mb3JtX2VsZW1lbnRzIGZvcm0pKVxuXG5sZXQgYXBwZW5kIChmb3JtX2NvbnRlbnRzIDogZm9ybV9jb250ZW50cykgKGZvcm1fZWx0IDogc3RyaW5nICogZm9ybV9lbHQpID1cbiAgbWF0Y2ggZm9ybV9jb250ZW50cyB3aXRoXG4gIHwgYEZpZWxkcyBsaXN0IC0+IGxpc3QgOj0gZm9ybV9lbHQgOjogIWxpc3RcbiAgfCBgRm9ybURhdGEgZiAtPiAoXG4gICAgICBtYXRjaCBmb3JtX2VsdCB3aXRoXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBmIyNhcHBlbmQgKHN0cmluZyBuYW1lKSBzXG4gICAgICB8IG5hbWUsIGBGaWxlIGZpbGUgLT4gZiMjYXBwZW5kX2Jsb2IgKHN0cmluZyBuYW1lKSAoZmlsZSA6PiBGaWxlLmJsb2IgdCkpXG5cbmxldCBlbXB0eV9mb3JtX2NvbnRlbnRzICgpID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiAoSnMuZGVmIGZvcm1EYXRhKSB3aXRoXG4gIHwgTm9uZSAtPiBgRmllbGRzIChyZWYgW10pXG4gIHwgU29tZSBjb25zdHIgLT4gYEZvcm1EYXRhIChuZXclanMgY29uc3RyKVxuXG5sZXQgcG9zdF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBsZXQgY29udGVudHMgPSBlbXB0eV9mb3JtX2NvbnRlbnRzICgpIGluXG4gIExpc3QuaXRlciAoYXBwZW5kIGNvbnRlbnRzKSAoZm9ybV9lbGVtZW50cyBmb3JtKTtcbiAgY29udGVudHNcblxubGV0IGdldF9mb3JtX2NvbnRlbnRzIGZvcm0gPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gbmFtZSwgdG9fc3RyaW5nIHNcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgKGZvcm1fZWxlbWVudHMgfmdldDp0cnVlIGZvcm0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgVU5TRU5UXG4gIHwgT1BFTkVEXG4gIHwgSEVBREVSU19SRUNFSVZFRFxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbnR5cGUgXyByZXNwb25zZSA9XG4gIHwgQXJyYXlCdWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IE9wdC50IHJlc3BvbnNlXG4gIHwgQmxvYiA6ICNGaWxlLmJsb2IgdCBPcHQudCByZXNwb25zZVxuICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBKU09OIDogJ2EgT3B0LnQgcmVzcG9uc2VcbiAgfCBUZXh0IDoganNfc3RyaW5nIHQgcmVzcG9uc2VcbiAgfCBEZWZhdWx0IDogc3RyaW5nIHJlc3BvbnNlXG5cbmNsYXNzIHR5cGUgeG1sSHR0cFJlcXVlc3QgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25yZWFkeXN0YXRlY2hhbmdlIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfb3BlbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgX29wZW5fZnVsbCA6XG4gICAgICAganNfc3RyaW5nIHRcbiAgICAtPiBqc19zdHJpbmcgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IGpzX3N0cmluZyB0IG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSZXF1ZXN0SGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG92ZXJyaWRlTWltZVR5cGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZCA6IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogI0ZpbGUuYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2RvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZm9ybURhdGEgOiBGb3JtLmZvcm1EYXRhIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0YXR1cyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXR1c1RleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJlc3BvbnNlSGVhZGVyIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXNwb25zZSA6IEZpbGUuZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVRleHQgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVhNTCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb250aW1lb3V0IDpcbiAgICAoJ3NlbGYgdCwgJ3NlbGYgRmlsZS5wcm9ncmVzc0V2ZW50IHQpIERvbS5ldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGxvYWQgOiB4bWxIdHRwUmVxdWVzdFVwbG9hZCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHhtbEh0dHBSZXF1ZXN0VXBsb2FkID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBGaWxlLnByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSB4bWxIdHRwUmVxdWVzdCBGaWxlLnByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIlxuXG4gIGxldCBsb2Fkc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRzdGFydFwiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRG9tLkV2ZW50Lm1ha2UgXCJlcnJvclwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB0aW1lb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1lb3V0XCJcblxuICBsZXQgbG9hZGVuZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVuZFwiXG5lbmRcblxuZXh0ZXJuYWwgY3JlYXRlIDogdW5pdCAtPiB4bWxIdHRwUmVxdWVzdCBKcy50ID0gXCJjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVwiXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IE9DYW1sUHJvOiBHcsOpZ29pcmUgSGVucnksIMOHYcSfZGHFnyBCb3ptYW4uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHdvcmtlciA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBlcnJvckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnYiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcG9zdE1lc3NhZ2UgOiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGVybWluYXRlIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGVycm9yRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGluZW5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29sbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IFVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiAnYSByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdvcmtlciA9IFVuc2FmZS5nbG9iYWwjIy5fV29ya2VyXG5cbmxldCBjcmVhdGUgc2NyaXB0ID0gbmV3JWpzIHdvcmtlciAoc3RyaW5nIHNjcmlwdClcblxubGV0IGltcG9ydF9zY3JpcHRzIHNjcmlwdHMgOiB1bml0ID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0cylcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5pbXBvcnRfc2NyaXB0cyBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmZ1bl9jYWxsXG4gICAgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHNcbiAgICAoQXJyYXkubWFwIChmdW4gcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcykpIChBcnJheS5vZl9saXN0IHNjcmlwdHMpKVxuXG5sZXQgc2V0X29ubWVzc2FnZSBoYW5kbGVyID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgbGV0IGpzX2hhbmRsZXIgKGV2IDogJ2EgbWVzc2FnZUV2ZW50IEpzLnQpID0gaGFuZGxlciBldiMjLmRhdGEgaW5cbiAgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSA6PSB3cmFwX2NhbGxiYWNrIGpzX2hhbmRsZXJcblxubGV0IHBvc3RfbWVzc2FnZSBtc2cgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5wb3N0TWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5nbG9iYWwjI3Bvc3RNZXNzYWdlIG1zZ1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKYWNxdWVzLVBhc2NhbCBEZXBsYWl4XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVhZHlTdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TSU5HXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBjbG9zZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgY29kZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYXNvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2FzQ2xlYW4gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB3ZWJTb2NrZXQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHVybCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZEFtb3VudCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2xvc2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBjbG9zZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZXh0ZW5zaW9ucyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlIDogaW50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZUFuZFJlYXNvbiA6IGludCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25tZXNzYWdlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgbWVzc2FnZUV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiaW5hcnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBzZW5kIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9ibG9iIDogRmlsZS5ibG9iIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHdlYlNvY2tldCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29sID0gd2ViU29ja2V0XG5cbmxldCB3ZWJTb2NrZXRfd2l0aFByb3RvY29scyA9IHdlYlNvY2tldFxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3Qgd2ViU29ja2V0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbigqKiA1LjEgVHlwZXMgKilcblxudHlwZSBzaXplaSA9IGludFxuXG50eXBlIHNpemVpcHRyID0gaW50XG5cbnR5cGUgaW50cHRyID0gaW50XG5cbnR5cGUgdWludCA9IGludFxuXG50eXBlIGNsYW1wZiA9IG51bWJlcl90XG5cbnR5cGUgdm9pZFxuXG50eXBlIGNsZWFyQnVmZmVyTWFzayA9IGludFxuXG50eXBlIGJlZ2luTW9kZVxuXG50eXBlIGJsZW5kaW5nRmFjdG9yXG5cbnR5cGUgYmxlbmRNb2RlXG5cbnR5cGUgYnVmZmVyVGFyZ2V0XG5cbnR5cGUgYnVmZmVyVXNhZ2VcblxudHlwZSBjdWxsRmFjZU1vZGVcblxudHlwZSBkZXB0aEZ1bmN0aW9uXG5cbnR5cGUgZW5hYmxlQ2FwXG5cbnR5cGUgZXJyb3JDb2RlXG5cbnR5cGUgZnJvbnRGYWNlRGlyXG5cbnR5cGUgaGludFRhcmdldFxuXG50eXBlIGhpbnRNb2RlXG5cbnR5cGUgdGV4dHVyZVVuaXQgPSBpbnRcblxudHlwZSAnYSBwaXhlbFN0b3JlUGFyYW1cblxudHlwZSBzdGVuY2lsT3BcblxudHlwZSBmYlRhcmdldFxuXG50eXBlIGF0dGFjaG1lbnRQb2ludFxuXG50eXBlIHJiVGFyZ2V0XG5cbnR5cGUgdGV4VGFyZ2V0XG5cbnR5cGUgJ2EgcGFyYW1ldGVyXG5cbnR5cGUgJ2EgYnVmZmVyUGFyYW1ldGVyXG5cbnR5cGUgJ2EgdmVydGV4QXR0cmliUGFyYW1cblxudHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW1cblxudHlwZSAnYSBhdHRhY2hQYXJhbVxuXG50eXBlIGZyYW1lYnVmZmVyU3RhdHVzXG5cbnR5cGUgJ2EgcmVuZGVyYnVmZmVyUGFyYW1cblxudHlwZSBmb3JtYXRcblxudHlwZSBwaXhlbEZvcm1hdFxuXG50eXBlIHBpeGVsVHlwZVxuXG50eXBlICdhIHRleFBhcmFtXG5cbnR5cGUgZGF0YVR5cGVcblxudHlwZSBzaGFkZXJUeXBlXG5cbnR5cGUgJ2EgcHJvZ3JhbVBhcmFtXG5cbnR5cGUgJ2Egc2hhZGVyUGFyYW1cblxudHlwZSB0ZXh0dXJlRmlsdGVyXG5cbnR5cGUgd3JhcE1vZGVcblxudHlwZSB0ZXhGaWx0ZXJcblxudHlwZSB1bmlmb3JtVHlwZVxuXG50eXBlIGNvbG9yc3BhY2VDb252ZXJzaW9uXG5cbnR5cGUgc2hhZGVyUHJlY2lzaW9uVHlwZVxuXG50eXBlIG9iamVjdFR5cGVcblxuKCoqIDUuMiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzICopXG5jbGFzcyB0eXBlIGNvbnRleHRBdHRyaWJ1dGVzID0gb2JqZWN0XG4gIG1ldGhvZCBhbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGRlcHRoIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3RlbmNpbCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGFudGlhbGlhcyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZW11bHRpcGxpZWRBbHBoYSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2UgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogYm9vbCB0IHByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzID1cbiAgSnMuVW5zYWZlLihcbiAgICBvYmpcbiAgICAgIFt8IFwiYWxwaGFcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcImRlcHRoXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJzdGVuY2lsXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiYW50aWFsaWFzXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJwcmVtdWx0aXBsaWVkQWxwaGFcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXJcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICB8XSlcblxudHlwZSBidWZmZXJcblxudHlwZSBmcmFtZWJ1ZmZlclxuXG50eXBlIHByb2dyYW1cblxudHlwZSByZW5kZXJidWZmZXJcblxudHlwZSBzaGFkZXJcblxudHlwZSB0ZXh0dXJlXG5cbnR5cGUgJ2EgdW5pZm9ybUxvY2F0aW9uXG5cbmNsYXNzIHR5cGUgYWN0aXZlSW5mbyA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2hhZGVyUHJlY2lzaW9uRm9ybWF0ID0gb2JqZWN0XG4gIG1ldGhvZCByYW5nZU1pbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJhbmdlTWF4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlY2lzaW9uIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlbmRlcmluZ0NvbnRleHQgPSBvYmplY3RcbiAgKCoqIDUuMTMuMSBBdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGNhbnZhcyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJXaWR0aCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlckhlaWdodCA6IHNpemVpIHJlYWRvbmx5X3Byb3BcblxuICAoKiogNS4xMy4yIEdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRleHQgKilcblxuICBtZXRob2QgZ2V0Q29udGV4dEF0dHJpYnV0ZXMgOiBjb250ZXh0QXR0cmlidXRlcyB0IG1ldGhcblxuICAoKiogNS4xMy4zIFNldHRpbmcgYW5kIGdldHRpbmcgc3RhdGUgKilcblxuICBtZXRob2QgYWN0aXZlVGV4dHVyZSA6IHRleHR1cmVVbml0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZENvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uIDogYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUgOiBibGVuZE1vZGUgLT4gYmxlbmRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmMgOiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jU2VwYXJhdGUgOlxuICAgIGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckNvbG9yIDogY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRlcHRoIDogY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhclN0ZW5jaWwgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbG9yTWFzayA6IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3VsbEZhY2UgOiBjdWxsRmFjZU1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoTWFzayA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhSYW5nZSA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpc2FibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJvbnRGYWNlIDogZnJvbnRGYWNlRGlyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXJhbWV0ZXIgOiAnYS4gJ2EgcGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0RXJyb3IgOiBlcnJvckNvZGUgbWV0aFxuXG4gIG1ldGhvZCBoaW50IDogaGludFRhcmdldCAtPiBoaW50TW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNFbmFibGVkIDogZW5hYmxlQ2FwIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwaXhlbFN0b3JlaSA6ICdhLiAnYSBwaXhlbFN0b3JlUGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBvbHlnb25PZmZzZXQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2FtcGxlQ292ZXJhZ2UgOiBjbGFtcGYgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuYyA6IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2sgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFza1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcCA6IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3BTZXBhcmF0ZSA6XG4gICAgY3VsbEZhY2VNb2RlIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjQgVmlld2luZyBhbmQgY2xpcHBpbmcgKilcblxuICBtZXRob2Qgc2Npc3NvciA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy41IEJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXIgOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRCdWZmZXJfIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9jcmVhdGUgOiBidWZmZXJUYXJnZXQgLT4gc2l6ZWlwdHIgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGFfcmF3IDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUJ1ZmZlciA6IGJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQnVmZmVyIDogYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEJ1ZmZlclBhcmFtZXRlciA6ICdhLiBidWZmZXJUYXJnZXQgLT4gJ2EgYnVmZmVyUGFyYW1ldGVyIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNCdWZmZXIgOiBidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjYgRnJhbWVidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXIgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kRnJhbWVidWZmZXJfIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlclN0YXR1cyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZnJhbWVidWZmZXJUZXh0dXJlMkQgOlxuICAgIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyIDpcbiAgICAnYS4gZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+ICdhIGF0dGFjaFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy43IFJlbmRlcmJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXIgOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlcl8gOiByYlRhcmdldCAtPiByZW5kZXJidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlciA6ICdhLiByYlRhcmdldCAtPiAnYSByZW5kZXJidWZmZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgcmVuZGVyYnVmZmVyU3RvcmFnZSA6IHJiVGFyZ2V0IC0+IGZvcm1hdCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy44IFRleHR1cmUgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZSA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlXyA6IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4SW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleEltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gcGl4ZWxGb3JtYXQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhTdWJJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dHVyZSA6IHRleHR1cmUgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdlbmVyYXRlTWlwbWFwIDogdGV4VGFyZ2V0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUZXhQYXJhbWV0ZXIgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1RleHR1cmUgOiB0ZXh0dXJlIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9uZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gdm9pZCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqIHtbXG4gICAgICBtZXRob2QgdGV4UGFyYW1ldGVyZiA6IHRleFRhcmdldCAtPiB0ZXhQYXJhbSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbiAgICAgXX1cbiAgKilcbiAgbWV0aG9kIHRleFBhcmFtZXRlcmkgOiB0ZXhUYXJnZXQgLT4gJ2EgdGV4UGFyYW0gLT4gJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VEYXRhIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2UgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC52aWRlb0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjkgUHJvZ3JhbXMgYW5kIFNoYWRlcnMgKilcblxuICBtZXRob2QgYXR0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcGlsZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU2hhZGVyIDogc2hhZGVyVHlwZSAtPiBzaGFkZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVNoYWRlciA6IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dGFjaGVkU2hhZGVycyA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbVBhcmFtZXRlciA6ICdhLiBwcm9ncmFtIHQgLT4gJ2EgcHJvZ3JhbVBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0UHJvZ3JhbUluZm9Mb2cgOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQYXJhbWV0ZXIgOiAnYS4gc2hhZGVyIHQgLT4gJ2Egc2hhZGVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgOlxuICAgIHNoYWRlclR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlckluZm9Mb2cgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgaXNQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGlzU2hhZGVyIDogc2hhZGVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGlua1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNoYWRlclNvdXJjZSA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1c2VQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2YWxpZGF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTAgVW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVBdHRyaWIgOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBY3RpdmVVbmlmb3JtIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmliTG9jYXRpb24gOiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybSA6ICdhICdiLiBwcm9ncmFtIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtTG9jYXRpb24gOiAnYS4gcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliIDogJ2EuIHVpbnQgLT4gJ2EgdmVydGV4QXR0cmliUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQgOiB1aW50IC0+IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSAtPiBzaXplaXB0ciBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2X3R5cGVkIDpcbiAgICBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdiA6IG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaSA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXZfdHlwZWQgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2IDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnZfdHlwZWQgOlxuICAgIFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmkgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXYgOiBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2X3R5cGVkIDpcbiAgICBbIGBpdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnZfdHlwZWQgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdiA6IFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2kgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2IDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdl90eXBlZCA6XG4gICAgWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZiA6XG4gICAgICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdl90eXBlZCA6XG4gICAgWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2IDogWyBgdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aSA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2IDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdl90eXBlZCA6XG4gICAgWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnYgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdl90eXBlZCA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdiA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2X3R5cGVkIDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2IDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnZfdHlwZWQgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmIDogdWludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2YgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmIDpcbiAgICB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYlBvaW50ZXIgOlxuICAgIHVpbnQgLT4gaW50IC0+IGRhdGFUeXBlIC0+IGJvb2wgdCAtPiBzaXplaSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTEgV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKilcblxuICBtZXRob2QgY2xlYXIgOiBjbGVhckJ1ZmZlck1hc2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdBcnJheXMgOiBiZWdpbk1vZGUgLT4gaW50IC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3RWxlbWVudHMgOiBiZWdpbk1vZGUgLT4gc2l6ZWkgLT4gZGF0YVR5cGUgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaW5pc2ggOiB1bml0IG1ldGhcblxuICBtZXRob2QgZmx1c2ggOiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMiBSZWFkaW5nIGJhY2sgcGl4ZWxzICopXG5cbiAgbWV0aG9kIHJlYWRQaXhlbHMgOlxuICAgICAgIGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEzIERldGVjdGluZyBjb250ZXh0IGxvc3QgZXZlbnRzICopXG5cbiAgbWV0aG9kIGlzQ29udGV4dExvc3QgOiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjE0IERldGVjdGluZyBhbmQgZW5hYmxpbmcgZXh0ZW5zaW9ucyAqKVxuXG4gIG1ldGhvZCBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVuc2lvbiA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSB0IG9wdCBtZXRoXG5cbiAgKCogVW50eXBlZCEgKilcbiAgKCoqIENvbnN0YW50cyAqKVxuXG4gIG1ldGhvZCBfREVQVEhfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0lOVFMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9MT09QXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRVMgOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX0ZBTl8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVSTyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORSA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NSQ19BTFBIQV9TQVRVUkFURV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX0FERF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19SRVZFUlNFX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVFJFQU1fRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEFUSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EWU5BTUlDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlQgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkFDSyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9BTkRfQkFDS18gOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORCA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVIgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT19FUlJPUl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9FTlVNXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX1ZBTFVFXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT1VUX09GX01FTU9SWV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OVEVYVF9MT1NUX1dFQkdMXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTl8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RPTlRfQ0FSRV8gOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GQVNURVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTklDRVNUIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfIDogaGludFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX1JHQl8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OX0FMUEhBXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX1JHQl8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0NPTE9SXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ESVRIRVJfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX1dJRFRIXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfTElORV9XSURUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX01PREVfIDogY3VsbEZhY2VNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVF9GQUNFXyA6IGZyb250RmFjZURpciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1dSSVRFTUFTS18gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NMRUFSX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9GVU5DXyA6IGRlcHRoRnVuY3Rpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQ0xFQVJfVkFMVUVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19SRUZfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WSUVXUE9SVCA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9CT1hfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9DTEVBUl9WQUxVRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfV1JJVEVNQVNLXyA6IGJvb2wgdCBqc19hcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UX1BBUkFNIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVklFV1BPUlRfRElNU18gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NVQlBJWEVMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRURfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUVOX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTFVFX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX1VOSVRTXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GQUNUT1JfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR18yRF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0JVRkZFUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX1ZBTFVFXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogVHlwZWRfYXJyYXkudWludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VORVJBVEVfTUlQTUFQX0hJTlRfUEFSQU1fIDogaGludE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9TSVpFXyA6IGludCBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1VTQUdFXyA6IGJ1ZmZlclVzYWdlIGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CWVRFIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV9EVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIT1JUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfSU5UXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfQllURV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNF80XzRfNF8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV81XzVfMV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5TSUdORURfU0hPUlRfNV82XzVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xVTUlOQU5DRV9BTFBIQV8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQUdNRU5UX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX0FUVFJJQlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WQVJZSU5HX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURFUl9UWVBFXyA6IHNoYWRlclR5cGUgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09NUElMRV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfUFJPRyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElOS19TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WQUxJREFURV9TVEFUVVNfIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BVFRBQ0hFRF9TSEFERVJTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1VOSUZPUk1TXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX0FUVFJJQlVURVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05fIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfUFJPR1JBTV8gOiBwcm9ncmFtIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRU5ET1IgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSRVIgOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSU0lPTiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUNUSVZFX1RFWFRVUkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9CSU5ESU5HXyA6IGZyYW1lYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQklORElOR18gOiByZW5kZXJidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9SRU5ERVJCVUZGRVJfU0laRSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVWRVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFU1MgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dSRUFURVIgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PVEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMV0FZUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfS0VFUCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBMQUNFIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZFUlQgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk9fIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1QgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NQUdfRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01JTl9GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9TXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfV1JBUF9UXyA6IHdyYXBNb2RlIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV8yRF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMTkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjMgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjYgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMjkgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzAgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMzEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRVBFQVQgOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DTEFNUF9UT19FREdFXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01JUlJPUkVEX1JFUEVBVF8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSXzJEXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfQ1VCRV8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJfIDogdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDpcbiAgICBidWZmZXIgdCBvcHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9WRVJURVhfQVRUUklCXyA6XG4gICAgVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSElHSF9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUiA6IGZiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUiA6IHJiVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkE0IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjVfQTFfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQjU2NSA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlQxNl8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWDhfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9XSURUSF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0hFSUdIVF8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVF8gOiBmb3JtYXQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1JFRF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JMVUVfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXyA6IG9iamVjdFR5cGUgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9SRU5ERVJCVUZGRVIgOlxuICAgIHJlbmRlcmJ1ZmZlciB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfVEVYVFVSRSA6IHRleHR1cmUgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUxfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9BVFRBQ0hNRU5UMF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0NPTVBMRVRFXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMX1BBUkFNIDpcbiAgICBjb2xvcnNwYWNlQ29udmVyc2lvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORSA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JST1dTRVJfREVGQVVMVF9XRUJHTF8gOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQUxJR05NRU5UXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0ZMSVBfWV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF8gOiBib29sIHQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIDUuMTQgV2ViR0xDb250ZXh0RXZlbnQgKilcblxuY2xhc3MgdHlwZSBjb250ZXh0RXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFxuXG4gIG1ldGhvZCBzdGF0dXNNZXNzYWdlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgd2ViZ2xjb250ZXh0bG9zdCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRsb3N0XCJcblxuICBsZXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JcIlxuZW5kXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGNhbnZhc0VsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGdldENvbnRleHQgOiBqc19zdHJpbmcgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dF8gOiBqc19zdHJpbmcgdCAtPiBjb250ZXh0QXR0cmlidXRlcyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBnZXRDb250ZXh0IChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjICMjIChnZXRDb250ZXh0IChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikpXG5cbmxldCBnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpIGF0dHJpYnMgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcIndlYmdsXCIpIGF0dHJpYnMgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyMjZ2V0Q29udGV4dF8gKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSBhdHRyaWJzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdCwgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcmVnZXhwID0gSnMucmVnRXhwIEpzLnRcblxudHlwZSByZXN1bHQgPSBKcy5tYXRjaF9yZXN1bHQgSnMudFxuXG5sZXQgcmVnZXhwIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdpXCIpXG5cbmxldCByZWdleHBfd2l0aF9mbGFnIHMgZiA9XG4gIG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgKFwiZ1wiIF4gZikpXG5cbmxldCBibHVudF9zdHJfYXJyYXlfZ2V0IGEgaSA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBhIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHN0cmluZ19tYXRjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0Lm1hcCAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSkgSnMubWF0Y2hfcmVzdWx0KVxuXG5sZXQgc2VhcmNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uXG4gICAgKEpzLk9wdC5tYXBcbiAgICAgICAociMjZXhlYyAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAoZnVuIHJlc19wcmUgLT5cbiAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgcmVzX3ByZSBpblxuICAgICAgICAgcmVzIyMuaW5kZXgsIHJlcykpXG5cbmxldCBzZWFyY2hfZm9yd2FyZCA9IHNlYXJjaFxuXG5sZXQgbWF0Y2hlZF9zdHJpbmcgciA9IGJsdW50X3N0cl9hcnJheV9nZXQgciAwXG5cbmxldCBtYXRjaGVkX2dyb3VwIHIgaSA9XG4gIEpzLk9wdGRlZi50b19vcHRpb24gKEpzLk9wdGRlZi5tYXAgKEpzLmFycmF5X2dldCByIGkpIEpzLnRvX2J5dGVzdHJpbmcpXG5cbmxldCBxdW90ZV9yZXBsX3JlID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlskXVwiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgcXVvdGVfcmVwbCBzID0gKEpzLmJ5dGVzdHJpbmcgcykjI3JlcGxhY2UgcXVvdGVfcmVwbF9yZSAoSnMuc3RyaW5nIFwiJCQkJFwiKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgciBzIHNfYnkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgciAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IHJlcGxhY2VfZmlyc3QgciBzIHNfYnkgPVxuICBsZXQgZmxhZ3MgPVxuICAgIG1hdGNoIEpzLnRvX2Jvb2wgciMjLmlnbm9yZUNhc2UsIEpzLnRvX2Jvb2wgciMjLm11bHRpbGluZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiXCJcbiAgICB8IGZhbHNlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1cIlxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gSnMuc3RyaW5nIFwiaVwiXG4gICAgfCB0cnVlLCB0cnVlIC0+IEpzLnN0cmluZyBcIm1pXCJcbiAgaW5cbiAgbGV0IHInID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgciMjLnNvdXJjZSBmbGFncyBpblxuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHInIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgbGlzdF9vZl9qc19hcnJheSBhID1cbiAgbGV0IHJlYyBhdXggYWNjdSBpZHggPVxuICAgIGlmIGlkeCA8IDAgdGhlbiBhY2N1IGVsc2UgYXV4IChibHVudF9zdHJfYXJyYXlfZ2V0IGEgaWR4IDo6IGFjY3UpIChpZHggLSAxKVxuICBpblxuICBhdXggW10gKGEjIy5sZW5ndGggLSAxKVxuXG5sZXQgc3BsaXQgciBzID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cCByKSlcblxubGV0IGJvdW5kZWRfc3BsaXQgciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwTGltaXRlZCByIGkpKVxuXG4oKiBNb3JlIGNvbnN0cnVjdG9ycyAqKVxuXG5sZXQgcXVvdGVfcmUgPSByZWdleHAgXCJbXFxcXF1bKClcXFxcXFxcXHwrKi4/e31eJF1cIlxuXG5sZXQgcXVvdGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcXVvdGVfcmUgKEpzLnN0cmluZyBcIlxcXFwkJlwiKSlcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IHJlZ2V4cCAocXVvdGUgcylcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSByZWdleHBfY2FzZV9mb2xkIChxdW90ZSBzKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFVybCB0YW1wZXJpbmcuICopXG5cbmxldCBzcGxpdCBjIHMgPSBKcy5zdHJfYXJyYXkgKHMjI3NwbGl0IChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpKVxuXG5sZXQgc3BsaXRfMiBjIHMgPVxuICBsZXQgaW5kZXggPSBzIyNpbmRleE9mIChKcy5zdHJpbmcgKFN0cmluZy5tYWtlIDEgYykpIGluXG4gIGlmIGluZGV4IDwgMCB0aGVuIEpzLnVuZGVmaW5lZCBlbHNlIEpzLmRlZiAocyMjc2xpY2UgMCBpbmRleCwgcyMjc2xpY2VfZW5kIChpbmRleCArIDEpKVxuXG5leGNlcHRpb24gTG9jYWxfZXhuXG5cbmxldCBpbnRlcnJ1cHQgKCkgPSByYWlzZSBMb2NhbF9leG5cblxuKCogdXJsIChBS0EgcGVyY2VudCkgZW5jb2RpbmcvZGVjb2RpbmcgKilcblxubGV0IHBsdXNfcmUgPSBSZWdleHAucmVnZXhwX3N0cmluZyBcIitcIlxuXG5sZXQgZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIlMkJcIlxuXG5sZXQgdW5lc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiBcIlxuXG5sZXQgcGx1c19yZV9qc19zdHJpbmcgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiXFxcXCtcIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMgPVxuICBwbHVzX3JlX2pzX3N0cmluZyMjLmxhc3RJbmRleCA6PSAwO1xuICBzIyNyZXBsYWNlIHBsdXNfcmVfanNfc3RyaW5nIChKcy5zdHJpbmcgXCIgXCIpXG5cbmxldCB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKHVuZXNjYXBlX3BsdXNfanNfc3RyaW5nIHMpKVxuXG5sZXQgdXJsZGVjb2RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAoSnMuYnl0ZXN0cmluZyAodW5lc2NhcGVfcGx1cyBzKSkpXG5cbigqbGV0IHVybGVuY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgcykqKVxuXG5sZXQgdXJsZW5jb2RlID8od2l0aF9wbHVzID0gdHJ1ZSkgcyA9XG4gIGlmIHdpdGhfcGx1c1xuICB0aGVuIGVzY2FwZV9wbHVzIChKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpKVxuICBlbHNlIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSlcblxudHlwZSBodHRwX3VybCA9XG4gIHsgaHVfaG9zdCA6IHN0cmluZyAgKCoqIFRoZSBob3N0IHBhcnQgb2YgdGhlIHVybC4gKilcbiAgOyBodV9wb3J0IDogaW50ICAoKiogVGhlIHBvcnQgZm9yIHRoZSBjb25uZWN0aW9uIGlmIGFueS4gKilcbiAgOyBodV9wYXRoIDogc3RyaW5nIGxpc3QgICgqKiBUaGUgcGF0aCBzcGxpdCBvbiBbJy8nXSBjaGFyYWN0ZXJzLiAqKVxuICA7IGh1X3BhdGhfc3RyaW5nIDogc3RyaW5nICAoKiogVGhlIG9yaWdpbmFsIGVudGlyZSBwYXRoLiAqKVxuICA7IGh1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgKCoqIEFyZ3VtZW50cyBhcyBhIGZpZWxkLXZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiBsaXN0LiopXG4gIDsgaHVfZnJhZ21lbnQgOiBzdHJpbmcgICgqKiBUaGUgZnJhZ21lbnQgcGFydCAoYWZ0ZXIgdGhlIFsnIyddIGNoYXJhY3RlcikuICopXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgSFRUUCB1cmwuICopXG5cbnR5cGUgZmlsZV91cmwgPVxuICB7IGZ1X3BhdGggOiBzdHJpbmcgbGlzdFxuICA7IGZ1X3BhdGhfc3RyaW5nIDogc3RyaW5nXG4gIDsgZnVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICA7IGZ1X2ZyYWdtZW50IDogc3RyaW5nXG4gIH1cbigqKiBUaGUgdHlwZSBmb3IgbG9jYWwgZmlsZSB1cmxzLiAqKVxuXG50eXBlIHVybCA9XG4gIHwgSHR0cCBvZiBodHRwX3VybFxuICB8IEh0dHBzIG9mIGh0dHBfdXJsXG4gIHwgRmlsZSBvZiBmaWxlX3VybFxuICAgICAgKCoqIFRoZSB0eXBlIGZvciB1cmxzLiBbRmlsZV0gaXMgZm9yIGxvY2FsIGZpbGVzIGFuZCBbRXhvdGljIHNdIGlzIGZvclxuICAgIHVua25vd24vdW5zdXBwb3J0ZWQgcHJvdG9jb2xzLiAqKVxuXG5leGNlcHRpb24gTm90X2FuX2h0dHBfcHJvdG9jb2xcblxubGV0IGlzX3NlY3VyZSBwcm90X3N0cmluZyA9XG4gIG1hdGNoIEpzLnRvX2J5dGVzdHJpbmcgcHJvdF9zdHJpbmcjI3RvTG93ZXJDYXNlIHdpdGhcbiAgfCBcImh0dHBzOlwiIHwgXCJodHRwc1wiIC0+IHRydWVcbiAgfCBcImh0dHA6XCIgfCBcImh0dHBcIiAtPiBmYWxzZVxuICB8IFwiZmlsZTpcIiB8IFwiZmlsZVwiIHwgXyAtPiByYWlzZSBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG4oKiBwb3J0IG51bWJlciAqKVxubGV0IGRlZmF1bHRfaHR0cF9wb3J0ID0gODBcblxubGV0IGRlZmF1bHRfaHR0cHNfcG9ydCA9IDQ0M1xuXG4oKiBwYXRoICopXG5sZXQgcGF0aF9vZl9wYXRoX3N0cmluZyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgbGV0IGogPSB0cnkgU3RyaW5nLmluZGV4X2Zyb20gcyBpICcvJyB3aXRoIE5vdF9mb3VuZCAtPiBsIGluXG4gICAgbGV0IHdvcmQgPSBTdHJpbmcuc3ViIHMgaSAoaiAtIGkpIGluXG4gICAgaWYgaiA+PSBsIHRoZW4gWyB3b3JkIF0gZWxzZSB3b3JkIDo6IGF1eCAoaiArIDEpXG4gIGluXG4gIG1hdGNoIGF1eCAwIHdpdGhcbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFsgXCJcIjsgXCJcIiBdIC0+IFsgXCJcIiBdXG4gIHwgYSAtPiBhXG5cbigqIEFyZ3VtZW50cyAqKVxubGV0IGVuY29kZV9hcmd1bWVudHMgbCA9XG4gIFN0cmluZy5jb25jYXQgXCImXCIgKExpc3QubWFwIChmdW4gKG4sIHYpIC0+IHVybGVuY29kZSBuIF4gXCI9XCIgXiB1cmxlbmNvZGUgdikgbClcblxubGV0IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIHMgPVxuICBsZXQgYXJyID0gc3BsaXQgJyYnIHMgaW5cbiAgbGV0IGxlbiA9IGFyciMjLmxlbmd0aCBpblxuICBsZXQgbmFtZV92YWx1ZV9zcGxpdCBzID0gc3BsaXRfMiAnPScgcyBpblxuICBsZXQgcmVjIGF1eCBhY2MgaWR4ID1cbiAgICBpZiBpZHggPCAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgYXV4XG4gICAgICAgICAgKEpzLk9wdGRlZi5jYXNlIChKcy5hcnJheV9nZXQgYXJyIGlkeCkgaW50ZXJydXB0IChmdW4gcyAtPlxuICAgICAgICAgICAgICAgSnMuT3B0ZGVmLmNhc2UgKG5hbWVfdmFsdWVfc3BsaXQgcykgaW50ZXJydXB0IChmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGdldCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgZ2V0IHgsIGdldCB5KSlcbiAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgKHByZWQgaWR4KVxuICAgICAgd2l0aCBMb2NhbF9leG4gLT4gYXV4IGFjYyAocHJlZCBpZHgpXG4gIGluXG4gIGF1eCBbXSAobGVuIC0gMSlcblxubGV0IGRlY29kZV9hcmd1bWVudHMgcyA9IGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCB1cmxfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmdcbiAgICAgICBcIl4oW0hoXVtUdF1bVHRdW1BwXVtTc10/KTovLyhbMC05YS16QS1aLi1dK3xcXFxcW1swLTlhLXpBLVouLV0rXFxcXF18XFxcXFtbMC05QS1GYS1mOi5dK1xcXFxdKT8oOihbMC05XSspKT8oLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/KT8kXCIpXG5cbmxldCBmaWxlX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nIFwiXihbRmZdW0lpXVtMbF1bRWVdKTovLyhbXlxcXFw/I10qKShcXFxcPyhbXiNdKikpPygjKC4qKSk/JFwiKVxuXG5sZXQgdXJsX29mX2pzX3N0cmluZyBzID1cbiAgSnMuT3B0LmNhc2VcbiAgICAodXJsX3JlIyNleGVjIHMpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgKGZpbGVfcmUjI2V4ZWMgcylcbiAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChGaWxlXG4gICAgICAgICAgICAgICB7IGZ1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfYXJndW1lbnRzID1cbiAgICAgICAgICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgOyBmdV9mcmFnbWVudCA9XG4gICAgICAgICAgICAgICAgICAgSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICAgICAgICAgfSkpKVxuICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgbGV0IHNzbCA9IGlzX3NlY3VyZSAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxKSBpbnRlcnJ1cHQpIGluXG4gICAgICBsZXQgcG9ydF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgICAgICB8IFwiXCIgLT4gaWYgc3NsIHRoZW4gNDQzIGVsc2UgODBcbiAgICAgICAgfCBzIC0+IGludF9vZl9zdHJpbmcgc1xuICAgICAgaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNikgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgaW5cbiAgICAgIGxldCB1cmwgPVxuICAgICAgICB7IGh1X2hvc3QgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICA7IGh1X3BvcnQgPVxuICAgICAgICAgICAgcG9ydF9vZl9zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgNCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKSlcbiAgICAgICAgOyBodV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICA7IGh1X3BhdGhfc3RyaW5nID0gcGF0aF9zdHJcbiAgICAgICAgOyBodV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgOCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICA7IGh1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEwKSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTb21lIChpZiBzc2wgdGhlbiBIdHRwcyB1cmwgZWxzZSBIdHRwIHVybCkpXG5cbmxldCB1cmxfb2Zfc3RyaW5nIHMgPSB1cmxfb2ZfanNfc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpXG5cbmxldCBzdHJpbmdfb2ZfdXJsID0gZnVuY3Rpb25cbiAgfCBGaWxlIHsgZnVfcGF0aCA9IHBhdGg7IGZ1X2FyZ3VtZW50cyA9IGFyZ3M7IGZ1X2ZyYWdtZW50ID0gZnJhZzsgXyB9IC0+IChcbiAgICAgIFwiZmlsZTovL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cFxuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cDovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA4MCAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwc1xuICAgICAgeyBodV9ob3N0ID0gaG9zdFxuICAgICAgOyBodV9wb3J0ID0gcG9ydFxuICAgICAgOyBodV9wYXRoID0gcGF0aFxuICAgICAgOyBodV9hcmd1bWVudHMgPSBhcmdzXG4gICAgICA7IGh1X2ZyYWdtZW50ID0gZnJhZ1xuICAgICAgOyBfXG4gICAgICB9IC0+IChcbiAgICAgIFwiaHR0cHM6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgNDQzIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuXG5tb2R1bGUgQ3VycmVudCA9IHN0cnVjdFxuICBsZXQgbCA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLk9wdGRlZi5yZXR1cm4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24pXG4gICAgdGhlbiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvblxuICAgIGVsc2VcbiAgICAgIGxldCBlbXB0eSA9IEpzLnN0cmluZyBcIlwiIGluXG4gICAgICBvYmplY3QlanNcbiAgICAgICAgdmFsIG11dGFibGUgaHJlZiA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcHJvdG9jb2wgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3QgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhvc3RuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwb3J0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwYXRobmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgc2VhcmNoID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBoYXNoID0gZW1wdHlcblxuICAgICAgICB2YWwgb3JpZ2luID0gSnMudW5kZWZpbmVkXG5cbiAgICAgICAgbWV0aG9kIHJlbG9hZCA9ICgpXG5cbiAgICAgICAgbWV0aG9kIHJlcGxhY2UgXyA9ICgpXG5cbiAgICAgICAgbWV0aG9kIGFzc2lnbiBfID0gKClcbiAgICAgIGVuZFxuXG4gIGxldCBob3N0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhvc3RuYW1lXG5cbiAgbGV0IHByb3RvY29sID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnByb3RvY29sXG5cbiAgbGV0IHBvcnQgPVxuICAgIChmdW4gKCkgLT5cbiAgICAgIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChKcy50b19ieXRlc3RyaW5nIGwjIy5wb3J0KSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSlcbiAgICAgICgpXG5cbiAgbGV0IHBhdGhfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLnBhdGhuYW1lXG5cbiAgbGV0IHBhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyaW5nXG5cbiAgbGV0IGFyZ3VtZW50cyA9XG4gICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgIChpZiBKcy5lcXVhbHMgKGwjIy5zZWFyY2gjI2NoYXJBdCAwKSAoSnMuc3RyaW5nIFwiP1wiKVxuICAgICAgIHRoZW4gbCMjLnNlYXJjaCMjc2xpY2VfZW5kIDFcbiAgICAgICBlbHNlIGwjIy5zZWFyY2gpXG5cbiAgbGV0IGdldF9mcmFnbWVudCAoKSA9XG4gICAgbGV0IHMgPSBKcy50b19ieXRlc3RyaW5nIGwjIy5oYXNoIGluXG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBDaGFyLmVxdWFsIHMuWzBdICcjJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgZWxzZSBzXG5cbiAgbGV0IHNldF9mcmFnbWVudCBzID0gbCMjLmhhc2ggOj0gSnMuYnl0ZXN0cmluZyBzXG5cbiAgbGV0IGdldCAoKSA9IHVybF9vZl9qc19zdHJpbmcgbCMjLmhyZWZcblxuICBsZXQgc2V0IHUgPSBsIyMuaHJlZiA6PSBKcy5ieXRlc3RyaW5nIChzdHJpbmdfb2ZfdXJsIHUpXG5cbiAgbGV0IGFzX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ocmVmXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxubGV0IHVwZGF0ZV9maWxlIH5uYW1lIH5jb250ZW50ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgbmFtZSBpblxuICBvdXRwdXRfc3RyaW5nIG9jIGNvbnRlbnQ7XG4gIGNsb3NlX291dCBvY1xuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDpcbiAgb3V0X2NoYW5uZWwgLT4gKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxubGV0IHNldF9jaGFubmVsX2ZsdXNoZXIgKG91dF9jaGFubmVsIDogb3V0X2NoYW5uZWwpIChmIDogc3RyaW5nIC0+IHVuaXQpID1cbiAgbGV0IGYnIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrID1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gcyAtPiBmIChKcy50b19ieXRlc3RyaW5nIHMpKVxuICBpblxuICBzZXRfY2hhbm5lbF9vdXRwdXQnIG91dF9jaGFubmVsIGYnXG5cbmxldCBzZXRfY2hhbm5lbF9maWxsZXIgKGluX2NoYW5uZWwgOiBpbl9jaGFubmVsKSAoZiA6IHVuaXQgLT4gc3RyaW5nKSA9XG4gIGxldCBmJyA6ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIGYgaW5cbiAgc2V0X2NoYW5uZWxfaW5wdXQnIGluX2NoYW5uZWwgZidcblxuZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG5leHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6XG4gIHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG5sZXQgbW91bnQgfnBhdGggZiA9XG4gIG1vdW50X2F1dG9sb2FkIHBhdGggKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBwcmVmaXggcGF0aCAtPiBmIH5wcmVmaXggfnBhdGgpKVxuXG5sZXQgdW5tb3VudCB+cGF0aCA9IHVubW91bnQgcGF0aFxuXG5sZXQganNfb2Zfb2NhbWxfdmVyc2lvbiA9XG4gIGlmIFN0cmluZy5lcXVhbCBMaWJfdmVyc2lvbi5naXRfdmVyc2lvbiBcIlwiXG4gIHRoZW4gTGliX3ZlcnNpb24uc1xuICBlbHNlIExpYl92ZXJzaW9uLnMgXiBcIitcIiBeIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE5IEFsZXhhbmRlciBZYW5pblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJTaXplID0gb2JqZWN0XG4gIG1ldGhvZCBpbmxpbmVTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBibG9ja1NpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRCb3hTaXplIDogcmVzaXplT2JzZXJ2ZXJTaXplIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGJveCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvYnNlcnZlX3dpdGhPcHRpb25zIDpcbiAgICAjRG9tLm5vZGUgSnMudCAtPiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgOiByZXNpemVPYnNlcnZlck9wdGlvbnMgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1Jlc2l6ZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCByZXNpemVPYnNlcnZlclxuXG5sZXQgcmVzaXplT2JzZXJ2ZXIgOlxuICAgICggICAocmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiByZXNpemVPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHJlc2l6ZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogcmVzaXplT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oYm94IDogSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uKVxuICAgICgpIDogcmVzaXplT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvYnMgPSBuZXclanMgcmVzaXplT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgKG1hdGNoIGJveCB3aXRoXG4gIHwgTm9uZSAtPiBvYnMjI29ic2VydmUgbm9kZVxuICB8IFNvbWUgYm94IC0+XG4gICAgICBsZXQgb3B0cyA9IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIGluXG4gICAgICBvcHRzIyMuYm94IDo9IGJveDtcbiAgICAgIG9icyMjb2JzZXJ2ZV93aXRoT3B0aW9ucyBub2RlIG9wdHMpO1xuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjEgUGhpbGlwIFdoaXRlXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBlbnRyeVR5cGVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW50cnlUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydFRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCA9IG9iamVjdFxuICBtZXRob2QgZ2V0RW50cmllcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9QZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBwZXJmb3JtYW5jZU9ic2VydmVyIDpcbiAgICAoICAgKHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgSnMudCAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IG9ic2VydmUgfmVudHJ5X3R5cGVzIH5mID1cbiAgbGV0IGVudHJ5X3R5cGVzID0gZW50cnlfdHlwZXMgfD4gTGlzdC5tYXAgSnMuc3RyaW5nIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgaW5cbiAgbGV0IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgOiBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGxldCAoKSA9IHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQjIy5lbnRyeVR5cGVzIDo9IGVudHJ5X3R5cGVzIGluXG4gIGxldCBvYnMgPSBuZXclanMgcGVyZm9ybWFuY2VPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXJJbml0ID0gb2JqZWN0XG4gIG1ldGhvZCBjaGlsZExpc3QgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGEgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YnRyZWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZUZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uUmVjb3JkID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFkZGVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlbW92ZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWVzcGFjZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG11dGF0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSA6IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX011dGF0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG11dGF0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAobXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGNoaWxkX2xpc3QgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZXMgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhIDogYm9vbCBvcHRpb24pXG4gICAgPyhzdWJ0cmVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9maWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0IG9wdGlvbilcbiAgICAoKSA6IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCA9XG4gIGxldCBvcHRfaXRlciB4IGYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb2JzID0gbmV3JWpzIG11dGF0aW9uT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0IGNmZyA9IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hpbGRfbGlzdCAoZnVuIHYgLT4gY2ZnIyMuY2hpbGRMaXN0IDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZXMgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZXMgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGEgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGEgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgc3VidHJlZSAoZnVuIHYgLT4gY2ZnIyMuc3VidHJlZSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVPbGRWYWx1ZSA6PSB2KSBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDo9IHYpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgYXR0cmlidXRlX2ZpbHRlciAoZnVuIGwgLT5cbiAgICAgICAgY2ZnIyMuYXR0cmlidXRlRmlsdGVyIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IGwpKVxuICBpblxuICBsZXQgKCkgPSBvYnMjI29ic2VydmUgbm9kZSBjZmcgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IFBpZXJyZSBDaGFtYmFydCAyMDEyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9IDwgPiBKcy50XG5cbmxldCBvYmogPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgY3JlYXRlICgpIDogJ2EgdCA9IG5ldyVqcyBvYmpcblxubGV0IGFkZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpICh2IDogJ2EpID1cbiAgKCogJ18nIGlzIGFkZGVkIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG9iamVjdHMgbWV0aG9kcyAqKVxuICBKcy5VbnNhZmUuc2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSkgdlxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgPVxuICBKcy5VbnNhZmUuZGVsZXRlIHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA6ICdhIEpzLk9wdGRlZi50ID1cbiAgSnMuVW5zYWZlLmdldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBrZXlzICh0IDogJ2EgdCkgOiBKcy5qc19zdHJpbmcgSnMudCBsaXN0ID1cbiAgbGV0IGtleV9hcnJheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0IyNrZXlzIHRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gcHJlZCBrZXlfYXJyYXkjIy5sZW5ndGggZG9cbiAgICBsZXQga2V5ID1cbiAgICAgIEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCBrZXlfYXJyYXkgaSkgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIkpzdGFibGUua2V5c1wiKVxuICAgIGluXG4gICAgcmVzIDo9IGtleSMjc3Vic3RyaW5nIDAgKHByZWQga2V5IyMubGVuZ3RoKSA6OiAhcmVzXG4gIGRvbmU7XG4gIExpc3QucmV2ICFyZXNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgR3LDqWdvaXJlIEhlbnJ5IDIwMTAuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcGFyc2VfIDpcbiAgICAnYSAnYiAnYyAnZC4ganNfc3RyaW5nIHQgLT4gKCdiIHQsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5XyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuICdhIC0+ICgnYiwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBqc29uIDoganNvbiBKcy50ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBpbnB1dF9yZXZpdmVyID1cbiAgbGV0IHJldml2ZXIgX3RoaXMgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgICBpZiBKcy5lcXVhbHMgKHR5cGVvZiB2YWx1ZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gT2JqLnJlcHIgKHRvX2J5dGVzdHJpbmcgKFVuc2FmZS5jb2VyY2UgdmFsdWUpKVxuICAgIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBKcy5hcnJheV9lbXB0eVxuICAgICAgICAgICAgJiYgKFVuc2FmZS5jb2VyY2UgdmFsdWUpIyMubGVuZ3RoID09IDRcbiAgICAgICAgICAgICYmIFVuc2FmZS5nZXQgdmFsdWUgMCA9PSAyNTVcbiAgICB0aGVuXG4gICAgICBPYmoucmVwclxuICAgICAgICAoSnNvb19ydW50aW1lLkludDY0LmNyZWF0ZV9pbnQ2NF9sb19taV9oaVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAxKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAyKVxuICAgICAgICAgICAoVW5zYWZlLmdldCB2YWx1ZSAzKSlcbiAgICBlbHNlIE9iai5yZXByIHZhbHVlXG4gIGluXG4gIHdyYXBfbWV0aF9jYWxsYmFjayByZXZpdmVyXG5cbmxldCB1bnNhZmVfaW5wdXQgcyA9IGpzb24jI3BhcnNlXyBzIGlucHV0X3Jldml2ZXJcblxuY2xhc3MgdHlwZSBvYmogPSBvYmplY3RcbiAgbWV0aG9kIGNvbnN0cnVjdG9yIDogJ2EuICdhIGNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG1sSW50NjRfY29uc3RyID1cbiAgbGV0IGR1bW15X2ludDY0ID0gMUwgaW5cbiAgbGV0IGR1bW15X29iaiA6IG9iaiB0ID0gT2JqLm1hZ2ljIGR1bW15X2ludDY0IGluXG4gIGR1bW15X29iaiMjLmNvbnN0cnVjdG9yXG5cbmxldCBvdXRwdXRfcmV2aXZlciBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICBpZiBPYmoudGFnIChPYmoucmVwciB2YWx1ZSkgPSBPYmouc3RyaW5nX3RhZ1xuICB0aGVuIE9iai5yZXByIChieXRlc3RyaW5nIChPYmoubWFnaWMgdmFsdWUgOiBzdHJpbmcpKVxuICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgbWxJbnQ2NF9jb25zdHJcbiAgdGhlblxuICAgIGxldCB2YWx1ZSA9IFVuc2FmZS5jb2VyY2UgdmFsdWUgaW5cbiAgICBPYmoucmVwciAoYXJyYXkgW3wgMjU1OyB2YWx1ZSMjLmxvOyB2YWx1ZSMjLm1pOyB2YWx1ZSMjLmhpIHxdKVxuICBlbHNlIE9iai5yZXByIHZhbHVlXG5cbmxldCBvdXRwdXQgb2JqID0ganNvbiMjc3RyaW5naWZ5XyBvYmogKEpzLndyYXBfY2FsbGJhY2sgb3V0cHV0X3Jldml2ZXIpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29sb3IgPSBzdHJ1Y3RcbiAgKCogVGhlIHR5cGUgb2YgQ1NTIGNvbG9ycy4gRmlyc3QgYnkgbmFtZSBhbmQgdGhlbiBieSBjb25zdHJ1Y3Rvci4gKilcbiAgdHlwZSBuYW1lID1cbiAgICB8IEFsaWNlYmx1ZVxuICAgIHwgQW50aXF1ZXdoaXRlXG4gICAgfCBBcXVhXG4gICAgfCBBcXVhbWFyaW5lXG4gICAgfCBBenVyZVxuICAgIHwgQmVpZ2VcbiAgICB8IEJpc3F1ZVxuICAgIHwgQmxhY2tcbiAgICB8IEJsYW5jaGVkYWxtb25kXG4gICAgfCBCbHVlXG4gICAgfCBCbHVldmlvbGV0XG4gICAgfCBCcm93blxuICAgIHwgQnVybHl3b29kXG4gICAgfCBDYWRldGJsdWVcbiAgICB8IENoYXJ0cmV1c2VcbiAgICB8IENob2NvbGF0ZVxuICAgIHwgQ29yYWxcbiAgICB8IENvcm5mbG93ZXJibHVlXG4gICAgfCBDb3Juc2lsa1xuICAgIHwgQ3JpbXNvblxuICAgIHwgQ3lhblxuICAgIHwgRGFya2JsdWVcbiAgICB8IERhcmtjeWFuXG4gICAgfCBEYXJrZ29sZGVucm9kXG4gICAgfCBEYXJrZ3JheVxuICAgIHwgRGFya2dyZWVuXG4gICAgfCBEYXJrZ3JleVxuICAgIHwgRGFya2toYWtpXG4gICAgfCBEYXJrbWFnZW50YVxuICAgIHwgRGFya29saXZlZ3JlZW5cbiAgICB8IERhcmtvcmFuZ2VcbiAgICB8IERhcmtvcmNoaWRcbiAgICB8IERhcmtyZWRcbiAgICB8IERhcmtzYWxtb25cbiAgICB8IERhcmtzZWFncmVlblxuICAgIHwgRGFya3NsYXRlYmx1ZVxuICAgIHwgRGFya3NsYXRlZ3JheVxuICAgIHwgRGFya3NsYXRlZ3JleVxuICAgIHwgRGFya3R1cnF1b2lzZVxuICAgIHwgRGFya3Zpb2xldFxuICAgIHwgRGVlcHBpbmtcbiAgICB8IERlZXBza3libHVlXG4gICAgfCBEaW1ncmF5XG4gICAgfCBEaW1ncmV5XG4gICAgfCBEb2RnZXJibHVlXG4gICAgfCBGaXJlYnJpY2tcbiAgICB8IEZsb3JhbHdoaXRlXG4gICAgfCBGb3Jlc3RncmVlblxuICAgIHwgRnVjaHNpYVxuICAgIHwgR2FpbnNib3JvXG4gICAgfCBHaG9zdHdoaXRlXG4gICAgfCBHb2xkXG4gICAgfCBHb2xkZW5yb2RcbiAgICB8IEdyYXlcbiAgICB8IEdyZXlcbiAgICB8IEdyZWVuXG4gICAgfCBHcmVlbnllbGxvd1xuICAgIHwgSG9uZXlkZXdcbiAgICB8IEhvdHBpbmtcbiAgICB8IEluZGlhbnJlZFxuICAgIHwgSW5kaWdvXG4gICAgfCBJdm9yeVxuICAgIHwgS2hha2lcbiAgICB8IExhdmVuZGVyXG4gICAgfCBMYXZlbmRlcmJsdXNoXG4gICAgfCBMYXduZ3JlZW5cbiAgICB8IExlbW9uY2hpZmZvblxuICAgIHwgTGlnaHRibHVlXG4gICAgfCBMaWdodGNvcmFsXG4gICAgfCBMaWdodGN5YW5cbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBMaWdodGdyYXlcbiAgICB8IExpZ2h0Z3JlZW5cbiAgICB8IExpZ2h0Z3JleVxuICAgIHwgTGlnaHRwaW5rXG4gICAgfCBMaWdodHNhbG1vblxuICAgIHwgTGlnaHRzZWFncmVlblxuICAgIHwgTGlnaHRza3libHVlXG4gICAgfCBMaWdodHNsYXRlZ3JheVxuICAgIHwgTGlnaHRzbGF0ZWdyZXlcbiAgICB8IExpZ2h0c3RlZWxibHVlXG4gICAgfCBMaWdodHllbGxvd1xuICAgIHwgTGltZVxuICAgIHwgTGltZWdyZWVuXG4gICAgfCBMaW5lblxuICAgIHwgTWFnZW50YVxuICAgIHwgTWFyb29uXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBNZWRpdW1ibHVlXG4gICAgfCBNZWRpdW1vcmNoaWRcbiAgICB8IE1lZGl1bXB1cnBsZVxuICAgIHwgTWVkaXVtc2VhZ3JlZW5cbiAgICB8IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBNaWRuaWdodGJsdWVcbiAgICB8IE1pbnRjcmVhbVxuICAgIHwgTWlzdHlyb3NlXG4gICAgfCBNb2NjYXNpblxuICAgIHwgTmF2YWpvd2hpdGVcbiAgICB8IE5hdnlcbiAgICB8IE9sZGxhY2VcbiAgICB8IE9saXZlXG4gICAgfCBPbGl2ZWRyYWJcbiAgICB8IE9yYW5nZVxuICAgIHwgT3JhbmdlcmVkXG4gICAgfCBPcmNoaWRcbiAgICB8IFBhbGVnb2xkZW5yb2RcbiAgICB8IFBhbGVncmVlblxuICAgIHwgUGFsZXR1cnF1b2lzZVxuICAgIHwgUGFsZXZpb2xldHJlZFxuICAgIHwgUGFwYXlhd2hpcFxuICAgIHwgUGVhY2hwdWZmXG4gICAgfCBQZXJ1XG4gICAgfCBQaW5rXG4gICAgfCBQbHVtXG4gICAgfCBQb3dkZXJibHVlXG4gICAgfCBQdXJwbGVcbiAgICB8IFJlZFxuICAgIHwgUm9zeWJyb3duXG4gICAgfCBSb3lhbGJsdWVcbiAgICB8IFNhZGRsZWJyb3duXG4gICAgfCBTYWxtb25cbiAgICB8IFNhbmR5YnJvd25cbiAgICB8IFNlYWdyZWVuXG4gICAgfCBTZWFzaGVsbFxuICAgIHwgU2llbm5hXG4gICAgfCBTaWx2ZXJcbiAgICB8IFNreWJsdWVcbiAgICB8IFNsYXRlYmx1ZVxuICAgIHwgU2xhdGVncmF5XG4gICAgfCBTbGF0ZWdyZXlcbiAgICB8IFNub3dcbiAgICB8IFNwcmluZ2dyZWVuXG4gICAgfCBTdGVlbGJsdWVcbiAgICB8IFRhblxuICAgIHwgVGVhbFxuICAgIHwgVGhpc3RsZVxuICAgIHwgVG9tYXRvXG4gICAgfCBUdXJxdW9pc2VcbiAgICB8IFZpb2xldFxuICAgIHwgV2hlYXRcbiAgICB8IFdoaXRlXG4gICAgfCBXaGl0ZXNtb2tlXG4gICAgfCBZZWxsb3dcbiAgICB8IFllbGxvd2dyZWVuXG5cbiAgbGV0IHN0cmluZ19vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiBcImFsaWNlYmx1ZVwiXG4gICAgfCBBbnRpcXVld2hpdGUgLT4gXCJhbnRpcXVld2hpdGVcIlxuICAgIHwgQXF1YSAtPiBcImFxdWFcIlxuICAgIHwgQXF1YW1hcmluZSAtPiBcImFxdWFtYXJpbmVcIlxuICAgIHwgQXp1cmUgLT4gXCJhenVyZVwiXG4gICAgfCBCZWlnZSAtPiBcImJlaWdlXCJcbiAgICB8IEJpc3F1ZSAtPiBcImJpc3F1ZVwiXG4gICAgfCBCbGFjayAtPiBcImJsYWNrXCJcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgIHwgQmx1ZSAtPiBcImJsdWVcIlxuICAgIHwgQmx1ZXZpb2xldCAtPiBcImJsdWV2aW9sZXRcIlxuICAgIHwgQnJvd24gLT4gXCJicm93blwiXG4gICAgfCBCdXJseXdvb2QgLT4gXCJidXJseXdvb2RcIlxuICAgIHwgQ2FkZXRibHVlIC0+IFwiY2FkZXRibHVlXCJcbiAgICB8IENoYXJ0cmV1c2UgLT4gXCJjaGFydHJldXNlXCJcbiAgICB8IENob2NvbGF0ZSAtPiBcImNob2NvbGF0ZVwiXG4gICAgfCBDb3JhbCAtPiBcImNvcmFsXCJcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgIHwgQ29ybnNpbGsgLT4gXCJjb3Juc2lsa1wiXG4gICAgfCBDcmltc29uIC0+IFwiY3JpbXNvblwiXG4gICAgfCBDeWFuIC0+IFwiY3lhblwiXG4gICAgfCBEYXJrYmx1ZSAtPiBcImRhcmtibHVlXCJcbiAgICB8IERhcmtjeWFuIC0+IFwiZGFya2N5YW5cIlxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiBcImRhcmtnb2xkZW5yb2RcIlxuICAgIHwgRGFya2dyYXkgLT4gXCJkYXJrZ3JheVwiXG4gICAgfCBEYXJrZ3JlZW4gLT4gXCJkYXJrZ3JlZW5cIlxuICAgIHwgRGFya2dyZXkgLT4gXCJkYXJrZ3JleVwiXG4gICAgfCBEYXJra2hha2kgLT4gXCJkYXJra2hha2lcIlxuICAgIHwgRGFya21hZ2VudGEgLT4gXCJkYXJrbWFnZW50YVwiXG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICB8IERhcmtvcmFuZ2UgLT4gXCJkYXJrb3JhbmdlXCJcbiAgICB8IERhcmtvcmNoaWQgLT4gXCJkYXJrb3JjaGlkXCJcbiAgICB8IERhcmtyZWQgLT4gXCJkYXJrcmVkXCJcbiAgICB8IERhcmtzYWxtb24gLT4gXCJkYXJrc2FsbW9uXCJcbiAgICB8IERhcmtzZWFncmVlbiAtPiBcImRhcmtzZWFncmVlblwiXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgfCBEYXJrdmlvbGV0IC0+IFwiZGFya3Zpb2xldFwiXG4gICAgfCBEZWVwcGluayAtPiBcImRlZXBwaW5rXCJcbiAgICB8IERlZXBza3libHVlIC0+IFwiZGVlcHNreWJsdWVcIlxuICAgIHwgRGltZ3JheSAtPiBcImRpbWdyYXlcIlxuICAgIHwgRGltZ3JleSAtPiBcImRpbWdyZXlcIlxuICAgIHwgRG9kZ2VyYmx1ZSAtPiBcImRvZGdlcmJsdWVcIlxuICAgIHwgRmlyZWJyaWNrIC0+IFwiZmlyZWJyaWNrXCJcbiAgICB8IEZsb3JhbHdoaXRlIC0+IFwiZmxvcmFsd2hpdGVcIlxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gXCJmb3Jlc3RncmVlblwiXG4gICAgfCBGdWNoc2lhIC0+IFwiZnVjaHNpYVwiXG4gICAgfCBHYWluc2Jvcm8gLT4gXCJnYWluc2Jvcm9cIlxuICAgIHwgR2hvc3R3aGl0ZSAtPiBcImdob3N0d2hpdGVcIlxuICAgIHwgR29sZCAtPiBcImdvbGRcIlxuICAgIHwgR29sZGVucm9kIC0+IFwiZ29sZGVucm9kXCJcbiAgICB8IEdyYXkgLT4gXCJncmF5XCJcbiAgICB8IEdyZWVuIC0+IFwiZ3JlZW5cIlxuICAgIHwgR3JlZW55ZWxsb3cgLT4gXCJncmVlbnllbGxvd1wiXG4gICAgfCBHcmV5IC0+IFwiZ3JleVwiXG4gICAgfCBIb25leWRldyAtPiBcImhvbmV5ZGV3XCJcbiAgICB8IEhvdHBpbmsgLT4gXCJob3RwaW5rXCJcbiAgICB8IEluZGlhbnJlZCAtPiBcImluZGlhbnJlZFwiXG4gICAgfCBJbmRpZ28gLT4gXCJpbmRpZ29cIlxuICAgIHwgSXZvcnkgLT4gXCJpdm9yeVwiXG4gICAgfCBLaGFraSAtPiBcImtoYWtpXCJcbiAgICB8IExhdmVuZGVyIC0+IFwibGF2ZW5kZXJcIlxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiBcImxhdmVuZGVyYmx1c2hcIlxuICAgIHwgTGF3bmdyZWVuIC0+IFwibGF3bmdyZWVuXCJcbiAgICB8IExlbW9uY2hpZmZvbiAtPiBcImxlbW9uY2hpZmZvblwiXG4gICAgfCBMaWdodGJsdWUgLT4gXCJsaWdodGJsdWVcIlxuICAgIHwgTGlnaHRjb3JhbCAtPiBcImxpZ2h0Y29yYWxcIlxuICAgIHwgTGlnaHRjeWFuIC0+IFwibGlnaHRjeWFuXCJcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgIHwgTGlnaHRncmF5IC0+IFwibGlnaHRncmF5XCJcbiAgICB8IExpZ2h0Z3JlZW4gLT4gXCJsaWdodGdyZWVuXCJcbiAgICB8IExpZ2h0Z3JleSAtPiBcImxpZ2h0Z3JleVwiXG4gICAgfCBMaWdodHBpbmsgLT4gXCJsaWdodHBpbmtcIlxuICAgIHwgTGlnaHRzYWxtb24gLT4gXCJsaWdodHNhbG1vblwiXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IFwibGlnaHRzZWFncmVlblwiXG4gICAgfCBMaWdodHNreWJsdWUgLT4gXCJsaWdodHNreWJsdWVcIlxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gXCJsaWdodHllbGxvd1wiXG4gICAgfCBMaW1lIC0+IFwibGltZVwiXG4gICAgfCBMaW1lZ3JlZW4gLT4gXCJsaW1lZ3JlZW5cIlxuICAgIHwgTGluZW4gLT4gXCJsaW5lblwiXG4gICAgfCBNYWdlbnRhIC0+IFwibWFnZW50YVwiXG4gICAgfCBNYXJvb24gLT4gXCJtYXJvb25cIlxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgIHwgTWVkaXVtYmx1ZSAtPiBcIm1lZGl1bWJsdWVcIlxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IFwibWVkaXVtb3JjaGlkXCJcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiBcIm1lZGl1bXB1cnBsZVwiXG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgIHwgTWlkbmlnaHRibHVlIC0+IFwibWlkbmlnaHRibHVlXCJcbiAgICB8IE1pbnRjcmVhbSAtPiBcIm1pbnRjcmVhbVwiXG4gICAgfCBNaXN0eXJvc2UgLT4gXCJtaXN0eXJvc2VcIlxuICAgIHwgTW9jY2FzaW4gLT4gXCJtb2NjYXNpblwiXG4gICAgfCBOYXZham93aGl0ZSAtPiBcIm5hdmFqb3doaXRlXCJcbiAgICB8IE5hdnkgLT4gXCJuYXZ5XCJcbiAgICB8IE9sZGxhY2UgLT4gXCJvbGRsYWNlXCJcbiAgICB8IE9saXZlIC0+IFwib2xpdmVcIlxuICAgIHwgT2xpdmVkcmFiIC0+IFwib2xpdmVkcmFiXCJcbiAgICB8IE9yYW5nZSAtPiBcIm9yYW5nZVwiXG4gICAgfCBPcmFuZ2VyZWQgLT4gXCJvcmFuZ2VyZWRcIlxuICAgIHwgT3JjaGlkIC0+IFwib3JjaGlkXCJcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gXCJwYWxlZ29sZGVucm9kXCJcbiAgICB8IFBhbGVncmVlbiAtPiBcInBhbGVncmVlblwiXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IFwicGFsZXZpb2xldHJlZFwiXG4gICAgfCBQYXBheWF3aGlwIC0+IFwicGFwYXlhd2hpcFwiXG4gICAgfCBQZWFjaHB1ZmYgLT4gXCJwZWFjaHB1ZmZcIlxuICAgIHwgUGVydSAtPiBcInBlcnVcIlxuICAgIHwgUGluayAtPiBcInBpbmtcIlxuICAgIHwgUGx1bSAtPiBcInBsdW1cIlxuICAgIHwgUG93ZGVyYmx1ZSAtPiBcInBvd2RlcmJsdWVcIlxuICAgIHwgUHVycGxlIC0+IFwicHVycGxlXCJcbiAgICB8IFJlZCAtPiBcInJlZFwiXG4gICAgfCBSb3N5YnJvd24gLT4gXCJyb3N5YnJvd25cIlxuICAgIHwgUm95YWxibHVlIC0+IFwicm95YWxibHVlXCJcbiAgICB8IFNhZGRsZWJyb3duIC0+IFwic2FkZGxlYnJvd25cIlxuICAgIHwgU2FsbW9uIC0+IFwic2FsbW9uXCJcbiAgICB8IFNhbmR5YnJvd24gLT4gXCJzYW5keWJyb3duXCJcbiAgICB8IFNlYWdyZWVuIC0+IFwic2VhZ3JlZW5cIlxuICAgIHwgU2Vhc2hlbGwgLT4gXCJzZWFzaGVsbFwiXG4gICAgfCBTaWVubmEgLT4gXCJzaWVubmFcIlxuICAgIHwgU2lsdmVyIC0+IFwic2lsdmVyXCJcbiAgICB8IFNreWJsdWUgLT4gXCJza3libHVlXCJcbiAgICB8IFNsYXRlYmx1ZSAtPiBcInNsYXRlYmx1ZVwiXG4gICAgfCBTbGF0ZWdyYXkgLT4gXCJzbGF0ZWdyYXlcIlxuICAgIHwgU2xhdGVncmV5IC0+IFwic2xhdGVncmV5XCJcbiAgICB8IFNub3cgLT4gXCJzbm93XCJcbiAgICB8IFNwcmluZ2dyZWVuIC0+IFwic3ByaW5nZ3JlZW5cIlxuICAgIHwgU3RlZWxibHVlIC0+IFwic3RlZWxibHVlXCJcbiAgICB8IFRhbiAtPiBcInRhblwiXG4gICAgfCBUZWFsIC0+IFwidGVhbFwiXG4gICAgfCBUaGlzdGxlIC0+IFwidGhpc3RsZVwiXG4gICAgfCBUb21hdG8gLT4gXCJ0b21hdG9cIlxuICAgIHwgVHVycXVvaXNlIC0+IFwidHVycXVvaXNlXCJcbiAgICB8IFZpb2xldCAtPiBcInZpb2xldFwiXG4gICAgfCBXaGVhdCAtPiBcIndoZWF0XCJcbiAgICB8IFdoaXRlIC0+IFwid2hpdGVcIlxuICAgIHwgV2hpdGVzbW9rZSAtPiBcIndoaXRlc21va2VcIlxuICAgIHwgWWVsbG93IC0+IFwieWVsbG93XCJcbiAgICB8IFllbGxvd2dyZWVuIC0+IFwieWVsbG93Z3JlZW5cIlxuXG4gIGxldCBuYW1lX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcImFsaWNlYmx1ZVwiIC0+IEFsaWNlYmx1ZVxuICAgIHwgXCJhbnRpcXVld2hpdGVcIiAtPiBBbnRpcXVld2hpdGVcbiAgICB8IFwiYXF1YVwiIC0+IEFxdWFcbiAgICB8IFwiYXF1YW1hcmluZVwiIC0+IEFxdWFtYXJpbmVcbiAgICB8IFwiYXp1cmVcIiAtPiBBenVyZVxuICAgIHwgXCJiZWlnZVwiIC0+IEJlaWdlXG4gICAgfCBcImJpc3F1ZVwiIC0+IEJpc3F1ZVxuICAgIHwgXCJibGFja1wiIC0+IEJsYWNrXG4gICAgfCBcImJsYW5jaGVkYWxtb25kXCIgLT4gQmxhbmNoZWRhbG1vbmRcbiAgICB8IFwiYmx1ZVwiIC0+IEJsdWVcbiAgICB8IFwiYmx1ZXZpb2xldFwiIC0+IEJsdWV2aW9sZXRcbiAgICB8IFwiYnJvd25cIiAtPiBCcm93blxuICAgIHwgXCJidXJseXdvb2RcIiAtPiBCdXJseXdvb2RcbiAgICB8IFwiY2FkZXRibHVlXCIgLT4gQ2FkZXRibHVlXG4gICAgfCBcImNoYXJ0cmV1c2VcIiAtPiBDaGFydHJldXNlXG4gICAgfCBcImNob2NvbGF0ZVwiIC0+IENob2NvbGF0ZVxuICAgIHwgXCJjb3JhbFwiIC0+IENvcmFsXG4gICAgfCBcImNvcm5mbG93ZXJibHVlXCIgLT4gQ29ybmZsb3dlcmJsdWVcbiAgICB8IFwiY29ybnNpbGtcIiAtPiBDb3Juc2lsa1xuICAgIHwgXCJjcmltc29uXCIgLT4gQ3JpbXNvblxuICAgIHwgXCJjeWFuXCIgLT4gQ3lhblxuICAgIHwgXCJkYXJrYmx1ZVwiIC0+IERhcmtibHVlXG4gICAgfCBcImRhcmtjeWFuXCIgLT4gRGFya2N5YW5cbiAgICB8IFwiZGFya2dvbGRlbnJvZFwiIC0+IERhcmtnb2xkZW5yb2RcbiAgICB8IFwiZGFya2dyYXlcIiAtPiBEYXJrZ3JheVxuICAgIHwgXCJkYXJrZ3JlZW5cIiAtPiBEYXJrZ3JlZW5cbiAgICB8IFwiZGFya2dyZXlcIiAtPiBEYXJrZ3JleVxuICAgIHwgXCJkYXJra2hha2lcIiAtPiBEYXJra2hha2lcbiAgICB8IFwiZGFya21hZ2VudGFcIiAtPiBEYXJrbWFnZW50YVxuICAgIHwgXCJkYXJrb2xpdmVncmVlblwiIC0+IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBcImRhcmtvcmFuZ2VcIiAtPiBEYXJrb3JhbmdlXG4gICAgfCBcImRhcmtvcmNoaWRcIiAtPiBEYXJrb3JjaGlkXG4gICAgfCBcImRhcmtyZWRcIiAtPiBEYXJrcmVkXG4gICAgfCBcImRhcmtzYWxtb25cIiAtPiBEYXJrc2FsbW9uXG4gICAgfCBcImRhcmtzZWFncmVlblwiIC0+IERhcmtzZWFncmVlblxuICAgIHwgXCJkYXJrc2xhdGVibHVlXCIgLT4gRGFya3NsYXRlYmx1ZVxuICAgIHwgXCJkYXJrc2xhdGVncmF5XCIgLT4gRGFya3NsYXRlZ3JheVxuICAgIHwgXCJkYXJrc2xhdGVncmV5XCIgLT4gRGFya3NsYXRlZ3JleVxuICAgIHwgXCJkYXJrdHVycXVvaXNlXCIgLT4gRGFya3R1cnF1b2lzZVxuICAgIHwgXCJkYXJrdmlvbGV0XCIgLT4gRGFya3Zpb2xldFxuICAgIHwgXCJkZWVwcGlua1wiIC0+IERlZXBwaW5rXG4gICAgfCBcImRlZXBza3libHVlXCIgLT4gRGVlcHNreWJsdWVcbiAgICB8IFwiZGltZ3JheVwiIC0+IERpbWdyYXlcbiAgICB8IFwiZGltZ3JleVwiIC0+IERpbWdyZXlcbiAgICB8IFwiZG9kZ2VyYmx1ZVwiIC0+IERvZGdlcmJsdWVcbiAgICB8IFwiZmlyZWJyaWNrXCIgLT4gRmlyZWJyaWNrXG4gICAgfCBcImZsb3JhbHdoaXRlXCIgLT4gRmxvcmFsd2hpdGVcbiAgICB8IFwiZm9yZXN0Z3JlZW5cIiAtPiBGb3Jlc3RncmVlblxuICAgIHwgXCJmdWNoc2lhXCIgLT4gRnVjaHNpYVxuICAgIHwgXCJnYWluc2Jvcm9cIiAtPiBHYWluc2Jvcm9cbiAgICB8IFwiZ2hvc3R3aGl0ZVwiIC0+IEdob3N0d2hpdGVcbiAgICB8IFwiZ29sZFwiIC0+IEdvbGRcbiAgICB8IFwiZ29sZGVucm9kXCIgLT4gR29sZGVucm9kXG4gICAgfCBcImdyYXlcIiAtPiBHcmF5XG4gICAgfCBcImdyZWVuXCIgLT4gR3JlZW5cbiAgICB8IFwiZ3JlZW55ZWxsb3dcIiAtPiBHcmVlbnllbGxvd1xuICAgIHwgXCJncmV5XCIgLT4gR3JleVxuICAgIHwgXCJob25leWRld1wiIC0+IEhvbmV5ZGV3XG4gICAgfCBcImhvdHBpbmtcIiAtPiBIb3RwaW5rXG4gICAgfCBcImluZGlhbnJlZFwiIC0+IEluZGlhbnJlZFxuICAgIHwgXCJpbmRpZ29cIiAtPiBJbmRpZ29cbiAgICB8IFwiaXZvcnlcIiAtPiBJdm9yeVxuICAgIHwgXCJraGFraVwiIC0+IEtoYWtpXG4gICAgfCBcImxhdmVuZGVyXCIgLT4gTGF2ZW5kZXJcbiAgICB8IFwibGF2ZW5kZXJibHVzaFwiIC0+IExhdmVuZGVyYmx1c2hcbiAgICB8IFwibGF3bmdyZWVuXCIgLT4gTGF3bmdyZWVuXG4gICAgfCBcImxlbW9uY2hpZmZvblwiIC0+IExlbW9uY2hpZmZvblxuICAgIHwgXCJsaWdodGJsdWVcIiAtPiBMaWdodGJsdWVcbiAgICB8IFwibGlnaHRjb3JhbFwiIC0+IExpZ2h0Y29yYWxcbiAgICB8IFwibGlnaHRjeWFuXCIgLT4gTGlnaHRjeWFuXG4gICAgfCBcImxpZ2h0Z29sZGVucm9keWVsbG93XCIgLT4gTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IFwibGlnaHRncmF5XCIgLT4gTGlnaHRncmF5XG4gICAgfCBcImxpZ2h0Z3JlZW5cIiAtPiBMaWdodGdyZWVuXG4gICAgfCBcImxpZ2h0Z3JleVwiIC0+IExpZ2h0Z3JleVxuICAgIHwgXCJsaWdodHBpbmtcIiAtPiBMaWdodHBpbmtcbiAgICB8IFwibGlnaHRzYWxtb25cIiAtPiBMaWdodHNhbG1vblxuICAgIHwgXCJsaWdodHNlYWdyZWVuXCIgLT4gTGlnaHRzZWFncmVlblxuICAgIHwgXCJsaWdodHNreWJsdWVcIiAtPiBMaWdodHNreWJsdWVcbiAgICB8IFwibGlnaHRzbGF0ZWdyYXlcIiAtPiBMaWdodHNsYXRlZ3JheVxuICAgIHwgXCJsaWdodHNsYXRlZ3JleVwiIC0+IExpZ2h0c2xhdGVncmV5XG4gICAgfCBcImxpZ2h0c3RlZWxibHVlXCIgLT4gTGlnaHRzdGVlbGJsdWVcbiAgICB8IFwibGlnaHR5ZWxsb3dcIiAtPiBMaWdodHllbGxvd1xuICAgIHwgXCJsaW1lXCIgLT4gTGltZVxuICAgIHwgXCJsaW1lZ3JlZW5cIiAtPiBMaW1lZ3JlZW5cbiAgICB8IFwibGluZW5cIiAtPiBMaW5lblxuICAgIHwgXCJtYWdlbnRhXCIgLT4gTWFnZW50YVxuICAgIHwgXCJtYXJvb25cIiAtPiBNYXJvb25cbiAgICB8IFwibWVkaXVtYXF1YW1hcmluZVwiIC0+IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IFwibWVkaXVtYmx1ZVwiIC0+IE1lZGl1bWJsdWVcbiAgICB8IFwibWVkaXVtb3JjaGlkXCIgLT4gTWVkaXVtb3JjaGlkXG4gICAgfCBcIm1lZGl1bXB1cnBsZVwiIC0+IE1lZGl1bXB1cnBsZVxuICAgIHwgXCJtZWRpdW1zZWFncmVlblwiIC0+IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBcIm1lZGl1bXNsYXRlYmx1ZVwiIC0+IE1lZGl1bXNsYXRlYmx1ZVxuICAgIHwgXCJtZWRpdW1zcHJpbmdncmVlblwiIC0+IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBcIm1lZGl1bXR1cnF1b2lzZVwiIC0+IE1lZGl1bXR1cnF1b2lzZVxuICAgIHwgXCJtZWRpdW12aW9sZXRyZWRcIiAtPiBNZWRpdW12aW9sZXRyZWRcbiAgICB8IFwibWlkbmlnaHRibHVlXCIgLT4gTWlkbmlnaHRibHVlXG4gICAgfCBcIm1pbnRjcmVhbVwiIC0+IE1pbnRjcmVhbVxuICAgIHwgXCJtaXN0eXJvc2VcIiAtPiBNaXN0eXJvc2VcbiAgICB8IFwibW9jY2FzaW5cIiAtPiBNb2NjYXNpblxuICAgIHwgXCJuYXZham93aGl0ZVwiIC0+IE5hdmFqb3doaXRlXG4gICAgfCBcIm5hdnlcIiAtPiBOYXZ5XG4gICAgfCBcIm9sZGxhY2VcIiAtPiBPbGRsYWNlXG4gICAgfCBcIm9saXZlXCIgLT4gT2xpdmVcbiAgICB8IFwib2xpdmVkcmFiXCIgLT4gT2xpdmVkcmFiXG4gICAgfCBcIm9yYW5nZVwiIC0+IE9yYW5nZVxuICAgIHwgXCJvcmFuZ2VyZWRcIiAtPiBPcmFuZ2VyZWRcbiAgICB8IFwib3JjaGlkXCIgLT4gT3JjaGlkXG4gICAgfCBcInBhbGVnb2xkZW5yb2RcIiAtPiBQYWxlZ29sZGVucm9kXG4gICAgfCBcInBhbGVncmVlblwiIC0+IFBhbGVncmVlblxuICAgIHwgXCJwYWxldHVycXVvaXNlXCIgLT4gUGFsZXR1cnF1b2lzZVxuICAgIHwgXCJwYWxldmlvbGV0cmVkXCIgLT4gUGFsZXZpb2xldHJlZFxuICAgIHwgXCJwYXBheWF3aGlwXCIgLT4gUGFwYXlhd2hpcFxuICAgIHwgXCJwZWFjaHB1ZmZcIiAtPiBQZWFjaHB1ZmZcbiAgICB8IFwicGVydVwiIC0+IFBlcnVcbiAgICB8IFwicGlua1wiIC0+IFBpbmtcbiAgICB8IFwicGx1bVwiIC0+IFBsdW1cbiAgICB8IFwicG93ZGVyYmx1ZVwiIC0+IFBvd2RlcmJsdWVcbiAgICB8IFwicHVycGxlXCIgLT4gUHVycGxlXG4gICAgfCBcInJlZFwiIC0+IFJlZFxuICAgIHwgXCJyb3N5YnJvd25cIiAtPiBSb3N5YnJvd25cbiAgICB8IFwicm95YWxibHVlXCIgLT4gUm95YWxibHVlXG4gICAgfCBcInNhZGRsZWJyb3duXCIgLT4gU2FkZGxlYnJvd25cbiAgICB8IFwic2FsbW9uXCIgLT4gU2FsbW9uXG4gICAgfCBcInNhbmR5YnJvd25cIiAtPiBTYW5keWJyb3duXG4gICAgfCBcInNlYWdyZWVuXCIgLT4gU2VhZ3JlZW5cbiAgICB8IFwic2Vhc2hlbGxcIiAtPiBTZWFzaGVsbFxuICAgIHwgXCJzaWVubmFcIiAtPiBTaWVubmFcbiAgICB8IFwic2lsdmVyXCIgLT4gU2lsdmVyXG4gICAgfCBcInNreWJsdWVcIiAtPiBTa3libHVlXG4gICAgfCBcInNsYXRlYmx1ZVwiIC0+IFNsYXRlYmx1ZVxuICAgIHwgXCJzbGF0ZWdyYXlcIiAtPiBTbGF0ZWdyYXlcbiAgICB8IFwic2xhdGVncmV5XCIgLT4gU2xhdGVncmV5XG4gICAgfCBcInNub3dcIiAtPiBTbm93XG4gICAgfCBcInNwcmluZ2dyZWVuXCIgLT4gU3ByaW5nZ3JlZW5cbiAgICB8IFwic3RlZWxibHVlXCIgLT4gU3RlZWxibHVlXG4gICAgfCBcInRhblwiIC0+IFRhblxuICAgIHwgXCJ0ZWFsXCIgLT4gVGVhbFxuICAgIHwgXCJ0aGlzdGxlXCIgLT4gVGhpc3RsZVxuICAgIHwgXCJ0b21hdG9cIiAtPiBUb21hdG9cbiAgICB8IFwidHVycXVvaXNlXCIgLT4gVHVycXVvaXNlXG4gICAgfCBcInZpb2xldFwiIC0+IFZpb2xldFxuICAgIHwgXCJ3aGVhdFwiIC0+IFdoZWF0XG4gICAgfCBcIndoaXRlXCIgLT4gV2hpdGVcbiAgICB8IFwid2hpdGVzbW9rZVwiIC0+IFdoaXRlc21va2VcbiAgICB8IFwieWVsbG93XCIgLT4gWWVsbG93XG4gICAgfCBcInllbGxvd2dyZWVuXCIgLT4gWWVsbG93Z3JlZW5cbiAgICB8IHMgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lXCIpKVxuXG4gIGxldCByZ2Jfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gMjQwLCAyNDgsIDI1NVxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IDI1MCwgMjM1LCAyMTVcbiAgICB8IEFxdWEgLT4gMCwgMjU1LCAyNTVcbiAgICB8IEFxdWFtYXJpbmUgLT4gMTI3LCAyNTUsIDIxMlxuICAgIHwgQXp1cmUgLT4gMjQwLCAyNTUsIDI1NVxuICAgIHwgQmVpZ2UgLT4gMjQ1LCAyNDUsIDIyMFxuICAgIHwgQmlzcXVlIC0+IDI1NSwgMjI4LCAxOTZcbiAgICB8IEJsYWNrIC0+IDAsIDAsIDBcbiAgICB8IEJsYW5jaGVkYWxtb25kIC0+IDI1NSwgMjM1LCAyMDVcbiAgICB8IEJsdWUgLT4gMCwgMCwgMjU1XG4gICAgfCBCbHVldmlvbGV0IC0+IDEzOCwgNDMsIDIyNlxuICAgIHwgQnJvd24gLT4gMTY1LCA0MiwgNDJcbiAgICB8IEJ1cmx5d29vZCAtPiAyMjIsIDE4NCwgMTM1XG4gICAgfCBDYWRldGJsdWUgLT4gOTUsIDE1OCwgMTYwXG4gICAgfCBDaGFydHJldXNlIC0+IDEyNywgMjU1LCAwXG4gICAgfCBDaG9jb2xhdGUgLT4gMjEwLCAxMDUsIDMwXG4gICAgfCBDb3JhbCAtPiAyNTUsIDEyNywgODBcbiAgICB8IENvcm5mbG93ZXJibHVlIC0+IDEwMCwgMTQ5LCAyMzdcbiAgICB8IENvcm5zaWxrIC0+IDI1NSwgMjQ4LCAyMjBcbiAgICB8IENyaW1zb24gLT4gMjIwLCAyMCwgNjBcbiAgICB8IEN5YW4gLT4gMCwgMjU1LCAyNTVcbiAgICB8IERhcmtibHVlIC0+IDAsIDAsIDEzOVxuICAgIHwgRGFya2N5YW4gLT4gMCwgMTM5LCAxMzlcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gMTg0LCAxMzQsIDExXG4gICAgfCBEYXJrZ3JheSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJrZ3JlZW4gLT4gMCwgMTAwLCAwXG4gICAgfCBEYXJrZ3JleSAtPiAxNjksIDE2OSwgMTY5XG4gICAgfCBEYXJra2hha2kgLT4gMTg5LCAxODMsIDEwN1xuICAgIHwgRGFya21hZ2VudGEgLT4gMTM5LCAwLCAxMzlcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IDg1LCAxMDcsIDQ3XG4gICAgfCBEYXJrb3JhbmdlIC0+IDI1NSwgMTQwLCAwXG4gICAgfCBEYXJrb3JjaGlkIC0+IDE1MywgNTAsIDIwNFxuICAgIHwgRGFya3JlZCAtPiAxMzksIDAsIDBcbiAgICB8IERhcmtzYWxtb24gLT4gMjMzLCAxNTAsIDEyMlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IDE0MywgMTg4LCAxNDNcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gNzIsIDYxLCAxMzlcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrdHVycXVvaXNlIC0+IDAsIDIwNiwgMjA5XG4gICAgfCBEYXJrdmlvbGV0IC0+IDE0OCwgMCwgMjExXG4gICAgfCBEZWVwcGluayAtPiAyNTUsIDIwLCAxNDdcbiAgICB8IERlZXBza3libHVlIC0+IDAsIDE5MSwgMjU1XG4gICAgfCBEaW1ncmF5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERpbWdyZXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRG9kZ2VyYmx1ZSAtPiAzMCwgMTQ0LCAyNTVcbiAgICB8IEZpcmVicmljayAtPiAxNzgsIDM0LCAzNFxuICAgIHwgRmxvcmFsd2hpdGUgLT4gMjU1LCAyNTAsIDI0MFxuICAgIHwgRm9yZXN0Z3JlZW4gLT4gMzQsIDEzOSwgMzRcbiAgICB8IEZ1Y2hzaWEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IEdhaW5zYm9ybyAtPiAyMjAsIDIyMCwgMjIwXG4gICAgfCBHaG9zdHdoaXRlIC0+IDI0OCwgMjQ4LCAyNTVcbiAgICB8IEdvbGQgLT4gMjU1LCAyMTUsIDBcbiAgICB8IEdvbGRlbnJvZCAtPiAyMTgsIDE2NSwgMzJcbiAgICB8IEdyYXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgR3JlZW4gLT4gMCwgMTI4LCAwXG4gICAgfCBHcmVlbnllbGxvdyAtPiAxNzMsIDI1NSwgNDdcbiAgICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICAgIHwgSG9uZXlkZXcgLT4gMjQwLCAyNTUsIDI0MFxuICAgIHwgSG90cGluayAtPiAyNTUsIDEwNSwgMTgwXG4gICAgfCBJbmRpYW5yZWQgLT4gMjA1LCA5MiwgOTJcbiAgICB8IEluZGlnbyAtPiA3NSwgMCwgMTMwXG4gICAgfCBJdm9yeSAtPiAyNTUsIDI1NSwgMjQwXG4gICAgfCBLaGFraSAtPiAyNDAsIDIzMCwgMTQwXG4gICAgfCBMYXZlbmRlciAtPiAyMzAsIDIzMCwgMjUwXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IDI1NSwgMjQwLCAyNDVcbiAgICB8IExhd25ncmVlbiAtPiAxMjQsIDI1MiwgMFxuICAgIHwgTGVtb25jaGlmZm9uIC0+IDI1NSwgMjUwLCAyMDVcbiAgICB8IExpZ2h0Ymx1ZSAtPiAxNzMsIDIxNiwgMjMwXG4gICAgfCBMaWdodGNvcmFsIC0+IDI0MCwgMTI4LCAxMjhcbiAgICB8IExpZ2h0Y3lhbiAtPiAyMjQsIDI1NSwgMjU1XG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiAyNTAsIDI1MCwgMjEwXG4gICAgfCBMaWdodGdyYXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRncmVlbiAtPiAxNDQsIDIzOCwgMTQ0XG4gICAgfCBMaWdodGdyZXkgLT4gMjExLCAyMTEsIDIxMVxuICAgIHwgTGlnaHRwaW5rIC0+IDI1NSwgMTgyLCAxOTNcbiAgICB8IExpZ2h0c2FsbW9uIC0+IDI1NSwgMTYwLCAxMjJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gMzIsIDE3OCwgMTcwXG4gICAgfCBMaWdodHNreWJsdWUgLT4gMTM1LCAyMDYsIDI1MFxuICAgIHwgTGlnaHRzbGF0ZWdyYXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gMTE5LCAxMzYsIDE1M1xuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gMTc2LCAxOTYsIDIyMlxuICAgIHwgTGlnaHR5ZWxsb3cgLT4gMjU1LCAyNTUsIDIyNFxuICAgIHwgTGltZSAtPiAwLCAyNTUsIDBcbiAgICB8IExpbWVncmVlbiAtPiA1MCwgMjA1LCA1MFxuICAgIHwgTGluZW4gLT4gMjUwLCAyNDAsIDIzMFxuICAgIHwgTWFnZW50YSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgTWFyb29uIC0+IDEyOCwgMCwgMFxuICAgIHwgTWVkaXVtYXF1YW1hcmluZSAtPiAxMDIsIDIwNSwgMTcwXG4gICAgfCBNZWRpdW1ibHVlIC0+IDAsIDAsIDIwNVxuICAgIHwgTWVkaXVtb3JjaGlkIC0+IDE4NiwgODUsIDIxMVxuICAgIHwgTWVkaXVtcHVycGxlIC0+IDE0NywgMTEyLCAyMTlcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IDYwLCAxNzksIDExM1xuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IDEyMywgMTA0LCAyMzhcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IDAsIDI1MCwgMTU0XG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gNzIsIDIwOSwgMjA0XG4gICAgfCBNZWRpdW12aW9sZXRyZWQgLT4gMTk5LCAyMSwgMTMzXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gMjUsIDI1LCAxMTJcbiAgICB8IE1pbnRjcmVhbSAtPiAyNDUsIDI1NSwgMjUwXG4gICAgfCBNaXN0eXJvc2UgLT4gMjU1LCAyMjgsIDIyNVxuICAgIHwgTW9jY2FzaW4gLT4gMjU1LCAyMjgsIDE4MVxuICAgIHwgTmF2YWpvd2hpdGUgLT4gMjU1LCAyMjIsIDE3M1xuICAgIHwgTmF2eSAtPiAwLCAwLCAxMjhcbiAgICB8IE9sZGxhY2UgLT4gMjUzLCAyNDUsIDIzMFxuICAgIHwgT2xpdmUgLT4gMTI4LCAxMjgsIDBcbiAgICB8IE9saXZlZHJhYiAtPiAxMDcsIDE0MiwgMzVcbiAgICB8IE9yYW5nZSAtPiAyNTUsIDE2NSwgMFxuICAgIHwgT3JhbmdlcmVkIC0+IDI1NSwgNjksIDBcbiAgICB8IE9yY2hpZCAtPiAyMTgsIDExMiwgMjE0XG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IDIzOCwgMjMyLCAxNzBcbiAgICB8IFBhbGVncmVlbiAtPiAxNTIsIDI1MSwgMTUyXG4gICAgfCBQYWxldHVycXVvaXNlIC0+IDE3NSwgMjM4LCAyMzhcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gMjE5LCAxMTIsIDE0N1xuICAgIHwgUGFwYXlhd2hpcCAtPiAyNTUsIDIzOSwgMjEzXG4gICAgfCBQZWFjaHB1ZmYgLT4gMjU1LCAyMTgsIDE4NVxuICAgIHwgUGVydSAtPiAyMDUsIDEzMywgNjNcbiAgICB8IFBpbmsgLT4gMjU1LCAxOTIsIDIwM1xuICAgIHwgUGx1bSAtPiAyMjEsIDE2MCwgMjIxXG4gICAgfCBQb3dkZXJibHVlIC0+IDE3NiwgMjI0LCAyMzBcbiAgICB8IFB1cnBsZSAtPiAxMjgsIDAsIDEyOFxuICAgIHwgUmVkIC0+IDI1NSwgMCwgMFxuICAgIHwgUm9zeWJyb3duIC0+IDE4OCwgMTQzLCAxNDNcbiAgICB8IFJveWFsYmx1ZSAtPiA2NSwgMTA1LCAyMjVcbiAgICB8IFNhZGRsZWJyb3duIC0+IDEzOSwgNjksIDE5XG4gICAgfCBTYWxtb24gLT4gMjUwLCAxMjgsIDExNFxuICAgIHwgU2FuZHlicm93biAtPiAyNDQsIDE2NCwgOTZcbiAgICB8IFNlYWdyZWVuIC0+IDQ2LCAxMzksIDg3XG4gICAgfCBTZWFzaGVsbCAtPiAyNTUsIDI0NSwgMjM4XG4gICAgfCBTaWVubmEgLT4gMTYwLCA4MiwgNDVcbiAgICB8IFNpbHZlciAtPiAxOTIsIDE5MiwgMTkyXG4gICAgfCBTa3libHVlIC0+IDEzNSwgMjA2LCAyMzVcbiAgICB8IFNsYXRlYmx1ZSAtPiAxMDYsIDkwLCAyMDVcbiAgICB8IFNsYXRlZ3JheSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbGF0ZWdyZXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU25vdyAtPiAyNTUsIDI1MCwgMjUwXG4gICAgfCBTcHJpbmdncmVlbiAtPiAwLCAyNTUsIDEyN1xuICAgIHwgU3RlZWxibHVlIC0+IDcwLCAxMzAsIDE4MFxuICAgIHwgVGFuIC0+IDIxMCwgMTgwLCAxNDBcbiAgICB8IFRlYWwgLT4gMCwgMTI4LCAxMjhcbiAgICB8IFRoaXN0bGUgLT4gMjE2LCAxOTEsIDIxNlxuICAgIHwgVG9tYXRvIC0+IDI1NSwgOTksIDcxXG4gICAgfCBUdXJxdW9pc2UgLT4gNjQsIDIyNCwgMjA4XG4gICAgfCBWaW9sZXQgLT4gMjM4LCAxMzAsIDIzOFxuICAgIHwgV2hlYXQgLT4gMjQ1LCAyMjIsIDE3OVxuICAgIHwgV2hpdGUgLT4gMjU1LCAyNTUsIDI1NVxuICAgIHwgV2hpdGVzbW9rZSAtPiAyNDUsIDI0NSwgMjQ1XG4gICAgfCBZZWxsb3cgLT4gMjU1LCAyNTUsIDBcbiAgICB8IFllbGxvd2dyZWVuIC0+IDE1NCwgMjA1LCA1MFxuXG4gIHR5cGUgdCA9XG4gICAgfCBOYW1lIG9mIG5hbWVcbiAgICB8IFJHQiBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUmVkLCBHcmVlbiBhbmQgQmx1ZSB2YWx1ZXMuIENsaXBwZWQgdG8gW1swLi4yNTVdXSBieSBtb3N0IChBbGw/KVxuICAgICAgICAgICAgYnJvd3NlcnMuICopXG4gICAgfCBSR0JfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIGFyZSBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuICopXG4gICAgfCBSR0JBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgUkdCIHdpdGggYWRkaXRpb25hbCB0cmFuc3BhcmVuY3kgYXJndW1lbnQuIE9wYWNpdHkgc2hvdWxkIGJlIGluXG4gICAgICAgICAgICBbMC5dIChjb21wbGV0ZWx5IHRyYW5zcGFyZW50KSBhbmQgWzEuXSAoY29tcGxldGVseSBvcGFxdWUpLiAqKVxuICAgIHwgUkdCQV9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBzcGVjaWZpZWQgYXMgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiBBbHBoYVxuICAgICAgICAgICAgY2hhbm5lbCAob3BhY2l0eSkgaXMgc3RpbGwgYSBbMC5dIHRvIFsxLl0gZmxvYXQuICopXG4gICAgfCBIU0wgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIEh1ZSwgU2F0dXJhdGlvbiBhbmQgTGlnaHRuZXNzIHZhbHVlcy4gSHVlIGlzIGFuIGFuZ2xlIGluIGRlZ3JlZSAoaW5cbiAgICAgICAgICAgIGludGVydmFsIFtbMC4uMzYwW10pLiBTYXR1cmF0aW9uIGlzIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGNvbG9ybGVzcy4gTGlnaHRuZXNzIGlzIGFsc28gYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgYmxhY2suICopXG4gICAgfCBIU0xBIG9mIChpbnQgKiBpbnQgKiBpbnQgKiBmbG9hdClcbiAgICAgICAgKCoqIFNhbWUgYXMgSFNMIHdpdGggYW4gb3BhY2l0eSBhcmd1bWVudCBiZXR3ZWVuIFswLl0gYW5kIFsxLl0uICopXG5cbiAgbGV0IHJnYiA/YSByIGcgYiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IFJHQiAociwgZywgYilcbiAgICB8IFNvbWUgYSAtPiBSR0JBIChyLCBnLCBiLCBhKVxuXG4gIGxldCBoc2wgP2EgaCBzIGwgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBIU0wgKGgsIHMsIGwpXG4gICAgfCBTb21lIGEgLT4gSFNMQSAoaCwgcywgbCwgYSlcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IHN0cmluZ19vZl9uYW1lIG5cbiAgICB8IFJHQiAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQsJWQsJWQpXCIgciBnIGJcbiAgICB8IFJHQl9wZXJjZW50IChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCUlLCVkJSUsJWQlJSlcIiByIGcgYlxuICAgIHwgUkdCQSAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkLCVkLCVkLCVmKVwiIHIgZyBiIGFcbiAgICB8IFJHQkFfcGVyY2VudCAociwgZywgYiwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2JhKCVkJSUsJWQlJSwlZCUlLCVmKVwiIHIgZyBiIGFcbiAgICB8IEhTTCAoaCwgcywgbCkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2woJWQsJWQlJSwlZCUlKVwiIGggcyBsXG4gICAgfCBIU0xBIChoLCBzLCBsLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbGEoJWQsJWQlJSwlZCUlLCVmKVwiIGggcyBsIGFcblxuICBsZXQgaGV4X29mX3JnYiAocmVkLCBncmVlbiwgYmx1ZSkgPVxuICAgIGxldCBpbl9yYW5nZSBpID1cbiAgICAgIGlmIGkgPCAwIHx8IGkgPiAyNTVcbiAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHN0cmluZ19vZl9pbnQgaSBeIFwiIGlzIG91dCBvZiB2YWxpZCByYW5nZVwiKSlcbiAgICBpblxuICAgIGluX3JhbmdlIHJlZDtcbiAgICBpbl9yYW5nZSBncmVlbjtcbiAgICBpbl9yYW5nZSBibHVlO1xuICAgIFByaW50Zi5zcHJpbnRmIFwiIyUwMlglMDJYJTAyWFwiIHJlZCBncmVlbiBibHVlXG5cbiAgKCogT2NhbWwgPC0+IEpTIHJlcHJlc2VudGF0aW9uICopXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgKCogVE9ETz8gYmUgbW9yZSByZXN0cmljdGl2ZSwgY2xpcCB2YWx1ZXMgaW50byBzdGFuZGFyZCByYW5nZSAqKVxuICBsZXQganNfdF9vZl9qc19zdHJpbmcgcyA9XG4gICAgbGV0IHJnYl9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXmhzbFxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJVxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IGhzbGFfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5oc2xhXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgaWYgSnMudG9fYm9vbCAocmdiX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYl9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKGhzbGFfcmUjI3Rlc3QgcylcbiAgICB0aGVuIHNcbiAgICBlbHNlIGlmIExpc3QubWVtXG4gICAgICAgICAgICAgIChKcy50b19zdHJpbmcgcylcbiAgICAgICAgICAgICAgWyBcImFsaWNlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJhbnRpcXVld2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiYXF1YVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcImF6dXJlXCJcbiAgICAgICAgICAgICAgOyBcImJlaWdlXCJcbiAgICAgICAgICAgICAgOyBcImJpc3F1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibGFja1wiXG4gICAgICAgICAgICAgIDsgXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgICAgICAgICAgIDsgXCJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImJsdWV2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiYnJvd25cIlxuICAgICAgICAgICAgICA7IFwiYnVybHl3b29kXCJcbiAgICAgICAgICAgICAgOyBcImNhZGV0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjaGFydHJldXNlXCJcbiAgICAgICAgICAgICAgOyBcImNob2NvbGF0ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJjb3Juc2lsa1wiXG4gICAgICAgICAgICAgIDsgXCJjcmltc29uXCJcbiAgICAgICAgICAgICAgOyBcImN5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2JsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya2N5YW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2toYWtpXCJcbiAgICAgICAgICAgICAgOyBcImRhcmttYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvbGl2ZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya29yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrcmVkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmt0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwiZGFya3Zpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJkZWVwcGlua1wiXG4gICAgICAgICAgICAgIDsgXCJkZWVwc2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZG9kZ2VyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJmaXJlYnJpY2tcIlxuICAgICAgICAgICAgICA7IFwiZmxvcmFsd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZm9yZXN0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZnVjaHNpYVwiXG4gICAgICAgICAgICAgIDsgXCJnYWluc2Jvcm9cIlxuICAgICAgICAgICAgICA7IFwiZ2hvc3R3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJncmF5XCJcbiAgICAgICAgICAgICAgOyBcImdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImdyZWVueWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImdyZXlcIlxuICAgICAgICAgICAgICA7IFwiaG9uZXlkZXdcIlxuICAgICAgICAgICAgICA7IFwiaG90cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJpbmRpYW5yZWRcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWdvXCJcbiAgICAgICAgICAgICAgOyBcIml2b3J5XCJcbiAgICAgICAgICAgICAgOyBcImtoYWtpXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyXCJcbiAgICAgICAgICAgICAgOyBcImxhdmVuZGVyYmx1c2hcIlxuICAgICAgICAgICAgICA7IFwibGF3bmdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxlbW9uY2hpZmZvblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjb3JhbFwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGN5YW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0cGlua1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaW1lXCJcbiAgICAgICAgICAgICAgOyBcImxpbWVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaW5lblwiXG4gICAgICAgICAgICAgIDsgXCJtYWdlbnRhXCJcbiAgICAgICAgICAgICAgOyBcIm1hcm9vblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJtaWRuaWdodGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibWludGNyZWFtXCJcbiAgICAgICAgICAgICAgOyBcIm1pc3R5cm9zZVwiXG4gICAgICAgICAgICAgIDsgXCJtb2NjYXNpblwiXG4gICAgICAgICAgICAgIDsgXCJuYXZham93aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJuYXZ5XCJcbiAgICAgICAgICAgICAgOyBcIm9sZGxhY2VcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVcIlxuICAgICAgICAgICAgICA7IFwib2xpdmVkcmFiXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VyZWRcIlxuICAgICAgICAgICAgICA7IFwib3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwicGFsZXZpb2xldHJlZFwiXG4gICAgICAgICAgICAgIDsgXCJwYXBheWF3aGlwXCJcbiAgICAgICAgICAgICAgOyBcInBlYWNocHVmZlwiXG4gICAgICAgICAgICAgIDsgXCJwZXJ1XCJcbiAgICAgICAgICAgICAgOyBcInBpbmtcIlxuICAgICAgICAgICAgICA7IFwicGx1bVwiXG4gICAgICAgICAgICAgIDsgXCJwb3dkZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcInB1cnBsZVwiXG4gICAgICAgICAgICAgIDsgXCJyZWRcIlxuICAgICAgICAgICAgICA7IFwicm9zeWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInJveWFsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzYWRkbGVicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwic2FuZHlicm93blwiXG4gICAgICAgICAgICAgIDsgXCJzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzZWFzaGVsbFwiXG4gICAgICAgICAgICAgIDsgXCJzaWVubmFcIlxuICAgICAgICAgICAgICA7IFwic2lsdmVyXCJcbiAgICAgICAgICAgICAgOyBcInNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwic25vd1wiXG4gICAgICAgICAgICAgIDsgXCJzcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwidGFuXCJcbiAgICAgICAgICAgICAgOyBcInRlYWxcIlxuICAgICAgICAgICAgICA7IFwidGhpc3RsZVwiXG4gICAgICAgICAgICAgIDsgXCJ0b21hdG9cIlxuICAgICAgICAgICAgICA7IFwidHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGVhdFwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJ3aGl0ZXNtb2tlXCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dncmVlblwiXG4gICAgICAgICAgICAgIF1cbiAgICB0aGVuIHNcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChKcy50b19zdHJpbmcgcyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKVxuXG4gIGxldCBuYW1lIGNuID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfbmFtZSBjbilcblxuICBsZXQganMgPSBmdW5jdGlvblxuICAgIHwgTmFtZSBuIC0+IG5hbWUgblxuICAgIHwgKFJHQiBfIHwgUkdCX3BlcmNlbnQgXyB8IFJHQkEgXyB8IFJHQkFfcGVyY2VudCBfIHwgSFNMIF8gfCBIU0xBIF8pIGFzIGMgLT5cbiAgICAgICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCBjKVxuXG4gIGxldCBtbCBjID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBjIGluXG4gICAgdHJ5IE5hbWUgKG5hbWVfb2Zfc3RyaW5nIHMpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gKFxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yXCIpKSBpblxuICAgICAgbGV0IHJlX3JnYiA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSwoXFxcXGQqKSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX3JnYl9wY3QgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiklLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9oc2wgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKGhzbGE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IGlfb2Zfc19vID0gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgfCBTb21lIGkgLT4gKFxuICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaVxuICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBpIF4gXCIpOiBcIiBeIHMpKSlcbiAgICAgIGluXG4gICAgICBsZXQgZl9vZl9zIGYgPVxuICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgfCBGYWlsdXJlIHMgLT5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGYgXiBcIik6IFwiIF4gcykpXG4gICAgICBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2IgcyAwIHdpdGhcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0IgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUkdCQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYl9wY3QgcyAwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgUkdCQV9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9oc2wgcyAwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICAgICAgbGV0IGdyZWVuID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAzIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IEhTTCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xhXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEhTTEEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKSkpKVxuZW5kXG5cbm1vZHVsZSBMZW5ndGggPSBzdHJ1Y3RcbiAgKCogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy12YWx1ZXMvI2xlbmd0aHMgKilcblxuICAoKiBUT0RPOlxuICAgICB7W1xuICAgICAgIHR5cGUganNfdCA9IHByaXZhdGUgSnMuc3RyaW5nIEpzLnRcbiAgICAgICB2YWwganNfdF9vZl90XG4gICAgICAgdmFsIHRfb2ZfanNfdFxuICAgICAgIHZhbCB0X29mX3N0cmluZ1xuICAgICBdfVxuICAqKVxuXG4gIHR5cGUgdCA9XG4gICAgfCBaZXJvXG4gICAgKCogcmVsYXRpdmUgKilcbiAgICB8IEVtIG9mIGZsb2F0XG4gICAgfCBFeCBvZiBmbG9hdFxuICAgIHwgUHggb2YgZmxvYXRcbiAgICB8IEdkIG9mIGZsb2F0XG4gICAgfCBSZW0gb2YgZmxvYXRcbiAgICB8IFZ3IG9mIGZsb2F0XG4gICAgfCBWaCBvZiBmbG9hdFxuICAgIHwgVm0gb2YgZmxvYXRcbiAgICB8IENoIG9mIGZsb2F0XG4gICAgKCogYWJzb2x1dGUgKilcbiAgICB8IE1tIG9mIGZsb2F0XG4gICAgfCBDbSBvZiBmbG9hdFxuICAgIHwgSW4gb2YgZmxvYXRcbiAgICB8IFB0IG9mIGZsb2F0XG4gICAgfCBQYyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBaZXJvIC0+IFwiMFwiXG4gICAgfCBFbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJlbVwiXG4gICAgfCBFeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJleFwiXG4gICAgfCBQeCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJweFwiXG4gICAgfCBHZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJnZFwiXG4gICAgfCBSZW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmVtXCJcbiAgICB8IFZ3IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZ3XCJcbiAgICB8IFZoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZoXCJcbiAgICB8IFZtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInZtXCJcbiAgICB8IENoIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNoXCJcbiAgICB8IE1tIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcIm1tXCJcbiAgICB8IENtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImNtXCJcbiAgICB8IEluIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImluXCJcbiAgICB8IFB0IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB0XCJcbiAgICB8IFBjIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInBjXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCB0ID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyB0IGluXG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCIwXCJcbiAgICB0aGVuIFplcm9cbiAgICBlbHNlXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopPylcXFxccyooXFxcXFMqKSRcIiBpblxuICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBcImVtXCIgLT4gRW0gZlxuICAgICAgICAgIHwgU29tZSBcImV4XCIgLT4gRXggZlxuICAgICAgICAgIHwgU29tZSBcInB4XCIgLT4gUHggZlxuICAgICAgICAgIHwgU29tZSBcImdkXCIgLT4gR2QgZlxuICAgICAgICAgIHwgU29tZSBcInJlbVwiIC0+IFJlbSBmXG4gICAgICAgICAgfCBTb21lIFwidndcIiAtPiBWdyBmXG4gICAgICAgICAgfCBTb21lIFwidmhcIiAtPiBWaCBmXG4gICAgICAgICAgfCBTb21lIFwidm1cIiAtPiBWbSBmXG4gICAgICAgICAgfCBTb21lIFwiY2hcIiAtPiBDaCBmXG4gICAgICAgICAgfCBTb21lIFwibW1cIiAtPiBNbSBmXG4gICAgICAgICAgfCBTb21lIFwiY21cIiAtPiBDbSBmXG4gICAgICAgICAgfCBTb21lIFwiaW5cIiAtPiBJbiBmXG4gICAgICAgICAgfCBTb21lIFwicHRcIiAtPiBQdCBmXG4gICAgICAgICAgfCBTb21lIFwicGNcIiAtPiBQYyBmXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKSlcbmVuZFxuXG5tb2R1bGUgQW5nbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IERlZyBvZiBmbG9hdFxuICAgIHwgR3JhZCBvZiBmbG9hdFxuICAgIHwgUmFkIG9mIGZsb2F0XG4gICAgfCBUdXJucyBvZiBmbG9hdFxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBEZWcgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZGVnXCJcbiAgICB8IEdyYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ3JhZFwiXG4gICAgfCBSYWQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicmFkXCJcbiAgICB8IFR1cm5zIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInR1cm5zXCJcblxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBqcyB0ID0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfdCB0KVxuXG4gIGxldCBtbCBqID1cbiAgICBsZXQgcyA9IEpzLnRvX3N0cmluZyBqIGluXG4gICAgbGV0IHJlID0gUmVnZXhwLnJlZ2V4cCBcIl4oXFxcXGQqKD86XFxcXC5cXFxcZCopKShkZWd8Z3JhZHxyYWR8dHVybnMpJFwiIGluXG4gICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICB0cnkgZmxvYXRfb2Zfc3RyaW5nIGZcbiAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgIHwgU29tZSBcImRlZ1wiIC0+IERlZyBmXG4gICAgICAgIHwgU29tZSBcImdyYWRcIiAtPiBHcmFkIGZcbiAgICAgICAgfCBTb21lIFwicmFkXCIgLT4gUmFkIGZcbiAgICAgICAgfCBTb21lIFwidHVybnNcIiAtPiBUdXJucyBmXG4gICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCoqIEphdmFzY3JpcHQgZXZlbnRzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBUeXAgPSBEb21faHRtbC5FdmVudFxuXG50eXBlIGxpc3RlbmVyID0gRG9tX2h0bWwuZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGxpc3RlbiA/KGNhcHR1cmUgPSBmYWxzZSkgdGFyZ2V0IHR5cCBjYiA9XG4gIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXJcbiAgICB0YXJnZXRcbiAgICB0eXBcbiAgICAoRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gbiBlIC0+IEpzLmJvb2wgKGNiIG4gZSkpKVxuICAgIChKcy5ib29sIGNhcHR1cmUpXG5cbmxldCBzdG9wX2xpc3RlbiA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb25cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmxldCB4bWxucyA9IEpzLnN0cmluZyBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcblxuKCogdHJhbnNsYXRlIHNwZWMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaWRsLmh0bWwgKilcbigqIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zdHJ1Y3QuaHRtbCAqKVxuXG50eXBlIGVycm9yX2NvZGUgPVxuICB8IFdST05HX1RZUEVfRVJSXG4gIHwgSU5WQUxJRF9WQUxVRV9FUlJcbiAgfCBNQVRSSVhfTk9UX0lOVkVSVEFCTEVcblxuY2xhc3MgdHlwZSBzdmdfZXJyb3IgPSBvYmplY3RcbiAgaW5oZXJpdCBKcy5lcnJvclxuXG4gIG1ldGhvZCBjb2RlIDogZXJyb3JfY29kZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leGNlcHRpb24gU1ZHRXJyb3Igb2Ygc3ZnX2Vycm9yXG5cbnR5cGUgbGVuZ3RoVW5pdFR5cGUgPVxuICB8IExFTkdUSFRZUEVfVU5LTk9XTlxuICB8IExFTkdUSFRZUEVfTlVNQkVSXG4gIHwgTEVOR1RIVFlQRV9QRVJDRU5UQUdFXG4gIHwgTEVOR1RIVFlQRV9FTVNcbiAgfCBMRU5HVEhUWVBFX0VYU1xuICB8IExFTkdUSFRZUEVfUFhcbiAgfCBMRU5HVEhUWVBFX0NNXG4gIHwgTEVOR1RIVFlQRV9NTVxuICB8IExFTkdUSFRZUEVfSU5cbiAgfCBMRU5HVEhUWVBFX1BUXG4gIHwgTEVOR1RIVFlQRV9QQ1xuXG50eXBlIGFuZ2xlVW5pdFR5cGUgPVxuICB8IEFOR0xFVFlQRV9VTktOT1dOXG4gIHwgQU5HTEVUWVBFX1VOU1BFQ0lGSUVEXG4gIHwgQU5HTEVUWVBFX0RFR1xuICB8IEFOR0xFVFlQRV9SQURcbiAgfCBBTkdMRVRZUEVfR1JBRFxuXG50eXBlIGNvbG9yVHlwZSA9XG4gIHwgQ09MT1JUWVBFX1VOS05PV05cbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JcbiAgfCBDT0xPUlRZUEVfUkdCQ09MT1JfSUNDQ09MT1JcbiAgfCBDT0xPUlRZUEVfQ1VSUkVOVENPTE9SXG5cbnR5cGUgYWxpZ25tZW50VHlwZSA9XG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYXG5cbnR5cGUgbWVldE9yU2xpY2VUeXBlID1cbiAgfCBNRUVUT1JTTElDRV9VTktOT1dOXG4gIHwgTUVFVE9SU0xJQ0VfTUVFVFxuICB8IE1FRVRPUlNMSUNFX1NMSUNFXG5cbnR5cGUgdHJhbnNmb3JtVHlwZSA9XG4gIHwgVFJBTlNGT1JNX1VOS05PV05cbiAgfCBUUkFOU0ZPUk1fTUFUUklYXG4gIHwgVFJBTlNGT1JNX1RSQU5TTEFURVxuICB8IFRSQU5TRk9STV9TQ0FMRVxuICB8IFRSQU5TRk9STV9ST1RBVEVcbiAgfCBUUkFOU0ZPUk1fU0tFV1hcbiAgfCBUUkFOU0ZPUk1fU0tFV1lcblxudHlwZSB6b29tQW5kUGFuVHlwZSA9XG4gIHwgWk9PTUFORFBBTl9VTktOT1dOXG4gIHwgWk9PTUFORFBBTl9ESVNBQkxFXG4gIHwgWk9PTUFORFBBTl9NQUdOSUZZXG5cbnR5cGUgbGVuZ3RoQWRqdXN0ID1cbiAgfCBMRU5HVEhBREpVU1RfVU5LTk9XTlxuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFNcblxudHlwZSB1bml0VHlwZSA9XG4gIHwgVU5JVF9UWVBFX1VOS05PV05cbiAgfCBVTklUX1RZUEVfVVNFUlNQQUNFT05VU0VcbiAgfCBVTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1hcblxuKCogaW50ZXJmYWNlIFNWR1JlbmRlcmluZ0ludGVudCAqKVxudHlwZSBpbnRlbnRUeXBlID1cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1VOS05PV05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FVVE9cbiAgfCBSRU5ERVJJTkdfSU5URU5UX1BFUkNFUFRVQUxcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQ1xuICB8IFJFTkRFUklOR19JTlRFTlRfU0FUVVJBVElPTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQUJTT0xVVEVfQ09MT1JJTUVUUklDXG5cbigqIFBhdGggU2VnbWVudCBUeXBlcyAqKVxudHlwZSBwYXRoU2VnbWVudFR5cGUgPVxuICB8IFBBVEhTRUdfVU5LTk9XTlxuICB8IFBBVEhTRUdfQ0xPU0VQQVRIXG4gIHwgUEFUSFNFR19NT1ZFVE9fQUJTXG4gIHwgUEFUSFNFR19NT1ZFVE9fUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfUkVMXG4gIHwgUEFUSFNFR19BUkNfQUJTXG4gIHwgUEFUSFNFR19BUkNfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUxcblxuKCogdGV4dFBhdGggTWV0aG9kIFR5cGVzICopXG50eXBlIHRleHRQYXRoTWV0aG9kVHlwZSA9XG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSFxuXG4oKiB0ZXh0UGF0aCBTcGFjaW5nIFR5cGVzICopXG50eXBlIHRleHRQYXRoU3BhY2luZ1R5cGUgPVxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1RcblxuKCogU3ByZWFkIE1ldGhvZCBUeXBlcyAqKVxudHlwZSBzcHJlYWRNZXRob2RUeXBlID1cbiAgfCBTUFJFQURNRVRIT0RfVU5LTk9XTlxuICB8IFNQUkVBRE1FVEhPRF9QQURcbiAgfCBTUFJFQURNRVRIT0RfUkVGTEVDVFxuICB8IFNQUkVBRE1FVEhPRF9SRVBFQVRcblxudHlwZSBzdXNwZW5kSGFuZGxlSURcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgWydhXSBhbmltYXRlZCA9IG9iamVjdFxuICBtZXRob2QgYmFzZVZhbCA6ICdhIHByb3BcblxuICBtZXRob2QgYW5pbVZhbCA6ICdhIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbGlzdCA9IG9iamVjdFxuICBtZXRob2QgbnVtYmVyT2ZJdGVtcyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluaXRpYWxpemUgOiAnYSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRJdGVtQmVmb3JlIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUl0ZW0gOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgYXBwZW5kSXRlbSA6ICdhIC0+ICdhIG1ldGhcbmVuZFxuXG4oKioqKilcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgbWV0aG9kIGlkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxiYXNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lclNWR0VsZW1lbnQgOiBzdmdFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFN0cmluZyAqKVxuYW5kIGFuaW1hdGVkU3RyaW5nID0gW2pzX3N0cmluZyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRCb29sZWFuICopXG5hbmQgYW5pbWF0ZWRCb29sZWFuID0gW2Jvb2wgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0cmluZ0xpc3QgKilcbmFuZCBzdHJpbmdMaXN0ID0gW2pzX3N0cmluZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uICopXG5hbmQgYW5pbWF0ZWRFbnVtZXJhdGlvbiA9IFtpbnQgKCpzaG9ydCopXSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRJbnRlZ2VyICopXG5hbmQgYW5pbWF0ZWRJbnRlZ2VyID0gW2ludF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyICopXG5hbmQgYW5pbWF0ZWROdW1iZXIgPSBbbnVtYmVyX3RdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdOdW1iZXJMaXN0ICopXG5hbmQgbnVtYmVyTGlzdCA9IFtudW1iZXIgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ICopXG5hbmQgYW5pbWF0ZWROdW1iZXJMaXN0ID0gW251bWJlckxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aCAqKVxuYW5kIGxlbmd0aCA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBsZW5ndGhVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBsZW5ndGhVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGggKilcbmFuZCBhbmltYXRlZExlbmd0aCA9IFtsZW5ndGggdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0xlbmd0aExpc3QgKilcbmFuZCBsZW5ndGhMaXN0ID0gW2xlbmd0aCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aExpc3QgKilcbmFuZCBhbmltYXRlZExlbmd0aExpc3QgPSBbbGVuZ3RoTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5nbGUgKilcbmFuZCBhbmdsZSA9IG9iamVjdFxuICBtZXRob2QgdW5pdFR5cGUgOiBhbmdsZVVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRBbmdsZSAqKVxuYW5kIGFuaW1hdGVkQW5nbGUgPSBbYW5nbGUgdF0gYW5pbWF0ZWRcblxuKCogWFhYWFggTW92ZSBpdCAqKVxuYW5kIHJnYkNvbG9yID0gb2JqZWN0IGVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3IgKilcbmFuZCBjb2xvciA9IG9iamVjdFxuICAoKiBYWFggaW5oZXJpdCBjc3NWYWx1ZSAqKVxuICBtZXRob2QgY29sb3JUeXBlIDogY29sb3JUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmdiQ29sb3IgOiByZ2JDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaWNjQ29sb3IgOiBpY2NDb2xvciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0UkdCQ29sb3IgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UkdCQ29sb3JJQ0NDb2xvciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRDb2xvciA6IGNvbG9yVHlwZSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSUNDQ29sb3IgKilcbmFuZCBpY2NDb2xvciA9IG9iamVjdFxuICBtZXRob2QgY29sb3JQcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvcnMgOiBudW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0ICopXG5hbmQgcmVjdCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRSZWN0ICopXG5hbmQgYW5pbWF0ZWRSZWN0ID0gW3JlY3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxhYmxlICopXG5hbmQgc3R5bGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHlsZSA6IERvbV9odG1sLmNzc1N0eWxlRGVjbGFyYXRpb24gdCByZWFkb25seV9wcm9wXG4gICgqICAgQ1NTVmFsdWUgZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lKTsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTG9jYXRhYmxlICopXG5hbmQgbG9jYXRhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBuZWFyZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRCQm94IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTY3JlZW5DVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRyYW5zZm9ybVRvRWxlbWVudCA6IGVsZW1lbnQgdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybWFibGUgKilcbmFuZCB0cmFuc2Zvcm1hYmxlID0gb2JqZWN0XG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGVzdHMgKilcbmFuZCB0ZXN0cyA9IG9iamVjdFxuICBtZXRob2QgcmVxdWlyZWRGZWF0dXJlcyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkRXh0ZW5zaW9ucyA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN5c3RlbUxhbmd1YWdlIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGFzRXh0ZW5zaW9uIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGFuZ1NwYWNlICopXG5hbmQgbGFuZ1NwYWNlID0gb2JqZWN0XG4gIG1ldGhvZCB4bWxsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4bWxzcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAqKVxuYW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBvYmplY3RcbiAgbWV0aG9kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgOiBhbmltYXRlZEJvb2xlYW4gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpdFRvVmlld0JveCAqKVxuYW5kIGZpdFRvVmlld0JveCA9IG9iamVjdFxuICBtZXRob2Qgdmlld0JveCA6IGFuaW1hdGVkUmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpbyA6IGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUFuZFBhbiAqKVxuYW5kIHpvb21BbmRQYW4gPSBvYmplY3RcbiAgbWV0aG9kIHpvb21BbmRQYW4gOiB6b29tQW5kUGFuVHlwZSBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdTcGVjICopXG5hbmQgdmlld1NwZWMgPSBvYmplY3RcbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBtZXRob2QgdHJhbnNmb3JtIDogdHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdCb3hTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW9TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybVN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld1RhcmdldFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVVJJUmVmZXJlbmNlICopXG5hbmQgdXJpUmVmZXJlbmNlID0gb2JqZWN0XG4gIG1ldGhvZCBocmVmIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NTU1J1bGUgOiBDU1NSdWxlICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENPTE9SX1BST0ZJTEVfUlVMRSA9IDc7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRG9jdW1lbnQgKilcbmFuZCBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50RXZlbnQgKilcbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWZlcnJlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZG9tYWluIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290RWxlbWVudCA6IHN2Z0VsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuICAoKiByb290RWxlbWVudCB3aWxsIGJlIG51bGwgb3IgdW5kZWZpbmVkIGluIGFuIGh0bWwgY29udGV4dCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTVkdFbGVtZW50ICopXG5hbmQgc3ZnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRldmVudCwgdmlld2NzcywgZG9jdW1lbnRjc3MgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFNjcmlwdFR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0IDogcmVjdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuUGl4ZWxVbml0VG9NaWxsaW1ldGVyWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlQ3VycmVudFZpZXcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VmlldyA6IHZpZXdTcGVjIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U2NhbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUcmFuc2xhdGUgOiBwb2ludCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VzcGVuZFJlZHJhdyA6IGludCAtPiBzdXNwZW5kSGFuZGxlSUQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXcgOiBzdXNwZW5kSGFuZGxlSUQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhd0FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3JjZVJlZHJhdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5wYXVzZUFuaW1hdGlvbnMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uc1BhdXNlZCA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRDdXJyZW50VGltZSA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0SW50ZXJzZWN0aW9uTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuY2xvc3VyZUxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ludGVyc2VjdGlvbiA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGNoZWNrRW5jbG9zdXJlIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgZGVzZWxlY3RBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTnVtYmVyIDogbnVtYmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdMZW5ndGggOiBsZW5ndGggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0FuZ2xlIDogYW5nbGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BvaW50IDogcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR01hdHJpeCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUmVjdCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybSA6IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCB0IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiBEb20uZWxlbWVudCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR0VsZW1lbnQgKilcbmFuZCBnRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZWZzRWxlbWVudCAqKVxuYW5kIGRlZnNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVzY0VsZW1lbnQgKilcbmFuZCBkZXNjRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbiAgKCogWFhYWFhYWCA/IGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGl0bGVFbGVtZW50ICopXG5hbmQgdGl0bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTeW1ib2xFbGVtZW50ICopXG5hbmQgc3ltYm9sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVXNlRWxlbWVudCAqKVxuYW5kIHVzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZEluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgZWxlbWVudEluc3RhbmNlID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ0VsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCA6IHVzZUVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBlbGVtZW50SW5zdGFuY2VMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QgKilcbmFuZCBlbGVtZW50SW5zdGFuY2VMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGVsZW1lbnRJbnN0YW5jZSB0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ltYWdlRWxlbWVudCAqKVxuYW5kIGltYWdlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuICAoKiByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmVuZFxuXG5hbmQgc3dpdGNoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuKCogWFhYIGRlcHJlY2F0ZWQgPT4gaW50ZXJmYWNlIEdldFNWR0RvY3VtZW50ID0+IFNWR0RvY3VtZW50IGdldFNWR0RvY3VtZW50KCkgKilcblxuKCogaW50ZXJmYWNlIFNWR1N0eWxlRWxlbWVudCAqKVxuYW5kIHN0eWxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludCAqKVxuYW5kIHBvaW50ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXhUcmFuc2Zvcm0gOiBtYXRyaXggdCAtPiBwb2ludCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnRMaXN0ICopXG5hbmQgcG9pbnRMaXN0ID0gW3BvaW50IHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR01hdHJpeCAqKVxuYW5kIG1hdHJpeCA9IG9iamVjdFxuICBtZXRob2QgYSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbHkgOiBtYXRyaXggdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGludmVyc2UgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlTm9uVW5pZm9ybSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGVGcm9tVmVjdG9yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWCA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFkgOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdYIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtICopXG5hbmQgdHJhbnNmb3JtID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IHRyYW5zZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXRyaXggOiBtYXRyaXggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRNYXRyaXggOiBtYXRyaXggdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNjYWxlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJvdGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WCA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTa2V3WSA6IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0ICopXG5hbmQgdHJhbnNmb3JtTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFt0cmFuc2Zvcm0gdF0gbGlzdFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IC0+IHRyYW5zZm9ybSB0IG1ldGhcblxuICBtZXRob2QgY29uc29saWRhdGUgOiB0cmFuc2Zvcm0gdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCAqKVxuYW5kIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFt0cmFuc2Zvcm1MaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgcHJlc2VydmVBc3BlY3RSYXRpbyA9IG9iamVjdFxuICBtZXRob2QgYWxpZ24gOiBhbGlnbm1lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVldE9yU2xpY2UgOiBtZWV0T3JTbGljZVR5cGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBbcHJlc2VydmVBc3BlY3RSYXRpbyB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZyAqKVxuYW5kIHBhdGhTZWcgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdUeXBlIDogcGF0aFNlZ21lbnRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGF0aFNlZ1R5cGVBc0xldHRlciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCAqKVxuYW5kIHBhdGhTZWdDbG9zZVBhdGggPSBwYXRoU2VnXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdNb3ZldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTEgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjUmVsKilcbmFuZCBwYXRoU2VnQXJjID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGFuZ2xlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBsYXJnZUFyY0ZsYWcgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzd2VlcEZsYWcgOiBib29sIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvVmVydGljYWwgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHgyIDogbnVtYmVyX3RcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsICAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdMaXN0ID0gW3BhdGhTZWcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQYXRoRGF0YSAqKVxuYW5kIGFuaW1hdGVkUGF0aERhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhFbGVtZW50ICopXG5hbmQgcGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQYXRoRGF0YVxuXG4gIG1ldGhvZCBwYXRoTGVuZ3RoIDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFRvdGFsTGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRQb2ludEF0TGVuZ3RoIDogbnVtYmVyX3QgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhdGhTZWdBdExlbmd0aCA6IG51bWJlcl90IC0+IGludFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoIDogcGF0aFNlZ0Nsb3NlUGF0aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvVmVydGljYWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3RFbGVtZW50ICopXG5hbmQgcmVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NpcmNsZUVsZW1lbnQgKilcbmFuZCBjaXJjbGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGxpcHNlRWxlbWVudCAqKVxuYW5kIGVsbGlwc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQb2ludHMgKilcbmFuZCBhbmltYXRlZFBvaW50cyA9IG9iamVjdFxuICBtZXRob2QgcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWxpbmVFbGVtZW50ICopXG5hbmQgcG9seUxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlnb25FbGVtZW50ICopXG5hbmQgcG9seWdvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50ICopXG5hbmQgdGV4dENvbnRlbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHRleHRMZW5ndGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoQWRqdXN0IDogbGVuZ3RoQWRqdXN0IGFuaW1hdGVkIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXROdW1iZXJPZkNoYXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdWJTdHJpbmdMZW5ndGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5kUG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEV4dGVudE9mQ2hhciA6IGludCAtPiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSb3RhdGlvbk9mQ2hhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldENoYXJOdW1BdFBvc2l0aW9uIDogcG9pbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0U3ViU3RyaW5nIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCAqKVxuYW5kIHRleHRQb3NpdGlvbmluZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb3RhdGUgOiBhbmltYXRlZE51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRFbGVtZW50ICopXG5hbmQgdGV4dEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5lbmRcblxuYW5kIHRzcGFuRWxlbWVudCA9IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuYW5kIHRyZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQYXRoRWxlbWVudCAqKVxuYW5kIHRleHRQYXRoRWxlbWVudE1ldGhvZCA9IFt0ZXh0UGF0aE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nID0gW3RleHRQYXRoU3BhY2luZ1R5cGVdIGFuaW1hdGVkXG5cbmFuZCB0ZXh0UGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0Q29udGVudEVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRob2RfIDogdGV4dFBhdGhFbGVtZW50TWV0aG9kIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BhY2luZyA6IHRleHRQYXRoRWxlbWVudFNwYWNpbmcgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhEZWZFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhEZWZFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhJdGVtRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoSXRlbUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdHbHlwaFJlZkVsZW1lbnQgKilcbmFuZCBnbHlwaFJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGFpbnQgOiBTVkdDb2xvciB7ICopXG5cbigqICAgLy8gUGFpbnQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1JfSUNDQ09MT1IgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX05PTkUgPSAxMDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SID0gMTAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9OT05FID0gMTAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5UQ09MT1IgPSAxMDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SID0gMTA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDEwNjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDc7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmk7ICopXG5cbigqICAgdm9pZCBzZXRVcmkoaW4gRE9NU3RyaW5nIHVyaSk7ICopXG4oKiAgIHZvaWQgc2V0UGFpbnQoaW4gdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlLCBpbiBET01TdHJpbmcgdXJpLCBpbiBET01TdHJpbmcgcmdiQ29sb3IsIGluIERPTVN0cmluZyBpY2NDb2xvcikgcmFpc2VzKFNWR0V4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFya2VyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHU3R5bGFibGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpdFRvVmlld0JveCB7ICopXG5cbigqICAgLy8gTWFya2VyIFVuaXQgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggPSAyOyAqKVxuXG4oKiAgIC8vIE1hcmtlciBPcmllbnRhdGlvbiBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQVVUTyA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hcmtlclVuaXRzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VyV2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJIZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFuZ2xlOyAqKVxuXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIHZvaWQgc2V0T3JpZW50VG9BbmdsZShpbiBTVkdBbmdsZSBhbmdsZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBsb2NhbDsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZVJ1bGUgOiBTVkdDU1NSdWxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNyYyBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVuZGVyaW5nSW50ZW50IHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0dyYWRpZW50RWxlbWVudCAqKVxuYW5kIGFuaW1hdGVkU3ByZWFkTWV0aG9kID0gW3NwcmVhZE1ldGhvZFR5cGVdIGFuaW1hdGVkXG5cbmFuZCBncmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBncmFkaWVudFVuaXRzOyAqKVxuICBtZXRob2QgZ3JhZGllbnRUcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwcmVhZE1ldGhvZCA6IGFuaW1hdGVkU3ByZWFkTWV0aG9kIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBsaW5lYXJHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgeDEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTEgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeDIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeTIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50ICopXG5hbmQgcmFkaWFsR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RvcEVsZW1lbnQgKilcbmFuZCBzdG9wRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgbWV0aG9kIG9mZnNldCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXR0ZXJuRWxlbWVudCAqKVxuYW5kIHBhdHRlcm5FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVybkNvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHBhdHRlcm5UcmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2xpcFBhdGhFbGVtZW50ICopXG5hbmQgY2xpcFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBjbGlwUGF0aFVuaXRzOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdNYXNrRWxlbWVudCAqKVxuYW5kIG1hc2tFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJFbGVtZW50ICopXG5hbmQgZmlsdGVyRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZmlsdGVyVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcHJpbWl0aXZlVW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1ggOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbHRlclJlc1kgOiBhbmltYXRlZEludGVnZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldEZpbHRlclJlcyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IFNWR1N0eWxhYmxlIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggd2lkdGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBoZWlnaHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyByZXN1bHQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVCbGVuZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBCbGVuZCBNb2RlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTk9STUFMID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9NVUxUSVBMWSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfU0NSRUVOID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9EQVJLRU4gPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0xJR0hURU4gPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1vZGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb2xvciBNYXRyaXggVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQSEEgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdmFsdWVzOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcblxuKCogICAvLyBDb21wb25lbnQgVHJhbnNmZXIgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVEFCTEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0RJU0NSRVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVIgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHRhYmxlVmFsdWVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2xvcGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBpbnRlcmNlcHQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhbXBsaXR1ZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBleHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIG9mZnNldDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNSRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNCRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZ1bmNBRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29tcG9zaXRlIE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0lOID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09VVCA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1hPUiA9IDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsxOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMzsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGs0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gRWRnZSBNb2RlIFZhbHVlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9EVVBMSUNBVEUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfV1JBUCA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9OT05FID0gMzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3Qga2VybmVsTWF0cml4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGl2aXNvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJpYXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBlZGdlTW9kZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEJvb2xlYW4gcHJlc2VydmVBbHBoYTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaWZmdXNlQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYXppbXV0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVsZXZhdGlvbjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBwb2ludHNBdFo7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgbGltaXRpbmdDb25lQW5nbGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENoYW5uZWwgU2VsZWN0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfRyA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0IgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9BID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHhDaGFubmVsU2VsZWN0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHlDaGFubmVsU2VsZWN0b3I7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGbG9vZEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25ZOyAqKVxuXG4oKiAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uKGluIGZsb2F0IHN0ZERldmlhdGlvblgsIGluIGZsb2F0IHN0ZERldmlhdGlvblkpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1VSSVJlZmVyZW5jZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBNb3JwaG9sb2d5IE9wZXJhdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9ESUxBVEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1k7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVPZmZzZXRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyQ29uc3RhbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBUdXJidWxlbmNlIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfRlJBQ1RBTE5PSVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFID0gMjsgKilcblxuKCogICAvLyBTdGl0Y2ggT3B0aW9ucyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfU1RJVENIID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfTk9TVElUQ0ggPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG51bU9jdGF2ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzZWVkOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBzdGl0Y2hUaWxlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDdXJzb3JFbGVtZW50ICopXG5hbmQgY3Vyc29yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FFbGVtZW50ICopXG5hbmQgYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHRhcmdldCA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCAqKVxuYW5kIHZpZXdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTY3JpcHRFbGVtZW50ICopXG5hbmQgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB0eXBlXyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHWm9vbUV2ZW50IDogVUlFdmVudCAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUmVjdCB6b29tUmVjdFNjcmVlbjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IHByZXZpb3VzU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBwcmV2aW91c1RyYW5zbGF0ZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IG5ld1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgbmV3VHJhbnNsYXRlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICAoKiBpbmhlcml0IGVsZW1lbnRUaW1lQ29udHJvbCAqKVxuICBtZXRob2QgdGFyZ2V0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFN0YXJ0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNpbXBsZUR1cmF0aW9uIDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2V0RWxlbWVudCAqKVxuYW5kIHNldEVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVNb3Rpb25FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTVBhdGhFbGVtZW50ICopXG5hbmQgbVBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQgKilcbmFuZCBhbmltYXRlQ29sb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgYW5pbWF0aW9uRWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgKilcbmFuZCBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRFbGVtZW50ICopXG5hbmQgZm9udEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHbHlwaEVsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KilcbmFuZCBnbHlwaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdIS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHVktlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlU3JjRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVNyY0VsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVVyaUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VVcmlFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlRm9ybWF0RWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VOYW1lRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01ldGFkYXRhRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBtZXRhZGF0YUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb3JlaWduT2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgY3JlYXRlRWxlbWVudCAoZG9jIDogZG9jdW1lbnQgdCkgbmFtZSA9IGRvYyMjY3JlYXRlRWxlbWVudE5TIHhtbG5zIChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoIGRvYyA6IGFsdEdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaFwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaERlZiBkb2MgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhkZWZcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhJdGVtIGRvYyA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhpdGVtXCJcblxubGV0IGNyZWF0ZUFuaW1hdGUgZG9jIDogYW5pbWF0ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZVwiXG5cbmxldCBjcmVhdGVBbmltYXRlQ29sb3IgZG9jIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlY29sb3JcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZU1vdGlvbiBkb2MgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlbW90aW9uXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVUcmFuc2Zvcm0gZG9jIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbmxldCBjcmVhdGVDaXJjbGUgZG9jIDogY2lyY2xlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjaXJjbGVcIlxuXG5sZXQgY3JlYXRlQ2xpcFBhdGggZG9jIDogY2xpcFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNsaXBwYXRoXCJcblxuKCogbGV0IGNyZWF0ZUNvbG9yUHJvZmlsZSBkb2MgOiBjb2xvclByb2ZpbGUgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sb3ItcHJvZmlsZVwiICopXG5sZXQgY3JlYXRlQ3Vyc29yIGRvYyA6IGN1cnNvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY3Vyc29yXCJcblxubGV0IGNyZWF0ZURlZnMgZG9jIDogZGVmc0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVmc1wiXG5cbmxldCBjcmVhdGVEZXNjIGRvYyA6IGRlc2NFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlc2NcIlxuXG5sZXQgY3JlYXRlRWxsaXBzZSBkb2MgOiBlbGxpcHNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbGxpcHNlXCJcblxuKCogbGV0IGNyZWF0ZUZlKiAqKVxubGV0IGNyZWF0ZUZpbHRlciBkb2MgOiBmaWx0ZXJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpbHRlclwiXG5cbmxldCBjcmVhdGVGb250IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2UgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlRm9ybWF0IGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VOYW1lIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1uYW1lXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlU3JjIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS1zcmNcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VVcmkgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXVyaVwiXG5cbmxldCBjcmVhdGVGb3JlaWduT2JqZWN0IGRvYyA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvcmVpZ25PYmplY3RcIlxuXG5sZXQgY3JlYXRlRyBkb2MgOiBnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnXCJcblxubGV0IGNyZWF0ZUdseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaFwiXG5cbmxldCBjcmVhdGVHbHlwaFJlZiBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhyZWZcIlxuXG5sZXQgY3JlYXRlaGtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoa2VyblwiXG5cbmxldCBjcmVhdGVJbWFnZSBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1hZ2VcIlxuXG5sZXQgY3JlYXRlTGluZUVsZW1lbnQgZG9jIDogbGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZVwiXG5cbmxldCBjcmVhdGVMaW5lYXJFbGVtZW50IGRvYyA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lYXJncmFkaWVudFwiXG5cbigqIGxldCBjcmVhdGVNYXJrZXIgZG9jIDogbWFya2VyRWxlbWVudCAqKVxubGV0IGNyZWF0ZU1hc2sgZG9jIDogbWFza0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFza1wiXG5cbmxldCBjcmVhdGVNZXRhRGF0YSBkb2MgOiBtZXRhZGF0YUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWV0YWRhdGFcIlxuXG5sZXQgY3JlYXRlTWlzc2luZ0dseXBoIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtaXNzaW5nLWdseXBoXCJcblxubGV0IGNyZWF0ZU1QYXRoIGRvYyA6IG1QYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtcGF0aFwiXG5cbmxldCBjcmVhdGVQYXRoIGRvYyA6IHBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0dGVybiBkb2MgOiBwYXR0ZXJuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXR0ZXJuXCJcblxubGV0IGNyZWF0ZVBvbHlnb24gZG9jIDogcG9seWdvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWdvblwiXG5cbmxldCBjcmVhdGVQb2x5bGluZSBkb2MgOiBwb2x5TGluZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicG9seWxpbmVcIlxuXG5sZXQgY3JlYXRlUmFkaWFsZ3JhZGllbnQgZG9jIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJhZGlhbGdyYWRpZW50XCJcblxubGV0IGNyZWF0ZVJlY3QgZG9jIDogcmVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmVjdFwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlU2V0IGRvYyA6IHNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2V0XCJcblxubGV0IGNyZWF0ZVN0b3AgZG9jIDogc3RvcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3RvcFwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlU3ZnIGRvYyA6IHN2Z0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ZnXCJcblxubGV0IGNyZWF0ZVN3aXRjaCBkb2MgOiBzd2l0Y2hFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN3aXRjaFwiXG5cbmxldCBjcmVhdGVTeW1ib2wgZG9jIDogc3ltYm9sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzeW1ib2xcIlxuXG5sZXQgY3JlYXRlVGV4dEVsZW1lbnQgZG9jIDogdGV4dEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dFwiXG5cbmxldCBjcmVhdGVUZXh0cGF0aCBkb2MgOiB0ZXh0UGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGV4dHBhdGhcIlxuXG5sZXQgY3JlYXRlVGl0bGUgZG9jIDogdGl0bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRpdGxlXCJcblxubGV0IGNyZWF0ZVRyZWYgZG9jIDogdHJlZkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJlZlwiXG5cbmxldCBjcmVhdGVUc3BhbiBkb2MgOiB0c3BhbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHNwYW5cIlxuXG5sZXQgY3JlYXRlVXNlIGRvYyA6IHVzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidXNlXCJcblxubGV0IGNyZWF0ZVZpZXcgZG9jIDogdmlld0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlld1wiXG5cbmxldCBjcmVhdGV2a2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZrZXJuXCJcblxuKCoqKiopXG5cbmxldCBzdmdfZWxlbWVudCA6IGVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1NWR0VsZW1lbnRcblxubGV0IGRvY3VtZW50ID0gSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA6IGVsZW1lbnQgdCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgKGZ1biBlIC0+IGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIGUgZWxzZSByYWlzZSBOb3RfZm91bmQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCAoZSA6ICNEb20ubm9kZSBKcy50KSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIEpzLmluc3RhbmNlb2YgZSBzdmdfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSAoZSA6ICNlbGVtZW50IHQpIHRhZyA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlIDogYUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFcIlxuXG4gIGxldCBhbHRHbHlwaCBlIDogYWx0R2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmIGUgOiBhbHRHbHlwaERlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoZGVmXCJcblxuICBsZXQgYWx0R2x5cGhJdGVtIGUgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGl0ZW1cIlxuXG4gIGxldCBhbmltYXRlIGUgOiBhbmltYXRlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciBlIDogYW5pbWF0ZUNvbG9yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZWNvbG9yXCJcblxuICBsZXQgYW5pbWF0ZU1vdGlvbiBlIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVtb3Rpb25cIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtIGUgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0IG9wdCA9XG4gICAgdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRldHJhbnNmb3JtXCJcblxuICBsZXQgY2lyY2xlIGUgOiBjaXJjbGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjaXJjbGVcIlxuXG4gIGxldCBjbGlwUGF0aCBlIDogY2xpcFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjbGlwcGF0aFwiXG5cbiAgKCogbGV0IENvbG9yUHJvZmlsZSBlIDogY29sb3JQcm9maWxlIHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjb2xvci1wcm9maWxlXCIgKilcbiAgbGV0IGN1cnNvciBlIDogY3Vyc29yRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY3Vyc29yXCJcblxuICBsZXQgZGVmcyBlIDogZGVmc0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlZnNcIlxuXG4gIGxldCBkZXNjIGUgOiBkZXNjRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVzY1wiXG5cbiAgbGV0IGVsbGlwc2UgZSA6IGVsbGlwc2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJlbGxpcHNlXCJcblxuICAoKiBsZXQgRmUqICopXG4gIGxldCBmaWx0ZXIgZSA6IGZpbHRlckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZpbHRlclwiXG5cbiAgbGV0IGZvbnQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250XCJcblxuICBsZXQgZm9udEZhY2UgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250RmFjZUZvcm1hdCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1mb3JtYXRcIlxuXG4gIGxldCBmb250RmFjZU5hbWUgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgbGV0IGZvbnRGYWNlU3JjIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXNyY1wiXG5cbiAgbGV0IGZvbnRGYWNlVXJpIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLXVyaVwiXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgZSA6IGZvcmVpZ25PYmplY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb3JlaWdub2JqZWN0XCJcblxuICBsZXQgZyBlIDogZ0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdcIlxuXG4gIGxldCBnbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaFwiXG5cbiAgbGV0IGdseXBoUmVmIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBocmVmXCJcblxuICBsZXQgaGtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImhrZXJuXCJcblxuICBsZXQgaW1hZ2UgZSA6IGltYWdlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaW1hZ2VcIlxuXG4gIGxldCBsaW5lRWxlbWVudCBlIDogbGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVcIlxuXG4gIGxldCBsaW5lYXJFbGVtZW50IGUgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImxpbmVhcmdyYWRpZW50XCJcblxuICAoKiBsZXQgTWFya2VyIGUgOiBtYXJrZXJFbGVtZW50ICopXG4gIGxldCBtYXNrIGUgOiBtYXNrRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWFza1wiXG5cbiAgbGV0IG1ldGFEYXRhIGUgOiBtZXRhZGF0YUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1ldGFkYXRhXCJcblxuICBsZXQgbWlzc2luZ0dseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1pc3NpbmctZ2x5cGhcIlxuXG4gIGxldCBtUGF0aCBlIDogbVBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtcGF0aFwiXG5cbiAgbGV0IHBhdGggZSA6IHBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXRoXCJcblxuICBsZXQgcGF0dGVybiBlIDogcGF0dGVybkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdHRlcm5cIlxuXG4gIGxldCBwb2x5Z29uIGUgOiBwb2x5Z29uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWdvblwiXG5cbiAgbGV0IHBvbHlsaW5lIGUgOiBwb2x5TGluZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlsaW5lXCJcblxuICBsZXQgcmFkaWFsZ3JhZGllbnQgZSA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmFkaWFsZ3JhZGllbnRcIlxuXG4gIGxldCByZWN0IGUgOiByZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicmVjdFwiXG5cbiAgbGV0IHNjcmlwdCBlIDogc2NyaXB0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2NyaXB0XCJcblxuICBsZXQgc2V0IGUgOiBzZXRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzZXRcIlxuXG4gIGxldCBzdG9wIGUgOiBzdG9wRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3RvcFwiXG5cbiAgbGV0IHN0eWxlIGUgOiBzdHlsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0eWxlXCJcblxuICBsZXQgc3ZnIGUgOiBzdmdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdmdcIlxuXG4gIGxldCBzd2l0Y2ggZSA6IHN3aXRjaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN3aXRjaFwiXG5cbiAgbGV0IHN5bWJvbCBlIDogc3ltYm9sRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ltYm9sXCJcblxuICBsZXQgdGV4dEVsZW1lbnQgZSA6IHRleHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0XCJcblxuICBsZXQgdGV4dHBhdGggZSA6IHRleHRQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dHBhdGhcIlxuXG4gIGxldCB0aXRsZSBlIDogdGl0bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0aXRsZVwiXG5cbiAgbGV0IHRyZWYgZSA6IHRyZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0cmVmXCJcblxuICBsZXQgdHNwYW4gZSA6IHRzcGFuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHNwYW5cIlxuXG4gIGxldCB1c2UgZSA6IHVzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInVzZVwiXG5cbiAgbGV0IHZpZXcgZSA6IHZpZXdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2aWV3XCJcblxuICBsZXQgdmtlcm4gZSA6IGVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZrZXJuXCJcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxuKCogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50U291cmNlICopXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgc3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0VEXG5cbmNsYXNzIHR5cGUgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RFdmVudElkIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuICAoKiBtZXRob2Qgc291cmNlIDogdW5pdCAqKVxuZW5kXG5cbmNsYXNzIHR5cGUgZXZlbnRTb3VyY2UgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2QgdXJsIDogc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogc3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCB3aXRoQ3JlZGVudGlhbHMgYiA6IG9wdGlvbnMgdCA9XG4gIGxldCBpbml0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gIGluaXQjIy53aXRoQ3JlZGVudGlhbHMgOj0gSnMuYm9vbCBiO1xuICBpbml0XG5cbmxldCBldmVudFNvdXJjZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGV2ZW50U291cmNlX29wdGlvbnMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBhZGRFdmVudExpc3RlbmVyID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBjb25zb2xlID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzYgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzcgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfOCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWcgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8gOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8xIDogYm9vbCB0IC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8yIDogYm9vbCB0IC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzMgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF80IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF81IDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlyeG1sIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhY2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXAgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZUVuZCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmV4dGVybmFsIGdldF9jb25zb2xlIDogdW5pdCAtPiBjb25zb2xlIHQgPSBcImNhbWxfanNfZ2V0X2NvbnNvbGVcIlxuXG5sZXQgY29uc29sZSA9IGdldF9jb25zb2xlICgpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3NpdGlvbkVycm9yQ29kZVxuXG50eXBlIHdhdGNoSWRcblxuY2xhc3MgdHlwZSBjb29yZGluYXRlcyA9IG9iamVjdFxuICBtZXRob2QgbGF0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvbmdpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0aXR1ZGVBY2N1cmFjeSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWRpbmcgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVlZCA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29vcmRzIDogY29vcmRpbmF0ZXMgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVzdGFtcCA6IEpzLmRhdGUgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25PcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBlbmFibGVIaWdoQWNjdXJhY3kgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWVvdXQgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4aW11bUFnZSA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb25FcnJvciA9IG9iamVjdFxuICBtZXRob2QgX1BFUk1JU1NJT05fREVOSUVEXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPU0lUSU9OX1VOQVZBSUxBQkxFXyA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RJTUVPVVQgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBnZW9sb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q3VycmVudFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB3YXRjaFBvc2l0aW9uIDpcbiAgICAgICAocG9zaXRpb24gSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IChwb3NpdGlvbkVycm9yIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiBwb3NpdGlvbk9wdGlvbnMgSnMudFxuICAgIC0+IHdhdGNoSWQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbGVhcldhdGNoIDogd2F0Y2hJZCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfcG9zaXRpb25fb3B0aW9ucyAoKSA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgZ2VvbG9jYXRpb24gPVxuICBsZXQgeCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5uYXZpZ2F0b3IgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgeCB0aGVuIHgjIy5nZW9sb2NhdGlvbiBlbHNlIHhcblxuKCogdW5kZWZpbmVkICopXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBnZW9sb2NhdGlvblxuIiwiY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm91bmRpbmdDbGllbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEJvdW5kcyA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmF0aW8gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzSW50ZXJzZWN0aW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZCA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGRzIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdW5vYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50ID1cbiAgSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKCAgIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50XG4gICAgICAgICAtPiB1bml0KVxuICAgICAgICBKcy5jYWxsYmFja1xuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudFxuICAgICAtPiBpbnRlcnNlY3Rpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOCBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFNoYXJlZCA9IHNpZ1xuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIHZhbCBvYmplY3Rfb3B0aW9ucyA6IHVuaXQgLT4gb2JqZWN0X29wdGlvbnMgSnMudFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2hhcmVkIDogU2hhcmVkID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9iamVjdF9vcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb2xsYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNvbGxhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1lcmljIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBjYXNlRmlyc3QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzYWdlID0gSnMuc3RyaW5nIFwic29ydFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlbnNpdGl2aXR5ID0gSnMuc3RyaW5nIFwidmFyaWFudFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIGlnbm9yZVB1bmN0dWF0aW9uID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWVyaWMgPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgY2FzZUZpcnN0ID0gSnMuc3RyaW5nIFwiZmFsc2VcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYXJlIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IGludCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIERhdGVUaW1lRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgZGF0ZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXlQZXJpb2QgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91cjEyIDogYm9vbCBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ckN5Y2xlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmb3JtYXRNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBkYXRlU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhbGVuZGFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheVBlcmlvZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91cjEyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXJDeWNsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmb3JtYXRNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB3ZWVrZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGVyYSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB5ZWFyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1vbnRoID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGRheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbnV0ZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzZWNvbmQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZU5hbWUgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5kYXRlIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLmRhdGUgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhY3REaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lEaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeVNpZ24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgbm90YXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2lnbkRpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVuaXREaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2VHcm91cGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdNb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ1ByaW9yaXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ0luY3JlbWVudCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdHJhaWxpbmdaZXJvRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgY29tcGFjdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3kgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lEaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5U2lnbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBub3RhdGlvbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1iZXJpbmdTeXN0ZW0gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2lnbkRpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc3R5bGUgPSBKcy5zdHJpbmcgXCJkZWNpbWFsXCJcblxuICAgICAgdmFsIG11dGFibGUgdW5pdCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2VHcm91cGluZyA9IEpzLl90cnVlXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nTW9kZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ1ByaW9yaXR5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nSW5jcmVtZW50ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRyYWlsaW5nWmVyb0Rpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUludGVnZXJEaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBmb3JtYXRUb1BhcnRzIDpcbiAgICAgIEpzLm51bWJlciBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBsdXJhbFJ1bGVzID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBwbHVyYWxDYXRlZ29yaWVzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUludGVnZXJEaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgOiBpbnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIF90eXBlID0gSnMuc3RyaW5nIFwiY2FyZGluYWxcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzZWxlY3QgOiBKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5jbGFzcyB0eXBlIGludGwgPSBvYmplY3RcbiAgbWV0aG9kIF9Db2xsYXRvciA6IENvbGxhdG9yLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EYXRlVGltZUZvcm1hdCA6IERhdGVUaW1lRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OdW1iZXJGb3JtYXQgOiBOdW1iZXJGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BsdXJhbFJ1bGVzIDogUGx1cmFsUnVsZXMuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0Q2Fub25pY2FsTG9jYWxlcyA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgaW50bCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bFxuXG5sZXQgY29sbGF0b3JfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0NvbGxhdG9yXG5cbmxldCBkYXRlVGltZUZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fRGF0ZVRpbWVGb3JtYXRcblxubGV0IG51bWJlckZvcm1hdF9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fTnVtYmVyRm9ybWF0XG5cbmxldCBwbHVyYWxSdWxlc19jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fUGx1cmFsUnVsZXNcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGxcbiIsIlxudHlwZSB0ID0gaW50XG5sZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG5sZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbmxldCB0b19pbnQgeCA9IHhcbmxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcblxubGV0IGludGVyc2VjdCB4IHkgPSB4IGxhbmQgeSA8PiAwXG5sZXQgKCsrKSB4IHkgPSB4IGxvciB5XG5cbmxldCBkdW1teSA9IC0xXG5sZXQgaW5leGlzdGFudCA9IDFcbmxldCBsZXR0ZXIgPSAyXG5sZXQgbm90X2xldHRlciA9IDRcbmxldCBuZXdsaW5lID0gOFxubGV0IGxhc3RuZXdsaW5lID0gMTZcbmxldCBzZWFyY2hfYm91bmRhcnkgPSAzMlxuXG5sZXQgZnJvbV9jaGFyID0gZnVuY3Rpb25cbiAgKCogU2hvdWxkIG1hdGNoIFtjd29yZF0gZGVmaW5pdGlvbiAqKVxuICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JyB8ICdfJyB8ICdcXDE3MCcgfCAnXFwxODEnIHwgJ1xcMTg2J1xuICB8ICdcXDE5MicuLidcXDIxNCcgfCAnXFwyMTYnLi4nXFwyNDYnIHwgJ1xcMjQ4Jy4uJ1xcMjU1JyAtPlxuICAgIGxldHRlclxuICB8ICdcXG4nIC0+XG4gICAgbm90X2xldHRlciArKyBuZXdsaW5lXG4gIHwgXyAtPlxuICAgIG5vdF9sZXR0ZXJcbiIsIigqKiBWZXJ5IHNtYWxsIHRvb2xpbmcgZm9yIGZvcm1hdCBwcmludGVycy4gKilcblxuaW5jbHVkZSBGb3JtYXRcblxudHlwZSAnYSB0ID0gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0XG5cbmxldCBsaXN0ID0gcHBfcHJpbnRfbGlzdFxubGV0IHN0ciA9IHBwX3ByaW50X3N0cmluZ1xubGV0IHNleHAgZm10IHMgcHAgeCA9IGZwcmludGYgZm10IFwiQFs8Mz4oJXNAICVhKUBdXCIgcyBwcCB4XG5sZXQgcGFpciBwcDEgcHAyIGZtdCAodjEsdjIpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDsgcHAyIGZtdCB2MlxubGV0IHRyaXBsZSBwcDEgcHAyIHBwMyBmbXQgKHYxLCB2MiwgdjMpID1cbiAgcHAxIGZtdCB2MTsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAyIGZtdCB2MjsgcHBfcHJpbnRfc3BhY2UgZm10ICgpIDtcbiAgcHAzIGZtdCB2M1xubGV0IGludCA9IHBwX3ByaW50X2ludFxubGV0IG9wdGludCBmbXQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGkgLT4gZnByaW50ZiBmbXQgXCJAICVkXCIgaVxuXG5sZXQgcXVvdGUgZm10IHMgPSBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgc1xuXG5sZXQgcHBfb2xpc3QgcHBfZWxlbSBmbXQgPVxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwzPltAICVhQCBdQF1cIlxuICAgIChwcF9wcmludF9saXN0XG4gICAgICAgfnBwX3NlcDooZnVuIGZtdCAoKSAtPiBmcHJpbnRmIGZtdCBcIjtAIFwiKVxuICAgICAgIHBwX2VsZW0pXG5cbmxldCBwcF9zdHJfbGlzdCA9IHBwX29saXN0IHF1b3RlXG5cbmxldCB0b190b19zdHJpbmcgcHAgeCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYiBpblxuICBwcCBmbXQgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgYyA9IGludFxudHlwZSB0ID0gKGMgKiBjKSBsaXN0XG5cbmxldCByZWMgdW5pb24gbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gbCdcbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiArIDEgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OnVuaW9uIHIgbCdcbiAgICBlbHNlIGlmIGMyJyArIDEgPCBjMSB0aGVuXG4gICAgICAoYzEnLCBjMicpOjp1bmlvbiBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICB1bmlvbiByICgobWluIGMxIGMxJywgYzInKTo6cicpXG4gICAgZWxzZVxuICAgICAgdW5pb24gKChtaW4gYzEgYzEnLCBjMik6OnIpIHInXG5cbmxldCByZWMgaW50ZXIgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBbXVxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgaW50ZXIgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgaW50ZXIgbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgKG1heCBjMSBjMScsIGMyKTo6aW50ZXIgciBsJ1xuICAgIGVsc2VcbiAgICAgIChtYXggYzEgYzEnLCBjMicpOjppbnRlciBsIHInXG5cbmxldCByZWMgZGlmZiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjpkaWZmIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGRpZmYgbCByJ1xuICAgIGVsc2VcbiAgICAgIGxldCByJycgPSBpZiBjMicgPCBjMiB0aGVuIChjMicgKyAxLCBjMikgOjogciBlbHNlIHIgaW5cbiAgICAgIGlmIGMxIDwgYzEnIHRoZW5cbiAgICAgICAgKGMxLCBjMScgLSAxKTo6ZGlmZiByJycgcidcbiAgICAgIGVsc2VcbiAgICAgICAgZGlmZiByJycgcidcblxubGV0IHNpbmdsZSBjID0gW2MsIGNdXG5cbmxldCBhZGQgYyBsID0gdW5pb24gKHNpbmdsZSBjKSBsXG5cbmxldCBzZXEgYyBjJyA9IGlmIGMgPD0gYycgdGhlbiBbYywgYyddIGVsc2UgW2MnLCBjXVxuXG5sZXQgcmVjIG9mZnNldCBvIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgICAgICAgIC0+IFtdXG4gIHwgKGMxLCBjMikgOjogciAtPiAoYzEgKyBvLCBjMiArIG8pIDo6IG9mZnNldCBvIHJcblxubGV0IGVtcHR5ID0gW11cblxubGV0IHJlYyBtZW0gKGMgOiBpbnQpIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgICBbXSAgICAgICAgICAgICAgLT4gZmFsc2VcbiAgfCAoYzEsIGMyKSA6OiByZW0gLT4gaWYgYyA8PSBjMiB0aGVuIGMgPj0gYzEgZWxzZSBtZW0gYyByZW1cblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxuXG5sZXQgcmVjIGhhc2hfcmVjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgLT4gMFxuICB8IChpLCBqKTo6ciAtPiBpICsgMTMgKiBqICsgMjU3ICogaGFzaF9yZWMgclxubGV0IGhhc2ggbCA9IChoYXNoX3JlYyBsKSBsYW5kIDB4M0ZGRkZGRkZcblxuKCoqKiopXG5cbmxldCBwcmludF9vbmUgY2ggKGMxLCBjMikgPVxuICBpZiBjMSA9IGMyIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkXCIgYzFcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBjMSBjMlxuXG5sZXQgcHAgPSBGbXQubGlzdCBwcmludF9vbmVcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8ICh4LCB5KTo6eHMgLT5cbiAgICBmIHggeTtcbiAgICBpdGVyIHhzICB+ZlxuXG5sZXQgb25lX2NoYXIgPSBmdW5jdGlvblxuICB8IFtpLCBqXSB3aGVuIGkgPSBqIC0+IFNvbWUgaVxuICB8IF8gLT4gTm9uZVxuXG5cbm1vZHVsZSBDU2V0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCAqIChpbnQgKiBpbnQpIGxpc3RcbiAgICBsZXQgY29tcGFyZSAoaSwgdSkgKGosIHYpID1cbiAgICAgIGxldCBjID0gY29tcGFyZSBpIGogaW5cbiAgICAgIGlmIGMgPD4gMFxuICAgICAgdGhlbiBjXG4gICAgICBlbHNlIGNvbXBhcmUgdSB2XG4gIGVuZClcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZF9yaWdodCBmIHQgaW5pdFxuXG5sZXQgY3NpbmdsZSBjID0gc2luZ2xlIChDaGFyLmNvZGUgYylcblxubGV0IGNhbnkgPSBbMCwgMjU1XVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCByZWMgcHJlcGVuZCBzIHggbCA9XG4gIG1hdGNoIHMsIGwgd2l0aFxuICB8IFtdLCBfIC0+IGxcbiAgfCBfciwgW10gLT4gW11cbiAgfCAoX2MsIGMnKSA6OiByLCAoW2QsIF9kJ10sIF94JykgOjogX3InIHdoZW4gYycgPCBkIC0+IHByZXBlbmQgciB4IGxcbiAgfCAoYywgYycpIDo6IHIsIChbZCwgZCddLCB4JykgOjogcicgLT5cbiAgICBpZiBjIDw9IGQgdGhlbiBiZWdpblxuICAgICAgaWYgYycgPCBkJ1xuICAgICAgdGhlbiAoW2QsIGMnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHIgeCAoKFtjJyArIDEsIGQnXSwgeCcpIDo6IHInKVxuICAgICAgZWxzZSAoW2QsIGQnXSwgeCBAIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBjID4gZCdcbiAgICAgIHRoZW4gKFtkLCBkJ10sIHgnKSA6OiBwcmVwZW5kIHMgeCByJ1xuICAgICAgZWxzZSAoW2QsIGMgLSAxXSwgeCcpIDo6IHByZXBlbmQgcyB4ICgoW2MsIGQnXSwgeCcpIDo6IHInKVxuICAgIGVuZFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwaWNrID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlJlX2NzZXQucGlja1wiXG4gIHwgKHgsIF8pOjpfIC0+IHhcbiIsIlxubW9kdWxlIFBtYXJrID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgZXF1YWwgKHggOiBpbnQpICh5IDogaW50KSA9IHggPSB5XG4gIGxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxuICBsZXQgciA9IHJlZiAwXG4gIGxldCBnZW4gKCkgPSBpbmNyIHIgOyAhclxuXG4gIGxldCBwcCA9IEZvcm1hdC5wcF9wcmludF9pbnRcbmVuZFxuXG5pbmNsdWRlIFBtYXJrXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UoUG1hcmspXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIHNlbSA9IFsgYExvbmdlc3QgfCBgU2hvcnRlc3QgfCBgRmlyc3QgXVxuXG50eXBlIHJlcF9raW5kID0gWyBgR3JlZWR5IHwgYE5vbl9ncmVlZHkgXVxuXG50eXBlIG1hcmsgPSBpbnRcbnR5cGUgaWR4ID0gaW50XG5cbnR5cGUgZXhwciA9IHsgaWQgOiBpbnQ7IGRlZiA6IGRlZiB9XG5cbmFuZCBkZWYgPVxuICAgIENzdCBvZiBDc2V0LnRcbiAgfCBBbHQgb2YgZXhwciBsaXN0XG4gIHwgU2VxIG9mIHNlbSAqIGV4cHIgKiBleHByXG4gIHwgRXBzXG4gIHwgUmVwIG9mIHJlcF9raW5kICogc2VtICogZXhwclxuICB8IE1hcmsgb2YgaW50XG4gIHwgRXJhc2Ugb2YgaW50ICogaW50XG4gIHwgQmVmb3JlIG9mIENhdGVnb3J5LnRcbiAgfCBBZnRlciBvZiBDYXRlZ29yeS50XG4gIHwgUG1hcmsgb2YgUG1hcmsudFxuXG5sZXQgaGFzaF9jb21iaW5lIGggYWNjdSA9IGFjY3UgKiA2NTU5OSArIGhcblxubW9kdWxlIE1hcmtzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXJrcyA6IChpbnQgKiBpbnQpIGxpc3RcbiAgICA7IHBtYXJrcyA6IFBtYXJrLlNldC50IH1cblxuICBsZXQgZW1wdHkgPSB7IG1hcmtzID0gW10gOyBwbWFya3MgPSBQbWFyay5TZXQuZW1wdHkgfVxuXG4gIGxldCByZWMgbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgb2xkXG4gICAgfCAoaSwgdikgOjogcmVtIC0+XG4gICAgICBsZXQgbncnID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IChMaXN0LnJlbW92ZV9hc3NxIGkgb2xkKSByZW0gaW5cbiAgICAgIGlmIHYgPSAtMiB0aGVuXG4gICAgICAgIG53J1xuICAgICAgZWxzZVxuICAgICAgICAoaSwgdikgOjogbncnXG5cbiAgbGV0IG1lcmdlIG9sZCBudyA9XG4gICAgeyBtYXJrcyA9IG1lcmdlX21hcmtzX29mZnNldCBvbGQubWFya3MgbncubWFya3NcbiAgICA7IHBtYXJrcyA9IFBtYXJrLlNldC51bmlvbiBvbGQucG1hcmtzIG53LnBtYXJrcyB9XG5cbiAgbGV0IHJlYyBoYXNoX21hcmtzX29mZnNldCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gICAgICAgICAgLT4gYWNjdVxuICAgIHwgKGEsIGkpIDo6IHIgLT4gaGFzaF9tYXJrc19vZmZzZXQgciAoaGFzaF9jb21iaW5lIGEgKGhhc2hfY29tYmluZSBpIGFjY3UpKVxuXG4gIGxldCBoYXNoIG0gYWNjdSA9XG4gICAgaGFzaF9tYXJrc19vZmZzZXQgbS5tYXJrcyAoaGFzaF9jb21iaW5lIChIYXNodGJsLmhhc2ggbS5wbWFya3MpIGFjY3UpXG5cbiAgbGV0IHJlYyBtYXJrc19zZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gICAgfCAoYSwgLTEpIDo6IHJlbSAtPlxuICAgICAgKGEsIGlkeCkgOjogbWFya3Nfc2V0X2lkeCBpZHggcmVtXG4gICAgfCBtYXJrcyAtPlxuICAgICAgbWFya3NcblxuICBsZXQgbWFya3Nfc2V0X2lkeCBtYXJrcyBpZHggPVxuICAgIHsgbWFya3Mgd2l0aCBtYXJrcyA9IG1hcmtzX3NldF9pZHggaWR4IG1hcmtzLm1hcmtzIH1cblxuICBsZXQgcHBfbWFya3MgY2ggdCA9XG4gICAgbWF0Y2ggdC5tYXJrcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgICB8IChhLCBpKSA6OiByIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYSBpO1xuICAgICAgTGlzdC5pdGVyIChmdW4gKGEsIGkpIC0+IEZvcm1hdC5mcHJpbnRmIGNoIFwiICVkLSVkXCIgYSBpKSByXG5lbmRcblxuKCoqKiopXG5cbmxldCBwcF9zZW0gY2ggayA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgY2hcbiAgICAobWF0Y2ggayB3aXRoXG4gICAgICAgYFNob3J0ZXN0IC0+IFwic2hvcnRcIlxuICAgICB8IGBMb25nZXN0ICAtPiBcImxvbmdcIlxuICAgICB8IGBGaXJzdCAgICAtPiBcImZpcnN0XCIpXG5cblxubGV0IHBwX3JlcF9raW5kIGZtdCA9IGZ1bmN0aW9uXG4gIHwgYEdyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIkdyZWVkeVwiXG4gIHwgYE5vbl9ncmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25fZ3JlZWR5XCJcblxubGV0IHJlYyBwcCBjaCBlID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIG1hdGNoIGUuZGVmIHdpdGhcbiAgICBDc3QgbCAtPlxuICAgIHNleHAgY2ggXCJjc3RcIiBDc2V0LnBwIGw7XG4gIHwgQWx0IGwgLT5cbiAgICBzZXhwIGNoIFwiYWx0XCIgKGxpc3QgcHApIGxcbiAgfCBTZXEgKGssIGUsIGUnKSAtPlxuICAgIHNleHAgY2ggXCJzZXFcIiAodHJpcGxlIHBwX3NlbSBwcCBwcCkgKGssIGUsIGUnKVxuICB8IEVwcyAtPlxuICAgIHN0ciBjaCBcImVwc1wiXG4gIHwgUmVwIChfcmssIGssIGUpIC0+XG4gICAgc2V4cCBjaCBcInJlcFwiIChwYWlyIHBwX3NlbSBwcCkgKGssIGUpXG4gIHwgTWFyayBpIC0+XG4gICAgc2V4cCBjaCBcIm1hcmtcIiBpbnQgaVxuICB8IFBtYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwicG1hcmtcIiBpbnQgKGkgOj4gaW50KVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIHNleHAgY2ggXCJlcmFzZVwiIChwYWlyIGludCBpbnQpIChiLCBlKVxuICB8IEJlZm9yZSBjIC0+XG4gICAgc2V4cCBjaCBcImJlZm9yZVwiIENhdGVnb3J5LnBwIGNcbiAgfCBBZnRlciBjIC0+XG4gICAgc2V4cCBjaCBcImFmdGVyXCIgQ2F0ZWdvcnkucHAgY1xuXG5cbigqKioqKVxuXG5sZXQgcmVjIGZpcnN0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTm9uZVxuICB8IHggOjogciAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICBOb25lICAgICAgICAgIC0+IGZpcnN0IGYgclxuICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXNcblxuKCoqKiopXG5cbnR5cGUgaWRzID0gaW50IHJlZlxubGV0IGNyZWF0ZV9pZHMgKCkgPSByZWYgMFxuXG5sZXQgZXBzX2V4cHIgPSB7IGlkID0gMDsgZGVmID0gRXBzIH1cblxubGV0IG1rX2V4cHIgaWRzIGRlZiA9XG4gIGluY3IgaWRzO1xuICB7IGlkID0gIWlkczsgZGVmID0gZGVmIH1cblxubGV0IGVtcHR5IGlkcyA9IG1rX2V4cHIgaWRzIChBbHQgW10pXG5cbmxldCBjc3QgaWRzIHMgPVxuICBpZiBDc2V0LmlzX2VtcHR5IHNcbiAgdGhlbiBlbXB0eSBpZHNcbiAgZWxzZSBta19leHByIGlkcyAoQ3N0IHMpXG5cbmxldCBhbHQgaWRzID0gZnVuY3Rpb25cbiAgfCBbXSAgLT4gZW1wdHkgaWRzXG4gIHwgW2NdIC0+IGNcbiAgfCBsICAgLT4gbWtfZXhwciBpZHMgKEFsdCBsKVxuXG5sZXQgc2VxIGlkcyBraW5kIHggeSA9XG4gIG1hdGNoIHguZGVmLCB5LmRlZiB3aXRoXG4gICAgQWx0IFtdLCBfICAgICAgICAgICAgICAgICAtPiB4XG4gIHwgXywgQWx0IFtdICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgRXBzLCBfICAgICAgICAgICAgICAgICAgICAtPiB5XG4gIHwgXywgRXBzIHdoZW4ga2luZCA9IGBGaXJzdCAtPiB4XG4gIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAtPiBta19leHByIGlkcyAoU2VxIChraW5kLCB4LCB5KSlcblxubGV0IGlzX2VwcyBleHByID1cbiAgbWF0Y2ggZXhwci5kZWYgd2l0aFxuICB8IEVwcyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgZXBzIGlkcyA9IG1rX2V4cHIgaWRzIEVwc1xuXG5sZXQgcmVwIGlkcyBraW5kIHNlbSB4ID0gbWtfZXhwciBpZHMgKFJlcCAoa2luZCwgc2VtLCB4KSlcblxubGV0IG1hcmsgaWRzIG0gPSBta19leHByIGlkcyAoTWFyayBtKVxuXG5sZXQgcG1hcmsgaWRzIGkgPSBta19leHByIGlkcyAoUG1hcmsgaSlcblxubGV0IGVyYXNlIGlkcyBtIG0nID0gbWtfZXhwciBpZHMgKEVyYXNlIChtLCBtJykpXG5cbmxldCBiZWZvcmUgaWRzIGMgPSBta19leHByIGlkcyAoQmVmb3JlIGMpXG5cbmxldCBhZnRlciBpZHMgYyA9IG1rX2V4cHIgaWRzIChBZnRlciBjKVxuXG4oKioqKilcblxubGV0IHJlYyByZW5hbWUgaWRzIHggPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IF8gfCBFcHMgfCBNYXJrIF8gfCBQbWFyayBfIHwgRXJhc2UgXyB8IEJlZm9yZSBfIHwgQWZ0ZXIgXyAtPlxuICAgIG1rX2V4cHIgaWRzIHguZGVmXG4gIHwgQWx0IGwgLT5cbiAgICBta19leHByIGlkcyAoQWx0IChMaXN0Lm1hcCAocmVuYW1lIGlkcykgbCkpXG4gIHwgU2VxIChrLCB5LCB6KSAtPlxuICAgIG1rX2V4cHIgaWRzIChTZXEgKGssIHJlbmFtZSBpZHMgeSwgcmVuYW1lIGlkcyB6KSlcbiAgfCBSZXAgKGcsIGssIHkpIC0+XG4gICAgbWtfZXhwciBpZHMgKFJlcCAoZywgaywgcmVuYW1lIGlkcyB5KSlcblxuKCoqKiopXG5cbnR5cGUgaGFzaCA9IGludFxudHlwZSBtYXJrX2luZm9zID0gaW50IGFycmF5XG50eXBlIHN0YXR1cyA9IEZhaWxlZCB8IE1hdGNoIG9mIG1hcmtfaW5mb3MgKiBQbWFyay5TZXQudCB8IFJ1bm5pbmdcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFRTZXEgb2YgdCBsaXN0ICogZXhwciAqIHNlbVxuICAgIHwgVEV4cCBvZiBNYXJrcy50ICogZXhwclxuICAgIHwgVE1hdGNoIG9mIE1hcmtzLnRcblxuICBsZXQgcmVjIGVxdWFsIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBUU2VxIChsMScsIGUxLCBfKSA6OiByMSwgVFNlcSAobDInLCBlMiwgXykgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgZXF1YWwgbDEnIGwyJyAmJiBlcXVhbCByMSByMlxuICAgIHwgVEV4cCAobWFya3MxLCBlMSkgOjogcjEsIFRFeHAgKG1hcmtzMiwgZTIpIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgVE1hdGNoIG1hcmtzMSA6OiByMSwgVE1hdGNoIG1hcmtzMiA6OiByMiAtPlxuICAgICAgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCByZWMgaGFzaCBsIGFjY3UgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFjY3VcbiAgICB8IFRTZXEgKGwnLCBlLCBfKSA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDE3MmExYmNlIChoYXNoX2NvbWJpbmUgZS5pZCAoaGFzaCBsJyBhY2N1KSkpXG4gICAgfCBURXhwIChtYXJrcywgZSkgOjogciAtPlxuICAgICAgaGFzaCByXG4gICAgICAgIChoYXNoX2NvbWJpbmUgMHgyYjRjMGQ3NyAoaGFzaF9jb21iaW5lIGUuaWQgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpKVxuICAgIHwgVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MWMyMDVhZDUgKE1hcmtzLmhhc2ggbWFya3MgYWNjdSkpXG5cbiAgbGV0IHRleHAgbWFya3MgeCA9IFRFeHAgKG1hcmtzLCB4KVxuXG4gIGxldCB0c2VxIGtpbmQgeCB5IHJlbSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IHJlbVxuICAgIHwgW1RFeHAgKG1hcmtzLCB7ZGVmID0gRXBzIDsgX30pXSAtPiBURXhwIChtYXJrcywgeSkgOjogcmVtXG4gICAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFRTZXEgKHgsIHksIGtpbmQpIDo6IHJlbVxuXG4gIGxldCByZWMgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCBUTWF0Y2ggbWFya3MgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oTWF0Y2hAICVhKUBdXCIgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRTZXEgKGwnLCB4LCBfa2luZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oU2VxQCBcIjtcbiAgICAgIHByaW50X3N0YXRlX2xzdCBjaCBsJyB4O1xuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAICVhKUBdXCIgcHAgeFxuICAgIHwgVEV4cCAobWFya3MsIHtkZWYgPSBFcHM7IF99KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAoZXBzKSlAXVwiIHkuaWQgTWFya3MucHBfbWFya3MgbWFya3NcbiAgICB8IFRFeHAgKG1hcmtzLCB4KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihFeHBAICVkQCAoJWEpQCAlYSlAXVwiIHguaWQgTWFya3MucHBfbWFya3MgbWFya3MgcHAgeFxuXG4gIGFuZCBwcmludF9zdGF0ZV9sc3QgY2ggbCB5ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIigpXCJcbiAgICB8IGUgOjogcmVtIC0+XG4gICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5O1xuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgfCBcIjtcbiAgICAgICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeSlcbiAgICAgICAgcmVtXG5cbiAgbGV0IHBwIGNoIHQgPSBwcmludF9zdGF0ZV9sc3QgY2ggW3RdIHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgaWR4OiBpZHhcbiAgICA7IGNhdGVnb3J5OiBDYXRlZ29yeS50XG4gICAgOyBkZXNjOiBFLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGF0dXM6IHN0YXR1cyBvcHRpb25cbiAgICA7IGhhc2g6IGhhc2ggfVxuXG4gIGxldCBkdW1teSA9XG4gICAgeyBpZHggPSAtMVxuICAgIDsgY2F0ZWdvcnkgPSBDYXRlZ29yeS5kdW1teVxuICAgIDsgZGVzYyA9IFtdXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gLTEgfVxuXG4gIGxldCBoYXNoIGlkeCBjYXQgZGVzYyA9XG4gICAgRS5oYXNoIGRlc2MgKGhhc2hfY29tYmluZSBpZHggKGhhc2hfY29tYmluZSAoQ2F0ZWdvcnkudG9faW50IGNhdCkgMCkpIGxhbmQgMHgzRkZGRkZGRlxuXG4gIGxldCBtayBpZHggY2F0IGRlc2MgPVxuICAgIHsgaWR4XG4gICAgOyBjYXRlZ29yeSA9IGNhdFxuICAgIDsgZGVzY1xuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IGhhc2ggaWR4IGNhdCBkZXNjfVxuXG4gIGxldCBjcmVhdGUgY2F0IGUgPSBtayAwIGNhdCBbRS5URXhwIChNYXJrcy5lbXB0eSwgZSldXG5cbiAgbGV0IGVxdWFsIHggeSA9XG4gICAgKHguaGFzaCA6IGludCkgPSB5Lmhhc2ggJiYgKHguaWR4IDogaW50KSA9IHkuaWR4ICYmXG4gICAgQ2F0ZWdvcnkuZXF1YWwgeC5jYXRlZ29yeSB5LmNhdGVnb3J5ICYmIEUuZXF1YWwgeC5kZXNjIHkuZGVzY1xuXG4gIGxldCBjb21wYXJlIHggeSA9XG4gICAgbGV0IGMgPSBjb21wYXJlICh4Lmhhc2ggOiBpbnQpIHkuaGFzaCBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgbGV0IGMgPSBDYXRlZ29yeS5jb21wYXJlIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgIGNvbXBhcmUgeC5kZXNjIHkuZGVzY1xuXG4gIHR5cGUgdCcgPSB0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHQnXG4gICAgICBsZXQgZXF1YWwgPSBlcXVhbFxuICAgICAgbGV0IGhhc2ggdCA9IHQuaGFzaFxuICAgIGVuZClcbmVuZFxuXG4oKioqKiBGaW5kIGEgZnJlZSBpbmRleCAqKioqKVxuXG50eXBlIHdvcmtpbmdfYXJlYSA9IGJvb2wgYXJyYXkgcmVmXG5cbmxldCBjcmVhdGVfd29ya2luZ19hcmVhICgpID0gcmVmIFt8IGZhbHNlIHxdXG5cbmxldCBpbmRleF9jb3VudCB3ID0gQXJyYXkubGVuZ3RoICF3XG5cbmxldCByZXNldF90YWJsZSBhID0gQXJyYXkuZmlsbCBhIDAgKEFycmF5Lmxlbmd0aCBhKSBmYWxzZVxuXG5sZXQgcmVjIG1hcmtfdXNlZF9pbmRpY2VzIHRibCA9XG4gIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgIHwgRS5UU2VxIChsLCBfLCBfKSAtPiBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbFxuICAgICAgfCBFLlRFeHAgKG1hcmtzLCBfKVxuICAgICAgfCBFLlRNYXRjaCBtYXJrcyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAoXywgaSkgLT4gaWYgaSA+PSAwIHRoZW4gdGJsLihpKSA8LSB0cnVlKVxuICAgICAgICAgIG1hcmtzLk1hcmtzLm1hcmtzKVxuXG5sZXQgcmVjIGZpbmRfZnJlZSB0YmwgaWR4IGxlbiA9XG4gIGlmIGlkeCA9IGxlbiB8fCBub3QgdGJsLihpZHgpIHRoZW4gaWR4IGVsc2UgZmluZF9mcmVlIHRibCAoaWR4ICsgMSkgbGVuXG5cbmxldCBmcmVlX2luZGV4IHRibF9yZWYgbCA9XG4gIGxldCB0YmwgPSAhdGJsX3JlZiBpblxuICByZXNldF90YWJsZSB0Ymw7XG4gIG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsO1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHRibCBpblxuICBsZXQgaWR4ID0gZmluZF9mcmVlIHRibCAwIGxlbiBpblxuICBpZiBpZHggPSBsZW4gdGhlbiB0YmxfcmVmIDo9IEFycmF5Lm1ha2UgKDIgKiBsZW4pIGZhbHNlO1xuICBpZHhcblxuKCoqKiogQ29tcHV0YXRpb24gb2YgdGhlIG5leHQgc3RhdGUgKioqKilcblxubGV0IHJlbW92ZV9tYXRjaGVzID0gTGlzdC5maWx0ZXIgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpXG5cbmxldCByZWMgc3BsaXRfYXRfbWF0Y2hfcmVjIGwnID0gZnVuY3Rpb25cbiAgfCBbXSAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEUuVE1hdGNoIF8gOjogciAtPiAoTGlzdC5yZXYgbCcsIHJlbW92ZV9tYXRjaGVzIHIpXG4gIHwgeCA6OiByICAgICAgICAtPiBzcGxpdF9hdF9tYXRjaF9yZWMgKHggOjogbCcpIHJcblxubGV0IHNwbGl0X2F0X21hdGNoIGwgPSBzcGxpdF9hdF9tYXRjaF9yZWMgW10gbFxuXG5sZXQgcmVjIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCB5ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT5cbiAgICAoW10sIHByZXYpXG4gIHwgRS5UTWF0Y2ggXyBhcyB4IDo6IF8gLT4gKCogVHJ1bmNhdGUgYWZ0ZXIgZmlyc3QgbWF0Y2ggKilcbiAgICAoW3hdLCBwcmV2KVxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBsZXQgKGwnJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsJyB4IGluXG4gICAgbGV0IChyJywgcHJldicnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYnIHIgeSBpblxuICAgIChFLnRzZXEga2luZCBsJycgeCByJywgcHJldicnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB7ZGVmID0gRXBzOyBffSkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHkuaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh5LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuICB8IEUuVEV4cCAoX21hcmtzLCB4KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeC5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHguaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG5cbmxldCByZWMgc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBFLlRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgRS5UTWF0Y2ggKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIEUuVFNlcSAoc2V0X2lkeCBpZHggbCcsIHgsIGtpbmQpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRFeHAgKG1hcmtzLCB4KSA6OiByIC0+XG4gICAgRS5URXhwICgoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpLCB4KSA6OiBzZXRfaWR4IGlkeCByXG5cbmxldCBmaWx0ZXJfbWFya3MgYiBlIG1hcmtzID1cbiAge21hcmtzIHdpdGggTWFya3MubWFya3MgPSBMaXN0LmZpbHRlciAoZnVuIChpLCBfKSAtPiBpIDwgYiB8fCBpID4gZSkgbWFya3MuTWFya3MubWFya3MgfVxuXG5sZXQgcmVjIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgKCpGb3JtYXQuZXByaW50ZiBcIiVkQC5cIiB4LmlkOyopXG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgcyAtPlxuICAgIGlmIENzZXQubWVtIGMgcyB0aGVuIEUudGV4cCBtYXJrcyBlcHNfZXhwciA6OiByZW0gZWxzZSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBsZXQgKHknJywgbWFya3MnKSA9XG4gICAgICBtYXRjaFxuICAgICAgICBmaXJzdFxuICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5J1xuICAgICAgd2l0aFxuICAgICAgICBOb25lICAgICAgICAtPiAoeScsIG1hcmtzKVxuICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeScsIG1hcmtzJylcbiAgICBpblxuICAgIGJlZ2luIG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeScnIHggKEUuVE1hdGNoIG1hcmtzJyA6OiByZW0pXG4gICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHknJyB4IHJlbVxuICAgIGVuZFxuICB8IEVwcyAtPlxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBQbWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLnBtYXJrcyA9IFBtYXJrLlNldC5hZGQgaSBtYXJrcy5NYXJrcy5wbWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIEUuVE1hdGNoIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKSA6OiByZW1cbiAgfCBCZWZvcmUgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgbmV4dF9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cbiAgfCBBZnRlciBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBwcmV2X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5hbmQgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHkgeiByZW0gPVxuICBtYXRjaFxuICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKSB5XG4gIHdpdGhcbiAgICBOb25lIC0+XG4gICAgRS50c2VxIGtpbmQgeSB6IHJlbVxuICB8IFNvbWUgbWFya3MgLT5cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIGBMb25nZXN0IC0+XG4gICAgICBFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiByZW0pXG4gICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHpcbiAgICAgICAgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IHJlbSlcbiAgICB8IGBGaXJzdCAtPlxuICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgIEUudHNlcSBraW5kIHknIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogKEUudHNlcSBraW5kIHknJyB6IHJlbSkpXG5cbmxldCByZWMgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgeCA6OiByZW1cblxuYW5kIGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxubGV0IGRlbHRhIHRibF9yZWYgbmV4dF9jYXQgY2hhciBzdCA9XG4gIGxldCBwcmV2X2NhdCA9IHN0LlN0YXRlLmNhdGVnb3J5IGluXG4gIGxldCAoZXhwcicsIF8pID1cbiAgICByZW1vdmVfZHVwbGljYXRlcyBbXVxuICAgICAgKGRlbHRhXzQgY2hhciB+bmV4dF9jYXQgfnByZXZfY2F0IHN0LlN0YXRlLmRlc2MgW10pXG4gICAgICBlcHNfZXhwciBpblxuICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICBTdGF0ZS5tayBpZHggbmV4dF9jYXQgZXhwcicnXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlZF90ciA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbX10gYXMgbCAtPlxuICAgIGxcbiAgfCAoKHMxLCBzdDEpIGFzIHRyMSkgOjogKChzMiwgc3QyKSBhcyB0cjIpIDo6IHJlbSAtPlxuICAgIGlmIFN0YXRlLmVxdWFsIHN0MSBzdDIgdGhlblxuICAgICAgcmVkX3RyICgoQ3NldC51bmlvbiBzMSBzMiwgc3QxKSA6OiByZW0pXG4gICAgZWxzZVxuICAgICAgdHIxIDo6IHJlZF90ciAodHIyIDo6IHJlbSlcblxubGV0IHNpbXBsX3RyIGwgPVxuICBMaXN0LnNvcnRcbiAgICAoZnVuIChzMSwgXykgKHMyLCBfKSAtPiBjb21wYXJlIHMxIHMyKVxuICAgIChyZWRfdHIgKExpc3Quc29ydCAoZnVuIChfLCBzdDEpIChfLCBzdDIpIC0+IFN0YXRlLmNvbXBhcmUgc3QxIHN0MikgbCkpXG5cbigqKioqKVxuXG5sZXQgcHJlcGVuZF9kZXJpdiA9IExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCB4KSBsIC0+IENzZXQucHJlcGVuZCBzIHggbClcblxubGV0IHJlYyByZXN0cmljdCBzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChzJywgeCcpIDo6IHJlbSAtPlxuICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgIHRoZW4gcmVzdHJpY3QgcyByZW1cbiAgICBlbHNlIChzJycsIHgnKSA6OiByZXN0cmljdCBzIHJlbVxuXG5sZXQgcmVjIHJlbW92ZV9tYXJrcyBiIGUgcmVtID1cbiAgaWYgYiA+IGUgdGhlbiByZW0gZWxzZSByZW1vdmVfbWFya3MgYiAoZSAtIDEpICgoZSwgLTIpIDo6IHJlbSlcblxubGV0IHJlYyBwcmVwZW5kX21hcmtzX2V4cHIgbSA9IGZ1bmN0aW9uXG4gIHwgRS5UU2VxIChsLCBlJywgcykgLT4gRS5UU2VxIChwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCwgZScsIHMpXG4gIHwgRS5URXhwIChtJywgZScpICAgLT4gRS5URXhwIChNYXJrcy5tZXJnZSBtIG0nLCBlJylcbiAgfCBFLlRNYXRjaCBtJyAgICAgICAtPiBFLlRNYXRjaCAoTWFya3MubWVyZ2UgbSBtJylcblxuYW5kIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsID1cbiAgTGlzdC5tYXAgKHByZXBlbmRfbWFya3NfZXhwciBtKSBsXG5cbmxldCBwcmVwZW5kX21hcmtzIG0gPVxuICBMaXN0Lm1hcCAoZnVuIChzLCB4KSAtPiAocywgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIHgpKVxuXG5sZXQgcmVjIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHggcmVtID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICB8IENzdCBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIHMgW0UudGV4cCBtYXJrcyBlcHNfZXhwcl0gcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB6KSByZW0gLT5cbiAgICAgICAgIGxldCAoeicsIG1hcmtzJykgPVxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIGZpcnN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICAgIHpcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIE5vbmUgICAgICAgIC0+ICh6LCBtYXJrcylcbiAgICAgICAgICAgfCBTb21lIG1hcmtzJyAtPiAocmVtb3ZlX21hdGNoZXMgeiwgbWFya3MnKVxuICAgICAgICAgaW5cbiAgICAgICAgIENzZXQucHJlcGVuZCBzXG4gICAgICAgICAgIChtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHonIHggW0UuVE1hdGNoIG1hcmtzJ11cbiAgICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeicgeCBbXSlcbiAgICAgICAgICAgcmVtKVxuICAgICAgeScgcmVtXG4gIHwgRXBzIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IE1hcmsgaSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKChpLCAtMSkgOjogTGlzdC5yZW1vdmVfYXNzcSBpIG1hcmtzLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IFBtYXJrIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFyc1xuICAgICAgW0UuVE1hdGNoIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKHJlbW92ZV9tYXJrcyBiIGUgKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpLk1hcmtzLm1hcmtzKX1dIHJlbVxuICB8IEJlZm9yZSBjYXQnIC0+XG4gICAgQ3NldC5wcmVwZW5kIChMaXN0LmFzc3EgY2F0JyBjYXRlZ29yaWVzKSBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEFmdGVyIGNhdCcgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgY2F0IGNhdCcgdGhlbiBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtIGVsc2UgcmVtXG5cbmFuZCBkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl8yIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCByIHJlbSlcblxuYW5kIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5IHogcmVtID1cbiAgaWZcbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biAoX3MsIHhsKSAtPlxuICAgICAgICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIEUuVE1hdGNoIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIHhsKVxuICAgICAgeVxuICB0aGVuXG4gICAgbGV0IHonID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBNYXJrcy5lbXB0eSBjYXQgeiBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeSkgcmVtIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSlcbiAgICAgICAgICAgICB5XG4gICAgICAgICB3aXRoXG4gICAgICAgICAgIE5vbmUgLT5cbiAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHkgeiBbXSkgcmVtXG4gICAgICAgICB8IFNvbWUgbWFya3MgLT5cbiAgICAgICAgICAgbGV0IHonJyA9IHByZXBlbmRfbWFya3MgbWFya3MgeicgaW5cbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgYExvbmdlc3QgLT5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSByZW0pXG4gICAgICAgICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgcmVtKVxuICAgICAgICAgICB8IGBGaXJzdCAtPlxuICAgICAgICAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknIHogW10pIChcbiAgICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JycgeiBbXSkgcmVtKSkpXG4gICAgICB5IHJlbVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB4bCkgcmVtIC0+IENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB4bCB6IFtdKSByZW0pIHkgcmVtXG5cbmxldCByZWMgZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4IHdpdGhcbiAgICBFLlRTZXEgKHksIHosIGtpbmQpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IEUuVEV4cCAobWFya3MsIGUpIC0+XG4gICAgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgZSByZW1cbiAgfCBFLlRNYXRjaCBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbeF0gcmVtXG5cbmFuZCBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT4gZGVyaXZfMyBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgeVxuICAgICAgICAgICAgICAgIChkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCByIHJlbSlcblxubGV0IGRlcml2IHRibF9yZWYgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QgPVxuICBsZXQgZGVyID0gZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdC5TdGF0ZS5jYXRlZ29yeSBzdC5TdGF0ZS5kZXNjXG4gICAgICBbKGFsbF9jaGFycywgW10pXSBpblxuICBzaW1wbF90ciAoXG4gICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIGV4cHIpIHJlbSAtPlxuICAgICAgICBsZXQgKGV4cHInLCBfKSA9IHJlbW92ZV9kdXBsaWNhdGVzIFtdIGV4cHIgZXBzX2V4cHIgaW5cbigqXG5Gb3JtYXQuZXByaW50ZiBcIkBbPDM+QFslYUBdOiAlYSAvICVhQF1ALlwiIENzZXQucHJpbnQgcyBwcmludF9zdGF0ZSBleHByIHByaW50X3N0YXRlIGV4cHInO1xuKilcbiAgICAgICAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICAgICAgICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKGNhdCcsIHMnKSByZW0gLT5cbiAgICAgICAgICAgIGxldCBzJycgPSBDc2V0LmludGVyIHMgcycgaW5cbiAgICAgICAgICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgICAgICAgICB0aGVuIHJlbVxuICAgICAgICAgICAgZWxzZSAocycnLCBTdGF0ZS5tayBpZHggY2F0JyBleHByJycpIDo6IHJlbSlcbiAgICAgICAgICBjYXRlZ29yaWVzIHJlbSkgZGVyIFtdKVxuXG4oKioqKilcblxubGV0IGZsYXR0ZW5fbWF0Y2ggbSA9XG4gIGxldCBtYSA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbWEgKGksIF8pIC0+IG1heCBtYSBpKSAoLTEpIG0gaW5cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgKG1hICsgMSkgKC0xKSBpblxuICBMaXN0Lml0ZXIgKGZ1biAoaSwgdikgLT4gcmVzLihpKSA8LSB2KSBtO1xuICByZXNcblxubGV0IHN0YXR1cyBzID1cbiAgbWF0Y2ggcy5TdGF0ZS5zdGF0dXMgd2l0aFxuICAgIFNvbWUgc3QgLT5cbiAgICBzdFxuICB8IE5vbmUgLT5cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggcy5TdGF0ZS5kZXNjIHdpdGhcbiAgICAgICAgW10gICAgICAgICAgICAgIC0+IEZhaWxlZFxuICAgICAgfCBFLlRNYXRjaCBtIDo6IF8gLT4gTWF0Y2ggKGZsYXR0ZW5fbWF0Y2ggbS5NYXJrcy5tYXJrcywgbS5NYXJrcy5wbWFya3MpXG4gICAgICB8IF8gICAgICAgICAgICAgICAtPiBSdW5uaW5nXG4gICAgaW5cbiAgICBzLlN0YXRlLnN0YXR1cyA8LSBTb21lIHN0O1xuICAgIHN0XG4iLCIoKiBJbiByZWFsaXR5LCB0aGlzIGNhbiByZWFsbHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBib29sIGFycmF5LlxuXG4gICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgbGlzdCBvZiBhbGwgY2hhcnMgYWxvbmcgd2l0aCBhXG4gICBmbGFnOlxuXG4gICAoYSwgMCksIChiLCAxKSwgKGMsIDApLCAoZCwgMCksIC4uLlxuXG4gICBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjb2xvciBhcmUgcmVwcmVzZW50ZWQgYnkgc2VxdW5jZXMgb2ZcbiAgIGNoYXJhY3RlcnMgd2l0aCB0aGUgZmxhZyBzZXQgdG8gMC5cbiopXG5cbnR5cGUgdCA9IEJ5dGVzLnRcblxubGV0IG1ha2UgKCkgPSBCeXRlcy5tYWtlIDI1NyAnXFwwMDAnXG5cbmxldCBmbGF0dGVuIGNtID1cbiAgbGV0IGMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCBjb2xvcl9yZXByID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgdiA9IHJlZiAwIGluXG4gIEJ5dGVzLnNldCBjIDAgJ1xcMDAwJztcbiAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgMCAnXFwwMDAnO1xuICBmb3IgaSA9IDEgdG8gMjU1IGRvXG4gICAgaWYgQnl0ZXMuZ2V0IGNtIGkgPD4gJ1xcMDAwJyB0aGVuIGluY3IgdjtcbiAgICBCeXRlcy5zZXQgYyBpIChDaGFyLmNociAhdik7XG4gICAgQnl0ZXMuc2V0IGNvbG9yX3JlcHIgIXYgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGMsIEJ5dGVzLnN1Yl9zdHJpbmcgY29sb3JfcmVwciAwICghdiArIDEpLCAhdiArIDEpXG5cbigqIG1hcmsgYWxsIHRoZSBlbmRwb2ludHMgb2YgdGhlIGludGVydmFscyBvZiB0aGUgY2hhciBzZXQgd2l0aCB0aGUgMSBieXRlICopXG5sZXQgc3BsaXQgcyBjbSA9XG4gIENzZXQuaXRlciBzIH5mOihmdW4gaSBqIC0+XG4gICAgICBCeXRlcy5zZXQgY20gaSAnXFwwMDEnO1xuICAgICAgQnl0ZXMuc2V0IGNtIChqICsgMSkgJ1xcMDAxJztcbiAgICApXG4iLCIoKiBSZXN1bHQgb2YgYSBzdWNjZXNzZnVsIG1hdGNoLiAqKVxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbWFya3MgOiBBdXRvbWF0YS5tYXJrX2luZm9zXG4gIDsgcG1hcmtzIDogUG1hcmsuU2V0LnRcbiAgOyBncG9zIDogaW50IGFycmF5XG4gIDsgZ2NvdW50IDogaW50XG4gIH1cblxubGV0IG9mZnNldCB0IGkgPVxuICBpZiAyICogaSArIDEgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICBpZiBtMSA9IC0xIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gIChwMSwgcDIpXG5cbmxldCBnZXQgdCBpID1cbiAgbGV0IChwMSwgcDIpID0gb2Zmc2V0IHQgaSBpblxuICBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcblxubGV0IHN0YXJ0IHN1YnMgaSA9IGZzdCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHN0b3Agc3VicyBpID0gc25kIChvZmZzZXQgc3VicyBpKVxuXG5sZXQgdGVzdCB0IGkgPVxuICBpZiAyICogaSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuXG4gICAgZmFsc2VcbiAgZWxzZVxuICAgIGxldCBpZHggPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZHggPD4gLTFcblxubGV0IGdldF9vcHQgdCBpID1cbiAgaWYgdGVzdCB0IGlcbiAgdGhlbiBTb21lIChnZXQgdCBpKVxuICBlbHNlIE5vbmVcblxubGV0IGR1bW15X29mZnNldCA9ICgtMSwgLTEpXG5cbmxldCBhbGxfb2Zmc2V0IHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9vZmZzZXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSAocDEsIHAyKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IGR1bW15X3N0cmluZyA9IFwiXCJcblxubGV0IGFsbCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfc3RyaW5nIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgcHAgZm10IHQgPVxuICBsZXQgbWF0Y2hlcyA9XG4gICAgbGV0IG9mZnNldHMgPSBhbGxfb2Zmc2V0IHQgaW5cbiAgICBsZXQgc3RycyA9IGFsbCB0IGluXG4gICAgQXJyYXkudG9fbGlzdCAoXG4gICAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggc3RycykgKGZ1biBpIC0+IHN0cnMuKGkpLCBvZmZzZXRzLihpKSlcbiAgICApIGluXG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgcHBfbWF0Y2ggZm10IChzdHIsIChzdGFydCwgc3RvcCkpID1cbiAgICBmcHJpbnRmIGZtdCBcIkBbKCVzICglZCAlZCkpQF1cIiBzdHIgc3RhcnQgc3RvcCBpblxuICBzZXhwIGZtdCBcIkdyb3VwXCIgKGxpc3QgcHBfbWF0Y2gpIG1hdGNoZXNcblxubGV0IG5iX2dyb3VwcyB0ID0gdC5nY291bnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbmxldCByZWMgaXRlciBuIGYgdiA9IGlmIG4gPSAwIHRoZW4gdiBlbHNlIGl0ZXIgKG4gLSAxKSBmIChmIHYpXG5cbigqKioqKVxuXG5sZXQgdW5rbm93biA9IC0yXG5sZXQgYnJlYWsgPSAtM1xuXG50eXBlIG1hdGNoX2luZm8gPVxuICB8IE1hdGNoIG9mIEdyb3VwLnRcbiAgfCBGYWlsZWRcbiAgfCBSdW5uaW5nIG9mIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA6IGludCB9XG5cbnR5cGUgc3RhdGUgPVxuICB7IGlkeCA6IGludDtcbiAgICAoKiBJbmRleCBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgcG9zaXRpb24gdGFibGUuXG4gICAgICAgTm90IHlldCBjb21wdXRlZCB0cmFuc2l0aW9ucyBwb2ludCB0byBhIGR1bW15IHN0YXRlIHdoZXJlXG4gICAgICAgW2lkeF0gaXMgc2V0IHRvIFt1bmtub3duXTtcbiAgICAgICBJZiBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSBmb3Igc3RhdGVzIHRoYXQgZWl0aGVyIGFsd2F5c1xuICAgICAgIHN1Y2NlZWQgb3IgYWx3YXlzIGZhaWwuICopXG4gICAgcmVhbF9pZHggOiBpbnQ7XG4gICAgKCogVGhlIHJlYWwgaW5kZXgsIGluIGNhc2UgW2lkeF0gaXMgc2V0IHRvIFticmVha10gKilcbiAgICBuZXh0IDogc3RhdGUgYXJyYXk7XG4gICAgKCogVHJhbnNpdGlvbiB0YWJsZSwgaW5kZXhlZCBieSBjb2xvciAqKVxuICAgIG11dGFibGUgZmluYWwgOlxuICAgICAgKENhdGVnb3J5LnQgKlxuICAgICAgIChBdXRvbWF0YS5pZHggKiBBdXRvbWF0YS5zdGF0dXMpKSBsaXN0O1xuICAgICgqIE1hcHBpbmcgZnJvbSB0aGUgY2F0ZWdvcnkgb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvXG4gICAgICAgLSB0aGUgaW5kZXggd2hlcmUgdGhlIG5leHQgcG9zaXRpb24gc2hvdWxkIGJlIHNhdmVkXG4gICAgICAgLSBwb3NzaWJseSwgdGhlIGxpc3Qgb2YgbWFya3MgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbmRpY2VzKVxuICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgYmVzdCBtYXRjaCAqKVxuICAgIGRlc2MgOiBBdXRvbWF0YS5TdGF0ZS50XG4gICAgKCogRGVzY3JpcHRpb24gb2YgdGhpcyBzdGF0ZSBvZiB0aGUgYXV0b21hdGEgKikgfVxuXG4oKiBBdXRvbWF0YSAoY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uKSAqKVxudHlwZSByZSA9XG4gIHsgaW5pdGlhbCA6IEF1dG9tYXRhLmV4cHI7XG4gICAgKCogVGhlIHdob2xlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zdGF0ZXMgOiAoQ2F0ZWdvcnkudCAqIHN0YXRlKSBsaXN0O1xuICAgICgqIEluaXRpYWwgc3RhdGVzLCBpbmRleGVkIGJ5IGluaXRpYWwgY2F0ZWdvcnkgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKilcbiAgICBjb2xvcl9yZXByIDogc3RyaW5nO1xuICAgICgqIFRhYmxlIGZyb20gY29sb3JzIHRvIG9uZSBjaGFyYWN0ZXIgb2YgdGhpcyBjb2xvciAqKVxuICAgIG5jb2xvciA6IGludDtcbiAgICAoKiBOdW1iZXIgb2YgY29sb3JzLiAqKVxuICAgIGxubCA6IGludDtcbiAgICAoKiBDb2xvciBvZiB0aGUgbGFzdCBuZXdsaW5lLiAtMSBpZiB1bm5lY2Vzc2FyeSAqKVxuICAgIHRibCA6IEF1dG9tYXRhLndvcmtpbmdfYXJlYTtcbiAgICAoKiBUZW1wb3JhcnkgdGFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBmaXJzdCBhdmFpbGFibGUgaW5kZXhcbiAgICAgICB3aGVuIGNvbXB1dGluZyBhIG5ldyBzdGF0ZSAqKVxuICAgIHN0YXRlcyA6IHN0YXRlIEF1dG9tYXRhLlN0YXRlLlRhYmxlLnQ7XG4gICAgKCogU3RhdGVzIG9mIHRoZSBkZXRlcm1pbmlzdGljIGF1dG9tYXRhICopXG4gICAgZ3JvdXBfbmFtZXMgOiAoc3RyaW5nICogaW50KSBsaXN0O1xuICAgICgqIE5hbWVkIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgZ3JvdXBfY291bnQgOiBpbnRcbiAgICAoKiBOdW1iZXIgb2YgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKikgfVxuXG5sZXQgcHBfcmUgY2ggcmUgPSBBdXRvbWF0YS5wcCBjaCByZS5pbml0aWFsXG5cbmxldCBwcmludF9yZSA9IHBwX3JlXG5cbmxldCBncm91cF9jb3VudCByZSA9IHJlLmdyb3VwX2NvdW50XG5cbmxldCBncm91cF9uYW1lcyByZSA9IHJlLmdyb3VwX25hbWVzXG5cbigqIEluZm9ybWF0aW9uIHVzZWQgZHVyaW5nIG1hdGNoaW5nICopXG50eXBlIGluZm8gPVxuICB7IHJlIDogcmU7XG4gICAgKCogVGhlIGF1dG9tYXRhICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlIChbeC5jb2xvcnMgPSB4LnJlLmNvbG9yc10pXG4gICAgICAgU2hvcnRjdXQgdXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIG11dGFibGUgcG9zaXRpb25zIDogaW50IGFycmF5O1xuICAgICgqIEFycmF5IG9mIG1hcmsgcG9zaXRpb25zXG4gICAgICAgVGhlIG1hcmsgYXJlIG9mZiBieSBvbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBwb3MgOiBpbnQ7XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIGlzIHN0YXJ0ZWQgKilcbiAgICBsYXN0IDogaW50XG4gICAgKCogUG9zaXRpb24gd2hlcmUgdGhlIG1hdGNoIHNob3VsZCBzdG9wICopIH1cblxuXG4oKioqKilcblxubGV0IGNhdGVnb3J5IHJlIH5jb2xvciA9XG4gIGlmIGNvbG9yID0gLTEgdGhlblxuICAgIENhdGVnb3J5LmluZXhpc3RhbnRcbiAgICAoKiBTcGVjaWFsIGNhdGVnb3J5IGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gIGVsc2UgaWYgY29sb3IgPSByZS5sbmwgdGhlblxuICAgIENhdGVnb3J5LihsYXN0bmV3bGluZSArKyBuZXdsaW5lICsrIG5vdF9sZXR0ZXIpXG4gIGVsc2VcbiAgICBDYXRlZ29yeS5mcm9tX2NoYXIgKHJlLmNvbG9yX3JlcHIuW2NvbG9yXSlcblxuKCoqKiopXG5cbmxldCBkdW1teV9uZXh0ID0gW3x8XVxuXG5sZXQgdW5rbm93bl9zdGF0ZSA9XG4gIHsgaWR4ID0gdW5rbm93bjsgcmVhbF9pZHggPSAwO1xuICAgIG5leHQgPSBkdW1teV9uZXh0OyBmaW5hbCA9IFtdO1xuICAgIGRlc2MgPSBBdXRvbWF0YS5TdGF0ZS5kdW1teSB9XG5cbmxldCBta19zdGF0ZSBuY29sIGRlc2MgPVxuICBsZXQgYnJlYWtfc3RhdGUgPVxuICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBkZXNjIHdpdGhcbiAgICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT4gZmFsc2VcbiAgICB8IEF1dG9tYXRhLkZhaWxlZFxuICAgIHwgQXV0b21hdGEuTWF0Y2ggXyAtPiB0cnVlXG4gIGluXG4gIHsgaWR4ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBicmVhayBlbHNlIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIHJlYWxfaWR4ID0gZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgbmV4dCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gZHVtbXlfbmV4dCBlbHNlIEFycmF5Lm1ha2UgbmNvbCB1bmtub3duX3N0YXRlO1xuICAgIGZpbmFsID0gW107XG4gICAgZGVzYyB9XG5cbmxldCBmaW5kX3N0YXRlIHJlIGRlc2MgPVxuICB0cnlcbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5maW5kIHJlLnN0YXRlcyBkZXNjXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gbWtfc3RhdGUgcmUubmNvbG9yIGRlc2MgaW5cbiAgICBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5hZGQgcmUuc3RhdGVzIGRlc2Mgc3Q7XG4gICAgc3RcblxuKCoqKiogTWF0Y2ggd2l0aCBtYXJrcyAqKioqKVxuXG5sZXQgZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0ID1cbiAgbGV0IGRlc2MgPSBBdXRvbWF0YS5kZWx0YSBpbmZvLnJlLnRibCBjYXQgY29sb3Igc3QuZGVzYyBpblxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGluZm8ucG9zaXRpb25zIGluXG4gIGlmIGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4ID0gbGVuICYmIGxlbiA+IDAgdGhlbiBiZWdpblxuICAgIGxldCBwb3MgPSBpbmZvLnBvc2l0aW9ucyBpblxuICAgIGluZm8ucG9zaXRpb25zIDwtIEFycmF5Lm1ha2UgKDIgKiBsZW4pIDA7XG4gICAgQXJyYXkuYmxpdCBwb3MgMCBpbmZvLnBvc2l0aW9ucyAwIGxlblxuICBlbmQ7XG4gIGRlc2NcblxubGV0IHZhbGlkYXRlIGluZm8gKHM6c3RyaW5nKSB+cG9zIHN0ID1cbiAgbGV0IGNvbG9yID0gQ2hhci5jb2RlIChpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yIHN0IGluXG4gIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgc3QubmV4dC4oY29sb3IpIDwtIHN0J1xuXG5sZXQgcmVjIGxvb3AgaW5mbyBzIH5wb3Mgc3QgPVxuICBpZiBwb3MgPCBpbmZvLmxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBsZXQgaWR4ID0gc3QnLmlkeCBpblxuICAgIGlmIGlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihpZHgpIDwtIHBvcztcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3M6KHBvcyArIDEpIHN0J1xuICAgIGVuZCBlbHNlIGlmIGlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICAgIHN0J1xuICAgIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcCBpbmZvIHMgfnBvcyBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IHJlYyBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3QgPVxuICBpZiBwb3MgPCBsYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgaWYgc3QnLmlkeCA+PSAwIHRoZW5cbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvczoocG9zICsgMSkgfmxhc3Qgc3QnXG4gICAgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3QnXG4gICAgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdFxuICAgIGVuZFxuICBlbHNlXG4gICAgc3RcblxubGV0IGZpbmFsIGluZm8gc3QgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCBzdC5maW5hbFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCcgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6KC0xKSBzdCBpblxuICAgIGxldCByZXMgPSAoc3QnLkF1dG9tYXRhLlN0YXRlLmlkeCwgQXV0b21hdGEuc3RhdHVzIHN0JykgaW5cbiAgICBzdC5maW5hbCA8LSAoY2F0LCByZXMpIDo6IHN0LmZpbmFsO1xuICAgIHJlc1xuXG5sZXQgZmluZF9pbml0aWFsX3N0YXRlIHJlIGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgcmUuaW5pdGlhbF9zdGF0ZXNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBmaW5kX3N0YXRlIHJlIChBdXRvbWF0YS5TdGF0ZS5jcmVhdGUgY2F0IHJlLmluaXRpYWwpIGluXG4gICAgcmUuaW5pdGlhbF9zdGF0ZXMgPC0gKGNhdCwgc3QpIDo6IHJlLmluaXRpYWxfc3RhdGVzO1xuICAgIHN0XG5cbmxldCBnZXRfY29sb3IgcmUgKHM6c3RyaW5nKSBwb3MgPVxuICBpZiBwb3MgPCAwIHRoZW5cbiAgICAtMVxuICBlbHNlXG4gICAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBpZiBwb3MgPj0gc2xlbiB0aGVuXG4gICAgICAtMVxuICAgIGVsc2UgaWYgcG9zID0gc2xlbiAtIDEgJiYgcmUubG5sIDw+IC0xICYmIHMuW3Bvc10gPSAnXFxuJyB0aGVuXG4gICAgICAoKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgICAgIHJlLmxubFxuICAgIGVsc2VcbiAgICAgIENoYXIuY29kZSByZS5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXVxuXG5sZXQgcmVjIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHMgPVxuICBsZXQgc3QnID0gc3QubmV4dC4oaW5mby5yZS5sbmwpIGluXG4gIGlmIHN0Jy5pZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICBsZXQgY29sb3IgPSBpbmZvLnJlLmxubCBpblxuICAgIGxldCByZWFsX2MgPSBDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSAnXFxuJ10gaW5cbiAgICBsZXQgY2F0ID0gY2F0ZWdvcnkgaW5mby5yZSB+Y29sb3IgaW5cbiAgICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3I6cmVhbF9jIHN0IGluXG4gICAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICAgIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCc7XG4gICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3Vwc1xuICBlbmRcblxubGV0IHJlYyBzY2FuX3N0ciBpbmZvIChzOnN0cmluZykgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzID1cbiAgbGV0IHBvcyA9IGluZm8ucG9zIGluXG4gIGxldCBsYXN0ID0gaW5mby5sYXN0IGluXG4gIGlmIChsYXN0ID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAmJiBpbmZvLnJlLmxubCA8PiAtMVxuICAgICAgJiYgbGFzdCA+IHBvc1xuICAgICAgJiYgU3RyaW5nLmdldCBzIChsYXN0IC0gMSkgPSAnXFxuJylcbiAgdGhlbiBiZWdpblxuICAgIGxldCBpbmZvID0geyBpbmZvIHdpdGggbGFzdCA9IGxhc3QgLSAxIH0gaW5cbiAgICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgdGhlblxuICAgICAgc3RcbiAgICBlbHNlXG4gICAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvczoobGFzdCAtIDEpIHN0IH5ncm91cHNcbiAgZW5kIGVsc2UgaWYgZ3JvdXBzIHRoZW5cbiAgICBsb29wIGluZm8gcyB+cG9zIGluaXRpYWxfc3RhdGVcbiAgZWxzZVxuICAgIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBpbml0aWFsX3N0YXRlXG5cbigqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGZpbmFsIGJvdW5kYXJ5IGNoZWNrIG9uIHRoZSBpbnB1dC5cbiAgIFRoaXMgaXMgdXNlZnVsIHRvIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBmYWlsZWQgYmVjYXVzZVxuICAgb2YgaW5zdWZmaWNpZW50IGlucHV0LCBvciB0byB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5XG4gICBtYXRjaGVzIGZvciByZWdleCB0aGF0IGhhdmUgYm91bmRhcnkgY29uZGl0aW9ucyB3aXRoIHJlc3BlY3RcbiAgIHRvIHRoZSBpbnB1dCBzdHJpbmcuXG4gKilcbmxldCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzID1cbiAgbGV0IGZpbmFsX2NhdCA9XG4gICAgaWYgbGFzdCA9IHNsZW4gdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyBsYXN0KSlcbiAgaW5cbiAgbGV0IChpZHgsIHJlcykgPSBmaW5hbCBpbmZvIHN0IGZpbmFsX2NhdCBpblxuICAobWF0Y2ggZ3JvdXBzLCByZXMgd2l0aFxuICB8IHRydWUsIE1hdGNoIF8gLT4gaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gbGFzdFxuICB8IF8gLT4gKCkpO1xuICByZXNcblxubGV0IG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxhc3QgPSBpZiBsZW4gPSAtMSB0aGVuIHNsZW4gZWxzZSBwb3MgKyBsZW4gaW5cbiAgbGV0IGluZm8gPVxuICAgIHsgcmUgOyBjb2xvcnMgPSByZS5jb2xvcnM7IHBvcyA7IGxhc3RcbiAgICA7IHBvc2l0aW9ucyA9XG4gICAgICAgIGlmIGdyb3VwcyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG4gPSBBdXRvbWF0YS5pbmRleF9jb3VudCByZS50YmwgKyAxIGluXG4gICAgICAgICAgaWYgbiA8PSAxMCB0aGVuXG4gICAgICAgICAgICBbfDA7MDswOzA7MDswOzA7MDswOzB8XVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEFycmF5Lm1ha2UgbiAwXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgW3x8XSB9XG4gIGluXG4gIGxldCBpbml0aWFsX2NhdCA9XG4gICAgaWYgcG9zID0gMCB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeVxuICAgICAgICAgICAgICAgICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgKHBvcyAtIDEpKSlcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RhdGUgPSBmaW5kX2luaXRpYWxfc3RhdGUgcmUgaW5pdGlhbF9jYXQgaW5cbiAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICBsZXQgcmVzID1cbiAgICBpZiBzdC5pZHggPSBicmVhayB8fCAocGFydGlhbCAmJiBub3QgZ3JvdXBzKSB0aGVuXG4gICAgICBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzY1xuICAgIGVsc2UgaWYgcGFydGlhbCAmJiBncm91cHMgdGhlblxuICAgICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIHN0LmRlc2Mgd2l0aFxuICAgICAgfCBNYXRjaCBfIHwgRmFpbGVkIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgIHwgUnVubmluZyAtPlxuICAgICAgICAoKiBUaGlzIGNvdWxkIGJlIGJlY2F1c2UgaXQncyBzdGlsbCBub3QgZnVsbHkgbWF0Y2hlZCwgb3IgaXRcbiAgICAgICAgICAgY291bGQgYmUgdGhhdCBiZWNhdXNlIHdlIG5lZWQgdG8gcnVuIHNwZWNpYWwgZW5kIG9mIGlucHV0XG4gICAgICAgICAgIGNoZWNrcy4gKilcbiAgICAgICAgKG1hdGNoIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgd2l0aFxuICAgICAgICAgfCBNYXRjaCBfIGFzIHN0YXR1cyAtPiBzdGF0dXNcbiAgICAgICAgIHwgRmFpbGVkIHwgUnVubmluZyAtPlxuICAgICAgICAgICAoKiBBIGZhaWx1cmUgaGVyZSBqdXN0IG1lYW5zIHRoYXQgd2UgbmVlZCBtb3JlIGRhdGEsIGkuZS5cbiAgICAgICAgICAgICAgaXQncyBhIHBhcnRpYWwgbWF0Y2guICopXG4gICAgICAgICAgIFJ1bm5pbmcpXG4gICAgZWxzZSBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gICAgQXV0b21hdGEuTWF0Y2ggKG1hcmtzLCBwbWFya3MpIC0+XG4gICAgTWF0Y2ggeyBzIDsgbWFya3M7IHBtYXJrcyA7IGdwb3MgPSBpbmZvLnBvc2l0aW9uczsgZ2NvdW50ID0gcmUuZ3JvdXBfY291bnR9XG4gIHwgQXV0b21hdGEuRmFpbGVkIC0+IEZhaWxlZFxuICB8IEF1dG9tYXRhLlJ1bm5pbmcgLT5cbiAgICBsZXQgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSA9IGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLigwKSBlbHNlIDAgaW5cbiAgICBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9XG5cbmxldCBta19yZSB+aW5pdGlhbCB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXMgfmdyb3VwX2NvdW50ID1cbiAgeyBpbml0aWFsIDtcbiAgICBpbml0aWFsX3N0YXRlcyA9IFtdO1xuICAgIGNvbG9ycztcbiAgICBjb2xvcl9yZXByO1xuICAgIG5jb2xvcjtcbiAgICBsbmw7XG4gICAgdGJsID0gQXV0b21hdGEuY3JlYXRlX3dvcmtpbmdfYXJlYSAoKTtcbiAgICBzdGF0ZXMgPSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS5jcmVhdGUgOTc7XG4gICAgZ3JvdXBfbmFtZXM7XG4gICAgZ3JvdXBfY291bnQgfVxuXG4oKioqKiBDaGFyYWN0ZXIgc2V0cyAqKioqKVxuXG5sZXQgY3NlcSBjIGMnID0gQ3NldC5zZXEgKENoYXIuY29kZSBjKSAoQ2hhci5jb2RlIGMnKVxubGV0IGNhZGQgYyBzID0gQ3NldC5hZGQgKENoYXIuY29kZSBjKSBzXG5cbmxldCB0cmFuc19zZXQgY2FjaGUgY20gcyA9XG4gIG1hdGNoIENzZXQub25lX2NoYXIgcyB3aXRoXG4gIHwgU29tZSBpIC0+IENzZXQuY3NpbmdsZSBjbS5baV1cbiAgfCBOb25lIC0+XG4gICAgbGV0IHYgPSAoQ3NldC5oYXNoX3JlYyBzLCBzKSBpblxuICAgIHRyeVxuICAgICAgQ3NldC5DU2V0TWFwLmZpbmQgdiAhY2FjaGVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IGwgPVxuICAgICAgICBDc2V0LmZvbGRfcmlnaHRcbiAgICAgICAgICBzXG4gICAgICAgICAgfmY6KGZ1biAoaSwgaikgbCAtPiBDc2V0LnVuaW9uIChjc2VxIGNtLltpXSBjbS5bal0pIGwpXG4gICAgICAgICAgfmluaXQ6Q3NldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIGNhY2hlIDo9IENzZXQuQ1NldE1hcC5hZGQgdiBsICFjYWNoZTtcbiAgICAgIGxcblxuKCoqKiopXG5cbnR5cGUgcmVnZXhwID1cbiAgICBTZXQgb2YgQ3NldC50XG4gIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbm1vZHVsZSBWaWV3ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlZ2V4cCA9XG4gICAgICBTZXQgb2YgQ3NldC50XG4gICAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICAgIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgICB8IFJlcGVhdCBvZiByZWdleHAgKiBpbnQgKiBpbnQgb3B0aW9uXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICAgIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICAgIHwgU2VtX2dyZWVkeSBvZiBBdXRvbWF0YS5yZXBfa2luZCAqIHJlZ2V4cFxuICAgIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gICAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gICAgfCBJbnRlcnNlY3Rpb24gb2YgcmVnZXhwIGxpc3RcbiAgICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gICAgfCBQbWFyayBvZiBQbWFyay50ICogcmVnZXhwXG5cbiAgbGV0IHZpZXcgdCA9IHRcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCB0ID1cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCB2YXIgcyByZSA9IHNleHAgZm10IHMgcHAgcmUgaW5cbiAgbGV0IHNlcSBzIHJlbCA9IHNleHAgZm10IHMgKGxpc3QgcHApIHJlbCBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXQgcyAtPiAgc2V4cCBmbXQgXCJTZXRcIiBDc2V0LnBwIHNcbiAgfCBTZXF1ZW5jZSBzcSAtPiBzZXEgXCJTZXF1ZW5jZVwiIHNxXG4gIHwgQWx0ZXJuYXRpdmUgYWx0IC0+IHNlcSBcIkFsdGVybmF0aXZlXCIgYWx0XG4gIHwgUmVwZWF0IChyZSwgc3RhcnQsIHN0b3ApIC0+XG4gICAgbGV0IHBwJyBmbXQgKCkgPSBmcHJpbnRmIGZtdCBcIiVhQCAlZCVhXCIgcHAgcmUgICBzdGFydCAgIG9wdGludCBzdG9wIGluXG4gICAgc2V4cCBmbXQgXCJSZXBlYXRcIiBwcCcgKClcbiAgfCBCZWdfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2ZfbGluZVwiXG4gIHwgRW5kX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX2xpbmVcIlxuICB8IEJlZ19vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl93b3JkXCJcbiAgfCBFbmRfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfd29yZFwiXG4gIHwgTm90X2JvdW5kICAgICAgICAtPiBzdHIgZm10IFwiTm90X2JvdW5kXCJcbiAgfCBCZWdfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfc3RyXCJcbiAgfCBFbmRfb2Zfc3RyICAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2Zfc3RyXCJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+IHN0ciBmbXQgXCJMYXN0X2VuZF9vZl9saW5lXCJcbiAgfCBTdGFydCAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdGFydFwiXG4gIHwgU3RvcCAgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RvcFwiXG4gIHwgU2VtIChzZW0sIHJlKSAgICAtPlxuICAgIHNleHAgZm10IFwiU2VtXCIgKHBhaXIgQXV0b21hdGEucHBfc2VtIHBwKSAoc2VtLCByZSlcbiAgfCBTZW1fZ3JlZWR5IChrLCByZSkgLT5cbiAgICBzZXhwIGZtdCBcIlNlbV9ncmVlZHlcIiAocGFpciBBdXRvbWF0YS5wcF9yZXBfa2luZCBwcCkgKGssIHJlKVxuICB8IEdyb3VwIChOb25lLCBjKSAgIC0+IHZhciBcIkdyb3VwXCIgY1xuICB8IEdyb3VwIChTb21lIG4sIGMpIC0+IHNleHAgZm10IFwiTmFtZWRfZ3JvdXBcIiAocGFpciBzdHIgcHApIChuLCBjKVxuICB8IE5vX2dyb3VwIGMgICAgIC0+IHZhciBcIk5vX2dyb3VwXCIgY1xuICB8IE5lc3QgYyAgICAgICAgIC0+IHZhciBcIk5lc3RcIiBjXG4gIHwgQ2FzZSBjICAgICAgICAgLT4gdmFyIFwiQ2FzZVwiIGNcbiAgfCBOb19jYXNlIGMgICAgICAtPiB2YXIgXCJOb19jYXNlXCIgY1xuICB8IEludGVyc2VjdGlvbiBjIC0+IHNlcSBcIkludGVyc2VjdGlvblwiIGNcbiAgfCBDb21wbGVtZW50IGMgICAtPiBzZXEgXCJDb21wbGVtZW50XCIgY1xuICB8IERpZmZlcmVuY2UgKGEsIGIpIC0+IHNleHAgZm10IFwiRGlmZmVyZW5jZVwiIChwYWlyIHBwIHBwKSAoYSwgYilcbiAgfCBQbWFyayAobSwgcikgICAgICAtPiBzZXhwIGZtdCBcIlBtYXJrXCIgKHBhaXIgUG1hcmsucHAgcHApIChtLCByKVxuXG5sZXQgcmVjIGlzX2NoYXJzZXQgPSBmdW5jdGlvblxuICB8IFNldCBfIC0+XG4gICAgdHJ1ZVxuICB8IEFsdGVybmF0aXZlIGwgfCBJbnRlcnNlY3Rpb24gbCB8IENvbXBsZW1lbnQgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBpc19jaGFyc2V0IGxcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBpc19jaGFyc2V0IHIgJiYgaXNfY2hhcnNldCByJ1xuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKVxuICB8IE5vX2dyb3VwIHIgfCBDYXNlIHIgfCBOb19jYXNlIHIgLT5cbiAgICBpc19jaGFyc2V0IHJcbiAgfCBTZXF1ZW5jZSBfIHwgUmVwZWF0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTm90X2JvdW5kIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IEdyb3VwIF8gfCBOZXN0IF8gfCBQbWFyayAoXyxfKS0+XG4gICAgZmFsc2VcblxuKCpYWFggVXNlIGEgYmV0dGVyIGFsZ29yaXRobSBhbGxvd2luZyBub24tY29udGlndW91cyByZWdpb25zPyAqKVxuXG5sZXQgY3VwcGVyID1cbiAgQ3NldC51bmlvbiAoY3NlcSAnQScgJ1onKVxuICAgIChDc2V0LnVuaW9uIChjc2VxICdcXDE5MicgJ1xcMjE0JykgKGNzZXEgJ1xcMjE2JyAnXFwyMjInKSlcbmxldCBjbG93ZXIgPSBDc2V0Lm9mZnNldCAzMiBjdXBwZXJcbmxldCBjYWxwaGEgPVxuICBMaXN0LmZvbGRfcmlnaHQgY2FkZCBbJ1xcMTcwJzsgJ1xcMTgxJzsgJ1xcMTg2JzsgJ1xcMjIzJzsgJ1xcMjU1J11cbiAgICAoQ3NldC51bmlvbiBjbG93ZXIgY3VwcGVyKVxubGV0IGNkaWdpdCA9IGNzZXEgJzAnICc5J1xubGV0IGNhbG51bSA9IENzZXQudW5pb24gY2FscGhhIGNkaWdpdFxubGV0IGN3b3JkID0gY2FkZCAnXycgY2FsbnVtXG5cbmxldCBjb2xvcml6ZSBjIHJlZ2V4cCA9XG4gIGxldCBsbmwgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBjb2xvcml6ZSByZWdleHAgPVxuICAgIG1hdGNoIHJlZ2V4cCB3aXRoXG4gICAgICBTZXQgcyAgICAgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBzIGNcbiAgICB8IFNlcXVlbmNlIGwgICAgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IEFsdGVybmF0aXZlIGwgICAgICAgICAgICAgLT4gTGlzdC5pdGVyIGNvbG9yaXplIGxcbiAgICB8IFJlcGVhdCAociwgXywgXykgICAgICAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSAtPiBDb2xvcl9tYXAuc3BsaXQgKENzZXQuY3NpbmdsZSAnXFxuJykgY1xuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgY3dvcmQgY1xuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IFN0YXJ0IHwgU3RvcCAgICAgICAgICAgICAgLT4gKClcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgICAgICAgICAgLT4gbG5sIDo9IHRydWVcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gICAgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHIgfCBQbWFyayAoXyxyKSAgICAgLT4gY29sb3JpemUgclxuICAgIHwgQ2FzZSBfIHwgTm9fY2FzZSBfXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIF8gICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBjb2xvcml6ZSByZWdleHA7XG4gICFsbmxcblxuKCoqKiogQ29tcGlsYXRpb24gKioqKilcblxubGV0IHJlYyBlcXVhbCB4MSB4MiA9XG4gIG1hdGNoIHgxLCB4MiB3aXRoXG4gICAgU2V0IHMxLCBTZXQgczIgLT5cbiAgICBzMSA9IHMyXG4gIHwgU2VxdWVuY2UgbDEsIFNlcXVlbmNlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IEFsdGVybmF0aXZlIGwxLCBBbHRlcm5hdGl2ZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBSZXBlYXQgKHgxJywgaTEsIGoxKSwgUmVwZWF0ICh4MicsIGkyLCBqMikgLT5cbiAgICBpMSA9IGkyICYmIGoxID0gajIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEJlZ19vZl9saW5lLCBCZWdfb2ZfbGluZVxuICB8IEVuZF9vZl9saW5lLCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkLCBCZWdfb2Zfd29yZFxuICB8IEVuZF9vZl93b3JkLCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciwgQmVnX29mX3N0clxuICB8IEVuZF9vZl9zdHIsIEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lLCBMYXN0X2VuZF9vZl9saW5lXG4gIHwgU3RhcnQsIFN0YXJ0XG4gIHwgU3RvcCwgU3RvcCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKHNlbTEsIHgxJyksIFNlbSAoc2VtMiwgeDInKSAtPlxuICAgIHNlbTEgPSBzZW0yICYmIGVxdWFsIHgxJyB4MidcbiAgfCBTZW1fZ3JlZWR5IChrMSwgeDEnKSwgU2VtX2dyZWVkeSAoazIsIHgyJykgLT5cbiAgICBrMSA9IGsyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBHcm91cCBfLCBHcm91cCBfIC0+ICgqIERvIG5vdCBtZXJnZSBncm91cHMhICopXG4gICAgZmFsc2VcbiAgfCBOb19ncm91cCB4MScsIE5vX2dyb3VwIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOZXN0IHgxJywgTmVzdCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgQ2FzZSB4MScsIENhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5vX2Nhc2UgeDEnLCBOb19jYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBJbnRlcnNlY3Rpb24gbDEsIEludGVyc2VjdGlvbiBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBDb21wbGVtZW50IGwxLCBDb21wbGVtZW50IGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IERpZmZlcmVuY2UgKHgxJywgeDEnJyksIERpZmZlcmVuY2UgKHgyJywgeDInJykgLT5cbiAgICBlcXVhbCB4MScgeDInICYmIGVxdWFsIHgxJycgeDInJ1xuICB8IFBtYXJrIChtMSwgcjEpLCBQbWFyayAobTIsIHIyKSAtPlxuICAgIFBtYXJrLmVxdWFsIG0xIG0yICYmIGVxdWFsIHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmFuZCBlcV9saXN0IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICBbXSwgW10gLT5cbiAgICB0cnVlXG4gIHwgeDEgOjogcjEsIHgyIDo6IHIyIC0+XG4gICAgZXF1YWwgeDEgeDIgJiYgZXFfbGlzdCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgc2VxdWVuY2UgPSBmdW5jdGlvblxuICB8IFt4XSAtPiB4XG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IHJlYyBtZXJnZV9zZXF1ZW5jZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgW11cbiAgfCBBbHRlcm5hdGl2ZSBsJyA6OiByIC0+XG4gICAgbWVyZ2Vfc2VxdWVuY2VzIChsJyBAIHIpXG4gIHwgU2VxdWVuY2UgKHggOjogeSkgOjogciAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyByIHdpdGhcbiAgICAgICAgU2VxdWVuY2UgKHgnIDo6IHknKSA6OiByJyB3aGVuIGVxdWFsIHggeCcgLT5cbiAgICAgICAgU2VxdWVuY2UgW3g7IEFsdGVybmF0aXZlIFtzZXF1ZW5jZSB5OyBzZXF1ZW5jZSB5J11dIDo6IHInXG4gICAgICB8IHInIC0+XG4gICAgICAgIFNlcXVlbmNlICh4IDo6IHkpIDo6IHInXG4gICAgZW5kXG4gIHwgeCA6OiByIC0+XG4gICAgeCA6OiBtZXJnZV9zZXF1ZW5jZXMgclxuXG5tb2R1bGUgQSA9IEF1dG9tYXRhXG5cbmxldCBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IgPVxuICBtYXRjaCBraW5kLCBraW5kJyB3aXRoXG4gICAgYEZpcnN0LCBgRmlyc3QgLT4gY3JcbiAgfCBgRmlyc3QsIGsgICAgICAgLT4gQS5zZXEgaWRzIGsgY3IgKEEuZXBzIGlkcylcbiAgfCAgXyAgICAgICAgICAgICAgIC0+IGNyXG5cbigqIFhYWCBzaG91bGQgcHJvYmFibHkgY29tcHV0ZSBhIGNhdGVnb3J5IG1hc2sgKilcbmxldCByZWMgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgKEEuY3N0IGlkcyAodHJhbnNfc2V0IGNhY2hlIGMgcyksIGtpbmQpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgICh0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyBsLCBraW5kKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgbCB3aXRoXG4gICAgICAgIFtyJ10gLT5cbiAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyLCBraW5kKVxuICAgICAgfCBtZXJnZWRfc2VxdWVuY2VzIC0+XG4gICAgICAgIChBLmFsdCBpZHNcbiAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgIChmdW4gcicgLT5cbiAgICAgICAgICAgICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeVxuICAgICAgICAgICAgICAgICAgICAgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgICAgICAgICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyKVxuICAgICAgICAgICAgICBtZXJnZWRfc2VxdWVuY2VzKSxcbiAgICAgICAgIGtpbmQpXG4gICAgZW5kXG4gIHwgUmVwZWF0IChyJywgaSwgaikgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICBsZXQgcmVtID1cbiAgICAgIG1hdGNoIGogd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgIEEucmVwIGlkcyBncmVlZHkga2luZCcgY3JcbiAgICAgIHwgU29tZSBqIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBtYXRjaCBncmVlZHkgd2l0aFxuICAgICAgICAgICAgYEdyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbTsgQS5lcHMgaWRzXVxuICAgICAgICAgIHwgYE5vbl9ncmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0EuZXBzIGlkczsgQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbV1cbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoaiAtIGkpIGYgKEEuZXBzIGlkcylcbiAgICBpblxuICAgIChpdGVyIGkgKGZ1biByZW0gLT4gQS5zZXEgaWRzIGtpbmQnIChBLnJlbmFtZSBpZHMgY3IpIHJlbSkgcmVtLCBraW5kKVxuICB8IEJlZ19vZl9saW5lIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEVuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBCZWdfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKSxcbiAgICAga2luZClcbiAgfCBFbmRfb2Zfd29yZCAtPlxuICAgIChBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKSxcbiAgICAga2luZClcbiAgfCBOb3RfYm91bmQgLT5cbiAgICAoQS5hbHQgaWRzIFtBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpO1xuICAgICAgICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXSxcbiAgICAga2luZClcbiAgfCBCZWdfb2Zfc3RyIC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgRW5kX29mX3N0ciAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBMYXN0X2VuZF9vZl9saW5lIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBsYXN0bmV3bGluZSksIGtpbmQpXG4gIHwgU3RhcnQgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFN0b3AgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTZW0gKGtpbmQnLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJycpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCcgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQnIGtpbmQnJyBjcixcbiAgICAga2luZCcpXG4gIHwgU2VtX2dyZWVkeSAoZ3JlZWR5JywgcicpIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHknIHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgR3JvdXAgKG4sIHInKSAtPlxuICAgIGlmIGlnbl9ncm91cCB0aGVuXG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGVsc2VcbiAgICAgIGxldCBwID0gIXBvcyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWVzIDo9IChuYW1lLCBwIC8gMikgOjogIW5hbWVzXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgaW5cbiAgICAgIHBvcyA6PSAhcG9zICsgMjtcbiAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5tYXJrIGlkcyBwKSAoXG4gICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdCBjciAoQS5tYXJrIGlkcyAocCArIDEpKSksXG4gICAgICAga2luZCcpXG4gIHwgTm9fZ3JvdXAgcicgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgdHJ1ZSBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBOZXN0IHInIC0+XG4gICAgbGV0IGIgPSAhcG9zIGluXG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgaW5cbiAgICBsZXQgZSA9ICFwb3MgLSAxIGluXG4gICAgaWYgZSA8IGIgdGhlblxuICAgICAgKGNyLCBraW5kJylcbiAgICBlbHNlXG4gICAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5lcmFzZSBpZHMgYiBlKSBjciwga2luZCcpXG4gIHwgRGlmZmVyZW5jZSBfIHwgQ29tcGxlbWVudCBfIHwgSW50ZXJzZWN0aW9uIF8gfCBOb19jYXNlIF8gfCBDYXNlIF8gLT5cbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBQbWFyayAoaSwgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEucG1hcmsgaWRzIGkpIGNyLCBraW5kJylcblxuYW5kIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEEuZXBzIGlkc1xuICB8IFtyXSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcidcbiAgfCByIDo6IHJlbSAtPlxuICAgIGxldCAoY3InLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgciBpblxuICAgIGxldCBjcicnID1cbiAgICAgIHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHJlbSBpblxuICAgIGlmIEEuaXNfZXBzIGNyJycgdGhlblxuICAgICAgY3InXG4gICAgZWxzZSBpZiBBLmlzX2VwcyBjcicgdGhlblxuICAgICAgY3InJ1xuICAgIGVsc2VcbiAgICAgIEEuc2VxIGlkcyBraW5kJyBjcicgY3InJ1xuXG4oKioqKiBDYXNlICoqKiopXG5cbmxldCBjYXNlX2luc2VucyBzID1cbiAgQ3NldC51bmlvbiBzIChDc2V0LnVuaW9uIChDc2V0Lm9mZnNldCAzMiAoQ3NldC5pbnRlciBzIGN1cHBlcikpXG4gICAgICAgICAgICAgICAgICAoQ3NldC5vZmZzZXQgKC0zMikgKENzZXQuaW50ZXIgcyBjbG93ZXIpKSlcblxubGV0IGFzX3NldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT4gc1xuICB8IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBYWFggU2hvdWxkIHNwbGl0IGFsdGVybmF0aXZlcyBpbnRvICgxKSBjaGFyc2V0cyBhbmQgKDIpIG1vcmVcbiAgIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9uczsgYWx0ZXJuYXRpdmUgc2hvdWxkIHRoZXJlZm9yZSBwcm9iYWJseVxuICAgYmUgZmxhdHRlbiBoZXJlICopXG5sZXQgcmVjIGhhbmRsZV9jYXNlIGlnbl9jYXNlID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIFNldCAoaWYgaWduX2Nhc2UgdGhlbiBjYXNlX2luc2VucyBzIGVsc2UgcylcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgU2VxdWVuY2UgKExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsIGluXG4gICAgaWYgaXNfY2hhcnNldCAoQWx0ZXJuYXRpdmUgbCcpIHRoZW5cbiAgICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpIENzZXQuZW1wdHkgbCcpXG4gICAgZWxzZVxuICAgICAgQWx0ZXJuYXRpdmUgbCdcbiAgfCBSZXBlYXQgKHIsIGksIGopIC0+XG4gICAgUmVwZWF0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByLCBpLCBqKVxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wIGFzIHIgLT5cbiAgICByXG4gIHwgU2VtIChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW0gKGssIHInKVxuICB8IFNlbV9ncmVlZHkgKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbV9ncmVlZHkgKGssIHInKVxuICB8IEdyb3VwIChuLCByKSAtPlxuICAgIEdyb3VwIChuLCBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuICB8IE5vX2dyb3VwIHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTm9fZ3JvdXAgcidcbiAgfCBOZXN0IHIgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgTmVzdCByJ1xuICB8IENhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIGZhbHNlIHJcbiAgfCBOb19jYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSB0cnVlIHJcbiAgfCBJbnRlcnNlY3Rpb24gbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LmludGVyIHMgKGFzX3NldCByKSkgQ3NldC5jYW55IGwnKVxuICB8IENvbXBsZW1lbnQgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChmdW4gciAtPiBoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSBsIGluXG4gICAgU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55XG4gICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSlcbiAgICAgICAgICAgICAgQ3NldC5lbXB0eSBsJykpXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgU2V0IChDc2V0LmludGVyIChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpKVxuICAgICAgICAgICAoQ3NldC5kaWZmIENzZXQuY2FueSAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByJykpKSlcbiAgfCBQbWFyayAoaSxyKSAtPiBQbWFyayAoaSxoYW5kbGVfY2FzZSBpZ25fY2FzZSByKVxuXG4oKioqKilcblxubGV0IGNvbXBpbGVfMSByZWdleHAgPVxuICBsZXQgcmVnZXhwID0gaGFuZGxlX2Nhc2UgZmFsc2UgcmVnZXhwIGluXG4gIGxldCBjID0gQ29sb3JfbWFwLm1ha2UgKCkgaW5cbiAgbGV0IG5lZWRfbG5sID0gY29sb3JpemUgYyByZWdleHAgaW5cbiAgbGV0IChjb2xvcnMsIGNvbG9yX3JlcHIsIG5jb2xvcikgPSBDb2xvcl9tYXAuZmxhdHRlbiBjIGluXG4gIGxldCBsbmwgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciBlbHNlIC0xIGluXG4gIGxldCBuY29sb3IgPSBpZiBuZWVkX2xubCB0aGVuIG5jb2xvciArIDEgZWxzZSBuY29sb3IgaW5cbiAgbGV0IGlkcyA9IEEuY3JlYXRlX2lkcyAoKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IG5hbWVzID0gcmVmIFtdIGluXG4gIGxldCAociwga2luZCkgPVxuICAgIHRyYW5zbGF0ZSBpZHNcbiAgICAgIGBGaXJzdCBmYWxzZSBmYWxzZSBgR3JlZWR5IHBvcyBuYW1lcyAocmVmIENzZXQuQ1NldE1hcC5lbXB0eSkgY29sb3JzIHJlZ2V4cCBpblxuICBsZXQgciA9IGVuZm9yY2Vfa2luZCBpZHMgYEZpcnN0IGtpbmQgciBpblxuICAoKkZvcm1hdC5lcHJpbnRmIFwiPCVkICVkPkAuXCIgIWlkcyBuY29sOyopXG4gIG1rX3JlIH5pbml0aWFsOnIgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzOihMaXN0LnJldiAhbmFtZXMpIH5ncm91cF9jb3VudDooIXBvcyAvIDIpXG5cbigqKioqKVxuXG5sZXQgcmVjIGFuY2hvcmVkID0gZnVuY3Rpb25cbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgTGlzdC5leGlzdHMgYW5jaG9yZWQgbFxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgYW5jaG9yZWQgbFxuICB8IFJlcGVhdCAociwgaSwgXykgLT5cbiAgICBpID4gMCAmJiBhbmNob3JlZCByXG4gIHwgU2V0IF8gfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZFxuICB8IE5vdF9ib3VuZCB8IEVuZF9vZl9zdHIgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RvcFxuICB8IEludGVyc2VjdGlvbiBfIHwgQ29tcGxlbWVudCBfIHwgRGlmZmVyZW5jZSBfIC0+XG4gICAgZmFsc2VcbiAgfCBCZWdfb2Zfc3RyIHwgU3RhcnQgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgciB8IE5lc3QgclxuICB8IENhc2UgciB8IE5vX2Nhc2UgciB8IFBtYXJrIChfLCByKSAtPlxuICAgIGFuY2hvcmVkIHJcblxuKCoqKiopXG5cbnR5cGUgdCA9IHJlZ2V4cFxuXG5sZXQgc3RyIHMgPVxuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IFNldCAoQ3NldC5jc2luZ2xlIHMuW2ldKSA6OiAhbFxuICBkb25lO1xuICBTZXF1ZW5jZSAhbFxubGV0IGNoYXIgYyA9IFNldCAoQ3NldC5jc2luZ2xlIGMpXG5cbmxldCBhbHQgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IEFsdGVybmF0aXZlIGxcbmxldCBzZXEgPSBmdW5jdGlvblxuICB8IFtyXSAtPiByXG4gIHwgbCAgIC0+IFNlcXVlbmNlIGxcblxubGV0IGVtcHR5ID0gYWx0IFtdXG5sZXQgZXBzaWxvbiA9IHNlcSBbXVxubGV0IHJlcG4gciBpIGogPVxuICBpZiBpIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwblwiO1xuICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICB8IFNvbWUgaiB3aGVuIGogPCBpIC0+IGludmFsaWRfYXJnIFwiUmUucmVwblwiXG4gICAgfCBfIC0+ICgpXG4gIGVuZDtcbiAgUmVwZWF0IChyLCBpLCBqKVxubGV0IHJlcCByID0gcmVwbiByIDAgTm9uZVxubGV0IHJlcDEgciA9IHJlcG4gciAxIE5vbmVcbmxldCBvcHQgciA9IHJlcG4gciAwIChTb21lIDEpXG5sZXQgYm9sID0gQmVnX29mX2xpbmVcbmxldCBlb2wgPSBFbmRfb2ZfbGluZVxubGV0IGJvdyA9IEJlZ19vZl93b3JkXG5sZXQgZW93ID0gRW5kX29mX3dvcmRcbmxldCB3b3JkIHIgPSBzZXEgW2JvdzsgcjsgZW93XVxubGV0IG5vdF9ib3VuZGFyeSA9IE5vdF9ib3VuZFxubGV0IGJvcyA9IEJlZ19vZl9zdHJcbmxldCBlb3MgPSBFbmRfb2Zfc3RyXG5sZXQgd2hvbGVfc3RyaW5nIHIgPSBzZXEgW2JvczsgcjsgZW9zXVxubGV0IGxlb2wgPSBMYXN0X2VuZF9vZl9saW5lXG5sZXQgc3RhcnQgPSBTdGFydFxubGV0IHN0b3AgPSBTdG9wXG5sZXQgbG9uZ2VzdCByID0gU2VtIChgTG9uZ2VzdCwgcilcbmxldCBzaG9ydGVzdCByID0gU2VtIChgU2hvcnRlc3QsIHIpXG5sZXQgZmlyc3QgciA9IFNlbSAoYEZpcnN0LCByKVxubGV0IGdyZWVkeSByID0gU2VtX2dyZWVkeSAoYEdyZWVkeSwgcilcbmxldCBub25fZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgTm9uX2dyZWVkeSwgcilcbmxldCBncm91cCA/bmFtZSByID0gR3JvdXAgKG5hbWUsIHIpXG5sZXQgbm9fZ3JvdXAgciA9IE5vX2dyb3VwIHJcbmxldCBuZXN0IHIgPSBOZXN0IHJcbmxldCBtYXJrIHIgPSBsZXQgaSA9IFBtYXJrLmdlbiAoKSBpbiAoaSxQbWFyayAoaSxyKSlcblxubGV0IHNldCBzdHIgPVxuICBsZXQgcyA9IHJlZiBDc2V0LmVtcHR5IGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBzIDo9IENzZXQudW5pb24gKENzZXQuY3NpbmdsZSBzdHIuW2ldKSAhc1xuICBkb25lO1xuICBTZXQgIXNcblxubGV0IHJnIGMgYycgPSBTZXQgKGNzZXEgYyBjJylcblxubGV0IGludGVyIGwgPVxuICBsZXQgciA9IEludGVyc2VjdGlvbiBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5pbnRlclwiXG5cbmxldCBjb21wbCBsID1cbiAgbGV0IHIgPSBDb21wbGVtZW50IGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmNvbXBsXCJcblxubGV0IGRpZmYgciByJyA9XG4gIGxldCByJycgPSBEaWZmZXJlbmNlIChyLCByJykgaW5cbiAgaWYgaXNfY2hhcnNldCByJycgdGhlblxuICAgIHInJ1xuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5kaWZmXCJcblxubGV0IGFueSA9IFNldCBDc2V0LmNhbnlcbmxldCBub3RubCA9IFNldCAoQ3NldC5kaWZmIENzZXQuY2FueSAoQ3NldC5jc2luZ2xlICdcXG4nKSlcblxubGV0IGxvd2VyID0gYWx0IFtyZyAnYScgJ3onOyBjaGFyICdcXDE4MSc7IHJnICdcXDIyMycgJ1xcMjQ2JzsgcmcgJ1xcMjQ4JyAnXFwyNTUnXVxubGV0IHVwcGVyID0gYWx0IFtyZyAnQScgJ1onOyByZyAnXFwxOTInICdcXDIxNCc7IHJnICdcXDIxNicgJ1xcMjIyJ11cbmxldCBhbHBoYSA9IGFsdCBbbG93ZXI7IHVwcGVyOyBjaGFyICdcXDE3MCc7IGNoYXIgJ1xcMTg2J11cbmxldCBkaWdpdCA9IHJnICcwJyAnOSdcbmxldCBhbG51bSA9IGFsdCBbYWxwaGE7IGRpZ2l0XVxubGV0IHdvcmRjID0gYWx0IFthbG51bTsgY2hhciAnXyddXG5sZXQgYXNjaWkgPSByZyAnXFwwMDAnICdcXDEyNydcbmxldCBibGFuayA9IHNldCBcIlxcdCBcIlxubGV0IGNudHJsID0gYWx0IFtyZyAnXFwwMDAnICdcXDAzMSc7IHJnICdcXDEyNycgJ1xcMTU5J11cbmxldCBncmFwaCA9IGFsdCBbcmcgJ1xcMDMzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHJpbnQgPSBhbHQgW3JnICdcXDAzMicgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHB1bmN0ID1cbiAgYWx0IFtyZyAnXFwwMzMnICdcXDA0Nyc7IHJnICdcXDA1OCcgJ1xcMDY0JzsgcmcgJ1xcMDkxJyAnXFwwOTYnO1xuICAgICAgIHJnICdcXDEyMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwxNjknOyByZyAnXFwxNzEnICdcXDE4MCc7XG4gICAgICAgcmcgJ1xcMTgyJyAnXFwxODUnOyByZyAnXFwxODcnICdcXDE5MSc7IGNoYXIgJ1xcMjE1JzsgY2hhciAnXFwyNDcnXVxubGV0IHNwYWNlID0gYWx0IFtjaGFyICcgJzsgcmcgJ1xcMDA5JyAnXFwwMTMnXVxubGV0IHhkaWdpdCA9IGFsdCBbZGlnaXQ7IHJnICdhJyAnZic7IHJnICdBJyAnRiddXG5cbmxldCBjYXNlIHIgPSBDYXNlIHJcbmxldCBub19jYXNlIHIgPSBOb19jYXNlIHJcblxuKCoqKiopXG5cbmxldCBjb21waWxlIHIgPVxuICBjb21waWxlXzEgKFxuICAgIGlmIGFuY2hvcmVkIHIgdGhlblxuICAgICAgZ3JvdXAgclxuICAgIGVsc2VcbiAgICAgIHNlcSBbc2hvcnRlc3QgKHJlcCBhbnkpOyBncm91cCByXVxuICApXG5cbmxldCBleGVjX2ludGVybmFsIG5hbWUgPyhwb3M9MCkgPyhsZW4gPSAtMSkgfnBhcnRpYWwgfmdyb3VwcyByZSBzID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAtMSB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIG5hbWU7XG4gIG1hdGNoX3N0ciB+Z3JvdXBzIH5wYXJ0aWFsIHJlIHMgfnBvcyB+bGVuXG5cbmxldCBleGVjID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBleGVjX29wdCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjX29wdFwiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2VcbiAgICAgICAgICByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gU29tZSBzdWJzdHJcbiAgfCBfICAgICAgICAgICAgLT4gTm9uZVxuXG5sZXQgZXhlY3AgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6ZmFsc2UgXCJSZS5leGVjcFwiID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfc3Vic3RyIC0+IHRydWVcbiAgfCBfICAgICAgICAgICAgIC0+IGZhbHNlXG5cbmxldCBleGVjX3BhcnRpYWwgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6ZmFsc2UgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF8gLT4gYEZ1bGxcbiAgfCBSdW5uaW5nIF8gLT4gYFBhcnRpYWxcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5sZXQgZXhlY19wYXJ0aWFsX2RldGFpbGVkID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6dHJ1ZSBcIlJlLmV4ZWNfcGFydGlhbF9kZXRhaWxlZFwiXG4gICAgICAgICAgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIGdyb3VwIC0+IGBGdWxsIGdyb3VwXG4gIHwgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfSAtPiBgUGFydGlhbCBub19tYXRjaF9zdGFydHNfYmVmb3JlXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubW9kdWxlIE1hcmsgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBQbWFyay50XG5cbiAgbGV0IHRlc3QgKGcgOiBHcm91cC50KSBwID1cbiAgICBQbWFyay5TZXQubWVtIHAgZy5wbWFya3NcblxuICBsZXQgYWxsIChnIDogR3JvdXAudCkgPSBnLnBtYXJrc1xuXG4gIG1vZHVsZSBTZXQgPSBQbWFyay5TZXRcblxuICBsZXQgZXF1YWwgPSBQbWFyay5lcXVhbFxuXG4gIGxldCBjb21wYXJlID0gUG1hcmsuY29tcGFyZVxuXG5lbmRcblxudHlwZSBzcGxpdF90b2tlbiA9XG4gIFsgYFRleHQgb2Ygc3RyaW5nXG4gIHwgYERlbGltIG9mIEdyb3VwLnRcbiAgXVxuXG5tb2R1bGUgUnNlcSA9IHN0cnVjdFxuICBsZXQgYWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICgqIGluZGV4IG9mIHRoZSBmaXJzdCBwb3NpdGlvbiB3ZSBkbyBub3QgY29uc2lkZXIuXG4gICAgICAgIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCAqKVxuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLmFsbFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaXRlcmF0ZSBvbiBtYXRjaGVzLiBXaGVuIGEgbWF0Y2ggaXMgZm91bmQsIHNlYXJjaCBmb3IgdGhlIG5leHRcbiAgICAgICBvbmUganVzdCBhZnRlciBpdHMgZW5kICopXG4gICAgbGV0IHJlYyBhdXggcG9zICgpID1cbiAgICAgIGlmIHBvcyA+PSBsaW1pdFxuICAgICAgdGhlbiBTZXEuTmlsICgqIG5vIG1vcmUgbWF0Y2hlcyAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHNcbiAgICAgICAgICAgICAgICB+cG9zIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIFNlcS5Db25zIChzdWJzdHIsIGF1eCBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfXG4gICAgICAgIHwgRmFpbGVkIC0+IFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCBwb3NcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGFsbCA/cG9zID9sZW4gcmUgc1xuICAgIHw+IFNlcS5tYXAgKGZ1biBzdWIgLT4gR3JvdXAuZ2V0IHN1YiAwKVxuXG4gIGxldCBzcGxpdF9mdWxsID8ocG9zPTApID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGk6IHN0YXJ0IG9mIGRlbGltaXRlZCBzdHJpbmdcbiAgICAgICBwb3M6IGZpcnN0IHBvc2l0aW9uIGFmdGVyIGxhc3QgbWF0Y2ggb2YgW3JlXVxuICAgICAgIGxpbWl0OiBmaXJzdCBpbmRleCB3ZSBpZ25vcmUgKCFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQpICopXG4gICAgbGV0IHBvczAgPSBwb3MgaW5cbiAgICBsZXQgcmVjIGF1eCBzdGF0ZSBpIHBvcyAoKSA9IG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgYElkbGUgd2hlbiBwb3MgPj0gbGltaXQgLT5cbiAgICAgICAgaWYgaSA8IGxpbWl0IHRoZW4gKFxuICAgICAgICAgIGxldCBzdWIgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgIFNlcS5Db25zIChgVGV4dCBzdWIsIGF1eCBzdGF0ZSAoaSsxKSBwb3MpXG4gICAgICAgICkgZWxzZSBTZXEuTmlsXG4gICAgICB8IGBJZGxlIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgbGV0IG9sZF9pID0gaSBpblxuICAgICAgICAgIGxldCBpID0gcDIgaW5cbiAgICAgICAgICBpZiBwMSA+IHBvczAgdGhlbiAoXG4gICAgICAgICAgICAoKiBzdHJpbmcgZG9lcyBub3Qgc3RhcnQgYnkgYSBkZWxpbWl0ZXIgKilcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIG9sZF9pIChwMSAtIG9sZF9pKSBpblxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYFlpZWxkIChgRGVsaW0gc3Vic3RyKSBpblxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgICApIGVsc2UgU2VxLkNvbnMgKGBEZWxpbSBzdWJzdHIsIGF1eCBzdGF0ZSBpIHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF8gLT4gU2VxLk5pbFxuICAgICAgICB8IEZhaWxlZCAtPlxuICAgICAgICAgIGlmIGkgPCBsaW1pdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgaSAobGltaXQgLSBpKSBpblxuICAgICAgICAgICAgKCogeWllbGQgbGFzdCBzdHJpbmcgKilcbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgbGltaXQgcG9zKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICBlbmRcbiAgICAgIHwgYFlpZWxkIHggLT5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCBgSWRsZSBpIHBvcylcbiAgICBpblxuICAgIGF1eCBgSWRsZSBwb3MgcG9zXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgbGV0IHNlcSA9IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgaW5cbiAgICBsZXQgcmVjIGZpbHRlciBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBTZXEuTmlsXG4gICAgICB8IFNlcS5Db25zIChgRGVsaW0gXywgdGwpIC0+IGZpbHRlciB0bCAoKVxuICAgICAgfCBTZXEuQ29ucyAoYFRleHQgcyx0bCkgLT4gU2VxLkNvbnMgKHMsIGZpbHRlciB0bClcbiAgICBpbiBmaWx0ZXIgc2VxXG5lbmRcblxubW9kdWxlIFJsaXN0ID0gc3RydWN0XG4gIGxldCBsaXN0X29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBsaXN0ID1cbiAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbCB4IC0+IHggOjogbCkgW10gcyB8PiBMaXN0LnJldlxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5lbmRcblxubW9kdWxlIEdlbiA9IHN0cnVjdFxuICB0eXBlICdhIGdlbiA9IHVuaXQgLT4gJ2Egb3B0aW9uXG4gIGxldCBnZW5fb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGdlbiA9XG4gICAgbGV0IHIgPSByZWYgcyBpblxuICAgIGZ1biAoKSAtPiBtYXRjaCAhciAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgICAgfCBTZXEuQ29ucyAoeCwgdGwpIC0+XG4gICAgICAgIHIgOj0gdGw7XG4gICAgICAgIFNvbWUgeFxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0ID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA6IF8gZ2VuID1cbiAgICBSc2VxLnNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBhbGwgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLmFsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuZW5kXG5cbmxldCByZXBsYWNlID8ocG9zPTApID9sZW4gPyhhbGw9dHJ1ZSkgcmUgfmYgcyA9XG4gIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICAgICAgcG9zK2xcbiAgaW5cbiAgKCogYnVmZmVyIGludG8gd2hpY2ggd2Ugd3JpdGUgdGhlIHJlc3VsdCAqKVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAoKiBpdGVyYXRlIG9uIG1hdGNoZWQgc3Vic3RyaW5ncy4gKilcbiAgbGV0IHJlYyBpdGVyIHBvcyA9XG4gICAgaWYgcG9zIDwgbGltaXRcbiAgICB0aGVuXG4gICAgICBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvcyB+bGVuOihsaW1pdC1wb3MpIHdpdGhcbiAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgKCogYWRkIHN0cmluZyBiZXR3ZWVuIHByZXZpb3VzIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAocDEtcG9zKTtcbiAgICAgICAgKCogd2hhdCBzaG91bGQgd2UgcmVwbGFjZSB0aGUgbWF0Y2hlZCBncm91cCB3aXRoPyAqKVxuICAgICAgICBsZXQgcmVwbGFjaW5nID0gZiBzdWJzdHIgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHJlcGxhY2luZztcbiAgICAgICAgaWYgYWxsIHRoZW5cbiAgICAgICAgICAoKiBpZiB3ZSBtYXRjaGVkIGEgbm9uLWNoYXIgZS5nLiBeIHdlIG11c3QgbWFudWFsbHkgYWR2YW5jZSBieSAxICopXG4gICAgICAgICAgaXRlciAoXG4gICAgICAgICAgICBpZiBwMT1wMiB0aGVuIChcbiAgICAgICAgICAgICAgKCogYSBub24gY2hhciBjb3VsZCBiZSBwYXN0IHRoZSBlbmQgb2Ygc3RyaW5nLiBlLmcuICQgKilcbiAgICAgICAgICAgICAgaWYgcDIgPCBsaW1pdCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgcy5bcDJdO1xuICAgICAgICAgICAgICBwMisxXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgcDIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwMiAobGltaXQtcDIpXG4gICAgICB8IFJ1bm5pbmcgXyAtPiAoKVxuICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChsaW1pdC1wb3MpXG4gIGluXG4gIGl0ZXIgcG9zO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCByZXBsYWNlX3N0cmluZyA/cG9zID9sZW4gP2FsbCByZSB+YnkgcyA9XG4gIHJlcGxhY2UgP3BvcyA/bGVuID9hbGwgcmUgcyB+ZjooZnVuIF8gLT4gYnkpXG5cbmxldCB3aXRuZXNzIHQgPVxuICBsZXQgcmVjIHdpdG5lc3MgPSBmdW5jdGlvblxuICAgIHwgU2V0IGMgLT4gU3RyaW5nLm1ha2UgMSAoQ2hhci5jaHIgKENzZXQucGljayBjKSlcbiAgICB8IFNlcXVlbmNlIHhzIC0+IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgd2l0bmVzcyB4cylcbiAgICB8IEFsdGVybmF0aXZlICh4IDo6IF8pIC0+IHdpdG5lc3MgeFxuICAgIHwgQWx0ZXJuYXRpdmUgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBSZXBlYXQgKHIsIGZyb20sIF90bykgLT5cbiAgICAgIGxldCB3ID0gd2l0bmVzcyByIGluXG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggdyAqIGZyb20pIGluXG4gICAgICBmb3IgX2k9MSB0byBmcm9tIGRvXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgd1xuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBOb19jYXNlIHIgLT4gd2l0bmVzcyByXG4gICAgfCBJbnRlcnNlY3Rpb24gX1xuICAgIHwgQ29tcGxlbWVudCBfXG4gICAgfCBEaWZmZXJlbmNlIChfLCBfKSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IEdyb3VwIChfLCByKVxuICAgIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBQbWFyayAoXywgcilcbiAgICB8IENhc2UgclxuICAgIHwgU2VtX2dyZWVkeSAoXywgcikgLT4gd2l0bmVzcyByXG4gICAgfCBCZWdfb2ZfbGluZVxuICAgIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkXG4gICAgfCBFbmRfb2Zfd29yZFxuICAgIHwgTm90X2JvdW5kXG4gICAgfCBCZWdfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lXG4gICAgfCBTdGFydFxuICAgIHwgU3RvcFxuICAgIHwgRW5kX29mX3N0ciAtPiBcIlwiIGluXG4gIHdpdG5lc3MgKGhhbmRsZV9jYXNlIGZhbHNlIHQpXG5cbm1vZHVsZSBTZXEgPSBSc2VxXG5tb2R1bGUgTGlzdCA9IFJsaXN0XG5tb2R1bGUgR3JvdXAgPSBHcm91cFxuXG4oKiogezIgRGVwcmVjYXRlZCBmdW5jdGlvbnN9ICopXG5cbmxldCBzcGxpdF9mdWxsX3NlcSA9IFNlcS5zcGxpdF9mdWxsXG5sZXQgc3BsaXRfc2VxID0gU2VxLnNwbGl0XG5sZXQgbWF0Y2hlc19zZXEgPSBTZXEubWF0Y2hlc1xubGV0IGFsbF9zZXEgPSBTZXEuYWxsXG5cbnR5cGUgJ2EgZ2VuICAgICAgICA9ICdhIEdlbi5nZW5cbmxldCBhbGxfZ2VuICAgICAgICA9IEdlbi5hbGxcbmxldCBtYXRjaGVzX2dlbiAgICA9IEdlbi5tYXRjaGVzXG5sZXQgc3BsaXRfZ2VuICAgICAgPSBHZW4uc3BsaXRcbmxldCBzcGxpdF9mdWxsX2dlbiA9IEdlbi5zcGxpdF9mdWxsXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuXG5sZXQgZ2V0ID0gR3JvdXAuZ2V0XG5sZXQgZ2V0X29mcyA9IEdyb3VwLm9mZnNldFxubGV0IGdldF9hbGwgPSBHcm91cC5hbGxcbmxldCBnZXRfYWxsX29mcyA9IEdyb3VwLmFsbF9vZmZzZXRcbmxldCB0ZXN0ID0gR3JvdXAudGVzdFxuXG50eXBlIG1hcmtpZCA9IE1hcmsudFxuXG5sZXQgbWFya2VkID0gTWFyay50ZXN0XG5sZXQgbWFya19zZXQgPSBNYXJrLmFsbFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpcbkluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91cyBjaGFyYWN0ZXI6XG4tIGRvZXMgbm90IGV4aXN0c1xuLSBpcyBhIGxldHRlclxuLSBpcyBub3QgYSBsZXR0ZXJcbi0gaXMgYSBuZXdsaW5lXG4tIGlzIGxhc3QgbmV3bGluZVxuXG5CZWdpbm5pbmcgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG4tIGN1cnJlbnQgaXMgbm90IGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBsaW5lOlxuLSBwcmV2aW91cyBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGJ1ZmZlcjpcbi0gcHJldmlvdXMgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGJ1ZmZlclxuLSBjdXJyZW50IGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBsaW5lXG4tIGN1cnJlbnQgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG4qKVxuXG4oKlxuUmVwOiBlID0gVCxlIHwgKClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIGNvbW1hIChzaG9ydGVzdC9sb25nZXN0L2ZpcnN0KVxuICAtIHNlbWFudGljcyBvZiB0aGUgdW5pb24gKGdyZWVkeS9ub24tZ3JlZWR5KVxuXG5Cb3VuZGVkIHJlcGV0aXRpb25cbiAgYXswLDN9ID0gKGEsKGEsYT8pPyk/XG4qKVxuXG50eXBlIGdyb3VwcyA9IEdyb3VwLnRcblxuaW5jbHVkZSBSbGlzdFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgdGVzdDIgYyBjJyA9ICFpICsgMSA8IGwgJiYgcy5bIWldID0gYyAmJiBzLlshaSArIDFdID0gYycgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0MiBjIGMnID0gbGV0IHIgPSB0ZXN0MiBjIGMnIGluIGlmIHIgdGhlbiBpIDo9ICFpICsgMjsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdDIgJ1xcXFwnICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0MiAnXFxcXCcgJ3wnIHx8IHRlc3QyICdcXFxcJyAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgciBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgciBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ib2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIFJlLmVvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQyICdcXFxcJyAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnYCcgdGhlblxuICAgICAgICBSZS5ib3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdcXCcnIHRoZW5cbiAgICAgICAgUmUuZW9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPScgdGhlblxuICAgICAgICBSZS5zdGFydFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ2InIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdCJyB0aGVuXG4gICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW5cbiAgICAgICAgUmUuYm93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPicgdGhlblxuICAgICAgICBSZS5lb3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICd3JyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1cnIHRoZW5cbiAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ1snIHwgJ10nIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ1xcXFwnIGFzIGMgLT5cbiAgICAgICAgICAgIFJlLmNoYXIgY1xuICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICBjICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBnZXQgKClcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbmxldCByZSA/KGNhc2UgPSB0cnVlKSBzID0gbGV0IHIgPSBwYXJzZSBzIGluIGlmIGNhc2UgdGhlbiByIGVsc2UgUmUubm9fY2FzZSByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8oY2FzZSA9IHRydWUpIHMgPSBjb21waWxlIChyZSB+Y2FzZSBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAqKVxuKCogIGxpbmtpbmcgZXhjZXB0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2RpZmllZCBieSBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnIgZm9yIGludGVncmF0aW9uIGluIFJFICopXG5cbigqICRJZDogcmVfc3RyLm1sLHYgMS4zIDIwMDIvMDcvMDMgMTU6NDc6NTQgdm91aWxsb24gRXhwICQgKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG50eXBlIHJlZ2V4cCA9XG4gIHsgcmU6IFJlLnRcbiAgOyBtdGNoOiBSZS5yZSBMYXp5LnRcbiAgOyBzcmNoOiBSZS5yZSBMYXp5LnQgfVxuXG5sZXQgY29tcGlsZV9yZWdleHAgcyBjID1cbiAgbGV0IHJlID0gRW1hY3MucmUgfmNhc2U6KG5vdCBjKSBzIGluXG4gIHsgcmVcbiAgOyBtdGNoID0gbGF6eSAoUmUuY29tcGlsZSAoUmUuc2VxIFtSZS5zdGFydDsgcmVdKSlcbiAgOyBzcmNoID0gbGF6eSAoUmUuY29tcGlsZSByZSkgfVxuXG5sZXQgc3RhdGUgPSByZWYgTm9uZVxuXG5sZXQgc3RyaW5nX21hdGNoIHJlIHMgcCA9XG4gIHRyeVxuICAgIHN0YXRlIDo9IFNvbWUgKFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMpO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGZhbHNlXG5cbmxldCBzdHJpbmdfcGFydGlhbF9tYXRjaCByZSBzIHAgPVxuICBtYXRjaFxuICAgIFJlLmV4ZWNfcGFydGlhbCB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgc1xuICB3aXRoXG4gICAgYEZ1bGwgICAgIC0+IHN0cmluZ19tYXRjaCByZSBzIHBcbiAgfCBgUGFydGlhbCAgLT4gdHJ1ZVxuICB8IGBNaXNtYXRjaCAtPiBmYWxzZVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLnNyY2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBmc3QgKFJlLkdyb3VwLm9mZnNldCByZXMgMClcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIHNlYXJjaF9iYWNrd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIHBcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBzdGF0ZSA6PSBOb25lO1xuICAgIGlmIHAgPSAwIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2VcbiAgICAgIHNlYXJjaF9iYWNrd2FyZCByZSBzIChwIC0gMSlcblxubGV0IHZhbGlkX2dyb3VwIG4gPVxuICBuID49IDAgJiYgbiA8IDEwICYmIChcbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBtIC0+IG4gPCBSZS5Hcm91cC5uYl9ncm91cHMgbVxuICApXG5cbmxldCBvZmZzZXRfZ3JvdXAgaSA9XG4gIG1hdGNoICFzdGF0ZSB3aXRoXG4gIHwgU29tZSBtIC0+IFJlLkdyb3VwLm9mZnNldCBtIGlcbiAgfCBOb25lICAgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBncm91cF9sZW4gaSA9XG4gIHRyeVxuICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgaSBpblxuICAgIGUgLSBiXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgMFxuXG5sZXQgcmVjIHJlcGxfbGVuZ3RoIHJlcGwgcCBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGlmIHJlcGwuW3BdIDw+ICdcXFxcJyB0aGVuXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgKHEgKyAxKSBsZW5cbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcCA9IHAgKyAxIGluXG4gICAgICBpZiBwID0gbGVuIHRoZW4gZmFpbHdpdGggXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIjtcbiAgICAgIGxldCBxID1cbiAgICAgICAgbWF0Y2ggcmVwbC5bcF0gd2l0aFxuICAgICAgICB8ICdcXFxcJyAtPiBxICsgMVxuICAgICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBxICsgZ3JvdXBfbGVuIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpXG4gICAgICAgIHwgXyAtPiBxICsgMiBpblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIHEgbGVuXG4gICAgZW5kXG4gIGVuZCBlbHNlXG4gICAgcVxuXG5sZXQgcmVjIHJlcGxhY2Ugb3JpZyByZXBsIHAgcmVzIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgbGV0IGMgPSByZXBsLltwXSBpblxuICAgIGlmIGMgPD4gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIEJ5dGVzLnNldCByZXMgcSBjO1xuICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAxKSByZXMgKHEgKyAxKSBsZW5cbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggcmVwbC5bcCArIDFdIHdpdGhcbiAgICAgICAgJ1xcXFwnIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMSkgbGVuXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIChDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgICAgICBsZXQgZCA9IGUgLSBiIGluXG4gICAgICAgICAgICBpZiBkID4gMCB0aGVuIFN0cmluZy5ibGl0IG9yaWcgYiByZXMgcSBkO1xuICAgICAgICAgICAgZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAwXG4gICAgICAgIGluXG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgZCkgbGVuXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgQnl0ZXMuc2V0IHJlcyAocSArIDEpIGM7XG4gICAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMikgcmVzIChxICsgMikgbGVuXG4gICAgZW5kXG4gIGVuZFxuXG5sZXQgcmVwbGFjZW1lbnRfdGV4dCByZXBsIG9yaWcgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCByZXBsIGluXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHJlcGxfbGVuZ3RoIHJlcGwgMCAwIGxlbikgaW5cbiAgcmVwbGFjZSBvcmlnIHJlcGwgMCByZXMgMCAoU3RyaW5nLmxlbmd0aCByZXBsKTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgc3RyaW5nX2JlZm9yZSBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBmaXJzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgMCBuXG5cbmxldCBsYXN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAoU3RyaW5nLmxlbmd0aCBzIC0gbikgblxuXG5sZXQgcmVnZXhwIGUgPSBjb21waWxlX3JlZ2V4cCBlIGZhbHNlXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIGUgPSBjb21waWxlX3JlZ2V4cCBlIHRydWVcblxubGV0IHJlZ2V4cF9zdHJpbmcgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSBmYWxzZVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IGNvbXBpbGVfcmVnZXhwIChxdW90ZSBzKSB0cnVlXG5cbmxldCBncm91cF9iZWdpbm5pbmcgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9iZWdpbm5pbmdcIjtcbiAgbGV0IHBvcyA9IGZzdCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgZ3JvdXBfZW5kIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfZW5kXCI7XG4gIGxldCBwb3MgPSBzbmQgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IG1hdGNoZWRfZ3JvdXAgbiB0eHQgPVxuICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIG4gaW5cbiAgU3RyaW5nLnN1YiB0eHQgYiAoZSAtIGIpXG5cbmxldCByZXBsYWNlX21hdGNoZWQgcmVwbCBtYXRjaGVkID0gcmVwbGFjZW1lbnRfdGV4dCByZXBsIG1hdGNoZWRcblxubGV0IG1hdGNoX2JlZ2lubmluZyAoKSA9IGdyb3VwX2JlZ2lubmluZyAwXG5hbmQgbWF0Y2hfZW5kICgpID0gZ3JvdXBfZW5kIDBcbmFuZCBtYXRjaGVkX3N0cmluZyB0eHQgPSBtYXRjaGVkX2dyb3VwIDAgdHh0XG5cbmxldCBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgMCBpblxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbc3RyaW5nX2JlZm9yZSB0ZXh0IHBvcztcbiAgICAgICAgICAgICAgICAgICAgICByZXBsX2Z1biB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19hZnRlciB0ZXh0IChtYXRjaF9lbmQgKCkpXVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRleHRcblxubGV0IGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgcmVwbF9mdW4gdGV4dCA9XG4gIGxldCByZWMgcmVwbGFjZSBhY2N1IHN0YXJ0IGxhc3Rfd2FzX2VtcHR5ID1cbiAgICBsZXQgc3RhcnRwb3MgPSBpZiBsYXN0X3dhc19lbXB0eSB0aGVuIHN0YXJ0ICsgMSBlbHNlIHN0YXJ0IGluXG4gICAgaWYgc3RhcnRwb3MgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IHN0YXJ0cG9zIHdpdGhcbiAgICAgIHwgcG9zIC0+XG4gICAgICAgIGxldCBlbmRfcG9zID0gbWF0Y2hfZW5kICgpIGluXG4gICAgICAgIGxldCByZXBsX3RleHQgPSByZXBsX2Z1biB0ZXh0IGluXG4gICAgICAgIHJlcGxhY2UgKHJlcGxfdGV4dCA6OiBTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICBlbmRfcG9zIChlbmRfcG9zID0gcG9zKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICBpblxuICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IChyZXBsYWNlIFtdIDAgZmFsc2UpKVxuXG5sZXQgZ2xvYmFsX3JlcGxhY2UgZXhwciByZXBsIHRleHQgPVxuICBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcbmFuZCByZXBsYWNlX2ZpcnN0IGV4cHIgcmVwbCB0ZXh0ID1cbiAgc3Vic3RpdHV0ZV9maXJzdCBleHByIChyZXBsYWNlbWVudF90ZXh0IHJlcGwpIHRleHRcblxubGV0IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIHJlIHMgcCA9XG4gIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZCByZSBzIHAgaW5cbiAgaWYgbWF0Y2hfZW5kICgpID4gcCB0aGVuXG4gICAgcG9zXG4gIGVsc2UgaWYgcCA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgc2VhcmNoX2ZvcndhcmQgcmUgcyAocCArIDEpXG4gIGVsc2VcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCBzdGFydCA9XG4gICAgaWYgc3RyaW5nX21hdGNoIGV4cHIgdGV4dCAwIHRoZW4gbWF0Y2hfZW5kICgpIGVsc2UgMCBpblxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0ICgoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpKSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gc3RhcnQgbnVtKVxuXG5sZXQgc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdCBleHByIHRleHQgMFxuXG5sZXQgYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIHNwbGl0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgaWYgdGV4dCA9IFwiXCIgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBzcGxpdF9kZWxpbSBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCAwXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcgfCBEZWxpbSBvZiBzdHJpbmdcblxubGV0IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgZXhwciB0ZXh0IHN0YXJ0IGluXG4gICAgICAgIGxldCBzID0gbWF0Y2hlZF9zdHJpbmcgdGV4dCBpblxuICAgICAgICBpZiBwb3MgPiBzdGFydCB0aGVuXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OlxuICAgICAgICAgICAgICAgICBUZXh0IChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcyAtIHN0YXJ0KSkgOjpcbiAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjogYWNjdSlcbiAgICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IGZ1bGxfc3BsaXQgZXhwciB0ZXh0ID0gYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCAwXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIGVuY2xvc2VkID1cbiAgfCBDaGFyIG9mIGNoYXJcbiAgfCBSYW5nZSBvZiBjaGFyICogY2hhclxuXG50eXBlIHBpZWNlID1cbiAgfCBFeGFjdGx5IG9mIGNoYXJcbiAgfCBBbnlfb2Ygb2YgZW5jbG9zZWQgbGlzdFxuICB8IEFueV9idXQgb2YgZW5jbG9zZWQgbGlzdFxuICB8IE9uZVxuICB8IE1hbnlcbiAgfCBNYW55TWFueVxuXG50eXBlIHQgPSBwaWVjZSBsaXN0XG5cbmxldCBvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzIDogdCA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgcmVhZCBjID1cbiAgICBsZXQgciA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gICAgaWYgciB0aGVuIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgKCoqXG4gICBbcmVhZF9haGVhZCBwYXR0ZXJuXSB3aWxsIGF0dGVtcHQgdG8gcmVhZCBbcGF0dGVybl0gYW5kIHdpbGwgcmV0dXJuIFt0cnVlXSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC5cbiAgIElmIGl0IGZhaWxzLCBpdCB3aWxsIHJldHVybiBbZmFsc2VdIGFuZCBub3QgaW5jcmVtZW50IHRoZSByZWFkIGluZGV4LlxuICAqKVxuICBsZXQgcmVhZF9haGVhZCBwYXR0ZXJuID1cbiAgICBsZXQgcGF0dGVybl9sZW4gPSBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAoKiBpZiB0aGUgcGF0dGVybiB3ZSBhcmUgbG9va2luZyBmb3IgZXhlZWRzIHRoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHMsIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseSAqKVxuICAgIGlmICFpICsgcGF0dGVybl9sZW4gPj0gbCB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDAgdG8gcGF0dGVybl9sZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGZvdW5kID0gbm90IChlb3MgKCkpICYmIHMuWyFpICsgal0gPSBwYXR0ZXJuLltqXSBpblxuICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuIHJhaXNlX25vdHJhY2UgRXhpdDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaSA6PSAhaSArIHBhdHRlcm5fbGVuO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIHwgRXhpdCAgLT4gZmFsc2VcbiAgaW5cblxuICBsZXQgY2hhciAoKSA9XG4gICAgaWdub3JlIChyZWFkICdcXFxcJyA6IGJvb2wpO1xuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCByID0gcy5bIWldIGluXG4gICAgaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICBsZXQgZW5jbG9zZWQgKCkgOiBlbmNsb3NlZCBsaXN0ID1cbiAgICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgICAoKiBUaGlzIHJldHVybnMgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlciwgYnV0IG9yZGVyIGlzbid0IGltcG9ydGFudCBhbnl3YXkgKilcbiAgICAgIGlmIHMgPD4gW10gJiYgcmVhZCAnXSdcbiAgICAgIHRoZW4gc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgICAgaWYgbm90IChyZWFkICctJylcbiAgICAgICAgdGhlbiBsb29wIChDaGFyIGMgOjogcylcbiAgICAgICAgZWxzZSBpZiByZWFkICddJ1xuICAgICAgICB0aGVuIENoYXIgYyA6OiBDaGFyICctJyA6OiBzXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgbG9vcCAoUmFuZ2UgKGMsIGMnKSA6OiBzKVxuICAgIGluXG4gICAgbG9vcCBbXVxuICBpblxuXG4gIGxldCBwaWVjZSAoKSA9XG4gICAgaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWRfYWhlYWQgXCIvKipcIiAmJiBub3QgKGVvcyAoKSlcbiAgICB0aGVuIE1hbnlNYW55XG4gICAgZWxzZSBpZiByZWFkICcqJ1xuICAgIHRoZW4gaWYgZG91YmxlX2FzdGVyaXNrICYmIHJlYWQgJyonXG4gICAgICB0aGVuIE1hbnlNYW55XG4gICAgICBlbHNlIE1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJz8nXG4gICAgdGhlbiBPbmVcbiAgICBlbHNlIGlmIG5vdCAocmVhZCAnWycpXG4gICAgdGhlbiBFeGFjdGx5IChjaGFyICgpKVxuICAgIGVsc2UgaWYgcmVhZCAnXicgfHwgcmVhZCAnISdcbiAgICB0aGVuIEFueV9idXQgKGVuY2xvc2VkICgpKVxuICAgIGVsc2UgQW55X29mIChlbmNsb3NlZCAoKSlcbiAgaW5cblxuICBsZXQgcmVjIGxvb3AgcGllY2VzID1cbiAgICBpZiBlb3MgKClcbiAgICB0aGVuIExpc3QucmV2IHBpZWNlc1xuICAgIGVsc2UgbG9vcCAocGllY2UgKCkgOjogcGllY2VzKVxuICBpblxuXG4gIGxvb3AgW11cblxubGV0IG11bCBsIGwnID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHMgLT4gTGlzdC5tYXAgKGZ1biBzJyAtPiBzIF4gcycpIGwnKSBsKVxuXG5sZXQgZXhwbG9kZSBzdHIgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZWMgZXhwbCBpbm5lciBzIGkgYWNjIGJlZyA9XG4gICAgaWYgaSA+PSBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGlubmVyIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSwgaSlcbiAgICBlbmQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICB8ICdcXFxcJyAtPiBleHBsIGlubmVyIHMgKGkgKyAyKSBhY2MgYmVnXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBsZXQgKHQsIGknKSA9IGV4cGwgdHJ1ZSAoaSArIDEpIChpICsgMSkgW10gW1wiXCJdIGluXG4gICAgICAgIGV4cGwgaW5uZXIgaScgaScgYWNjXG4gICAgICAgICAgKG11bCBiZWcgKG11bCBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSB0KSlcbiAgICAgIHwgJywnIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgZXhwbCBpbm5lciAoaSArIDEpIChpICsgMSlcbiAgICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYykgW1wiXCJdXG4gICAgICB8ICd9JyB3aGVuIGlubmVyIC0+XG4gICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjLCBpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBleHBsIGlubmVyIHMgKGkgKyAxKSBhY2MgYmVnXG4gIGluXG4gIExpc3QucmV2IChmc3QgKGV4cGwgZmFsc2UgMCAwIFtdIFtcIlwiXSkpXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgcmVfcGllY2VzICAgICAgICAgICAgICAgIDogUmUudCBsaXN0OyAgKCogbGFzdCBwaWVjZSBhdCBoZWFkIG9mIGxpc3QuICopXG4gICAgcmVtYWluaW5nICAgICAgICAgICAgICAgIDogcGllY2UgbGlzdDsgKCogbGFzdCBwaWVjZSBhdCB0YWlsIG9mIGxpc3QuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiAgIDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuICopXG4gICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IDogYm9vbDsgICAgICAgKCogdHJ1ZSBhdCBzdGFydCBvZiBwYXR0ZXJuIG9yIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgJy8nICopXG4gICAgcGF0aG5hbWUgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgICBtYXRjaF9iYWNrc2xhc2hlcyAgICAgICAgOiBib29sO1xuICAgIHBlcmlvZCAgICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gIH1cblxuICBsZXQgY3JlYXRlIH5wZXJpb2QgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyByZW1haW5pbmcgPVxuICAgIHtcbiAgICAgIHJlX3BpZWNlcyA9IFtdO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IHRydWU7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSB0cnVlO1xuICAgICAgcGF0aG5hbWU7XG4gICAgICBtYXRjaF9iYWNrc2xhc2hlcztcbiAgICAgIHBlcmlvZDtcbiAgICAgIHJlbWFpbmluZztcbiAgICB9XG5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCB0ID1cbiAgICB0LnBlcmlvZCAmJiAoXG4gICAgICB0LmFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gfHxcbiAgICAgICh0LmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCAmJiB0LnBhdGhuYW1lKVxuICAgIClcblxuICBsZXQgZXhwbGljaXRfc2xhc2ggdCA9IHQucGF0aG5hbWVcblxuICBsZXQgc2xhc2hlcyB0ID1cbiAgICBpZiB0Lm1hdGNoX2JhY2tzbGFzaGVzIHRoZW4gWycvJzsgJ1xcXFwnXSBlbHNlIFsnLyddXG5cbiAgbGV0IGFwcGVuZCA/KGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudD1mYWxzZSkgdCBwaWVjZSA9XG4gICAgeyB0IHdpdGhcbiAgICAgIHJlX3BpZWNlcyA9IHBpZWNlIDo6IHQucmVfcGllY2VzO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiA9IGZhbHNlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50O1xuICAgIH1cblxuICBsZXQgdG9fcmUgdCA9IFJlLnNlcSAoTGlzdC5yZXYgdC5yZV9waWVjZXMpXG5cbiAgbGV0IG5leHQgdCA9XG4gICAgbWF0Y2ggdC5yZW1haW5pbmcgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgcGllY2UgOjogcmVtYWluaW5nIC0+IFNvbWUgKHBpZWNlLCB7IHQgd2l0aCByZW1haW5pbmcgfSlcbmVuZFxuXG5sZXQgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kID1cbiAgUmUuY29tcGwgKFxuICAgIExpc3QuY29uY2F0IFtcbiAgICAgIGlmIGV4cGxpY2l0X3NsYXNoICB0aGVuIExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyBlbHNlIFtdO1xuICAgICAgaWYgZXhwbGljaXRfcGVyaW9kIHRoZW4gW1JlLmNoYXIgJy4nXSBlbHNlIFtdO1xuICAgIF1cbiAgKVxuXG5sZXQgZW5jbG9zZWQgZW5jbG9zZWQgPVxuICBtYXRjaCBlbmNsb3NlZCB3aXRoXG4gIHwgQ2hhciBjIC0+IFJlLmNoYXIgY1xuICB8IFJhbmdlIChsb3csIGhpZ2gpIC0+IFJlLnJnIGxvdyBoaWdoXG5cbmxldCBlbmNsb3NlZF9zZXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Qga2luZCBzZXQgPVxuICBsZXQgc2V0ID0gTGlzdC5tYXAgZW5jbG9zZWQgc2V0IGluXG4gIGxldCBlbmNsb3N1cmUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEFueV9vZiAtPiBSZS5hbHQgc2V0XG4gICAgfCBgQW55X2J1dCAtPiBSZS5jb21wbCBzZXRcbiAgaW5cbiAgUmUuaW50ZXIgW2VuY2xvc3VyZTsgb25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kXVxuXG5sZXQgZXhhY3RseSBzdGF0ZSBjID1cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgPSBMaXN0Lm1lbSBjIHNsYXNoZXMgaW5cbiAgbGV0IGNoYXJzID0gaWYgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50IHRoZW4gc2xhc2hlcyBlbHNlIFtjXSBpblxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBjaGFycykpIH5hbV9hdF9zdGFydF9vZl9jb21wb25lbnRcblxubGV0IG1hbnlfbWFueSBzdGF0ZSA9XG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBzdGF0ZS5TdGF0ZS5wZXJpb2QgJiYgc3RhdGUuU3RhdGUucGF0aG5hbWUgaW5cbiAgbGV0IGZpcnN0X2V4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kID1cbiAgICBSZS5zZXEgW1xuICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgIF1cbiAgaW5cbiAgKCogV2UgbXVzdCBtYXRjaCBjb21wb25lbnRzIGluZGl2aWR1YWxseSB3aGVuIFtwZXJpb2RdIGZsYWcgaXMgc2V0LFxuICAgICBtYWtpbmcgc3VyZSB0byBub3QgbWF0Y2ggW1wiZm9vLy5iYXJcIl0uICopXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoXG4gICAgUmUuc2VxIFtcbiAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2Q6Zmlyc3RfZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgIFJlLnJlcCAoXG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMpO1xuICAgICAgICAgIFJlLm9wdCAobWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgICBdXG4gICAgICApO1xuICAgIF0pXG5cbmxldCBtYW55IChzdGF0ZSA6IFN0YXRlLnQpID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgKCogV2hldGhlciB3ZSBtdXN0IGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kIGRlcGVuZHMgb24gdGhlIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMsIGJ1dFxuICAgICBzbGFzaGVzIGFyZSBlYXN5IHRvIGV4cGxpY2l0IG1hdGNoLiBUaGlzIGNvbmRpdGlvbmFsIHNwbGl0cyBvdXQgc29tZSBzaW1wbGUgY2FzZXMuXG4gICopXG4gIGlmIG5vdCBleHBsaWNpdF9wZXJpb2QgdGhlbiBiZWdpblxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpKVxuICBlbmQgZWxzZSBpZiBub3QgZXhwbGljaXRfc2xhc2ggdGhlbiBiZWdpblxuICAgICgqIEluIHRoaXMgc3RhdGUsIHdlIGV4cGxpY2l0bHkgbWF0Y2ggcGVyaW9kcyBvbmx5IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyAqKVxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUub3B0IChcbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgKSlcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBsZXQgbm90X2VtcHR5ID1cbiAgICAgIFJlLnNlcSBbXG4gICAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgICBdXG4gICAgaW5cbiAgICAoKiBbbWF5YmVfZW1wdHldIGlzIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uIG9mIE1hbnksIGV4Y2VwdCBpbiBzb21lIHNwZWNpYWwgY2FzZXMuXG4gICAgKilcbiAgICBsZXQgbWF5YmVfZW1wdHkgPSBSZS5vcHQgbm90X2VtcHR5IGluXG4gICAgbGV0IGVuY2xvc2VkX3NldCBzdGF0ZSBraW5kIHNldCA9XG4gICAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLmFsdCBbXG4gICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnNlcSBbXG4gICAgICAgICAgbm90X2VtcHR5O1xuICAgICAgICAgICgqIFNpbmNlIFtub3RfZW1wdHldIG1hdGNoZWQsIHN1YnNlcXVlbnQgZG90cyBhcmUgbm90IGxlYWRpbmcuICopXG4gICAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2U7XG4gICAgICAgIF07XG4gICAgICBdKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29rYWhlYWQgc3RhdGUgPVxuICAgICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG1heWJlX2VtcHR5XG4gICAgICAoKiBnbG9iICoqID09PSBnbG9iICogLiAqKVxuICAgICAgfCBTb21lIChNYW55LCBzdGF0ZSkgLT4gbG9va2FoZWFkIHN0YXRlXG4gICAgICB8IFNvbWUgKEV4YWN0bHkgYywgc3RhdGUpIC0+XG4gICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlXG4gICAgICAgICAgICAoaWYgYyA9ICcuJ1xuICAgICAgICAgICAgIHRoZW4gbm90X2VtcHR5XG4gICAgICAgICAgICAgZWxzZSBtYXliZV9lbXB0eSlcbiAgICAgICAgaW5cbiAgICAgICAgZXhhY3RseSBzdGF0ZSBjXG4gICAgICAoKiBnbG9iICo/ID09PSBnbG9iID8qICopXG4gICAgICB8IFNvbWUgKE9uZSwgc3RhdGUpIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBub3RfZW1wdHlcbiAgICAgIHwgU29tZSAoQW55X29mIGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfb2YgZW5jbG9zZWRcbiAgICAgIHwgU29tZSAoQW55X2J1dCBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X2J1dCBlbmNsb3NlZFxuICAgICAgKCogKiB0aGVuICoqID09PSAqKiAqKVxuICAgICAgfCBTb21lIChNYW55TWFueSwgc3RhdGUpIC0+IG1hbnlfbWFueSBzdGF0ZVxuICAgIGluXG4gICAgbG9va2FoZWFkIHN0YXRlXG4gIGVuZFxuXG5sZXQgcGllY2Ugc3RhdGUgcGllY2UgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBtYXRjaCBwaWVjZSB3aXRoXG4gIHwgT25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKVxuICB8IE1hbnkgLT4gbWFueSBzdGF0ZVxuICB8IEFueV9vZiBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfb2YgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgQW55X2J1dCBlbmNsb3NlZCAtPlxuICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoZW5jbG9zZWRfc2V0IGBBbnlfYnV0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEV4YWN0bHkgYyAtPiBleGFjdGx5IHN0YXRlIGNcbiAgfCBNYW55TWFueSAtPiBtYW55X21hbnkgc3RhdGVcblxubGV0IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGF0ZS50b19yZSBzdGF0ZVxuICAgIHwgU29tZSAocCwgc3RhdGUpIC0+IGxvb3AgKHBpZWNlIHN0YXRlIHApXG4gIGluXG4gIGxvb3AgKFN0YXRlLmNyZWF0ZSB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYilcblxubGV0IGdsb2JcbiAgICAgID8oYW5jaG9yZWQgPSBmYWxzZSlcbiAgICAgID8ocGF0aG5hbWUgPSB0cnVlKVxuICAgICAgPyhtYXRjaF9iYWNrc2xhc2hlcyA9IGZhbHNlKVxuICAgICAgPyhwZXJpb2QgPSB0cnVlKVxuICAgICAgPyhleHBhbmRfYnJhY2VzID0gZmFsc2UpXG4gICAgICA/KGRvdWJsZV9hc3RlcmlzayA9IHRydWUpXG4gICAgICBzXG4gID1cbiAgbGV0IHRvX3JlIHMgPVxuICAgIGxldCByZSA9IGdsb2IgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIChvZl9zdHJpbmcgfmRvdWJsZV9hc3RlcmlzayBzKSBpblxuICAgIGlmIGFuY2hvcmVkXG4gICAgdGhlbiBSZS53aG9sZV9zdHJpbmcgcmVcbiAgICBlbHNlIHJlXG4gIGluXG4gIGlmIGV4cGFuZF9icmFjZXNcbiAgdGhlbiBSZS5hbHQgKExpc3QubWFwIHRvX3JlIChleHBsb2RlIHMpKVxuICBlbHNlIHRvX3JlIHNcblxubGV0IGdsb2InID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5wZXJpb2Qgc1xuXG5sZXQgZ2xvYnggP2FuY2hvcmVkIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIHNcblxubGV0IGdsb2J4JyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+ZXhwYW5kX2JyYWNlczp0cnVlIH5wZXJpb2Qgc1xuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwb3NpeF9jbGFzc19vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiYWxwaGFcIiAgLT4gUmUuYWxwaGFcbiAgfCBcImFsbnVtXCIgIC0+IFJlLmFsbnVtXG4gIHwgXCJhc2NpaVwiICAtPiBSZS5hc2NpaVxuICB8IFwiYmxhbmtcIiAgLT4gUmUuYmxhbmtcbiAgfCBcImNudHJsXCIgIC0+IFJlLmNudHJsXG4gIHwgXCJkaWdpdFwiICAtPiBSZS5kaWdpdFxuICB8IFwibG93ZXJcIiAgLT4gUmUubG93ZXJcbiAgfCBcInByaW50XCIgIC0+IFJlLnByaW50XG4gIHwgXCJzcGFjZVwiICAtPiBSZS5zcGFjZVxuICB8IFwidXBwZXJcIiAgLT4gUmUudXBwZXJcbiAgfCBcIndvcmRcIiAgIC0+IFJlLndvcmRjXG4gIHwgXCJwdW5jdFwiICAtPiBSZS5wdW5jdFxuICB8IFwiZ3JhcGhcIiAgLT4gUmUuZ3JhcGhcbiAgfCBcInhkaWdpdFwiIC0+IFJlLnhkaWdpdFxuICB8IGNsYXNzXyAgIC0+IGludmFsaWRfYXJnIChcIkludmFsaWQgcGNyZSBjbGFzczogXCIgXiBjbGFzc18pXG5cbmxldCBwb3NpeF9jbGFzc19zdHJpbmdzID1cbiAgWyBcImFscGhhXCIgOyBcImFsbnVtXCIgOyBcImFzY2lpXCJcbiAgOyBcImJsYW5rXCIgOyBcImNudHJsXCIgOyBcImRpZ2l0XCJcbiAgOyBcImxvd2VyXCIgOyBcInByaW50XCIgOyBcInNwYWNlXCJcbiAgOyBcInVwcGVyXCIgOyBcIndvcmRcIiAgOyBcInB1bmN0XCJcbiAgOyBcImdyYXBoXCIgOyBcInhkaWdpdFwiIF1cblxubGV0IHBhcnNlIG11bHRpbGluZSBkb2xsYXJfZW5kb25seSBkb3RhbGwgdW5ncmVlZHkgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgYWNjZXB0X3MgcycgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMnIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaiA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICB0cnkgaWYgcycuW2pdIDw+IHMuWyFpICsgal0gdGhlbiByYWlzZSBFeGl0XG4gICAgICAgIHdpdGggXyAtPiByYWlzZSBFeGl0XG4gICAgICBkb25lO1xuICAgICAgaSA6PSAhaSArIGxlbjtcbiAgICAgIHRydWVcbiAgICB3aXRoIEV4aXQgLT4gZmFsc2UgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cbiAgbGV0IGdyZWVkeV9tb2QgciA9XG4gICAgbGV0IGdyID0gYWNjZXB0ICc/JyBpblxuICAgIGxldCBnciA9IGlmIHVuZ3JlZWR5IHRoZW4gbm90IGdyIGVsc2UgZ3IgaW5cbiAgICBpZiBnciB0aGVuIFJlLm5vbl9ncmVlZHkgciBlbHNlIFJlLmdyZWVkeSByXG4gIGluXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gZ3JlZWR5X21vZCAoUmUucmVwMSByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIGdyZWVkeV9tb2QgKFJlLm9wdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBncmVlZHlfbW9kIChSZS5yZXBuIHIgaSBqKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIGRvdGFsbCB0aGVuIFJlLmFueSBlbHNlIFJlLm5vdG5sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz8nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgclxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyMnIHRoZW4gYmVnaW5cbiAgICAgICAgICBjb21tZW50ICgpXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZSAoKSBpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIFJlLmdyb3VwIH5uYW1lIHJcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5lb2wgZWxzZSBpZiBkb2xsYXJfZW5kb25seSB0aGVuIFJlLmxlb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuKCogWFhYXG4gICAtIEJhY2stcmVmZXJlbmNlc1xuICAgLSBcXGN4IChjb250cm9sLXgpLCBcXGRkZFxuKilcbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3cnIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdXJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICB8ICdzJyAtPlxuICAgICAgICAgIFJlLnNwYWNlXG4gICAgICB8ICdTJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5zcGFjZV1cbiAgICAgIHwgJ2QnIC0+XG4gICAgICAgICAgUmUuZGlnaXRcbiAgICAgIHwgJ0QnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmRpZ2l0XVxuICAgICAgfCAnYicgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgfCAnQicgLT5cbiAgICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIHwgJ0EnIC0+XG4gICAgICAgICAgUmUuYm9zXG4gICAgICB8ICdaJyAtPlxuICAgICAgICAgIFJlLmxlb2xcbiAgICAgIHwgJ3onIC0+XG4gICAgICAgICAgUmUuZW9zXG4gICAgICB8ICdHJyAtPlxuICAgICAgICAgIFJlLnN0YXJ0XG4gICAgICB8ICdlJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDFiJ1xuICAgICAgfCAnZicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgwYydcbiAgICAgIHwgJ24nIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxuJ1xuICAgICAgfCAncicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHInXG4gICAgICB8ICd0JyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcdCdcbiAgICAgIHwgJ3gnIC0+XG4gICAgICAgICAgbGV0IGMxID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgYzIgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjb2RlID0gYzEgKiAxNiArIGMyIGluXG4gICAgICAgICAgUmUuY2hhciAoY2hhcl9vZl9pbnQgY29kZSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBjIC0+XG4gICAgICAgICAgUmUuY2hhciBjXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBoZXhkaWdpdCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnYScuLidmJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCAnQScuLidGJyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBuYW1lICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onKSBhcyBjIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBuYW1lJyBiID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvciBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICgnXycgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScpIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICBuYW1lJyBiXG4gICAgfCAnPicgLT4gQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgIHwgYENoYXIgYyAtPlxuICAgICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICAgICAgICAgIGBDaGFyIGMnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgICAgIHwgYFNldCBzdCcgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHN0JyA6OiBzKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgICAgfCBgU2V0IHN0IC0+IGJyYWNrZXQgKHN0IDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICBpZiBhY2NlcHQgJzonIHRoZW5cbiAgICAgICAgbGV0IGNvbXBsID0gYWNjZXB0ICdeJyBpblxuICAgICAgICBsZXQgY2xzID1cbiAgICAgICAgICB0cnkgTGlzdC5maW5kIGFjY2VwdF9zIHBvc2l4X2NsYXNzX3N0cmluZ3NcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSBQYXJzZV9lcnJvciBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdF9zIFwiOl1cIikgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IHJlID1cbiAgICAgICAgICBsZXQgcG9zaXhfY2xhc3MgPSBwb3NpeF9jbGFzc19vZl9zdHJpbmcgY2xzIGluXG4gICAgICAgICAgaWYgY29tcGwgdGhlbiBSZS5jb21wbCBbcG9zaXhfY2xhc3NdIGVsc2UgcG9zaXhfY2xhc3MgaW5cbiAgICAgICAgYFNldCAocmUpXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgYENoYXIgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlIGlmIGMgPSAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBsZXQgYyA9IGdldCAoKSBpblxuKCogWFhYXG4gICBcXDEyNywgLi4uXG4qKVxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICdiJyAtPiBgQ2hhciAnXFwwMDgnXG4gICAgICB8ICduJyAtPiBgQ2hhciAnXFxuJyAoKlhYWCopXG4gICAgICB8ICdyJyAtPiBgQ2hhciAnXFxyJyAoKlhYWCopXG4gICAgICB8ICd0JyAtPiBgQ2hhciAnXFx0JyAoKlhYWCopXG4gICAgICB8ICd3JyAtPiBgU2V0IChSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdXJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ3MnIC0+IGBTZXQgKFJlLnNwYWNlKVxuICAgICAgfCAnUycgLT4gYFNldCAoUmUuY29tcGwgW1JlLnNwYWNlXSlcbiAgICAgIHwgJ2QnIC0+IGBTZXQgKFJlLmRpZ2l0KVxuICAgICAgfCAnRCcgLT4gYFNldCAoUmUuY29tcGwgW1JlLmRpZ2l0XSlcbiAgICAgIHwgJ2EnLi4neicgfCAnQScuLidaJyAtPlxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICcwJy4uJzknIC0+XG4gICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYENoYXIgY1xuICAgIGVuZCBlbHNlXG4gICAgICBgQ2hhciBjXG4gIGFuZCBjb21tZW50ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBpZiBhY2NlcHQgJyknIHRoZW4gUmUuZXBzaWxvbiBlbHNlIGJlZ2luIGluY3IgaTsgY29tbWVudCAoKSBlbmRcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID1cbiAgWyBgVW5ncmVlZHkgfCBgRG90YWxsIHwgYERvbGxhcl9lbmRvbmx5XG4gIHwgYE11bHRpbGluZSB8IGBBbmNob3JlZCB8IGBDYXNlbGVzcyBdXG5cbmxldCByZSAgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9XG4gICAgcGFyc2VcbiAgICAgIChMaXN0Lm1lbXEgYE11bHRpbGluZSBvcHRzKSAoTGlzdC5tZW1xIGBEb2xsYXJfZW5kb25seSBvcHRzKVxuICAgICAgKExpc3QubWVtcSBgRG90YWxsIG9wdHMpIChMaXN0Lm1lbXEgYFVuZ3JlZWR5IG9wdHMpXG4gICAgICBzXG4gIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBBbmNob3JlZCBvcHRzIHRoZW4gUmUuc2VxIFtSZS5zdGFydDsgcl0gZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBDYXNlbGVzcyBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlID0gUmUuY29tcGlsZVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGVybC5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgPSBQZXJsLk5vdF9zdXBwb3J0ZWRcblxudHlwZSByZWdleHAgPSBSZS5yZVxuXG50eXBlIGZsYWcgPSBbIGBDQVNFTEVTUyB8IGBNVUxUSUxJTkUgfCBgQU5DSE9SRUQgfCBgRE9UQUxMIF1cblxudHlwZSBzcGxpdF9yZXN1bHQgPVxuICB8IFRleHQgIG9mIHN0cmluZ1xuICB8IERlbGltIG9mIHN0cmluZ1xuICB8IEdyb3VwIG9mIGludCAqIHN0cmluZ1xuICB8IE5vR3JvdXBcblxudHlwZSBncm91cHMgPSBDb3JlLkdyb3VwLnRcblxubGV0IHJlID8oZmxhZ3MgPSBbXSkgcGF0ID1cbiAgbGV0IG9wdHMgPSBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICB8IGBDQVNFTEVTUyAtPiBgQ2FzZWxlc3NcbiAgICB8IGBNVUxUSUxJTkUgLT4gYE11bHRpbGluZVxuICAgIHwgYEFOQ0hPUkVEIC0+IGBBbmNob3JlZFxuICAgIHwgYERPVEFMTCAtPiBgRG90YWxsXG4gICkgZmxhZ3MgaW5cbiAgUGVybC5yZSB+b3B0cyBwYXRcblxubGV0IHJlZ2V4cCA/ZmxhZ3MgcGF0ID0gUmUuY29tcGlsZSAocmUgP2ZsYWdzIHBhdClcblxubGV0IGV4dHJhY3QgfnJleCBzID1cbiAgUmUuR3JvdXAuYWxsIChSZS5leGVjIHJleCBzKVxuXG5sZXQgZXhlYyB+cmV4ID9wb3MgcyA9XG4gIFJlLmV4ZWMgcmV4ID9wb3Mgc1xuXG5sZXQgZ2V0X3N1YnN0cmluZyBzIGkgPVxuICBSZS5Hcm91cC5nZXQgcyBpXG5cbmxldCBuYW1lcyByZXggPVxuICBSZS5ncm91cF9uYW1lcyByZXhcbiAgfD4gTGlzdC5tYXAgZnN0XG4gIHw+IEFycmF5Lm9mX2xpc3RcblxubGV0IGdldF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgcyA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IChuLCBpKSA6OiByZW0gd2hlbiBuID0gbmFtZSAtPlxuICAgICAgIGJlZ2luXG4gICAgICAgICB0cnkgZ2V0X3N1YnN0cmluZyBzIGlcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGxvb3AgcmVtXG4gICAgICAgZW5kXG4gICAgfCBfIDo6IHJlbSAtPiBsb29wIHJlbVxuICBpblxuICBsb29wIChSZS5ncm91cF9uYW1lcyByZXgpXG5cbmxldCBnZXRfc3Vic3RyaW5nX29mcyBzIGkgPVxuICBSZS5Hcm91cC5vZmZzZXQgcyBpXG5cbmxldCBwbWF0Y2ggfnJleCBzID1cbiAgUmUuZXhlY3AgcmV4IHNcblxubGV0IHN1YnN0aXR1dGUgfnJleCB+c3Vic3Qgc3RyID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHBhdCA9IFJlLkdyb3VwLmdldCBzcyAwIGluXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN1YnN0IHBhdCk7XG4gICAgICBsb29wIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBiIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKTtcbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgIClcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB+cmV4IHN0ciA9XG4gIGxldCByZWMgbG9vcCBhY2N1IHBvcyA9XG4gICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggc3RyIHRoZW5cbiAgICAgIExpc3QucmV2IGFjY3VcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIGZpblxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpIGluXG4gICAgICBsb29wIChzIDo6IGFjY3UpIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApIGluXG4gIGxvb3AgW10gMFxuXG4oKiBGcm9tIFBDUkUgKilcbmxldCBzdHJpbmdfdW5zYWZlX3N1YiBzIG9mcyBsZW4gPVxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgQnl0ZXMudW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChsZW4gbHNsIDEpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgfCAnXFxcXCcgfCAnXicgfCAnJCcgfCAnLicgfCAnWycgfCAnfCdcbiAgICB8ICcoJyAgfCAnKScgfCAnPycgfCAnKicgfCAnKycgfCAneycgYXMgYyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyAnXFxcXCc7XG4gICAgICBpbmNyIHBvcztcbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICBkb25lO1xuICBzdHJpbmdfdW5zYWZlX3N1YiBidWYgMCAhcG9zXG5cbmxldCBmdWxsX3NwbGl0ID8obWF4PTApIH5yZXggcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA9IDAgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbVGV4dCBzXVxuICBlbHNlXG4gICAgbGV0IHJlc3VsdHMgPSBSZS5zcGxpdF9mdWxsIHJleCBzIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYFRleHQgcyAtPiBbVGV4dCBzXVxuICAgICAgICB8IGBEZWxpbSBkIC0+XG4gICAgICAgICAgbGV0IG1hdGNoZXMgPSBSZS5Hcm91cC5hbGxfb2Zmc2V0IGQgaW5cbiAgICAgICAgICBsZXQgZGVsaW0gPSBSZS5Hcm91cC5nZXQgZCAwIGluXG4gICAgICAgICAgKERlbGltIGRlbGltKTo6KFxuICAgICAgICAgICAgbGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggbWF0Y2hlcyAtIDEgZG9cbiAgICAgICAgICAgICAgbCA6PVxuICAgICAgICAgICAgICAgIChpZiBtYXRjaGVzLihpKSA9ICgtMSwgLTEpXG4gICAgICAgICAgICAgICAgIHRoZW4gTm9Hcm91cFxuICAgICAgICAgICAgICAgICBlbHNlIEdyb3VwIChpLCBSZS5Hcm91cC5nZXQgZCBpKSlcbiAgICAgICAgICAgICAgICA6OighbClcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBMaXN0LnJldiAhbCkpIHJlc3VsdHMgaW5cbiAgICBMaXN0LmNvbmNhdCBtYXRjaGVzXG5cblxudHlwZSBzdWJzdHJpbmdzID0gR3JvdXAudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxuKCpcbldoYXQgd2UgY291bGQgKHNob3VsZD8pIGRvOlxuLSBhKiA9PT4gbG9uZ2VzdCAoKHNob3J0ZXN0IChub19ncm91cCBhKSogKSwgYSB8ICgpKSAgKCEhISlcbi0gYWJjIHVuZGVyc3Rvb2QgYXMgKGFiKWNcbi0gXCIoKGE/KXxiKVwiIGFnYWluc3QgXCJhYlwiIHNob3VsZCBub3QgYmluZCB0aGUgZmlyc3Qgc3VicGF0dGVybiB0byBhbnl0aGluZ1xuXG5Ob3RlIHRoYXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhbmRsZSBcIigoKGFiKWMpZCllXCIgZWZmaWNpZW50bHlcbiopXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIG5ld2xpbmUgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IGFjY2VwdCBjID0gbGV0IHIgPSB0ZXN0IGMgaW4gaWYgciB0aGVuIGluY3IgaTsgciBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QgJ3wnIHx8IHRlc3QgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICc/JyB0aGVuIFJlLm9wdCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIFJlLnJlcG4gKFJlLm5lc3QgcikgaSBqXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLm5vdG5sIGVsc2UgUmUuYW55XG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgUmUuZ3JvdXAgclxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuYm9sIGVsc2UgUmUuYm9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUuZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuZGlmZiAoUmUuY29tcGwgKGJyYWNrZXQgW10pKSAoUmUuY2hhciAnXFxuJylcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd8JyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICc/J1xuICAgICAgfCAnWycgfCAnLicgfCAnXicgfCAnJCcgfCAneycgfCAnXFxcXCcgYXMgYyAtPiBSZS5jaGFyIGNcbiAgICAgIHwgICAgICAgICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJyonIHwgJysnIHwgJz8nIHwgJ3snIHwgJ1xcXFwnIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICB8ICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBpbnRlZ2VyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBOb25lIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBpbnRlZ2VyJyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKVxuICAgIHwgICAgIF8gICAgICAgIC0+IHVuZ2V0ICgpOyBOb25lXG4gIGFuZCBpbnRlZ2VyJyBpID1cbiAgICBpZiBlb3MgKCkgdGhlbiBTb21lIGkgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+XG4gICAgICAgIGxldCBpJyA9IDEwICogaSArIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpIGluXG4gICAgICAgIGlmIGknIDwgaSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBpbnRlZ2VyJyBpJ1xuICAgIHwgXyAtPlxuICAgICAgICB1bmdldCAoKTsgU29tZSBpXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkICgqWFhYKilcbiAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHQgJy4nKSB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWQ7XG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICddJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgY1xuICAgICAgZW5kIGVsc2VcbiAgICAgICAgY1xuICAgIGVuZCBlbHNlXG4gICAgICBjXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9IFtgSUNhc2UgfCBgTm9TdWIgfCBgTmV3bGluZV1cblxubGV0IHJlID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPSBwYXJzZSAoTGlzdC5tZW1xIGBOZXdsaW5lIG9wdHMpIHMgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYElDYXNlIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBOb1N1YiBvcHRzIHRoZW4gUmUubm9fZ3JvdXAgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSByZSA9IFJlLmNvbXBpbGUgKFJlLmxvbmdlc3QgcmUpXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMyBHYWJyaWVsIFJhZGFubmUgPGRydXB5b2crY2FtbEB6b2hvLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgdHlwZSAoLSdhLCAnYikgZnRcbiAgdmFsIGZtYXAgOiAoJ2EsICdiKSBmdCAtPiAnYSB0IC0+ICdiIHRcblxuICB0eXBlICdhIHRsaXN0XG4gIHZhbCBuaWwgOiB1bml0IC0+ICdhIHRsaXN0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSB0IC0+ICdhIHRsaXN0XG4gIHZhbCBjb25zIDogJ2EgdCAtPiAnYSB0bGlzdCAtPiAnYSB0bGlzdFxuICB2YWwgYXBwZW5kIDogJ2EgdGxpc3QgLT4gJ2EgdGxpc3QgLT4gJ2EgdGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIGZ0IC0+ICdhIHRsaXN0IC0+ICdiIHRsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgTm9XcmFwID1cbiAgVCB3aXRoIHR5cGUgJ2EgdCA9ICdhXG4gICAgIGFuZCB0eXBlICdhIHRsaXN0ID0gJ2EgbGlzdFxuICAgICBhbmQgdHlwZSAoLSdhLCAnYikgZnQgPSAnYSAtPiAnYlxuXG5tb2R1bGUgTm9XcmFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG4gIHR5cGUgJ2EgdGxpc3QgPSAnYSBsaXN0XG4gIHR5cGUgKC0nYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGxldCBmbWFwIGYgOiAgJ2EgdCAtPiAnYiB0ID0gZlxuXG4gIGxldCBuaWwgKCkgPSBbXVxuICBsZXQgc2luZ2xldG9uIHggPSBbeF1cbiAgbGV0IGNvbnMgeCB4cyA9IHg6OnhzXG4gIGxldCBhcHBlbmQgeCB5PSB4QHlcbiAgbGV0IG1hcCA9IExpc3QubWFwXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggR2FicmllbCBSYWRhbm5lXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG50eXBlIG5hbWUgPSBzdHJpbmcgKiBzdHJpbmdcblxuKCoqIElucHV0ICopXG5cbnR5cGUgc2lnbmFsID0gW1xuICB8IGBDb21tZW50IG9mIHN0cmluZ1xuICB8IGBFbmRfZWxlbWVudFxuICB8IGBTdGFydF9lbGVtZW50IG9mIG5hbWUgKiAobmFtZSAqIHN0cmluZykgbGlzdFxuICB8IGBUZXh0IG9mIHN0cmluZyBsaXN0XG5dXG5cbmV4Y2VwdGlvbiBNYWxmb3JtZWRfc3RyZWFtXG5cbm1vZHVsZSBJbXBvcnRcbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbj0gc3RydWN0XG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIGEgYiAtPiBYbWwuVy4oY29ucyAocmV0dXJuIGEpIGIpKVxuICAgICAgbCAoWG1sLlcubmlsICgpKVxuXG4gIGxldCBta19hdHRyaWJzIGF0dHJzID1cbiAgICAoKiBUT0RPOiBUaGlzIGlzIG5vdCB2ZXJ5IHN0cnVjdHVyZWQgKilcbiAgICBsZXQgZiAoKF8sbmFtZSksIHYpID0gWG1sLnN0cmluZ19hdHRyaWIgbmFtZSAoWG1sLlcucmV0dXJuIHYpIGluXG4gICAgTGlzdC5tYXAgZiBhdHRyc1xuXG4gIGxldCByZWMgbWsgY2hpbGRyZW4gKHNlcSA6IHNpZ25hbCBTZXEudCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgQ29ucyAoYENvbW1lbnQgcywgcSkgLT5cbiAgICAgIG1rIChYbWwuY29tbWVudCBzIDo6IGNoaWxkcmVuKSBxXG4gICAgfCBDb25zIChgVGV4dCBzLCBxKSAtPlxuICAgICAgbWsgKExpc3QubWFwIChmdW4geCAtPiBYbWwucGNkYXRhIEBAIFhtbC5XLnJldHVybiB4KSBzIEAgY2hpbGRyZW4pIHFcbiAgICB8IENvbnMgKGBTdGFydF9lbGVtZW50ICgoXywgbmFtZSksIGF0dHJzKSwgcSkgLT5cbiAgICAgIGxldCBhID0gbWtfYXR0cmlicyBhdHRycyBpblxuICAgICAgbGV0IHN1Yl9jaGlsZHJlbiwgcmVzdCA9IG1rIFtdIHEgaW5cbiAgICAgIG1rIChYbWwubm9kZSB+YSBuYW1lIHN1Yl9jaGlsZHJlbiA6OiBjaGlsZHJlbikgcmVzdFxuICAgIHwgQ29ucyAoYEVuZF9lbGVtZW50LCByZXN0KSAtPlxuICAgICAgb2ZfbGlzdCAoTGlzdC5yZXYgY2hpbGRyZW4pLCByZXN0XG4gICAgfCBOaWwgLT5cbiAgICAgIG9mX2xpc3QgKExpc3QucmV2IGNoaWxkcmVuKSwgU2VxLmVtcHR5XG5cbiAgbGV0IG9mX3NlcSBzZXEgPVxuICAgIGxldCBsLCByZXN0ID0gbWsgW10gc2VxIGluXG4gICAgbWF0Y2ggcmVzdCAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IGxcbiAgICB8IF8gLT4gcmFpc2UgTWFsZm9ybWVkX3N0cmVhbVxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDggVmluY2VudCBCYWxhdCwgTWF1cmljaW8gRmVybmFuZGV6XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbmxldCBpc19jb250cm9sIGMgPVxuICBsZXQgY2MgPSBDaGFyLmNvZGUgYyBpblxuICAoY2MgPD0gOCB8fCBjYyA9IDExIHx8IGNjID0gMTIgfHwgKDE0IDw9IGNjICYmIGNjIDw9IDMxKSB8fCBjYyA9IDEyNylcblxubGV0IGFkZF91bnNhZmVfY2hhciBiID0gZnVuY3Rpb25cbiAgfCAnPCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZsdDtcIlxuICB8ICc+JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmd0O1wiXG4gIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgfCAnJicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgfCBjIHdoZW4gaXNfY29udHJvbCBjIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjXCIgO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9pbnQgKENoYXIuY29kZSBjKSkgO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI7XCJcbiAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcblxubGV0IGVuY29kZV91bnNhZmVfY2hhciBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIFN0cmluZy5pdGVyIChhZGRfdW5zYWZlX2NoYXIgYikgcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGVuY29kZV91bnNhZmVfY2hhcl9hbmRfYXQgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgfCAnQCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjNjQ7XCJcbiAgICB8IGMgLT4gYWRkX3Vuc2FmZV9jaGFyIGIgY1xuICBpblxuICBTdHJpbmcuaXRlciBmIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBjb21wb3NlX2RlY2wgPyh2ZXJzaW9uID0gXCIxLjBcIikgPyhlbmNvZGluZyA9IFwiVVRGLThcIikgKCkgPVxuICBGb3JtYXQuc3ByaW50ZlxuICAgIHt8PD94bWwgdmVyc2lvbj1cIiVzXCIgZW5jb2Rpbmc9XCIlc1wiPz5cXG58fVxuICAgIHZlcnNpb24gZW5jb2RpbmdcblxubGV0IGNvbXBvc2VfZG9jdHlwZSBkdCBhcmdzID1cbiAgbGV0IHBwX2FyZ3MgZm10ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBsIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIgUFVCTElDICVhXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6Rm9ybWF0LnBwX3ByaW50X3NwYWNlXG4gICAgICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIikpXG4gICAgICAgIGxcbiAgaW5cbiAgRm9ybWF0LmFzcHJpbnRmXG4gICAgXCI8IURPQ1RZUEUgJXMlYT5cIlxuICAgIGR0XG4gICAgcHBfYXJncyBhcmdzXG5cbmxldCByZV9lbmRfY29tbWVudCA9IFJlLihjb21waWxlIEBAIGFsdCBbXG4gIHNlcSBbIGJvcyA7IHN0ciBcIj5cIiBdIDtcbiAgc2VxIFsgYm9zIDsgc3RyIFwiLT5cIiBdIDtcbiAgc3RyIFwiLS0+XCIgO1xuICBzdHIgXCItLSE+XCIgO1xuXSlcbmxldCBlc2NhcGVfY29tbWVudCBzID1cbiAgbGV0IGYgZyA9IG1hdGNoIFJlLkdyb3VwLmdldCBnIDAgd2l0aFxuICAgIHwgXCI+XCIgLT4gXCImZ3Q7XCJcbiAgICB8IFwiLT5cIiAtPiBcIi0mZ3Q7XCJcbiAgICB8IFwiLS0+XCIgLT4gXCItLSZndDtcIlxuICAgIHwgXCItLSE+XCIgLT4gXCItLSEmZ3Q7XCJcbiAgICB8IHMgLT4gc1xuICBpblxuICBSZS5yZXBsYWNlIH5hbGw6dHJ1ZSByZV9lbmRfY29tbWVudCB+ZiBzXG5cbigqIGNvcGllZCBmb3JtIGpzX29mX29jYW1sOiBjb21waWxlci9qYXZhc2NyaXB0Lm1sICopXG5sZXQgcHBfbnVtYmVyIGZtdCB2ID1cbiAgaWYgdiA9IGluZmluaXR5XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJJbmZpbml0eVwiXG4gIGVsc2UgaWYgdiA9IG5lZ19pbmZpbml0eVxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiLUluZmluaXR5XCJcbiAgZWxzZSBpZiB2IDw+IHZcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5hTlwiXG4gIGVsc2VcbiAgICBsZXQgdmludCA9IGludF9vZl9mbG9hdCB2IGluXG4gICAgKCogY29tcGlsZXIgMTAwMCBpbnRvIDFlMyAqKVxuICAgIGlmIGZsb2F0X29mX2ludCB2aW50ID0gdlxuICAgIHRoZW5cbiAgICAgIGxldCByZWMgZGl2IG4gaSA9XG4gICAgICAgIGlmIG4gPD4gMCAmJiBuIG1vZCAxMCA9IDBcbiAgICAgICAgdGhlbiBkaXYgKG4vMTApIChzdWNjIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgaWYgaSA+IDJcbiAgICAgICAgdGhlbiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZGUlZFwiIG4gaVxuICAgICAgICBlbHNlIEZvcm1hdC5wcF9wcmludF9pbnQgZm10IHZpbnQgaW5cbiAgICAgIGRpdiB2aW50IDBcbiAgICBlbHNlXG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTJnXCIgdiBpblxuICAgICAgaWYgdiA9IGZsb2F0X29mX3N0cmluZyBzMVxuICAgICAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzMVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgczIgPSBQcmludGYuc3ByaW50ZiBcIiUuMTVnXCIgdiBpblxuICAgICAgICBpZiB2ID0gZmxvYXRfb2Zfc3RyaW5nIHMyXG4gICAgICAgIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgczJcbiAgICAgICAgZWxzZSAgRm9ybWF0LmZwcmludGYgZm10IFwiJS4xOGdcIiB2XG5cbmxldCBzdHJpbmdfb2ZfbnVtYmVyIHYgPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwX251bWJlciB2XG5cbm1vZHVsZSBVdGY4ID0gc3RydWN0XG4gIHR5cGUgdXRmOCA9IHN0cmluZ1xuXG4gIGxldCBub3JtYWxpemUgc3JjID1cbiAgICBsZXQgd2FybiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHNyYykgaW5cbiAgICBVdXRmLlN0cmluZy5mb2xkX3V0Zl84XG4gICAgICAoZnVuIF8gXyBkIC0+XG4gICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgIHwgYFVjaGFyIGNvZGUgLT4gVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBjb2RlXG4gICAgICAgICB8IGBNYWxmb3JtZWQgXyAtPlxuICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBVdXRmLnVfcmVwO1xuICAgICAgICAgICAgICAgd2Fybjo9dHJ1ZSlcbiAgICAgICgpIHNyYztcbiAgICAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlciwgIXdhcm4pXG5cbiAgbGV0IG5vcm1hbGl6YXRpb25fbmVlZGVkIHNyYyA9XG4gICAgbGV0IHJlYyBsb29wIHNyYyBpIGwgPVxuICAgICAgaSA8IGwgJiZcbiAgICAgIG1hdGNoIHNyYy5baV0gd2l0aFxuICAgICAgKCogQ2hhcmFjdGVycyB0aGF0IG5lZWQgdG8gYmUgZW5jb2RlZCBpbiBIVE1MICopXG4gICAgICB8ICdcXDAzNCcgfCAnXFwwMzgnIHwgJ1xcMDYwJyB8J1xcMDYyJyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICgqIEFTQ0lJIGNoYXJhY3RlcnMgKilcbiAgICAgIHwgJ1xcMDA5JyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDMyJy4uJ1xcMTI2JyAtPlxuICAgICAgICAgIGxvb3Agc3JjIChpICsgMSkgbFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCBzcmMgMCAoU3RyaW5nLmxlbmd0aCBzcmMpXG5cbiAgbGV0IG5vcm1hbGl6ZV9odG1sIHNyYyA9XG4gICAgaWYgbm9ybWFsaXphdGlvbl9uZWVkZWQgc3JjIHRoZW4gYmVnaW5cbiAgICAgIGxldCB3YXJuID0gcmVmIGZhbHNlIGluXG4gICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzcmMpIGluXG4gICAgICBVdXRmLlN0cmluZy5mb2xkX3V0Zl84XG4gICAgICAgIChmdW4gXyBfIGQgLT5cbiAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgIHwgYFVjaGFyIHUgLT5cbiAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgICAgICAgICAgICAgIHwgMzQgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgfCAzOCAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZmZlciBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgIHwgNjAgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImbHQ7XCJcbiAgICAgICAgICAgICAgIHwgNjIgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImZ3Q7XCJcbiAgICAgICAgICAgICAgIHwgY29kZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCB1ID1cbiAgICAgICAgICAgICAgICAgICAgICgqIElsbGVnYWwgY2hhcmFjdGVycyBpbiBodG1sXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoYXJhY3Rlcl9lbmNvZGluZ3NfaW5fSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwgKilcbiAgICAgICAgICAgICAgICAgICAgIGlmICgqIEEuIGNvbnRyb2wgQzAgKilcbiAgICAgICAgICAgICAgICAgICAgICAgKGNvZGUgPD0gMzEgJiYgY29kZSA8PiA5ICYmIGNvZGUgPD4gMTAgJiYgY29kZSA8PiAxMylcbiAgICAgICAgICAgICAgICAgICAgICAgKCogQi4gREVMICsgY29udHJvbCBDMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAtIGludmFsaWQgaW4gaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtIGRpc2NvdXJhZ2VkIGluIHhtbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IDB4ODUgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGxldCdzIGRpc2NhcmQgaXQgYW55d2F5ICopXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IChjb2RlID49IDEyNyAmJiBjb2RlIDw9IDE1OSlcbiAgICAgICAgICAgICAgICAgICAgICAgKCogQy4gVVRGLTE2IHN1cnJvZ2F0ZSBoYWx2ZXMgOiBhbHJlYWR5IGRpc2NhcmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieSB1dXRmIHx8IChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikgKilcbiAgICAgICAgICAgICAgICAgICAgICAgKCogRC4gQk9NIHJlbGF0ZWQgKilcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgY29kZSBsYW5kIDB4RkZGRiA9IDB4RkZGRVxuICAgICAgICAgICAgICAgICAgICAgICB8fCBjb2RlIGxhbmQgMHhGRkZGID0gMHhGRkZGXG4gICAgICAgICAgICAgICAgICAgICB0aGVuICh3YXJuOj10cnVlOyBVdXRmLnVfcmVwKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSB1XG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBVdXRmLkJ1ZmZlci5hZGRfdXRmXzggYnVmZmVyIHVcbiAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICB8IGBNYWxmb3JtZWQgXyAtPlxuICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciBVdXRmLnVfcmVwO1xuICAgICAgICAgICAgICAgd2Fybjo9dHJ1ZSlcbiAgICAgICAgKCkgc3JjO1xuICAgICAgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIsICF3YXJuKVxuICAgIGVuZCBlbHNlXG4gICAgICAoc3JjLCBmYWxzZSlcblxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhZ0xpc3QgPSBzaWcgdmFsIGVtcHR5dGFncyA6IHN0cmluZyBsaXN0IGVuZFxuXG4oKiogRm9ybWF0IGJhc2VkIHByaW50ZXJzICopXG5cbmxldCBwcF9ub29wIF9mbXQgXyA9ICgpXG5cbm1vZHVsZSBNYWtlX2ZtdFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpID1cbnN0cnVjdFxuICBvcGVuIFhtbFxuXG4gIGxldCBvcGVuX2JveCBpbmRlbnQgZm10ID0gaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX29wZW5fYm94IGZtdCAwIGVsc2UgKClcbiAgbGV0IGNsb3NlX2JveCBpbmRlbnQgZm10ID0gaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkgZWxzZSAoKVxuICBsZXQgc3AgaW5kZW50IGZtdCA9XG4gICAgaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKSBlbHNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiXG4gIGxldCBjdXQgaW5kZW50IGZtdCA9XG4gICAgaWYgaW5kZW50IHRoZW4gRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCkgZWxzZSAoKVxuXG4gIG1vZHVsZSBTID0gU2V0Lk1ha2UoU3RyaW5nKVxuICBsZXQgaXNfZW1wdHl0YWcgPSBtYXRjaCBJLmVtcHR5dGFncyB3aXRoXG4gICAgfCBbXSAtPiBmdW4gXyAtPiBmYWxzZVxuICAgIHwgbCAtPlxuICAgICAgbGV0IHNldCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IFMuYWRkIHggcykgUy5lbXB0eSBsIGluXG4gICAgICBmdW4geCAtPiBTLm1lbSB4IHNldFxuXG4gIGxldCBwcF9lbmNvZGUgZW5jb2RlIGluZGVudCBmbXQgcyA9XG4gICAgbGV0IHMgPSBlbmNvZGUgcyBpblxuICAgIGlmIGluZGVudCB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWyVhQF1cIiBGb3JtYXQucHBfcHJpbnRfdGV4dCBzXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuXG4gIGxldCBwcF9zZXAgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFNwYWNlIC0+IGZ1biBmbXQgKCkgLT4gc3AgaW5kZW50IGZtdFxuICAgIHwgQ29tbWEgLT4gZnVuIGZtdCAoKSAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIsJXRcIiAoc3AgaW5kZW50KVxuXG4gIGxldCBwcF9hdHRyaWJfdmFsdWUgZW5jb2RlIGluZGVudCBmbXQgYSA9IG1hdGNoIGFjb250ZW50IGEgd2l0aFxuICAgIHwgQUZsb2F0IGYgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVhXFxcIlwiIHBwX251bWJlciBmXG4gICAgfCBBSW50IGkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVkXFxcIlwiIGlcbiAgICB8IEFTdHIgcyAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIgKGVuY29kZSBzKVxuICAgIHwgQVN0ckwgKHNlcCwgc2xpc3QpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJWFcXFwiXCJcbiAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6KHBwX3NlcCBpbmRlbnQgc2VwKVxuICAgICAgICAgICAocHBfZW5jb2RlIGVuY29kZSBpbmRlbnQpKSBzbGlzdFxuXG4gIGxldCBwcF9hdHRyaWIgZW5jb2RlIGluZGVudCBmbXQgYSA9XG4gICAgRm9ybWF0LmZwcmludGYgZm10XG4gICAgICBcIiV0JXM9JWFcIiAoc3AgaW5kZW50KSAoYW5hbWUgYSkgKHBwX2F0dHJpYl92YWx1ZSBlbmNvZGUgaW5kZW50KSBhXG5cbiAgbGV0IHBwX2F0dHJpYnMgZW5jb2RlIGluZGVudCA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcDpwcF9ub29wIChwcF9hdHRyaWIgZW5jb2RlIGluZGVudClcblxuICBsZXQgcHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQgZm10ICh0YWcsIGF0dHJzKSA9XG4gICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXMlYSV0XCIgdGFnIChwcF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpIGF0dHJzIChjdXQgaW5kZW50KTtcbiAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuXG4gIGxldCBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzID1cbiAgICBpZiBpc19lbXB0eXRhZyB0YWcgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCVhLz5cIiAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiPCVhPiV0PC8lcz5cIlxuICAgICAgICAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgdGFnIDtcbiAgICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG4gICAgZW5kXG5cbiAgbGV0IHJlYyBwcF90YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgfCBbXSAtPiBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgdGFnIGF0dHJzXG4gICAgfCBfIC0+XG4gICAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwldCVhPiV0JWEldCV0PC8lcz5cIlxuICAgICAgICAob3Blbl9ib3ggaW5kZW50KVxuICAgICAgICAocHBfdGFnX2FuZF9hdHRyaWJzIGVuY29kZSBpbmRlbnQpICh0YWcsIGF0dHJzKVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgKHBwX2VsdHMgZW5jb2RlIGluZGVudCkgY2hpbGRyZW5cbiAgICAgICAgKGNsb3NlX2JveCBpbmRlbnQpXG4gICAgICAgIChjdXQgaW5kZW50KVxuICAgICAgICB0YWcgO1xuICAgICAgY2xvc2VfYm94IGluZGVudCBmbXRcblxuICBhbmQgcHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IGVsdCA9IG1hdGNoIGNvbnRlbnQgZWx0IHdpdGhcbiAgICB8IENvbW1lbnQgdGV4dGUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwhLS0lcy0tPlwiIChlc2NhcGVfY29tbWVudCB0ZXh0ZSlcblxuICAgIHwgRW50aXR5IGUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiYlcztcIiBlXG5cbiAgICB8IFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgcHBfZW5jb2RlIGVuY29kZSBpbmRlbnQgZm10IHRleHRlXG5cbiAgICB8IEVuY29kZWRQQ0RBVEEgdGV4dGUgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHRleHRlXG5cbiAgICB8IE5vZGUgKG5hbWUsIHhoX2F0dHJzLCB4aF90YWdsaXN0KSAtPlxuICAgICAgcHBfdGFnIGVuY29kZSBpbmRlbnQgZm10IG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdFxuXG4gICAgfCBMZWFmIChuYW1lLCB4aF9hdHRycykgLT5cbiAgICAgIHBwX2Nsb3NlZHRhZyBlbmNvZGUgaW5kZW50IGZtdCBuYW1lIHhoX2F0dHJzXG5cbiAgICB8IEVtcHR5IC0+ICgpXG5cbiAgYW5kIHBwX2VsdHMgZW5jb2RlIGluZGVudCA9XG4gICAgRm9ybWF0LnBwX3ByaW50X2xpc3RcbiAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gY3V0IGluZGVudCBmbXQpXG4gICAgICAocHBfZWx0IGVuY29kZSBpbmRlbnQpXG5cbiAgbGV0IHBwID8oZW5jb2RlPWVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpICgpID1cbiAgICBwcF9lbHQgZW5jb2RlIGluZGVudFxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRfZm10XG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFAgPSBNYWtlX2ZtdChYbWwpKFR5cGVkX3htbC5JbmZvKVxuXG4gICgqIEFkZCBhbiB4bWxucyB0YWcgb24gdGhlIGh0bWwgZWxlbWVudCBpZiBpdCdzIG5vdCBhbHJlYWR5IHByZXNlbnQgKilcbiAgbGV0IHByZXBhcmVfZG9jdW1lbnQgZG9jID1cbiAgICBsZXQgZG9jID0gVHlwZWRfeG1sLmRvY190b2VsdCBkb2MgaW5cbiAgICBtYXRjaCBYbWwuY29udGVudCBkb2Mgd2l0aFxuICAgIHwgWG1sLk5vZGUgKG4sIGEsIGMpIC0+XG4gICAgICBsZXQgYSA9XG4gICAgICAgIGlmIExpc3QuZXhpc3RzIChmdW4gYSAtPiBYbWwuYW5hbWUgYSA9IFwieG1sbnNcIikgYVxuICAgICAgICB0aGVuIGFcbiAgICAgICAgZWxzZSBYbWwuc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgVHlwZWRfeG1sLkluZm8ubmFtZXNwYWNlIDo6IGFcbiAgICAgIGluXG4gICAgICBYbWwubm9kZSB+YSBuIGNcbiAgICB8IF8gLT4gZG9jXG5cbiAgbGV0IHBwX2VsdCA/KGVuY29kZT1lbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSAoKSBmbXQgZm9yZXQgPVxuICAgIFAucHBfZWx0IGVuY29kZSBpbmRlbnQgZm10IChUeXBlZF94bWwudG9lbHQgZm9yZXQpXG5cbiAgbGV0IHBwID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgP2FkdmVydCAoKSBmbXQgZG9jID1cbiAgICBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCAwIDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc0AsXCIgVHlwZWRfeG1sLkluZm8uZG9jdHlwZSA7XG5cbiAgICBiZWdpbiBtYXRjaCBhZHZlcnQgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiPCEtLSAlcyAtLT5ALFwiIHNcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGVuZCA7XG5cbiAgICBQLnBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCAocHJlcGFyZV9kb2N1bWVudCBkb2MpIDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKTtcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdClcbiAgICAoTyA6IFhtbF9zaWdzLk91dHB1dCkgPVxuc3RydWN0XG5cbiAgbGV0ICgrKykgPSBPLmNvbmNhdFxuXG4gIG9wZW4gWG1sXG5cbiAgbGV0IHNlcGFyYXRvcl90b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3BhY2UgLT4gXCIgXCJcbiAgICB8IENvbW1hIC0+IFwiLCBcIlxuXG4gIGxldCBhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIGVuY29kZSBhID0gbWF0Y2ggYWNvbnRlbnQgYSB3aXRoXG4gICAgfCBBRmxvYXQgZiAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIiAoc3RyaW5nX29mX251bWJlciBmKVxuICAgIHwgQUludCBpIC0+IFByaW50Zi5zcHJpbnRmIFwiXFxcIiVkXFxcIlwiIGlcbiAgICB8IEFTdHIgcyAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIiAoZW5jb2RlIHMpXG4gICAgfCBBU3RyTCAoc2VwLCBzbGlzdCkgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiXFxcIiVzXFxcIlwiXG4gICAgICAgIChlbmNvZGUgKFN0cmluZy5jb25jYXQgKHNlcGFyYXRvcl90b19zdHJpbmcgc2VwKSBzbGlzdCkpXG5cbiAgbGV0IGF0dHJpYl90b19zdHJpbmcgZW5jb2RlIGEgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM9JXNcIiAoYW5hbWUgYSkgKGF0dHJpYl92YWx1ZV90b19zdHJpbmcgZW5jb2RlIGEpXG5cbiAgbGV0IHJlYyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnMgPSBtYXRjaCBhdHRycyB3aXRoXG4gICAgfCBbXSAtPiBPLmVtcHR5XG4gICAgfCBhdHRyOjpxdWV1ZSAtPlxuICAgICAgTy5wdXQgKFwiIFwiXiBhdHRyaWJfdG9fc3RyaW5nIGVuY29kZSBhdHRyKVxuICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIHF1ZXVlXG5cbiAgYW5kIHhoX3ByaW50X2Nsb3NlZHRhZyBlbmNvZGUgdGFnIGF0dHJzID1cbiAgICBpZiBJLmVtcHR5dGFncyA9IFtdIHx8IExpc3QubWVtIHRhZyBJLmVtcHR5dGFnc1xuICAgIHRoZW5cbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IFwiIC8+XCIpXG4gICAgZWxzZVxuICAgICAgKE8ucHV0IChcIjxcIl50YWcpXG4gICAgICAgKysgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzXG4gICAgICAgKysgTy5wdXQgKFwiPjwvXCJedGFnXlwiPlwiKSlcblxuICBhbmQgeGhfcHJpbnRfdGFnIGVuY29kZSB0YWcgYXR0cnMgdGFnbGlzdCA9XG4gICAgaWYgdGFnbGlzdCA9IFtdXG4gICAgdGhlbiB4aF9wcmludF9jbG9zZWR0YWcgZW5jb2RlIHRhZyBhdHRyc1xuICAgIGVsc2VcbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IFwiPlwiXG4gICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgdGFnbGlzdFxuICAgICAgICsrIE8ucHV0IChcIjwvXCJedGFnXlwiPlwiKSlcblxuICBhbmQgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdCBxdWV1ZSA9XG4gICAgeGhfcHJpbnRfdGFnIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3RcbiAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gIGFuZCB4aF9wcmludF90YWdsaXN0IGVuY29kZSB0YWdsaXN0ID1cbiAgICBtYXRjaCB0YWdsaXN0IHdpdGhcblxuICAgIHwgW10gLT4gTy5lbXB0eVxuXG4gICAgfCBlbHQgOjogcXVldWUgLT4gbWF0Y2ggY29udGVudCBlbHQgd2l0aFxuXG4gICAgICB8IENvbW1lbnQgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgKFwiPCEtLVwiXihlbmNvZGUgdGV4dGUpXlwiLS0+XCIpXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgRW50aXR5IGUgLT5cbiAgICAgICAgTy5wdXQgKFwiJlwiXmVeXCI7XCIpICgqIG5vIGVuY29kaW5nICopXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgUENEQVRBIHRleHRlIC0+XG4gICAgICAgIE8ucHV0IChlbmNvZGUgdGV4dGUpXG4gICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgICAgIHwgRW5jb2RlZFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCB0ZXh0ZVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IE5vZGUgKG5hbWUsIHhoX2F0dHJzLCB4aF90YWdsaXN0KSAtPlxuICAgICAgICBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0IHF1ZXVlXG5cbiAgICAgIHwgTGVhZiAobmFtZSwgeGhfYXR0cnMpIC0+XG4gICAgICAgIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIFtdIHF1ZXVlXG5cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICBsZXQgcHJpbnRfbGlzdCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgZm9yZXQgPVxuICAgIE8ubWFrZSAoeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgZm9yZXQpXG5cbmVuZFxuXG5tb2R1bGUgTWFrZV90eXBlZFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpXG4gICAgKE8gOiBYbWxfc2lncy5PdXRwdXQpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBQID0gTWFrZShYbWwpKFR5cGVkX3htbC5JbmZvKShPKVxuICBsZXQgKCsrKSA9IE8uY29uY2F0XG5cbiAgbGV0IHByaW50X2xpc3QgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpIGZvcmV0ID1cbiAgICBPLm1ha2UgKFAueGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgKExpc3QubWFwIFR5cGVkX3htbC50b2VsdCBmb3JldCkpXG5cbiAgbGV0IHByaW50ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGFkdmVydCA9IFwiXCIpIGRvYyA9XG4gICAgbGV0IGRvYyA9IFR5cGVkX3htbC5kb2NfdG9lbHQgZG9jIGluXG4gICAgbGV0IGRvYyA9IG1hdGNoIFhtbC5jb250ZW50IGRvYyB3aXRoXG4gICAgICB8IFhtbC5Ob2RlIChuLCBhLCBjKSAtPlxuICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1biBhIC0+IFhtbC5hbmFtZSBhID0gXCJ4bWxuc1wiKSBhXG4gICAgICAgICAgdGhlbiBhXG4gICAgICAgICAgZWxzZSBYbWwuc3RyaW5nX2F0dHJpYiBcInhtbG5zXCIgVHlwZWRfeG1sLkluZm8ubmFtZXNwYWNlIDo6IGFcbiAgICAgICAgaW5cbiAgICAgICAgWG1sLm5vZGUgfmEgbiBjXG4gICAgICB8IF8gLT4gZG9jIGluXG4gICAgTy5tYWtlXG4gICAgICAoTy5wdXQgVHlwZWRfeG1sLkluZm8uZG9jdHlwZVxuICAgICAgICsrIE8ucHV0IChpZiBhZHZlcnQgPD4gXCJcIiB0aGVuIChcIjwhLS0gXCIgXiBhZHZlcnQgXiBcIiAtLT5cXG5cIikgZWxzZSBcIlxcblwiKVxuICAgICAgICsrIFAueGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgW2RvY10pXG5cbmVuZFxuXG5tb2R1bGUgU2ltcGxlX291dHB1dChNIDogc2lnIHZhbCBwdXQ6IHN0cmluZyAtPiB1bml0IGVuZCkgPSBzdHJ1Y3RcbiAgdHlwZSBvdXQgPSB1bml0XG4gIHR5cGUgbSA9IHVuaXQgLT4gdW5pdFxuICBsZXQgZW1wdHkgKCkgPSAoKVxuICBsZXQgY29uY2F0IGYxIGYyICgpID0gZjEgKCk7IGYyICgpXG4gIGxldCBwdXQgcyAoKSA9IE0ucHV0IHNcbiAgbGV0IG1ha2UgZiA9IGYgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zaW1wbGVcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KSA9XG5zdHJ1Y3RcblxuICBsZXQgcHJpbnRfbGlzdCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPSBNYWtlKFhtbCkoSSkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRfbGlzdFxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRfc2ltcGxlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChUeXBlZF94bWwgOiBYbWxfc2lncy5UeXBlZF94bWwgd2l0aCAgbW9kdWxlIFhtbCA6PSBYbWwpID1cbnN0cnVjdFxuXG4gIGxldCBwcmludF9saXN0IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBNYWtlX3R5cGVkKFhtbCkoVHlwZWRfeG1sKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludF9saXN0XG5cbiAgbGV0IHByaW50IH5vdXRwdXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBNYWtlX3R5cGVkKFhtbCkoVHlwZWRfeG1sKShTaW1wbGVfb3V0cHV0KHN0cnVjdCBsZXQgcHV0ID0gb3V0cHV0IGVuZCkpIGluXG4gICAgTS5wcmludFxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNYWtlKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKSA9IHN0cnVjdFxuXG4gIG9wZW4gWG1sXG5cbiAgKCoqIEl0ZXJhdG9ycyAqKVxuXG4gIGxldCBhbWFwMSBmIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSB8IENvbW1lbnQgXyB8IFBDREFUQSBfIHwgRW5jb2RlZFBDREFUQSBfIHwgRW50aXR5IF8gLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT4gbGVhZiB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWVcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+IG5vZGUgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lIGVsdHNcblxuICBsZXQgcmVjIGFtYXAgZiBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IGxlYWYgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgbm9kZSB+YTooZiBuYW1lIGF0dHJpYnMpIG5hbWUgKExpc3QubWFwIChhbWFwIGYpIGVsdHMpXG5cbiAgbGV0IHJlYyBhZGRfZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgIGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9mbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9mbG9hdF9hdHRyaWIgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFGbG9hdCB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gZmxvYXRfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9pbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW2ludF9hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBpbnRfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX2ludF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBybV9hdHRyaWIgaXNfYXR0cmliID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IHJtX2F0dHJpYiBpc19hdHRyaWIgdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogcm1fYXR0cmliIGlzX2F0dHJpYiB0YWlsXG5cbiAgbGV0IG1hcF9pbnRfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBSW50IHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBpbnRfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9zdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgOjogdGFpbFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IGhlYWQgOjogYWRkX3N0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9zdHJpbmdfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyIHZhbHVlIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBzdHJpbmdfYXR0cmliIChhbmFtZSBoZWFkKSAoZiB2YWx1ZSlcbiAgICAgIHwgXyAtPiBoZWFkIGluXG4gICAgTGlzdC5tYXAgYXV4IGxcblxuICBsZXQgcmVjIGFkZF9zcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW3NwYWNlX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdXVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMnKSB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIHNwYWNlX3NlcF9hdHRyaWIgbmFtZSAodmFsdWUgOjogdmFsdWVzJykgOjogdGFpbFxuICAgICAgfCBfIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV0gOjogdGFpbFxuICAgICAgfCBfIC0+IGhlYWQgOjogYWRkX3NwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSB0YWlsXG5cbiAgbGV0IHJlYyBhZGRfY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtjb21tYV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXV1cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChDb21tYSwgdmFsdWVzJykgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBjb21tYV9zZXBfYXR0cmliIG5hbWUgKHZhbHVlIDo6IHZhbHVlcycpIDo6IHRhaWxcbiAgICAgIHwgXyB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdIDo6IHRhaWxcbiAgICAgIHwgXyAtPiBoZWFkIDo6IGFkZF9jb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgcm1fYXR0cmliX2Zyb21fbGlzdCBpc19hdHRyaWIgaXNfdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChzZXAsIHZhbHVlcykgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIExpc3QuZmlsdGVyIChmdW4gdiAtPiBub3QgKGlzX3ZhbHVlIHYpKSB2YWx1ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gdGFpbFxuICAgICAgICAgIHwgdmFsdWVzJyAtPlxuICAgICAgICAgICAgbWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgICAgIHwgU3BhY2UgLT4gc3BhY2Vfc2VwX2F0dHJpYiAoYW5hbWUgaGVhZCkgdmFsdWVzJyA6OiB0YWlsXG4gICAgICAgICAgICB8IENvbW1hIC0+IGNvbW1hX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIHZhbHVlcycgOjogdGFpbFxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBoZWFkIDo6IHJtX2F0dHJpYl9mcm9tX2xpc3QgaXNfYXR0cmliIGlzX3ZhbHVlIHRhaWxcblxuICBsZXQgbWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ckwgKHNlcCwgdmFsdWVzKSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgICB8IENvbW1hIC0+IGNvbW1hX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIChMaXN0Lm1hcCBmIHZhbHVlcylcbiAgICAgICAgICB8IFNwYWNlIC0+IHNwYWNlX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIChMaXN0Lm1hcCBmIHZhbHVlcylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBmb2xkIG9mX2VtcHR5IG9mX2NvbW1lbnQgb2ZfdHh0IG9mX2VuY29kZWRwY2RhdGEgb2ZfZW50aXR5XG4gICAgICBvZl9sZWFmIG9mX25vZGUgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IC0+IG9mX2VtcHR5ICgpXG4gICAgfCBDb21tZW50IHMgLT4gb2ZfY29tbWVudCBzXG4gICAgfCBQQ0RBVEEgcyAtPiBvZl90eHQgc1xuICAgIHwgRW5jb2RlZFBDREFUQSBzIC0+IG9mX2VuY29kZWRwY2RhdGEgc1xuICAgIHwgRW50aXR5IHMgLT4gb2ZfZW50aXR5IHNcbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IG9mX2xlYWYgbmFtZSBhdHRyaWJzXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgb2Zfbm9kZSBuYW1lIGF0dHJpYnNcbiAgICAgICAgKExpc3QubWFwIChmb2xkIG9mX2VtcHR5IG9mX2NvbW1lbnQgb2ZfdHh0IG9mX2VuY29kZWRwY2RhdGEgb2ZfZW50aXR5IG9mX2xlYWYgb2Zfbm9kZSkgZWx0cylcblxuICBsZXQgYWxsX2VudGl0aWVzIGVsdCA9XG4gICAgbGV0IGYgXyA9IFtdIGluXG4gICAgZm9sZCBmIGYgZiBmIGZcbiAgICAgIChmdW4gX2VuYW1lIF9hdHRyaWJzIC0+IFtdKSAoZnVuIF9lbmFtZSBfYXR0cmlicyBlbHRzIC0+IExpc3QuZmxhdHRlbiBlbHRzKVxuICAgICAgZWx0XG5cbiAgbGV0IGZsYXRtYXAgZiBsID0gTGlzdC5jb25jYXQgKExpc3QubWFwIGYgbClcblxuICBsZXQgdHJhbnNsYXRlIHJvb3RfbGVhZiByb290X25vZGUgc3ViX2xlYWYgc3ViX25vZGUgdXBkYXRlX3N0YXRlIHN0YXRlIG4gPVxuICAgIGxldCByZWMgdHJhbnNsYXRlJyBzdGF0ZSAgbiA9XG4gICAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgICAgfCAoRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfKSAtPiBbbl1cbiAgICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT5cbiAgICAgICAgc3ViX2xlYWYgc3RhdGUgbmFtZSBhdHRyaWJzXG4gICAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICAgIHN1Yl9ub2RlIHN0YXRlIG5hbWUgYXR0cmlic1xuICAgICAgICAgIChmbGF0bWFwICh0cmFuc2xhdGUnICh1cGRhdGVfc3RhdGUgbmFtZSBhdHRyaWJzIHN0YXRlKSkgZWx0cylcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCAoRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfKSAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPlxuICAgICAgcm9vdF9sZWFmIG5hbWUgYXR0cmlic1xuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIHJvb3Rfbm9kZSBuYW1lIGF0dHJpYnMgKGZsYXRtYXAgKHRyYW5zbGF0ZScgc3RhdGUpIGVsdHMpXG5cbmVuZFxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBTaW1vbiBDYXN0ZWxsYW5cbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBDZWNpbGUgSGVyYmVsaW5cbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBWaW5jZW50IEJhbGF0XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG4oKiogVHlwZSBpbnN0YW50aWF0aW9ucyBmb3IgU1ZHICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGJhc2ljIGRhdGEgdHlwZXMgZm9yIGRhdGEsIGF0dHJpYnV0ZXNcbiAgICBhbmQgZWxlbWVudCBvY2N1cnJpbmcgaW4gU1ZHIGRvY3VtZW50cy5cbiAgICBJdCBpcyBiYXNlZCBvbiB0aGUgc3BlY2lmaWNhdGlvbiBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHLy5cblxuICAgIFRoaXMgbW9kdWxlIGlzIGV4cGVyaW1lbnRhbCwgaXQgbWF5IGxhY2sgb2Ygc29tZSBhdHRyaWJ1dGVzLFxuICAgIGFuZCB0aGUgaW50ZXJmYWNlIGlzIHZlcnkgbG93IGxldmVsIGFuZCBkbyBub3QgdGFrZSBkZWVwbHkgaW50byBhY2NvdW50XG4gICAgdGhlIG5lZWRzIG9mIFNWRyBlbGVtZW50cy4gKilcblxub3BlbiBTdmdfdHlwZXNcblxub3BlbiBVbml0XG5cbmxldCBzdHJpbmdfb2ZfaXJpIHggPSBQcmludGYuc3ByaW50ZiBcInVybCglcylcIiB4XG5cbm1vZHVsZSBVbml0ID0gc3RydWN0XG5cbiAgKCogbGV0IHJlbCB4ICAgICA9ICh4LCBOb25lKSAqKVxuICAoKiBsZXQgZGVnIHggICAgID0gKHgsIFNvbWUgYERlZykgKilcbiAgKCogbGV0IGdyYWQgeCAgICA9ICh4LCBTb21lIGBHcmFkKSAqKVxuICAoKiBsZXQgcmFkIHggICAgID0gKHgsIFNvbWUgYFJhZCkgKilcbiAgKCogbGV0IG1zIHggICAgICA9ICh4LCBTb21lIGBNcykgKilcbiAgKCogbGV0IHMgeCAgICAgICA9ICh4LCBTb21lIGBTKSAqKVxuICAoKiBsZXQgZW0geCAgICAgID0gKHgsIFNvbWUgYEVtKSAqKVxuICAoKiBsZXQgZXggeCAgICAgID0gKHgsIFNvbWUgYEV4KSAqKVxuICAoKiBsZXQgcHggeCAgICAgID0gKHgsIFNvbWUgYFB4KSAqKVxuICAoKiBsZXQgaW5fIHggICAgID0gKHgsIFNvbWUgYEluKSAqKVxuICAoKiBsZXQgY20geCAgICAgID0gKHgsIFNvbWUgYENtKSAqKVxuICAoKiBsZXQgbW0geCAgICAgID0gKHgsIFNvbWUgYE1tKSAqKVxuICAoKiBsZXQgcHQgeCAgICAgID0gKHgsIFNvbWUgYFB0KSAqKVxuICAoKiBsZXQgcGMgeCAgICAgID0gKHgsIFNvbWUgYFBjKSAqKVxuICAoKiBsZXQgcGVyY2VudCB4ID0gKHgsIFNvbWUgYFBlcmNlbnQpICopXG4gICgqIGxldCBoeiB4ICAgICAgPSAoeCwgU29tZSBgSHopICopXG4gICgqIGxldCBraHogeCAgICAgPSAoeCwgU29tZSBgS0h6KSAqKVxuXG4gIGxldCB0b19zdHJpbmcgZiAobiwgdW5pdCkgPSBQcmludGYuc3ByaW50ZiBcIiVnJXNcIiBuIGJlZ2luXG4gICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgfCBTb21lIHVuaXQgLT4gZiB1bml0XG4gICAgfCBOb25lIC0+IFwiXCJcbiAgZW5kXG5cbiAgbGV0IGFuZ2xlX25hbWVzID0gZnVuY3Rpb24gYERlZyAtPiBcImRlZ1wiIHwgYEdyYWQgLT4gXCJncmFkXCIgfCBgUmFkIC0+IFwicmFkXCJcbiAgbGV0IHN0cmluZ19vZl9hbmdsZSBhID0gdG9fc3RyaW5nIGFuZ2xlX25hbWVzIGFcblxuICAoKiBsZXQgdGltZV9uYW1lcyA9IGZ1bmN0aW9uIGBNcyAtPiBcIm1zXCIgfCBgUyAtPiBcInNcIiAqKVxuICAoKiBsZXQgc3RyaW5nX29mX3RpbWUgYSA9IHRvX3N0cmluZyB0aW1lX25hbWVzIGEgKilcblxuICBsZXQgbGVuZ3RoX25hbWVzID0gZnVuY3Rpb25cbiAgICB8IGBFbSAtPiBcImVtXCIgfCBgRXggLT4gXCJleFwiIHwgYFB4IC0+IFwicHhcIiB8IGBJbiAtPiBcImluXCIgfCBgQ20gLT4gXCJjbVwiXG4gICAgfCBgTW0gLT4gXCJtbVwiIHwgYFB0IC0+IFwicHRcIiB8IGBQYyAtPiBcInBjXCIgfCBgUGVyY2VudCAtPiBcIiVcIlxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCAoYTogbGVuZ3RoKSA9IHRvX3N0cmluZyBsZW5ndGhfbmFtZXMgYVxuXG4gICgqIGxldCBmcmVxX25hbWVzID0gZnVuY3Rpb24gYEh6IC0+IFwiSHpcIiB8IGBLSHogLT4gXCJrSHpcIiAqKVxuICAoKiBsZXQgc3RyaW5nX29mX2ZyZXEgYSA9IHRvX3N0cmluZyBmcmVxX25hbWVzIGEgKilcblxuZW5kXG5cbm9wZW4gVW5pdFxuXG5sZXQgb3B0X2NvbmNhdCA/KHNlcD1cIiBcIikgcyBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gcyBeIHNlcCBeIChmIHgpXG4gIHwgTm9uZSAtPiBzXG5cbmxldCBsaXN0ID8oc2VwPVwiIFwiKSBmIGwgPSBTdHJpbmcuY29uY2F0IHNlcCAoTGlzdC5tYXAgZiBsKVxuXG5sZXQgc3RyaW5nX29mX2NvbG9yIHMgPSBzXG4oKiBGb3Igbm93IGp1c3Qgc3RyaW5nLCB3ZSBtYXkgd2FudCBzb21ldGhpbmcgYmV0dGVyIGluIHRoZSBmdXR1cmUuICopXG5cbmxldCBzdHJpbmdfb2ZfaWNjY29sb3IgcyA9IHNcblxubGV0IHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyA9IGZ1bmN0aW9uXG4gIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgfCBgQ3VycmVudENvbG9yIC0+IFwiY3VycmVudENvbG9yXCJcbiAgfCBgQ29sb3IgKGMsIGljYykgLT4gb3B0X2NvbmNhdCAoc3RyaW5nX29mX2NvbG9yIGMpIHN0cmluZ19vZl9pY2Njb2xvciBpY2NcblxubGV0IHN0cmluZ19vZl9wYWludCA9IGZ1bmN0aW9uXG4gIHwgYEljYyAoaXJpLCBOb25lKSAtPiBzdHJpbmdfb2ZfaXJpIGlyaVxuICB8IGBJY2MgKGlyaSwgU29tZSBiKSAtPlxuICAgIChzdHJpbmdfb2ZfaXJpIGlyaSkgXlwiIFwiXiAoc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIGIpXG4gIHwgI3BhaW50X3doaXRvdXRfaWNjIGFzIGMgLT4gc3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIGNcblxubGV0IHN0cmluZ19vZl9maWxsX3J1bGUgPSBmdW5jdGlvblxuICB8IGBOb256ZXJvIC0+IFwibm9uemVyb1wiXG4gIHwgYEV2ZW5vZGQgLT4gXCJldmVub2RkXCJcblxubW9kdWxlIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9uc1xuXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG4gICAgKEMgOiBTdmdfc2lncy5XcmFwcGVkX2Z1bmN0aW9ucyB3aXRoIG1vZHVsZSBYbWwgPSBYbWwpID1cblxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuICBtb2R1bGUgVyA9IFhtbC5XXG5cbiAgbW9kdWxlIEluZm8gPSBzdHJ1Y3RcbiAgICBsZXQgY29udGVudF90eXBlID0gXCJpbWFnZS9zdmcreG1sXCJcbiAgICBsZXQgYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyA9IFtdXG4gICAgbGV0IGVtcHR5dGFncyA9IFtdXG4gICAgbGV0IHZlcnNpb24gPSBcIlNWRyAxLjFcIlxuICAgIGxldCBzdGFuZGFyZCA9IFwiaHR0cDovL3d3dy53My5vcmcvVFIvc3ZnMTEvXCJcbiAgICBsZXQgbmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgbGV0IGRvY3R5cGUgPVxuICAgICAgWG1sX3ByaW50LmNvbXBvc2VfZG9jdHlwZVwic3ZnXCJcbiAgICAgICAgW1wiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU5cIjtcbiAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkXCJdXG4gIGVuZFxuXG4gIHR5cGUgdXJpID0gWG1sLnVyaVxuICBsZXQgc3RyaW5nX29mX3VyaSA9IFhtbC5zdHJpbmdfb2ZfdXJpXG4gIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuXG4gICgqIE1hbmRhdG9yeSBYTUwgc3R1ZmYuICopXG5cbiAgdHlwZSAnYSBhdHRyaWIgPSBYbWwuYXR0cmliXG5cbiAgdHlwZSArJ2EgZWx0ID0gWG1sLmVsdFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICB0eXBlICgnYSwgJ2IpIG51bGxhcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+IHVuaXQgLT4gJ2IgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdW5hcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICdiIGVsdCB3cmFwIC0+ICdjIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHN0YXIgPVxuICAgID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gKCdiIGVsdCkgbGlzdF93cmFwIC0+ICdjIGVsdFxuXG4gIGxldCB0b3QgeCA9IHhcblxuICBsZXQgdG90bCB4ID0geFxuXG4gIGxldCB0b2VsdCB4ID0geFxuXG4gIGxldCB0b2VsdGwgeCA9IHhcblxuICBsZXQgdG9fYXR0cmliIHggPSB4XG5cbiAgbGV0IG51bGxhcnkgdGFnID9hICgpID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcubmlsICgpKVxuXG4gIGxldCB1bmFyeSB0YWcgP2EgZWx0ID1cbiAgICBYbWwubm9kZSA/YSB0YWcgKFcuc2luZ2xldG9uIGVsdClcblxuICBsZXQgc3RhciB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgdHlwZSBhbHRnbHlwaGRlZl9jb250ZW50ID1cbiAgICBbIGBSZWYgb2YgKGdseXBocmVmIGVsdCkgbGlzdFxuICAgIHwgYEl0ZW0gb2YgKGFsdGdseXBoaXRlbSBlbHQpIGxpc3RcbiAgICBdXG5cbiAgbGV0IHRvX3htbGF0dHJpYnMgeCA9IHhcblxuICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAoKiB3cmFwIEMgbW9kdWxlIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBzdHJpbmdfb2ZfY29vcmQgPSBDLnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aCA9IEMuc3RyaW5nX29mX2xlbmd0aFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RocyA9IEMuc3RyaW5nX29mX2xlbmd0aHNcblxuICAoKiBDdXN0b20gWE1MIGF0dHJpYnV0ZXMgKilcblxuICBsZXQgdXNlcl9hdHRyaWIgZiBuYW1lIHYgPVxuICAgIFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFcuZm1hcCBmIHYpXG5cbiAgbGV0IG51bWJlcl9hdHRyaWIgPSBmbG9hdF9hdHRyaWJcblxuICAoKiBmb3Igbm93IHN0cmluZ19hdHRyaWIsIHdlIG1heSB3YW50IHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlXG4gICAgIGZ1dHVyZS4gKilcbiAgbGV0IGNvbG9yX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgKCogU1ZHIGF0dHJpYnV0ZXMgKilcblxuICBsZXQgbWV0YWRhdGEgP2EgY2hpbGRyZW4gPSBYbWwubm9kZSA/YSBcIm1ldGFkYXRhXCIgY2hpbGRyZW5cblxuICBsZXQgZm9yZWlnbk9iamVjdCA/YSBjaGlsZHJlbiA9IFhtbC5ub2RlID9hIFwiZm9yZWlnbk9iamVjdFwiIGNoaWxkcmVuXG5cbiAgbGV0IHR4dCBzID0gWG1sLnBjZGF0YSBzXG4gIGxldCBwY2RhdGEgPSB0eHRcblxuICAoKiBnZW5lcmF0ZWQgKilcbiAgbGV0IGFfdmVyc2lvbiA9IHN0cmluZ19hdHRyaWIgXCJ2ZXJzaW9uXCJcblxuICBsZXQgYV9iYXNlUHJvZmlsZSA9IHN0cmluZ19hdHRyaWIgXCJiYXNlUHJvZmlsZVwiXG5cbiAgbGV0IGFfeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInhcIlxuXG4gIGxldCBhX3kgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5XCJcblxuICBsZXQgYV93aWR0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJ3aWR0aFwiXG5cbiAgbGV0IGFfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImhlaWdodFwiXG5cbiAgbGV0IGFfcHJlc2VydmVBc3BlY3RSYXRpbyA9XG4gICAgc3RyaW5nX2F0dHJpYiBcInByZXNlcnZlQXNwZWN0UmF0aW9cIlxuXG4gIGxldCBhX2NvbnRlbnRTY3JpcHRUeXBlID1cbiAgICBzdHJpbmdfYXR0cmliIFwiY29udGVudFNjcmlwdFR5cGVcIlxuXG4gIGxldCBhX2NvbnRlbnRTdHlsZVR5cGUgPSBzdHJpbmdfYXR0cmliIFwiY29udGVudFN0eWxlVHlwZVwiXG5cbiAgbGV0IGFfem9vbUFuZFBhbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInpvb21BbmRTcGFuXCIgeFxuXG4gIGxldCBhX2hyZWYgPSBzdHJpbmdfYXR0cmliIFwiaHJlZlwiXG5cbiAgbGV0IGFfeGxpbmtfaHJlZiA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazpocmVmXCJcblxuICBsZXQgYV9yZXF1aXJlZEZlYXR1cmVzID1cbiAgICBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcInJlcXVpcmVkRmVhdHVyZXNcIlxuXG4gIGxldCBhX3JlcXVpcmVkRXh0ZW5zaW9ucyA9XG4gICAgWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJyZXF1aXJlZEV4dGVuc2lvblwiXG5cbiAgbGV0IGFfc3lzdGVtTGFuZ3VhZ2UgPVxuICAgIFhtbC5jb21tYV9zZXBfYXR0cmliIFwic3lzdGVtTGFuZ3VhZ2VcIlxuXG4gIGxldCBhX2V4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sIFwiZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWRcIlxuXG4gIGxldCBhX2lkID0gc3RyaW5nX2F0dHJpYiBcImlkXCJcblxuICBsZXQgYV91c2VyX2RhdGEgbmFtZSA9IHN0cmluZ19hdHRyaWIgKFwiZGF0YS1cIiBeIG5hbWUpXG5cbiAgbGV0IGFfeG1sX2Jhc2UgPSBzdHJpbmdfYXR0cmliIFwieG1sOmJhc2VcIlxuXG4gIGxldCBhX3htbF9sYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcblxuICBsZXQgYV94bWxfc3BhY2UgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWw6c3BhY2VcIiB4XG5cbiAgbGV0IGFfdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJ0eXBlXCJcblxuICBsZXQgYV9tZWRpYSA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwibWVkaWFcIlxuXG4gIGxldCBhX3hsaW5rX3RpdGxlID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOnRpdGxlXCJcblxuICBsZXQgYV9jbGFzcyA9IFhtbC5zcGFjZV9zZXBfYXR0cmliIFwiY2xhc3NcIlxuXG4gIGxldCBhX3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcblxuICBsZXQgYV90cmFuc2Zvcm0gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwidHJhbnNmb3JtXCJcblxuICBsZXQgYV92aWV3Qm94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZm91cmZsb2F0cyBcInZpZXdCb3hcIlxuXG4gIGxldCBhX2QgPSBzdHJpbmdfYXR0cmliIFwiZFwiXG5cbiAgbGV0IGFfcGF0aExlbmd0aCA9IG51bWJlcl9hdHRyaWIgXCJwYXRoTGVuZ3RoXCJcblxuICBsZXQgYV9yeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyeFwiXG5cbiAgbGV0IGFfcnkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwicnlcIlxuXG4gIGxldCBhX2N4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcImN4XCJcblxuICBsZXQgYV9jeSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJjeVwiXG5cbiAgbGV0IGFfciA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJyXCJcblxuICBsZXQgYV94MSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcIngxXCJcblxuICBsZXQgYV95MSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInkxXCJcblxuICBsZXQgYV94MiA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcIngyXCJcblxuICBsZXQgYV95MiA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInkyXCJcblxuICBsZXQgYV9wb2ludHMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jb29yZHMgXCJwb2ludHNcIlxuXG4gIGxldCBhX3hfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwieFwiXG5cbiAgbGV0IGFfeV9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJ5XCJcblxuICBsZXQgYV9keCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImR4XCJcblxuICBsZXQgYV9keSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImR5XCJcblxuICBsZXQgYV9keF9saXN0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aHMgXCJkeFwiXG5cbiAgbGV0IGFfZHlfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwiZHlcIlxuXG4gIGxldCBhX2xlbmd0aEFkanVzdCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImxlbmd0aEFkanVzdFwiIHhcblxuICBsZXQgYV90ZXh0TGVuZ3RoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInRleHRMZW5ndGhcIlxuXG4gIGxldCBhX3RleHRfYW5jaG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1hbmNob3JcIiB4XG5cbiAgbGV0IGFfdGV4dF9kZWNvcmF0aW9uIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1kZWNvcmF0aW9uXCIgeFxuXG4gIGxldCBhX3RleHRfcmVuZGVyaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGV4dC1yZW5kZXJpbmdcIiB4XG5cbiAgbGV0IGFfcm90YXRlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInJvdGF0ZVwiXG5cbiAgbGV0IGFfc3RhcnRPZmZzZXQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwic3RhcnRPZmZzZXRcIlxuXG4gIGxldCBhX21ldGhvZCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1ldGhvZFwiIHhcblxuICBsZXQgYV9zcGFjaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3BhY2luZ1wiIHhcblxuICBsZXQgYV9nbHlwaFJlZiA9IHN0cmluZ19hdHRyaWIgXCJnbHlwaFJlZlwiXG5cbiAgbGV0IGFfZm9ybWF0ID0gc3RyaW5nX2F0dHJpYiBcImZvcm1hdFwiXG5cbiAgbGV0IGFfbWFya2VyVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXJrZXJVbml0c1wiIHhcblxuICBsZXQgYV9yZWZYID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwicmVmWFwiXG5cbiAgbGV0IGFfcmVmWSA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInJlZllcIlxuXG4gIGxldCBhX21hcmtlcldpZHRoID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIm1hcmtlcldpZHRoXCJcblxuICBsZXQgYV9tYXJrZXJIZWlnaHQgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwibWFya2VySGVpZ2h0XCJcblxuICBsZXQgYV9vcmllbnQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfb3JpZW50IFwib3JpZW50XCIgeFxuXG4gIGxldCBhX2xvY2FsID0gc3RyaW5nX2F0dHJpYiBcImxvY2FsXCJcblxuICBsZXQgYV9yZW5kZXJpbmdfaW50ZW50IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicmVuZGVyaW5nLWludGVudFwiIHhcblxuICBsZXQgYV9ncmFkaWVudFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZ3JhZGllbnRVbml0c1wiIHhcblxuICBsZXQgYV9ncmFkaWVudFRyYW5zZm9ybSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcImdyYWRpZW50VHJhbnNmb3JtXCJcblxuICBsZXQgYV9zcHJlYWRNZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzcHJlYWRNZXRob2RcIiB4XG5cbiAgbGV0IGFfZnggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJmeFwiXG5cbiAgbGV0IGFfZnkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJmeVwiXG5cbiAgbGV0IGFfb2Zmc2V0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX29mZnNldCBcIm9mZnNldFwiIHhcblxuICBsZXQgYV9wYXR0ZXJuVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwYXR0ZXJuVW5pdHNcIiB4XG5cbiAgbGV0IGFfcGF0dGVybkNvbnRlbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInBhdHRlcm5Db250ZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfcGF0dGVyblRyYW5zZm9ybSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl90cmFuc2Zvcm1zIFwicGF0dGVyblRyYW5zZm9ybVwiIHhcblxuICBsZXQgYV9jbGlwUGF0aFVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY2xpcFBhdGhVbml0c1wiIHhcblxuICBsZXQgYV9tYXNrVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXNrVW5pdHNcIiB4XG5cbiAgbGV0IGFfbWFza0NvbnRlbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm1hc2tDb250ZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfcHJpbWl0aXZlVW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwcmltaXRpdmVVbml0c1wiIHhcblxuICBsZXQgYV9maWx0ZXJSZXMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJmaWx0ZXJSZXNVbml0c1wiXG5cbiAgbGV0IGFfcmVzdWx0ID0gc3RyaW5nX2F0dHJpYiBcInJlc3VsdFwiXG5cbiAgbGV0IGFfaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5fdmFsdWUgXCJpblwiIHhcblxuICBsZXQgYV9pbjIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5fdmFsdWUgXCJpbjJcIiB4XG5cbiAgbGV0IGFfYXppbXV0aCA9IG51bWJlcl9hdHRyaWIgXCJhemltdXRoXCJcblxuICBsZXQgYV9lbGV2YXRpb24gPSBudW1iZXJfYXR0cmliIFwiZWxldmF0aW9uXCJcblxuICBsZXQgYV9wb2ludHNBdFggPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRYXCJcblxuICBsZXQgYV9wb2ludHNBdFkgPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRZXCJcblxuICBsZXQgYV9wb2ludHNBdFogPSBudW1iZXJfYXR0cmliIFwicG9pbnRzQXRaXCJcblxuICBsZXQgYV9zcGVjdWxhckV4cG9uZW50ID0gbnVtYmVyX2F0dHJpYiBcInNwZWN1bGFyRXhwb25lbnRcIlxuXG4gIGxldCBhX3NwZWN1bGFyQ29uc3RhbnQgPSBudW1iZXJfYXR0cmliIFwic3BlY3VsYXJDb25zdGFudFwiXG5cbiAgbGV0IGFfbGltaXRpbmdDb25lQW5nbGUgPSBudW1iZXJfYXR0cmliIFwibGltaXRpbmdDb25lQW5nbGVcIlxuXG4gIGxldCBhX21vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtb2RlXCIgeFxuXG4gIGxldCBhX2ZlQ29sb3JNYXRyaXhfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfdmFsdWVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInZhbHVlc1wiXG5cbiAgbGV0IGFfdHJhbnNmZXJfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfdGFibGVWYWx1ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwidGFibGVWYWx1ZXNcIlxuXG4gIGxldCBhX2ludGVyY2VwdCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImludGVyY2VwdFwiXG5cbiAgbGV0IGFfYW1wbGl0dWRlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYW1wbGl0dWRlXCJcblxuICBsZXQgYV9leHBvbmVudCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImV4cG9uZW50XCJcblxuICBsZXQgYV90cmFuc2Zlcl9vZmZzZXQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvZmZzZXRcIlxuXG4gIGxldCBhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3BlcmF0b3JcIiB4XG5cbiAgbGV0IGFfazEgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrMVwiXG5cbiAgbGV0IGFfazIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrMlwiXG5cbiAgbGV0IGFfazMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrM1wiXG5cbiAgbGV0IGFfazQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJrNFwiXG5cbiAgbGV0IGFfb3JkZXIgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwib3JkZXJcIlxuXG4gIGxldCBhX2tlcm5lbE1hdHJpeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJrZXJuZWxNYXRyaXhcIlxuXG4gIGxldCBhX2Rpdmlzb3IgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkaXZpc29yXCJcblxuICBsZXQgYV9iaWFzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYmlhc1wiXG5cbiAgbGV0IGFfa2VybmVsVW5pdExlbmd0aCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImtlcm5lbFVuaXRMZW5ndGhcIlxuXG4gIGxldCBhX3RhcmdldFggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJ0YXJnZXRYXCJcblxuICBsZXQgYV90YXJnZXRZID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwidGFyZ2V0WVwiXG5cbiAgbGV0IGFfZWRnZU1vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0YXJnZXRZXCIgeFxuXG4gIGxldCBhX3ByZXNlcnZlQWxwaGEgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9ib29sIFwicHJlc2VydmVBbHBoYVwiXG5cbiAgbGV0IGFfc3VyZmFjZVNjYWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3VyZmFjZVNjYWxlXCJcblxuICBsZXQgYV9kaWZmdXNlQ29uc3RhbnQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImRpZmZ1c2VDb25zdGFudFwiXG5cbiAgbGV0IGFfc2NhbGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzY2FsZVwiXG5cbiAgbGV0IGFfeENoYW5uZWxTZWxlY3RvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhDaGFubmVsU2VsZWN0b3JcIiB4XG5cbiAgbGV0IGFfeUNoYW5uZWxTZWxlY3RvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInlDaGFubmVsU2VsZWN0b3JcIiB4XG5cbiAgbGV0IGFfc3RkRGV2aWF0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwic3RkRGV2aWF0aW9uXCJcblxuICBsZXQgYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJvcGVyYXRvclwiIHhcblxuICBsZXQgYV9yYWRpdXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwicmFkaXVzXCJcblxuICBsZXQgYV9iYXNlRnJlbnF1ZW5jeSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcImJhc2VGcmVxdWVuY3lcIlxuXG4gIGxldCBhX251bU9jdGF2ZXMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnQgXCJudW1PY3RhdmVzXCJcblxuICBsZXQgYV9zZWVkID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2VlZFwiXG5cbiAgbGV0IGFfc3RpdGNoVGlsZXMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdGl0Y2hUaWxlc1wiIHhcblxuICBsZXQgYV9mZVR1cmJ1bGVuY2VfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfeGxpbmtfc2hvdyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhsaW5rOnNob3dcIiB4XG5cbiAgbGV0IGFfeGxpbmtfYWN0dWF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInhsaW5rOmFjdHVhdGVcIiB4XG5cbiAgbGV0IGFfdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcInhsaW5rOnRhcmdldFwiXG5cbiAgbGV0IGFfdmlld1RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ2aWV3VGFyZ2V0XCJcblxuICBsZXQgYV9hdHRyaWJ1dGVOYW1lID0gc3RyaW5nX2F0dHJpYiBcImF0dHJpYnV0ZU5hbWVcIlxuXG4gIGxldCBhX2F0dHJpYnV0ZVR5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhdHRyaWJ1dGVUeXBlXCIgeFxuXG4gIGxldCBhX2JlZ2luID0gc3RyaW5nX2F0dHJpYiBcImJlZ2luXCJcblxuICBsZXQgYV9kdXIgPSBzdHJpbmdfYXR0cmliIFwiZHVyXCJcblxuICBsZXQgYV9taW4gPSBzdHJpbmdfYXR0cmliIFwibWluXCJcblxuICBsZXQgYV9tYXggPSBzdHJpbmdfYXR0cmliIFwibWF4XCJcblxuICBsZXQgYV9yZXN0YXJ0IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicmVzdGFydFwiIHhcblxuICBsZXQgYV9yZXBlYXRDb3VudCA9IHN0cmluZ19hdHRyaWIgXCJyZXBlYXRDb3VudFwiXG5cbiAgbGV0IGFfcmVwZWF0RHVyID0gc3RyaW5nX2F0dHJpYiBcInJlcGVhdER1clwiXG5cbiAgbGV0IGFfZmlsbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3BhaW50IFwiZmlsbFwiXG5cbiAgbGV0IGFfYW5pbWF0aW9uX2ZpbGwgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmaWxsXCIgeFxuXG4gIGxldCBhX2ZpbGxfcnVsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ZpbGxfcnVsZSBcImZpbGwtcnVsZVwiXG5cbiAgbGV0IGFfY2FsY01vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjYWxjTW9kZVwiIHhcblxuICBsZXQgYV9hbmltYXRpb25fdmFsdWVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJ2YWx1ZXNcIlxuXG4gIGxldCBhX2tleVRpbWVzID0gWG1sLmNvbW1hX3NlcF9hdHRyaWIgXCJrZXlUaW1lc1wiXG5cbiAgbGV0IGFfa2V5U3BsaW5lcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwia2V5U3BsaW5lc1wiXG5cbiAgbGV0IGFfZnJvbSA9IHN0cmluZ19hdHRyaWIgXCJmcm9tXCJcblxuICBsZXQgYV90byA9IHN0cmluZ19hdHRyaWIgXCJ0b1wiXG5cbiAgbGV0IGFfYnkgPSBzdHJpbmdfYXR0cmliIFwiYnlcIlxuXG4gIGxldCBhX2FkZGl0aXZlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWRkaXRpdmVcIiB4XG5cbiAgbGV0IGFfYWNjdW11bGF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFjY3VtdWxhdGVcIiB4XG5cbiAgbGV0IGFfa2V5UG9pbnRzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24gXCJrZXlQb2ludHNcIlxuXG4gIGxldCBhX3BhdGggPSBzdHJpbmdfYXR0cmliIFwicGF0aFwiXG5cbiAgbGV0IGFfYW5pbWF0ZVRyYW5zZm9ybV90eXBlID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIlxuXG4gIGxldCBhX2hvcml6X29yaWdpbl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotb3JpZ2luLXhcIlxuXG4gIGxldCBhX2hvcml6X29yaWdpbl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotb3JpZ2luLXlcIlxuXG4gIGxldCBhX2hvcml6X2Fkdl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaG9yaXotYWR2LXhcIlxuXG4gIGxldCBhX3ZlcnRfb3JpZ2luX3ggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LW9yaWdpbi14XCJcblxuICBsZXQgYV92ZXJ0X29yaWdpbl95ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1vcmlnaW4teVwiXG5cbiAgbGV0IGFfdmVydF9hZHZfeSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtYWR2LXlcIlxuXG4gIGxldCBhX3VuaWNvZGUgPSBzdHJpbmdfYXR0cmliIFwidW5pY29kZVwiXG5cbiAgbGV0IGFfZ2x5cGhfbmFtZSA9IHN0cmluZ19hdHRyaWIgXCJnbHlwaG5hbWVcIlxuXG4gIGxldCBhX29yaWVudGF0aW9uIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3JpZW50YXRpb25cIiB4XG5cbiAgbGV0IGFfYXJhYmljX2Zvcm0geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhcmFiaWMtZm9ybVwiIHhcblxuICBsZXQgYV9sYW5nID0gc3RyaW5nX2F0dHJpYiBcImxhbmdcIlxuXG4gIGxldCBhX3UxID0gc3RyaW5nX2F0dHJpYiBcInUxXCJcblxuICBsZXQgYV91MiA9IHN0cmluZ19hdHRyaWIgXCJ1MlwiXG5cbiAgbGV0IGFfZzEgPSBzdHJpbmdfYXR0cmliIFwiZzFcIlxuXG4gIGxldCBhX2cyID0gc3RyaW5nX2F0dHJpYiBcImcyXCJcblxuICBsZXQgYV9rID0gc3RyaW5nX2F0dHJpYiBcImtcIlxuXG4gIGxldCBhX2ZvbnRfZmFtaWx5ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtZmFtaWx5XCJcblxuICBsZXQgYV9mb250X3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc3R5bGVcIlxuXG4gIGxldCBhX2ZvbnRfdmFyaWFudCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXZhcmlhbnRcIlxuXG4gIGxldCBhX2ZvbnRfd2VpZ2h0ID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtd2VpZ2h0XCJcblxuICBsZXQgYV9mb250X3N0cmV0Y2ggPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zdHJldGNoXCJcblxuICBsZXQgYV9mb250X3NpemUgPSBzdHJpbmdfYXR0cmliIFwiZm9udC1zaXplXCJcblxuICBsZXQgYV91bmljb2RlX3JhbmdlID0gc3RyaW5nX2F0dHJpYiBcInVuaWNvZGUtcmFuZ2VcIlxuXG4gIGxldCBhX3VuaXRzX3Blcl9lbSA9IHN0cmluZ19hdHRyaWIgXCJ1bml0cy1wZXItZW1cIlxuXG4gIGxldCBhX3N0ZW12ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RlbXZcIlxuXG4gIGxldCBhX3N0ZW1oID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RlbWhcIlxuXG4gIGxldCBhX3Nsb3BlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2xvcGVcIlxuXG4gIGxldCBhX2NhcF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJjYXAtaGVpZ2h0XCJcblxuICBsZXQgYV94X2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcIngtaGVpZ2h0XCJcblxuICBsZXQgYV9hY2NlbnRfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYWNjZW50LWhlaWdodFwiXG5cbiAgbGV0IGFfYXNjZW50ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYXNjZW50XCJcblxuICBsZXQgYV93aWR0aHMgPSBzdHJpbmdfYXR0cmliIFwid2lkdGhzXCJcblxuICBsZXQgYV9iYm94ID0gc3RyaW5nX2F0dHJpYiBcImJib3hcIlxuXG4gIGxldCBhX2lkZW9ncmFwaGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaWRlb2dyYXBoaWNcIlxuXG4gIGxldCBhX2FscGhhYmV0aWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJhbHBoYWJldGljXCJcblxuICBsZXQgYV9tYXRoZW1hdGljYWwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJtYXRoZW1hdGljYWxcIlxuXG4gIGxldCBhX2hhbmdpbmcgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJoYW5naW5nXCJcblxuICBsZXQgYV92aWRlb2dyYXBoaWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWlkZW9ncmFwaGljXCJcblxuICBsZXQgYV92X2FscGhhYmV0aWMgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWFscGhhYmV0aWNcIlxuXG4gIGxldCBhX3ZfbWF0aGVtYXRpY2FsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1tYXRoZW1hdGljYWxcIlxuXG4gIGxldCBhX3ZfaGFuZ2luZyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtaGFuZ2luZ1wiXG5cbiAgbGV0IGFfdW5kZXJsaW5lX3Bvc2l0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ1bmRlcmxpbmUtcG9zaXRpb25cIlxuXG4gIGxldCBhX3VuZGVybGluZV90aGlja25lc3MgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInVuZGVybGluZS10aGlja25lc3NcIlxuXG4gIGxldCBhX3N0cmlrZXRocm91Z2hfcG9zaXRpb24gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cmlrZXRocm91Z2gtcG9zaXRpb25cIlxuXG4gIGxldCBhX3N0cmlrZXRocm91Z2hfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzc1wiXG5cbiAgbGV0IGFfb3ZlcmxpbmVfcG9zaXRpb24gPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvdmVybGluZS1wb3NpdGlvblwiXG5cbiAgbGV0IGFfb3ZlcmxpbmVfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJvdmVybGluZS10aGlja25lc3NcIlxuXG4gIGxldCBhX3N0cmluZyA9IHN0cmluZ19hdHRyaWIgXCJzdHJpbmdcIlxuXG4gIGxldCBhX25hbWUgPSBzdHJpbmdfYXR0cmliIFwibmFtZVwiXG5cbiAgbGV0IGFfYWxpZ25tZW50X2Jhc2VsaW5lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSBcImFsaWdubWVudC1iYXNlbGluZVwiIHhcblxuICBsZXQgYV9kb21pbmFudF9iYXNlbGluZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSBcImRvbWluYW50LWJhc2VsaW5lXCIgeFxuXG4gICgqKiBKYXZhc2NyaXB0IGV2ZW50cyAqKVxuXG4gIGxldCBhX29uYWJvcnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFib3J0XCJcbiAgbGV0IGFfb25hY3RpdmF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWN0aXZhdGVcIlxuICBsZXQgYV9vbmJlZ2luID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWdpblwiXG4gIGxldCBhX29uZW5kID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbmRcIlxuICBsZXQgYV9vbmVycm9yID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lcnJvclwiXG4gIGxldCBhX29uZm9jdXNpbiA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNpblwiXG4gIGxldCBhX29uZm9jdXNvdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3Vzb3V0XCJcbiAgbGV0IGFfb25sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkXCJcbiAgbGV0IGFfb25yZXBlYXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlcGVhdFwiXG4gIGxldCBhX29ucmVzaXplID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXNpemVcIlxuICBsZXQgYV9vbnNjcm9sbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Nyb2xsXCJcbiAgbGV0IGFfb251bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVubG9hZFwiXG4gIGxldCBhX29uem9vbSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uem9vbVwiXG5cbiAgKCoqIEphdmFzY3JpcHQgbW91c2UgZXZlbnRzICopXG5cbiAgbGV0IGFfb25jbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xpY2tcIlxuICBsZXQgYV9vbm1vdXNlZG93biA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vkb3duXCJcbiAgbGV0IGFfb25tb3VzZXVwID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXVwXCJcbiAgbGV0IGFfb25tb3VzZW92ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3ZlclwiXG4gIGxldCBhX29ubW91c2VvdXQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3V0XCJcbiAgbGV0IGFfb25tb3VzZW1vdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlbW92ZVwiXG5cbiAgKCoqIEphdmFzY3JpcHQgdG91Y2ggZXZlbnRzICopXG4gIGxldCBhX29udG91Y2hzdGFydCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hzdGFydFwiXG4gIGxldCBhX29udG91Y2hlbmQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoZW5kXCJcbiAgbGV0IGFfb250b3VjaG1vdmUgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNobW92ZVwiXG4gIGxldCBhX29udG91Y2hjYW5jZWwgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoY2FuY2VsXCJcblxuICBsZXQgYV9zdG9wX2NvbG9yID0gY29sb3JfYXR0cmliIFwic3RvcC1jb2xvclwiXG5cbiAgbGV0IGFfc3RvcF9vcGFjaXR5ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RvcC1vcGFjaXR5XCJcblxuICBsZXQgYV9zdHJva2UgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9wYWludCBcInN0cm9rZVwiXG5cbiAgbGV0IGFfc3Ryb2tlX3dpZHRoID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGVuZ3RoIFwic3Ryb2tlLXdpZHRoXCJcblxuICBsZXQgYV9zdHJva2VfbGluZWNhcCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0cm9rZS1saW5lY2FwXCIgeFxuXG4gIGxldCBhX3N0cm9rZV9saW5lam9pbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInN0cm9rZS1saW5lam9pblwiIHhcblxuICBsZXQgYV9zdHJva2VfbWl0ZXJsaW1pdCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3Ryb2tlLW1pdGVybGltaXRcIlxuXG4gIGxldCBhX3N0cm9rZV9kYXNoYXJyYXkgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5IFwic3Ryb2tlLWRhc2hhcnJheVwiIHhcblxuICBsZXQgYV9zdHJva2VfZGFzaG9mZnNldCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGVuZ3RoIFwic3Ryb2tlLWRhc2hvZmZzZXRcIlxuXG4gIGxldCBhX3N0cm9rZV9vcGFjaXR5ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJva2Utb3BhY2l0eVwiXG5cbiAgKCogeGxpbmsgbmFtZXNwYWNlIGdpdmVuIGEgbmlja25hbWUgc2luY2Ugc29tZSBhdHRyaWJ1dGVzIG1hbmRhdGVkIGJ5XG4gICAgIHRoZSBzdmcgc3RhbmRhcmQgc3VjaCBhcyB4bGluazpocmVmIGxpdmUgaW4gdGhhdCBuYW1lc3BhY2UsIGFuZCB3ZVxuICAgICByZWZlciB0byB0aGVtIGFzIFwieGxpbms6d2hhdGV2ZXJcIiAoc2VlIGFfeGxpbmtfaHJlZiBvciBhX3hsaW5rc2hvdylcbiAgKilcbiAgbGV0IHN2ZyA/KGEgPSBbXSkgY2hpbGRyZW4gPVxuICAgIGxldCBhdHRyaWJzID1cbiAgICAgIHN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIChXLnJldHVybiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIpXG4gICAgICA6OiBzdHJpbmdfYXR0cmliIFwieG1sbnM6eGxpbmtcIiAoVy5yZXR1cm4gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIpXG4gICAgICA6OiB0b194bWxhdHRyaWJzIGFcbiAgICBpblxuICAgIHN0YXIgfmE6KGF0dHJpYnMpIFwic3ZnXCIgY2hpbGRyZW5cblxuICAoKiBhbHNvIGdlbmVyYXRlZCAqKVxuICBsZXQgZyA9IHN0YXIgXCJnXCJcblxuICBsZXQgZGVmcyA9IHN0YXIgXCJkZWZzXCJcblxuICBsZXQgZGVzYyA9IHVuYXJ5IFwiZGVzY1wiXG5cbiAgbGV0IHRpdGxlID0gdW5hcnkgXCJ0aXRsZVwiXG5cbiAgbGV0IHN5bWJvbCA9IHN0YXIgXCJzeW1ib2xcIlxuXG4gIGxldCB1c2UgPSBzdGFyIFwidXNlXCJcblxuICBsZXQgaW1hZ2UgPSBzdGFyIFwiaW1hZ2VcIlxuXG4gIGxldCBzd2l0Y2ggPSBzdGFyIFwic3dpdGNoXCJcblxuICBsZXQgc3R5bGUgPSB1bmFyeSBcInN0eWxlXCJcblxuICBsZXQgcGF0aCA9IHN0YXIgXCJwYXRoXCJcblxuICBsZXQgcmVjdCA9IHN0YXIgXCJyZWN0XCJcblxuICBsZXQgY2lyY2xlID0gc3RhciBcImNpcmNsZVwiXG5cbiAgbGV0IGVsbGlwc2UgPSBzdGFyIFwiZWxsaXBzZVwiXG5cbiAgbGV0IGxpbmUgPSBzdGFyIFwibGluZVwiXG5cbiAgbGV0IHBvbHlsaW5lID0gc3RhciBcInBvbHlsaW5lXCJcblxuICBsZXQgcG9seWdvbiA9IHN0YXIgXCJwb2x5Z29uXCJcblxuICBsZXQgdGV4dCA9IHN0YXIgXCJ0ZXh0XCJcblxuICBsZXQgdHNwYW4gPSBzdGFyIFwidHNwYW5cIlxuXG4gIGxldCB0cmVmID0gc3RhciBcInRyZWZcIlxuXG4gIGxldCB0ZXh0UGF0aCA9IHN0YXIgXCJ0ZXh0UGF0aFwiXG5cbiAgbGV0IGFsdEdseXBoID0gdW5hcnkgXCJhbHRHbHlwaFwiXG5cbiAgbGV0IGFsdEdseXBoRGVmID0gdW5hcnkgXCJhbHRHbHlwaERlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSA9IHN0YXIgXCJhbHRHbHlwaEl0ZW1cIlxuXG4gIGxldCBnbHlwaFJlZiA9IG51bGxhcnkgXCJnbHlwaFJlZlwiXG5cbiAgbGV0IG1hcmtlciA9IHN0YXIgXCJtYXJrZXJcIlxuXG4gIGxldCBjb2xvcl9wcm9maWxlID0gc3RhciBcImNvbG9yLXByb2ZpbGVcIlxuXG4gIGxldCBsaW5lYXJHcmFkaWVudCA9IHN0YXIgXCJsaW5lYXJHcmFkaWVudFwiXG5cbiAgbGV0IHJhZGlhbEdyYWRpZW50ID0gc3RhciBcInJhZGlhbEdyYWRpZW50XCJcblxuICBsZXQgc3RvcCA9IHN0YXIgXCJzdG9wXCJcblxuICBsZXQgcGF0dGVybiA9IHN0YXIgXCJwYXR0ZXJuXCJcblxuICBsZXQgY2xpcFBhdGggPSBzdGFyIFwiY2xpcFBhdGhcIlxuXG4gIGxldCBmaWx0ZXIgPSBzdGFyIFwiZmlsdGVyXCJcblxuICBsZXQgZmVEaXN0YW50TGlnaHQgPSBzdGFyIFwiZmVEaXN0YW50TGlnaHRcIlxuXG4gIGxldCBmZVBvaW50TGlnaHQgPSBzdGFyIFwiZmVQb2ludExpZ2h0XCJcblxuICBsZXQgZmVTcG90TGlnaHQgPSBzdGFyIFwiZmVTcG90TGlnaHRcIlxuXG4gIGxldCBmZUJsZW5kID0gc3RhciBcImZlQmxlbmRcIlxuXG4gIGxldCBmZUNvbG9yTWF0cml4ID0gc3RhciBcImZlQ29sb3JNYXRyaXhcIlxuXG4gIGxldCBmZUNvbXBvbmVudFRyYW5zZmVyID0gc3RhciBcImZlQ29tcG9uZW50VHJhbnNmZXJcIlxuXG4gIGxldCBmZUZ1bmNBID0gc3RhciBcImZlRnVuY0FcIlxuXG4gIGxldCBmZUZ1bmNHID0gc3RhciBcImZlRnVuY0dcIlxuXG4gIGxldCBmZUZ1bmNCID0gc3RhciBcImZlRnVuY0JcIlxuXG4gIGxldCBmZUZ1bmNSID0gc3RhciBcImZlRnVuY1JcIlxuXG4gIGxldCBmZUNvbXBvc2l0ZSA9IHN0YXIgXCJmZUNvbXBvc2l0ZVwiXG5cbiAgbGV0IGZlQ29udm9sdmVNYXRyaXggPSBzdGFyIFwiZmVDb252b2x2ZU1hdHJpeFwiXG5cbiAgbGV0IGZlRGlmZnVzZUxpZ2h0aW5nID0gc3RhciBcImZlRGlmZnVzZUxpZ2h0aW5nXCJcblxuICBsZXQgZmVEaXNwbGFjZW1lbnRNYXAgPSBzdGFyIFwiZmVEaXNwbGFjZW1lbnRNYXBcIlxuXG4gIGxldCBmZUZsb29kID0gc3RhciBcImZlRmxvb2RcIlxuXG4gIGxldCBmZUdhdXNzaWFuQmx1ciA9IHN0YXIgXCJmZUdhdXNzaWFuQmx1clwiXG5cbiAgbGV0IGZlSW1hZ2UgPSBzdGFyIFwiZmVJbWFnZVwiXG5cbiAgbGV0IGZlTWVyZ2UgPSBzdGFyIFwiZmVNZXJnZVwiXG5cbiAgbGV0IGZlTW9ycGhvbG9neSA9IHN0YXIgXCJmZU1vcnBob2xvZ3lcIlxuXG4gIGxldCBmZU9mZnNldCA9IHN0YXIgXCJmZU9mZnNldFwiXG5cbiAgbGV0IGZlU3BlY3VsYXJMaWdodGluZyA9IHN0YXIgXCJmZVNwZWN1bGFyTGlnaHRpbmdcIlxuXG4gIGxldCBmZVRpbGUgPSBzdGFyIFwiZmVUaWxlXCJcblxuICBsZXQgZmVUdXJidWxlbmNlID0gc3RhciBcImZlVHVyYnVsZW5jZVwiXG5cbiAgbGV0IGN1cnNvciA9IHN0YXIgXCJjdXJzb3JcIlxuXG4gIGxldCBhID0gc3RhciBcImFcIlxuXG4gIGxldCB2aWV3ID0gc3RhciBcInZpZXdcIlxuXG4gIGxldCBzY3JpcHQgPSB1bmFyeSBcInNjcmlwdFwiXG5cbiAgbGV0IGFuaW1hdGUgPSBzdGFyIFwiYW5pbWF0ZVwiXG5cbiAgbGV0IGFuaW1hdGlvbiA9IGFuaW1hdGVcblxuICBsZXQgc2V0ID0gc3RhciBcInNldFwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gPSBzdGFyIFwiYW5pbWF0ZU1vdGlvblwiXG5cbiAgbGV0IG1wYXRoID0gc3RhciBcIm1wYXRoXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yID0gc3RhciBcImFuaW1hdGVDb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gPSBzdGFyIFwiYW5pbWF0ZVRyYW5zZm9ybVwiXG5cbiAgbGV0IGZvbnQgPSBzdGFyIFwiZm9udFwiXG5cbiAgbGV0IGdseXBoID0gc3RhciBcImdseXBoXCJcblxuICBsZXQgbWlzc2luZ19nbHlwaCA9IHN0YXIgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgaGtlcm4gPSBudWxsYXJ5IFwiaGtlcm5cIlxuXG4gIGxldCB2a2VybiA9IG51bGxhcnkgXCJ2a2VyblwiXG5cbiAgbGV0IGZvbnRfZmFjZSA9IG51bGxhcnkgXCJmb250LWZhY2VcIlxuXG4gIGxldCBmb250X2ZhY2Vfc3JjID0gc3RhciBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250X2ZhY2VfdXJpID0gc3RhciBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb250X2ZhY2VfZm9ybWF0ID0gbnVsbGFyeSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb250X2ZhY2VfbmFtZSA9IG51bGxhcnkgXCJmb250LWZhY2UtbmFtZVwiXG5cbiAgdHlwZSBkb2MgPSBbIGBTdmcgXSBlbHRcbiAgbGV0IGRvY190b2VsdCB4ID0geFxuXG4gIG1vZHVsZSBJID0gWG1sX3N0cmVhbS5JbXBvcnQoWG1sKVxuICBsZXQgb2Zfc2VxIHMgPSB0b3RsIEBAIEkub2Zfc2VxIHNcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG5cbiAgICBsZXQgZGF0YSBzID0gWG1sLmVuY29kZWRwY2RhdGEgc1xuXG4gICAgbGV0IGxlYWYgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgICBsZXQgbm9kZSB0YWcgP2EgZWx0cyA9IFhtbC5ub2RlID9hIHRhZyBlbHRzXG5cbiAgICBsZXQgY29lcmNlX2VsdCB4ID0geFxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICAgIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICAgIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICAgIGxldCB1cmlfYXR0cmliIGEgcyA9IFhtbC51cmlfYXR0cmliIGEgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIFdyYXBwZWRfZnVuY3Rpb25zXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwnYikgVy5mdCA9ICdhIC0+ICdiKSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbGV0IHN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBCYXNlbGluZSAtPiBcImJhc2VsaW5lXCJcbiAgICB8IGBCZWZvcmVfZWRnZSAtPiBcImJlZm9yZS1lZGdlXCJcbiAgICB8IGBUZXh0X2JlZm9yZV9lZGdlIC0+IFwidGV4dC1iZWZvcmUtZWRnZVwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBDZW50cmFsIC0+IFwiY2VudHJhbFwiXG4gICAgfCBgQWZ0ZXJfZWRnZSAtPiBcImFmdGVyLWVkZ2VcIlxuICAgIHwgYFRleHRfYWZ0ZXJfZWRnZSAtPiBcInRleHQtYWZ0ZXItZWRnZVwiXG4gICAgfCBgSWRlb2dyYXBoaWMgLT4gXCJpZGVvZ3JhcGhpY1wiXG4gICAgfCBgQWxwaGFiZXRpYyAtPiBcImFscGhhYmV0aWNcIlxuICAgIHwgYEhhbmdpbmctPiBcImhhbmdpbmdcIlxuICAgIHwgYE1hdGhlbWF0aWNhbCAtPiBcIm1hdGhlbWF0aWNhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgYEEgLT4gXCJhXCJcbiAgICB8IGBBYnNvbHV0ZV9jb2xvcmltZXRyaWMgLT4gXCJhYnNvbHV0ZV9jb2xvcmltZXRyaWNcIlxuICAgIHwgYEFsaWduIC0+IFwiXCJcbiAgICB8IGBBbHdheXMgLT4gXCJhbHdheXNcIlxuICAgIHwgYEF0b3AgLT4gXCJhdG9wXCJcbiAgICB8IGBBcml0aG1ldGljIC0+IFwiYXJpdGhtZXRpY1wiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEIgLT4gXCJiXCJcbiAgICB8IGBCZXZlciAtPiBcImJldmVsXCJcbiAgICB8IGBCbGluayAtPiBcImJsaW5rXCJcbiAgICB8IGBCdXR0IC0+IFwiYnV0dFwiXG4gICAgfCBgQ1NTIC0+IFwiQ1NTXCJcbiAgICB8IGBEYXJrZW4gLT4gXCJkYXJrZW5cIlxuICAgIHwgYERlZmF1bHQgLT4gXCJkZWZhdWx0XCJcbiAgICB8IGBEaWxhdGUgLT4gXCJkaWxhdGVcIlxuICAgIHwgYERpc2FibGUgLT4gXCJkaXNhYmxlXCJcbiAgICB8IGBEaXNjcmV0ZSAtPiBcImRpc2NyZXRlXCJcbiAgICB8IGBEdXBsaWNhdGUgLT4gXCJkdXBsaWNhdGVcIlxuICAgIHwgYEVuZCAtPiBcImVuZFwiXG4gICAgfCBgRXJvZGUgLT4gXCJlcm9kZVwiXG4gICAgfCBgRXhhY3QgLT4gXCJleGFjdFwiXG4gICAgfCBgRnJhY3RhbE5vaXNlIC0+IFwiZnJhY3RhbE5vaXNlXCJcbiAgICB8IGBGcmVlemUgLT4gXCJmcmVlemVcIlxuICAgIHwgYEh1ZVJvdGF0ZSAtPiBcImh1ZVJvdGF0ZVwiXG4gICAgfCBgRyAtPiBcImdcIlxuICAgIHwgYEdhbW1hIC0+IFwiZ2FtbWFcIlxuICAgIHwgYEdlb21ldHJpY1ByZWNpc2lvbiAtPiBcImdlb21ldHJpY1ByZWNpc2lvblwiXG4gICAgfCBgSCAtPiBcImhcIlxuICAgIHwgYElkZW50aXR5IC0+IFwiaWRlbnRpdHlcIlxuICAgIHwgYEluIC0+IFwiaW5cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSXNvbGF0ZWQgLT4gXCJpc29sYXRlZFwiXG4gICAgfCBgTGlnaHRlbiAtPiBcImxpZ2h0ZW5cIlxuICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgfCBgTGluZWFyIC0+IFwibGluZWFyXCJcbiAgICB8IGBMdW1pbmFuY2VUb0FscGhhIC0+IFwibHVtaW5hbmNlVG9BbHBoYVwiXG4gICAgfCBgTWFnbmlmeSAtPiBcIm1hZ25pZnlcIlxuICAgIHwgYE1hdHJpeCAtPiBcIm1hdHJpeFwiXG4gICAgfCBgTWVkaWFsIC0+IFwibWVkaWFsXCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYE1pdGVyIC0+IFwibWl0ZXJcIlxuICAgIHwgYE11bHRpcGx5IC0+IFwibXVsdGlwbHlcIlxuICAgIHwgYE5ldmVyIC0+IFwibmV2ZXJcIlxuICAgIHwgYE5ldyAtPiBcIm5ld1wiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTm9TdGl0Y2ggLT4gXCJub1N0aXRjaFwiXG4gICAgfCBgT2JqZWN0Qm91bmRpbmdCb3ggLT4gXCJvYmplY3RCb3VuZGluZ0JveFwiXG4gICAgfCBgT25Mb2FkIC0+IFwib25Mb2FkXCJcbiAgICB8IGBPblJlcXVlc3QgLT4gXCJvblJlcXVlc3RcIlxuICAgIHwgYE9wdGltaXplTGVnaWJpbGl0eSAtPiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gICAgfCBgT3B0aW1pemVTcGVlZCAtPiBcIm9wdGltaXplU3BlZWRcIlxuICAgIHwgYE90aGVyIC0+IFwib3RoZXJcIlxuICAgIHwgYE91dCAtPiBcIm91dFwiXG4gICAgfCBgT3ZlciAtPiBcIm92ZXJcIlxuICAgIHwgYE92ZXJsaW5lIC0+IFwib3ZlcmxpbmVcIlxuICAgIHwgYFBhY2VkIC0+IFwicGFjZWRcIlxuICAgIHwgYFBhZCAtPiBcInBhZFwiXG4gICAgfCBgUGVyY2VwdHVhbCAtPiBcInBlcmNlcHR1YWxcIlxuICAgIHwgYFByZXNlcnZlIC0+IFwicHJlc2VydmVcIlxuICAgIHwgYFIgLT4gXCJyXCJcbiAgICB8IGBSZWZsZWN0IC0+IFwicmVmbGVjdFwiXG4gICAgfCBgUmVtb3ZlIC0+IFwicmVtb3ZlXCJcbiAgICB8IGBSZXBlYXQgLT4gXCJyZXBlYXRcIlxuICAgIHwgYFJlcGxhY2UgLT4gXCJyZXBsYWNlXCJcbiAgICB8IGBSZWxhdGl2ZV9jb2xvcmltZXRyaWMgLT4gXCJyZWxhdGl2ZV9jb2xvcmltZXRyaWNcIlxuICAgIHwgYFJvdGF0ZSAtPiBcInJvdGF0ZVwiXG4gICAgfCBgUm91bmQgLT4gXCJyb3VuZFwiXG4gICAgfCBgU2F0dXJhdGUgLT4gXCJzYXR1cmF0ZVwiXG4gICAgfCBgU2F0dXJhdGlvbiAtPiBcInNhdHVyYXRpb25cIlxuICAgIHwgYFNjYWxlIC0+IFwic2NhbGVcIlxuICAgIHwgYFNjcmVlbiAtPiBcInNjcmVlblwiXG4gICAgfCBgU2tld1ggLT4gXCJza2V3WFwiXG4gICAgfCBgU2tld1kgLT4gXCJza2V3WVwiXG4gICAgfCBgU3BhY2luZyAtPiBcInNwYWNpbmdcIlxuICAgIHwgYFNwYWNpbmdBbmRHbHlwaHMgLT4gXCJzcGFjaW5nQW5kR2x5cGhzXCJcbiAgICB8IGBTcGxpbmUgLT4gXCJzcGxpbmVcIlxuICAgIHwgYFNxdWFyZSAtPiBcInNxdWFyZVwiXG4gICAgfCBgU3RhcnQgLT4gXCJzdGFydFwiXG4gICAgfCBgU3RpdGNoIC0+IFwic3RpdGNoXCJcbiAgICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG4gICAgfCBgU3Ryb2tlV2lkdGggLT4gXCJzdHJva2Utd2lkdGhcIlxuICAgIHwgYFN1bSAtPiBcInN1bVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgVGVybWluYWwgLT4gXCJ0ZXJtaW5hbFwiXG4gICAgfCBgVHJhbnNsYXRlIC0+IFwidHJhbnNsYXRlXCJcbiAgICB8IGBUdXJidWxlbmNlIC0+IFwidHVyYnVsZW5jZVwiXG4gICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICB8IGBVc2VyU3BhY2VPblVzZSAtPiBcInVzZXJTcGFjZU9uVXNlXCJcbiAgICB8IGBWIC0+IFwidlwiXG4gICAgfCBgV2hlbk5vdEFjdGl2ZSAtPiBcIndoZW5Ob3RBY3RpdmVcIlxuICAgIHwgYFdyYXAgLT4gXCJ3cmFwXCJcbiAgICB8IGBYTUwgLT4gXCJYTUxcIlxuICAgIHwgYFhvciAtPiBcInhvclwiXG5cbiAgbGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgc3RyaW5nX29mX2Nvb3JkcyA9XG4gICAgbGlzdCAoZnVuIChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVnLCAlZ1wiIGEgYilcblxuICBsZXQgc3RyaW5nX29mX2RvbWluYW50X2Jhc2VsaW5lID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgVXNlX3NjcmlwdCAtPiBcInVzZXNjcmlwdFwiXG4gICAgfCBgTm9fY2hhbmdlIC0+IFwibm9jaGFuZ2VcIlxuICAgIHwgYFJlc2V0X3NpemUgLT4gXCJyZXNldHNpemVcIlxuICAgIHwgYElkZW9ncmFwaGljIC0+IFwiaWRlb2dyYXBoaWNcIlxuICAgIHwgYEFscGhhYmV0aWMgLT4gXCJhbHBoYWJldGljXCJcbiAgICB8IGBIYW5naW5nIC0+IFwiaGFuZ2luZ1wiXG4gICAgfCBgTWF0aGVtYXRpY2FsIC0+IFwibWF0aGVtYXRpY2FsXCJcbiAgICB8IGBDZW50cmFsIC0+IFwiY2VudHJhbFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBUZXh0X2FmdGVyX2VkZ2UgLT4gXCJ0ZXh0YWZ0ZXJlZGdlXCJcbiAgICB8IGBUZXh0X2JlZm9yZV9lZGdlIC0+IFwidGV4dGJlZm9yZWVkZ2VcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcblxuXG4gIGxldCBzdHJpbmdfb2ZfaW5fdmFsdWUgPSBmdW5jdGlvblxuICAgIHwgYFNvdXJjZUdyYXBoaWMgLT4gXCJzb3VyY2VHcmFwaGljXCJcbiAgICB8IGBTb3VyY2VBbHBoYSAtPiBcInNvdXJjZUFscGhhXCJcbiAgICB8IGBCYWNrZ3JvdW5kSW1hZ2UgLT4gXCJiYWNrZ3JvdW5kSW1hZ2VcIlxuICAgIHwgYEJhY2tncm91bmRBbHBoYSAtPiBcImJhY2tncm91bmRBbHBoYVwiXG4gICAgfCBgRmlsbFBhaW50IC0+IFwiZmlsbFBhaW50XCJcbiAgICB8IGBTdHJva2VQYWludCAtPiBcInN0cm9rZVBhaW50XCJcbiAgICB8IGBSZWYgX3N2ZyAtPiBfc3ZnXG5cbiAgbGV0IHN0cmluZ19vZl9pbnQgPSBzdHJpbmdfb2ZfaW50XG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggPSBVbml0LnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aHMgPSBsaXN0IHN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX251bWJlciA9IFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9wZXJjZW50YWdlIHggPSAoc3RyaW5nX29mX251bWJlciB4KSBeIFwiJVwiXG5cbiAgbGV0IHN0cmluZ19vZl9mb3VyZmxvYXRzIChhLCBiLCBjLCBkKSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyAlc1wiXG4gICAgICAoc3RyaW5nX29mX251bWJlciBhKSAoc3RyaW5nX29mX251bWJlciBiKSAoc3RyaW5nX29mX251bWJlciBjKSAoc3RyaW5nX29mX251bWJlciBkKVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciA9IGZ1bmN0aW9uXG4gICAgfCB4LCBTb21lIHkgLT4gUHJpbnRmLnNwcmludGYgXCIlZywgJWdcIiB4IHlcbiAgICB8IHgsIE5vbmUgLT4gUHJpbnRmLnNwcmludGYgXCIlZ1wiIHhcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnMgPSBsaXN0IHN0cmluZ19vZl9udW1iZXJcblxuICBsZXQgc3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uID0gbGlzdCB+c2VwOlwiOyBcIiBzdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9vZmZzZXQgPSBmdW5jdGlvblxuICAgIHwgYE51bWJlciB4IC0+IHN0cmluZ19vZl9udW1iZXIgeFxuICAgIHwgYFBlcmNlbnRhZ2UgeCAtPiBzdHJpbmdfb2ZfcGVyY2VudGFnZSB4XG5cbiAgbGV0IHN0cmluZ19vZl9vcmllbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBcImF1dG9cIlxuICAgIHwgU29tZSBfX3N2ZyAtPiBzdHJpbmdfb2ZfYW5nbGUgX19zdmdcblxuICBsZXQgc3RyaW5nX29mX3BhaW50ID0gc3RyaW5nX29mX3BhaW50XG5cbiAgbGV0IHN0cmluZ19vZl9maWxsX3J1bGUgPSBzdHJpbmdfb2ZfZmlsbF9ydWxlXG5cbiAgbGV0IHN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJub25lXCJcbiAgICB8IGwgLT4gbGlzdCBzdHJpbmdfb2ZfbGVuZ3RoIGxcblxuICBsZXQgc3RyaW5nX29mX3RyYW5zZm9ybSA9IGZ1bmN0aW9uXG4gICAgfCBgTWF0cml4IChhLCBiLCBjLCBkLCBlLCBmKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJtYXRyaXgoJWcgJWcgJWcgJWcgJWcgJWcpXCIgYSBiIGMgZCBlIGZcbiAgICB8IGBUcmFuc2xhdGUgeCAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJ0cmFuc2xhdGUoJXMpXCJcbiAgICAgICAgKHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIHgpXG4gICAgfCBgU2NhbGUgeCAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJzY2FsZSglcylcIiAoc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgeClcbiAgICB8IGBSb3RhdGUgKChhbmdsZSwgeCkpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInJvdGF0ZSglcyAlcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICB8IFNvbWUgKCh4LCB5KSkgLT4gUHJpbnRmLnNwcmludGYgXCIlZyAlZ1wiIHggeVxuICAgICAgICAgfCBOb25lIC0+IFwiXCIpXG4gICAgfCBgU2tld1ggYW5nbGUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2tld1goJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcbiAgICB8IGBTa2V3WSBhbmdsZSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJza2V3WSglcylcIiAoc3RyaW5nX29mX2FuZ2xlIGFuZ2xlKVxuXG4gIGxldCBzdHJpbmdfb2ZfdHJhbnNmb3JtcyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfdHJhbnNmb3JtIGwpXG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsICdiKSBXLmZ0ID0gKCdhIC0+ICdiKSkgPVxuICBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnMoWG1sKShXcmFwcGVkX2Z1bmN0aW9ucyhYbWwpKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAwNCBieSBUaG9yc3RlbiBPaGwgPG9obEBwaHlzaWsudW5pLXd1ZXJ6YnVyZy5kZT5cbiAqIENvcHlyaWdodCAoQykgMjAwNyBieSBWaW5jZW50IEJhbGF0LCBHYWJyaWVsIEtlcm5laXNcbiAqIENvcHlyaWdodCAoQykgMjAxMCBieSBDZWNpbGUgSGVyYmVsaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnNcblxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuICAgIChDIDogSHRtbF9zaWdzLldyYXBwZWRfZnVuY3Rpb25zIHdpdGggbW9kdWxlIFhtbCA9IFhtbClcbiAgICAoU3ZnIDogU3ZnX3NpZ3MuVCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBtb2R1bGUgVyA9IFhtbC5XXG5cbiAgbW9kdWxlIEluZm8gPSBzdHJ1Y3RcbiAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L2h0bWxcIlxuICAgIGxldCBhbHRlcm5hdGl2ZV9jb250ZW50X3R5cGVzID0gW1wiYXBwbGljYXRpb24veGh0bWwreG1sXCI7XCJhcHBsaWNhdGlvbi94bWxcIjtcInRleHQveG1sXCJdXG4gICAgbGV0IHZlcnNpb24gPSBcIkhUTUw1LWRyYWZ0XCJcbiAgICBsZXQgc3RhbmRhcmQgPSBcImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L1wiXG4gICAgbGV0IG5hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gICAgbGV0IGRvY3R5cGUgPVxuICAgICAgWG1sX3ByaW50LmNvbXBvc2VfZG9jdHlwZSBcImh0bWxcIiBbXVxuICAgIGxldCBlbXB0eXRhZ3MgPVxuICAgICAgWyBcImFyZWFcIjsgXCJiYXNlXCI7IFwiYnJcIjsgXCJjb2xcIjsgXCJjb21tYW5kXCI7IFwiZW1iZWRcIjsgXCJoclwiOyBcImltZ1wiO1xuICAgICAgICBcImlucHV0XCI7IFwia2V5Z2VuXCI7IFwibGlua1wiOyBcIm1ldGFcIjsgXCJwYXJhbVwiOyBcInNvdXJjZVwiOyBcIndiclwiIF1cbiAgZW5kXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgVy50bGlzdFxuXG4gIHR5cGUgdXJpID0gWG1sLnVyaVxuICBsZXQgc3RyaW5nX29mX3VyaSA9IFhtbC5zdHJpbmdfb2ZfdXJpXG4gIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICB0eXBlIGltYWdlX2NhbmRpZGF0ZSA9XG4gICAgWyBgVXJsIG9mIHVyaVxuICAgIHwgYFVybF93aWR0aCBvZiB1cmkgKiBIdG1sX3R5cGVzLm51bWJlclxuICAgIHwgYFVybF9waXhlbCBvZiB1cmkgKiBIdG1sX3R5cGVzLmZsb2F0X251bWJlciBdXG5cbiAgdHlwZSAnYSBhdHRyaWIgPSBYbWwuYXR0cmliXG5cbiAgbGV0IHRvX3htbGF0dHJpYnMgeCA9IHhcbiAgbGV0IHRvX2F0dHJpYiB4ID0geFxuXG4gICgqIFZCICopXG4gIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gIGxldCBzdHJpbmdfYXR0cmliID0gWG1sLnN0cmluZ19hdHRyaWJcblxuICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgPSBYbWwuY29tbWFfc2VwX2F0dHJpYlxuXG4gIGxldCB1c2VyX2F0dHJpYiBmIG5hbWUgdiA9IFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFcuZm1hcCBmIHYpXG5cbiAgbGV0IGJvb2xfYXR0cmliID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbFxuXG4gIGxldCBjb25zdGFudF9hdHRyaWIgYSAoKSA9XG4gICAgc3RyaW5nX2F0dHJpYiBhIChXLnJldHVybiBhKVxuXG4gIGxldCBsaW5rdHlwZXNfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbGlua3R5cGVzIG5hbWUgeFxuXG4gIGxldCBtZWRpYWRlc2NfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbWVkaWFkZXNjIG5hbWUgeFxuXG4gIGxldCBzcmNzZXRfYXR0cmliIG5hbWUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3Jjc2V0IG5hbWUgeFxuXG4gICgqIENvcmU6ICopXG4gIGxldCBhX2NsYXNzID0gc3BhY2Vfc2VwX2F0dHJpYiBcImNsYXNzXCJcblxuICBsZXQgYV9pZCA9IHN0cmluZ19hdHRyaWIgXCJpZFwiXG5cbiAgbGV0IGFfdXNlcl9kYXRhIG5hbWUgPSBzdHJpbmdfYXR0cmliIChcImRhdGEtXCIgXiBuYW1lKVxuXG4gIGxldCBhX3RpdGxlID0gc3RyaW5nX2F0dHJpYiBcInRpdGxlXCJcblxuICAoKiBJMThOOiAqKVxuICBsZXQgYV94bWxfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG4gIGxldCBhX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwibGFuZ1wiXG5cbiAgKCogU3R5bGU6ICopXG4gIGxldCBhX3N0eWxlID0gc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcblxuICBsZXQgYV9wcm9wZXJ0eSA9IHN0cmluZ19hdHRyaWIgXCJwcm9wZXJ0eVwiXG5cbiAgKCogRXZlbnRzOiAqKVxuICBsZXQgYV9vbmFib3J0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hYm9ydFwiXG4gIGxldCBhX29uYWZ0ZXJwcmludCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWZ0ZXJwcmludFwiXG4gIGxldCBhX29uYmVmb3JlcHJpbnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZm9yZXByaW50XCJcbiAgbGV0IGFfb25iZWZvcmV1bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJlZm9yZXVubG9hZFwiXG4gIGxldCBhX29uYmx1ciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmx1clwiXG4gIGxldCBhX29uY2FucGxheSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2FucGxheVwiXG4gIGxldCBhX29uY2FucGxheXRocm91Z2ggPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNhbnBsYXl0aHJvdWdoXCJcbiAgbGV0IGFfb25jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNoYW5nZVwiXG4gIGxldCBhX29uY2xvc2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsb3NlXCJcbiAgbGV0IGFfb25kdXJhdGlvbmNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHVyYXRpb25jaGFuZ2VcIlxuICBsZXQgYV9vbmVtcHRpZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVtcHRpZWRcIlxuICBsZXQgYV9vbmVuZGVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbmRlZFwiXG4gIGxldCBhX29uZXJyb3IgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmVycm9yXCJcbiAgbGV0IGFfb25mb2N1cyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9jdXNcIlxuICBsZXQgYV9vbmZvcm1jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvcm1jaGFuZ2VcIlxuICBsZXQgYV9vbmZvcm1pbnB1dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZm9ybWlucHV0XCJcbiAgbGV0IGFfb25oYXNoY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25oYXNoY2hhbmdlXCJcbiAgbGV0IGFfb25pbnB1dCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaW5wdXRcIlxuICBsZXQgYV9vbmludmFsaWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmludmFsaWRcIlxuICBsZXQgYV9vbm9mZmxpbmUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm9mZmxpbmVcIlxuICBsZXQgYV9vbm9ubGluZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ub25saW5lXCJcbiAgbGV0IGFfb25wYXVzZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGF1c2VcIlxuICBsZXQgYV9vbnBsYXkgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBsYXlcIlxuICBsZXQgYV9vbnBsYXlpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBsYXlpbmdcIlxuICBsZXQgYV9vbnBhZ2VoaWRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYWdlaGlkZVwiXG4gIGxldCBhX29ucGFnZXNob3cgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhZ2VzaG93XCJcbiAgbGV0IGFfb25wb3BzdGF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucG9wc3RhdGVcIlxuICBsZXQgYV9vbnByb2dyZXNzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wcm9ncmVzc1wiXG4gIGxldCBhX29ucmF0ZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmF0ZWNoYW5nZVwiXG4gIGxldCBhX29ucmVhZHlzdGF0ZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiXG4gIGxldCBhX29ucmVkbyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVkb1wiXG4gIGxldCBhX29ucmVzaXplID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXNpemVcIlxuICBsZXQgYV9vbnNjcm9sbCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Nyb2xsXCJcbiAgbGV0IGFfb25zZWVrZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlZWtlZFwiXG4gIGxldCBhX29uc2Vla2luZyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2Vla2luZ1wiXG4gIGxldCBhX29uc2VsZWN0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWxlY3RcIlxuICBsZXQgYV9vbnNob3cgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNob3dcIlxuICBsZXQgYV9vbnN0YWxsZWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN0YWxsZWRcIlxuICBsZXQgYV9vbnN0b3JhZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN0b3JhZ2VcIlxuICBsZXQgYV9vbnN1Ym1pdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3VibWl0XCJcbiAgbGV0IGFfb25zdXNwZW5kID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdXNwZW5kXCJcbiAgbGV0IGFfb250aW1ldXBkYXRlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib250aW1ldXBkYXRlXCJcbiAgbGV0IGFfb251bmRvID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmRvXCJcbiAgbGV0IGFfb251bmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnVubG9hZFwiXG4gIGxldCBhX29udm9sdW1lY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib252b2x1bWVjaGFuZ2VcIlxuICBsZXQgYV9vbndhaXRpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbndhaXRpbmdcIlxuICBsZXQgYV9vbmxvYWQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRcIlxuICBsZXQgYV9vbmxvYWRlZGRhdGEgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmxvYWRlZGRhdGFcIlxuICBsZXQgYV9vbmxvYWRlZG1ldGFkYXRhID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkZWRtZXRhZGF0YVwiXG4gIGxldCBhX29ubG9hZHN0YXJ0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2Fkc3RhcnRcIlxuICBsZXQgYV9vbm1lc3NhZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1lc3NhZ2VcIlxuICBsZXQgYV9vbm1vdXNld2hlZWwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNld2hlZWxcIlxuXG4gICgqKiBKYXZhc2NyaXB0IG1vdXNlIGV2ZW50cyAqKVxuICBsZXQgYV9vbmNsaWNrID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbGlja1wiXG4gIGxldCBhX29uY29udGV4dG1lbnUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNvbnRleHRtZW51XCJcbiAgbGV0IGFfb25kYmxjbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZGJsY2xpY2tcIlxuICBsZXQgYV9vbmRyYWcgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdcIlxuICBsZXQgYV9vbmRyYWdlbmQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdlbmRcIlxuICBsZXQgYV9vbmRyYWdlbnRlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJhZ2VudGVyXCJcbiAgbGV0IGFfb25kcmFnbGVhdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdsZWF2ZVwiXG4gIGxldCBhX29uZHJhZ292ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdvdmVyXCJcbiAgbGV0IGFfb25kcmFnc3RhcnQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdzdGFydFwiXG4gIGxldCBhX29uZHJvcCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZHJvcFwiXG4gIGxldCBhX29ubW91c2Vkb3duID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZWRvd25cIlxuICBsZXQgYV9vbm1vdXNldXAgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNldXBcIlxuICBsZXQgYV9vbm1vdXNlb3ZlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2VvdmVyXCJcbiAgbGV0IGFfb25tb3VzZW1vdmUgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlbW92ZVwiXG4gIGxldCBhX29ubW91c2VvdXQgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3V0XCJcblxuICAoKiogSmF2YXNjcmlwdCB0b3VjaCBldmVudHMgKilcbiAgbGV0IGFfb250b3VjaHN0YXJ0ID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaHN0YXJ0XCJcbiAgbGV0IGFfb250b3VjaGVuZCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hlbmRcIlxuICBsZXQgYV9vbnRvdWNobW92ZSA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2htb3ZlXCJcbiAgbGV0IGFfb250b3VjaGNhbmNlbCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hjYW5jZWxcIlxuXG4gICgqKiBKYXZhc2NyaXB0IGtleWJvYXJkIGV2ZW50cyAqKVxuICBsZXQgYV9vbmtleXByZXNzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXlwcmVzc1wiXG4gIGxldCBhX29ua2V5ZG93biA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5ZG93blwiXG4gIGxldCBhX29ua2V5dXAgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleXVwXCJcblxuICAoKiBPdGhlciBBdHRyaWJ1dGVzICopXG4gIGxldCBhX3ZlcnNpb24gPSBzdHJpbmdfYXR0cmliIFwidmVyc2lvblwiXG5cbiAgbGV0IGFfeG1sbnMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWxuc1wiIHhcblxuICBsZXQgYV9tYW5pZmVzdCA9IHVyaV9hdHRyaWIgXCJtYW5pZmVzdFwiXG5cbiAgbGV0IGFfY2l0ZSA9IHVyaV9hdHRyaWIgXCJjaXRlXCJcblxuICBsZXQgYV94bWxfc3BhY2UgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bWw6c3BhY2VcIiB4XG5cbiAgbGV0IGFfYWNjZXNza2V5IGMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2NoYXJhY3RlciBcImFjY2Vzc2tleVwiIGNcblxuICBsZXQgYV9jaGFyc2V0ID0gc3RyaW5nX2F0dHJpYiBcImNoYXJzZXRcIlxuXG4gIGxldCBhX2FjY2VwdF9jaGFyc2V0ID0gc3BhY2Vfc2VwX2F0dHJpYiBcImFjY2VwdC1jaGFyc2V0XCJcblxuICBsZXQgYV9hY2NlcHQgPSBjb21tYV9zZXBfYXR0cmliIFwiYWNjZXB0XCJcblxuICBsZXQgYV9ocmVmID0gdXJpX2F0dHJpYiBcImhyZWZcIlxuXG4gIGxldCBhX2hyZWZsYW5nID0gc3RyaW5nX2F0dHJpYiBcImhyZWZsYW5nXCJcblxuICBsZXQgYV9kb3dubG9hZCBmaWxlID1cbiAgICB1c2VyX2F0dHJpYiAoQy51bm9wdGlvbl9zdHJpbmcpIFwiZG93bmxvYWRcIiBmaWxlXG5cbiAgbGV0IGFfcmVsID0gbGlua3R5cGVzX2F0dHJpYiBcInJlbFwiXG5cbiAgbGV0IGFfdGFiaW5kZXggPSBpbnRfYXR0cmliIFwidGFiaW5kZXhcIlxuXG4gIGxldCBhX21pbWVfdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJ0eXBlXCJcblxuICBsZXQgYV9hbHQgPSBzdHJpbmdfYXR0cmliIFwiYWx0XCJcblxuICBsZXQgYV9oZWlnaHQgcCA9IGludF9hdHRyaWIgXCJoZWlnaHRcIiBwXG5cbiAgbGV0IGFfc3JjID0gdXJpX2F0dHJpYiBcInNyY1wiXG5cbiAgbGV0IGFfd2lkdGggcCA9IGludF9hdHRyaWIgXCJ3aWR0aFwiIHBcblxuICBsZXQgYV9sYWJlbF9mb3IgPSBzdHJpbmdfYXR0cmliIFwiZm9yXCJcbiAgbGV0IGFfZm9yID0gYV9sYWJlbF9mb3JcblxuICBsZXQgYV9vdXRwdXRfZm9yID0gc3BhY2Vfc2VwX2F0dHJpYiBcImZvclwiXG4gIGxldCBhX2Zvcl9saXN0ID0gYV9vdXRwdXRfZm9yXG5cbiAgbGV0IGFfc2VsZWN0ZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNlbGVjdGVkXCJcblxuICBsZXQgYV90ZXh0X3ZhbHVlID0gc3RyaW5nX2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9pbnRfdmFsdWUgPSBpbnRfYXR0cmliIFwidmFsdWVcIlxuXG4gIGxldCBhX3ZhbHVlID0gc3RyaW5nX2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9mbG9hdF92YWx1ZSA9IGZsb2F0X2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV9hY3Rpb24gPSB1cmlfYXR0cmliIFwiYWN0aW9uXCJcblxuICBsZXQgYV9tZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtZXRob2RcIiB4XG5cbiAgbGV0IGFfZm9ybW1ldGhvZCB4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmb3JtbWV0aG9kXCIgeFxuXG4gIGxldCBhX2VuY3R5cGUgPSBzdHJpbmdfYXR0cmliIFwiZW5jdHlwZVwiXG5cbiAgbGV0IGFfY2hlY2tlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiY2hlY2tlZFwiXG5cbiAgbGV0IGFfZGlzYWJsZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImRpc2FibGVkXCJcblxuICBsZXQgYV9yZWFkb25seSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVhZG9ubHlcIlxuXG4gIGxldCBhX21heGxlbmd0aCA9IGludF9hdHRyaWIgXCJtYXhsZW5ndGhcIlxuXG4gIGxldCBhX21pbmxlbmd0aCA9IGludF9hdHRyaWIgXCJtaW5sZW5ndGhcIlxuXG4gIGxldCBhX25hbWUgPSBzdHJpbmdfYXR0cmliIFwibmFtZVwiXG5cbiAgbGV0IGFfYWxsb3dmdWxsc2NyZWVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhbGxvd2Z1bGxzY3JlZW5cIlxuXG4gIGxldCBhX2FsbG93cGF5bWVudHJlcXVlc3QgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFsbG93cGF5bWVudHJlcXVlc3RcIlxuXG4gIGxldCBhX3JlZmVycmVycG9saWN5IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3JlZmVycmVycG9saWN5IFwicmVmZXJyZXJwb2xpY3lcIiB4XG5cbiAgbGV0IGFfYXV0b2NvbXBsZXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2F1dG9jb21wbGV0ZSBcImF1dG9jb21wbGV0ZVwiIHhcblxuICBsZXQgYV9hc3luYyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXN5bmNcIlxuXG4gIGxldCBhX2F1dG9mb2N1cyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXV0b2ZvY3VzXCJcblxuICBsZXQgYV9hdXRvcGxheSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYXV0b3BsYXlcIlxuXG4gIGxldCBhX211dGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJtdXRlZFwiXG5cbiAgbGV0IGFfY3Jvc3NvcmlnaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJjcm9zc29yaWdpblwiIHhcblxuICBsZXQgYV9pbnRlZ3JpdHkgPSBzdHJpbmdfYXR0cmliIFwiaW50ZWdyaXR5XCJcblxuICBsZXQgYV9tZWRpYWdyb3VwID0gc3RyaW5nX2F0dHJpYiBcIm1lZGlhZ3JvdXBcIlxuXG4gIGxldCBhX2NoYWxsZW5nZSA9IHN0cmluZ19hdHRyaWIgXCJjaGFsbGVuZ2VcIlxuXG4gIGxldCBhX2NvbnRlbnRlZGl0YWJsZSBjZSA9XG4gICAgYm9vbF9hdHRyaWIgXCJjb250ZW50ZWRpdGFibGVcIiBjZVxuXG4gIGxldCBhX2NvbnRleHRtZW51ID0gc3RyaW5nX2F0dHJpYiBcImNvbnRleHRtZW51XCJcblxuICBsZXQgYV9jb250cm9scyA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiY29udHJvbHNcIlxuXG4gIGxldCBhX2RpciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImRpclwiIHhcblxuICBsZXQgYV9kcmFnZ2FibGUgZCA9XG4gICAgYm9vbF9hdHRyaWIgXCJkcmFnZ2FibGVcIiBkXG5cbiAgbGV0IGFfZm9ybSA9IHN0cmluZ19hdHRyaWIgXCJmb3JtXCJcblxuICBsZXQgYV9mb3JtYWN0aW9uID0gdXJpX2F0dHJpYiBcImZvcm1hY3Rpb25cIlxuXG4gIGxldCBhX2Zvcm1lbmN0eXBlID0gc3RyaW5nX2F0dHJpYiBcImZvcm1lbmN0eXBlXCJcblxuICBsZXQgYV9mb3Jtbm92YWxpZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZm9ybW5vdmFsaWRhdGVcIlxuXG4gIGxldCBhX2Zvcm10YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwiZm9ybXRhcmdldFwiXG5cbiAgbGV0IGFfaGlkZGVuID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJoaWRkZW5cIlxuXG4gIGxldCBhX2hpZ2ggPSBmbG9hdF9hdHRyaWIgXCJoaWdoXCJcblxuICBsZXQgYV9pY29uID0gdXJpX2F0dHJpYiBcImljb25cIlxuXG4gIGxldCBhX2lzbWFwID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJpc21hcFwiXG5cbiAgbGV0IGFfa2V5dHlwZSA9IHN0cmluZ19hdHRyaWIgXCJrZXl0eXBlXCJcblxuICBsZXQgYV9saXN0ID0gc3RyaW5nX2F0dHJpYiBcImxpc3RcIlxuXG4gIGxldCBhX2xvb3AgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImxvb3BcIlxuXG4gIGxldCBhX2xvdyA9IGZsb2F0X2F0dHJpYiBcImxvd1wiXG5cbiAgbGV0IGFfbWF4ID0gZmxvYXRfYXR0cmliIFwibWF4XCJcblxuICBsZXQgYV9pbnB1dF9tYXggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgXCJtYXhcIlxuXG4gIGxldCBhX21pbiA9IGZsb2F0X2F0dHJpYiBcIm1pblwiXG5cbiAgbGV0IGFfaW5wdXRfbWluID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIFwibWluXCJcblxuICBsZXQgYV9pbnB1dG1vZGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJpbnB1dG1vZGVcIiB4XG5cbiAgbGV0IGFfbm92YWxpZGF0ZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibm92YWxpZGF0ZVwiXG5cbiAgbGV0IGFfb3BlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwib3BlblwiXG5cbiAgbGV0IGFfb3B0aW11bSA9IGZsb2F0X2F0dHJpYiBcIm9wdGltdW1cIlxuXG4gIGxldCBhX3BhdHRlcm4gPSBzdHJpbmdfYXR0cmliIFwicGF0dGVyblwiXG5cbiAgbGV0IGFfcGxhY2Vob2xkZXIgPSBzdHJpbmdfYXR0cmliIFwicGxhY2Vob2xkZXJcIlxuXG4gIGxldCBhX3Bvc3RlciA9IHVyaV9hdHRyaWIgXCJwb3N0ZXJcIlxuXG4gIGxldCBhX3ByZWxvYWQgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwcmVsb2FkXCIgeFxuXG4gIGxldCBhX3B1YmRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInB1YmRhdGVcIlxuXG4gIGxldCBhX3JhZGlvZ3JvdXAgPSBzdHJpbmdfYXR0cmliIFwicmFkaW9ncm91cFwiXG5cbiAgbGV0IGFfcmVxdWlyZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlcXVpcmVkXCJcblxuICBsZXQgYV9yZXZlcnNlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwicmVzZXJ2ZWRcIlxuXG4gIGxldCBhX3NhbmRib3ggeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2FuZGJveCBcInNhbmRib3hcIiB4XG5cbiAgbGV0IGFfc3BlbGxjaGVjayBzYyA9XG4gICAgYm9vbF9hdHRyaWIgXCJzcGVsbGNoZWNrXCIgc2NcblxuICBsZXQgYV9zY29wZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNjb3BlZFwiXG5cbiAgbGV0IGFfc2VhbWxlc3MgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInNlYW1sZXNzXCJcblxuICBsZXQgYV9zaXplcyBzaXplcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2l6ZXMgXCJzaXplc1wiIHNpemVzXG5cbiAgbGV0IGFfc3BhbiA9IGludF9hdHRyaWIgXCJzcGFuXCJcblxuICAoKmxldCBhX3NyY2RvYyopXG4gIGxldCBhX3NyY2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuXG4gIGxldCBhX3NyY3NldCA9IHNyY3NldF9hdHRyaWIgXCJzcmNzZXRcIlxuXG4gIGxldCBhX2ltZ19zaXplcyA9IGNvbW1hX3NlcF9hdHRyaWIgXCJzaXplc1wiXG5cbiAgbGV0IGFfc3RhcnQgPSBpbnRfYXR0cmliIFwic3RhcnRcIlxuXG4gIGxldCBhX3N0ZXAgc3RlcCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc3RlcCBcInN0ZXBcIiBzdGVwXG5cbiAgbGV0IGFfdHJhbnNsYXRlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHJhbnNsYXRlXCIgeFxuICBcbiAgbGV0IGFfd3JhcCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIndyYXBcIiB4XG5cbiAgbGV0IGFfc2l6ZSA9IGludF9hdHRyaWIgXCJzaXplXCJcblxuICBsZXQgYV9pbnB1dF90eXBlIGl0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnB1dF90eXBlIFwidHlwZVwiIGl0XG5cbiAgbGV0IGFfbWVudV90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV9jb21tYW5kX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX2J1dHRvbl90eXBlIGJ0ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9pbnB1dF90eXBlIFwidHlwZVwiIGJ0XG5cbiAgbGV0IGFfc2NyaXB0X3R5cGUgc2MgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9zY3JpcHRfdHlwZSBcInR5cGVcIiBzY1xuXG4gIGxldCBhX211bHRpcGxlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJtdWx0aXBsZVwiXG5cbiAgbGV0IGFfY29scyA9IGludF9hdHRyaWIgXCJjb2xzXCJcblxuICBsZXQgYV9yb3dzID0gaW50X2F0dHJpYiBcInJvd3NcIlxuXG4gIGxldCBhX3N1bW1hcnkgPSBzdHJpbmdfYXR0cmliIFwic3VtbWFyeVwiXG5cbiAgbGV0IGFfYWxpZ24geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhbGlnblwiIHhcblxuICBsZXQgYV9heGlzID0gc3RyaW5nX2F0dHJpYiBcImF4aXNcIlxuXG4gIGxldCBhX2NvbHNwYW4gPSBpbnRfYXR0cmliIFwiY29sc3BhblwiXG5cbiAgbGV0IGFfaGVhZGVycyA9IHNwYWNlX3NlcF9hdHRyaWIgXCJoZWFkZXJzXCJcblxuICBsZXQgYV9yb3dzcGFuID0gaW50X2F0dHJpYiBcInJvd3NwYW5cIlxuXG4gIGxldCBhX3Njb3BlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2NvcGVcIiB4XG5cbiAgbGV0IGFfYm9yZGVyID0gaW50X2F0dHJpYiBcImJvcmRlclwiXG5cbiAgbGV0IGFfcnVsZXMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJydWxlc1wiIHhcblxuICBsZXQgYV9jaGFyIGMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2NoYXJhY3RlciBcImNoYXJcIiBjXG5cbiAgbGV0IGFfZGF0YSA9IHVyaV9hdHRyaWIgXCJkYXRhXCJcblxuICBsZXQgYV9jb2RldHlwZSA9IHN0cmluZ19hdHRyaWIgXCJjb2RldHlwZVwiXG5cbiAgbGV0IGFfZnJhbWVib3JkZXIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJmcmFtZWJvcmRlclwiIHhcblxuICBsZXQgYV9tYXJnaW5oZWlnaHQgPSBpbnRfYXR0cmliIFwibWFyZ2luaGVpZ2h0XCJcblxuICBsZXQgYV9tYXJnaW53aWR0aCA9IGludF9hdHRyaWIgXCJtYXJnaW53aWR0aFwiXG5cbiAgbGV0IGFfc2Nyb2xsaW5nIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2Nyb2xsaW5nXCIgeFxuXG4gIGxldCBhX3RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ0YXJnZXRcIlxuXG4gIGxldCBhX2NvbnRlbnQgPSBzdHJpbmdfYXR0cmliIFwiY29udGVudFwiXG5cbiAgbGV0IGFfaHR0cF9lcXVpdiA9IHN0cmluZ19hdHRyaWIgXCJodHRwLWVxdWl2XCJcblxuICBsZXQgYV9tZWRpYSA9IG1lZGlhZGVzY19hdHRyaWIgXCJtZWRpYVwiXG5cbiAgKCogQVJJQSAqKVxuXG4gIGxldCBhX3JvbGUgPSBzcGFjZV9zZXBfYXR0cmliIFwicm9sZVwiXG5cbiAgbGV0IGFfYXJpYSBuYW1lID0gc3BhY2Vfc2VwX2F0dHJpYiAoXCJhcmlhLVwiIF4gbmFtZSlcblxuICB0eXBlICdhIGVsdCA9IFhtbC5lbHRcblxuICB0eXBlICgnYSwgJ2IpIG51bGxhcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+IHVuaXQgLT4gJ2IgZWx0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdW5hcnkgPSA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICdiIGVsdCB3cmFwIC0+ICdjIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHN0YXIgPVxuICAgID9hOiAoKCdhIGF0dHJpYikgbGlzdCkgLT4gKCdiIGVsdCkgbGlzdF93cmFwIC0+ICdjIGVsdFxuXG4gIGxldCB0ZXJtaW5hbCB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICBsZXQgdW5hcnkgdGFnID9hIGVsdCA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLnNpbmdsZXRvbiBlbHQpXG5cbiAgbGV0IHN0YXIgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gIGxldCBwbHVzIHRhZyA/YSBlbHQgZWx0cyA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLmNvbnMgZWx0IGVsdHMpXG5cbiAgbGV0IG9wdGlvbl9jb25zIG9wdCBlbHRzID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgfCBTb21lIHggLT4gVy5jb25zIHggZWx0c1xuXG4gIGxldCBib2R5ID0gc3RhciBcImJvZHlcIlxuXG4gIGxldCBoZWFkID0gcGx1cyBcImhlYWRcIlxuXG4gIGxldCB0aXRsZSA9IHVuYXJ5IFwidGl0bGVcIlxuXG4gIGxldCBodG1sID9hIGhlYWQgYm9keSA9XG4gICAgbGV0IGNvbnRlbnQgPSBXLmNvbnMgaGVhZCAoVy5zaW5nbGV0b24gYm9keSkgaW5cbiAgICBYbWwubm9kZSA/YSBcImh0bWxcIiBjb250ZW50XG5cbiAgbGV0IGZvb3RlciA9IHN0YXIgXCJmb290ZXJcIlxuXG4gIGxldCBoZWFkZXIgPSBzdGFyIFwiaGVhZGVyXCJcblxuICBsZXQgc2VjdGlvbiA9IHN0YXIgXCJzZWN0aW9uXCJcblxuICBsZXQgbmF2ID0gc3RhciBcIm5hdlwiXG5cbiAgbGV0IHR4dCBzID0gWG1sLnBjZGF0YSBzXG4gIGxldCBwY2RhdGEgPSB0eHRcblxuICBsZXQgZW50aXR5ID0gWG1sLmVudGl0eVxuXG4gIGxldCBzcGFjZSAoKSA9IGVudGl0eSBcIm5ic3BcIlxuXG4gIGxldCBjZGF0YSA9IFhtbC5jZGF0YVxuXG4gIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgbGV0IGNkYXRhX3N0eWxlID0gWG1sLmNkYXRhX3N0eWxlXG5cbiAgbGV0IGgxID0gc3RhciBcImgxXCJcblxuICBsZXQgaDIgPSBzdGFyIFwiaDJcIlxuXG4gIGxldCBoMyA9IHN0YXIgXCJoM1wiXG5cbiAgbGV0IGg0ID0gc3RhciBcImg0XCJcblxuICBsZXQgaDUgPSBzdGFyIFwiaDVcIlxuXG4gIGxldCBoNiA9IHN0YXIgXCJoNlwiXG5cbiAgbGV0IGhncm91cCA9IHN0YXIgXCJoZ3JvdXBcIlxuXG4gIGxldCBhZGRyZXNzID0gc3RhciBcImFkZHJlc3NcIlxuXG4gIGxldCBibG9ja3F1b3RlID0gc3RhciBcImJsb2NrcXVvdGVcIlxuXG4gIGxldCBkaWFsb2cgPSBzdGFyIFwiZGlhbG9nXCJcblxuICBsZXQgZGl2ID0gc3RhciBcImRpdlwiXG5cbiAgbGV0IHAgPSBzdGFyIFwicFwiXG5cbiAgbGV0IHByZSA9IHN0YXIgXCJwcmVcIlxuXG4gIGxldCBhYmJyID0gc3RhciBcImFiYnJcIlxuXG4gIGxldCBiciA9IHRlcm1pbmFsIFwiYnJcIlxuXG4gIGxldCBjaXRlID0gc3RhciBcImNpdGVcIlxuXG4gIGxldCBjb2RlID0gc3RhciBcImNvZGVcIlxuXG4gIGxldCBkZm4gPSBzdGFyIFwiZGZuXCJcblxuICBsZXQgZW0gPSBzdGFyIFwiZW1cIlxuXG4gIGxldCBrYmQgPSBzdGFyIFwia2JkXCJcblxuICBsZXQgcSA9IHN0YXIgXCJxXCJcblxuICBsZXQgc2FtcCA9IHN0YXIgXCJzYW1wXCJcblxuICBsZXQgc3BhbiA9IHN0YXIgXCJzcGFuXCJcblxuICBsZXQgc3Ryb25nID0gc3RhciBcInN0cm9uZ1wiXG5cbiAgbGV0IHRpbWUgPSBzdGFyIFwidGltZVwiXG5cbiAgbGV0IHZhciA9IHN0YXIgXCJ2YXJcIlxuXG4gIGxldCBhID0gc3RhciBcImFcIlxuXG4gIGxldCBkbCA9IHN0YXIgXCJkbFwiXG5cbiAgbGV0IG9sID0gc3RhciBcIm9sXCJcblxuICBsZXQgdWwgPSBzdGFyIFwidWxcIlxuXG4gIGxldCBkZCA9IHN0YXIgXCJkZFwiXG5cbiAgbGV0IGR0ID0gc3RhciBcImR0XCJcblxuICBsZXQgbGkgPSBzdGFyIFwibGlcIlxuXG4gIGxldCBociA9IHRlcm1pbmFsIFwiaHJcIlxuXG4gIGxldCBiID0gc3RhciBcImJcIlxuXG4gIGxldCBpID0gc3RhciBcImlcIlxuXG4gIGxldCB1ID0gc3RhciBcInVcIlxuXG4gIGxldCBzbWFsbCA9IHN0YXIgXCJzbWFsbFwiXG5cbiAgbGV0IHN1YiA9IHN0YXIgXCJzdWJcIlxuXG4gIGxldCBzdXAgPSBzdGFyIFwic3VwXCJcblxuICBsZXQgbWFyayA9IHN0YXIgXCJtYXJrXCJcblxuICBsZXQgcnAgPSBzdGFyIFwicnBcIlxuXG4gIGxldCBydCA9IHN0YXIgXCJydFwiXG5cbiAgbGV0IHJ1YnkgPSBzdGFyIFwicnVieVwiXG5cbiAgbGV0IHdiciA9IHRlcm1pbmFsIFwid2JyXCJcblxuICAoKiBWQiAqKVxuICB0eXBlIHNoYXBlID0gWyB8IGBSZWN0IHwgYENpcmNsZSB8IGBQb2x5IHwgYERlZmF1bHQgXVxuXG4gIGxldCBiZG8gfmRpciA/KGEgPSBbXSkgZWx0cyA9IFhtbC5ub2RlIH5hOiAoKGFfZGlyIGRpcikgOjogYSkgXCJiZG9cIiBlbHRzXG5cbiAgbGV0IGFfZGF0ZXRpbWUgPSBzdHJpbmdfYXR0cmliIFwiZGF0ZXRpbWVcIlxuXG4gIGxldCBhX3NoYXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic2hhcGVcIiB4XG5cbiAgbGV0IGFfY29vcmRzIGNvb3JkcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcImNvb3Jkc1wiIGNvb3Jkc1xuXG4gIGxldCBhX3VzZW1hcCA9IHN0cmluZ19hdHRyaWIgXCJ1c2VtYXBcIlxuXG4gIGxldCBhX2RlZmVyID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJkZWZlclwiXG5cbiAgbGV0IGFfbGFiZWwgPSBzdHJpbmdfYXR0cmliIFwibGFiZWxcIlxuXG4gIGxldCBhcmVhIH5hbHQgPyhhID0gW10pICgpID0gWG1sLmxlYWYgfmE6ICgoYV9hbHQgYWx0KSA6OiBhKSBcImFyZWFcIlxuXG4gIGxldCBtYXAgPSBzdGFyIFwibWFwXCJcblxuICBsZXQgZGVsID0gc3RhciBcImRlbFwiXG5cbiAgbGV0IGlucyA9IHN0YXIgXCJpbnNcIlxuXG4gIGxldCBzY3JpcHQgPSB1bmFyeSBcInNjcmlwdFwiXG5cbiAgbGV0IG5vc2NyaXB0ID0gc3RhciBcIm5vc2NyaXB0XCJcblxuICBsZXQgdGVtcGxhdGUgPSBzdGFyIFwidGVtcGxhdGVcIlxuXG4gIGxldCBhcnRpY2xlID0gc3RhciBcImFydGljbGVcIlxuXG4gIGxldCBhc2lkZSA9IHN0YXIgXCJhc2lkZVwiXG5cbiAgbGV0IG1haW4gPSBzdGFyIFwibWFpblwiXG5cbiAgbGV0IHZpZGVvX2F1ZGlvIG5hbWUgP3NyYyA/c3JjcyA/KGEgPSBbXSkgZWx0cyA9XG4gICAgbGV0IGEgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhXG4gICAgICB8IFNvbWUgdXJpIC0+IChhX3NyYyB1cmkpIDo6IGFcbiAgICBpblxuICAgIG1hdGNoIHNyY3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBYbWwubm9kZSBuYW1lIH5hIGVsdHNcbiAgICB8IFNvbWUgc3JjcyAtPiBYbWwubm9kZSBuYW1lIH5hIChXLmFwcGVuZCBzcmNzIGVsdHMpXG5cbiAgbGV0IGF1ZGlvID0gdmlkZW9fYXVkaW8gXCJhdWRpb1wiXG5cbiAgbGV0IHZpZGVvID0gdmlkZW9fYXVkaW8gXCJ2aWRlb1wiXG5cbiAgbGV0IGNhbnZhcyA9IHN0YXIgXCJjYW52YXNcIlxuXG4gIGxldCBjb21tYW5kIH5sYWJlbCA/KGEgPSBbXSkgKCkgPVxuICAgIFhtbC5sZWFmIH5hOiAoKGFfbGFiZWwgbGFiZWwpIDo6IGEpIFwiY29tbWFuZFwiXG5cbiAgbGV0IG1lbnUgP2NoaWxkcmVuID9hICgpID1cbiAgICBsZXQgY2hpbGRyZW4gPSBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVy5uaWwgKClcbiAgICAgIHwgU29tZSAoYExpcyBsKVxuICAgICAgfCBTb21lIChgRmxvd3MgbCkgLT4gbCBpblxuICAgIFhtbC5ub2RlID9hIFwibWVudVwiIGNoaWxkcmVuXG5cbiAgbGV0IGVtYmVkID0gdGVybWluYWwgXCJlbWJlZFwiXG5cbiAgbGV0IHNvdXJjZSA9IHRlcm1pbmFsIFwic291cmNlXCJcblxuICBsZXQgbWV0ZXIgPSBzdGFyIFwibWV0ZXJcIlxuXG4gIGxldCBvdXRwdXRfZWx0ID0gc3RhciBcIm91dHB1dFwiXG5cbiAgbGV0IGZvcm0gPSBzdGFyIFwiZm9ybVwiXG5cbiAgbGV0IHN2ZyA/KGEgPSBbXSkgY2hpbGRyZW4gPVxuICAgIFN2Zy50b2VsdCAoU3ZnLnN2ZyB+YSBjaGlsZHJlbilcblxuICBsZXQgaW5wdXQgPSB0ZXJtaW5hbCBcImlucHV0XCJcblxuICBsZXQga2V5Z2VuID0gdGVybWluYWwgXCJrZXlnZW5cIlxuXG4gIGxldCBsYWJlbCA9IHN0YXIgXCJsYWJlbFwiXG5cbiAgbGV0IG9wdGlvbiA9IHVuYXJ5IFwib3B0aW9uXCJcblxuICBsZXQgc2VsZWN0ID0gc3RhciBcInNlbGVjdFwiXG5cbiAgbGV0IHRleHRhcmVhID0gdW5hcnkgXCJ0ZXh0YXJlYVwiXG5cbiAgbGV0IGJ1dHRvbiA9IHN0YXIgXCJidXR0b25cIlxuXG4gIGxldCBkYXRhbGlzdCA/Y2hpbGRyZW4gP2EgKCkgPVxuICAgIGxldCBjaGlsZHJlbiA9IG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBXLm5pbCAoKVxuICAgICAgfCBTb21lIChgT3B0aW9ucyB4IHwgYFBocmFzIHgpIC0+IHggaW5cbiAgICBYbWwubm9kZSA/YSBcImRhdGFsaXN0XCIgY2hpbGRyZW5cblxuICBsZXQgcHJvZ3Jlc3MgPSBzdGFyIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBsZWdlbmQgPSBzdGFyIFwibGVnZW5kXCJcblxuICBsZXQgZGV0YWlscyBzdW1tYXJ5ID9hIGNoaWxkcmVuID1cbiAgICBwbHVzIFwiZGV0YWlsc1wiID9hIHN1bW1hcnkgY2hpbGRyZW5cblxuICBsZXQgc3VtbWFyeSA9IHN0YXIgXCJzdW1tYXJ5XCJcblxuICBsZXQgZmllbGRzZXQgP2xlZ2VuZCA/YSBlbHRzID1cbiAgICBYbWwubm9kZSA/YSBcImZpZWxkc2V0XCIgKG9wdGlvbl9jb25zIGxlZ2VuZCBlbHRzKVxuXG4gIGxldCBvcHRncm91cCB+bGFiZWwgPyhhID0gW10pIGVsdHMgPVxuICAgIFhtbC5ub2RlIH5hOiAoKGFfbGFiZWwgbGFiZWwpIDo6IGEpIFwib3B0Z3JvdXBcIiBlbHRzXG5cbiAgbGV0IGZpZ2NhcHRpb24gPSBzdGFyIFwiZmlnY2FwdGlvblwiXG4gIGxldCBmaWd1cmUgP2ZpZ2NhcHRpb24gP2EgZWx0cyA9XG4gICAgbGV0IGNvbnRlbnQgPSBtYXRjaCBmaWdjYXB0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgICB8IFNvbWUgKGBUb3AgYykgLT4gVy5jb25zIGMgZWx0c1xuICAgICAgfCBTb21lIChgQm90dG9tIGMpIC0+IFcuYXBwZW5kIGVsdHMgKFcuc2luZ2xldG9uIGMpXG4gICAgaW5cbiAgICBYbWwubm9kZSA/YSBcImZpZ3VyZVwiIGNvbnRlbnRcblxuICBsZXQgY2FwdGlvbiA9IHN0YXIgXCJjYXB0aW9uXCJcblxuICBsZXQgdGFibGV4ID9jYXB0aW9uID9jb2x1bW5zID90aGVhZCA/dGZvb3QgP2EgZWx0cyA9XG4gICAgbGV0IGNvbnRlbnQgPSBvcHRpb25fY29ucyB0aGVhZCAob3B0aW9uX2NvbnMgdGZvb3QgZWx0cykgaW5cbiAgICBsZXQgY29udGVudCA9IG1hdGNoIGNvbHVtbnMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNvbnRlbnRcbiAgICAgIHwgU29tZSBjb2x1bW5zIC0+IFcuYXBwZW5kIGNvbHVtbnMgY29udGVudCBpblxuICAgIGxldCBjb250ZW50ID0gb3B0aW9uX2NvbnMgY2FwdGlvbiBjb250ZW50IGluXG4gICAgWG1sLm5vZGUgP2EgXCJ0YWJsZVwiIGNvbnRlbnRcblxuICBsZXQgdGFibGUgPSB0YWJsZXhcblxuICBsZXQgdGQgPSBzdGFyIFwidGRcIlxuXG4gIGxldCB0aCA9IHN0YXIgXCJ0aFwiXG5cbiAgbGV0IHRyID0gc3RhciBcInRyXCJcblxuICBsZXQgY29sZ3JvdXAgPSBzdGFyIFwiY29sZ3JvdXBcIlxuXG4gIGxldCBjb2wgPSB0ZXJtaW5hbCBcImNvbFwiXG5cbiAgbGV0IHRoZWFkID0gc3RhciBcInRoZWFkXCJcblxuICBsZXQgdGJvZHkgPSBzdGFyIFwidGJvZHlcIlxuXG4gIGxldCB0Zm9vdCA9IHN0YXIgXCJ0Zm9vdFwiXG5cbiAgbGV0IGlmcmFtZSA9IHN0YXIgXCJpZnJhbWVcIlxuXG4gIGxldCBvYmplY3RfID9wYXJhbXMgPyhhID0gW10pIGVsdHMgPVxuICAgIGxldCBlbHRzID0gbWF0Y2ggcGFyYW1zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbHRzXG4gICAgICB8IFNvbWUgZSAtPiBXLmFwcGVuZCBlIGVsdHMgaW5cbiAgICBYbWwubm9kZSB+YSBcIm9iamVjdFwiIGVsdHNcblxuICBsZXQgcGFyYW0gPSB0ZXJtaW5hbCBcInBhcmFtXCJcblxuICBsZXQgaW1nIH5zcmMgfmFsdCA/KGEgPSBbXSkgKCkgPVxuICAgIGxldCBhID0gKGFfc3JjIHNyYykgOjogKGFfYWx0IGFsdCkgOjogYSBpblxuICAgIFhtbC5sZWFmIH5hIFwiaW1nXCJcblxuICBsZXQgcGljdHVyZSB+aW1nID9hIGVsdHMgPVxuICAgIGxldCB0YWlsX25vZGUgPSBXLmNvbnMgaW1nIChXLm5pbCAoKSkgaW5cbiAgICBsZXQgY29udGVudCA9IFcuYXBwZW5kIGVsdHMgdGFpbF9ub2RlIGluXG4gICAgWG1sLm5vZGUgP2EgXCJwaWN0dXJlXCIgY29udGVudFxuXG4gIGxldCBtZXRhID0gdGVybWluYWwgXCJtZXRhXCJcblxuICBsZXQgc3R5bGUgPyhhID0gW10pIGVsdHMgPSBYbWwubm9kZSB+YSBcInN0eWxlXCIgZWx0c1xuXG4gIGxldCBsaW5rIH5yZWwgfmhyZWYgPyhhID0gW10pICgpID1cbiAgICBYbWwubGVhZiB+YTogKChhX3JlbCByZWwpIDo6IChhX2hyZWYgaHJlZikgOjogYSkgXCJsaW5rXCJcblxuICBsZXQgYmFzZSA9IHRlcm1pbmFsIFwiYmFzZVwiXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgKCogQ29udmVyc2lvbiBmcm9tIGFuZCB0byBYbWwgbW9kdWxlICopXG4gIGxldCB0b3QgeCA9IHhcblxuICBsZXQgdG90bCB4ID0geFxuXG4gIGxldCB0b2VsdCB4ID0geFxuXG4gIGxldCB0b2VsdGwgeCA9IHhcblxuICB0eXBlIGRvYyAgPSBbIGBIdG1sIF0gZWx0XG4gIGxldCBkb2NfdG9lbHQgeCA9IHhcblxuICBtb2R1bGUgSSA9IFhtbF9zdHJlYW0uSW1wb3J0KFhtbClcbiAgbGV0IG9mX3NlcSBzID0gdG90bCBAQCBJLm9mX3NlcSBzXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuXG4gICAgbGV0IGRhdGEgcyA9IFhtbC5lbmNvZGVkcGNkYXRhIHNcblxuICAgIGxldCBsZWFmIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gICAgbGV0IG5vZGUgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gICAgbGV0IGNvZXJjZV9lbHQgeCA9IHhcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBXcmFwcGVkX2Z1bmN0aW9uc1xuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsJ2IpIFcuZnQgPSAnYSAtPiAnYikgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIGxldCBzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiA9IGZ1bmN0aW9uXG4gICAgfCBgQWxsb3dfZm9ybXMgLT4gXCJhbGxvdy1mb3Jtc1wiXG4gICAgfCBgQWxsb3dfcG9pbnRlcl9sb2NrIC0+IFwiYWxsb3ctcG9pbnRlci1sb2NrXCJcbiAgICB8IGBBbGxvd19wb3B1cHMgLT4gXCJhbGxvdy1wb3B1cHNcIlxuICAgIHwgYEFsbG93X3RvcF9uYXZpZ2F0aW9uIC0+IFwiYWxsb3ctdG9wLW5hdmlnYXRpb25cIlxuICAgIHwgYEFsbG93X3NhbWVfb3JpZ2luIC0+IFwiYWxsb3ctc2FtZS1vcmlnaW5cIlxuICAgIHwgYEFsbG93X3NjcmlwdCAtPiBcImFsbG93LXNjcmlwdFwiXG5cbiAgbGV0IHN0cmluZ19vZl9saW5rdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICB8IGBBcmNoaXZlcyAtPiBcImFyY2hpdmVzXCJcbiAgICB8IGBBdXRob3IgLT4gXCJhdXRob3JcIlxuICAgIHwgYEJvb2ttYXJrIC0+IFwiYm9va21hcmtcIlxuICAgIHwgYENhbm9uaWNhbCAtPiBcImNhbm9uaWNhbFwiXG4gICAgfCBgRG5zX3ByZWZldGNoIC0+IFwiZG5zLXByZWZldGNoXCJcbiAgICB8IGBFeHRlcm5hbCAtPiBcImV4dGVybmFsXCJcbiAgICB8IGBGaXJzdCAtPiBcImZpcnN0XCJcbiAgICB8IGBIZWxwIC0+IFwiaGVscFwiXG4gICAgfCBgSWNvbiAtPiBcImljb25cIlxuICAgIHwgYEluZGV4IC0+IFwiaW5kZXhcIlxuICAgIHwgYExhc3QgLT4gXCJsYXN0XCJcbiAgICB8IGBMaWNlbnNlIC0+IFwibGljZW5zZVwiXG4gICAgfCBgTWFuaWZlc3QgLT4gXCJtYW5pZmVzdFwiXG4gICAgfCBgTWUgLT4gXCJtZVwiXG4gICAgfCBgTW9kdWxlcHJlbG9hZCAtPiBcIm1vZHVsZXByZWxvYWRcIlxuICAgIHwgYE5leHQgLT4gXCJuZXh0XCJcbiAgICB8IGBOb2ZvbGxvdyAtPiBcIm5vZm9sbG93XCJcbiAgICB8IGBOb29wZW5lciAtPiBcIm5vb3BlbmVyXCJcbiAgICB8IGBOb3JlZmVycmVyIC0+IFwibm9yZWZlcnJlclwiXG4gICAgfCBgT3BlbmVyIC0+IFwib3BlbmVyXCJcbiAgICB8IGBQaW5nYmFjayAtPiBcInBpbmdiYWNrXCJcbiAgICB8IGBQcmVjb25uZWN0IC0+IFwicHJlY29ubmVjdFwiXG4gICAgfCBgUHJlZmV0Y2ggLT4gXCJwcmVmZXRjaFwiXG4gICAgfCBgUHJlbG9hZCAtPiBcInByZWxvYWRcIlxuICAgIHwgYFByZXJlbmRlciAtPiBcInByZXJlbmRlclwiXG4gICAgfCBgUHJldiAtPiBcInByZXZcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3R5bGVzaGVldCAtPiBcInN0eWxlc2hlZXRcIlxuICAgIHwgYFNpZGViYXIgLT4gXCJzaWRlYmFyXCJcbiAgICB8IGBUYWcgLT4gXCJ0YWdcIlxuICAgIHwgYFVwIC0+IFwidXBcIlxuICAgIHwgYE90aGVyIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfbWVkaWFkZXNjX3Rva2VuID1cbiAgICBmdW5jdGlvblxuICAgIHwgYEFsbCAtPiBcImFsbFwiXG4gICAgfCBgQXVyYWwgLT4gXCJhdXJhbFwiXG4gICAgfCBgQnJhaWxsZSAtPiBcImJyYWlsbGVcIlxuICAgIHwgYEVtYm9zc2VkIC0+IFwiZW1ib3NzZWRcIlxuICAgIHwgYEhhbmRoZWxkIC0+IFwiaGFuZGhlbGRcIlxuICAgIHwgYFByaW50IC0+IFwicHJpbnRcIlxuICAgIHwgYFByb2plY3Rpb24gLT4gXCJwcm9qZWN0aW9uXCJcbiAgICB8IGBTY3JlZW4gLT4gXCJzY3JlZW5cIlxuICAgIHwgYFNwZWVjaCAtPiBcInNwZWVjaFwiXG4gICAgfCBgVHR5IC0+IFwidHR5XCJcbiAgICB8IGBUdiAtPiBcInR2XCJcbiAgICB8IGBSYXdfbWVkaWFkZXNjIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kgPSBmdW5jdGlvblxuICAgIHwgYEVtcHR5IC0+IFwiXCJcbiAgICB8IGBOb19yZWZlcnJlciAtPiBcIm5vLXJlZmVycmVyXCJcbiAgICB8IGBOb19yZWZlcnJlcl93aGVuX2Rvd25ncmFkZSAtPiBcIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlXCJcbiAgICB8IGBPcmlnaW4gLT4gXCJvcmlnaW5cIlxuICAgIHwgYE9yaWdpbl93aGVuX2Nyb3NzX29yaWdpbiAtPiBcIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpblwiXG4gICAgfCBgU2FtZV9vcmlnaW4gLT4gXCJzYW1lLW9yaWdpblwiXG4gICAgfCBgU3RyaWN0X29yaWdpbiAtPiBcInN0cmljdC1vcmlnaW5cIlxuICAgIHwgYFN0cmljdF9vcmlnaW5fd2hlbl9jcm9zc19vcmlnaW4gLT4gXCJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCJcbiAgICB8IGBVbnNhZmVfdXJsIC0+IFwidW5zYWZlLXVybFwiXG5cbiAgbGV0IHN0cmluZ19vZl9iaWdfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBgQW5vbnltb3VzIC0+IFwiYW5vbnltb3VzXCJcbiAgICB8IGBBc3luYyAtPiBcImFzeW5jXCJcbiAgICB8IGBBdXRvZm9jdXMgLT4gXCJhdXRvZm9jdXNcIlxuICAgIHwgYEF1dG9wbGF5IC0+IFwiYXV0b3BsYXlcIlxuICAgIHwgYENoZWNrZWQgLT4gXCJjaGVja2VkXCJcbiAgICB8IGBEZWZlciAtPiBcImRlZmVyXCJcbiAgICB8IGBEaXNhYmxlZCAtPiBcImRpc2FibGVkXCJcbiAgICB8IGBNdXRlZCAtPiBcIm11dGVkXCJcbiAgICB8IGBSZWFkT25seSAtPiBcInJlYWRvbmx5XCJcbiAgICB8IGBSZWN0IC0+IFwicmVjdFwiXG4gICAgfCBgU2VsZWN0ZWQgLT4gXCJzZWxlY3RlZFwiXG4gICAgfCBgVXNlX2NyZWRlbnRpYWxzIC0+IFwidXNlLWNyZWRlbnRpYWxzXCJcbiAgICB8IGBXM19vcmdfMTk5OV94aHRtbCAtPiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuICAgIHwgYEFsbCAtPiBcImFsbFwiXG4gICAgfCBgUHJlc2VydmUgLT4gXCJwcmVzZXJ2ZVwiXG4gICAgfCBgRGVmYXVsdCAtPiBcImRlZmF1bHRcIlxuICAgIHwgYENvbnRyb2xzIC0+IFwiY29udHJvbHNcIlxuICAgIHwgYEx0ciAtPiBcImx0clwiXG4gICAgfCBgUnRsIC0+IFwicnRsXCJcbiAgICB8IGBHZXQgLT4gXCJHRVRcIlxuICAgIHwgYFBvc3QgLT4gXCJQT1NUXCJcbiAgICB8IGBGb3Jtbm92YWxpZGF0ZSAtPiBcImZvcm1ub3ZhbGlkYXRlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYElzbWFwIC0+IFwiaXNtYXBcIlxuICAgIHwgYExvb3AgLT4gXCJsb29wXCJcbiAgICB8IGBOb3ZhbGlkYXRlIC0+IFwibm92YWxpZGF0ZVwiXG4gICAgfCBgT3BlbiAtPiBcIm9wZW5cIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBNZXRhZGF0YSAtPiBcIm1ldGFkYXRhXCJcbiAgICB8IGBBdWRpbyAtPiBcImF1ZGlvXCJcbiAgICB8IGBQdWJkYXRlIC0+IFwicHViZGF0ZVwiXG4gICAgfCBgUmVxdWlyZWQgLT4gXCJyZXF1aXJlZFwiXG4gICAgfCBgUmV2ZXJzZWQgLT4gXCJyZXNlcnZlZFwiXG4gICAgfCBgU2NvcGVkIC0+IFwic2NvcGVkXCJcbiAgICB8IGBTZWFtbGVzcyAtPiBcInNlYW1sZXNzXCJcbiAgICB8IGBBbnkgLT4gXCJhbnlcIlxuICAgIHwgYFNvZnQgLT4gXCJzb2Z0XCJcbiAgICB8IGBIYXJkIC0+IFwiaGFyZFwiXG4gICAgfCBgQ29udGV4dCAtPiBcImNvbnRleHRcIlxuICAgIHwgYFRvb2xiYXIgLT4gXCJ0b29sYmFyXCJcbiAgICB8IGBDb21tYW5kIC0+IFwiY29tbWFuZFwiXG4gICAgfCBgQ2hlY2tib3ggLT4gXCJjaGVja2JveFwiXG4gICAgfCBgUmFkaW8gLT4gXCJyYWRpb1wiXG4gICAgfCBgTXVsdGlwbGUgLT4gXCJtdWx0aXBsZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBDaGFyIC0+IFwiY2hhclwiXG4gICAgfCBgUm93IC0+IFwicm93XCJcbiAgICB8IGBDb2wgLT4gXCJjb2xcIlxuICAgIHwgYFJvd2dyb3VwIC0+IFwicm93Z3JvdXBcIlxuICAgIHwgYENvbGdyb3VwIC0+IFwiY29sZ3JvdXBcIlxuICAgIHwgYEdyb3VwcyAtPiBcImdyb3Vwc1wiXG4gICAgfCBgUm93cyAtPiBcInJvd3NcIlxuICAgIHwgYENvbHMgLT4gXCJjb2xzXCJcbiAgICB8IGBaZXJvIC0+IFwiMFwiXG4gICAgfCBgT25lIC0+IFwiMVwiXG4gICAgfCBgWWVzIC0+IFwieWVzXCJcbiAgICB8IGBObyAtPiBcIm5vXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQ2lyY2xlIC0+IFwiY2lyY2xlXCJcbiAgICB8IGBQb2x5IC0+IFwicG9seVwiXG4gICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICB8IGBBcmNoaXZlcyAtPiBcImFyY2hpdmVzXCJcbiAgICB8IGBBdXRob3IgLT4gXCJhdXRob3JcIlxuICAgIHwgYEJvb2ttYXJrIC0+IFwiYm9va21hcmtcIlxuICAgIHwgYEV4dGVybmFsIC0+IFwiZXh0ZXJuYWxcIlxuICAgIHwgYEZpcnN0IC0+IFwiZmlyc3RcIlxuICAgIHwgYEhlbHAgLT4gXCJoZWxwXCJcbiAgICB8IGBJY29uIC0+IFwiaWNvblwiXG4gICAgfCBgSW5kZXggLT4gXCJpbmRleFwiXG4gICAgfCBgTGFzdCAtPiBcImxhc3RcIlxuICAgIHwgYExpY2Vuc2UgLT4gXCJsaWNlbnNlXCJcbiAgICB8IGBOZXh0IC0+IFwibmV4dFwiXG4gICAgfCBgTm9mb2xsb3cgLT4gXCJub2ZvbGxvd1wiXG4gICAgfCBgTm9yZWZlcnJlciAtPiBcIm5vcmVmZXJyZXJcIlxuICAgIHwgYFBpbmdiYWNrIC0+IFwicGluZ2JhY2tcIlxuICAgIHwgYFByZWZldGNoIC0+IFwicHJlZmV0Y2hcIlxuICAgIHwgYFByZXYgLT4gXCJwcmV2XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN0eWxlc2hlZXQgLT4gXCJzdHlsZXNoZWV0XCJcbiAgICB8IGBTaWRlYmFyIC0+IFwic2lkZWJhclwiXG4gICAgfCBgVGFnIC0+IFwidGFnXCJcbiAgICB8IGBVcCAtPiBcInVwXCJcbiAgICB8IGBWZXJiYXRpbSAtPiBcInZlcmJhdGltXCJcbiAgICB8IGBMYXRpbiAtPiBcImxhdGluXCJcbiAgICB8IGBMYXRpbl9uYW1lIC0+IFwibGF0aW4tbmFtZVwiXG4gICAgfCBgTGF0aW5fcHJvc2UgLT4gXCJsYXRpbi1wcm9zZVwiXG4gICAgfCBgRnVsbF93aWR0aF9sYXRpbiAtPiBcImZ1bGwtd2lkdGgtbGF0aW5cIlxuICAgIHwgYEthbmEgLT4gXCJrYW5hXCJcbiAgICB8IGBLYXRha2FuYSAtPiBcImthdGFrYW5hXCJcbiAgICB8IGBOdW1lcmljIC0+IFwibnVtZXJpY1wiXG4gICAgfCBgVGVsIC0+IFwidGVsXCJcbiAgICB8IGBFbWFpbCAtPiBcImVtYWlsXCJcbiAgICB8IGBVcmwgLT4gXCJ1cmxcIlxuICAgIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbiAgICB8IGBEZWNpbWFsIC0+IFwiZGVjaW1hbFwiXG4gICAgfCBgT3RoZXIgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9pbnB1dF90eXBlID0gZnVuY3Rpb25cbiAgICB8IGBCdXR0b24gLT4gXCJidXR0b25cIlxuICAgIHwgYENoZWNrYm94IC0+IFwiY2hlY2tib3hcIlxuICAgIHwgYENvbG9yIC0+IFwiY29sb3JcIlxuICAgIHwgYERhdGUgLT4gXCJkYXRlXCJcbiAgICB8IGBEYXRldGltZSAtPiBcImRhdGV0aW1lXCJcbiAgICB8IGBEYXRldGltZV9sb2NhbCAtPiBcImRhdGV0aW1lLWxvY2FsXCJcbiAgICB8IGBFbWFpbCAtPiBcImVtYWlsXCJcbiAgICB8IGBGaWxlIC0+IFwiZmlsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBJbWFnZSAtPiBcImltYWdlXCJcbiAgICB8IGBNb250aCAtPiBcIm1vbnRoXCJcbiAgICB8IGBOdW1iZXIgLT4gXCJudW1iZXJcIlxuICAgIHwgYFBhc3N3b3JkIC0+IFwicGFzc3dvcmRcIlxuICAgIHwgYFJhZGlvIC0+IFwicmFkaW9cIlxuICAgIHwgYFJhbmdlIC0+IFwicmFuZ2VcIlxuICAgIHwgYFJlYWRvbmx5IC0+IFwicmVhZG9ubHlcIlxuICAgIHwgYFJlc2V0IC0+IFwicmVzZXRcIlxuICAgIHwgYFNlYXJjaCAtPiBcInNlYXJjaFwiXG4gICAgfCBgU3VibWl0IC0+IFwic3VibWl0XCJcbiAgICB8IGBUZWwgLT4gXCJ0ZWxcIlxuICAgIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbiAgICB8IGBUaW1lIC0+IFwidGltZVwiXG4gICAgfCBgVXJsIC0+IFwidXJsXCJcbiAgICB8IGBXZWVrIC0+IFwid2Vla1wiXG5cbiAgbGV0IHN0cmluZ19vZl9zY3JpcHRfdHlwZSA9IGZ1bmN0aW9uXG4gIHwgYEphdmFzY3JpcHQgLT4gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCJcbiAgfCBgTW9kdWxlIC0+IFwibW9kdWxlXCJcbiAgfCBgTWltZSBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSA9IGZ1bmN0aW9uXG4gICAgfCBgTnVtYmVyIG4gLT4gc3RyaW5nX29mX2ludCBuXG4gICAgfCBgRGF0ZXRpbWUgdCAtPiB0XG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyYWN0ZXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXIgPSBzdHJpbmdfb2ZfaW50XG5cbiAgbGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgb25vZmZfb2ZfYm9vbCA9IGZ1bmN0aW9uXG4gICAgfCBmYWxzZSAtPiBcIm9mZlwiXG4gICAgfCB0cnVlIC0+IFwib25cIlxuXG4gIGxldCB1bm9wdGlvbl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gXCJcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXIgeFxuICAgIHwgTm9uZSAtPiBcImFueVwiXG5cbiAgbGV0IHN0cmluZ19vZl9zaXplcyA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKExpc3QubWFwIChmdW4gKHgsIHkpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWR4JWRcIiB4IHkpIGwpXG4gICAgfCBOb25lIC0+XG4gICAgICBcImFueVwiXG5cbiAgbGV0IHN0cmluZ19vZl9zYW5kYm94IGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl9zYW5kYm94X3Rva2VuIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIHN0cmluZ19vZl9udW1iZXIgbClcblxuICBsZXQgc3RyaW5nX29mX21lZGlhZGVzYyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX21lZGlhZGVzY190b2tlbiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbGlua3R5cGVzIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHN0cmluZ19vZl9saW5rdHlwZSBsKVxuXG4gIHR5cGUgaW1hZ2VfY2FuZGlkYXRlID1cbiAgICBbIGBVcmwgb2YgWG1sLnVyaVxuICAgIHwgYFVybF93aWR0aCBvZiBYbWwudXJpICogSHRtbF90eXBlcy5udW1iZXJcbiAgICB8IGBVcmxfcGl4ZWwgb2YgWG1sLnVyaSAqIEh0bWxfdHlwZXMuZmxvYXRfbnVtYmVyIF1cblxuICBsZXQgc3RyaW5nX29mX3NyY3NldCAobCA6IFs8IGltYWdlX2NhbmRpZGF0ZV0gbGlzdCkgPVxuICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICB8IGBVcmwgdXJsIC0+IFhtbC5zdHJpbmdfb2ZfdXJpIHVybFxuICAgIHwgYFVybF93aWR0aCAodXJsLCB2KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlc3dcIiAoWG1sLnN0cmluZ19vZl91cmkgdXJsKSAoc3RyaW5nX29mX251bWJlciB2KVxuICAgIHwgYFVybF9waXhlbCAodXJsLCB2KSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlc3hcIiAoWG1sLnN0cmluZ19vZl91cmkgdXJsKSAoWG1sX3ByaW50LnN0cmluZ19vZl9udW1iZXIgdilcbiAgICBpblxuICAgIFN0cmluZy5jb25jYXQgXCIsIFwiIChMaXN0Lm1hcCBmIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9hdXRvY29tcGxldGUgKGwgOiBIdG1sX3R5cGVzLmF1dG9jb21wbGV0ZV9vcHRpb24pID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBPbiB8IGBUb2tlbnMgW10gLT4gXCJvblwiXG4gICAgfCBgT2ZmIC0+IFwib2ZmXCJcbiAgICB8IGBUb2tlbnMgc3RycyAtPiBTdHJpbmcuY29uY2F0IFwiIFwiIHN0cnNcblxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKFhtbCA6IFhtbF9zaWdzLlQgd2l0aCB0eXBlICgnYSwgJ2IpIFcuZnQgPSAnYSAtPiAnYilcbiAgICAoU3ZnIDogU3ZnX3NpZ3MuVCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG4gIE1ha2Vfd2l0aF93cmFwcGVkX2Z1bmN0aW9ucyhYbWwpKFdyYXBwZWRfZnVuY3Rpb25zKFhtbCkpKFN2ZylcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMDcgR2FicmllbCBLZXJuZWlzXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ2VjaWxlIEhlcmJlbGluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5cbm1vZHVsZSBNID0gc3RydWN0XG5cbiAgbW9kdWxlIFcgPSBYbWxfd3JhcC5Ob1dyYXBcblxuICB0eXBlICdhIHdyYXAgPSAnYVxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuICBsZXQgdXJpX29mX3N0cmluZyBzID0gc1xuICBsZXQgc3RyaW5nX29mX3VyaSBzID0gc1xuXG4gIHR5cGUgc2VwYXJhdG9yID0gU3BhY2UgfCBDb21tYVxuXG4gICgqKiBBdHRyaWJ1dGVzICopXG5cbiAgdHlwZSBhbmFtZSA9IHN0cmluZ1xuICB0eXBlIGFjb250ZW50ID1cbiAgICB8IEFGbG9hdCBvZiBmbG9hdFxuICAgIHwgQUludCBvZiBpbnRcbiAgICB8IEFTdHIgb2Ygc3RyaW5nXG4gICAgfCBBU3RyTCBvZiBzZXBhcmF0b3IgKiBzdHJpbmcgbGlzdFxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYWNvbnRlbnRcblxuICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIHRvdWNoX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcblxuICBsZXQgYWNvbnRlbnQgKF8sIGEpID0gYVxuICBsZXQgYW5hbWUgKG5hbWUsIF8pID0gbmFtZVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFGbG9hdCB2YWx1ZVxuICBsZXQgaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQUludCB2YWx1ZVxuICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChTcGFjZSwgdmFsdWVzKVxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChDb21tYSwgdmFsdWVzKVxuICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHVyaV9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHVyaXNfYXR0cmliIG5hbWUgdmFsdWVzID0gbmFtZSwgQVN0ckwgKFNwYWNlLCB2YWx1ZXMpXG5cblxuICAoKiogRWxlbWVudCAqKVxuXG4gIHR5cGUgZW5hbWUgPSBzdHJpbmdcbiAgdHlwZSBlY29udGVudCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29tbWVudCBvZiBzdHJpbmdcbiAgICB8IEVuY29kZWRQQ0RBVEEgb2Ygc3RyaW5nXG4gICAgfCBQQ0RBVEEgb2Ygc3RyaW5nXG4gICAgfCBFbnRpdHkgb2Ygc3RyaW5nXG4gICAgfCBMZWFmIG9mIGVuYW1lICogYXR0cmliIGxpc3RcbiAgICB8IE5vZGUgb2YgZW5hbWUgKiBhdHRyaWIgbGlzdCAqIGVjb250ZW50IGxpc3RcblxuICB0eXBlIGVsdCA9ICBlY29udGVudFxuXG4gIGxldCBjb250ZW50IGVsdCA9IGVsdFxuXG4gIGxldCBlbXB0eSAoKSA9IEVtcHR5XG5cbiAgbGV0IGNvbW1lbnQgYyA9IENvbW1lbnQgY1xuXG4gIGxldCBwY2RhdGEgZCA9IFBDREFUQSBkXG4gIGxldCBlbmNvZGVkcGNkYXRhIGQgPSBFbmNvZGVkUENEQVRBIGRcbiAgbGV0IGVudGl0eSBlID0gRW50aXR5IGVcblxuICAoKiBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG8gbm90IGFsbG93IFwiXV0+XCIgaW5zaWRlIENEQVRBXG4gICAgIChhcyB0aGlzIHN0cmluZyBpcyB0byBiZSBjb25zaWRlcmVkIGFzIHRoZSBlbmQgb2YgdGhlIGNkYXRhKVxuICAqKVxuICBsZXQgcmVfZW5kX2NkYXRhID0gUmUuKGNvbXBpbGUgQEAgc3RyIFwiXV0+XCIpXG4gIGxldCBlbmNvZGVkX2NkYXRhIHMxIHMyIHMgPVxuICAgIGVuY29kZWRwY2RhdGFcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIlxcbiVzXFxuJXNcXG4lc1xcblwiXG4gICAgICAgICBzMVxuICAgICAgICAgKFJlLnJlcGxhY2Vfc3RyaW5nIH5hbGw6dHJ1ZSByZV9lbmRfY2RhdGEgfmJ5OlwiXCIgcylcbiAgICAgICAgIHMyIClcblxuICBsZXQgY2RhdGEgPSBlbmNvZGVkX2NkYXRhIFwiPCFbQ0RBVEFbXCIgXCJdXT5cIlxuICBsZXQgY2RhdGFfc2NyaXB0ID0gZW5jb2RlZF9jZGF0YSBcIi8vPCFbQ0RBVEFbXCIgXCIvL11dPlwiXG4gIGxldCBjZGF0YV9zdHlsZSA9IGVuY29kZWRfY2RhdGEgXCIvKiA8IVtDREFUQVsgKi9cIiBcIi8qIF1dPiAqL1wiXG5cbiAgbGV0IGxlYWYgPyhhPVtdKSBuYW1lID0gTGVhZiAobmFtZSwgYSlcbiAgbGV0IG5vZGUgPyhhPVtdKSBuYW1lIGNoaWxkcmVuID0gTm9kZSAobmFtZSwgYSwgY2hpbGRyZW4pXG5cbmVuZFxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgWG1sX3ByaW50Lk1ha2Vfc2ltcGxlKE0pKHN0cnVjdCBsZXQgZW1wdHl0YWdzID0gW10gZW5kKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmluY2x1ZGUgWG1sX2l0ZXIuTWFrZShNKVxuaW5jbHVkZSBYbWxfcHJpbnQuTWFrZV9mbXQoTSkoc3RydWN0IGxldCBlbXB0eXRhZ3MgPSBbXSBlbmQpXG5cbmluY2x1ZGUgWG1sX3N0cmVhbS5JbXBvcnQoTSlcbmxldCBwcmludCBmbXQgeCA9IHByaW50X2xpc3Qgfm91dHB1dDooRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQpIFt4XVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE0gPSBTdmdfZi5NYWtlKFR5eG1sX3htbClcbm1vZHVsZSBQID0gWG1sX3ByaW50Lk1ha2VfdHlwZWRfZm10KFR5eG1sX3htbCkoTSlcbm1vZHVsZSBNYWtlX3ByaW50ZXIgPSBYbWxfcHJpbnQuTWFrZV90eXBlZChUeXhtbF94bWwpKE0pXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgUFxuXG5sZXQgX3BwID0gcHAgKClcbmxldCBfcHBfZWx0ID0gcHBfZWx0ICgpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTSA9IEh0bWxfZi5NYWtlKFR5eG1sX3htbCkoVHl4bWxfc3ZnKVxubW9kdWxlIFAgPSBYbWxfcHJpbnQuTWFrZV90eXBlZF9mbXQoVHl4bWxfeG1sKShNKVxubW9kdWxlIE1ha2VfcHJpbnRlciA9IFhtbF9wcmludC5NYWtlX3R5cGVkKFR5eG1sX3htbCkoTSlcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgUFxuXG5sZXQgX3BwID0gcHAgKClcbmxldCBfcHBfZWx0ID0gcHBfZWx0ICgpXG4iLCIoKiBSZWFjdGl2ZURhdGFcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oaHVnby9yZWFjdGl2ZURhdGFcbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlICdhIGRhdGFcbiAgdHlwZSAnYSBwYXRjaFxuICB2YWwgbWVyZ2UgOiAnYSBwYXRjaCAtPiAnYSBkYXRhIC0+ICdhIGRhdGFcbiAgdmFsIG1hcF9wYXRjaCA6ICgnYSAtPiAnYikgLT4gJ2EgcGF0Y2ggLT4gJ2IgcGF0Y2hcbiAgdmFsIG1hcF9kYXRhIDogKCdhIC0+ICdiKSAtPiAnYSBkYXRhIC0+ICdiIGRhdGFcbiAgdmFsIGVtcHR5IDogJ2EgZGF0YVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSAtPiAnYSBkYXRhIC0+IGJvb2xcbiAgdmFsIGRpZmYgOiBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgZGF0YSAtPiAnYSBkYXRhIC0+ICdhIHBhdGNoXG5lbmRcbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZGF0YVxuICB0eXBlICdhIHBhdGNoXG4gIHR5cGUgJ2EgbXNnID0gUGF0Y2ggb2YgJ2EgcGF0Y2ggfCBTZXQgb2YgJ2EgZGF0YVxuICB0eXBlICdhIGhhbmRsZVxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBjcmVhdGUgOiAnYSBkYXRhIC0+ICdhIHQgKiAnYSBoYW5kbGVcbiAgdmFsIGZyb21fZXZlbnQgOiAnYSBkYXRhIC0+ICdhIG1zZyBSZWFjdC5FLnQgLT4gJ2EgdFxuICB2YWwgZnJvbV9zaWduYWwgOiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgUmVhY3QuUy50IC0+ICdhIHRcbiAgdmFsIGNvbnN0IDogJ2EgZGF0YSAtPiAnYSB0XG4gIHZhbCBwYXRjaCA6ICdhIGhhbmRsZSAtPiAnYSBwYXRjaCAtPiB1bml0XG4gIHZhbCBzZXQgICA6ICdhIGhhbmRsZSAtPiAnYSBkYXRhIC0+IHVuaXRcbiAgdmFsIG1hcF9tc2cgOiAoJ2EgLT4gJ2IpIC0+ICdhIG1zZyAtPiAnYiBtc2dcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2EgZGF0YVxuICB2YWwgZm9sZCA6ICgnYSAtPiAnYiBtc2cgLT4gJ2EpIC0+ICdiIHQgLT4gJ2EgLT4gJ2EgUmVhY3Quc2lnbmFsXG4gIHZhbCBzaWduYWwgOiA/ZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgZGF0YSBSZWFjdC5TLnRcbiAgdmFsIGV2ZW50IDogJ2EgdCAtPiAnYSBtc2cgUmVhY3QuRS50XG5lbmRcblxubW9kdWxlIE1ha2UoRCA6IERBVEEpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIEQuZGF0YVxuICAgICBhbmQgdHlwZSAnYSBwYXRjaCA9ICdhIEQucGF0Y2ggPSBzdHJ1Y3RcblxuICB0eXBlICdhIGRhdGEgPSAnYSBELmRhdGFcbiAgdHlwZSAnYSBwYXRjaCA9ICdhIEQucGF0Y2hcbiAgbGV0IG1lcmdlID0gRC5tZXJnZVxuICBsZXQgbWFwX3BhdGNoID0gRC5tYXBfcGF0Y2hcbiAgbGV0IG1hcF9kYXRhID0gRC5tYXBfZGF0YVxuXG4gIHR5cGUgJ2EgbXNnID1cbiAgICB8IFBhdGNoIG9mICdhIHBhdGNoXG4gICAgfCBTZXQgb2YgJ2EgZGF0YVxuXG4gIHR5cGUgJ2EgaGFuZGxlID0gP3N0ZXA6UmVhY3Quc3RlcCAtPiAnYSBtc2cgLT4gdW5pdFxuXG4gIHR5cGUgJ2EgbXV0ID0ge1xuICAgIGN1cnJlbnQgOiAnYSBkYXRhIHJlZjtcbiAgICBldmVudCA6ICdhIG1zZyBSZWFjdC5FLnQ7XG4gIH1cblxuICB0eXBlICdhIHQgPVxuICAgIHwgQ29uc3Qgb2YgJ2EgZGF0YVxuICAgIHwgTXV0IG9mICdhIG11dFxuXG4gIGxldCBlbXB0eSA9IENvbnN0IEQuZW1wdHlcblxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGxldCBpbml0aWFsX2V2ZW50LHNlbmQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGwgaW5cbiAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgZW5kO1xuICAgICAgICBtc2cpIGluaXRpYWxfZXZlbnQgaW5cbiAgICBNdXQge2N1cnJlbnQ7ZXZlbnR9LHNlbmRcblxuICBsZXQgZnJvbV9ldmVudCBsIGluaXRpYWxfZXZlbnQgPVxuICAgIGxldCBjdXJyZW50ID0gcmVmIGwgaW5cbiAgICBsZXQgZXZlbnQgPSBSZWFjdC5FLm1hcCAoZnVuIG1zZyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgIHwgU2V0IGwgLT4gY3VycmVudCA6PSBsO1xuICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgZW5kO1xuICAgICAgICBtc2cpIGluaXRpYWxfZXZlbnQgaW5cbiAgICBNdXQge2N1cnJlbnQ7ZXZlbnR9XG5cbiAgbGV0IGNvbnN0IHggPSBDb25zdCB4XG5cbiAgbGV0IG1hcF9tc2cgKGYgOiAnYSAtPiAnYikgOiAnYSBtc2cgLT4gJ2IgbXNnID0gZnVuY3Rpb25cbiAgICB8IFNldCBsIC0+IFNldCAobWFwX2RhdGEgZiBsKVxuICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAobWFwX3BhdGNoIGYgcClcblxuICBsZXQgbWFwIGYgcyA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCB4IC0+IENvbnN0IChtYXBfZGF0YSBmIHgpXG4gICAgfCBNdXQgcyAtPlxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgKG1hcF9kYXRhIGYgIShzLmN1cnJlbnQpKSBpblxuICAgICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBsZXQgbXNnID0gbWFwX21zZyBmIG1zZyBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICAgIHwgUGF0Y2ggcCAtPiBjdXJyZW50IDo9IG1lcmdlIHAgIWN1cnJlbnRcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgbXNnKSBzLmV2ZW50IGluXG4gICAgICBNdXQge2N1cnJlbnQgO2V2ZW50fVxuXG4gIGxldCB2YWx1ZSBzID0gbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IGNcbiAgICB8IE11dCBzIC0+ICEocy5jdXJyZW50KVxuXG4gIGxldCBldmVudCBzID0gbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBfIC0+IFJlYWN0LkUubmV2ZXJcbiAgICB8IE11dCBzIC0+IHMuZXZlbnRcblxuICBsZXQgcGF0Y2ggKHMgOiAnYSBoYW5kbGUpIHAgPSBzIChQYXRjaCBwKVxuXG4gIGxldCBzZXQgKHMgOiAnYSBoYW5kbGUpIHAgPSBzIChTZXQgcClcblxuICBsZXQgZm9sZCBmIHMgYWNjID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gUmVhY3QuUy5jb25zdCAoZiBhY2MgKFNldCBjKSlcbiAgICB8IE11dCBzIC0+XG4gICAgICBsZXQgYWNjID0gZiBhY2MgKFNldCAoIShzLmN1cnJlbnQpKSkgaW5cbiAgICAgIFJlYWN0LlMuZm9sZCBmIGFjYyBzLmV2ZW50XG5cbiAgbGV0IHNpZ25hbCA/KGVxID0gKD0pKSAocyA6ICdhIHQpIDogJ2EgZGF0YSBSZWFjdC5TLnQgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBSZWFjdC5TLmNvbnN0IGNcbiAgICB8IE11dCBzIC0+XG4gICAgICBSZWFjdC5TLmZvbGQgfmVxOihELmVxdWFsIGVxKSAoZnVuIGwgbXNnIC0+XG4gICAgICAgICAgbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGxcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gbWVyZ2UgcCBsKSAoIShzLmN1cnJlbnQpKSBzLmV2ZW50XG5cbiAgbGV0IGZyb21fc2lnbmFsID8oZXEgPSAoPSkpIHMgPVxuICAgIGxldCBmIGQnIGQgPSBQYXRjaCAoRC5kaWZmIH5lcSBkIGQnKSBpblxuICAgIGZyb21fZXZlbnQgKFJlYWN0LlMudmFsdWUgcykgKFJlYWN0LlMuZGlmZiBmIHMpXG5cbmVuZFxuXG5tb2R1bGUgRGF0YUxpc3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBkYXRhID0gJ2EgbGlzdFxuICB0eXBlICdhIHAgPVxuICAgIHwgSSBvZiBpbnQgKiAnYVxuICAgIHwgUiBvZiBpbnRcbiAgICB8IFUgb2YgaW50ICogJ2FcbiAgICB8IFggb2YgaW50ICogaW50XG4gIHR5cGUgJ2EgcGF0Y2ggPSAnYSBwIGxpc3RcbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IG1hcF9kYXRhID0gTGlzdC5tYXBcbiAgbGV0IG1hcF9wYXRjaCBmID0gZnVuY3Rpb25cbiAgICB8IEkgKGkseCkgLT4gSSAoaSwgZiB4KVxuICAgIHwgUiBpIC0+IFIgaVxuICAgIHwgWCAoaSxqKSAtPiBYIChpLGopXG4gICAgfCBVIChpLHgpIC0+IFUgKGksZiB4KVxuICBsZXQgbWFwX3BhdGNoIGYgPSBMaXN0Lm1hcCAobWFwX3BhdGNoIGYpXG5cbiAgbGV0IG1lcmdlX3Agb3AgbCA9XG4gICAgbWF0Y2ggb3Agd2l0aFxuICAgIHwgSSAoaScseCkgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIDEgKyBpJyBlbHNlIGknIGluXG4gICAgICBsZXQgcmVjIGF1eCBhY2MgbiBsID0gbWF0Y2ggbixsIHdpdGhcbiAgICAgICAgfCAwLGwgLT4gTGlzdC5yZXZfYXBwZW5kIGFjYyAoeDo6bClcbiAgICAgICAgfCBfLFtdIC0+IGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCJcbiAgICAgICAgfCBuLHg6OnhzIC0+IGF1eCAoeDo6YWNjKSAocHJlZCBuKSB4c1xuICAgICAgaW4gYXV4IFtdIGkgbFxuICAgIHwgUiBpJyAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHJlYyBhdXggYWNjIG4gbCA9IG1hdGNoIG4sbCB3aXRoXG4gICAgICAgIHwgMCxfOjpsIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgbFxuICAgICAgICB8IF8sW10gLT4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIlxuICAgICAgICB8IG4seDo6eHMgLT4gYXV4ICh4OjphY2MpIChwcmVkIG4pIHhzXG4gICAgICBpbiBhdXggW10gaSBsXG4gICAgfCBVIChpJyx4KSAtPlxuICAgICAgbGV0IGkgPSBpZiBpJyA8IDAgdGhlbiBMaXN0Lmxlbmd0aCBsICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgIGEuKGkpIDwtIHg7XG4gICAgICBBcnJheS50b19saXN0IGFcbiAgICB8IFggKGknLG9mZnNldCkgLT5cbiAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gbGVuICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHYgPSBhLihpKSBpblxuICAgICAgaWYgb2Zmc2V0ID4gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBpZiAoaSArIG9mZnNldCA+PSBsZW4pIHRoZW4gZmFpbHdpdGggXCJSZWFjdGl2ZURhdGEuUmxpc3QubWVyZ2VcIjtcbiAgICAgICAgZm9yIGogPSBpIHRvIGkgKyBvZmZzZXQgLSAxIGRvXG4gICAgICAgICAgYS4oaikgPC0gYS4oaiArIDEpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGEuKGkrb2Zmc2V0KSA8LSB2XG4gICAgICBlbmRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaWYgKGkgKyBvZmZzZXQgPCAwKSB0aGVuIGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCI7XG4gICAgICAgIGZvciBqID0gaSBkb3dudG8gaSArIG9mZnNldCArIDEgZG9cbiAgICAgICAgICBhLihqKSA8LSBhLihqIC0gMSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYS4oaStvZmZzZXQpIDwtIHZcbiAgICAgIGVuZDtcbiAgICAgIEFycmF5LnRvX2xpc3QgYVxuXG4gICgqIGFjY3VtdWxhdGVzIGludG8gYWNjIGkgdW5tb2RpZmllZCBlbGVtZW50cyBmcm9tIGwgKilcbiAgbGV0IHJlYyBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgaSBsID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgaSA+IDAgdGhlblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogbCAtPlxuICAgICAgICBsZXQgYWNjID0gaCA6OiBhY2MgaW5cbiAgICAgICAgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIChpIC0gMSkgbFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcImludmFsaWQgaW5kZXhcIlxuICAgIGVsc2VcbiAgICAgIGwsIGFjY1xuXG4gIGxldCByZWMgbGluZWFyX21lcmdlIH5hY2MgaTAgcCBsID1cbiAgICBsZXQgbCwgYWNjID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCAoSSAoaSwgXykgfCBSIGkgfCBVIChpLCBfKSkgOjogXyB3aGVuIGkgPiBpMCAtPlxuICAgICAgICBsaW5lYXJfbWVyZ2VfZndkIH5hY2MgKGkgLSBpMCkgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGwsIGFjY1xuICAgIGluXG4gICAgbWF0Y2ggcCwgbCB3aXRoXG4gICAgfCBJIChpLCB4KSA6OiBwLCBfIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgKHggOjogbClcbiAgICB8IFIgaSA6OiBwLCBfIDo6IGwgLT5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjIGkgcCBsXG4gICAgfCBSIF8gOjogXywgW10gLT5cbiAgICAgIGludmFsaWRfYXJnIFwibWVyZ2U6IGludmFsaWQgaW5kZXhcIlxuICAgIHwgVSAoaSwgeCkgOjogcCwgXyA6OiBsIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgKHggOjogbClcbiAgICB8IFUgKF8sIF8pIDo6IF8sIFtdIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIm1lcmdlOiBpbnZhbGlkIGluZGV4XCJcbiAgICB8IFtdLCBsIC0+XG4gICAgICBMaXN0LnJldl9hcHBlbmQgYWNjIGxcbiAgICB8IFggKF8sIF8pIDo6IF8sIF8gLT5cbiAgICAgIGZhaWx3aXRoIFwibGluZWFyX21lcmdlOiBYIG5vdCBzdXBwb3J0ZWRcIlxuXG4gIGxldCByZWMgbGluZWFyX21lcmdlYWJsZSB+biBwID1cbiAgICBhc3NlcnQgKG4gPj0gMCk7XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCAoSSAoaSwgXykgfCBSIGkgfCBVIChpLCBfKSkgOjogcCB3aGVuIGkgPj0gbiAtPlxuICAgICAgKCogbmVnYXRpdmUgaSdzIHJ1bGVkIG91dCAoYW1vbmcgb3RoZXJzKSAqKVxuICAgICAgbGluZWFyX21lcmdlYWJsZSB+bjppIHBcbiAgICB8IF8gOjogXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IFtdIC0+XG4gICAgICB0cnVlXG5cbiAgbGV0IG1lcmdlIHAgbCA9XG4gICAgaWYgbGluZWFyX21lcmdlYWJsZSB+bjowIHAgdGhlblxuICAgICAgbGluZWFyX21lcmdlIH5hY2M6W10gMCBwIGxcbiAgICBlbHNlXG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPiBtZXJnZV9wIHggbCkgbCBwXG5cbiAgbGV0IHJlYyBlcXVhbCBmIGwxIGwyID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyIHdoZW4gZiB4MSB4MiAtPlxuICAgICAgZXF1YWwgZiBsMSBsMlxuICAgIHwgW10sIFtdIC0+XG4gICAgICB0cnVlXG4gICAgfCBfIDo6IF8gLCBfIDo6IF9cbiAgICB8IF8gOjogXyAsIFtdXG4gICAgfCBbXSAgICAgLCBfIDo6IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IG1lbSAodHlwZSB1KSBsID1cbiAgICBsZXQgbW9kdWxlIEggPVxuICAgICAgSGFzaHRibC5NYWtlXG4gICAgICAgIChzdHJ1Y3QgdHlwZSB0ID0gdSBsZXQgaGFzaCA9IEhhc2h0YmwuaGFzaCBsZXQgZXF1YWwgPSAoPT0pIGVuZCkgaW5cbiAgICBsZXQgaCA9IEguY3JlYXRlIDE2IGluXG4gICAgTGlzdC5pdGVyIChmdW4geCAtPiBILmFkZCBoIHggKCkpIGw7XG4gICAgSC5tZW0gaFxuXG4gIGxldCBmb2xkX2RpZmYgPyhlcSA9ICg9KSkgfmFjYyB+cmVtb3ZlIH5hZGQgbHggbHkgPVxuICAgIGxldCBtZW14ID0gbWVtIGx4XG4gICAgYW5kIG1lbXkgPSBtZW0gbHkgaW5cbiAgICBsZXQgcmVjIGYgfmFjYyB+bGVmdCBseCBseSBuID1cbiAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAoKiB0cmFpbGluZyBlbGVtZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgICB8IF8gOjogbHgsIFtdIC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IFtdIG5cbiAgICAgICgqIHRyYWlsaW5nIGVsZW1lbnRzIHRvIGJlIGFkZGVkICopXG4gICAgICB8IFtdLCB5IDo6IGx5IC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgW10gbHkgKG4gKyAxKVxuICAgICAgKCogZG9uZSEgKilcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGFjY1xuICAgICAgKCogc2FtZSAqKVxuICAgICAgfCB4IDo6IGx4LCB5IDo6IGx5IHdoZW4gZXEgeCB5IC0+XG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSAobiArIDEpXG4gICAgICAoKiB4IG5lZWRzIHRvIGJlIHJlbW92ZWQgZm9yIHN1cmUgKilcbiAgICAgIHwgeCA6OiBseCwgXyA6OiBfIHdoZW4gbm90IChtZW15IHgpIC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IG5cbiAgICAgICgqIHkgbmVlZHMgdG8gYmUgYWRkZWQgZm9yIHN1cmUgKilcbiAgICAgIHwgXyA6OiBfLCB5IDo6IGx5IHdoZW4gbm90IChtZW14IHkpIC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgKG4gKyAxKVxuICAgICAgKCogbm8gbW9yZSBjZXJ0YWludHksIH5sZWZ0IGRlY2lkZXMgd2hhdCB0byByZWN1ciBvbiAqKVxuICAgICAgfCBfIDo6IGx4LCBfIDo6IF8gd2hlbiBsZWZ0IC0+XG4gICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIG4gaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0OmZhbHNlIGx4IGx5IG5cbiAgICAgIHwgXyA6OiBfLCB5IDo6IGx5IC0+XG4gICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIG4geSBpblxuICAgICAgICBmIH5hY2MgfmxlZnQ6dHJ1ZSBseCBseSAobiArIDEpXG4gICAgaW5cbiAgICBmIH5hY2MgfmxlZnQ6dHJ1ZSBseCBseSAwXG5cbiAgbGV0IHJlYyBsaXN0X3JldiA/KGFjYyA9IFtdKSA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBhY2MgPSBoIDo6IGFjYyBpblxuICAgICAgbGlzdF9yZXYgfmFjYyB0XG4gICAgfCBbXSAtPlxuICAgICAgYWNjXG5cbiAgbGV0IGRpZmYgfmVxIHggeSA9XG4gICAgbGV0IGFkZCBhY2MgaSB2ID0gSSAoaSwgdikgOjogYWNjXG4gICAgYW5kIHJlbW92ZSBhY2MgaSA9IFIgaSA6OiBhY2NcbiAgICBhbmQgYWNjID0gW10gaW5cbiAgICBsaXN0X3JldiAoZm9sZF9kaWZmIH5lcSB+YWNjIH5hZGQgfnJlbW92ZSB4IHkpXG5cbmVuZFxuXG5tb2R1bGUgUkxpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChEYXRhTGlzdClcbiAgbW9kdWxlIEQgPSBEYXRhTGlzdFxuICB0eXBlICdhIHAgPSAnYSBELnAgPVxuICAgIHwgSSBvZiBpbnQgKiAnYVxuICAgIHwgUiBvZiBpbnRcbiAgICB8IFUgb2YgaW50ICogJ2FcbiAgICB8IFggb2YgaW50ICogaW50XG5cbiAgbGV0IGNvbnMgeCBzID0gcGF0Y2ggcyBbRC5JICgwLHgpXVxuICBsZXQgc25vYyB4IHMgPSBwYXRjaCBzIFtELkkgKC0xLHgpXVxuICBsZXQgaW5zZXJ0IHggaSBzID0gcGF0Y2ggcyBbRC5JIChpLHgpXVxuICBsZXQgdXBkYXRlIHggaSBzID0gcGF0Y2ggcyBbRC5VIChpLHgpXVxuICBsZXQgbW92ZSBpIGogcyA9IHBhdGNoIHMgW0QuWCAoaSxqKV1cbiAgbGV0IHJlbW92ZSBpIHMgPSBwYXRjaCBzIFtELlIgaV1cblxuICBsZXQgaW5kZXggPyhlcSA9ICg9KSkgbCB4ID1cbiAgICBsZXQgcmVjIGYgbiA9IGZ1bmN0aW9uXG4gICAgICB8IGhkIDo6IF8gd2hlbiBlcSBoZCB4IC0+IG5cbiAgICAgIHwgXyA6OiB0bCAtPiBmIChuICsgMSkgdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgaW5cbiAgICBmIDAgbFxuXG4gIGxldCB1cGRhdGVfZXEgP2VxIChkYXRhLCBoYW5kbGUpIHggeSA9XG4gICAgbGV0IGkgPSBpbmRleCA/ZXEgKHZhbHVlIGRhdGEpIHggaW5cbiAgICB1cGRhdGUgeSBpIGhhbmRsZVxuXG4gIGxldCByZW1vdmVfbGFzdCAoZGF0YSwgaGFuZGxlKSA9XG4gICAgcmVtb3ZlIChMaXN0Lmxlbmd0aCAodmFsdWUgZGF0YSkgLSAxKSBoYW5kbGVcblxuICBsZXQgcmVtb3ZlX2VxID9lcSAoZGF0YSwgaGFuZGxlKSB4ID1cbiAgICBsZXQgaSA9IGluZGV4ID9lcSAodmFsdWUgZGF0YSkgeCBpblxuICAgIHJlbW92ZSBpIGhhbmRsZVxuXG4gIGxldCBzaW5nbGV0b24geCA9IGNvbnN0IFt4XVxuXG4gIGxldCBzaW5nbGV0b25fcyBzID1cbiAgICBsZXQgZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGxldCBlLHNlbmQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPSBmcm9tX2V2ZW50IFtdIGUgaW5cbiAgICBsZXQgXyA9IFJlYWN0LlMubWFwIChmdW4geCAtPlxuICAgICAgICBpZiAhZmlyc3RcbiAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgIGZpcnN0Oj1mYWxzZTtcbiAgICAgICAgICBzZW5kIChQYXRjaCBbSSgwLHgpXSlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2Ugc2VuZCAoUGF0Y2ggW1UoMCx4KV0pKSBzIGluXG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvbmNhdCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ID0gZnVuIHggeSAtPlxuICAgIGxldCB2MSA9IHZhbHVlIHhcbiAgICBhbmQgdjIgPSB2YWx1ZSB5IGluXG4gICAgbGV0IHNpemUxID0gcmVmIDBcbiAgICBhbmQgc2l6ZTIgPSByZWYgMCBpblxuICAgIGxldCBzaXplX3dpdGhfcGF0Y2ggc2l6ZXggOiAnYSBELnAgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IChELkkgXykgLT4gaW5jciBzaXpleFxuICAgICAgfCAoRC5SIF8pIC0+IGRlY3Igc2l6ZXhcbiAgICAgIHwgKEQuWCBfIHwgRC5VIF8pIC0+ICgpIGluXG4gICAgbGV0IHNpemVfd2l0aF9zZXQgc2l6ZXggbCA9IHNpemV4Oj1MaXN0Lmxlbmd0aCBsIGluXG5cbiAgICBzaXplX3dpdGhfc2V0IHNpemUxIHYxO1xuICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgdjI7XG5cbiAgICBsZXQgdXBkYXRlX3BhdGNoMSA9IExpc3QubWFwIChmdW4gcCAtPlxuICAgICAgICBsZXQgbSA9IG1hdGNoIHAgd2l0aFxuICAgICAgICAgIHwgRC5JIChwb3MseCkgLT5cbiAgICAgICAgICAgIGxldCBpID0gaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcyBpblxuICAgICAgICAgICAgRC5JIChpLCB4KVxuICAgICAgICAgIHwgRC5SIHBvcyAgICAgLT4gRC5SICAoaWYgcG9zIDwgMCB0aGVuIHBvcyAtICFzaXplMiBlbHNlIHBvcylcbiAgICAgICAgICB8IEQuVSAocG9zLHgpIC0+IEQuVSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5YIChpLGopIC0+ICAgRC5YICgoaWYgaSA8IDAgdGhlbiBpIC0gIXNpemUyIGVsc2UgaSksailcbiAgICAgICAgaW5cbiAgICAgICAgc2l6ZV93aXRoX3BhdGNoIHNpemUxIG07XG4gICAgICAgIG0pIGluXG4gICAgbGV0IHVwZGF0ZV9wYXRjaDIgPSBMaXN0Lm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbGV0IG0gPSBtYXRjaCBwIHdpdGhcbiAgICAgICAgICB8IEQuSSAocG9zLHgpIC0+IEQuSSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5SIHBvcyAgICAgLT4gRC5SICAoaWYgcG9zIDwgMCB0aGVuIHBvcyBlbHNlICFzaXplMSArIHBvcylcbiAgICAgICAgICB8IEQuVSAocG9zLHgpIC0+IEQuVSAoKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpLCB4KVxuICAgICAgICAgIHwgRC5YIChpLGopIC0+ICAgRC5YICgoaWYgaSA8IDAgdGhlbiBpIGVsc2UgIXNpemUxICsgaSksailcbiAgICAgICAgaW5cbiAgICAgICAgc2l6ZV93aXRoX3BhdGNoIHNpemUyIG07XG4gICAgICAgIG0pIGluXG4gICAgbGV0IHR1cGxlX2V2ID1cbiAgICAgIFJlYWN0LkUubWVyZ2UgKGZ1biBhY2MgeCAtPlxuICAgICAgICAgIG1hdGNoIGFjYyx4IHdpdGhcbiAgICAgICAgICB8IChOb25lLHAyKSxgRTEgeCAtPiBTb21lIHgscDJcbiAgICAgICAgICB8IChwMSxOb25lKSxgRTIgeCAtPiBwMSwgU29tZSB4XG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgICAgKE5vbmUsTm9uZSlcbiAgICAgICAgW1JlYWN0LkUubWFwIChmdW4gZSAtPiBgRTEgZSkgKGV2ZW50IHgpO1xuICAgICAgICAgUmVhY3QuRS5tYXAgKGZ1biBlIC0+IGBFMiBlKSAoZXZlbnQgeSldIGluXG4gICAgbGV0IG1lcmdlZF9ldiA9IFJlYWN0LkUubWFwIChmdW4gcCAtPlxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCBTb21lIChTZXQgcDEpLCBTb21lIChTZXQgcDIpIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBwMTtcbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHAyO1xuICAgICAgICAgIFNldCAocDEgQCBwMilcbiAgICAgICAgfCBTb21lIChTZXQgcDEpLCBOb25lIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBwMTtcbiAgICAgICAgICBTZXQgKHAxIEAgdmFsdWUgeSlcbiAgICAgICAgfCBOb25lLCBTb21lIChTZXQgcDIpIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBwMjtcbiAgICAgICAgICBTZXQgKHZhbHVlIHggQCBwMiApXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggcDEpLCBTb21lIChQYXRjaCBwMikgLT5cbiAgICAgICAgICBsZXQgcDEgPSB1cGRhdGVfcGF0Y2gxIHAxIGluXG4gICAgICAgICAgbGV0IHAyID0gdXBkYXRlX3BhdGNoMiBwMiBpblxuICAgICAgICAgIFBhdGNoIChwMSBAIHAyKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIHAxKSwgTm9uZSAtPiBQYXRjaCAodXBkYXRlX3BhdGNoMSBwMSlcbiAgICAgICAgfCBOb25lLCBTb21lIChQYXRjaCBwMikgLT4gUGF0Y2ggKHVwZGF0ZV9wYXRjaDIgcDIpXG4gICAgICAgIHwgU29tZSAoUGF0Y2ggXyksIFNvbWUgKFNldCBzMikgLT5cbiAgICAgICAgICBsZXQgczEgPSB2YWx1ZSB4IGluXG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBzMTtcbiAgICAgICAgICBzaXplX3dpdGhfc2V0IHNpemUyIHMyO1xuICAgICAgICAgIFNldChzMSBAIHMyKVxuICAgICAgICB8IFNvbWUgKFNldCBzMSksIFNvbWUgKFBhdGNoIF8pIC0+XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMSBzMTtcbiAgICAgICAgICBsZXQgczIgPSB2YWx1ZSB5IGluXG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBzMjtcbiAgICAgICAgICBTZXQoczEgQCBzMilcbiAgICAgICAgfCBOb25lLE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApIHR1cGxlX2V2IGluXG4gICAgZnJvbV9ldmVudCAodjEgQCB2MikgbWVyZ2VkX2V2XG5cbiAgbGV0IGludmVyc2UgOiAnYSAuICdhIHAgLT4gJ2EgcCA9IGZ1bmN0aW9uXG4gICAgfCBJIChpLHgpIC0+IEkoLWktMSwgeClcbiAgICB8IFUgKGkseCkgLT4gVSgtaS0xLCB4KVxuICAgIHwgUiBpIC0+IFIgKC1pLTEpXG4gICAgfCBYIChpLGopIC0+IFggKC1pLTEsLWopXG5cbiAgbGV0IHJldiB0ID1cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIChmdW5jdGlvblxuICAgICAgICB8IFNldCBsIC0+IFNldCAoTGlzdC5yZXYgbClcbiAgICAgICAgfCBQYXRjaCBwIC0+IFBhdGNoIChMaXN0Lm1hcCBpbnZlcnNlIHApKSAgKGV2ZW50IHQpXG4gICAgaW5cbiAgICBmcm9tX2V2ZW50IChMaXN0LnJldiAodmFsdWUgdCkpIGVcblxuICBsZXQgZmlsdGVyIHByZWQgbCA9XG4gICAgbGV0IG1vZHVsZSBJbnRNYXAgPSBNYXAuTWFrZShJbnQpIGluXG5cbiAgICBsZXQgaW5kZXggPSByZWYgSW50TWFwLmVtcHR5IGluXG4gICAgbGV0IHNpemUgPSByZWYgMCBpblxuXG4gICAgbGV0IGZpbHRlcl9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBhdXggKGw6ICdhIGxpc3QpIHJlcyB0aGVpcl9pIG15X2kgPSBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXNcbiAgICAgICAgfCB4Ojp4cyAtPlxuICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHRoZWlyX2kgKG15X2kgKyAxKSAhaW5kZXg7XG4gICAgICAgICAgICAgICBhdXggeHMgKHg6OnJlcykgKHRoZWlyX2kgKyAxKSAobXlfaSArIDEpXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgYXV4IHhzIHJlcyAodGhlaXJfaSArIDEpIG15X2lcbiAgICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzaXplIDo9IExpc3QubGVuZ3RoIGw7XG4gICAgICBpbmRleCA6PSBJbnRNYXAuZW1wdHk7XG4gICAgICBMaXN0LnJldiAoYXV4IGwgW10gMCAoLTEpKVxuICAgIGluXG5cbiAgICBsZXQgbm9ybWFsaXNlIGkgPSBpZiBpIDwgMCB0aGVuICFzaXplICsgMSArIGkgZWxzZSBpIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X2luc2VydCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCB2aXNpYmxlID1cbiAgICAgIGxldCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCA9IG5vcm1hbGlzZSBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBpblxuICAgICAgbGV0IGxlZnRfYWxvbmUsIGRpc3BsYWNlZCwgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGFibGVzID0gbWF0Y2ggZGlzcGxhY2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHVwZGF0YWJsZXNcbiAgICAgICAgfCBTb21lIGRpc3BsYWNlZF9pbl9maWx0ZXJlZCAtPlxuICAgICAgICAgICBJbnRNYXAuYWRkIGluc2VydF9wb3NfZnVsbF9saXN0IGRpc3BsYWNlZF9pbl9maWx0ZXJlZCB1cGRhdGFibGVzXG4gICAgICBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBuZXdfal9maWx0ZXJlZCA9IGlmIHZpc2libGUgdGhlbiBqX2ZpbHRlcmVkX2xpc3QgKyAxIGVsc2Ugal9maWx0ZXJlZF9saXN0IGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGpfZnVsbF9saXN0ICsgMSkgbmV3X2pfZmlsdGVyZWQgIWluZGV4XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlcyBpblxuICAgICAgbGV0IGluc2VydF9wb3NfZmlsdGVyZWQgPSBpZiBJbnRNYXAuaXNfZW1wdHkgbGVmdF9hbG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoc25kIChJbnRNYXAubWF4X2JpbmRpbmcgbGVmdF9hbG9uZSkpICsgMVxuICAgICAgaW5cbiAgICAgIGlmIHZpc2libGUgdGhlbiBpbmRleCA6PSBJbnRNYXAuYWRkIGluc2VydF9wb3NfZnVsbF9saXN0IGluc2VydF9wb3NfZmlsdGVyZWQgIWluZGV4O1xuICAgICAgaW5jciBzaXplO1xuICAgICAgaW5zZXJ0X3Bvc19maWx0ZXJlZFxuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3JlbW92ZSByZW1vdmVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgd2FzX3Zpc2libGUgPSBJbnRNYXAubWVtIHJlbW92ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IF8sXyx1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHJlbW92ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGxldCBuZXdfaiA9IGlmIHdhc192aXNpYmxlIHRoZW4gal9maWx0ZXJlZF9saXN0IGVsc2Ugal9maWx0ZXJlZF9saXN0IC0gMSBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChqX2Z1bGxfbGlzdCAtIDEpIG5ld19qICFpbmRleFxuICAgICAgaW5cbiAgICAgIGlmIG5vdCAoSW50TWFwLmlzX2VtcHR5ICFpbmRleClcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IGxhc3RfaSwgXyA9IEludE1hcC5tYXhfYmluZGluZyAhaW5kZXggaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSBsYXN0X2kgIWluZGV4XG4gICAgICBlbHNlICgpO1xuICAgICAgZGVjciBzaXplO1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlc1xuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3VwZGF0ZV9kZWxldGUgdXBkYXRlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IF8sIF8sIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRlX2ogal9mdWxsX2xpc3Qgal9maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCBqX2Z1bGxfbGlzdCAoal9maWx0ZXJlZF9saXN0IC0gMSkgIWluZGV4XG4gICAgICBpblxuICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXg7XG4gICAgICBJbnRNYXAuaXRlciB1cGRhdGVfaiB1cGRhdGFibGVzXG4gICAgaW5cblxuICAgIGxldCB1cGRhdGVfaW5kZXhfdXBkYXRlX2luc2VydCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCA9XG4gICAgICBsZXQgbGVmdF9hbG9uZSwgbm9uZSwgdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGFzc2VydCAobm9uZSA9IE5vbmUpO1xuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgal9mdWxsX2xpc3QgKGpfZmlsdGVyZWRfbGlzdCArIDEpICFpbmRleFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfcG9zX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgcHJldmlvdXNfcG9zX2ZpbHRlcmVkID0gdHJ5IChzbmQgKEludE1hcC5tYXhfYmluZGluZyBsZWZ0X2Fsb25lKSkgd2l0aCBOb3RfZm91bmQgLT4gKC0xKSBpblxuICAgICAgICBwcmV2aW91c19wb3NfZmlsdGVyZWQgKyAxXG4gICAgICBpblxuICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB1cGRhdGVfcG9zX2Z1bGxfbGlzdCBuZXdfcG9zX2ZpbHRlcmVkX2xpc3QgIWluZGV4O1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlcztcbiAgICAgIG5ld19wb3NfZmlsdGVyZWRfbGlzdFxuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X21vdmUgZnJvbV9mdWxsX2xpc3QgdG9fZnVsbF9saXN0IHRvX2ZpbHRlcmVkID1cbiAgICAgIGxldCB3YXNfdmlzaWJsZSA9IG1hdGNoIHRvX2ZpbHRlcmVkIHdpdGggfCBTb21lIF8gLT4gdHJ1ZSB8IE5vbmUgLT4gZmFsc2UgaW5cbiAgICAgIGxldCBmb3J3YXJkID0gZnJvbV9mdWxsX2xpc3QgPCB0b19mdWxsX2xpc3QgaW5cbiAgICAgIGlmIGZvcndhcmQgdGhlblxuICAgICAgICBmb3IgaV9mdWxsID0gZnJvbV9mdWxsX2xpc3QgKyAxIHRvIHRvX2Z1bGxfbGlzdCBkb1xuICAgICAgICAgIGxldCBkZWx0YSA9IGlmIHdhc192aXNpYmxlIHRoZW4gKC0xKSBlbHNlIDAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpX2ZpbHRlcmVkID0gSW50TWFwLmZpbmQgaV9mdWxsICFpbmRleCBpblxuICAgICAgICAgICAgbGV0IG5ld192YWwgPSBpX2ZpbHRlcmVkICsgZGVsdGEgaW5cbiAgICAgICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgKGlfZnVsbCAtIDEpIG5ld192YWwgIWluZGV4XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm90X2ZvdW5kIC0+ICgpXG4gICAgICAgIGRvbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yIGlfZnVsbCA9IGZyb21fZnVsbF9saXN0IC0gMSBkb3dudG8gdG9fZnVsbF9saXN0IGRvXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZGVsdGEgPSBpZiB3YXNfdmlzaWJsZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBsZXQgaV9maWx0ZXJlZCA9IEludE1hcC5maW5kIGlfZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBuZXdfdmFsID0gaV9maWx0ZXJlZCArIGRlbHRhIGluXG4gICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChpX2Z1bGwgKyAxKSBuZXdfdmFsICFpbmRleFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vdF9mb3VuZCAtPiAoKVxuICAgICAgICBkb25lO1xuICAgICAgbWF0Y2ggdG9fZmlsdGVyZWQgd2l0aFxuICAgICAgfCBTb21lIHRvX2ZpbHRlcmVkIC0+XG4gICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIHRvX2Z1bGxfbGlzdCB0b19maWx0ZXJlZCAhaW5kZXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgaW5kZXggOj0gSW50TWFwLnJlbW92ZSB0b19mdWxsX2xpc3QgIWluZGV4XG4gICAgaW5cblxuICAgIGxldCBjb252ZXJ0X3AgPSBmdW5jdGlvblxuICAgICAgfCBJIChpLCB4KSAtPlxuICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGxldCBteV9pID0gdXBkYXRlX2luZGV4X2luc2VydCBpIHRydWUgaW5cbiAgICAgICAgICAgW0kgKG15X2ksIHgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgIGlnbm9yZSAodXBkYXRlX2luZGV4X2luc2VydCBpIGZhbHNlKTtcbiAgICAgICAgICAgICBbXVxuICAgICAgICAgICBlbmRcbiAgICAgIHwgUiBpIC0+XG4gICAgICAgICBsZXQgaSA9IG5vcm1hbGlzZSBpIGluXG4gICAgICAgICBsZXQgcmV0ID0gdHJ5IGxldCBqID0gSW50TWFwLmZpbmQgaSAhaW5kZXggaW4gW1Igal0gd2l0aCB8IE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICAgbGV0ICgpID0gdXBkYXRlX2luZGV4X3JlbW92ZSBpIGluXG4gICAgICAgICByZXRcbiAgICAgIHwgVSAoaSwgeCkgLT5cbiAgICAgICAgIGxldCBpID0gbm9ybWFsaXNlIGkgaW5cbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBvbGRfaiA9IEludE1hcC5maW5kIGkgIWluZGV4IGluXG4gICAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgICAgdGhlbiBbVSAob2xkX2osIHgpXVxuICAgICAgICAgICAgIGVsc2UgKHVwZGF0ZV9pbmRleF91cGRhdGVfZGVsZXRlIGk7IFtSIG9sZF9qXSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICBpZiBwcmVkIHhcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGxldCBuZXdfaiA9IHVwZGF0ZV9pbmRleF91cGRhdGVfaW5zZXJ0IGkgaW5cbiAgICAgICAgICAgICAgICBbSSAobmV3X2osIHgpXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgIGVuZFxuICAgICAgfCBYIChvcmlnaW5fZnVsbCwgb2Zmc2V0X2Z1bGwpIC0+XG4gICAgICAgICBsZXQgb3JpZ2luX2Z1bGwgPSBub3JtYWxpc2Ugb3JpZ2luX2Z1bGwgaW5cbiAgICAgICAgIGxldCBkZXN0X2Z1bGwgPSBvcmlnaW5fZnVsbCArIG9mZnNldF9mdWxsIGluXG4gICAgICAgICB0cnlcbiAgICAgICAgICAgbGV0IG9yaWdpbl9maWx0ZXJlZCA9IEludE1hcC5maW5kIG9yaWdpbl9mdWxsICFpbmRleCBpblxuICAgICAgICAgICBsZXQgZGVzdF9maWx0ZXJlZCA9XG4gICAgICAgICAgICAgdHJ5IEludE1hcC5maW5kIGRlc3RfZnVsbCAhaW5kZXhcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc21hbGxfb25lcywgXywgXyA9IEludE1hcC5zcGxpdCBvcmlnaW5fZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgICAgICBpZiBJbnRNYXAuaXNfZW1wdHkgc21hbGxfb25lc1xuICAgICAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgICAgIGVsc2Ugc25kIChJbnRNYXAubWF4X2JpbmRpbmcgc21hbGxfb25lcykgKyAxXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHVwZGF0ZV9pbmRleF9tb3ZlIG9yaWdpbl9mdWxsIGRlc3RfZnVsbCAoU29tZSBkZXN0X2ZpbHRlcmVkKTtcbiAgICAgICAgICAgaWYgZGVzdF9maWx0ZXJlZCAhPSBvcmlnaW5fZmlsdGVyZWRcbiAgICAgICAgICAgdGhlbiBbWCAob3JpZ2luX2ZpbHRlcmVkLCBkZXN0X2ZpbHRlcmVkIC0gb3JpZ2luX2ZpbHRlcmVkKV1cbiAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICgqIG1vdmluZyBhbiBlbGVtZW50IHRoYXQgd2FzIGZpbHRlcmVkIG91dCAqKVxuICAgICAgICAgICAgdXBkYXRlX2luZGV4X21vdmUgb3JpZ2luX2Z1bGwgZGVzdF9mdWxsIE5vbmU7XG4gICAgICAgICAgICBbXVxuICAgIGluXG5cbiAgICBsZXQgZmlsdGVyX2UgPSBmdW5jdGlvblxuICAgICAgfCBTZXQgbCAtPiBTZXQgKGZpbHRlcl9saXN0IGwpXG4gICAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgIFBhdGNoIChMaXN0LmNvbmNhdCAoTGlzdC5tYXAgY29udmVydF9wIHApKVxuICAgIGluXG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCBmaWx0ZXJfZSAoZXZlbnQgbCkgaW5cbiAgICBmcm9tX2V2ZW50IChmaWx0ZXJfbGlzdCAodmFsdWUgbCkpIGVcblxuICBtb2R1bGUgSW50U2V0ID0gU2V0Lk1ha2UgKEludClcblxuICBsZXQgZm9yX2FsbCBmbiBkYXRhID1cbiAgICBsZXQgbWF5YmVfdXBkYXRlIGFjYyBpIHYgPSBpZiBmbiB2IHRoZW4gYWNjIGVsc2UgSW50U2V0LmFkZCBpIGFjYyBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIGxldCByZWMgZm9sZCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgdiA6OiB0bCAtPiBmb2xkIChpICsgMSkgKG1heWJlX3VwZGF0ZSBhY2MgaSB2KSB0bFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgaW5cbiAgICAgIGZvbGQgMCBJbnRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfaWR4X2FmdGVyIGkgZiBhY2MgPVxuICAgICAgSW50U2V0Lm1hcCAoZnVuIGknIC0+IGlmIGknID49IGkgdGhlbiBmIGknIDEgZWxzZSBpJykgYWNjXG4gICAgaW5cbiAgICBsZXQgZiA9IGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU2V0IHggLT4gaW5pdCB4XG4gICAgICB8IFBhdGNoIHVwZGF0ZXMgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgIHwgWCAoaSwgaScpIC0+XG4gICAgICAgICAgICAgICBpZiBJbnRTZXQubWVtIGkgYWNjID0gSW50U2V0Lm1lbSBpJyBhY2NcbiAgICAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICAgICBlbHNlIGlmIEludFNldC5tZW0gaSBhY2NcbiAgICAgICAgICAgICAgIHRoZW4gSW50U2V0LmFkZCBpJyAoSW50U2V0LnJlbW92ZSBpIGFjYylcbiAgICAgICAgICAgICAgIGVsc2UgSW50U2V0LmFkZCBpIChJbnRTZXQucmVtb3ZlIGknIGFjYylcbiAgICAgICAgICAgICB8IFIgaSAtPlxuICAgICAgICAgICAgICAgdXBkYXRlX2lkeF9hZnRlciBpICgtKSAoSW50U2V0LnJlbW92ZSBpIGFjYylcbiAgICAgICAgICAgICB8IEkgKGksIHYpIC0+XG4gICAgICAgICAgICAgICBsZXQgYWNjID0gdXBkYXRlX2lkeF9hZnRlciBpICgrKSBhY2MgaW5cbiAgICAgICAgICAgICAgIG1heWJlX3VwZGF0ZSBhY2MgaSB2XG4gICAgICAgICAgICAgfCBVIChpLCB2KSAtPlxuICAgICAgICAgICAgICAgbWF5YmVfdXBkYXRlIChJbnRTZXQucmVtb3ZlIGkgYWNjKSBpIHYpXG4gICAgICAgICAgYWNjXG4gICAgICAgICAgdXBkYXRlc1xuICAgIGluXG4gICAgUmVhY3QuUy5mb2xkIGYgKGluaXQgKHZhbHVlIGRhdGEpKSAoZXZlbnQgZGF0YSlcbiAgICB8PiBSZWFjdC5TLm1hcCBJbnRTZXQuaXNfZW1wdHlcblxuZW5kXG5cbm1vZHVsZSBSTWFwKE0gOiBNYXAuUykgPSBzdHJ1Y3RcblxuICBtb2R1bGUgRGF0YSA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSBkYXRhID0gJ2EgTS50XG5cbiAgICB0eXBlICdhIHAgPSBbYEFkZCBvZiAoTS5rZXkgKiAnYSkgfCBgRGVsIG9mIE0ua2V5XVxuXG4gICAgdHlwZSAnYSBwYXRjaCA9ICdhIHAgbGlzdFxuXG4gICAgbGV0IG1lcmdlX3AgcCBzID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBgQWRkIChrLGEpIC0+IE0uYWRkIGsgYSBzXG4gICAgICB8IGBEZWwgayAtPiBNLnJlbW92ZSBrIHNcblxuICAgIGxldCBtZXJnZSBwIGFjYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWVyZ2VfcCBwIGFjYykgYWNjIHBcblxuICAgIGxldCBtYXBfcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgYEFkZCAoayxhKSAtPiBgQWRkIChrLGYgYSlcbiAgICAgIHwgYERlbCBrIC0+IGBEZWwga1xuXG4gICAgbGV0IG1hcF9wYXRjaCBmID0gTGlzdC5tYXAgKG1hcF9wIGYpXG5cbiAgICBsZXQgbWFwX2RhdGEgZiBkID0gTS5tYXAgZiBkXG5cbiAgICBsZXQgZW1wdHkgPSBNLmVtcHR5XG5cbiAgICBsZXQgZXF1YWwgZiA9IE0uZXF1YWwgZlxuXG4gICAgbGV0IGRpZmYgfmVxIHggeSA9XG4gICAgICBsZXQgbSA9XG4gICAgICAgIGxldCBnIF9rZXkgdiB3ID1cbiAgICAgICAgICBtYXRjaCB2LCB3IHdpdGhcbiAgICAgICAgICB8IFNvbWUgdiwgU29tZSB3IHdoZW4gZXEgdiB3IC0+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCBTb21lIF8sIFNvbWUgdyAtPlxuICAgICAgICAgICAgU29tZSAoYFUgdylcbiAgICAgICAgICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgICAgU29tZSBgRFxuICAgICAgICAgIHwgTm9uZSwgU29tZSB2IC0+XG4gICAgICAgICAgICBTb21lIChgQSB2KVxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICBNLm1lcmdlIGcgeCB5XG4gICAgICBhbmQgZyBrZXkgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBgVSB2IC0+XG4gICAgICAgICAgYERlbCBrZXkgOjogYEFkZCAoa2V5LCB2KSA6OiBhY2NcbiAgICAgICAgfCBgRCAtPlxuICAgICAgICAgIGBEZWwga2V5IDo6IGFjY1xuICAgICAgICB8IGBBIHYgLT5cbiAgICAgICAgICBgQWRkIChrZXksIHYpIDo6IGFjY1xuICAgICAgYW5kIGFjYyA9IFtdIGluXG4gICAgICBMaXN0LnJldiAoTS5mb2xkIGcgbSBhY2MpXG5cbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlKERhdGEpXG5cbiAgbGV0IGZpbHRlciBwcmVkIG0gPVxuXG4gICAgbGV0IGNvbnZlcnRfcCA9IGZ1bmN0aW9uXG4gICAgICB8IGBBZGQgKGssdikgLT5cbiAgICAgICAgIGlmIHByZWQgayB2XG4gICAgICAgICB0aGVuIFtgQWRkIChrLHYpXVxuICAgICAgICAgZWxzZSBbXVxuICAgICAgfCBgRGVsIGsgLT4gW2BEZWwga11cbiAgICBpblxuXG4gICAgbGV0IGZpbHRlcl9lID0gZnVuY3Rpb25cbiAgICAgIHwgU2V0IG0gLT4gU2V0IChNLmZpbHRlciBwcmVkIG0pXG4gICAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKExpc3QuY29uY2F0IChMaXN0Lm1hcCBjb252ZXJ0X3AgcCkpXG4gICAgaW5cblxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgZmlsdGVyX2UgKGV2ZW50IG0pIGluXG4gICAgZnJvbV9ldmVudCAoTS5maWx0ZXIgcHJlZCAodmFsdWUgbSkpIGVcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfdHl4bWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9jYXN0ICopXG5tb2R1bGUgVHl4bWxfY2FzdCA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9jYXN0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2Nhc3Rfc2lncyAqKVxubW9kdWxlIFR5eG1sX2Nhc3Rfc2lncyA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9jYXN0X3NpZ3NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfanMgKilcbm1vZHVsZSBUeXhtbF9qcyA9IEpzX29mX29jYW1sX3R5eG1sX19UeXhtbF9qc1xuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfdHl4bWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBpbnQpIHkgPSB4IDwgeVxuXG4gIGxldCAoIDw9ICkgKHggOiBpbnQpIHkgPSB4IDw9IHlcblxuICBsZXQgKCA8PiApICh4IDogaW50KSB5ID0geCA8PiB5XG5cbiAgbGV0ICggPSApICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgKCA+ICkgKHggOiBpbnQpIHkgPSB4ID4geVxuXG4gIGxldCAoID49ICkgKHggOiBpbnQpIHkgPSB4ID49IHlcblxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG5cbiAgbGV0IGVxdWFsICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBNYWtlVG8gKEMgOiBzaWdcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZWx0IDogJ2EgZWx0IC0+IERvbS5ub2RlIEpzLnRcbmVuZCkgOiBUeXhtbF9jYXN0X3NpZ3MuVE8gd2l0aCB0eXBlICdhIGVsdCA9ICdhIEMuZWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHRcblxuICBsZXQgcmVidWlsZF9ub2RlIF8geCA9IEpzLlVuc2FmZS5jb2VyY2UgKEMuZWx0IHgpXG5cbiAgbGV0IG9mX2VsZW1lbnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZWxlbWVudFwiIGVsdFxuXG4gIGxldCBvZl9ub2RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25vZGVcIiBlbHRcblxuICBsZXQgb2ZfcGNkYXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BjZGF0YVwiIGVsdFxuXG4gIGxldCBvZl9odG1sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2h0bWxcIiBlbHRcblxuICBsZXQgb2ZfaGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkXCIgZWx0XG5cbiAgbGV0IG9mX2xpbmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlua1wiIGVsdFxuXG4gIGxldCBvZl90aXRsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aXRsZVwiIGVsdFxuXG4gIGxldCBvZl9tZXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGFcIiBlbHRcblxuICBsZXQgb2ZfYmFzZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iYXNlXCIgZWx0XG5cbiAgbGV0IG9mX3N0eWxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0eWxlXCIgZWx0XG5cbiAgbGV0IG9mX2JvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYm9keVwiIGVsdFxuXG4gIGxldCBvZl9mb3JtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvcm1cIiBlbHRcblxuICBsZXQgb2Zfb3B0Z3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0Z3JvdXBcIiBlbHRcblxuICBsZXQgb2Zfb3B0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zZWxlY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VsZWN0XCIgZWx0XG5cbiAgbGV0IG9mX2lucHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lucHV0XCIgZWx0XG5cbiAgbGV0IG9mX3RleHRhcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RleHRhcmVhXCIgZWx0XG5cbiAgbGV0IG9mX2J1dHRvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9idXR0b25cIiBlbHRcblxuICBsZXQgb2ZfbGFiZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGFiZWxcIiBlbHRcblxuICBsZXQgb2ZfZmllbGRzZXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmllbGRzZXRcIiBlbHRcblxuICBsZXQgb2ZfbGVnZW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xlZ2VuZFwiIGVsdFxuXG4gIGxldCBvZl91bCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91bFwiIGVsdFxuXG4gIGxldCBvZl9vbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vbFwiIGVsdFxuXG4gIGxldCBvZl9kbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kbFwiIGVsdFxuXG4gIGxldCBvZl9saSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saVwiIGVsdFxuXG4gIGxldCBvZl9kaWFsb2cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGlhbG9nXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9ibG9ja3F1b3RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jsb2NrcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9pbnMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5zXCIgZWx0XG5cbiAgbGV0IG9mX2RlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZWxcIiBlbHRcblxuICBsZXQgb2ZfYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hXCIgZWx0XG5cbiAgbGV0IG9mX2ltZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWdcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX3RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RkXCIgZWx0XG5cbiAgbGV0IG9mX3RyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RyXCIgZWx0XG5cbiAgbGV0IG9mX2NvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xcIiBlbHRcblxuICBsZXQgb2ZfdGZvb3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGZvb3RcIiBlbHRcblxuICBsZXQgb2ZfdGhlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhlYWRcIiBlbHRcblxuICBsZXQgb2ZfdGJvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGJvZHlcIiBlbHRcblxuICBsZXQgb2ZfY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaWZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lmcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuXG4gICgqIERvbV9odG1sLmhlYWRpbmdFbGVtZW50ICopXG5cbiAgbGV0IG9mX2gxIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gxXCIgZWx0XG5cbiAgbGV0IG9mX2gyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gyXCIgZWx0XG5cbiAgbGV0IG9mX2gzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2gzXCIgZWx0XG5cbiAgbGV0IG9mX2g0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g0XCIgZWx0XG5cbiAgbGV0IG9mX2g1IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g1XCIgZWx0XG5cbiAgbGV0IG9mX2g2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2g2XCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuZWxlbWVudCAqKVxuXG4gIGxldCBvZl9hYmJyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FiYnJcIiBlbHRcblxuICBsZXQgb2ZfYWRkcmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hZGRyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX2FydGljbGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJ0aWNsZVwiIGVsdFxuXG4gIGxldCBvZl9hc2lkZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hc2lkZVwiIGVsdFxuXG4gIGxldCBvZl9iIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JcIiBlbHRcblxuICBsZXQgb2ZfYmRvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jkb1wiIGVsdFxuXG4gIGxldCBvZl9jaXRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NpdGVcIiBlbHRcblxuICBsZXQgb2ZfY29kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2RlXCIgZWx0XG5cbiAgbGV0IG9mX2NvbGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2NvbW1hbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29tbWFuZFwiIGVsdFxuXG4gIGxldCBvZl9kYXRhbGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kYXRhbGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZFwiIGVsdFxuXG4gIGxldCBvZl9kZXRhaWxzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RldGFpbHNcIiBlbHRcblxuICBsZXQgb2ZfZGZuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RmblwiIGVsdFxuXG4gIGxldCBvZl9kdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kdFwiIGVsdFxuXG4gIGxldCBvZl9lbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbVwiIGVsdFxuXG4gIGxldCBvZl9lbWJlZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbWJlZFwiIGVsdFxuXG4gIGxldCBvZl9maWdjYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfZmlndXJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZ3VyZVwiIGVsdFxuXG4gIGxldCBvZl9mb290ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9vdGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkZXJcIiBlbHRcblxuICBsZXQgb2ZfaGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hncm91cFwiIGVsdFxuXG4gIGxldCBvZl9pIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lcIiBlbHRcblxuICBsZXQgb2Zfa2JkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tiZFwiIGVsdFxuXG4gIGxldCBvZl9rZXlnZW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2V5Z2VuXCIgZWx0XG5cbiAgbGV0IG9mX21haW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFpblwiIGVsdFxuXG4gIGxldCBvZl9tYXJrIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcmtcIiBlbHRcblxuICBsZXQgb2ZfbWVudSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZW51XCIgZWx0XG5cbiAgbGV0IG9mX21ldGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGVyXCIgZWx0XG5cbiAgbGV0IG9mX25hdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9uYXZcIiBlbHRcblxuICBsZXQgb2Zfbm9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfbm9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2Zfb3V0cHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX291dHB1dFwiIGVsdFxuXG4gIGxldCBvZl9wcm9ncmVzcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcm9ncmVzc1wiIGVsdFxuXG4gIGxldCBvZl9xIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3FcIiBlbHRcblxuICBsZXQgb2ZfcnAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnBcIiBlbHRcblxuICBsZXQgb2ZfcnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnRcIiBlbHRcblxuICBsZXQgb2ZfcnVieSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydWJ5XCIgZWx0XG5cbiAgbGV0IG9mX3NhbXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2FtcFwiIGVsdFxuXG4gIGxldCBvZl9zZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlY3Rpb25cIiBlbHRcblxuICBsZXQgb2Zfc21hbGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc21hbGxcIiBlbHRcblxuICBsZXQgb2Zfc291cmNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NvdXJjZVwiIGVsdFxuXG4gIGxldCBvZl9zcGFuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NwYW5cIiBlbHRcblxuICBsZXQgb2Zfc3Ryb25nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0cm9uZ1wiIGVsdFxuXG4gIGxldCBvZl9zdWIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3ViXCIgZWx0XG5cbiAgbGV0IG9mX3N1bW1hcnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VtbWFyeVwiIGVsdFxuXG4gIGxldCBvZl9zdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3VwXCIgZWx0XG5cbiAgbGV0IG9mX3RoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoXCIgZWx0XG5cbiAgbGV0IG9mX3RpbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGltZVwiIGVsdFxuXG4gIGxldCBvZl91IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VcIiBlbHRcblxuICBsZXQgb2ZfdmFyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZhclwiIGVsdFxuXG4gIGxldCBvZl93YnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfd2JyXCIgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VPZiAoQyA6IHNpZ1xuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBlbHQgOiBEb20ubm9kZSBKcy50IC0+ICdhIGVsdFxuZW5kKSA6IFR5eG1sX2Nhc3Rfc2lncy5PRiB3aXRoIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBDLmVsdFxuXG4gIGxldCByZWJ1aWxkX25vZGUgXyB4ID0gQy5lbHQgKEpzLlVuc2FmZS5jb2VyY2UgeClcblxuICBsZXQgb2ZfZWxlbWVudCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9lbGVtZW50XCIgZWx0XG5cbiAgbGV0IG9mX2h0bWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHRtbFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRcIiBlbHRcblxuICBsZXQgb2ZfbGluayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saW5rXCIgZWx0XG5cbiAgbGV0IG9mX3RpdGxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpdGxlXCIgZWx0XG5cbiAgbGV0IG9mX21ldGEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0YVwiIGVsdFxuXG4gIGxldCBvZl9iYXNlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Jhc2VcIiBlbHRcblxuICBsZXQgb2Zfc3R5bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3R5bGVcIiBlbHRcblxuICBsZXQgb2ZfYm9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2Zvcm0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZm9ybVwiIGVsdFxuXG4gIGxldCBvZl9vcHRHcm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRHcm91cFwiIGVsdFxuXG4gIGxldCBvZl9vcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NlbGVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWxlY3RcIiBlbHRcblxuICBsZXQgb2ZfaW5wdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW5wdXRcIiBlbHRcblxuICBsZXQgb2ZfdGV4dEFyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGV4dEFyZWFcIiBlbHRcblxuICBsZXQgb2ZfYnV0dG9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2J1dHRvblwiIGVsdFxuXG4gIGxldCBvZl9sYWJlbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sYWJlbFwiIGVsdFxuXG4gIGxldCBvZl9maWVsZFNldCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWVsZFNldFwiIGVsdFxuXG4gIGxldCBvZl9sZWdlbmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGVnZW5kXCIgZWx0XG5cbiAgbGV0IG9mX3VMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3VMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX29MaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29MaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RMaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RMaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2xpIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpXCIgZWx0XG5cbiAgbGV0IG9mX2RpYWxvZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaWFsb2dcIiBlbHRcblxuICBsZXQgb2ZfZGl2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpdlwiIGVsdFxuXG4gIGxldCBvZl9wYXJhZ3JhcGggZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYWdyYXBoXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9xdW90ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9xdW90ZVwiIGVsdFxuXG4gIGxldCBvZl9wcmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJlXCIgZWx0XG5cbiAgbGV0IG9mX2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JyXCIgZWx0XG5cbiAgbGV0IG9mX2hyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hyXCIgZWx0XG5cbiAgbGV0IG9mX21vZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tb2RcIiBlbHRcblxuICBsZXQgb2ZfYW5jaG9yIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FuY2hvclwiIGVsdFxuXG4gIGxldCBvZl9pbWFnZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWFnZVwiIGVsdFxuXG4gIGxldCBvZl9vYmplY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2JqZWN0XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFtXCIgZWx0XG5cbiAgbGV0IG9mX2FyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJlYVwiIGVsdFxuXG4gIGxldCBvZl9tYXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFwXCIgZWx0XG5cbiAgbGV0IG9mX3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2ZfZW1iZWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1iZWRcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDZWxsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlQ2VsbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVJvdyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVJvd1wiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNvbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVNlY3Rpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVTZWN0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVcIiBlbHRcblxuICBsZXQgb2ZfY2FudmFzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhbnZhc1wiIGVsdFxuXG4gIGxldCBvZl9pRnJhbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaUZyYW1lXCIgZWx0XG5cbiAgbGV0IG9mX2F1ZGlvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2F1ZGlvXCIgZWx0XG5cbiAgbGV0IG9mX3ZpZGVvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZpZGVvXCIgZWx0XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQganNfc3RyaW5nX29mX2Zsb2F0IGYgPSAoSnMubnVtYmVyX29mX2Zsb2F0IGYpIyN0b1N0cmluZ1xuXG5sZXQganNfc3RyaW5nX29mX2ludCBpID0gKEpzLm51bWJlcl9vZl9mbG9hdCAoZmxvYXRfb2ZfaW50IGkpKSMjdG9TdHJpbmdcblxubW9kdWxlIHR5cGUgWE1MID1cbiAgWG1sX3NpZ3MuVFxuICAgIHdpdGggdHlwZSB1cmkgPSBzdHJpbmdcbiAgICAgYW5kIHR5cGUgZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3ZWFrTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0IDogJ2EgLT4gJ2IgSnMuT3B0ZGVmLnQgSnMubWV0aFxuZW5kXG5cbmxldCByZXRhaW4gPVxuICBsZXQgbWFwIDogKERvbS5ub2RlIEpzLnQsIE9iai50IEpzLmpzX2FycmF5IEpzLnQpIHdlYWtNYXAgSnMudCA9XG4gICAgbGV0IHdlYWtNYXAgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYWtNYXAgaW5cbiAgICBuZXclanMgd2Vha01hcFxuICBpblxuICBmdW4gKHR5cGUgYSkgbm9kZSB+KGtlZXBtZSA6IGEpIC0+XG4gICAgbGV0IHByZXYgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2UgKG1hcCMjZ2V0IG5vZGUpIChmdW4gKCkgLT4gbmV3JWpzIEpzLmFycmF5X2VtcHR5KSAoZnVuIHggLT4geClcbiAgICBpblxuICAgIGxldCAoXyA6IGludCkgPSBwcmV2IyNwdXNoIChPYmoucmVwciBrZWVwbWUpIGluXG4gICAgbWFwIyNzZXQgbm9kZSBwcmV2XG5cbm1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIFcgPSBYbWxfd3JhcC5Ob1dyYXBcblxuICB0eXBlICdhIHdyYXAgPSAnYVxuXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG5cbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcblxuICBsZXQgc3RyaW5nX29mX3VyaSBzID0gc1xuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcblxuICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwudG91Y2hFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGF0dHJpYl9rID1cbiAgICB8IEV2ZW50IG9mIGV2ZW50X2hhbmRsZXJcbiAgICB8IE1vdXNlRXZlbnQgb2YgbW91c2VfZXZlbnRfaGFuZGxlclxuICAgIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZF9ldmVudF9oYW5kbGVyXG4gICAgfCBUb3VjaEV2ZW50IG9mIHRvdWNoX2V2ZW50X2hhbmRsZXJcbiAgICB8IEF0dHIgb2YgSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uIFJlYWN0LlMudFxuXG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhdHRyaWJfa1xuXG4gIGxldCBhdHRyIG5hbWUgdiA9IG5hbWUsIEF0dHIgKFJlYWN0LlMuY29uc3QgKFNvbWUgdikpXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIDogYXR0cmliID0gYXR0ciBuYW1lIChqc19zdHJpbmdfb2ZfZmxvYXQgdmFsdWUpXG5cbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2ludCB2YWx1ZSlcblxuICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgdmFsdWUpXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgdmFsdWVzKSlcblxuICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBldmVudF9oYW5kbGVyKSA9IG5hbWUsIEV2ZW50IHZhbHVlXG5cbiAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogbW91c2VfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIE1vdXNlRXZlbnQgdmFsdWVcblxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBrZXlib2FyZF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgS2V5Ym9hcmRFdmVudCB2YWx1ZVxuXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IHRvdWNoX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBUb3VjaEV2ZW50IHZhbHVlXG5cbiAgbGV0IHVyaV9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIHZhbHVlcykpXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG5cbiAgbGV0IGVtcHR5ICgpID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVEb2N1bWVudEZyYWdtZW50IDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGNvbW1lbnQgYyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlQ29tbWVudCAoSnMuc3RyaW5nIGMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IHBjZGF0YSBzID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSAoSnMuc3RyaW5nIHMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbnRpdHkgPVxuICAgIGxldCBzdHJpbmdfZm9sZCBzIH5wb3MgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSBwb3MgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBsZXQgYyA9IHMuW2ldIGluXG4gICAgICAgIHIgOj0gZiAhciBjXG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICBpblxuICAgIGxldCBpbnZhbGlkX2VudGl0eSBlID0gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiSW52YWxpZCBlbnRpdHkgJVNcIiBlKSBpblxuICAgIGxldCBpbnRfb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICB8ICcwJyAuLiAnOScgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnMCcpXG4gICAgICB8ICdhJyAuLiAnZicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnYScgKyAxMClcbiAgICAgIHwgJ0EnIC4uICdGJyBhcyB4IC0+IFNvbWUgKENoYXIuY29kZSB4IC0gQ2hhci5jb2RlICdBJyArIDEwKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBwYXJzZV9pbnQgfnBvcyB+YmFzZSBlID1cbiAgICAgIHN0cmluZ19mb2xkIGUgfnBvcyB+aW5pdDowIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBpbnRfb2ZfY2hhciB4IHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPCBiYXNlIC0+IChhY2MgKiBiYXNlKSArIGRcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gaW52YWxpZF9lbnRpdHkgZSlcbiAgICBpblxuICAgIGxldCBpc19hbHBoYV9udW0gPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBmdW4gZSAtPlxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggZSBpblxuICAgICAgbGV0IHN0ciA9XG4gICAgICAgIGlmIGxlbiA+PSAxICYmIENoYXIuZXF1YWwgZS5bMF0gJyMnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICBpZiBsZW4gPj0gMiAmJiAoQ2hhci5lcXVhbCBlLlsxXSAneCcgfHwgQ2hhci5lcXVhbCBlLlsxXSAnWCcpXG4gICAgICAgICAgICB0aGVuIHBhcnNlX2ludCB+cG9zOjIgfmJhc2U6MTYgZVxuICAgICAgICAgICAgZWxzZSBwYXJzZV9pbnQgfnBvczoxIH5iYXNlOjEwIGVcbiAgICAgICAgICBpblxuICAgICAgICAgIEpzLnN0cmluZ19jb25zdHIjI2Zyb21DaGFyQ29kZSBpXG4gICAgICAgIGVsc2UgaWYgc3RyaW5nX2ZvbGQgZSB+cG9zOjAgfmluaXQ6dHJ1ZSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICAgICgqIFRoaXMgaXMgbm90IHF1aXRlIHJpZ2h0IGFjY29yZGluZyB0b1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy54bWwuY29tL2F4bWwvdGFyZ2V0Lmh0bWwjTlQtTmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgYnV0IGl0IHNlZW1zIHRvIGNvdmVyIGFsbCBodG1sNSBlbnRpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2Rldi53My5vcmcvaHRtbDUvaHRtbC1hdXRob3IvY2hhcnJlZiAqKVxuICAgICAgICAgICAgICAgICAgICBhY2MgJiYgaXNfYWxwaGFfbnVtIHgpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFwicXVvdFwiIC0+IEpzLnN0cmluZyBcIlxcXCJcIlxuICAgICAgICAgIHwgXCJhbXBcIiAtPiBKcy5zdHJpbmcgXCImXCJcbiAgICAgICAgICB8IFwiYXBvc1wiIC0+IEpzLnN0cmluZyBcIidcIlxuICAgICAgICAgIHwgXCJsdFwiIC0+IEpzLnN0cmluZyBcIjxcIlxuICAgICAgICAgIHwgXCJndFwiIC0+IEpzLnN0cmluZyBcIj5cIlxuICAgICAgICAgIHwgXCJcIiAtPiBpbnZhbGlkX2VudGl0eSBlXG4gICAgICAgICAgfCBfIC0+IERvbV9odG1sLmRlY29kZV9odG1sX2VudGl0aWVzIChKcy5zdHJpbmcgKFwiJlwiIF4gZSBeIFwiO1wiKSlcbiAgICAgICAgZWxzZSBpbnZhbGlkX2VudGl0eSBlXG4gICAgICBpblxuICAgICAgKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSBzdHIgOj4gRG9tLm5vZGUgSnMudClcblxuICAoKiBUT0RPOiBmaXggZ2V0X3Byb3BcbiAgICAgaXQgb25seSB3b3JrIHdoZW4gaHRtbCBhdHRyaWJ1dGUgYW5kIGRvbSBwcm9wZXJ0eSBuYW1lcyBjb3JyZXNwb25kLlxuICAgICBmaW5kIGEgd2F5IHRvIGdldCBkb20gcHJvcGVydHkgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGh0bWwgYXR0cmlidXRlXG4gICopXG5cbiAgbGV0IGdldF9wcm9wIG5vZGUgbmFtZSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgbm9kZSBuYW1lKSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmVcblxuICBsZXQgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG5hbWUgZiA9XG4gICAgbWF0Y2ggZ2V0X3Byb3Agbm9kZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgbiAtPiAoIHRyeSBmIG4gd2l0aCBfIC0+ICgpKVxuICAgIHwgTm9uZSAtPiAoKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyBub2RlIGwgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAobicsIGF0dCkgLT5cbiAgICAgICAgbGV0IG4gPSBKcy5zdHJpbmcgbicgaW5cbiAgICAgICAgbWF0Y2ggYXR0IHdpdGhcbiAgICAgICAgfCBBdHRyIGEgLT5cbiAgICAgICAgICAgIGxldCAoa2VlcG1lIDogdW5pdCBSZWFjdC5TLnQpID1cbiAgICAgICAgICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgKG5vZGUjI3NldEF0dHJpYnV0ZSBuIHYpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IHZcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSB2KSlcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNyZW1vdmVBdHRyaWJ1dGUgbik7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbicgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJzdHlsZVwiIC0+IG5vZGUjIy5zdHlsZSMjLmNzc1RleHQgOj0gSnMuc3RyaW5nIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSBKcy5udWxsKSkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldGFpbiAobm9kZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lXG4gICAgICAgIHwgRXZlbnQgaCAtPiBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBNb3VzZUV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IEtleWJvYXJkRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgVG91Y2hFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSkpXG4gICAgICBsXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgTGlzdC5pdGVyIChmdW4gYyAtPiBpZ25vcmUgKGUjI2FwcGVuZENoaWxkIGMpKSBjaGlsZHJlbjtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjZGF0YSBzID0gcGNkYXRhIHNcblxuICBsZXQgY2RhdGFfc2NyaXB0IHMgPSBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3N0eWxlIHMgPSBjZGF0YSBzXG5lbmRcblxubW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYbWxcblxuICBsZXQgbGVhZiA/KGEgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbmVuZFxuXG5tb2R1bGUgU3ZnID0gU3ZnX2YuTWFrZSAoWG1sX1N2Zylcbm1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2Zylcbm1vZHVsZSBIdG1sNSA9IEh0bWxcblxubW9kdWxlIFRvX2RvbSA9IFR5eG1sX2Nhc3QuTWFrZVRvIChzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBIdG1sLmVsdFxuXG4gIGxldCBlbHQgPSBIdG1sLnRvZWx0XG5lbmQpXG5cbm1vZHVsZSBPZl9kb20gPSBUeXhtbF9jYXN0Lk1ha2VPZiAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b3RcbmVuZClcblxubW9kdWxlIFJlZ2lzdGVyID0gc3RydWN0XG4gIGxldCByZW1vdmVDaGlsZHJlbiAobm9kZSA6ICNEb20uZWxlbWVudCBKcy50KSA9XG4gICAgbGV0IGwgPSBub2RlIyMuY2hpbGROb2RlcyBpblxuICAgIGZvciBpID0gMCB0byBsIyMubGVuZ3RoIC0gMSBkb1xuICAgICAgSnMuT3B0Lml0ZXIgKGwjI2l0ZW0gaSkgKGZ1biB4IC0+IGlnbm9yZSAobm9kZSMjcmVtb3ZlQ2hpbGQgeCkpXG4gICAgZG9uZVxuXG4gIGxldCBhZGRfdG8gPyhrZWVwID0gdHJ1ZSkgbm9kZSBjb250ZW50ID1cbiAgICBpZiBub3Qga2VlcCB0aGVuIHJlbW92ZUNoaWxkcmVuIG5vZGU7XG4gICAgTGlzdC5pdGVyIChmdW4geCAtPiBEb20uYXBwZW5kQ2hpbGQgbm9kZSAoVG9fZG9tLm9mX2VsZW1lbnQgeCkpIGNvbnRlbnRcblxuICBsZXQgaWQgP2tlZXAgaWQgY29udGVudCA9XG4gICAgbGV0IG5vZGUgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBpZCBpblxuICAgIGFkZF90byA/a2VlcCBub2RlIGNvbnRlbnRcblxuICBsZXQgYm9keSA/a2VlcCBjb250ZW50ID0gYWRkX3RvID9rZWVwIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBjb250ZW50XG5cbiAgbGV0IGhlYWQgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgY29udGVudFxuXG4gIGxldCBodG1sID9oZWFkIGJvZHkgPVxuICAgIChtYXRjaCBoZWFkIHdpdGhcbiAgICB8IFNvbWUgaCAtPiBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgOj0gVG9fZG9tLm9mX2hlYWQgaFxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IDo9IFRvX2RvbS5vZl9ib2R5IGJvZHk7XG4gICAgKClcbmVuZFxuXG5tb2R1bGUgV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBSZWFjdC5zaWduYWxcblxuICB0eXBlICdhIHRsaXN0ID0gJ2EgUmVhY3RpdmVEYXRhLlJMaXN0LnRcblxuICB0eXBlICgnYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxuICBsZXQgcmV0dXJuID0gUmVhY3QuUy5jb25zdFxuXG4gIGxldCBmbWFwIGYgPSBSZWFjdC5TLm1hcCBmXG5cbiAgbGV0IG5pbCAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG4gIGxldCBzaW5nbGV0b24gPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2luZ2xldG9uX3NcblxuICBsZXQgY29ucyB4IHhzID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCAoc2luZ2xldG9uIHgpIHhzXG5cbiAgbGV0IG1hcCBmID0gUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcCBmXG5cbiAgbGV0IGFwcGVuZCB4IHkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0IHggeVxuZW5kXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG4gIG9wZW4gUmVhY3RpdmVEYXRhXG4gIG9wZW4gUkxpc3RcblxuICBsZXQgaW5zZXJ0QXQgZG9tIGkgeCA9XG4gICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgIGFzc2VydCAoaSA8PSBub2RlcyMjLmxlbmd0aCk7XG4gICAgaWYgaSA9IG5vZGVzIyMubGVuZ3RoXG4gICAgdGhlbiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgKHggOj4gRG9tLm5vZGUgSnMudCkpXG4gICAgZWxzZSBpZ25vcmUgKGRvbSMjaW5zZXJ0QmVmb3JlIHggKG5vZGVzIyNpdGVtIGkpKVxuXG4gIGxldCBtZXJnZV9vbmVfcGF0Y2ggKGRvbSA6IERvbS5ub2RlIEpzLnQpIChwIDogRG9tLm5vZGUgSnMudCBwKSA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBJIChpLCB4KSAtPlxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIDEgKyBpIGVsc2UgaSBpblxuICAgICAgICBpbnNlcnRBdCBkb20gaSB4XG4gICAgfCBSIGkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBsZXQgbm9kZXMgPSBkb20jIy5jaGlsZE5vZGVzIGluXG4gICAgICAgIGFzc2VydCAoaSA+PSAwICYmIGkgPCBub2RlcyMjLmxlbmd0aCk7XG4gICAgICAgIEpzLk9wdC5pdGVyIChub2RlcyMjaXRlbSBpKSAoZnVuIG4gLT4gRG9tLnJlbW92ZUNoaWxkIGRvbSBuKVxuICAgIHwgVSAoaSwgeCkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICB8IFNvbWUgb2xkIC0+IGlnbm9yZSAoZG9tIyNyZXBsYWNlQ2hpbGQgeCBvbGQpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBYIChpLCBtb3ZlKSAtPiAoXG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaWYgbW92ZSA9IDBcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiAoZG9tIyMuY2hpbGROb2RlcyMjaXRlbSBpKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGknIC0+IGluc2VydEF0IGRvbSAoaSArIGlmIG1vdmUgPiAwIHRoZW4gbW92ZSArIDEgZWxzZSBtb3ZlKSBpJ1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IHJlYyByZW1vdmVDaGlsZHJlbiBkb20gPVxuICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gZG9tIyMubGFzdENoaWxkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYyAtPlxuICAgICAgICBpZ25vcmUgKGRvbSMjcmVtb3ZlQ2hpbGQgYyk7XG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbVxuXG4gIGxldCBtZXJnZV9tc2cgKGRvbSA6IERvbS5ub2RlIEpzLnQpIChtc2cgOiBEb20ubm9kZSBKcy50IG1zZykgPVxuICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgfCBTZXQgbCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInJlcGxhY2UgYWxsQC5cIjsgKilcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBsIC0+IGlnbm9yZSAoZG9tIyNhcHBlbmRDaGlsZCBsKSkgbFxuICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInBhdGNoQC5cIjsgKilcbiAgICAgICAgTGlzdC5pdGVyIChtZXJnZV9vbmVfcGF0Y2ggZG9tKSBwXG5cbiAgbGV0IHVwZGF0ZV9jaGlsZHJlbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgKG5vZGVzIDogRG9tLm5vZGUgSnMudCB0KSA9XG4gICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgIGxldCBrZWVwbWUgOiB1bml0IFJlYWN0LlMudCA9IGZvbGQgKGZ1biAoKSBtc2cgLT4gbWVyZ2VfbXNnIGRvbSBtc2cpIG5vZGVzICgpIGluXG4gICAgcmV0YWluIChkb20gOiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICgpXG5lbmRcblxubW9kdWxlIFIgPSBzdHJ1Y3RcbiAgbGV0IGZpbHRlcl9hdHRyaWIgKG5hbWUsIGEpIG9uID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFhtbC5FdmVudCBfIHwgWG1sLk1vdXNlRXZlbnQgXyB8IFhtbC5LZXlib2FyZEV2ZW50IF8gfCBYbWwuVG91Y2hFdmVudCBfIC0+XG4gICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlsdGVyX2F0dHJpYiBub3QgaW1wbGVtZW50ZWQgZm9yIGV2ZW50IGhhbmRsZXJcIilcbiAgICB8IFhtbC5BdHRyIGEgLT4gbmFtZSwgWG1sLkF0dHIgKFJlYWN0LlMubDIgKGZ1biBvbiBhIC0+IGlmIG9uIHRoZW4gYSBlbHNlIE5vbmUpIG9uIGEpXG5cbiAgbGV0IGF0dGFjaF9hdHRyaWJzID0gWG1sLmF0dGFjaF9hdHRyaWJzXG5cbiAgbW9kdWxlIFhtbCA9IHN0cnVjdFxuICAgIG1vZHVsZSBXID0gV3JhcFxuXG4gICAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG5cbiAgICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICAgIHR5cGUgdXJpID0gWG1sLnVyaVxuXG4gICAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuXG4gICAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gICAgdHlwZSBhbmFtZSA9IFhtbC5hbmFtZVxuXG4gICAgdHlwZSBldmVudF9oYW5kbGVyID0gWG1sLmV2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gICAgbGV0IGF0dHIgbmFtZSBmIHMgPVxuICAgICAgbGV0IGEgPSBXLmZtYXAgZiBzIGluXG4gICAgICBuYW1lLCBYbWwuQXR0ciBhXG5cbiAgICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoanNfc3RyaW5nX29mX2Zsb2F0IGYpKSBzXG5cbiAgICBsZXQgaW50X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9pbnQgZikpIHNcblxuICAgIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgZikpKSBzXG5cbiAgICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHVyaV9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgZikpIHNcblxuICAgIGxldCB1cmlzX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiBmKSkpIHNcblxuICAgIHR5cGUgZWx0ID0gWG1sLmVsdFxuXG4gICAgdHlwZSBlbmFtZSA9IFhtbC5lbmFtZVxuXG4gICAgbGV0IGVtcHR5ID0gWG1sLmVtcHR5XG5cbiAgICBsZXQgY29tbWVudCA9IFhtbC5jb21tZW50XG5cbiAgICBsZXQgcGNkYXRhIHMgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBcIlwiKSBpblxuICAgICAgbGV0IGtlZXBtZSA9IFJlYWN0LlMubWFwIChmdW4gcyAtPiBlIyMuZGF0YSA6PSBKcy5zdHJpbmcgcykgcyBpblxuICAgICAgcmV0YWluIChlIDo+IERvbS5ub2RlIEpzLnQpIH5rZWVwbWU7XG4gICAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gICAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgICBsZXQgZW50aXR5IHMgPSBYbWwuZW50aXR5IHNcblxuICAgIGxldCBsZWFmID0gWG1sLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBjZGF0YSA9IFhtbC5jZGF0YVxuXG4gICAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICAgIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuICBlbmRcblxuICBtb2R1bGUgWG1sX1N2ZyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWG1sXG5cbiAgICBsZXQgbGVhZiA9IFhtbF9TdmcubGVhZlxuXG4gICAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgbCA9XG4gICAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbiAgZW5kXG5cbiAgbW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG4gIG1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2ZylcbiAgbW9kdWxlIEh0bWw1ID0gSHRtbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgcHJldiA6ICdhIHQ7XG4gIG11dGFibGUgbmV4dCA6ICdhIHQ7XG59XG5cbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbm9kZV9wcmV2IDogJ2EgdDtcbiAgbm9kZV9uZXh0IDogJ2EgdDtcbiAgbXV0YWJsZSBub2RlX2RhdGEgOiAnYTtcbiAgbXV0YWJsZSBub2RlX2FjdGl2ZSA6IGJvb2w7XG59XG5cbmV4dGVybmFsIHNlcV9vZl9ub2RlIDogJ2Egbm9kZSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbm9kZV9vZl9zZXEgOiAnYSB0IC0+ICdhIG5vZGUgPSBcIiVpZGVudGl0eVwiXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBub2RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGdldCBub2RlID1cbiAgbm9kZS5ub2RlX2RhdGFcblxubGV0IHNldCBub2RlIGRhdGEgPVxuICBub2RlLm5vZGVfZGF0YSA8LSBkYXRhXG5cbmxldCByZW1vdmUgbm9kZSA9XG4gIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBiZWdpblxuICAgIG5vZGUubm9kZV9hY3RpdmUgPC0gZmFsc2U7XG4gICAgbGV0IHNlcSA9IHNlcV9vZl9ub2RlIG5vZGUgaW5cbiAgICBzZXEucHJldi5uZXh0IDwtIHNlcS5uZXh0O1xuICAgIHNlcS5uZXh0LnByZXYgPC0gc2VxLnByZXZcbiAgZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBzZXF1ZW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCByZWMgc2VxID0geyBwcmV2ID0gc2VxOyBuZXh0ID0gc2VxIH0gaW5cbiAgc2VxXG5cbmxldCBjbGVhciBzZXEgPVxuICBzZXEucHJldiA8LSBzZXE7XG4gIHNlcS5uZXh0IDwtIHNlcVxuXG5sZXQgaXNfZW1wdHkgc2VxID0gc2VxLm5leHQgPT0gc2VxXG5cbmxldCBsZW5ndGggc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgbGVuID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBsZW5cbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW4gbG9vcCBub2RlLm5vZGVfbmV4dCAobGVuICsgMSlcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCAwXG5cbmxldCBhZGRfbCBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXE7IG5vZGVfbmV4dCA9IHNlcS5uZXh0OyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEubmV4dC5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IGFkZF9yIGRhdGEgc2VxID1cbiAgbGV0IG5vZGUgPSB7IG5vZGVfcHJldiA9IHNlcS5wcmV2OyBub2RlX25leHQgPSBzZXE7IG5vZGVfZGF0YSA9IGRhdGE7IG5vZGVfYWN0aXZlID0gdHJ1ZSB9IGluXG4gIHNlcS5wcmV2Lm5leHQgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgc2VxLnByZXYgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgbm9kZVxuXG5sZXQgdGFrZV9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgcmFpc2UgRW1wdHlcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRha2VfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5wcmV2IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEubmV4dCBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9yIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0cmFuc2Zlcl9sIHMxIHMyID1cbiAgczIubmV4dC5wcmV2IDwtIHMxLnByZXY7XG4gIHMxLnByZXYubmV4dCA8LSBzMi5uZXh0O1xuICBzMi5uZXh0IDwtIHMxLm5leHQ7XG4gIHMxLm5leHQucHJldiA8LSBzMjtcbiAgczEucHJldiA8LSBzMTtcbiAgczEubmV4dCA8LSBzMVxuXG5sZXQgdHJhbnNmZXJfciBzMSBzMiA9XG4gIHMyLnByZXYubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczIucHJldjtcbiAgczIucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IGl0ZXJfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGUubm9kZV9kYXRhO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEucHJldlxuXG5sZXQgaXRlcl9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX25vZGVfciBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGU7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZvbGRfbCBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHQgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IGFjY1xuICBpblxuICBsb29wIHNlcS5uZXh0IGFjY1xuXG5sZXQgZm9sZF9yIGYgc2VxIGFjYyA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGFjYyA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldiAoZiBub2RlLm5vZGVfZGF0YSBhY2MpXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgYWNjXG4gIGluXG4gIGxvb3Agc2VxLnByZXYgYWNjXG5cbmxldCBmaW5kX25vZGVfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBpZiBmIG5vZGUubm9kZV9kYXRhIHRoZW5cbiAgICAgICAgICBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbHNlXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgZmluZF9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZpbmRfbm9kZV9vcHRfbCBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfbCBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZmluZF9ub2RlX29wdF9yIGYgc2VxID1cbiAgdHJ5IFNvbWUgKGZpbmRfbm9kZV9yIGYgc2VxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFJlYWRpbmcgZ3VpZGVcblxuICAgV2VsY29tZSB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEx3dCBjb3JlISBUaGlzIGlzIGEgYmlnIGZpbGUsIGJ1dCB3ZVxuICAgaG9wZSB0aGF0IHJlYWRpbmcgaXQgKHBhcnRzIGF0IGEgdGltZSEpIHdpbGwgbm90IGJlIHNjYXJ5IDopIEhlcmUgaXMgd2h5OlxuXG5cbiAgICogU2VjdGlvbmluZ1xuXG4gICBUaGUgY29kZSBpcyBicm9rZW4gdXAgaW50byBzZWN0aW9ucywgZWFjaCBvbmUgb2Ygd2hpY2ggaXMgYW4gaW50ZXJuYWwgbW9kdWxlLlxuICAgTW9zdCBvZiB0aGUgbW9kdWxlcyBoYXZlIGEgc2lnbmF0dXJlLCB3aGljaCBzZXJ2ZXMgYXMgYSBuZWF0IHRhYmxlIG9mXG4gICBjb250ZW50cy5cblxuICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGlzIGZpbGUgd2l0aCBjb2RlIGZvbGRpbmcgZW5hYmxlZC4gSWYgeW91XG4gICBmb2xkIGFsbCB0aGUgbW9kdWxlcywgeW91IGNhbiB2aXN1YWxpemUgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIEx3dCBxdWl0ZVxuICAgZWFzaWx5LiBZb3UgY2FuIHRoZW4gZXhwYW5kIG1vZHVsZXMgYXMgbmVlZGVkLCBkZXBlbmRpbmcgb24gd2hhdCBwYXJ0IG9mIHRoZVxuICAgaW1wbGVtZW50YXRpb24geW91IGFyZSBpbnRlcmVzdGVkIGluLiBXaXRob3V0IGNvZGUgZm9sZGluZywgeW91IGZhY2UgYW5cbiAgIGludGltaWRhdGluZyB3YWxsIG9mIGNvZGUgOiggWW91IGNhbiBzdGlsbCB2aXN1YWxseSBwYXJzZSB0aGUgZmlsZSwgaG93ZXZlcixcbiAgIGJlY2F1c2UgdGhlcmUgYXJlIHBsZW50eSBvZiBibGFuayBsaW5lcyB0byBoZWxwIHNlY3Rpb24gdGhpbmdzIG9mZi4gWW91IGNhblxuICAgYWxzbyB2aWV3IHRoaXMgZmlsZSBmb2xkZWQgb25saW5lOlxuXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOWZhYjBiZGVhZDk4YTYwZmNjZjA2ZTAxODkxODY4NjNcbiAgICAgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWFudHJvbi85N2I1ODUyMGQ1YmI0ODU4Y2NhYzZmNTQ3MDBhMjRkN1xuXG4gICBUaGUgc2lnbmF0dXJlcyBhcmUgdW51c3VhbDogYmlnIGNvbW1lbnRzIGFyZSBhYnNlbnQuIFRoZXkgYXJlIG1vdmVkIGludG8gdGhlXG4gICBtb2R1bGVzLCBzbyB0aGF0IHRoZXkgYXJlIGhpZGRlbiBieSBjb2RlIGZvbGRpbmcgd2hlbiB5b3UgKHRoZSByZWFkZXIhKSBhcmVcbiAgIG5vdCBpbnRlcmVzdGVkIGluIHRob3NlIG1vZHVsZXMuXG5cblxuICAgKiBEb2N1bWVudGF0aW9uXG5cbiAgIFRoZSBkb2N1bWVudGF0aW9uIGJlZ2lucyB3aXRoIGFuIG92ZXJ2aWV3IG9mIG1ham9yIGNvbmNlcHRzIGFuZCBjb21wb25lbnRzLlxuICAgVGhpcyBvdmVydmlldyBwdXRzIGV2ZXJ5dGhpbmcgaW50byBjb250ZXh0LiBZb3UgZG9uJ3QgaGF2ZSB0byByZWFkIHRoZSB3aG9sZVxuICAgdGhpbmcuIFRoZSBvdmVydmlldyBiZWdpbnMgd2l0aCBiYXNpYyBjb25jZXB0cywgbW92ZXMgb24gdG8gYWR2YW5jZWQgb25lcyxcbiAgIGFuZCB0aGVuIGdldHMgaW50byB0aGUgdHJ1bHkgZXNvdGVyaWMuIFlvdSBjYW4gcmVhZCBhYm91dCBlYWNoIGNvbmNlcHQgb24gYW5cbiAgIGFzLW5lZWRlZCBiYXNpcy4gSG93ZXZlciwgb25jZSB5b3UgaGF2ZSByZWFkIHRoZSB3aG9sZSBvdmVydmlldywgeW91IHdpbGwgYmVcbiAgIGF3YXJlIG9mICpldmVyeXRoaW5nKiB0aGF0IGlzIG5lZWRlZCB0byB1bmRlcnN0YW5kLCBhbmQgd29yayB3aXRoLCB0aGUgY29yZVxuICAgb2YgTHd0LlxuXG4gICBMaXR0ZXJlZCBpbiB0aGUgY29kZSBhcmUgYWRkaXRpb25hbCBjb21tZW50cywgdGhhdCBnbyBpbi1kZXB0aCBvbiB2YXJpb3VzXG4gICBsb2NhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBvcHBvcnR1bml0aWVzLCByZWdyZXRzLCBhbmQgdGhlIGxpa2UuXG5cbiAgIFRoZSBzZWN0aW9ucyAobW9kdWxlcykgb2YgdGhlIGNvZGUgY29ycmVzcG9uZCBjbG9zZWx5IHRvIHNlY3Rpb25zIG9mIHRoZVxuICAgb3ZlcnZpZXcuXG5cblxuICAgKiBXaGl0ZXNwYWNlXG5cbiAgIFRoZSB0b3RhbCBsaW5lIGNvdW50IG9mIHRoaXMgZmlsZSBtYXkgc2VlbSBmcmlnaHRlbmluZywgYnV0IG9uZSB0aGlyZCBvZiBpdFxuICAgaXMgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMsIGJvdGggdGhlcmUgdG8gaGVscCB5b3UgcmVhZCB0aGUgcmVtYWluaW5nIHR3b1xuICAgdGhpcmRzIVxuXG4gICBBbHNvLCB3aXRoaW4gdGhvc2UgdHdvIHRoaXJkcywgdGhlcmUgYXJlIGxhcmdlIGdyb3VwcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmVcbiAgIHJlcGV0aXRpdmUgYW5kIGZvcm11bGFpYywgc28gdGhlcmUgaXMgbXVjaCBsZXNzIGNvbmNlcHR1YWxseS11bmlxdWUgY29kZSBpblxuICAgTHd0IHRoYW4geW91IG1pZ2h0IHRoaW5rIGF0IGZpcnN0LlxuXG5cbiAgICogUGxlYXNlIGVkaXQgdGhlIGNvZGUgYW5kIHRoZSBkb2NzIVxuXG4gICBUaGlzIGNvZGUgaXMgbWVhbnQgdG8gYmUgcmVhZGFibGUsIGFuZCB0byBiZSBlZGl0ZWQuIElmIHlvdSBhcmUgcmVhZGluZ1xuICAgc29tZXRoaW5nLCBhbmQgdGhpbmsgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGV4cHJlc3MgaXQsIHBsZWFzZSBnbyBhaGVhZCBhbmRcbiAgIG9wZW4gYSBwdWxsIHJlcXVlc3QgdG8gdGhlIEx3dCByZXBvc2l0b3J5IGF0XG5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0XG5cbiAgIEV2ZW4gaWYgeW91ciBwdWxsIHJlcXVlc3Qgc29tZWhvdyBkb2Vzbid0IGdldCBtZXJnZWQsIHlvdSB3aWxsIGhhdmUgZWR1Y2F0ZWRcbiAgIHRoZSBtYWludGFpbmVycywgbm90IHRvIG1lbnRpb24gb3RoZXIgY29udHJpYnV0b3JzLCBhbmQgdXNlcnMuIFRoaXMgaXMgdHJ1ZVxuICAgZXZlbiBpZiB0aGUgY2hhbmdlIGlzIHRyaXZpYWwgLS0gc29tZXRpbWVzLCBtYWludGFpbmVycyBqdXN0IG5lZWQgdG8gYmVcbiAgIGVkdWNhdGVkIG11bHRpcGxlIHRpbWVzIGJlZm9yZSB0aGV5IHNlZSB0aGUgd2lzZG9tIG9mIGl0IDovXG5cbiAgIExpa2V3aXNlLCBpZiB5b3Ugd291bGQgbGlrZSB0byBtYWtlIGEgY29kZSBjb250cmlidXRpb24gdG8gdGhlIEx3dCBjb3JlLCBpdFxuICAgaXMgcXVpdGUgd2VsY29tZSwgYW5kIHdlIGhvcGUgdGhhdCB0aGlzIGNvZGUgaXMgcmVhZGFibGUgZW5vdWdoIGZvciB5b3UgdG8gYmVcbiAgIGFibGUgdG8gbWFrZSBpdCFcblxuXG4gICBFbmpveSEgKilcblxuXG5cbigqIE92ZXJ2aWV3XG5cbiAgIEluIHRoaXMgZmlsZSwgdGhlcmUgaXMgYSBcIm1vZGVsXCIgZnVuY3Rpb24gLS0gW0x3dC5iaW5kXSAtLSB3aGljaCBwdWxsc1xuICAgdG9nZXRoZXIgbWFueSAodGhvdWdoIG5vdCBhbGwpIG9mIHRoZSBjb25jZXB0cyBhbmQgaGVscGVycyBkaXNjdXNzZWQgaW4gdGhpc1xuICAgb3ZlcnZpZXcuIFRvIGZpbmQgaXQsIHNlYXJjaCBmb3IgXCJsZXQgYmluZCxcIiBhbmQgeW91IGNhbiBleGFtaW5lIGl0IHdoaWxlXG4gICByZWFkaW5nIHRoZSBvdmVydmlldy4gVGhlIGF1dGhvcnMgb2YgdGhpcyBmaWxlIGludGVuZCB0byBwdXQgZXh0cmEgZWZmb3J0XG4gICBpbnRvIHdyaXRpbmcgbmljZSBjb21tZW50cyBpbnNpZGUgW0x3dC5iaW5kXSA6KVxuXG5cbiAgIDAuIE1haW4gbWVjaGFuaXNtIGFuZCB0d28gYXNwZWN0c1xuXG4gICBUaGUgTHd0IGludGVyZmFjZSAoW2x3dC5tbGldKSBwcm92aWRlcyBvbmUgbWFpbiBtZWNoYW5pc20sIHByb21pc2VzLCBhbmQgdHdvXG4gICBcImFzcGVjdHMsXCIgd2hpY2ggYXJlICpub3QqIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHRoZSBtYWluIG1lY2hhbmlzbVxuICAgcHJvbWlzZXMsIGJ1dCB0aGV5IGFyZSBzdGlsbCB0aGVyZTpcblxuICAgLSBwcm9taXNlIGNhbmNlbGxhdGlvblxuICAgLSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgSWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBjYW5jZWxsYXRpb24gb3Igc3RvcmFnZSwgeW91IGNhbiBpZ25vcmUgdGhlc2VcbiAgIHR3byBjb21wbGljYXRpb25zLCBhbmQgc3RpbGwgZ2V0IGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZS4gVG9cbiAgIGhlbHAsIGFsbCBpZGVudGlmaWVycyByZWxhdGVkIHRvIGNhbmNlbGxhdGlvbiBjb250YWluIHRoZSBzdHJpbmcgXCJjYW5jZWwsXCJcbiAgIGFuZCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBzdG9yYWdlIGNvbnRhaW4gXCJzdG9yYWdlLlwiXG5cblxuICAgMS4gUHJvbWlzZXNcblxuICAgQSBwcm9taXNlIGlzIGEgY2VsbCB0aGF0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIHN0YXRlczogXCJyZXNvbHZlZFwiIG9yXG4gICBcInBlbmRpbmcuXCJcblxuICAgLSBSZXNvbHZlZCBwcm9taXNlc1xuXG4gICAgIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBlaXRoZXIgXCJmdWxmaWxsZWRcIiB3aXRoIGEgdmFsdWUsIG9yIFwicmVqZWN0ZWRcIiB3aXRoXG4gICAgIGFuIGV4Y2VwdGlvbi4gVGhlIHN0YXRlIG9mIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aWxsIG5ldmVyIGNoYW5nZSBhZ2FpbjogYVxuICAgICByZXNvbHZlZCBwcm9taXNlIGlzIGltbXV0YWJsZS4gQSByZXNvbHZlZCBwcm9taXNlIGlzIGJhc2ljYWxseSBlcXVpdmFsZW50XG4gICAgIHRvIGFuIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0uIFJlc29sdmVkIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0d29cbiAgICAgd2F5czpcblxuICAgICAtIFtMd3QucmV0dXJuXSwgW0x3dC5mYWlsXSwgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBwcm9kdWNlIFwidHJpdmlhbFwiXG4gICAgICAgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgc3RhcnQuXG4gICAgIC0gVGhlIG90aGVyIHdheSBpcyB0byByZXNvbHZlIGEgcHJvbWlzZSB0aGF0IHN0YXJ0ZWQgb3V0IHBlbmRpbmcuXG5cbiAgICAgTm90ZSB0aGF0IHJlamVjdGVkIHByb21pc2VzIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHVuaGFuZGxlZCBleGNlcHRpb25zLlxuXG4gICAtIFBlbmRpbmcgcHJvbWlzZXNcblxuICAgICAuLi5hcmUgdGhvc2UgdGhhdCBtYXkgYmVjb21lIHJlc29sdmVkIGluIHRoZSBmdXR1cmUuIEVhY2ggcGVuZGluZyBwcm9taXNlXG4gICAgIGNhcnJpZXMgYSBsaXN0IG9mIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBhZGRlZCBieSBmdW5jdGlvbnMgbGlrZVxuICAgICBbTHd0LmJpbmRdLCBhbmQgY2FsbGVkIGJ5IEx3dCBpZi93aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLiBUaGVzZVxuICAgICBjYWxsYmFja3MgdHlwaWNhbGx5IGVuZCB1cCByZXNvbHZpbmcgYWRkaXRpb25hbCBwcm9taXNlczsgc2VlIHNlY3Rpb25cbiAgICAgXCJSZXNvbHV0aW9uIGxvb3BcIiBiZWxvdy5cblxuICAgICBQZW5kaW5nIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0aHJlZSB3YXlzLCBhY2NvcmRpbmcgdG8gaG93IHRoZXkgY2FuIGJlXG4gICAgIHJlc29sdmVkOlxuXG4gICAgIC0gSW5pdGlhbCBwcm9taXNlc1xuXG4gICAgICAgLi4uYXJlIGNyZWF0ZWQgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXS4gVGhlIHVzZXIgb2YgTHd0IHJlc29sdmVzXG4gICAgICAgdGhlc2UgcHJvbWlzZXMgbWFudWFsbHksIHRocm91Z2ggdGhlIHJlc29sdmVycyByZXR1cm5lZCBieSB0aG9zZVxuICAgICAgIGZ1bmN0aW9ucy5cblxuICAgICAtIFNlcXVlbnRpYWwgY29tcG9zaXRpb25cblxuICAgICAgIEZvciBleGFtcGxlLCBbTHd0LmJpbmRdLiBUaGVzZSBwcm9taXNlcyBvbmx5IGFyZSBvbmx5IHJlc29sdmVkIHdoZW4gdGhlXG4gICAgICAgcHJlY2VkaW5nIHNlcXVlbmNlIG9mIHByb21pc2VzIHJlc29sdmVzLiBUaGUgdXNlciBjYW5ub3QgcmVzb2x2ZSB0aGVzZVxuICAgICAgIHByb21pc2VzIGRpcmVjdGx5IChidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBiZWxvdykuXG5cbiAgICAgLSBDb25jdXJyZW50IGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5qb2luXSBvciBbTHd0LmNob29zZV0uIFRoZXNlIHByb21pc2VzIGFyZSBvbmx5IHJlc29sdmVkXG4gICAgICAgd2hlbiBhbGwgb3Igb25lIG9mIGEgc2V0IG9mIFwicHJlY2VkaW5nXCIgcHJvbWlzZXMgcmVzb2x2ZS4gVGhlIHVzZXIgY2Fubm90XG4gICAgICAgcmVzb2x2ZSB0aGVzZSBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb25cbiAgICAgICBiZWxvdykuXG5cblxuICAgMi4gUmVzb2x2ZXJzXG5cbiAgIFJlc29sdmVycyBhcmUgZ2l2ZW4gdG8gdGhlIHVzZXIgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXSwgYW5kIGNhbiBiZSB1c2VkXG4gICBieSB0aGUgdXNlciB0byByZXNvbHZlIHRoZSBjb3JyZXNwb25kaW5nIHByb21pc2VzLiBOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGVcbiAgIHVzZXIgb25seSBldmVyIGdldHMgcmVzb2x2ZXJzIGZvciBpbml0aWFsIHByb21pc2VzLlxuXG4gICBJbnRlcm5hbGx5LCByZXNvbHZlcnMgYXJlIHRoZSBleGFjdCBzYW1lIG9iamVjdHMgYXMgdGhlIHByb21pc2VzIHRoZXlcbiAgIHJlc29sdmUsIGV2ZW4gdGhvdWdoIHRoZSByZXNvbHZlciBpcyBleHBvc2VkIGFzIGEgcmVmZXJlbmNlIG9mIGEgZGlmZmVyZW50XG4gICB0eXBlIGJ5IFtsd3QubWxpXS4gRm9yIGRldGFpbHMgb24gd2h5LCBzZWUgc2VjdGlvbiBcIlR5cGUgc3lzdGVtIGFidXNlXCIgYmVsb3cuXG5cblxuICAgMy4gQ2FsbGJhY2tzXG5cbiAgIC4uLmFyZSBhdHRhY2hlZCBieSBMd3QgdG8gcGVuZGluZyBwcm9taXNlcywgYW5kIGFyZSBydW4gYnkgTHd0IGlmL3doZW4gdGhvc2VcbiAgIHByb21pc2VzIGFyZSByZXNvbHZlZC4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgZGlyZWN0bHkgZXhwb3NlZCB0aHJvdWdoXG4gICBbbHd0Lm1saV0gLS0gdGhleSBhcmUgYSBsb3ctbGV2ZWwgbWVjaGFuaXNtLiBGb3IgZXhhbXBsZSwgdG8gaW1wbGVtZW50XG4gICBbTHd0LmJpbmQgcCBmXSwgTHd0IGF0dGFjaGVzIGEgY2FsbGJhY2sgdG8gW3BdIHRoYXQgZG9lcyBzb21lIGludGVybmFsIEx3dFxuICAgYm9vay1rZWVwaW5nLCBhbmQgdGhlbiBjYWxscyBbZl0gaWYgW3BdIGlzIGZ1bGZpbGxlZCwgYW5kIGRvZXMgc29tZXRoaW5nIGVsc2VcbiAgIGlmIFtwXSBpcyByZWplY3RlZC5cblxuICAgQ2FsbGJhY2tzIGNvbWUgaW4gdHdvIGZsYXZvcnM6IHJlZ3VsYXIgY2FsbGJhY2tzIGFuZCBjYW5jZWwgY2FsbGJhY2tzLiBUaGVcbiAgIG9ubHkgbWF0ZXJpYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtIGFyZSB0aGF0OlxuXG4gICAtIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBhbHdheXMgY2FsbGVkIHdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBidXQgY2FuY2VsXG4gICAgIGNhbGxiYWNrcyBhcmUgY2FsbGVkLCBpbiBhZGRpdGlvbiwgb25seSBpZiB0aGUgcHJvbWlzZSBpcyBjYW5jZWxlZCwgYW5kXG4gICAtIGFsbCBjYW5jZWwgY2FsbGJhY2tzIG9mIGEgcHJvbWlzZSBhcmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVndWxhciBjYWxsYmFja1xuICAgICBpcyBjYWxsZWQuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiByZXNvbHV0aW9uLCBpbiBwYXJ0aWN1bGFyLCBhIHNwZWNpYWwgY2FzZVxuICAgb2YgcmVqZWN0aW9uLCBidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBsYXRlciBiZWxvdy5cblxuXG4gICA0LiBSZXNvbHV0aW9uIGxvb3BcblxuICAgUmVzb2x2aW5nIGEgcGVuZGluZyBwcm9taXNlIHRyaWdnZXJzIGl0cyBjYWxsYmFja3MsIGFuZCB0aG9zZSBtaWdodCByZXNvbHZlXG4gICBtb3JlIHBlbmRpbmcgcHJvbWlzZXMsIHRyaWdnZXJpbmcgbW9yZSBjYWxsYmFja3MsIGV0Yy4gVGhpcyBiZWhhdmlvciBpcyB0aGVcbiAgICpyZXNvbHV0aW9uIGxvb3AqLiBMd3QgaGFzIHNvbWUgbWFjaGluZXJ5IHRvIGF2b2lkIHN0YWNrIG92ZXJmbG93IGFuZCBvdGhlclxuICAgdW5mb3J0dW5hdGUgc2l0dWF0aW9ucyBkdXJpbmcgdGhpcyBsb29wLlxuXG4gICBUaGlzIGNoYWluaW5nIG9mIHByb21pc2UgcmVzb2x1dGlvbnMgdGhyb3VnaCBjYWxsYmFja3MgY2FuIGJlIHNlZW4gYXMgYSBraW5kXG4gICBvZiBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgsIGluIHdoaWNoIHRoZSBub2RlcyBhcmUgcGVuZGluZyBwcm9taXNlcywgYW5kIHRoZVxuICAgZWRnZXMgYXJlIGNhbGxiYWNrcy4gRHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AsIEx3dCBzdGFydHMgYXQgc29tZSBpbml0aWFsXG4gICBwcm9taXNlIHRoYXQgaXMgZ2V0dGluZyByZXNvbHZlZCBieSB0aGUgdXNlciwgYW5kIHJlY3Vyc2l2ZWx5IHJlc29sdmVzIGFsbFxuICAgZGVwZW5kZW50IHByb21pc2VzLiBUaGUgZ3JhcGggaXMgbW9kaWZpZWQ6IHJlc29sdmVkIHByb21pc2VzIGFyZSBubyBsb25nZXJcbiAgIHBlbmRpbmcsIHNvIHRoZXkgYXJlIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBncmFwaC5cblxuICAgU29tZSBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IHRvIEx3dCwgZS5nLiB0aGUgY2FsbGJhY2tzIHJlZ2lzdGVyZWRcbiAgIGJ5IFtMd3QuYmluZF0uIE90aGVycyBhcmUgbm90IHZpc2libGUgdG8gTHd0LCBiZWNhdXNlIHRoZSB1c2VyIGNhbiBhbHdheXNcbiAgIHJlZ2lzdGVyIGEgY2FsbGJhY2sgdXNpbmcgYSBmdW5jdGlvbiBsaWtlIFtMd3Qub25fc3VjY2Vzc10sIGFuZCB1c2UgdGhhdFxuICAgY2FsbGJhY2sgdG8gcmVzb2x2ZSBhbm90aGVyIGluaXRpYWwgcHJvbWlzZS4gQWxsIHRoZSBleHBsaWNpdCBkZXBlbmRlbmNpZXNcbiAgIGFyZSBjcmVhdGVkIGJ5IEx3dCdzIG93biBzZXF1ZW50aWFsIGFuZCBjb25jdXJyZW50IGNvbXBvc2l0aW9uIGZ1bmN0aW9uc1xuICAgKHNvLCBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLiBXaGV0aGVyIGRlcGVuZGVuY2llcyBhcmUgZXhwbGljaXQgb3Igbm90XG4gICBpcyByZWxldmFudCBvbmx5IHRvIGNhbmNlbGxhdGlvbi5cblxuXG4gICA1LiBDYW5jZWxsYXRpb25cblxuICAgQXMgZGVzY3JpYmVkIGFib3ZlLCBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2VlZHMgZnJvbSBhbiBpbml0aWFsXG4gICBwcm9taXNlLCBmb3J3YXJkIGFsb25nIGNhbGxiYWNrcyB0aHJvdWdoIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBTaW5jZSBpdFxuICAgc3RhcnRzIGZyb20gYW4gaW5pdGlhbCBwcm9taXNlLCBpdCBjYW4gb25seSBiZSB0cmlnZ2VyZWQgdXNpbmcgYSByZXNvbHZlci5cblxuICAgQ2FuY2VsbGF0aW9uIGlzIGEgc29ydCBvZiBkdWFsIHRvIG9yZGluYXJ5IHJlc29sdXRpb24uIEluc3RlYWQgb2Ygc3RhcnRpbmcgYXRcbiAgIGFuIGluaXRpYWwgcHJvbWlzZS9yZXNvbHZlciwgY2FuY2VsbGF0aW9uIHN0YXJ0cyBhdCAqYW55KiBwcm9taXNlLiBJdCB0aGVuXG4gICBnb2VzICpiYWNrd2FyZHMqIHRocm91Z2ggdGhlIGV4cGxpY2l0IGRlcGVuZGVuY3kgZ3JhcGgsIGxvb2tpbmcgZm9yXG4gICBjYW5jZWxhYmxlIGluaXRpYWwgcHJvbWlzZXMgdG8gY2FuY2VsIC0tIHRob3NlIHRoYXQgd2VyZSBjcmVhdGVkIGJ5XG4gICBbTHd0LnRhc2tdLiBBZnRlciBmaW5kaW5nIHRoZW0sIGNhbmNlbGxhdGlvbiByZXNvbHZlcyB0aGVtIG5vcm1hbGx5IHdpdGhcbiAgIFtSZWplY3RlZCBMd3QuQ2FuY2VsZWRdLCBjYXVzaW5nIGFuIG9yZGluYXJ5IHByb21pc2UgcmVzb2x1dGlvbiBwcm9jZXNzLlxuXG4gICBUbyBzdW1tYXJpemUsIGNhbmNlbGxhdGlvbiBpcyBhIHdheSB0byB0cmlnZ2VyIGFuICpvcmRpbmFyeSogcmVzb2x1dGlvbiBvZlxuICAgcHJvbWlzZXMgY3JlYXRlZCB3aXRoIFtMd3QudGFza10sIGJ5IGZpcnN0IHNlYXJjaGluZyBmb3IgdGhlbSBpbiB0aGUgcHJvbWlzZVxuICAgZGVwZW5kZW5jeSBncmFwaCAod2hpY2ggaXMgYXNzZW1ibGVkIGJ5IFtMd3QuYmluZF0sIFtMd3Quam9pbl0sIGV0YykuXG5cbiAgIFRoaXMgYmFja3dhcmRzIHNlYXJjaCBpcyB0cmlnZ2VyZWQgb25seSBieSBbTHd0LmNhbmNlbF0uIEl0IGlzIGFsc28gcG9zc2libGVcbiAgIGZvciB0aGUgdXNlciB0byBjYW5jZWwgYSBwcm9taXNlIGRpcmVjdGx5IGJ5IHJlamVjdGluZyBpdCB3aXRoXG4gICBbTHd0LkNhbmNlbGVkXSwgYnV0IGluIGFsbCBjYXNlcyB3aGVyZSB0aGUgdXNlciBjYW4gZG8gc28sIHRoZSBzZWFyY2ggd291bGRcbiAgIGJlIHJlZHVuZGFudCBhbnl3YXkgLS0gdGhlIHVzZXIgaGFzIG9ubHkgdHdvIHdheXMgb2YgZGlyZWN0bHkgcmVqZWN0aW5nIGFcbiAgIHByb21pc2Ugd2l0aCBbTHd0LkNhbmNlbGVkXSAob3IgYW55IGV4Y2VwdGlvbiwgZm9yIHRoYXQgbWF0dGVyKTpcblxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGFuIGluaXRpYWwgcHJvbWlzZSwgdGhlbiByZWplY3QgaXQgdGhyb3VnaCBpdHNcbiAgICAgcmVzb2x2ZXIuIFRoZSBzZWFyY2ggaXMgcmVkdW5kYW50IGJlY2F1c2UgaXQgd291bGQgZmluZCBvbmx5IHRoZSBzYW1lXG4gICAgIGluaXRpYWwgcHJvbWlzZSB0byBjYW5jZWwuXG4gICAtIFRoZSB1c2VyIGNhbiBjcmVhdGUgYSB0cml2aWFsIHByb21pc2UgYnkgY2FsbGluZyBbTHd0LmZhaWwgTHd0LkNhbmNlbGVkXS5cbiAgICAgVGhlIHNlYXJjaCBpcyBhZ2FpbiByZWR1bmRhbnQ7IGluIHRoaXMgY2FzZSBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgdG9cbiAgICAgY2FuY2VsLlxuXG4gICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBxdWlyazogb25seSBwcm9taXNlcyBjcmVhdGVkIGJ5IFtMd3QudGFza10gYXJlXG4gICBzdXNjZXB0aWJsZSB0byBiZWluZyBjYW5jZWxlZCBieSBbTHd0LmNhbmNlbF0sIGJ1dCB0aGUgdXNlciBjYW4gbWFudWFsbHlcbiAgIGNhbmNlbCBpbml0aWFsIHByb21pc2VzIGNyZWF0ZWQgYnkgYm90aCBbTHd0LnRhc2tdIGFuZCBbTHd0LndhaXRdLlxuXG4gICBEdWUgdG8gW0x3dC5jYW5jZWxdLCBwcm9taXNlIGNhbmNlbGxhdGlvbiwgYW5kIHRoZXJlZm9yZSByZXNvbHV0aW9uLCBjYW4gYmVcbiAgIGluaXRpYXRlZCBieSB0aGUgdXNlciB3aXRob3V0IGFjY2VzcyB0byBhIHJlc29sdmVyLiBUaGlzIGlzIGltcG9ydGFudCBmb3JcbiAgIHJlYXNvbmluZyBhYm91dCBzdGF0ZSBjaGFuZ2VzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkXG4gICBpbiBzb21lIGltcGxlbWVudGF0aW9uIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA2LiBObyBJL09cblxuICAgVGhlIEx3dCBjb3JlIGRlbGliZXJhdGVseSBkb2Vzbid0IGRvIEkvTy4gVGhlIHJlc29sdXRpb24gbG9vcCBzdG9wcyBydW5uaW5nXG4gICBvbmNlIG5vIHByb21pc2VzIGNhbiBiZSByZXNvbHZlZCBpbW1lZGlhdGVseS4gSXQgaGFzIHRvIGJlIHJlc3RhcnRlZCBsYXRlclxuICAgYnkgc29tZSBzdXJyb3VuZGluZyBJL08gbG9vcC4gVGhpcyBJL08gbG9vcCB0eXBpY2FsbHkga2VlcHMgdHJhY2sgb2YgcGVuZGluZ1xuICAgcHJvbWlzZXMgdGhhdCByZXByZXNlbnQgYmxvY2tlZCBvciBpbi1wcm9ncmVzcyBJL087IG90aGVyIHBlbmRpbmcgcHJvbWlzZXNcbiAgIHRoYXQgaW5kaXJlY3RseSBkZXBlbmQgb24gSS9PIGFyZSBub3QgZXhwbGljaXRseSB0cmFja2VkLiBUaGV5IGFyZSByZXRhaW5lZFxuICAgaW4gbWVtb3J5IGJ5IHJlZmVyZW5jZXMgY2FwdHVyZWQgaW5zaWRlIGNhbGxiYWNrcy5cblxuICAgT24gVW5peCBhbmQgV2luZG93cywgYSBzZXBhcmF0ZSB0b3AtbGV2ZWwgbG9vcCwgdHlwaWNhbGx5IFtMd3RfbWFpbi5ydW5dLCBpc1xuICAgbmVjZXNzYXJ5IHRvIHJlcGVhdGVkbHkgY2FsbCBbc2VsZWN0XSwgW2Vwb2xsXSwgb3IgW2tldmVudF0sIGFuZCByZXNvbHZlXG4gICBibG9ja2VkIEkvTyBwcm9taXNlcy5cblxuICAgSW4gSmF2YVNjcmlwdCwgcmVmZXJlbmNlcyB0byBwcm9taXNlcyBhcmUgcmV0YWluZWQgYnkgSmF2YVNjcmlwdCBjb2RlLCB3aGljaFxuICAgaXMsIGluIHR1cm4sIHRyaWdnZXJlZCBieSB0aGUgSlMgZW5naW5lLiBJbiBvdGhlciB3b3JkcywgdGhlIHRvcC1sZXZlbCBsb29wXG4gICBpcyBidXJpZWQgaW5zaWRlIHRoZSBKUyBlbmdpbmUuXG5cbiAgIFRoaXMgc2VwYXJhdGlvbiBvZiB0aGUgTHd0IGNvcmUgZnJvbSB0aGUgdG9wLWxldmVsIEkvTyBsb29wIGtlZXBzIHRoZSBjb3JlXG4gICBwb3J0YWJsZS5cblxuXG4gICA3LiBQcm9taXNlIFwicHJveHlpbmdcIlxuXG4gICBJbiBbTHd0LmJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XSwgdGhlIG91dGVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5XG4gICBbYmluZF0gZmlyc3QsIGFuZCByZXR1cm5lZCB0byB0aGUgdXNlci4gVGhlIGlubmVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5IHRoZVxuICAgdXNlciBsYXRlciwgYW5kIHRoZW4gcmV0dXJuZWQgdG8gW2JpbmRdLiBBdCB0aGF0IHBvaW50LCBbYmluZF0gbmVlZHMgdG8gbWFrZVxuICAgdGhlIGlubmVyIGFuZCBvdXRlciBbJ2IgdF1zIGJlaGF2ZSBpZGVudGljYWxseS5cblxuICAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgbWFraW5nIG9uZSBvZiB0aGUgcHJvbWlzZXMgcG9pbnQgdG8gdGhlIG90aGVyLiBUaGVcbiAgIGZpcnN0IG9mIHRoZSBwcm9taXNlcyB0aHVzIGJlY29tZXMgYSBcInByb3h5LFwiIGFuZCB0aGUgb3RoZXIgaXMgaXRzXG4gICBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICBBZnRlciB0aGF0LCBhbGwgb3BlcmF0aW9ucyB0aGF0IHdvdWxkIGJlIHBlcmZvcm1lZCBieSBMd3Qgb24gdGhlIHByb3h5IGFyZVxuICAgaW5zdGVhZCBwZXJmb3JtZWQgb24gdGhlIHVuZGVybHlpbmcgcHJvbWlzZS4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBudW1lcm91c1xuICAgY2FsbHMgdG8gdGhlIGludGVybmFsIGZ1bmN0aW9uIFt1bmRlcmx5aW5nXSBpbiB0aGlzIGZpbGUuXG5cbiAgIEJlY2F1c2Ugb2YgdGhlIHBlcnZhc2l2ZSB1c2Ugb2YgW3VuZGVybHlpbmddLCBwcm94aWVzIGNhbiBiZSBtb3JlIG9yIGxlc3NcbiAgIGlnbm9yZWQgb24gYSBmaXJzdCByZWFkaW5nIHRoZSBjb2RlLiBIb3dldmVyLCBiZWNvbWluZyBhIHByb3h5IGlzIGEga2luZCBvZlxuICAgc3RhdGUgY2hhbmdlLCBhbmQgYW55IHByb21pc2UgdGhhdCBpcyByZXR1cm5lZCBieSBhIGNhbGxiYWNrIHRvIFtiaW5kXSwgb3IgdG9cbiAgIGEgc2ltaWxhciBMd3QgZnVuY3Rpb24sIG1pZ2h0IGJlY29tZSBhIHByb3h5LiBUaGF0IG1lYW5zOiBqdXN0IGFib3V0IGFueVxuICAgcHJvbWlzZSB0aGF0IGlzIGhhbmRlZCB0byB0aGUgdXNlciwgbWlnaHQgYmVjb21lIGEgcHJveHkgcHJvbWlzZSBieSB0aGUgbmV4dFxuICAgdGltZSBMd3Qgc2VlcyBpdC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBwb3NzaWJsZSBzdGF0ZVxuICAgY2hhbmdlcyBpbiBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkIGluIHNvbWUgaW1wbGVtZW50YXRpb25cbiAgIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA4LiBTZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgTHd0IGhhcyBhIGdsb2JhbCBrZXktdmFsdWUgbWFwLiBUaGUgbWFwIGNhbiBiZSBwcmVzZXJ2ZWQgYWNyb3NzIHNlcXVlbnRpYWxcbiAgIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucywgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3RhdGUgaW4gdGhlIHVzZXIncyBjYWxsYmFja1xuICAgW2ZdIGFzIGl0IGRpZCBhdCB0aGUgdGltZSB0aGUgdXNlciBjYWxsZWQgW0x3dC5iaW5kIHAgZl0uXG5cbiAgIFRoZSBkZXRhaWxzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhbmQgZGlzY3Vzc2VkIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIFRoZSBtYWluIHRoaW5nIHRvIGJlIGF3YXJlIG9mIGlzIHRoZSBtYW55XG4gICByZWZlcmVuY2VzIHRvIFtjdXJyZW50X3N0b3JhZ2VdIHRocm91Z2hvdXQgTHd0LCB3aGljaCBhcmUgbmVlZGVkIHRvIHByb3Blcmx5XG4gICBzYXZlIGFuZCByZXN0b3JlIHRoZSBtYXBwaW5nLlxuXG5cbiAgIDkuIFR5cGUgc3lzdGVtIGFidXNlXG5cbiAgIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSB0eXBlIHN5c3RlbSBzb21ld2hhdCBleHRlbnNpdmVseS4gR2VudGxlXG4gICBpbnRyb2R1Y3Rpb25zIGNhbiBiZSBmb3VuZCBoZXJlOlxuXG4gICAgIGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC8xNjEvN1xuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzE2XG5cbiAgIEEgc2hvcnQgc3VtbWFyeSBmb2xsb3dzLlxuXG4gICBUaGUgcHJvbWlzZSBzdGF0ZSBpcywgaW50ZXJuYWxseSwgYSBHQURUIHdoaWNoIGVuY29kZXMgdGhlIHN0YXRlIGluIGl0cyB0eXBlXG4gICBwYXJhbWV0ZXJzLiBUaHVzLCBpZiB5b3UgZG8gW2xldCBwID0gdW5kZXJseWluZyBwXSwgdGhlIHNoYWRvd2luZyByZWZlcmVuY2VcbiAgIFtwXSBpcyBzdGF0aWNhbGx5IGtub3duICpub3QqIHRvIGJlIGEgcHJveHksIGFuZCB0aGUgY29tcGlsZXIga25vd3MgdGhhdCB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgbWF0Y2ggY2FzZSBbUHJveHkgX10gaXMgaW1wb3NzaWJsZS5cblxuICAgVGhlIGV4dGVybmFsIHByb21pc2UgdHlwZSwgWydhIHRdLCBhbmQgdGhlIGV4dGVybmFsIHJlc29sdmVyIHR5cGUsIFsnYSB1XSxcbiAgIGFyZSBub3QgR0FEVHMuIEZ1cnRoZXJtb3JlLCB0aGV5IGFyZSwgcmVzcGVjdGl2ZWx5LCBjb3ZhcmlhbnQgYW5kXG4gICBjb250cmF2YXJpYW50IGluIFsnYV0sIHdoaWxlIHRoZSBpbnRlcm5hbCBwcm9taXNlIHR5cGUgaXMgaW52YXJpYW50IGluIFsnYV0uXG4gICBGb3IgdGhlc2UgcmVhc29ucywgdGhlcmUgYXJlIG5hc3R5IGNhc3RzIGJldHdlZW4gWydhIHRdLCBbJ2EgdV0sIGFuZCB0aGVcbiAgIGludGVybmFsIHByb21pc2UgdHlwZS4gVGhlIGltcGxlbWVudGF0aW9uIGlzLCBvZiBjb3Vyc2UsIHdyaXR0ZW4gaW4gdGVybXMgb2ZcbiAgIHRoZSBpbnRlcm5hbCB0eXBlLlxuXG4gICBDYXN0aW5nIGZyb20gYW4gWydhIHRdIHRvIGFuIGludGVybmFsIHByb21pc2UgcHJvZHVjZXMgYSByZWZlcmVuY2UgZm9yXG4gICB3aGljaCB0aGUgc3RhdGUgaXMgXCJ1bmtub3duXCI6IHRoaXMgaXMgc2ltdWxhdGVkIHdpdGggYSBoZWxwZXIgR0FEVCwgd2hpY2hcbiAgIGVuY29kZXMgZXhpc3RlbnRpYWwgdHlwZXMuIFRoZXJlIGFyZSBzZXZlcmFsIHNpbWlsYXIgY2FzdHMsIHdoaWNoIGFyZSB1c2VkXG4gICB0byBkb2N1bWVudCBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2VzIGJldHdlZW4gdGhlIHRpbWUgYSBwcm9taXNlIGlzIGNyZWF0ZWQsXG4gICBhbmQgdGhlIGxhdGVyIHRpbWUgaXQgaXMgdXNlZCBpbiBhIGNhbGxiYWNrLiBZb3UgY2FuIHNlZSB0aGVzZSBjYXN0cyBpblxuICAgYWN0aW9uIGluIFtMd3QuYmluZF0uIFRoZSBjYXN0IHN5bnRheCBpcyBwcmV0dHkgbGlnaHQsIGFuZCwgYmVzaWRlcyBiZWluZ1xuICAgY29tbWVudGVkIGluIFtiaW5kXSwgYWxsIHN1Y2ggY2FzdHMgYXJlIGRvY3VtZW50ZWQgaW4gbW9kdWxlcyBbUHVibGljX3R5cGVzXVxuICAgYW5kIFtCYXNpY19oZWxwZXJzXS5cblxuXG4gICBJZiB5b3UndmUgbWFkZSBpdCB0aGlzIGZhciwgeW91IGFyZSBhbiBMd3QgZXhwZXJ0ISBSZWpvaWNlISAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxuKCogU29tZSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgdHlwZXNcblxuICAgU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQgbGF0ZXIsIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIEhvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIG1lbnRpb25lZCBpblxuICAgdGhlIGRlZmluaXRpb24gb2YgW3Byb21pc2VdLCBzbyB0aGV5IG11c3QgYmUgZGVmaW5lZCBoZXJlIGZpcnN0LiAqKVxubW9kdWxlIFN0b3JhZ2VfbWFwID1cbiAgTWFwLk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZClcbnR5cGUgc3RvcmFnZSA9ICh1bml0IC0+IHVuaXQpIFN0b3JhZ2VfbWFwLnRcblxuXG5cbm1vZHVsZSBNYWluX2ludGVybmFsX3R5cGVzID1cbnN0cnVjdFxuICAoKiBQaGFudG9tIHR5cGVzIGZvciB1c2Ugd2l0aCB0eXBlcyBbcHJvbWlzZV0gYW5kIFtzdGF0ZV0uIFRoZXNlIGFyZSBuZXZlclxuICAgICBjb25zdHJ1Y3RlZDsgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbnN0cnVjdG9ycyBpcyB0byBwcm92ZSB0byB0aGUgdHlwZVxuICAgICBjaGVja2VyIHRoYXQgdGhlc2UgdHlwZXMgYXJlIGRpc3RpbmN0IGZyb20gZWFjaCBvdGhlci4gV2FybmluZyAzNywgXCJ1bnVzZWRcbiAgICAgY29uc3RydWN0b3IsXCIgdGhlcmVmb3JlIGhhcyB0byBiZSB0ZW1wb3JhcmlseSBzdXBwcmVzc2VkLiAqKVxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSB1bmRlcmx5aW5nID0gcHJpdmF0ZSBVbmRlcmx5aW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcHJveHkgPSBwcml2YXRlIFByb3h5X2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgdHlwZSByZXNvbHZlZCA9IHByaXZhdGUgUmVzb2x2ZWRfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcbiAgdHlwZSBwZW5kaW5nID0gcHJpdmF0ZSBQZW5kaW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgW0BAQG9jYW1sLndhcm5pbmcgXCIrMzdcIl1cblxuXG5cbiAgKCogUHJvbWlzZXMgcHJvcGVyLiAqKVxuXG4gIHR5cGUgKCdhLCAndSwgJ2MpIHByb21pc2UgPSB7XG4gICAgbXV0YWJsZSBzdGF0ZSA6ICgnYSwgJ3UsICdjKSBzdGF0ZTtcbiAgfVxuXG4gIGFuZCAoXywgXywgXykgc3RhdGUgPVxuICAgIHwgRnVsZmlsbGVkIDogJ2EgICAgICAgICAgICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUmVqZWN0ZWQgIDogZXhuICAgICAgICAgICAgICAgICAtPiAoIF8sIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUGVuZGluZyAgIDogJ2EgY2FsbGJhY2tzICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpICBzdGF0ZVxuICAgIHwgUHJveHkgICAgIDogKCdhLCBfLCAnYykgcHJvbWlzZSAtPiAoJ2EsIHByb3h5LCAgICAgICdjKSAgICAgICBzdGF0ZVxuXG4gICgqIE5vdGU6XG5cbiAgICAgQSBwcm9taXNlIHdob3NlIHN0YXRlIGlzIFtQcm94eSBfXSBpcyBhIFwicHJveHlcIiBwcm9taXNlLiBBIHByb21pc2Ugd2hvc2VcbiAgICAgc3RhdGUgaXMgKm5vdCogW1Byb3h5IF9dIGlzIGFuIFwidW5kZXJseWluZ1wiIHByb21pc2UuXG5cbiAgICAgVGhlIFwidW5kZXJseWluZyBwcm9taXNlIG9mIFtwXVwiIGlzOlxuXG4gICAgIC0gW3BdLCBpZiBbcF0gaXMgaXRzZWxmIHVuZGVybHlpbmcuXG4gICAgIC0gT3RoZXJ3aXNlLCBbcF0gaXMgYSBwcm94eSBhbmQgaGFzIHN0YXRlIFtQcm94eSBwJ10uIFRoZSB1bmRlcmx5aW5nXG4gICAgICAgcHJvbWlzZSBvZiBbcF0gaXMgdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcCddLlxuXG4gICAgIEluIG90aGVyIHdvcmRzLCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYSBwcm94eSwgTHd0IGZvbGxvd3MgdGhlXG4gICAgIFtQcm94eSBfXSBsaW5rcyB0byB0aGUgZW5kLiAqKVxuXG4gICgqIE5vdGU6XG5cbiAgICAgV2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQsIG9yIGJlY29tZXMgYSBwcm94eSwgaXRzIHN0YXRlIGZpZWxkIGlzXG4gICAgIG11dGF0ZWQuIFRoaXMgaW52YWxpZGF0ZXMgdGhlIHR5cGUgaW52YXJpYW50cyBvbiB0aGUgcHJvbWlzZS4gU2VlIGludGVybmFsXG4gICAgIGZ1bmN0aW9uIFtzZXRfcHJvbWlzZV9zdGF0ZV0gZm9yIGRldGFpbHMgYWJvdXQgdGhhdC5cblxuICAgICBXaGVuIGFuIEx3dCBmdW5jdGlvbiBoYXMgYSByZWZlcmVuY2UgdG8gYSBwcm9taXNlLCBhbmQgYWxzbyByZWdpc3RlcnMgYVxuICAgICBjYWxsYmFjayB0aGF0IGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBwcm9taXNlLCB0aGUgaW52YXJpYW50cyBvbiB0aGVcbiAgICAgcmVmZXJlbmNlIG1heSBiZWNvbWUgaW52YWxpZCBieSB0aGUgdGltZSB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLiBBbGwgc3VjaFxuICAgICBjYWxsYmFja3MgaGF2ZSBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgdGhlIHZhbGlkIGludmFyaWFudHMgYXJlIGF0IHRoYXRcbiAgICAgcG9pbnQsIGFuZC9vciBjYXN0cyB0byAoMSkgZ2V0IHRoZSBjb3JyZWN0IHR5cGluZyBhbmQgKDIpIGRvY3VtZW50IHRoZVxuICAgICBwb3RlbnRpYWwgc3RhdGUgY2hhbmdlIGZvciByZWFkZXJzIG9mIHRoZSBjb2RlLiAqKVxuXG5cblxuICAoKiBDYWxsYmFjayBpbmZvcm1hdGlvbiBmb3IgcGVuZGluZyBwcm9taXNlcy4gKilcblxuICBhbmQgJ2EgY2FsbGJhY2tzID0ge1xuICAgIG11dGFibGUgcmVndWxhcl9jYWxsYmFja3MgOiAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3Q7XG4gICAgbXV0YWJsZSBjYW5jZWxfY2FsbGJhY2tzICA6ICdhIGNhbmNlbF9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgaG93X3RvX2NhbmNlbCAgICAgOiBob3dfdG9fY2FuY2VsO1xuICAgIG11dGFibGUgY2xlYW51cHNfZGVmZXJyZWQgOiBpbnQ7XG4gIH1cblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFjayA9ICdhIHJlc29sdmVkX3N0YXRlIC0+IHVuaXRcblxuICBhbmQgY2FuY2VsX2NhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbiAgYW5kICdhIHJlc29sdmVkX3N0YXRlID0gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcblxuICBhbmQgaG93X3RvX2NhbmNlbCA9XG4gICAgfCBOb3RfY2FuY2VsYWJsZSAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgICAgIDogKF8sIF8sIF8pIHByb21pc2UgICAgICAtPiBob3dfdG9fY2FuY2VsXG4gICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiAoXywgXywgXykgcHJvbWlzZSBsaXN0IC0+IGhvd190b19jYW5jZWxcblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ID1cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ICogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2sgb3B0aW9uIHJlZlxuXG4gIGFuZCBfIGNhbmNlbF9jYWxsYmFja19saXN0ID1cbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IDpcbiAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCA6XG4gICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAqICdhIGNhbmNlbF9jYWxsYmFja19saXN0IC0+XG4gICAgICAgICdhIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayA6XG4gICAgICBzdG9yYWdlICogY2FuY2VsX2NhbGxiYWNrIC0+XG4gICAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIDpcbiAgICAgICgnYSwgXywgXykgcHJvbWlzZSBMd3Rfc2VxdWVuY2Uubm9kZSAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuXG4gICgqIE5vdGVzOlxuXG4gICAgIFRoZXNlIHR5cGUgZGVmaW5pdGlvbnMgYXJlIGd1aWx0eSBvZiBwZXJmb3JtaW5nIHNldmVyYWwgb3B0aW1pemF0aW9ucyxcbiAgICAgd2l0aG91dCB3aGljaCB0aGV5IHdvdWxkIGJlIG11Y2ggZWFzaWVyIHRvIHVuZGVyc3RhbmQuXG5cbiAgICAgLSBUaGUgdHlwZSBwYXJhbWV0ZXJzIG9mIFsnYSByZXNvbHZlZF9zdGF0ZV0gZ3VhcmFudGVlIHRoYXQgaXQgaXMgZWl0aGVyXG4gICAgICAgW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10uIFNvLCBpdCBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgWygnYSwgZXhuKSBTdGRsaWIucmVzdWx0XSwgYW5kLCBpbmRlZWQsIHNob3VsZCBoYXZlIGFuIGlkZW50aWNhbFxuICAgICAgIG1lbW9yeSByZXByZXNlbnRhdGlvbi5cblxuICAgICAtIEFzIHBlciB0aGUgT3ZlcnZpZXcsIHRoZXJlIGFyZSByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb25seSBvbiBjYW5jZWxsYXRpb24sIGFuZCwgdGhlbiwgYmVmb3JlIGFueVxuICAgICAgIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBjYWxsZWQuXG5cbiAgICAgICBEZXNwaXRlIHRoZSBkaWZmZXJlbnQgdHlwZXMgZm9yIHRoZSB0d28ga2luZHMgb2YgY2FsbGJhY2tzLCB0aGV5IGFyZVxuICAgICAgIG90aGVyd2lzZSB0aGUgc2FtZS4gQ2FuY2VsIGNhbGxiYWNrcyBqdXN0IGRvbid0IG5lZWQgYSByZXN1bHQgc3RhdGVcbiAgICAgICBhcmd1bWVudCwgYmVjYXVzZSBpdCBpcyBrbm93biB0byBiZSBbUmVqZWN0ZWQgQ2FuY2VsZWRdLlxuXG4gICAgIC0gUmVndWxhciBjYWxsYmFja3MgYXJlIG5vdCBhbGxvd2VkIHRvIHJhaXNlIGV4Y2VwdGlvbnMuIEFsbCByZWd1bGFyXG4gICAgICAgY2FsbGJhY2tzIGFyZSBjcmVhdGVkIGluIHRoaXMgZmlsZSwgc28gdGhpcyBjYW4gYmUgY2hlY2tlZC5cblxuICAgICAgIENhbmNlbCBjYWxsYmFja3MgY2FuIHJhaXNlIGV4Y2VwdGlvbnMsIGJ1dCBpZiB0aGV5IGRvIHNvLCB0aGUgZXhjZXB0aW9uc1xuICAgICAgIGFyZSBwYXNzZWQgdG8gW2FzeW5jX2V4Y2VwdGlvbl9ob29rXS5cblxuICAgICAtIFtob3dfdG9fY2FuY2VsXSBpbXBsZW1lbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG1lbnRpb25lZCBpbiB0aGVcbiAgICAgICBPdmVydmlldy4gSXQgaXMgdHJhdmVyc2VkIGJhY2t3YXJkcyBkdXJpbmcgW0x3dC5jYW5jZWxdLiBJdCBpcyBhIEdBRFRcbiAgICAgICBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB0eXBlcyBvZiB0aGUgcHJvbWlzZSByZWZlcmVuY2VzXG4gICAgICAgc3RvcmVkLCBvciB0aGVpciBpbnZhcmlhbnRzLiBUaGUgY29uc3RydWN0b3JzIGNvcnJlc3BvbmQgdG8gcGVuZGluZ1xuICAgICAgIHByb21pc2Uga2luZHMgYXMgZm9sbG93czpcbiAgICAgICAgIC0gW05vdF9jYW5jZWxhYmxlXTogaW5pdGlhbCwgW0x3dC53YWl0XS5cbiAgICAgICAgIC0gW0NhbmNlbF90aGlzX3Byb21pc2VdOiBpbml0aWFsLCBbTHd0LnRhc2tdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19vbmVdOiBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uLCBlLmcuIFtMd3QuYmluZF0uXG4gICAgICAgICAtIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdOiBjb25jdXJyZW50IGNvbXBvc2l0aW9uLCBlLmcuXG4gICAgICAgICAgIFtMd3Quam9pbl0uXG5cbiAgICAgLSBUaGUgdHdvIGNhbGxiYWNrIGxpc3QgdHlwZXMgYXJlIG9yZGluYXJ5IGFwcGVuZC1mcmllbmRseSBsaXN0cywgd2l0aCB0d29cbiAgICAgICBvcHRpbWl6YXRpb25zIGlubGluZWQ6XG5cbiAgICAgICAtIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGFwcGFyZW50bHkgaGFzIHR3byBcImtpbmRzXCIgb2YgcmVndWxhclxuICAgICAgICAgY2FsbGJhY2tzLCBpbXBsaWNpdGx5IHJlbW92ZWQgYW5kIGV4cGxpY2l0bHkgcmVtb3ZhYmxlLiBBbGwgY2FsbGJhY2tzXG4gICAgICAgICBhcmUgcmVtb3ZhYmxlLiBJdCdzIGp1c3QgdGhhdCwgZm9yIHNvbWUgY2FsbGJhY2tzLCB0aGV5IHdpbGwgb25seSBiZVxuICAgICAgICAgcmVtb3ZlZCBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIHByb21pc2UgdGhleSBhcmUgYXR0YWNoZWQgdG8gYmVjb21lc1xuICAgICAgICAgcmVzb2x2ZWQuIFdoZW4gdGhhdCBoYXBwZW5zLCB0aGUgZW50aXJlIHN0YXRlIG9mIHRoYXQgcHJvbWlzZSBjaGFuZ2VzXG4gICAgICAgICB0byBbRnVsZmlsbGVkIF9dIG9yIFtSZWplY3RlZCBfXSwgYW5kIHRoZSByZWZlcmVuY2UgdG8gdGhlIHdob2xlXG4gICAgICAgICBjYWxsYmFjayBsaXN0IGlzIHNpbXBseSBsb3N0LiBUaGlzIFwicmVtb3Zlc1wiIHRoZSBjYWxsYmFjay4gRm9yIHRoZXNlXG4gICAgICAgICBjYWxsYmFja3MsIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGF0dGVtcHRzIHRvIHRyaW0gYW4gb3B0aW9uIGFuZCBhXG4gICAgICAgICByZWZlcmVuY2UgY2VsbCB3aXRoIHRoZVxuICAgICAgICAgW1JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2tdIGNvbnN0cnVjdG9yLlxuXG4gICAgICAgLSBbJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RdIGhhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGVdLCB3aGljaCBpcyB0aGUgc2FtZSBhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChfLCAoZnVuIF8gLT5cbiAgICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKSldLlxuICAgICAgICAgVGhpcyB3YXMgcHJvYmFibHkgZG9uZSB0byBhdm9pZCBhIGNsb3N1cmUgYWxsb2NhdGlvbi5cblxuICAgICAtIFRoZSBbY2xlYW51cHNfZGVmZXJyZWRdIGZpZWxkIGlzIGV4cGxhaW5lZCBpbiBtb2R1bGVcbiAgICAgICBbUGVuZGluZ19jYWxsYmFja3NdLiAqKVxuZW5kXG5vcGVuIE1haW5faW50ZXJuYWxfdHlwZXNcblxuXG5cbm1vZHVsZSBQdWJsaWNfdHlwZXMgPVxuc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgdHlwZSAtJ2EgdVxuXG4gIGxldCB0b19wdWJsaWNfcHJvbWlzZSA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSB0ID0gT2JqLm1hZ2ljXG4gIGxldCB0b19wdWJsaWNfcmVzb2x2ZXIgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdSA9IE9iai5tYWdpY1xuXG4gIHR5cGUgXyBwYWNrZWRfcHJvbWlzZSA9XG4gICAgfCBJbnRlcm5hbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSBwYWNrZWRfcHJvbWlzZVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IHRvX2ludGVybmFsX3Byb21pc2UgKHAgOiAnYSB0KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHApXG4gIGxldCB0b19pbnRlcm5hbF9yZXNvbHZlciAociA6ICdhIHUpIDogJ2EgcGFja2VkX3Byb21pc2UgPVxuICAgIEludGVybmFsIChPYmoubWFnaWMgcilcblxuICAoKiBNb3N0IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBwdWJsaWMgcHJvbWlzZSAoWydhIHRdKSBjb252ZXJ0IGl0IHRvIGFuXG4gICAgIGludGVybmFsIHByb21pc2UgYXMgZm9sbG93czpcblxuICAgICAgICgqIHAgOiAnYSB0ICopXG5cbiAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgICAgKCogcCA6ICgnYSwgdSwgYykgcHJvbWlzZSwgd2hlcmUgdSBhbmQgYyBhcmUgZnJlc2ggdHlwZXMsIGkuZS4gdGhlXG4gICAgICAgICAgaW52YXJpYW50cyBvbiBwIGFyZSB1bmtub3duLiAqKVxuXG4gICAgIFRoaXMgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIEl0IG9ubHkgcHJvZHVjZXMgYSByZWZlcmVuY2Ugd2l0aCBhIGRpZmZlcmVudFxuICAgICB0eXBlLiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2YgW0ludGVybmFsIF9dIHNlZW1zIHRvXG4gICAgIGJlIG9wdGltaXplZCBhd2F5IGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgT0NhbWwgdGhhdCBkb24ndCBoYXZlIEZsYW1iZGFcbiAgICAgYW5kIGRvbid0IHN1cHBvcnQgW1tAQG9jYW1sLnVuYm94ZWRdXS4gKilcblxuICAoKiBUaGlzIGNvdWxkIHByb2JhYmx5IHNhdmUgYW4gYWxsb2NhdGlvbiBieSB1c2luZyBbT2JqLm1hZ2ljXS4gKilcbiAgbGV0IHN0YXRlX29mX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IEZ1bGZpbGxlZCB4XG4gICAgfCBFcnJvciBleG4gLT4gUmVqZWN0ZWQgZXhuXG5lbmRcbmluY2x1ZGUgUHVibGljX3R5cGVzXG5cblxuXG5tb2R1bGUgQmFzaWNfaGVscGVycyA6XG5zaWdcbiAgdmFsIGlkZW50aWNhbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gYm9vbFxuICB2YWwgdW5kZXJseWluZyA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIC0+ICgnYSwgdW5kZXJseWluZywgJ2MpIHByb21pc2VcblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuICB2YWwgc2V0X3Byb21pc2Vfc3RhdGUgOlxuICAgICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsICd1LCAnYykgc3RhdGUgLT4gKCdhLCAndSwgJ2MpIHN0YXRlX2NoYW5nZWRcblxuICB0eXBlICdhIG1heV9ub3dfYmVfcHJveHkgPVxuICAgIHwgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IDpcbiAgICAgICgnYSwgXywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIG1heV9ub3dfYmVfcHJveHkgOlxuICAgICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG5lbmQgPVxuc3RydWN0XG4gICgqIENoZWNrcyBwaHlzaWNhbCBlcXVhbGl0eSAoWz09XSkgb2YgdHdvIGludGVybmFsIHByb21pc2VzLiBVbmxpa2UgWz09XSwgZG9lc1xuICAgICBub3QgZm9yY2UgdW5pZmljYXRpb24gb2YgdGhlaXIgaW52YXJpYW50cy4gKilcbiAgbGV0IGlkZW50aWNhbCBwMSBwMiA9XG4gICAgKHRvX3B1YmxpY19wcm9taXNlIHAxKSA9PSAodG9fcHVibGljX3Byb21pc2UgcDIpXG5cbiAgKCogW3VuZGVybHlpbmcgcF0gZXZhbHVhdGVzIHRvIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3BdLlxuXG4gICAgIElmIG11bHRpcGxlIFtQcm94eSBfXSBsaW5rcyBhcmUgdHJhdmVyc2VkLCBbdW5kZXJseWluZ10gdXBkYXRlcyBhbGwgdGhlXG4gICAgIHByb3hpZXMgdG8gcG9pbnQgaW1tZWRpYXRlbHkgdG8gdGhlaXIgZmluYWwgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuICBsZXQgcmVjIHVuZGVybHlpbmdcbiAgICAgIDogdHlwZSB1IGMuICgnYSwgdSwgYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsIGMpIHByb21pc2UgPVxuICAgIGZ1biBwIC0+XG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IChwIDogKF8sIHVuZGVybHlpbmcsIF8pIHByb21pc2UpXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcbiAgICB8IFBlbmRpbmcgXyAtPiBwXG4gICAgfCBQcm94eSBwJyAtPlxuICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgIGlmIG5vdCAoaWRlbnRpY2FsIHAnJyBwJykgdGhlblxuICAgICAgICBwLnN0YXRlIDwtIFByb3h5IHAnJztcbiAgICAgIHAnJ1xuXG5cblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlID1cbiAgICBsZXQgcCA6IChfLCBfLCBfKSBwcm9taXNlID0gT2JqLm1hZ2ljIHAgaW5cbiAgICBwLnN0YXRlIDwtIHN0YXRlO1xuICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcFxuXG4gICgqIFtzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlXSBtdXRhdGVzIHRoZSBzdGF0ZSBvZiBbcF0sIGFuZCBldmFsdWF0ZXMgdG8gYVxuICAgICAod3JhcHBlZCkgcmVmZXJlbmNlIHRvIFtwXSB3aXRoIHRoZSBzYW1lIGludmFyaWFudHMgYXMgb24gW3N0YXRlXS4gVGhlXG4gICAgIG9yaWdpbmFsIHJlZmVyZW5jZSBbcF0gc2hvdWxkIGJlIHNoYWRvd2VkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uOlxuXG4gICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgKEZ1bGZpbGxlZCA0MikgaW4gLi4uXG5cbiAgICAgVGhpcyBpcyBhIGtpbmQgb2YgY2hlYXAgaW1pdGF0aW9uIG9mIGxpbmVhciB0eXBpbmcsIHdoaWNoIGlzIGdvb2QgZW5vdWdoXG4gICAgIGZvciB0aGUgbmVlZHMgb2YgW2x3dC5tbF0uXG5cbiAgICAgSW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgdHJhbnNpdGl2ZWx5IGNhbGwgW3NldF9wcm9taXNlX3N0YXRlXSBsaWtld2lzZVxuICAgICByZXR1cm4gdGhlIG5ldyByZWZlcmVuY2UuIFRoaXMgZW5kcyBhdCBzb21lIHRvcC1sZXZlbCBmdW5jdGlvbiwgdHlwaWNhbGx5XG4gICAgIGVpdGhlciBhIGNhbGxiYWNrIG9yIGEgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuIFRoZXJlLCB0aGUgbmV3IHJlZmVyZW5jZVxuICAgICBpcyBzdGlsbCBib3VuZCwgYnV0IGlzIHRoZW4gZXhwbGljaXRseSBpZ25vcmVkLlxuXG4gICAgIFRoZSBzdGF0ZSBvZiBhIHByb21pc2UgaXMgbmV2ZXIgdXBkYXRlZCBkaXJlY3RseSBvdXRzaWRlIHRoaXMgbW9kdWxlXG4gICAgIFtCYXNpY19oZWxwZXJzXS4gQWxsIHVwZGF0ZXMgZWxzZXdoZXJlIGFyZSBkb25lIHRocm91Z2hcbiAgICAgW3NldF9wcm9taXNlX3N0YXRlXS5cblxuICAgICBUbyBhdm9pZCBwcm9ibGVtcyB3aXRoIHR5cGUtbGV2ZWwgaW52YXJpYW50cyBub3QgbWF0Y2hpbmcgcmVhbGl0eSwgZGF0YVxuICAgICBzdHJ1Y3R1cmVzIGRvIG5vdCBzdG9yZSBwcm9taXNlcyB3aXRoIGNvbmNyZXRlIGludmFyaWFudHMgLS0gZXhjZXB0XG4gICAgIHJlc29sdmVkIHByb21pc2VzLCB3aGljaCBhcmUgaW1tdXRhYmxlLiBJbmRlZWQsIGlmIG9uZSBsb29rcyBhdFxuICAgICBkZWZpbml0aW9ucyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gc3RvcmUgcGVuZGluZyBwcm9taXNlcywgZS5nLiB0aGVcbiAgICAgW2hvd190b19jYW5jZWxdIGdyYXBoLCB0aGUgaW52YXJpYW50cyBhcmUgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkLlxuXG4gICAgIE5vdGU6IGl0J3MgcG9zc2libGUgdG8gc3RhdGljYWxseSBkaXNhbGxvdyB0aGUgc2V0dGluZyBvZiB0aGUgW3N0YXRlXSBmaWVsZFxuICAgICBieSBtYWtpbmcgdHlwZSBbcHJvbWlzZV0gcHJpdmF0ZS4gSG93ZXZlciwgdGhhdCBzZWVtcyB0byByZXF1aXJlIHdyaXRpbmcgYVxuICAgICBzaWduYXR1cmUgdGhhdCBpcyBhIG5lYXItZHVwbGljYXRlIG9mIFtNYWluX2ludGVybmFsX3R5cGVzXSwgb3Igc29tZSBhYnVzZVxuICAgICBvZiBmdW5jdG9ycy4gKilcblxuXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IG1heV9ub3dfYmVfcHJveHkgcCA9IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwXG5cbiAgKCogTWFueSBmdW5jdGlvbnMsIGZvciBleGFtcGxlIFtMd3QuYmluZF0gYW5kIFtMd3Quam9pbl0sIGNyZWF0ZSBhIGZyZXNoXG4gICAgIHBlbmRpbmcgcHJvbWlzZSBbcF0gYW5kIHJldHVybiBpdCB0byB0aGUgdXNlci5cblxuICAgICBUaGV5IGRvIG5vdCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHJlc29sdmVyLiBUaGF0IG1lYW5zIHRoYXQgb25seSB0aGVcbiAgICAgZnVuY3Rpb24gaXRzZWxmICh0eXBpY2FsbHksIGEgY2FsbGJhY2sgcmVnaXN0ZXJlZCBieSBpdCkgY2FuIHJlc29sdmUgW3BdLlxuICAgICBUaGUgb25seSB0aGluZyB0aGUgdXNlciBjYW4gZG8gZGlyZWN0bHkgaXMgdHJ5IHRvIGNhbmNlbCBbcF0sIGJ1dCwgc2luY2VcbiAgICAgW3BdIGlzIG5vdCBhbiBpbml0aWFsIHByb21pc2UsIHRoZSBjYW5jZWxsYXRpb24gYXR0ZW1wdCBzaW1wbHkgcHJvcGFnYXRlc1xuICAgICBwYXN0IFtwXSB0byBbcF0ncyBwcmVkZWNlc3NvcnMuIElmIHRoYXQgZXZlbnR1YWxseSByZXN1bHRzIGluIGNhbmNlbGluZ1xuICAgICBbcF0sIGl0IHdpbGwgYmUgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbXMgb2YgdGhlIGZ1bmN0aW9uIChlLmcuXG4gICAgIFtMd3QuYmluZF0ncyBjYWxsYmFjaykuXG5cbiAgICAgQXMgYSByZXN1bHQsIHRoZSBvbmx5IHBvc3NpYmxlIHN0YXRlIGNoYW5nZSwgYmVmb3JlIHRoZSBjYWxsYmFjaywgaXMgdGhhdFxuICAgICBbcF0gbWF5IGhhdmUgYmVjb21lIGEgcHJveHkuIE5vdyxcblxuICAgICAtIElmIFtwXSBkb2VzIG5vdCB1bmRlcmdvIHRoaXMgc3RhdGUgY2hhbmdlIGFuZCBiZWNvbWUgYSBwcm94eSwgaXQgcmVtYWluc1xuICAgICAgIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZS5cbiAgICAgLSBJZiBbcF0gZG9lcyBiZWNvbWUgYSBwcm94eSwgaXQgd2lsbCBiZSBhIHByb3h5IGZvciBhbm90aGVyIHByb21pc2UgW3AnXVxuICAgICAgIGNyZWF0ZWQgZnJlc2ggYnkgW0x3dC5iaW5kXSwgdG8gd2hpY2ggdGhpcyBzYW1lIGFyZ3VtZW50IGFwcGxpZXMuIFNlZVxuICAgICAgIFttYWtlX2ludG9fcHJveHldLlxuXG4gICAgIFNvLCBieSBpbmR1Y3Rpb24gb24gdGhlIGxlbmd0aCBvZiB0aGUgcHJveHkgKFtQcm94eSBfXSkgY2hhaW4sIGF0IHRoZSB0aW1lXG4gICAgIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsIFtwXSBpcyBlaXRoZXIgYW4gdW5kZXJseWluZywgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICBUaGUgY2FzdFxuXG4gICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluIC4uLlxuXG4gICAgIGVuY29kZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHRoaXMgc3RhdGUgY2hhbmdlLiBJdCByZXBsYWNlcyBhIHJlZmVyZW5jZVxuXG4gICAgICAgcCA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZylcblxuICAgICB3aXRoXG5cbiAgICAgICBwIDogKCdhLCAkVW5rbm93biwgcGVuZGluZylcblxuICAgICBhbmQgaXMgdHlwaWNhbGx5IHNlZW4gYXQgdGhlIGJlZ2lubmluZyBvZiBjYWxsYmFja3MgcmVnaXN0ZXJlZCBieVxuICAgICBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucy5cblxuICAgICBUaGUgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIFRoZSBpbnRyb2R1Y3Rpb24gYW5kIGltbWVkaWF0ZSBlbGltaW5hdGlvbiBvZlxuICAgICBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBfXSBzZWVtcyB0byBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZCB2ZXJzaW9uc1xuICAgICBvZiBPQ2FtbC4gKilcbmVuZFxub3BlbiBCYXNpY19oZWxwZXJzXG5cbigqIFNtYWxsIGhlbHBlcnMgdG8gYXZvaWQgY2F0Y2hpbmcgb2NhbWwtcnVudGltZSBleGNlcHRpb25zICopXG5tb2R1bGUgRXhjZXB0aW9uX2ZpbHRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBleG4gLT4gYm9vbFxuICBsZXQgaGFuZGxlX2FsbCA9IGZ1biBfIC0+IHRydWVcbiAgbGV0IGhhbmRsZV9hbGxfZXhjZXB0X3J1bnRpbWUgPSBmdW5jdGlvblxuICAgIHwgT3V0X29mX21lbW9yeSAtPiBmYWxzZVxuICAgIHwgU3RhY2tfb3ZlcmZsb3cgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICBsZXQgdiA9XG4gICAgKCogRGVmYXVsdCB2YWx1ZTogdGhlIGxlZ2FjeSBiZWhhdmlvdXIgdG8gYXZvaWQgYnJlYWtpbmcgcHJvZ3JhbXMgKilcbiAgICByZWYgaGFuZGxlX2FsbFxuICBsZXQgc2V0IGYgPSB2IDo9IGZcbiAgbGV0IHJ1biBlID0gIXYgZVxuZW5kXG5cbm1vZHVsZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2UgOlxuc2lnXG4gICgqIFB1YmxpYyBpbnRlcmZhY2UgKilcbiAgdHlwZSAndiBrZXlcbiAgdmFsIG5ld19rZXkgOiB1bml0IC0+IF8ga2V5XG4gIHZhbCBnZXQgOiAndiBrZXkgLT4gJ3Ygb3B0aW9uXG4gIHZhbCB3aXRoX3ZhbHVlIDogJ3Yga2V5IC0+ICd2IG9wdGlvbiAtPiAodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgKilcbiAgdmFsIGN1cnJlbnRfc3RvcmFnZSA6IHN0b3JhZ2UgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFRoZSBpZGVhIGJlaGluZCBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgaXMgdG8gcHJlc2VydmUgc29tZSB2YWx1ZXNcbiAgICAgZHVyaW5nIGEgY2FsbCB0byBbYmluZF0gb3Igb3RoZXIgc2VxdWVudGlhbCBjb21wb3NpdGlvbiBvcGVyYXRpb24sIGFuZFxuICAgICByZXN0b3JlIHRob3NlIHZhbHVlcyBpbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb246XG5cbiAgICAgICBMd3Qud2l0aF92YWx1ZSBteV9rZXkgKFNvbWUgXCJmb29cIikgKGZ1biAoKSAtPlxuICAgICAgIHAgPnw9IGZ1biAoKSAtPlxuICAgICAgIGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpKVxuICAgICAgICAgKCogV2lsbCBzdWNjZWVkIGV2ZW4gaWYgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgbGF0ZXIuICopXG5cbiAgICAgTm90ZSB0aGF0IGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IHRoZSBjYWxsYmFjayBpcyBkZWZpbmVkIHdpdGhpbiBhblxuICAgICBhcmd1bWVudCBvZiBbd2l0aF92YWx1ZV0sIGkuZS4sIHRoaXMgZG9lcyB0aGUgc2FtZTpcblxuICAgICAgIGxldCBmID0gZnVuICgpIC0+IGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpIGluXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT4gcCA+fD0gZilcblxuICAgICBBbGwgdGhhdCBtYXR0ZXJzIGlzIHRoYXQgdGhlIHRvcC1tb3N0IHNlcXVlbmNpbmcgb3BlcmF0aW9uIChpbiB0aGlzIGNhc2UsXG4gICAgIG1hcCkgaXMgZXhlY3V0ZWQgYnkgdGhhdCBhcmd1bWVudC5cblxuICAgICBUaGlzIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgc2luZ2xlIGdsb2JhbCBoZXRlcm9nZW5lb3VzIGtleS12YWx1ZSBtYXAuXG4gICAgIFNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zIHNuYXBzaG90IHRoaXMgbWFwIHdoZW4gdGhleSBhcmUgY2FsbGVkLFxuICAgICBhbmQgcmVzdG9yZSB0aGUgc25hcHNob3QgcmlnaHQgYmVmb3JlIGNhbGxpbmcgdGhlIHVzZXIncyBjYWxsYmFjay4gVGhlIHNhbWVcbiAgICAgaGFwcGVucyBmb3IgY2FuY2VsIHRyaWdnZXJzIGFkZGVkIGJ5IFtvbl9jYW5jZWxdLlxuXG4gICAgIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHVzaW5nIHRoaXMgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNjb3VyYWdlZCBpblxuICAgICBuZXcgY29kZS4gKilcblxuICB0eXBlICd2IGtleSA9IHtcbiAgICBpZCA6IGludDtcbiAgICBtdXRhYmxlIHZhbHVlIDogJ3Ygb3B0aW9uO1xuICB9XG5cbiAgbGV0IG5leHRfa2V5X2lkID0gcmVmIDBcblxuICBsZXQgbmV3X2tleSAoKSA9XG4gICAgbGV0IGlkID0gIW5leHRfa2V5X2lkIGluXG4gICAgbmV4dF9rZXlfaWQgOj0gaWQgKyAxO1xuICAgIHtpZCA9IGlkOyB2YWx1ZSA9IE5vbmV9XG5cbiAgbGV0IGN1cnJlbnRfc3RvcmFnZSA9IHJlZiBTdG9yYWdlX21hcC5lbXB0eVxuXG4gIGxldCBnZXQga2V5ID1cbiAgICBpZiBTdG9yYWdlX21hcC5tZW0ga2V5LmlkICFjdXJyZW50X3N0b3JhZ2UgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlZnJlc2ggPSBTdG9yYWdlX21hcC5maW5kIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgICByZWZyZXNoICgpO1xuICAgICAgbGV0IHZhbHVlID0ga2V5LnZhbHVlIGluXG4gICAgICBrZXkudmFsdWUgPC0gTm9uZTtcbiAgICAgIHZhbHVlXG4gICAgZW5kXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB3aXRoX3ZhbHVlIGtleSB2YWx1ZSBmID1cbiAgICBsZXQgbmV3X3N0b3JhZ2UgPVxuICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgbGV0IHJlZnJlc2ggPSBmdW4gKCkgLT4ga2V5LnZhbHVlIDwtIHZhbHVlIGluXG4gICAgICAgIFN0b3JhZ2VfbWFwLmFkZCBrZXkuaWQgcmVmcmVzaCAhY3VycmVudF9zdG9yYWdlXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RvcmFnZV9tYXAucmVtb3ZlIGtleS5pZCAhY3VycmVudF9zdG9yYWdlXG4gICAgaW5cblxuICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBuZXdfc3RvcmFnZTtcbiAgICB0cnlcbiAgICAgIGxldCByZXN1bHQgPSBmICgpIGluXG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJlc3VsdFxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJhaXNlIGV4blxuZW5kXG5pbmNsdWRlIFNlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZVxuXG5cblxubW9kdWxlIFBlbmRpbmdfY2FsbGJhY2tzIDpcbnNpZ1xuICAoKiBNdXRhdGluZyBjYWxsYmFjayBsaXN0cyBhdHRhY2hlZCB0byBwZW5kaW5nIHByb21pc2VzICopXG4gIHZhbCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIDpcbiAgICAnYSBjYWxsYmFja3MgLT4gJ2EgcmVndWxhcl9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gY2FuY2VsX2NhbGxiYWNrXG4gIHZhbCBhZGRfY2FuY2VsX2NhbGxiYWNrIDogJ2EgY2FsbGJhY2tzIC0+IGNhbmNlbF9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBtZXJnZV9jYWxsYmFja3MgOiBmcm9tOidhIGNhbGxiYWNrcyAtPiBpbnRvOidhIGNhbGxiYWNrcyAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgbDEgbDIgPVxuICAgIGJlZ2luIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpXG4gICAgZW5kIFtAb2NhbWwud2FybmluZyBcIi00XCJdXG5cbiAgbGV0IGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IC0+IGwxXG4gICAgfCBfLCBfIC0+IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gICgqIEluIGEgY2FsbGJhY2sgbGlzdCwgZmlsdGVycyBvdXQgY2VsbHMgb2YgZXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzXG4gICAgIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuICopXG4gIGxldCByZWMgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgPSBmdW5jdGlvblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IE5vbmV9IC0+XG4gICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IFNvbWUgX31cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IGFzIGNhbGxiYWNrcyAtPlxuICAgICAgY2FsbGJhY2tzXG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMikgLT5cbiAgICAgIGxldCBsMSA9IGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIGwxIGluXG4gICAgICBsZXQgbDIgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMiBpblxuICAgICAgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyXG5cbiAgKCogU2VlIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXSBhbmQgW21lcmdlX2NhbGxiYWNrc10uICopXG4gIGxldCBjbGVhbnVwX3Rocm90dGxlID0gNDJcblxuICAoKiBFeHBsaWNpdGx5IHJlbW92YWJsZSBjYWxsYmFja3MgYXJlIGFkZGVkIChtYWlubHkpIGJ5IFtMd3QuY2hvb3NlXSBhbmQgaXRzXG4gICAgIHNpbWlsYXIgZnVuY3Rpb25zLiBJbiBbTHd0LmNob29zZSBbcDsgcCddXSwgaWYgW3AnXSByZXNvbHZlcyBmaXJzdCwgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIGJ5IFtMd3QuY2hvb3NlXSB0byBbcF0gaXMgcmVtb3ZlZC5cblxuICAgICBUaGUgcmVtb3ZhbCBpdHNlbGYgaXMgYWNjb21wbGlzaGVkIHdoZW4gdGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIHJlZmVyZW5jZVxuICAgICBjZWxsIFtjZWxsXSwgd2hpY2ggY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGF0IGNhbGxiYWNrLlxuXG4gICAgIElmIFtwXSBpcyBhIGxvbmctcGVuZGluZyBwcm9taXNlIHRoYXQgcmVwZWF0ZWRseSBwYXJ0aWNpcGF0ZXMgaW5cbiAgICAgW0x3dC5jaG9vc2VdLCBwZXJoYXBzIGluIGEgbG9vcCwgaXQgd2lsbCBhY2N1bXVsYXRlIGEgbGFyZ2UgbnVtYmVyIG9mXG4gICAgIGNsZWFyZWQgcmVmZXJlbmNlIGNlbGxzIGluIHRoaXMgZmFzaGlvbi4gVG8gYXZvaWQgYSBtZW1vcnkgbGVhaywgdGhleSBtdXN0XG4gICAgIGJlIGNsZWFuZWQgdXAuIEhvd2V2ZXIsIHRoZSBjZWxscyBhcmUgbm90IGNsZWFuZWQgdXAgb24gKmV2ZXJ5KiByZW1vdmFsLFxuICAgICBwcmVzdW1hYmx5IGJlY2F1c2Ugc2Nhbm5pbmcgdGhlIGNhbGxiYWNrIGxpc3QgdGhhdCBvZnRlbiwgYW5kIHJlYnVpbGRpbmdcbiAgICAgaXQsIGNhbiBnZXQgZXhwZW5zaXZlLlxuXG4gICAgIENsZWFudXAgaXMgdGhyb3R0bGVkIGJ5IG1haW50YWluaW5nIGEgY291bnRlciwgW2NsZWFudXBzX2RlZmVycmVkXSwgb24gZWFjaFxuICAgICBwZW5kaW5nIHByb21pc2UuIFRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIHdhbnRzXG4gICAgIHRvIGNsZWFuIHRoZSBjYWxsYmFjayBsaXN0IChyaWdodCBhZnRlciBjbGVhcmluZyBhIGNlbGwpLiBXaGVuIHRoZSBjb3VudGVyXG4gICAgIHJlYWNoZXMgW2NsZWFudXBfdGhyb3R0bGVdLCB0aGUgY2FsbGJhY2sgbGlzdCBpcyBhY3R1YWxseSBzY2FubmVkIGFuZFxuICAgICBjbGVhcmVkIGNhbGxiYWNrIGNlbGxzIGFyZSByZW1vdmVkLiAqKVxuICBsZXQgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzID1cbiAgICBjZWxsIDo9IE5vbmU7XG5cbiAgICAoKiBHbyB0aHJvdWdoIHRoZSBwcm9taXNlcyB0aGUgY2VsbCBoYWQgb3JpZ2luYWxseSBiZWVuIGFkZGVkIHRvLCBhbmQgZWl0aGVyXG4gICAgICAgZGVmZXIgYSBjbGVhbnVwLCBvciBhY3R1YWxseSBjbGVhbiB1cCB0aGVpciBjYWxsYmFjayBsaXN0cy4gKilcbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgKCogU29tZSBvZiB0aGUgcHJvbWlzZXMgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlc29sdmVkIGF0IHRoZSB0aW1lIHRoaXNcbiAgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxlZC4gKilcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuXG4gICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgIG1hdGNoIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGhhcyBvbmx5IG9uZSByZWd1bGFyIGNhbGxiYWNrLCBhbmQgaXQgaXMgcmVtb3ZhYmxlLCBpdFxuICAgICAgICAgICBtdXN0IGhhdmUgYmVlbiB0aGUgY2VsbCBjbGVhcmVkIGluIHRoaXMgZnVuY3Rpb24sIGFib3ZlLiBJbiB0aGF0XG4gICAgICAgICAgIGNhc2UsIGp1c3Qgc2V0IGl0cyBjYWxsYmFjayBsaXN0IHRvIGVtcHR5LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuXG4gICAgICAgICgqIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IHRyeSB0byB0cmlnZ2VyIGFcbiAgICAgICAgICAgY2xlYW51cCBpbiB0aGUgZmlyc3QgdHdvIGNhc2VzLCBidXQgSSBhbSBwcmVzZXJ2aW5nIHRoZW0gZm9yIG5vdywgYXNcbiAgICAgICAgICAgdGhpcyBpcyBob3cgdGhlIGNvZGUgd2FzIHdyaXR0ZW4gaW4gdGhlIHBhc3QuICopXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkICsgMSBpblxuICAgICAgICAgIGlmIGNsZWFudXBzX2RlZmVycmVkID4gY2xlYW51cF90aHJvdHRsZSB0aGVuIGJlZ2luXG4gICAgICAgICAgICBjYWxsYmFja3MuY2xlYW51cHNfZGVmZXJyZWQgPC0gMDtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3NcbiAgICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkKVxuXG4gICgqIENvbmNhdGVuYXRlcyBib3RoIGtpbmRzIG9mIGNhbGxiYWNrcyBvbiBbfmZyb21dIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxpc3RzXG4gICAgIG9mIFt+aW50b10uIFRoZSBjYWxsYmFjayBsaXN0cyBvbiBbfmZyb21dIGFyZSAqbm90KiB0aGVuIGNsZWFyZWQsIGJlY2F1c2VcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBieSBbU2VxdWVudGlhbF9jb21wb3NpdGlvbi5tYWtlX2ludG9fcHJveHldLFxuICAgICB3aGljaCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBzdGF0ZSBvZiBbfmZyb21dIGFuZCBsb3NlcyByZWZlcmVuY2VzIHRvIHRoZVxuICAgICBvcmlnaW5hbCBjYWxsYmFjayBsaXN0cy5cblxuICAgICBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZHMgb2YgYm90aCBwcm9taXNlcyBhcmUgc3VtbWVkLCBhbmQgaWYgdGhlIHN1bVxuICAgICBleGNlZWRzIFtjbGVhbnVwX3Rocm90dGxlXSwgYSBjbGVhbnVwIG9mIHJlZ3VsYXIgY2FsbGJhY2tzIGlzIHRyaWdnZXJlZC5cbiAgICAgVGhpcyBpcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrczsgc2VlXG4gICAgIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXS4gKilcbiAgbGV0IG1lcmdlX2NhbGxiYWNrcyB+ZnJvbSB+aW50byA9XG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBpbnRvLnJlZ3VsYXJfY2FsbGJhY2tzIGZyb20ucmVndWxhcl9jYWxsYmFja3MgaW5cbiAgICBsZXQgY2xlYW51cHNfZGVmZXJyZWQgPSBpbnRvLmNsZWFudXBzX2RlZmVycmVkICsgZnJvbS5jbGVhbnVwc19kZWZlcnJlZCBpblxuXG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzLCBjbGVhbnVwc19kZWZlcnJlZCA9XG4gICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlblxuICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyByZWd1bGFyX2NhbGxiYWNrcywgMFxuICAgICAgZWxzZVxuICAgICAgICByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWRcbiAgICBpblxuXG4gICAgbGV0IGNhbmNlbF9jYWxsYmFja3MgPVxuICAgICAgY29uY2F0X2NhbmNlbF9jYWxsYmFja3MgaW50by5jYW5jZWxfY2FsbGJhY2tzIGZyb20uY2FuY2VsX2NhbGxiYWNrcyBpblxuXG4gICAgaW50by5yZWd1bGFyX2NhbGxiYWNrcyA8LSByZWd1bGFyX2NhbGxiYWNrcztcbiAgICBpbnRvLmNhbmNlbF9jYWxsYmFja3MgPC0gY2FuY2VsX2NhbGxiYWNrcztcbiAgICBpbnRvLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkXG5cblxuXG4gICgqIEdlbmVyYWwsIGludGVybmFsLCBmdW5jdGlvbiBmb3IgYWRkaW5nIGEgcmVndWxhciBjYWxsYmFjay4gKilcbiAgbGV0IGFkZF9yZWd1bGFyX2NhbGxiYWNrX2xpc3Rfbm9kZSBjYWxsYmFja3Mgbm9kZSA9XG4gICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtXG4gICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIGFzIGV4aXN0aW5nIC0+XG4gICAgICAgIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGV4aXN0aW5nKVxuXG4gIGxldCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGVcbiAgICAgIGNhbGxiYWNrcyAoUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBmKVxuXG4gICgqIEFkZHMgW2NhbGxiYWNrXSBhcyByZW1vdmFibGUgdG8gZWFjaCBwcm9taXNlIGluIFtwc10uIFRoZSBmaXJzdCBwcm9taXNlIGluXG4gICAgIFtwc10gdG8gdHJpZ2dlciBbY2FsbGJhY2tdIHJlbW92ZXMgW2NhbGxiYWNrXSBmcm9tIHRoZSBvdGhlciBwcm9taXNlczsgdGhpc1xuICAgICBndWFyYW50ZWVzIHRoYXQgW2NhbGxiYWNrXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlLiBBbGwgdGhlIHByb21pc2VzIGluIFtwc11cbiAgICAgbXVzdCBiZSBwZW5kaW5nLlxuXG4gICAgIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGluZGlyZWN0bHkgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFtMd3QuY2hvb3NlXSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmID1cbiAgICBsZXQgcmVjIGNlbGwgPSByZWYgKFNvbWUgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyKVxuICAgIGFuZCBzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIgcmVzdWx0ID1cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcztcbiAgICAgIGYgcmVzdWx0XG4gICAgaW5cblxuICAgIGxldCBub2RlID0gUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIGNlbGwgaW5cbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPiBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGVcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFJlamVjdGVkIF8gLT4gYXNzZXJ0IGZhbHNlKTtcblxuICAgIGNlbGxcblxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgZiA9XG4gICAgaWdub3JlIChhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmKVxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGp1c3QgdG8gc3VwcG9ydCBbTHd0LnByb3RlY3RlZF0sIHdoaWNoIG5lZWRzIHRvIHJlbW92ZVxuICAgICB0aGUgY2FsbGJhY2sgaW4gY2lyY3Vtc3RhbmNlcyBvdGhlciB0aGFuIHRoZSBjYWxsYmFjayBiZWluZyBjYWxsZWQuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uIHBzIGYgPVxuICAgIGxldCBjZWxsID0gYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzXG5cbiAgbGV0IGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGYgPVxuICAgIGxldCBub2RlID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKCFjdXJyZW50X3N0b3JhZ2UsIGYpIGluXG5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICBub2RlXG5cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBfXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobm9kZSwgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MpXG5lbmRcbm9wZW4gUGVuZGluZ19jYWxsYmFja3NcblxuXG5cbm1vZHVsZSBSZXNvbHV0aW9uX2xvb3AgOlxuc2lnXG4gICgqIEFsbCB1c2VyLXByb3ZpZGVkIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGJ5IEx3dCBvbmx5IHRocm91Z2ggdGhpcyBtb2R1bGUuIEl0XG4gICAgIHRyYWNrcyB0aGUgY3VycmVudCBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kIGRlY2lkZXMgd2hldGhlciBlYWNoIGNhbGxiYWNrXG4gICAgIGNhbGwgc2hvdWxkIGJlIGRlZmVycmVkIG9yIG5vdC4gKilcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgdXNlZCBvbmx5IGluIHRoaXMgbW9kdWxlIEx3dCAqKVxuICB2YWwgcmVzb2x2ZSA6XG4gICAgP2FsbG93X2RlZmVycmluZzpib29sIC0+XG4gICAgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDppbnQgLT5cbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVfY2hhbmdlZFxuXG4gIHZhbCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0gOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhIGNhbGxiYWNrcykgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgdW5pdFxuXG4gIHZhbCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQgOlxuICAgID9ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6Ym9vbCAtPlxuICAgIGNhbGxiYWNrOih1bml0IC0+ICdhKSAtPlxuICAgIGlmX2RlZmVycmVkOih1bml0IC0+ICdhICogJ2IgcmVndWxhcl9jYWxsYmFjayAqICdiIHJlc29sdmVkX3N0YXRlKSAtPlxuICAgICAgJ2FcblxuICB2YWwgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBleHBvc2VkIHRvIG90aGVyIG1vZHVsZXMgaW4gTHd0ICopXG4gIHZhbCBhYmFuZG9uX3dha2V1cHMgOiB1bml0IC0+IHVuaXRcblxuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIGV4Y2VwdGlvbiBDYW5jZWxlZFxuXG4gIHZhbCBhc3luY19leGNlcHRpb25faG9vayA6IChleG4gLT4gdW5pdCkgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFdoZW4gTHd0IG5lZWRzIHRvIGNhbGwgYSBjYWxsYmFjaywgaXQgZW50ZXJzIHRoZSByZXNvbHV0aW9uIGxvb3AuIFRoaXNcbiAgICAgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBMd3Qgc2V0cyB0aGUgc3RhdGUgb2Ygb25lIHByb21pc2UgdG8gW0Z1bGZpbGxlZCBfXVxuICAgICBvciBbUmVqZWN0ZWQgX10uIFRoZSBjYWxsYmFja3MgdGhhdCB3ZXJlIGF0dGFjaGVkIHRvIHRoZSBwcm9taXNlIHdoZW4gaXRcbiAgICAgd2FzIHBlbmRpbmcgbXVzdCB0aGVuIGJlIGNhbGxlZC5cblxuICAgICBUaGlzIGFsc28gaGFwcGVucyBpbiBhIGZldyBvdGhlciBzaXR1YXRpb25zLiBGb3IgZXhhbXBsZSwgd2hlbiBbTHd0LmJpbmRdXG4gICAgIGlzIGNhbGxlZCBvbiBhIHByb21pc2UsIGJ1dCB0aGF0IHByb21pc2UgaXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlIGNhbGxiYWNrXG4gICAgIHBhc3NlZCB0byBbYmluZF0gbXVzdCBiZSBjYWxsZWQuXG5cbiAgICAgVGhlIGNhbGxiYWNrcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AgbWlnaHQgcmVzb2x2ZSBtb3JlXG4gICAgIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBhbmQgc28gb24uIFRoaXMgaXMgd2hhdCBtYWtlcyB0aGVcbiAgICAgcmVzb2x1dGlvbiBsb29wIGEge2UgbG9vcH0uXG5cbiAgICAgTHd0IGdlbmVyYWxseSB0cmllcyB0byBjYWxsIGVhY2ggY2FsbGJhY2sgaW1tZWRpYXRlbHkuIEhvd2V2ZXIsIHRoaXMgY2FuXG4gICAgIGxlYWQgdG8gYSBwcm9ncmVzc2l2ZSBkZWVwZW5pbmcgb2YgdGhlIGNhbGwgc3RhY2ssIHVudGlsIHRoZXJlIGlzIGEgc3RhY2tcbiAgICAgb3ZlcmZsb3cuIFRoaXMgY2FuJ3QgYmUgYXZvaWRlZCBieSBkb2luZyB0YWlsIGNhbGxzLCBiZWNhdXNlIEx3dCBhbHdheXNcbiAgICAgbmVlZHMgdG8gZG8gZXhjZXB0aW9uIGhhbmRsaW5nIGFyb3VuZCBjYWxsYmFja3MgY2FsbHM6IGVhY2ggY2FsbGJhY2sgY2FsbFxuICAgICBpcyBmb2xsb3dlZCBieSBhbiBleGNlcHRpb24gaGFuZGxlci4gSW5zdGVhZCwgd2hhdCBMd3QgZG9lcyBpcyB0cmFjayB0aGVcbiAgICAgY3VycmVudCBjYWxsYmFjayBjYWxsIGRlcHRoLiBPbmNlIHRoYXQgZGVwdGggcmVhY2hlcyBhIGNlcnRhaW4gbnVtYmVyLFxuICAgICBbZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhdLCBkZWZpbmVkIGJlbG93LCBmdXJ0aGVyIGNhbGxiYWNrc1xuICAgICBhcmUgZGVmZXJyZWQgaW50byBhIHF1ZXVlIGluc3RlYWQuIFRoYXQgcXVldWUgaXMgZHJhaW5lZCB3aGVuIEx3dCBleGl0c1xuICAgICBmcm9tIHRoZSB0b3AtbW9zdCBjYWxsYmFjayBjYWxsIHRoYXQgdHJpZ2dlcmVkIHRoZSByZXNvbHV0aW9uIGxvb3AgaW4gdGhlXG4gICAgIGZpcnN0IHBsYWNlLlxuXG4gICAgIFRvIGVuc3VyZSB0aGF0IHRoaXMgZGVmZXJyYWwgbWVjaGFuaXNtIGlzIGFsd2F5cyBwcm9wZXJseSBpbnZva2VkLCBhbGxcbiAgICAgY2FsbGJhY2tzIGNhbGxlZCBieSBMd3QgYXJlIGNhbGxlZCB0aHJvdWdoIG9uZSBvZiB0aHJlZSBmdW5jdGlvbnMgcHJvdmlkZWRcbiAgICAgYnkgdGhpcyBtb2R1bGU6XG5cbiAgICAgLSBbcmVzb2x2ZV0sIHdoaWNoIGNhbGxzIGFsbCB0aGUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgdG8gYSBwZW5kaW5nIHByb21pc2VcbiAgICAgICAoYW5kIHJlc29sdmVzIGl0LCBjaGFuZ2luZyBpdHMgc3RhdGUpLlxuICAgICAtIFtydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1dLCB3aGljaCBpcyBpbnRlcm5hbGx5IHVzZWQgYnkgW3Jlc29sdmVdIHRvXG4gICAgICAgY2FsbCBjYWxsYmFja3MgdGhhdCBhcmUgaW4gYSByZWNvcmQgb2YgdHlwZSBbJ2EgY2FsbGJhY2tzXSwgd2hpY2ggcmVjb3Jkc1xuICAgICAgIGFyZSBhc3NvY2lhdGVkIHdpdGggcGVuZGluZyBwcm9taXNlcy4gVGhpcyBmdW5jdGlvbiBpcyBleHBvc2VkIGJlY2F1c2VcbiAgICAgICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBbTHd0LmNhbmNlbF0gbmVlZHMgdG8gY2FsbCBpdCBkaXJlY3RseS5cbiAgICAgICBQcm9taXNlIHJlc29sdXRpb24gYW5kIGNhbGxiYWNrIGNhbGxpbmcgYXJlIHNlcGFyYXRlZCBpbiBhIHVuaXF1ZSB3YXkgaW5cbiAgICAgICBbY2FuY2VsXS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XSwgd2hpY2ggaXMgdXNlZCBieSBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyXG4gICAgICAgZnVuY3Rpb25zIHRvIGNhbGwgc2luZ2xlIGNhbGxiYWNrcyB3aGVuIHRoZSBwcm9taXNlcyBwYXNzZWQgdG9cbiAgICAgICBbTHd0LmJpbmRdLCBldGMuLCBhcmUgYWxyZWFkeSByZXNvbHZlZC5cblxuICAgICBDdXJyZW50IEx3dCBhY3R1YWxseSBoYXMgYSBtZXNzeSBtaXggb2YgY2FsbGJhY2stY2FsbGluZyBiZWhhdmlvcnMuIEZvclxuICAgICBleGFtcGxlLCBbTHd0LmJpbmRdIGlzIGV4cGVjdGVkIHRvIGFsd2F5cyBjYWxsIGl0cyBjYWxsYmFjayBpbW1lZGlhdGVseSxcbiAgICAgd2hpbGUgW0x3dC53YWtldXBfbGF0ZXJdIGlzIGV4cGVjdGVkIHRvIGRlZmVyIGFsbCBjYWxsYmFja3Mgb2YgdGhlIHByb21pc2VcbiAgICAgcmVzb2x2ZWQsIHtlIHVubGVzc30gTHd0IGlzIG5vdCBhbHJlYWR5IGluc2lkZSB0aGUgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFdlIHBsYW5uZWQgdG8gbWFrZSB0aGVzZSBiZWhhdmlvcnMgdW5pZm9ybSBpbiBMd3QgNC4wLjAsIGJ1dCBkZWNpZGVkXG4gICAgIGFnYWluc3QgaXQgZHVlIHRvIHRoZSByaXNrIG9mIGJyZWFraW5nIHVzZXJzLiBTZWVcblxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUwMFxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUxOVxuXG4gICAgIEFzIHBhcnQgb2YgdGhlIHByZXBhcmF0aW9uIGZvciB0aGUgY2hhbmdlLCB0aGUgYWJvdmUgY2FsbGJhY2staW52b2tpbmdcbiAgICAgZnVuY3Rpb25zIHN1cHBvcnQgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMgdG8gZW11bGF0ZSB0aGUgdmFyaW91c1xuICAgICBiZWhhdmlvcnMuIFdlIGRlY2lkZWQgbm90IHRvIHJlbW92ZSB0aGlzIG1hY2hpbmVyeSwgYmVjYXVzZSB3ZSBtaWdodCB3YW50XG4gICAgIHRvIGV4cG9zZSBkaWZmZXJlbnQgQVBJcyB0byBMd3QgaW4gdGhlIGZ1dHVyZS5cblxuICAgICAtIFt+YWxsb3dfZGVmZXJyaW5nOmZhbHNlXSBhbGxvd3MgaWdub3JpbmcgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLCBhbmRcbiAgICAgICBjYWxsaW5nIHRoZSBjYWxsYmFja3MgaW1tZWRpYXRlbHkuIFRoaXMgZW11bGF0ZXMgdGhlIG9sZCByZXNvbHV0aW9uXG4gICAgICAgYmVoYXZpb3IuXG4gICAgIC0gW35tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MV0gYWxsb3dzIGxpbWl0aW5nIHRoZSBkZXB0aCB3aGljaFxuICAgICAgIHRyaWdnZXJzIGRlZmVycmFsIG9uIGEgcGVyLWNhbGwtc2l0ZSBiYXNpcy4gVGhpcyBpcyB1c2VkIGJ5XG4gICAgICAgW0x3dC53YWtldXBfbGF0ZXJdLlxuICAgICAtIFt+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVdIGlzIGxpa2VcbiAgICAgICBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0sIHdoaWNoIGlnbm9yZXMgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLlxuICAgICAgIEhvd2V2ZXIsIHRvIGVuc3VyZSB0aGF0IHRoZSBjYWxsYmFjayBpcyB0YWlsLWNhbGxlZCwgTHd0IGRvZXNuJ3QgZXZlblxuICAgICAgIHVwZGF0ZSB0aGUgY2FsbGJhY2sgc3RhY2sgZGVwdGggZm9yIHRoZSBiZW5lZml0IG9mICpvdGhlciogY2FsbGJhY2tcbiAgICAgICBjYWxscy4gSXQganVzdCBibGluZGx5IGNhbGxzIHRoZSBjYWxsYmFjay5cblxuICAgICBTZWUgZGlzY3Vzc2lvbiBvZiBjYWxsYmFjay1jYWxsaW5nIHNlbWFudGljcyBpbjpcblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvMzI5XG5cbiAgICAgKiBDb250ZXh0XG5cbiAgICAgVGhlIHJlc29sdXRpb24gbG9vcCBlZmZlY3RpdmVseSBoYW5kbGVzIGFsbCBwcm9taXNlcyB0aGF0IGNhbiBiZSByZXNvbHZlZFxuICAgICBpbW1lZGlhdGVseSwgd2l0aG91dCBibG9ja2luZyBvbiBJL08uIEEgY29tcGxldGUgcHJvZ3JhbSB0aGF0IGRvZXMgSS9PXG4gICAgIGNhbGxzIFtMd3RfbWFpbi5ydW5dLiBTZWUgXCJObyBJL09cIiBpbiB0aGUgT3ZlcnZpZXcuICopXG5cblxuXG4gIGxldCBhc3luY19leGNlcHRpb25faG9vayA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiO1xuICAgICAgcHJlcnJfc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZXhuKTtcbiAgICAgIHByZXJyX2NoYXIgJ1xcbic7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyO1xuICAgICAgZmx1c2ggc3RkZXJyO1xuICAgICAgZXhpdCAyKVxuXG4gIGxldCBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHYgPVxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNhcmUgaWYgW2ZdIGV2YWx1YXRlcyB0byBhIHByb21pc2UuIEluXG4gICAgICAgcGFydGljdWxhciwgaWYgW2Ygdl0gZXZhbHVhdGVzIHRvIFtwXSBhbmQgW3BdIGlzIGFscmVhZHkgcmVqZWN0ZWQgb3Igd2lsbFxuICAgICAgIGJlIHJlamVjdCBsYXRlciwgaXQgaXMgbm90IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIHRvIHBhc3NcbiAgICAgICB0aGUgZXhjZXB0aW9uIHRvIFshYXN5bmNfZXhjZXB0aW9uX2hvb2tdLiAqKVxuICAgIHRyeSBmIHZcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG5cblxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuXG5cbiAgKCogUnVucyB0aGUgY2FsbGJhY2tzIChmb3JtZXJseSkgYXNzb2NpYXRlZCB0byBhIHByb21pc2UuIENhbmNlbCBjYWxsYmFja3MgYXJlXG4gICAgIHJ1biBmaXJzdCwgaWYgdGhlIHByb21pc2Ugd2FzIGNhbmNlbGVkLiBUaGVzZSBhcmUgZm9sbG93ZWQgYnkgcmVndWxhclxuICAgICBjYWxsYmFja3MuXG5cbiAgICAgVGhlIHJlYXNvbiBmb3IgdGhlIFwiZm9ybWVybHlcIiBpcyB0aGF0IHRoZSBwcm9taXNlJ3Mgc3RhdGUgaGFzIGFscmVhZHkgYmVlblxuICAgICBzZXQgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIHNvIHRoZSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlclxuICAgICByZWFjaGFibGUgdGhyb3VnaCB0aGUgcHJvbWlzZSByZWZlcmVuY2UuIFRoaXMgaXMgd2h5IHRoZSBkaXJlY3QgW2NhbGxiYWNrc11cbiAgICAgcmVjb3JkIG11c3QgYmUgZ2l2ZW4gdG8gdGhpcyBmdW5jdGlvbi4gKilcbiAgbGV0IHJ1bl9jYWxsYmFja3NcbiAgICAgIChjYWxsYmFja3MgOiAnYSBjYWxsYmFja3MpXG4gICAgICAocmVzdWx0IDogJ2EgcmVzb2x2ZWRfc3RhdGUpIDogdW5pdCA9XG5cbiAgICBsZXQgcnVuX2NhbmNlbF9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKHN0b3JhZ2UsIGYpIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHN0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKTtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGUgLT5cbiAgICAgICAgICBMd3Rfc2VxdWVuY2UucmVtb3ZlIG5vZGU7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGZzLCBmcycpIC0+XG4gICAgICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIChmcyc6OnJlc3QpXG5cbiAgICAgIGFuZCBpdGVyX2xpc3QgcmVzdCA9XG4gICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgZnM6OnJlc3QgLT4gaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3RcblxuICAgICAgaW5cblxuICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIFtdXG4gICAgaW5cblxuICAgIGxldCBydW5fcmVndWxhcl9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZiAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBTb21lIGZ9IC0+XG4gICAgICAgICAgZiByZXN1bHQ7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICAoKiBQYXR0ZXJuIG1hdGNoaW5nIGlzIG11Y2ggZmFzdGVyIHRoYW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbi4gKilcbiAgICBsZXQgaXNfY2FuY2VsZWQgPVxuICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT4gdHJ1ZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19jYW5jZWxlZCB0aGVuXG4gICAgICBydW5fY2FuY2VsX2NhbGxiYWNrcyBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcztcbiAgICBydW5fcmVndWxhcl9jYWxsYmFja3MgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG5cblxuXG4gIGxldCBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDQyXG5cbiAgbGV0IGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IHJlZiAwXG5cbiAgdHlwZSBkZWZlcnJlZF9jYWxsYmFja3MgPVxuICAgIERlZmVycmVkIDogKCdhIGNhbGxiYWNrcyAqICdhIHJlc29sdmVkX3N0YXRlKSAtPiBkZWZlcnJlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBkZWZlcnJlZF9jYWxsYmFja3MgOiBkZWZlcnJlZF9jYWxsYmFja3MgUXVldWUudCA9IFF1ZXVlLmNyZWF0ZSAoKVxuXG4gICgqIEJlZm9yZSBlbnRlcmluZyBhIHJlc29sdXRpb24gbG9vcCwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRha2UgYSBzbmFwc2hvdCBvZlxuICAgICB0aGUgY3VycmVudCBzdGF0ZSBvZiBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UuIFRoaXMgaXMgYmVjYXVzZSBtYW55IG9mXG4gICAgIHRoZSBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIHJ1biB3aWxsIG1vZGlmeSB0aGUgc3RvcmFnZS4gVGhlIHN0b3JhZ2UgaXNcbiAgICAgcmVzdG9yZWQgdG8gdGhlIHNuYXBzaG90IHdoZW4gdGhlIHJlc29sdXRpb24gbG9vcCBpcyBleGl0ZWQuICopXG4gIGxldCBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgPVxuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoICsgMTtcbiAgICBsZXQgc3RvcmFnZV9zbmFwc2hvdCA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IGxlYXZlX3Jlc29sdXRpb25fbG9vcCAoc3RvcmFnZV9zbmFwc2hvdCA6IHN0b3JhZ2UpIDogdW5pdCA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDEgdGhlbiBiZWdpblxuICAgICAgd2hpbGUgbm90IChRdWV1ZS5pc19lbXB0eSBkZWZlcnJlZF9jYWxsYmFja3MpIGRvXG4gICAgICAgIGxldCBEZWZlcnJlZCAoY2FsbGJhY2tzLCByZXN1bHQpID0gUXVldWUucG9wIGRlZmVycmVkX2NhbGxiYWNrcyBpblxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHRcbiAgICAgIGRvbmVcbiAgICBlbmQ7XG4gICAgY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDo9ICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggLSAxO1xuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgZiA9XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBzdG9yYWdlX3NuYXBzaG90O1xuICAgIHJlc3VsdFxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGEgaGFjayB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2lzc3Vlcy80OC5cbiAgICAgSWYgY3VycmVudGx5IHJlc29sdmluZyBwcm9taXNlcywgaXQgaW1tZWRpYXRlbHkgZXhpdHMgYWxsIHJlY3Vyc2l2ZVxuICAgICBlbnRyaWVzIG9mIHRoZSByZXNvbHV0aW9uIGxvb3AsIGdvZXMgdG8gdGhlIHRvcCBsZXZlbCwgcnVucyBhbnkgZGVmZXJyZWRcbiAgICAgY2FsbGJhY2tzLCBhbmQgZXhpdHMgdGhlIHRvcC1sZXZlbCByZXNvbHV0aW9uIGxvb3AuXG5cbiAgICAgVGhlIG5hbWUgc2hvdWxkIHByb2JhYmx5IGJlIFthYmFvbmRvbl9yZXNvbHV0aW9uX2xvb3BdLiAqKVxuICBsZXQgYWJhbmRvbl93YWtldXBzICgpID1cbiAgICBpZiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDw+IDAgdGhlblxuICAgICAgbGVhdmVfcmVzb2x1dGlvbl9sb29wIFN0b3JhZ2VfbWFwLmVtcHR5XG5cblxuXG4gIGxldCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID8oYWxsb3dfZGVmZXJyaW5nID0gdHJ1ZSlcbiAgICAgID8obWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGgpXG4gICAgICBjYWxsYmFja3MgcmVzdWx0ID1cblxuICAgIGxldCBzaG91bGRfZGVmZXIgPVxuICAgICAgYWxsb3dfZGVmZXJyaW5nXG4gICAgICAmJiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoID49IG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgIGluXG5cbiAgICBpZiBzaG91bGRfZGVmZXIgdGhlblxuICAgICAgUXVldWUucHVzaCAoRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgZWxzZVxuICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgIHJ1bl9jYWxsYmFja3MgY2FsbGJhY2tzIHJlc3VsdClcblxuICBsZXQgcmVzb2x2ZSA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggcCByZXN1bHQgPVxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBsZXQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgcmVzdWx0IGluXG5cbiAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID9hbGxvd19kZWZlcnJpbmcgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCBjYWxsYmFja3MgcmVzdWx0O1xuXG4gICAgcFxuXG4gIGxldCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgID8ocnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsID0gZmFsc2UpXG4gICAgICB+Y2FsbGJhY2s6ZlxuICAgICAgfmlmX2RlZmVycmVkID1cblxuICAgIGlmIHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCB0aGVuXG4gICAgICBmICgpXG5cbiAgICBlbHNlXG4gICAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgICAgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgICAgID49IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXG4gICAgICBpblxuXG4gICAgICBpZiBzaG91bGRfZGVmZXIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgaW1tZWRpYXRlX3Jlc3VsdCwgZGVmZXJyZWRfY2FsbGJhY2ssIGRlZmVycmVkX3Jlc3VsdCA9XG4gICAgICAgICAgaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgbGV0IGRlZmVycmVkX3JlY29yZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPVxuICAgICAgICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXG4gICAgICAgICAgICAgICAgZGVmZXJyZWRfY2FsbGJhY2s7XG4gICAgICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgICAgICBob3dfdG9fY2FuY2VsID0gTm90X2NhbmNlbGFibGU7XG4gICAgICAgICAgICBjbGVhbnVwc19kZWZlcnJlZCA9IDBcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIFF1ZXVlLnB1c2hcbiAgICAgICAgICAoRGVmZXJyZWQgKGRlZmVycmVkX3JlY29yZCwgZGVmZXJyZWRfcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzO1xuICAgICAgICBpbW1lZGlhdGVfcmVzdWx0XG4gICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgICAgZiAoKSlcbmVuZFxuaW5jbHVkZSBSZXNvbHV0aW9uX2xvb3BcblxuXG5cbm1vZHVsZSBSZXNvbHZpbmcgOlxuc2lnXG4gIHZhbCB3YWtldXBfbGF0ZXJfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlciA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2xhdGVyX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCB3YWtldXBfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cCA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWwgOiAnYSB0IC0+IHVuaXRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCB3YWtldXBfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgIGlnbm9yZSBwXG5cbiAgbGV0IHdha2V1cF9yZXN1bHQgciByZXN1bHQgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwIHIgdiA9IHdha2V1cF9nZW5lcmFsIFwid2FrZXVwXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9leG4gciBleG4gPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9leG5cIiByIChFcnJvciBleG4pXG5cbiAgbGV0IHdha2V1cF9sYXRlcl9nZW5lcmFsIGFwaV9mdW5jdGlvbl9uYW1lIHIgcmVzdWx0ID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Jlc29sdmVyIHIgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgKClcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcblxuICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICBsZXQgcmVzdWx0ID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdCBpblxuICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgIHJlc29sdmUgfm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDoxIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfbGF0ZXJfcmVzdWx0IHIgcmVzdWx0ID1cbiAgICB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBcIndha2V1cF9sYXRlcl9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwX2xhdGVyIHIgdiA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJcIiByIChPayB2KVxuICBsZXQgd2FrZXVwX2xhdGVyX2V4biByIGV4biA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG5cblxuICB0eXBlIHBhY2tlZF9jYWxsYmFja3MgPVxuICAgIHwgUGFja2VkIDogXyBjYWxsYmFja3MgLT4gcGFja2VkX2NhbGxiYWNrc1xuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBjYW5jZWwgcCA9XG4gICAgbGV0IGNhbmNlbGVkX3Jlc3VsdCA9IFJlamVjdGVkIENhbmNlbGVkIGluXG5cbiAgICAoKiBXYWxrcyB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoIGJhY2t3YXJkcywgbG9va2luZyBmb3IgY2FuY2VsYWJsZVxuICAgICAgIGluaXRpYWwgcHJvbWlzZXMsIGFuZCBjYW5jZWxzIChvbmx5KSB0aGVtLlxuXG4gICAgICAgRm91bmQgaW5pdGlhbCBwcm9taXNlcyBhcmUgY2FuY2VsZWQgaW1tZWRpYXRlbHksIGFzIHRoZXkgYXJlIGZvdW5kLCBieVxuICAgICAgIHNldHRpbmcgdGhlaXIgc3RhdGUgdG8gW1JlamVjdGVkIENhbmNlbGVkXS4gVGhpcyBpcyB0byBwcmV2ZW50IHRoZW0gZnJvbVxuICAgICAgIGJlaW5nIFwiZm91bmQgdHdpY2VcIiBpZiB0aGV5IGFyZSByZWFjaGFibGUgYnkgdHdvIG9yIG1vcmUgZGlzdGluY3QgcGF0aHNcbiAgICAgICB0aHJvdWdoIHRoZSBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGguXG5cbiAgICAgICBUaGUgY2FsbGJhY2tzIG9mIHRoZXNlIGluaXRpYWwgcHJvbWlzZXMgYXJlIHRoZW4gcnVuLCBpbiBhIHNlcGFyYXRlXG4gICAgICAgcGhhc2UuIFRoZXNlIGNhbGxiYWNrcyBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIGZvcndhcmRzIHRvIGFueSBkZXBlbmRlbnRcbiAgICAgICBwcm9taXNlcy4gU2VlIFwiQ2FuY2VsbGF0aW9uXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuICAgIGxldCBwcm9wYWdhdGVfY2FuY2VsIDogKF8sIF8sIF8pIHByb21pc2UgLT4gcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgZnVuIHAgLT5cbiAgICAgIGxldCByZWMgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyA6XG4gICAgICAgICAgJ2EgJ3UgJ2MuIHBhY2tlZF9jYWxsYmFja3MgbGlzdCAtPiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPlxuICAgICAgICAgICAgcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgICBmdW4gKHR5cGUgYykgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIChwIDogKF8sIF8sIGMpIHByb21pc2UpIC0+XG5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGlzIG5vdCBzdGlsbCBwZW5kaW5nLCBpdCBjYW4ndCBiZSBjYW5jZWxlZC4gKilcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcblxuICAgICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgICAgbWF0Y2ggY2FsbGJhY2tzLmhvd190b19jYW5jZWwgd2l0aFxuICAgICAgICAgIHwgTm90X2NhbmNlbGFibGUgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgQ2FuY2VsX3RoaXNfcHJvbWlzZSAtPlxuICAgICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAgY2FuY2VsZWRfcmVzdWx0IGluXG4gICAgICAgICAgICBpZ25vcmUgcDtcbiAgICAgICAgICAgIChQYWNrZWQgY2FsbGJhY2tzKTo6Y2FsbGJhY2tzX2FjY3VtdWxhdG9yXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwJyAtPlxuICAgICAgICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcCdcbiAgICAgICAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcyAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcHNcbiAgICAgIGluXG4gICAgICBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIFtdIHBcbiAgICBpblxuXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgY2FsbGJhY2tzID0gcHJvcGFnYXRlX2NhbmNlbCBwIGluXG5cbiAgICBjYWxsYmFja3MgfD4gTGlzdC5pdGVyIChmdW4gKFBhY2tlZCBjYWxsYmFja3MpIC0+XG4gICAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgICAgfmFsbG93X2RlZmVycmluZzpmYWxzZSBjYWxsYmFja3MgY2FuY2VsZWRfcmVzdWx0KVxuZW5kXG5pbmNsdWRlIFJlc29sdmluZ1xuXG5cblxubW9kdWxlIFRyaXZpYWxfcHJvbWlzZXMgOlxuc2lnXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHZhbCBmYWlsIDogZXhuIC0+IF8gdFxuICB2YWwgb2ZfcmVzdWx0IDogKCdhLCBleG4pIHJlc3VsdCAtPiAnYSB0XG5cbiAgdmFsIHJldHVybl91bml0IDogdW5pdCB0XG4gIHZhbCByZXR1cm5fdHJ1ZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX2ZhbHNlIDogYm9vbCB0XG4gIHZhbCByZXR1cm5fbm9uZSA6IF8gb3B0aW9uIHRcbiAgdmFsIHJldHVybl9zb21lIDogJ2EgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIHJldHVybl9vayA6ICdhIC0+ICgnYSwgXykgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9lcnJvciA6ICdlIC0+IChfLCAnZSkgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9uaWwgOiBfIGxpc3QgdFxuXG4gIHZhbCBmYWlsX3dpdGggOiBzdHJpbmcgLT4gXyB0XG4gIHZhbCBmYWlsX2ludmFsaWRfYXJnIDogc3RyaW5nIC0+IF8gdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IEZ1bGZpbGxlZCB2fVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0fVxuXG4gIGxldCBmYWlsIGV4biA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgZXhufVxuXG4gIGxldCByZXR1cm5fdW5pdCA9IHJldHVybiAoKVxuICBsZXQgcmV0dXJuX25vbmUgPSByZXR1cm4gTm9uZVxuICBsZXQgcmV0dXJuX3NvbWUgeCA9IHJldHVybiAoU29tZSB4KVxuICBsZXQgcmV0dXJuX25pbCA9IHJldHVybiBbXVxuICBsZXQgcmV0dXJuX3RydWUgPSByZXR1cm4gdHJ1ZVxuICBsZXQgcmV0dXJuX2ZhbHNlID0gcmV0dXJuIGZhbHNlXG4gIGxldCByZXR1cm5fb2sgeCA9IHJldHVybiAoT2sgeClcbiAgbGV0IHJldHVybl9lcnJvciB4ID0gcmV0dXJuIChFcnJvciB4KVxuXG4gIGxldCBmYWlsX3dpdGggbXNnID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCAoRmFpbHVyZSBtc2cpfVxuXG4gIGxldCBmYWlsX2ludmFsaWRfYXJnIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEludmFsaWRfYXJndW1lbnQgbXNnKX1cbmVuZFxuaW5jbHVkZSBUcml2aWFsX3Byb21pc2VzXG5cblxuXG5tb2R1bGUgUGVuZGluZ19wcm9taXNlcyA6XG5zaWdcbiAgKCogSW50ZXJuYWwgKilcbiAgdmFsIG5ld19wZW5kaW5nIDpcbiAgICBob3dfdG9fY2FuY2VsOmhvd190b19jYW5jZWwgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlXG4gIHZhbCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiBfIHQgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgKCogSW5pdGlhbCBwZW5kaW5nIHByb21pc2VzIChwdWJsaWMpICopXG4gIHZhbCB3YWl0IDogdW5pdCAtPiAnYSB0ICogJ2EgdVxuICB2YWwgdGFzayA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcblxuICB2YWwgYWRkX3Rhc2tfciA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgYWRkX3Rhc2tfbCA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuXG4gIHZhbCBwcm90ZWN0ZWQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5vX2NhbmNlbCA6ICdhIHQgLT4gJ2EgdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWwgPVxuICAgIGxldCBzdGF0ZSA9XG4gICAgICBQZW5kaW5nIHtcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGNhbmNlbF9jYWxsYmFja3MgPSBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eTtcbiAgICAgICAgaG93X3RvX2NhbmNlbDtcbiAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwO1xuICAgICAgfVxuICAgIGluXG4gICAge3N0YXRlfVxuXG4gIGxldCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgPVxuICAgICgqIFVzaW5nIGEgZGlydHkgY2FzdCBoZXJlIHRvIGF2b2lkIHJlYnVpbGRpbmcgdGhlIGxpc3QgOiggTm90IGJvdGhlcmluZ1xuICAgICAgIHdpdGggdGhlIGludmFyaWFudHMsIGJlY2F1c2UgW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gcGFja3MgdGhlbSxcbiAgICAgICBhbmQgY29kZSB0aGF0IG1hdGNoZXMgb24gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gZG9lc24ndCBjYXJlIGFib3V0XG4gICAgICAgdGhlbSBhbnl3YXkuICopXG4gICAgbGV0IGNhc3RfcHJvbWlzZV9saXN0IDogJ2EgdCBsaXN0IC0+ICgnYSwgXywgXykgcHJvbWlzZSBsaXN0ID0gT2JqLm1hZ2ljIGluXG4gICAgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIChjYXN0X3Byb21pc2VfbGlzdCBwcylcblxuXG5cbiAgbGV0IHdhaXQgKCkgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG4gIGxldCB0YXNrICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG5cblxuXG4gIGxldCBjYXN0X3NlcXVlbmNlX25vZGVcbiAgICAgIChub2RlIDogJ2EgdSBMd3Rfc2VxdWVuY2Uubm9kZSlcbiAgICAgIChfYWN0dWFsX2NvbnRlbnQ6KCdhLCAndSwgJ2MpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCAndSwgJ2MpIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgPVxuICAgIE9iai5tYWdpYyBub2RlXG5cbiAgbGV0IGFkZF90YXNrX3Igc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICBsZXQgYWRkX3Rhc2tfbCBzZXF1ZW5jZSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgbGV0IG5vZGUgPSBMd3Rfc2VxdWVuY2UuYWRkX2wgKHRvX3B1YmxpY19yZXNvbHZlciBwKSBzZXF1ZW5jZSBpblxuICAgIGxldCBub2RlID0gY2FzdF9zZXF1ZW5jZV9ub2RlIG5vZGUgcCBpblxuXG4gICAgbGV0IFBlbmRpbmcgY2FsbGJhY2tzID0gcC5zdGF0ZSBpblxuICAgIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIDwtXG4gICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlO1xuXG4gICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG5cblxuICBsZXQgcHJvdGVjdGVkIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgICgqIEluIHRoaXMgY2FsbGJhY2ssIFtwJ10gd2lsbCBlaXRoZXIgc3RpbGwgaXRzZWxmIGJlIHBlbmRpbmcsIG9yIGl0XG4gICAgICAgICAgIHdpbGwgaGF2ZSBiZWNvbWUgYSBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuIFRoZSByZWFzb25pbmcgZm9yXG4gICAgICAgICAgIHRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIGluIHRoZSBjb21tZW50IGF0IFttYXlfbm93X2JlX3Byb3h5XS4gVGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2VzIGFyZTpcblxuICAgICAgICAgICAtIFtwJ10gKmlzKiBhbiBpbml0aWFsIHByb21pc2UsIHNvIGl0ICpjYW4qIGdldCBjYW5jZWxlZC4gSG93ZXZlciwgaWZcbiAgICAgICAgICAgICBpdCBkb2VzLCB0aGUgW29uX2NhbmNlbF0gaGFuZGxlciBpbnN0YWxsZWQgYmVsb3cgd2lsbCByZW1vdmUgdGhpc1xuICAgICAgICAgICAgIGNhbGxiYWNrLlxuICAgICAgICAgICAtIFtwJ10gbmV2ZXIgZ2V0cyBwYXNzZWQgdG8gW21ha2VfaW50b19wcm94eV0sIHRoZSBvbmx5IGVmZmVjdCBvZlxuICAgICAgICAgICAgIHdoaWNoIGlzIHRoYXQgaXQgY2Fubm90IGJlIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYW5vdGhlclxuICAgICAgICAgICAgIChwcm94eSkgcHJvbWlzZS4gU28sIFtwJ10gY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBoZWFkIG9mIGEgY2hhaW4gb2ZcbiAgICAgICAgICAgICBbUHJveHkgX10gbGlua3MsIGFuZCBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gd29ycnkgYWJvdXQgd2hldGhlciB0aGVcbiAgICAgICAgICAgICBpbmR1Y3RpdmUgcmVhc29uaW5nIGF0IFttYXlfbm93X2JlX3Byb3h5XSBhcHBsaWVzLiAqKVxuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcgcF9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBpblxuXG4gICAgICBsZXQgcmVtb3ZlX3RoZV9jYWxsYmFjayA9XG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb25cbiAgICAgICAgICBbcF0gY2FsbGJhY2tcbiAgICAgIGluXG5cbiAgICAgIGxldCBQZW5kaW5nIHAnX2NhbGxiYWNrcyA9IHAnLnN0YXRlIGluXG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIHAnX2NhbGxiYWNrcyByZW1vdmVfdGhlX2NhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gIGxldCBub19jYW5jZWwgcCA9XG4gICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBwXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFzIGluIFtwcm90ZWN0ZWRdIGFuZCBbbWF5X25vd19iZV9wcm94eV0sIGJ1dCBldmVuIHNpbXBsZXIsXG4gICAgICAgICAgIGJlY2F1c2UgW3AnXSBpcyBub3QgY2FuY2VsYWJsZS4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5lbmRcbmluY2x1ZGUgUGVuZGluZ19wcm9taXNlc1xuXG5cblxubW9kdWxlIFNlcXVlbnRpYWxfY29tcG9zaXRpb24gOlxuc2lnXG4gICgqIE1haW4gaW50ZXJmYWNlIChwdWJsaWMpICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuICB2YWwgY2F0Y2ggOiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGZpbmFsaXplIDogKHVuaXQgLT4gJ2EgdCkgLT4gKHVuaXQgLT4gdW5pdCB0KSAtPiAnYSB0XG4gIHZhbCB0cnlfYmluZCA6ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiBDYW5jZWwgY2FsbGJhY2tzIChwdWJsaWMpLiAqKVxuICB2YWwgb25fY2FuY2VsIDogJ2EgdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCogTm9uLXByb21pc2UgY2FsbGJhY2tzIChwdWJsaWMpICopXG4gIHZhbCBvbl9zdWNjZXNzIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgb25fZmFpbHVyZSA6IF8gdCAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX3Rlcm1pbmF0aW9uIDogXyB0IC0+ICh1bml0IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2FueSA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IChleG4gLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIEJhY2t0cmFjZSBzdXBwb3J0IChpbnRlcm5hbDsgZm9yIHVzZSBieSB0aGUgUFBYKSAqKVxuICB2YWwgYmFja3RyYWNlX2JpbmQgOlxuICAgIChleG4gLT4gZXhuKSAtPiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBiYWNrdHJhY2VfY2F0Y2ggOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV9maW5hbGl6ZSA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgYmFja3RyYWNlX3RyeV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKCdhIC0+ICdiIHQpIC0+IChleG4gLT4gJ2IgdCkgLT4gJ2IgdFxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGVyZSBhcmUgZml2ZSBwcmltYXJ5IHNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zOiBbYmluZF0sIFttYXBdLFxuICAgICBbY2F0Y2hdLCBbZmluYWxpemVdLCBhbmQgW3RyeV9iaW5kXS4gT2YgdGhlc2UsIFt0cnlfYmluZF0gaXMgdGhlIG1vc3RcbiAgICAgZ2VuZXJhbCAtLSBhbGwgdGhlIG90aGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgaXQuXG5cbiAgICAgTHd0IGNvbmZsYXRlcyBjb25jdXJyZW5jeSB3aXRoIGVycm9yIHByb3BhZ2F0aW9uLiBJZiBMd3QgZGlkIG5vdCBkbyB0aGlzLFxuICAgICB0aGVyZSB3b3VsZCBiZSBvbmx5IHR3byBwcmltYXJ5IGZ1bmN0aW9uczogW2JpbmRdIGFuZCBbbWFwXSwgYW5kLCBvZiB0aGVzZVxuICAgICB0d28sIFtiaW5kXSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBTaW5jZSBbYmluZF0gaXMgdGhlIG1vc3QgcmVsZXZhbnRcbiAgICAgc3BlY2lmaWNhbGx5IHRvIGNvbmN1cnJlbmN5LCBhbmQgaXMgYWxzbyB0aGUgbW9zdCBmYW1pbGlhciBmdW5jdGlvbiBpbiBMd3QsXG4gICAgIGl0cyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYSBraW5kIG9mIFwibW9kZWxcIiBmb3IgdGhlIHJlc3QuIEl0IGlzIHRoZSBtb3N0XG4gICAgIGNvbW1lbnRlZCwgYW5kIGFsbCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZvbGxvdyBhIHNpbWlsYXIgcGF0dGVybiB0byBbYmluZF0uXG5cbiAgICAgRm91ciBvZiB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaGF2ZSBbYmFja3RyYWNlXypdIHZlcnNpb25zLCB3aGljaCBhcmUgbm90XG4gICAgIHRydWx5IHB1YmxpYywgYW5kIGV4aXN0IHRvIHN1cHBvcnQgdGhlIFBQWC4gW2JhY2t0cmFjZV9tYXBdIGRvZXMgbm90IGV4aXN0XG4gICAgIGJlY2F1c2UgdGhlIFBQWCBkb2VzIG5vdCBuZWVkIGl0LlxuXG4gICAgIFRoZSByZW1haW5pbmcgZm91ciBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGF0dGFjaCBcImxvd2VyLWxldmVsLWlzaFwiXG4gICAgIG5vbi1wcm9taXNlLXByb2R1Y2luZyBjYWxsYmFja3MgdG8gcHJvbWlzZXM6IHRoZXNlIGFyZSB0aGUgW29uXypdXG4gICAgIGZ1bmN0aW9ucy4gT2YgdGhlc2UsIFtvbl9hbnldIGlzIHRoZSBtb3N0IGdlbmVyYWwuIElmIEx3dCBkaWQgbm90IGNvbmZsYXRlXG4gICAgIGNvbmN1cnJlbmN5IHdpdGggZXJyb3IgaGFuZGxpbmcsIHRoZXJlIHdvdWxkIG9ubHkgYmUgb25lOiBbb25fc3VjY2Vzc10uICopXG5cblxuXG4gICgqIE1ha2VzIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBpbnRvIGEgcHJveHkgb2YgW35vdXRlcl9wcm9taXNlXS4gQWZ0ZXJcbiAgICAgW21ha2VfaW50b19wcm94eV0sIHRoZXNlIHR3byBwcm9taXNlIHJlZmVyZW5jZXMgXCJiZWhhdmUgaWRlbnRpY2FsbHkuXCJcblxuICAgICBOb3RlIHRoYXQgdGhpcyBpcyBub3Qgc3ltbWV0cmljOiBbdXNlcl9wcm92aWRlZF9wcm9taXNlXSBhbHdheXMgYmVjb21lcyB0aGVcbiAgICAgcHJveHkuIFttYWtlX2ludG9fcHJveHldIGlzIGNhbGxlZCBvbmx5IGJ5IFtiaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaW5cbiAgICAgdGhpcyBtb2R1bGUuIFRoaXMgbWVhbnMgdGhhdDpcblxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSBhIHByb3h5IGlzIGJ5IGJlaW5nIHJldHVybmVkIGZyb21cbiAgICAgICB0aGUgY2FsbGJhY2sgZ2l2ZW4gYnkgdGhlIHVzZXIgdG8gW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24sIGFuZFxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSB1bmRlcmx5aW5nIGZvciBhIHByb21pc2Ugb3RoZXIgdGhhblxuICAgICAgIGl0c2VsZiBpcyB0byBiZSB0aGUgb3V0ZXIgcHJvbWlzZSBvcmlnaW5hbGx5IHJldHVybmVkIHRvIHRoZSB1c2VyIGZyb21cbiAgICAgICBbYmluZF0sIG9yIGEgc2ltaWxhciBmdW5jdGlvbi5cblxuICAgICBUaGVzZSB0d28gZmFjdHMgYXJlIGltcG9ydGFudCBmb3IgcmVhc29uaW5nIGFib3V0IGhvdyBhbmQgd2hpY2ggcHJvbWlzZXNcbiAgICAgY2FuIGJlY29tZSBwcm94aWVzLCB1bmRlcmx5aW5nLCBldGMuOyBpbiBwYXJ0aWN1bGFyLCBpdCBpcyB1c2VkIGluIHRoZVxuICAgICBhcmd1bWVudCBpbiBbbWF5X25vd19iZV9wcm94eV0gZm9yIGNvcnJlY3QgcHJlZGljdGlvbnMgYWJvdXQgc3RhdGUgY2hhbmdlcy5cblxuICAgICBbfm91dGVyX3Byb21pc2VdIGlzIGFsd2F5cyBhIHBlbmRpbmcgcHJvbWlzZSB3aGVuIFttYWtlX2ludG9fcHJveHldIGlzXG4gICAgIGNhbGxlZDsgZm9yIHRoZSBleHBsYW5hdGlvbiwgc2VlIFttYXlfbm93X2JlX3Byb3h5XSAodGhvdWdoIHRoZSBjYWxsZXIgb2ZcbiAgICAgW21ha2VfaW50b19wcm94eV0gYWx3YXlzIGNhbGxzIFt1bmRlcmx5aW5nXSBmaXJzdCB0byBwYXNzIHRoZSB1bmRlcmx5aW5nXG4gICAgIHBlbmRpbmcgcHJvbWlzZSB0byBbbWFrZV9pbnRvX3Byb3h5XSkuXG5cbiAgICAgVGhlIHJlYXNvbnMgcHJveHlpbmcgaXMgdXNlZCwgaW5zdGVhZCBvZiBhZGRpbmcgYSBjYWxsYmFjayB0b1xuICAgICBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gdG8gcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdIHdoZW4gdGhlIGZvcm1lclxuICAgICBiZWNvbWVzIHJlc29sdmVkIHByb2JhYmx5IGFyZTpcblxuICAgICAtIFByb21pc2VzIGhhdmUgbW9yZSBiZWhhdmlvcnMgdGhhbiByZXNvbHV0aW9uLiBPbmUgd291bGQgaGF2ZSB0byBhZGQgYVxuICAgICAgIGNhbmNlbGxhdGlvbiBoYW5kbGVyIHRvIFt+b3V0ZXJfcHJvbWlzZV0gdG8gcHJvcGFnYXRlIHRoZSBjYW5jZWxsYXRpb25cbiAgICAgICBiYWNrIHRvIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSwgZm9yIGV4YW1wbGUuIEl0IG1heSBiZSBlYXNpZXIgdG8ganVzdFxuICAgICAgIHRoaW5rIG9mIHRoZW0gYXMgdGhlIHNhbWUgcHJvbWlzZS5cbiAgICAgLSBJZiB1c2luZyBjYWxsYmFja3MsIHJlc29sdmluZyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd291bGQgbm90XG4gICAgICAgaW1tZWRpYXRlbHkgcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdLiBBbm90aGVyIGNhbGxiYWNrIGFkZGVkIHRvXG4gICAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIG1pZ2h0IHNlZSBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gcmVzb2x2ZWQsXG4gICAgICAgYnV0IFt+b3V0ZXJfcHJvbWlzZV0gc3RpbGwgcGVuZGluZywgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciBpbiB3aGljaFxuICAgICAgIGNhbGxiYWNrcyBhcmUgcnVuLiAqKVxuICBsZXQgbWFrZV9pbnRvX3Byb3h5XG4gICAgICAodHlwZSBjKVxuICAgICAgfihvdXRlcl9wcm9taXNlIDogKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlKVxuICAgICAgfih1c2VyX3Byb3ZpZGVkX3Byb21pc2UgOiAoJ2EsIF8sIGMpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCB1bmRlcmx5aW5nLCBjKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICgqIFVzaW5nIFtwJ10gYXMgaXQncyB0aGUgbmFtZSB1c2VkIGluc2lkZSBbYmluZF0sIGV0Yy4sIGZvciBwcm9taXNlcyB3aXRoXG4gICAgICAgdGhpcyByb2xlIC0tIFtwJ10gaXMgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVzZXIncyBmdW5jdGlvbi4gKilcbiAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHVzZXJfcHJvdmlkZWRfcHJvbWlzZSBpblxuXG4gICAgaWYgaWRlbnRpY2FsIHAnIG91dGVyX3Byb21pc2UgdGhlblxuICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJ1xuICAgICAgKCogV2UgcmVhbGx5IHdhbnQgdG8gcmV0dXJuIFtTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG91dGVyX3Byb21pc2VdLCBidXRcbiAgICAgICAgIHRoZSByZWZlcmVuY2UgdGhyb3VnaCBbcCddIGhhcyB0aGUgcmlnaHQgdHlwZS4gKilcblxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHAnLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2Ugb3V0ZXJfcHJvbWlzZSBwJy5zdGF0ZVxuXG4gICAgICB8IFBlbmRpbmcgcCdfY2FsbGJhY2tzIC0+XG4gICAgICAgIGxldCBQZW5kaW5nIG91dGVyX2NhbGxiYWNrcyA9IG91dGVyX3Byb21pc2Uuc3RhdGUgaW5cblxuICAgICAgICBtZXJnZV9jYWxsYmFja3MgfmZyb206cCdfY2FsbGJhY2tzIH5pbnRvOm91dGVyX2NhbGxiYWNrcztcbiAgICAgICAgb3V0ZXJfY2FsbGJhY2tzLmhvd190b19jYW5jZWwgPC0gcCdfY2FsbGJhY2tzLmhvd190b19jYW5jZWw7XG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAnIChQcm94eSBvdXRlcl9wcm9taXNlKSBpblxuICAgICAgICBpZ25vcmUgcCc7XG5cbiAgICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXG4gICAgICAgICgqIFRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFsbHkgY2hhbmdlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gd3JhcFxuICAgICAgICAgICBbb3V0ZXJfcHJvbWlzZV0gZm9yIHR5cGUgY2hlY2tpbmcuICopXG5cbiAgICAgICAgKCogVGhlIHN0YXRlIG9mIFtwJ10gbWF5IGluc3RlYWQgaGF2ZSBjaGFuZ2VkIC0tIGl0IG1heSBoYXZlIGJlY29tZSBhXG4gICAgICAgICAgIHByb3h5LiBIb3dldmVyLCBjYWxsZXJzIG9mIFttYWtlX2ludG9fcHJveHldIGRvbid0IGtub3cgaWZcbiAgICAgICAgICAgW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd2FzIGEgcHJveHkgb3Igbm90ICh0aGF0J3Mgd2h5IHdlIGNhbGxcbiAgICAgICAgICAgdW5kZXJseWluZyBvbiBpdCBhdCB0aGUgdG9wIG9mIHRoaXMgZnVuY3Rpb24sIHRvIGdldCBbcCddKS4gV2UgY2FuXG4gICAgICAgICAgIHRoZXJlZm9yZSB0YWtlIGEgZGFuZ2Vyb3VzIHNob3J0Y3V0IGFuZCBub3QgYm90aGVyIHJldHVybmluZyBhIG5ld1xuICAgICAgICAgICByZWZlcmVuY2UgdG8gW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gZm9yIHNoYWRvd2luZy4gKilcblxuXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGEgbG90IG9mIHRoZSBjb2RlIGJlbG93IGNhbiBwcm9iYWJseSBiZSBkZWR1cGxpY2F0ZWQgaW5cbiAgICAgc29tZSB3YXksIGVzcGVjaWFsbHkgaWYgYXNzdW1pbmcgRmxhbWJkYS4gKilcblxuICBsZXQgYmluZCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgICgqIEluIGNhc2UgW0x3dC5iaW5kXSBuZWVkcyB0byBkZWZlciB0aGUgY2FsbCB0byBbZl0sIHRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAgIGNhbGxlZCB0byBjcmVhdGU6XG5cbiAgICAgICAxLiBUaGUgcHJvbWlzZSwgW3AnJ10sIHRoYXQgbXVzdCBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGltbWVkaWF0ZWx5LlxuICAgICAgIDIuIFRoZSBjYWxsYmFjayB0aGF0IHJlc29sdmVzIFtwJyddLlxuXG4gICAgICAgW0x3dC5iaW5kXSBkZWZlcnMgdGhlIGNhbGwgdG8gW2ZdIGluIHR3byBjaXJjdW1zdGFuY2VzOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UgW3BdIGlzIHBlbmRpbmcuXG4gICAgICAgMi4gVGhlIHByb21pc2UgW3BdIGlzIGZ1bGZpbGxlZCwgYnV0IHRoZSBjdXJyZW50IGNhbGxiYWNrIGNhbGwgbmVzdGluZ1xuICAgICAgICAgIGRlcHRoIGlzIHN1Y2ggdGhhdCB0aGUgY2FsbCB0byBbZl0gbXVzdCBnbyBpbnRvIHRoZSBjYWxsYmFjayBxdWV1ZSwgaW5cbiAgICAgICAgICBvcmRlciB0byBhdm9pZCBzdGFjayBvdmVyZmxvdy5cblxuICAgICAgTWVjaGFuaXNtICgyKSBpcyBjdXJyZW50bHkgZGlzYWJsZWQuIEl0IG1heSBiZSB1c2VkIGluIGFuIGFsdGVybmF0aXZlIEx3dFxuICAgICAgQVBJLlxuXG4gICAgICBGdW5jdGlvbnMgb3RoZXIgdGhhbiBbTHd0LmJpbmRdIGhhdmUgYW5hbG9nb3VzIGRlZmVycmFsIGJlaGF2aW9yLiAqKVxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cbiAgICAgICgqIFRoZSByZXN1bHQgcHJvbWlzZSBpcyBhIGZyZXNoIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICAgICAgSW5pdGlhbGx5LCB0cnlpbmcgdG8gY2FuY2VsIHRoaXMgZnJlc2ggcGVuZGluZyBwcm9taXNlIFtwJyddIHdpbGxcbiAgICAgICAgIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgdG8gW3BdIChiYWNrd2FyZHMgdGhyb3VnaCB0aGVcbiAgICAgICAgIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCkuIElmL3doZW4gW3BdIGlzIGZ1bGZpbGxlZCwgTHd0IHdpbGwgY2FsbCB0aGVcbiAgICAgICAgIHVzZXIncyBjYWxsYmFjayBbZl0gYmVsb3csIHdoaWNoIHdpbGwgcHJvdmlkZSBhIG5ldyBwcm9taXNlIFtwJ10sIGFuZFxuICAgICAgICAgW3AnXSB3aWxsIGJlY29tZSBhIHByb3h5IG9mIFtwJyddLiBBdCB0aGF0IHBvaW50LCB0cnlpbmcgdG8gY2FuY2VsXG4gICAgICAgICBbcCcnXSB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gdHJ5aW5nIHRvIGNhbmNlbCBbcCddLCBzbyB0aGUgYmVoYXZpb3Igd2lsbFxuICAgICAgICAgZGVwZW5kIG9uIGhvdyB0aGUgdXNlciBvYnRhaW5lZCBbcCddLiAqKVxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdiB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cbiAgICAgICAgICAoKiBSdW4gdGhlIHVzZXIncyBmdW5jdGlvbiBbZl0uICopXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG4gICAgICAgICAgKCogW3AnJ10gd2FzIGFuIHVuZGVybHlpbmcgcHJvbWlzZSB3aGVuIGl0IHdhcyBjcmVhdGVkIGFib3ZlLCBidXQgaXRcbiAgICAgICAgICAgICBtYXkgaGF2ZSBiZWNvbWUgYSBwcm94eSBieSB0aGUgdGltZSB0aGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQuXG4gICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgZWl0aGVyIGFuIHVuZGVybHlpbmcgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgICAgICAgICAgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGVyZWZvcmUsIFttYXlfbm93X2JlX3Byb3h5XSBwcm9kdWNlc1xuICAgICAgICAgICAgIGEgcmVmZXJlbmNlIHdpdGggdGhlIHJpZ2h0IHR5cGUgdmFyaWFibGVzLiBXZSBpbW1lZGlhdGVseSBnZXRcbiAgICAgICAgICAgICBbcCcnXSdzIGN1cnJlbnQgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgICAgICAoKiBNYWtlIHRoZSBvdXRlciBwcm9taXNlIFtwJyddIGJlaGF2aW9yYWxseSBpZGVudGljYWwgdG8gdGhlIHByb21pc2VcbiAgICAgICAgICAgICBbcCddIHJldHVybmVkIGJ5IFtmXSBieSBtYWtpbmcgW3AnXSBpbnRvIGEgcHJveHkgb2YgW3AnJ10uICopXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBiYWNrdHJhY2VfYmluZCBhZGRfbG9jIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIChSZWplY3RlZCAoYWRkX2xvYyBleG4pKSBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKX1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgbWFwIGYgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcnX3Jlc3VsdCA9XG4gICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpIHdpdGggZXhuXG4gICAgICAgICAgICB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBSZWplY3RlZCBleG5cbiAgICAgICAgICBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcCcnX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2VcbiAgICAgICAgICAgIHtzdGF0ZSA9XG4gICAgICAgICAgICAgIHRyeSBGdWxmaWxsZWQgKGYgdilcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhufSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBjYXRjaCBmIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2NhdGNoIGFkZF9sb2MgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgdHJ5X2JpbmQgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYnIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgZmluYWxpemUgZiBmJyA9XG4gICAgdHJ5X2JpbmQgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIGUpKVxuXG4gIGxldCBiYWNrdHJhY2VfZmluYWxpemUgYWRkX2xvYyBmIGYnID1cbiAgICBiYWNrdHJhY2VfdHJ5X2JpbmQgYWRkX2xvYyBmXG4gICAgICAoZnVuIHggLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gcmV0dXJuIHgpKVxuICAgICAgKGZ1biBlIC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IGZhaWwgKGFkZF9sb2MgZSkpKVxuXG5cblxuICBsZXQgb25fY2FuY2VsIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICgoKSwgKGZ1biBfIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpLCBGdWxmaWxsZWQgKCkpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT5cbiAgICAgIGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGZcblxuXG5cbiAgbGV0IG9uX3N1Y2Nlc3MgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdlxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2ZhaWx1cmUgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgb25fdGVybWluYXRpb24gcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biBfcmVzdWx0IC0+XG4gICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2FueSBwIGYgZyA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGcgZXhuXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuZW5kXG5pbmNsdWRlIFNlcXVlbnRpYWxfY29tcG9zaXRpb25cblxuXG4oKiBUaGlzIGJlbG9uZ3Mgd2l0aCB0aGUgW3Byb3RlY3RlZF0gYW5kIHN1Y2gsIGJ1dCBpdCBkZXBlbmRzIG9uIHByaW1pdGl2ZXMgZnJvbVxuICAgW1NlcXVlbnRpYWxfY29tcG9zaXRpb25dLiAqKVxubGV0IHdyYXBfaW5fY2FuY2VsYWJsZSBwID1cbiBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuIGxldCBwX3VuZGVybHlpbmcgPSB1bmRlcmx5aW5nIHBfaW50ZXJuYWwgaW5cbiBtYXRjaCBwX3VuZGVybHlpbmcuc3RhdGUgd2l0aFxuIHwgRnVsZmlsbGVkIF8gLT4gcFxuIHwgUmVqZWN0ZWQgXyAtPiBwXG4gfCBQZW5kaW5nIF8gLT5cbiAgIGxldCBwJywgciA9IHRhc2sgKCkgaW5cbiAgIG9uX2NhbmNlbCBwJyAoZnVuICgpIC0+IGNhbmNlbCBwKTtcbiAgIG9uX2FueSBwICh3YWtldXAgcikgKHdha2V1cF9leG4gcik7XG4gICBwJ1xuXG5cbm1vZHVsZSBDb25jdXJyZW50X2NvbXBvc2l0aW9uIDpcbnNpZ1xuICB2YWwgZG9udF93YWl0IDogKHVuaXQgLT4gXyB0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFzeW5jIDogKHVuaXQgLT4gXyB0KSAtPiB1bml0XG4gIHZhbCBpZ25vcmVfcmVzdWx0IDogXyB0IC0+IHVuaXRcblxuICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgam9pbiA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuICB2YWwgYWxsIDogKCdhIHQpIGxpc3QgLT4gKCdhIGxpc3QpIHRcblxuICB2YWwgY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIHBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuXG4gIHZhbCBuY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgbnBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgdmFsIG5jaG9vc2Vfc3BsaXQgOiAnYSB0IGxpc3QgLT4gKCdhIGxpc3QgKiAnYSB0IGxpc3QpIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBkb250X3dhaXQgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgaCBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGggZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBhc3luYyBmID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgaWdub3JlX3Jlc3VsdCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJlcmFpc2UgZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG5cblxuICBsZXQgam9pbiBwcyA9XG4gICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgIGxldCBudW1iZXJfcGVuZGluZ19pbl9wcyA9IHJlZiAwIGluXG4gICAgbGV0IGpvaW5fcmVzdWx0ID0gcmVmIChGdWxmaWxsZWQgKCkpIGluXG5cbiAgICAoKiBDYWxsYmFjayBhdHRhY2hlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSB0aGF0IGlzIHN0aWxsIHBlbmRpbmcgYXQgdGhlXG4gICAgICAgdGltZSBbam9pbl0gaXMgY2FsbGVkLiAqKVxuICAgIGxldCBjYWxsYmFjayBuZXdfcmVzdWx0ID1cbiAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG5cbiAgICAgIGJlZ2luIG1hdGNoIG5ld19yZXN1bHQgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKCogRm9yIHRoZSBmaXJzdCBwcm9taXNlIGluIFtwc10gdG8gYmUgcmVqZWN0ZWQsIHNldCB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgW2pvaW5dIHRvIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uLi4gKilcbiAgICAgICAgbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gam9pbl9yZXN1bHQgOj0gbmV3X3Jlc3VsdFxuICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgIGVuZDtcblxuICAgICAgKCogSW4gYWxsIGNhc2VzLCBkZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwcm9taXNlcyBzdGlsbCBwZW5kaW5nLCBhbmRcbiAgICAgICAgIHJlc29sdmUgdGhlIFtqb2luXSBvbmNlIGFsbCBwcm9taXNlcyByZXNvbHZlLiAqKVxuICAgICAgbnVtYmVyX3BlbmRpbmdfaW5fcHMgOj0gIW51bWJlcl9wZW5kaW5nX2luX3BzIC0gMTtcbiAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgKHVuZGVybHlpbmcgcCcpICFqb2luX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGVuZFxuICAgIGluXG5cbiAgICAoKiBBdHRhY2ggdGhlIGFib3ZlIGNhbGxiYWNrLiBTaW11bHRhbmVvdXNseSBjb3VudCBob3cgbWFueSBwZW5kaW5nIHByb21pc2VzXG4gICAgICAgdGhlcmUgYXJlIGluIFtwc10gKGluaXRpYWxseSkuIElmIHRoYXQgbnVtYmVyIGlzIHplcm8sIHRoZSBbam9pbl0gbXVzdFxuICAgICAgIHJlc29sdmUgaW1tZWRpYXRlbHkuICopXG4gICAgbGV0IHJlYyBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlblxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9ICFqb2luX3Jlc3VsdH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyArIDE7XG4gICAgICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgICgqIEFzIGluIHRoZSBjYWxsYmFjayBhYm92ZSwgYnV0IGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluXG4gICAgICAgICAgICAgW3BzXTogcmVqZWN0IHRoZSBbam9pbl0gd2l0aCB0aGUgc2FtZSBleGNlcHRpb24gYXMgaW4gdGhlIGZpcnN0XG4gICAgICAgICAgICAgcmVqZWN0ZWQgcHJvbWlzZSBmb3VuZC4gW2pvaW5dIHN0aWxsIHdhaXRzIGZvciBhbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgICAgICAgIGJlZm9yZSBhY3R1YWxseSByZXNvbHZpbmcsIHRob3VnaC4gKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCAham9pbl9yZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IHBfcmVzdWx0O1xuICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcbiAgICBpblxuXG4gICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAoKiB0aGlzIGlzIDMgd29yZHMsIHNtYWxsZXIgdGhhbiB0aGUgMiB0aW1lcyAyIHdvcmRzIGEgcGFpciBvZiByZWZlcmVuY2VzXG4gICAgIHdvdWxkIHRha2UuICopXG4gIHR5cGUgKCdhLCdiKSBwYWlyID0ge1xuICAgIG11dGFibGUgeDE6ICdhIG9wdGlvbjtcbiAgICBtdXRhYmxlIHgyOiAnYiBvcHRpb247XG4gIH1cblxuICBsZXQgYm90aCBwMSBwMiA9XG4gICAgbGV0IHBhaXIgPSB7eDEgPSBOb25lOyB4MiA9IE5vbmV9IGluXG4gICAgbGV0IHAxJyA9IGJpbmQgcDEgKGZ1biB2IC0+IHBhaXIueDEgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBsZXQgcDInID0gYmluZCBwMiAoZnVuIHYgLT4gcGFpci54MiA8LSBTb21lIHY7IHJldHVybl91bml0KSBpblxuICAgIGpvaW4gW3AxJzsgcDInXSB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggcGFpci54MSwgcGFpci54MiB3aXRoXG4gICAgICB8IFNvbWUgdjEsIFNvbWUgdjIgLT4gdjEsIHYyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBhbGwgcHMgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+IHJldHVybl9uaWxcbiAgICB8IFt4XSAtPiBtYXAgKGZ1biB5IC0+IFt5XSkgeFxuICAgIHwgW3g7IHldIC0+IG1hcCAoZnVuICh4LCB5KSAtPiBbeDsgeV0pIChib3RoIHggeSlcbiAgICB8IF8gLT5cbiAgICAgIGxldCB2cyA9IEFycmF5Lm1ha2UgKExpc3QubGVuZ3RoIHBzKSBOb25lIGluXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXBpIChmdW4gaW5kZXggcCAtPlxuICAgICAgICBiaW5kIHAgKGZ1biB2IC0+IHZzLihpbmRleCkgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkpXG4gICAgICB8PiBqb2luXG4gICAgICB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCByZWMgdG9fbGlzdF91bm9wdCBpIGFjYyA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHZzIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHRvX2xpc3RfdW5vcHQgKGkgLSAxKSAoeDo6YWNjKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdG9fbGlzdF91bm9wdCAoQXJyYXkubGVuZ3RoIHZzIC0gMSkgW10pXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHRoZSBuZXh0IGZldyBmdW5jdGlvbnMgYXJlIGhlbHBlcnMgZm9yIFtjaG9vc2VdIGFuZFxuICAgICBbcGlja10uIFBlcmhhcHMgdGhleSBzaG91bGQgYmUgZmFjdG9yZWQgaW50byBzb21lIGtpbmQgb2YgZ2VuZXJpY1xuICAgICBbY2hvb3NlXS9bcGlja10gaW1wbGVtZW50YXRpb24sIHdoaWNoIG1heSBhY3R1YWxseSBiZSBvcHRpbWFsIGFueXdheSB3aXRoXG4gICAgIEZsYW1iZGEuICopXG5cbiAgbGV0IGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIChwcyA6ICdhIHQgbGlzdCkgPVxuICAgIGxldCByZWMgY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwcyA9XG4gICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgIHwgW10gLT4gRXJyb3IgKHRvdGFsLCByZWplY3RlZClcbiAgICAgICB8IHAgOjogcHMgLT5cbiAgICAgICAgICAgIGxldCBJbnRlcm5hbCBxID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgICAgICBtYXRjaCAodW5kZXJseWluZyBxKS5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkICh0b3RhbCArIDEpIChwIDo6IHJlamVjdGVkKSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwc1xuICAgIGluXG4gICAgbGV0IHJlYyBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IE9rIHRvdGFsXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9mdWxmaWxsZWQgKHRvdGFsICsgMSkgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIDEgW3BdIHBzXG4gICAgICAgICAgICB8IFBlbmRpbmcgXyAtPiBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHNcbiAgICBpblxuICAgIGNvdW50X2Z1bGZpbGxlZCAwIHBzXG5cbiAgKCogRXZhbHVhdGVzIHRvIHRoZSBbbl10aCBwcm9taXNlIGluIFtwc10sIGFtb25nIG9ubHkgdGhvc2UgcHJvbWlzZXMgaW4gW3BzXVxuICAgICB0aGF0IGFyZSByZXNvbHZlZC4gVGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgYXRcbiAgICAgbGVhc3QgW25dIHJlc29sdmVkIHByb21pc2VzIGluIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkIChwcyA6ICdhIHQgbGlzdCkgKG4gOiBpbnQpIDogJ2EgdCA9XG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwJykuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgbnRoX3Jlc29sdmVkIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcblxuICAoKiBMaWtlIFtudGhfcmVzb2x2ZWRdLCBidXQgY2FuY2VscyBhbGwgcGVuZGluZyBwcm9taXNlcyBmb3VuZCB3aGlsZVxuICAgICB0cmF2ZXJzaW5nIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIGNhbmNlbCBwO1xuICAgICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcblxuICAoKiBUaGUgUFJORyBzdGF0ZSBpcyBpbml0aWFsaXplZCB3aXRoIGEgY29uc3RhbnQgdG8gbWFrZSBub24tSU8tYmFzZWQgcHJvZ3JhbXNcbiAgICAgZGV0ZXJtaW5pc3RpYy4gKilcbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGlzIHRoaXMgbmVjZXNzYXJ5PyAqKVxuICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlIFt8fF0pXG5cbiAgbGV0IGNob29zZSBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuICAgIHwgRXJyb3IgKG4sIHBzKSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgbGV0IHBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbWF0Y2ggY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4gcHMgd2l0aFxuICAgIHwgT2sgMCAtPlxuICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcFxuICAgICAgaW5cbiAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IE9rIDEgLT5cbiAgICAgIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzXG4gICAgICAgIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBxcykgLT5cbiAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICBudGhfcmVzb2x2ZWQgcXMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuXG5cbiAgKCogSWYgW25jaG9vc2UgcHNdIG9yIFtucGljayBwc10gZm91bmQgYWxsIHByb21pc2VzIGluIFtwc10gcGVuZGluZywgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdIGV2ZW50dWFsbHkgY2FsbHMgdGhpcyBmdW5jdGlvbi4gVGhlXG4gICAgIGZ1bmN0aW9uIGNvbGxlY3RzIHByb21pc2VzIGluIFtwc10gdGhhdCBoYXZlIGJlY29tZSBmdWxmaWxsZWQsIG9yIGZpbmRzIG9uZVxuICAgICBwcm9taXNlIGluIFtwc10gdGhhdCBoYXMgYmVlbiByZWplY3RlZC4gSXQgdGhlbiByZXR1cm5zIHRoZSBkZXNpcmVkIHN0YXRlXG4gICAgIG9mIHRoZSBmaW5hbCBwcm9taXNlOiBlaXRoZXIgdGhlIGxpc3Qgb2YgcmVzdWx0cyBjb2xsZWN0ZWQsIG9yIHRoZVxuICAgICBleGNlcHRpb24gZm91bmQuICopXG4gIGxldCByZWMgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZ1xuICAgICAgKHJlc3VsdHMgOiAnYSBsaXN0KVxuICAgICAgKHBzIDogJ2EgdCBsaXN0KSA6XG4gICAgICAgICgnYSBsaXN0IHJlc29sdmVkX3N0YXRlKSA9XG5cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgRnVsZmlsbGVkIChMaXN0LnJldiByZXN1bHRzKVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nICh2OjpyZXN1bHRzKSBwc1xuXG4gICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgIHJlc3VsdFxuXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIHJlc3VsdHMgcHNcblxuICBsZXQgbmNob29zZSBwcyA9XG4gICAgKCogSWYgYXQgbGVhc3Qgb25lIHByb21pc2UgaW4gW3BzXSBpcyBmb3VuZCBmdWxmaWxsZWQsIHRoaXMgZnVuY3Rpb24gaXNcbiAgICAgICBjYWxsZWQgdG8gZmluZCBhbGwgc3VjaCBwcm9taXNlcy4gKilcbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzXG4gICAgaW5cblxuICAgICgqIExvb2tzIGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluIFtwc10uIElmIG5vbmUgYXJlIGZ1bGZpbGxlZCBvclxuICAgICAgIHJlamVjdGVkLCBhZGRzIGEgY2FsbGJhY2sgdG8gYWxsIHByb21pc2VzIGluIFtwc10gKGFsbCBvZiB3aGljaCBhcmVcbiAgICAgICBwZW5kaW5nKS4gKilcbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwXG4gICAgICAgIGluXG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cbiAgKCogU2VlIFtuY2hvb3NlXS4gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIG9ubHkgaW4gaGF2aW5nIGFkZGl0aW9uYWwgY2FsbHMgdG9cbiAgICAgW2NhbmNlbF0uICopXG4gIGxldCBucGljayBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkx3dC5ucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcycgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkICh2OjphY2MpIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMnXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyBbXSBwcyBpblxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBbdl0gcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cblxuXG4gICgqIFNhbWUgZ2VuZXJhbCBwYXR0ZXJuIGFzIFtucGlja10gYW5kIFtuY2hvb3NlXS4gKilcbiAgbGV0IG5jaG9vc2Vfc3BsaXQgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QubmNob29zZV9zcGxpdCBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBmaW5pc2hcbiAgICAgICAgKHRvX3Jlc29sdmUgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgICAgKGZ1bGZpbGxlZCA6ICdhIGxpc3QpXG4gICAgICAgIChwZW5kaW5nIDogJ2EgdCBsaXN0KVxuICAgICAgICAocHMgOiAnYSB0IGxpc3QpXG4gICAgICAgICAgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWQgPVxuXG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlXG4gICAgICAgICAgKEZ1bGZpbGxlZCAoTGlzdC5yZXYgZnVsZmlsbGVkLCBMaXN0LnJldiBwZW5kaW5nKSlcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBmaW5pc2ggdG9fcmVzb2x2ZSAodjo6ZnVsZmlsbGVkKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlIHJlc3VsdFxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgZnVsZmlsbGVkIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIHBlbmRpbmcgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogc2hvdWxkIHRoZSBwZW5kaW5nIHByb21pc2UgbGlzdCBhbHNvIGJlXG4gICAgICAgICAgIHJldmVyc2VkPyBJdCBpcyByZXZlcnNlZCBpbiBmaW5pc2guICopXG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgcmVzdWx0cywgcGVuZGluZylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgKHY6OnJlc3VsdHMpIHBlbmRpbmcgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHJlc3VsdHMgKHA6OnBlbmRpbmcpIHBzXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcGVuZGluZ19hY2MgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gZmluaXNoIHAgW10gW10gcHMgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBbdl0gcGVuZGluZ19hY2MgcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIChwOjpwZW5kaW5nX2FjYykgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW10gcHMgaW5cbiAgICBwXG5lbmRcbmluY2x1ZGUgQ29uY3VycmVudF9jb21wb3NpdGlvblxuXG5cblxubW9kdWxlIE1pc2NlbGxhbmVvdXMgOlxuc2lnXG4gICgqIFByb21pc2Ugc3RhdGUgcXVlcnkgKilcbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBSZXR1cm4gb2YgJ2FcbiAgICB8IEZhaWwgb2YgZXhuXG4gICAgfCBTbGVlcFxuXG4gIHZhbCBzdGF0ZSA6ICdhIHQgLT4gJ2Egc3RhdGVcbiAgdmFsIGlzX3NsZWVwaW5nIDogJ2EgdCAtPiBib29sXG4gIHZhbCBkZWJ1Z19zdGF0ZV9pcyA6ICdhIHN0YXRlIC0+ICdhIHQgLT4gYm9vbCB0XG5cbiAgKCogRnVuY3Rpb24gbGlmdGVycyAqKVxuICB2YWwgYXBwbHkgOiAoJ2EgLT4gJ2IgdCkgLT4gJ2EgLT4gJ2IgdFxuXG4gIHZhbCB3cmFwIDpcbiAgICAodW5pdCAtPiAnYikgLT5cbiAgICAnYiB0XG4gIHZhbCB3cmFwMSA6XG4gICAgKCdhMSAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdiIHQpXG4gIHZhbCB3cmFwMiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IgdClcbiAgdmFsIHdyYXAzIDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiIHQpXG4gIHZhbCB3cmFwNCA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdiIHQpXG4gIHZhbCB3cmFwNSA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IgdClcbiAgdmFsIHdyYXA2IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiIHQpXG4gIHZhbCB3cmFwNyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdiIHQpXG5cbiAgKCogUGF1c2VkIHByb21pc2VzICopXG4gIHZhbCBwYXVzZSA6IHVuaXQgLT4gdW5pdCB0XG4gIHZhbCB3YWtldXBfcGF1c2VkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXVzZWRfY291bnQgOiB1bml0IC0+IGludFxuICB2YWwgcmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgOiAoaW50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFiYW5kb25fcGF1c2VkIDogdW5pdCAtPiB1bml0XG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIGZvciBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgcG9sbCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5lbmQgPVxuc3RydWN0XG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbiAgbGV0IHN0YXRlIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT4gUmV0dXJuIHZcbiAgICB8IFJlamVjdGVkIGV4biAtPiBGYWlsIGV4blxuICAgIHwgUGVuZGluZyBfIC0+IFNsZWVwXG5cbiAgbGV0IGRlYnVnX3N0YXRlX2lzIGV4cGVjdGVkX3N0YXRlIHAgPVxuICAgIHJldHVybiAoc3RhdGUgcCA9IGV4cGVjdGVkX3N0YXRlKVxuXG4gIGxldCBpc19zbGVlcGluZyBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgfCBQZW5kaW5nIF8gLT4gdHJ1ZVxuXG4gIGxldCBwb2xsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgZSAtPiByZXJhaXNlIGVcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFNvbWUgdlxuICAgIHwgUGVuZGluZyBfIC0+IE5vbmVcblxuXG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgdHJ5IGYgeCB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwIGYgPVxuICAgIHRyeSByZXR1cm4gKGYgKCkpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDEgZiB4MSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMiBmIHgxIHgyID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAzIGYgeDEgeDIgeDMgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDQgZiB4MSB4MiB4MyB4NCA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NClcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNSBmIHgxIHgyIHgzIHg0IHg1ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA2IGYgeDEgeDIgeDMgeDQgeDUgeDYgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDcgZiB4MSB4MiB4MyB4NCB4NSB4NiB4NyA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSB4NiB4NylcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG5cblxuICBsZXQgcGF1c2VfaG9vayA9IHJlZiBpZ25vcmVcblxuICBsZXQgcGF1c2VkID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKVxuICBsZXQgcGF1c2VkX2NvdW50ID0gcmVmIDBcblxuICBsZXQgcGF1c2UgKCkgPVxuICAgIGxldCBwID0gYWRkX3Rhc2tfciBwYXVzZWQgaW5cbiAgICBpbmNyIHBhdXNlZF9jb3VudDtcbiAgICAhcGF1c2VfaG9vayAhcGF1c2VkX2NvdW50O1xuICAgIHBcblxuICBsZXQgd2FrZXVwX3BhdXNlZCAoKSA9XG4gICAgaWYgTHd0X3NlcXVlbmNlLmlzX2VtcHR5IHBhdXNlZCB0aGVuXG4gICAgICBwYXVzZWRfY291bnQgOj0gMFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB0bXAgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIGluXG4gICAgICBMd3Rfc2VxdWVuY2UudHJhbnNmZXJfciBwYXVzZWQgdG1wO1xuICAgICAgcGF1c2VkX2NvdW50IDo9IDA7XG4gICAgICBMd3Rfc2VxdWVuY2UuaXRlcl9sIChmdW4gciAtPiB3YWtldXAgciAoKSkgdG1wXG4gICAgZW5kXG5cbiAgbGV0IHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIGYgPSBwYXVzZV9ob29rIDo9IGZcblxuICBsZXQgYWJhbmRvbl9wYXVzZWQgKCkgPVxuICAgIEx3dF9zZXF1ZW5jZS5jbGVhciBwYXVzZWQ7XG4gICAgcGF1c2VkX2NvdW50IDo9IDBcblxuICBsZXQgcGF1c2VkX2NvdW50ICgpID0gIXBhdXNlZF9jb3VudFxuZW5kXG5pbmNsdWRlIE1pc2NlbGxhbmVvdXNcblxubW9kdWxlIExldF9zeW50YXggPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID1cbiAgc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9XG4gICAgc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbmZpeCA9XG5zdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD08PCkgZiBwID0gYmluZCBwIGZcbiAgbGV0ICg+fD0pIHAgZiA9IG1hcCBmIHBcbiAgbGV0ICg9fDwpID0gbWFwXG4gIGxldCAoPCY+KSBwIHAnID0gam9pbiBbcDsgcCddXG4gIGxldCAoPD8+KSBwIHAnID0gY2hvb3NlIFtwOyBwJ11cblxuICBpbmNsdWRlIExldF9zeW50YXhcbmVuZFxuaW5jbHVkZSAoIEluZml4IDogbW9kdWxlIHR5cGUgb2YgSW5maXggd2l0aCBtb2R1bGUgTGV0X3N5bnRheCA6PSBMZXRfc3ludGF4LkxldF9zeW50YXggKVxuXG5tb2R1bGUgU3ludGF4ID1cbnN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBPZmZcblxudHlwZSBvbl9zd2l0Y2ggPSB7XG4gIG11dGFibGUgaG9va3MgOiAodW5pdCAtPiB1bml0IEx3dC50KSBsaXN0O1xufVxuXG50eXBlIHN0YXRlID1cbiAgfCBTdF9vbiBvZiBvbl9zd2l0Y2hcbiAgfCBTdF9vZmZcblxudHlwZSB0ID0geyBtdXRhYmxlIHN0YXRlIDogc3RhdGUgfVxuXG5sZXQgY3JlYXRlICgpID0geyBzdGF0ZSA9IFN0X29uIHsgaG9va3MgPSBbXSB9IH1cblxubGV0IGlzX29uIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24gXyAtPiB0cnVlXG4gIHwgU3Rfb2ZmIC0+IGZhbHNlXG5cbmxldCBjaGVjayA9IGZ1bmN0aW9uXG4gIHwgU29tZXsgc3RhdGUgPSBTdF9vZmYgfSAtPiByYWlzZSBPZmZcbiAgfCBTb21lIHtzdGF0ZSA9IFN0X29uIF99IHwgTm9uZSAtPiAoKVxuXG5sZXQgYWRkX2hvb2sgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzXG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb2ZmIH0gLT5cbiAgICByYWlzZSBPZmZcbiAgfCBOb25lIC0+XG4gICAgKClcblxubGV0IGFkZF9ob29rX29yX2V4ZWMgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgaG9vayAoKVxuICB8IE5vbmUgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHR1cm5fb2ZmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24geyBob29rcyA9IGhvb2tzIH0gLT5cbiAgICBzd2l0Y2guc3RhdGUgPC0gU3Rfb2ZmO1xuICAgIEx3dC5qb2luIChMaXN0Lm1hcCAoZnVuIGhvb2sgLT4gTHd0LmFwcGx5IGhvb2sgKCkpIGhvb2tzKVxuICB8IFN0X29mZiAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgd2l0aF9zd2l0Y2ggZm4gPVxuICBsZXQgc3dpdGNoID0gY3JlYXRlICgpIGluXG4gIEx3dC5maW5hbGl6ZVxuICAgIChmdW4gKCkgLT4gZm4gc3dpdGNoKVxuICAgIChmdW4gKCkgLT4gdHVybl9vZmYgc3dpdGNoKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5TeW50YXhcbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgKydhIG5vZGUgPSBOaWwgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZSBMd3QudFxuXG5sZXQgcmV0dXJuX25pbCA9IEx3dC5yZXR1cm4gTmlsXG5cbmxldCBlbXB0eSA6ICdhIHQgPSBmdW4gKCkgLT4gcmV0dXJuX25pbFxuXG5sZXQgcmV0dXJuICh4IDogJ2EpIDogJ2EgdCA9IGZ1biAoKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBlbXB0eSkpXG5cbmxldCByZXR1cm5fbHd0ICh4IDogJ2EgTHd0LnQpIDogJ2EgdCA9IGZ1biAoKSAtPlxuICAgbGV0KyB4ID0geCBpblxuICAgQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggdCAoKSA9IEx3dC5yZXR1cm4gKENvbnMgKHgsIHQpKVxuXG5sZXQgY29uc19sd3QgeCB0ICgpID1cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIHQpXG5cbigqIEEgbm90ZSBvbiByZWN1cnNpbmcgdGhyb3VnaCB0aGUgc2VxczpcbiAgIFdoZW4gdHJhdmVyc2luZyBhIHNlcSwgdGhlIGZpcnN0IHRpbWUgd2UgZXZhbHVhdGUgYSBzdXNwZW5kZWQgbm9kZSB3ZSBhcmVcbiAgIG9uIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBiaW5kICg+Pj0pLiBJbiB0aGF0IGNhc2UsIHdlIHVzZSBhcHBseSB0byBjYXB0dXJlXG4gICBleGNlcHRpb25zIGludG8gcHJvbWlzZSByZWplY3Rpb24uXG5cbiAgIFRoaXMgaXMgb25seSBuZWVkZWQgb24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBiZWNhdXNlIHdlIGFyZSB3aXRoaW4gYSBjYWxsYmFja1xuICAgcGFzc2VkIHRvIEx3dCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGEgYmluZCBhZnRlciB0aGF0LlxuXG4gICBUaHJvdWdob3V0IHRoaXMgZmlsZSB3ZSB1c2UgdGhlIHNhbWUgY29kZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhpczogd2VcbiAgIHNoYWRvdyB0aGUgcmVjdXJzaXZlIHRyYXZlcnNhbCBmdW5jdGlvbiB3aXRoIGFuIGlkZW50aWNhbC1idXQtZm9yLXRoZS1hcHBseVxuICAgbm9uLXJlY3Vyc2l2ZSBjb3B5LiAqKVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5sZXQgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIEx3dC5hcHBseSBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID58PSBmdW5jdGlvblxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcCBmIG5leHQpXG5sZXQgbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIG1hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCsgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwX3MgZiBuZXh0KVxubGV0IG1hcF9zIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyX21hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxubGV0IGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQqIHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXBfcyBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXBfcyBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXIgZiBuZXh0KSkgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5sZXQgZmlsdGVyIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZpbHRlcl9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcbmxldCBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KiBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXJfcyBmIG5leHQpKSBlbHNlIGZpbHRlcl9zIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGZsYXRfbWFwX2FwcCBmIChmIHgpIG5leHQgKClcblxuKCogdGhpcyBpcyBbYXBwZW5kIHNlcSAoZmxhdF9tYXAgZiB0YWlsKV0gKilcbmFuZCBmbGF0X21hcF9hcHAgZiBzZXEgdGFpbCAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gZmxhdF9tYXAgZiB0YWlsICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmxhdF9tYXBfYXBwIGYgbmV4dCB0YWlsKSlcblxubGV0IGZsYXRfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbmxldCBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBmb2xkX2xlZnRfcyBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqIGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9zIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqICgpID0gZiB4IGluXG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGxldCBhdXggc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCBpdGVyX3AgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBsZXQgYXV4IGFjYyBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBhdXggW10gc2VxXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHNlcSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3NlcS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgc2VxID1cbiAgICBiZWdpblxuICAgICAgaWYgYXZhaWxhYmxlID4gMCB0aGVuIChcbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlKVxuICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEx3dC5uY2hvb3NlX3NwbGl0IHJ1bm5pbmcgPj49IGZ1biAoY29tcGxldGUsIHJ1bm5pbmcpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSArIExpc3QubGVuZ3RoIGNvbXBsZXRlKVxuICAgICAgKVxuICAgIGVuZCA+Pj0gZnVuIChydW5uaW5nLCBhdmFpbGFibGUpIC0+XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBDb25zIChlbHQsIHNlcSkgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSkgc2VxXG4gIGluXG4gICgqIGJlY2F1c2UgdGhlIHJlY3Vyc2lvbiBpcyBtb3JlIGNvbXBsaWNhdGVkIGhlcmUsIHdlIGFwcGx5IHRoZSBzZXEgZGlyZWN0bHkgYXRcbiAgICAgdGhlIGNhbGwtc2l0ZSBpbnN0ZWFkICopXG4gIGxvb3AgW10gbWF4X2NvbmN1cnJlbmN5IChmdW4gKCkgLT4gTHd0LmFwcGx5IHNlcSAoKSlcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkIGYgdScpKVxuICB8IGV4Y2VwdGlvbiBleGMgd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhjIC0+IEx3dC5mYWlsIGV4Y1xuXG5sZXQgcmVjIHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gZiB1IGluXG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gcmV0dXJuX25pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCB1bmZvbGRfbHd0IGYgdScpKVxubGV0IHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gTHd0LmFwcGx5IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcblxubGV0IHJlYyBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBlbXB0eVxuICB8IGggOjogdCAtPiBjb25zIGggKG9mX2xpc3QgdClcblxubGV0IHJlYyB0b19saXN0IHNlcSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxubGV0IHRvX2xpc3Qgc2VxID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxuXG5sZXQgcmVjIG9mX3NlcSBzZXEgKCkgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgIEx3dC5yZXR1cm4gKENvbnMgKHgsIChvZl9zZXEgbmV4dCkpKVxuICB8IGV4Y2VwdGlvbiBleG4gd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IEx3dC5mYWlsIGV4blxuXG5sZXQgcmVjIG9mX3NlcV9sd3QgKHNlcTogJ2EgTHd0LnQgU2VxLnQpOiAnYSB0ID0gZnVuICgpIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgbGV0KyB4ID0geCBpblxuICAgICAgIGxldCBuZXh0ID0gb2Zfc2VxX2x3dCBuZXh0IGluXG4gICAgICAgQ29ucyAoeCwgbmV4dClcbmxldCBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG4gICAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQ2xvc2VkXG5leGNlcHRpb24gRnVsbFxuZXhjZXB0aW9uIEVtcHR5XG5cbigqIEEgbm9kZSBpbiBhIHF1ZXVlIG9mIHBlbmRpbmcgZGF0YS4gKilcbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbXV0YWJsZSBuZXh0IDogJ2Egbm9kZTtcbiAgKCogTmV4dCBub2RlIGluIHRoZSBxdWV1ZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgcG9pbnRzIHRvIGl0c2VsZi4gKilcbiAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAoKiBEYXRhIG9mIHRoaXMgbm9kZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgaXMgYWx3YXlzIFtOb25lXS4gKilcbn1cblxuKCogTm90ZTogYSBxdWV1ZSBmb3IgYW4gZXhoYXVzdGVkIHN0cmVhbSBpcyByZXByZXNlbnRlZCBieSBhIG5vZGVcbiAgIGNvbnRhaW5pbmcgW05vbmVdIGZvbGxvd2VkIGJ5IGEgbm9kZSB3aXRoIGl0c2VsZiBhcyBuZXh0IGFuZCBbTm9uZV1cbiAgIGFzIGRhdGEuICopXG5cbmxldCBuZXdfbm9kZSAoKSA9XG4gIGxldCByZWMgbm9kZSA9IHsgbmV4dCA9IG5vZGU7IGRhdGEgPSBOb25lIH0gaW5cbiAgbm9kZVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSB1c2luZyBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG50eXBlICdhIGZyb20gPSB7XG4gIGZyb21fY3JlYXRlIDogdW5pdCAtPiAnYSBvcHRpb24gTHd0LnQ7XG4gICgqIEZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIG5ldyBlbGVtZW50cy4gKilcbiAgbXV0YWJsZSBmcm9tX3RocmVhZCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCB3aGljaDpcblxuICAgICAtIHdhaXQgZm9yIHRoZSB0aHJlYWQgcmV0dXJuZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBbZnJvbV9uZXh0XSxcbiAgICAgLSBhZGQgdGhlIG5leHQgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZS5cblxuICAgICBJZiBpdCBpcyBhIHNsZWVwaW5nIHRocmVhZCwgdGhlbiBpdCBtdXN0IGJlIHVzZWQgaW5zdGVhZCBvZiBjcmVhdGluZyBhXG4gICAgIG5ldyBvbmUgd2l0aCBbZnJvbV9jcmVhdGVdLiAqKVxufVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSBmb3IgcHVzaCBzdHJlYW1zLiAqKVxudHlwZSBwdXNoID0ge1xuICBtdXRhYmxlIHB1c2hfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hfd2FpdGluZyA6IGJvb2w7XG4gICgqIElzIGEgdGhyZWFkIHdhaXRpbmcgb24gW3B1c2hfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaF9leHRlcm5hbCA6IE9iai50IFtAb2NhbWwud2FybmluZyBcIi02OVwiXTtcbiAgKCogUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNvdXJjZS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIGJvdW5kZWQtcHVzaCBzdHJlYW1zLiAqKVxudHlwZSAnYSBwdXNoX2JvdW5kZWQgPSB7XG4gIG11dGFibGUgcHVzaGJfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hiX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoYl9zaWduYWxdID8gKilcbiAgbXV0YWJsZSBwdXNoYl9zaXplIDogaW50O1xuICAoKiBTaXplIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9jb3VudCA6IGludDtcbiAgKCogQ3VycmVudCBsZW5ndGggb2YgdGhlIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3BlbmRpbmcgOiAnYSBvcHRpb247XG4gICgqIFRoZSBuZXh0IGVsZW1lbnQgdG8gcHVzaCBpZiBhIHRocmVhZCBibG9ja2VkIG9uIHB1c2guIFdlIHN0b3JlIGl0XG4gICAgIGhlcmUgdG8gYmUgc3VyZSBpdCB3aWxsIGJlIHRoZSBmaXJzdCBlbGVtZW50IHRvIGJlIGFkZGVkIHdoZW5cbiAgICAgc3BhY2UgYmVjb21lcyBhdmFpbGFibGUuICopXG4gIG11dGFibGUgcHVzaGJfcHVzaF93YWl0ZXIgOiB1bml0IEx3dC50O1xuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FrZW5lciA6IHVuaXQgTHd0LnU7XG4gICgqIFRocmVhZCBibG9ja2VkIG9uIHB1c2guICopXG4gIG11dGFibGUgcHVzaGJfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFNvdXJjZSBvZiBhIHN0cmVhbS4gKilcbnR5cGUgJ2Egc291cmNlID1cbiAgfCBGcm9tIG9mICdhIGZyb21cbiAgfCBGcm9tX2RpcmVjdCBvZiAodW5pdCAtPiAnYSBvcHRpb24pXG4gIHwgUHVzaCBvZiBwdXNoXG4gIHwgUHVzaF9ib3VuZGVkIG9mICdhIHB1c2hfYm91bmRlZFxuXG50eXBlICdhIHQgPSB7XG4gIHNvdXJjZSA6ICdhIHNvdXJjZTtcbiAgKCogVGhlIHNvdXJjZSBvZiB0aGUgc3RyZWFtLiAqKVxuICBjbG9zZSA6IHVuaXQgTHd0LnU7XG4gICgqIEEgd2FrZW5lciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIGNsb3NlZCA6IHVuaXQgTHd0LnQ7XG4gICgqIEEgd2FpdGVyIGZvciBhIHRocmVhZCB0aGF0IHNsZWVwcyB1bnRpbCB0aGUgc3RyZWFtIGlzIGNsb3NlZC4gKilcbiAgbXV0YWJsZSBub2RlIDogJ2Egbm9kZTtcbiAgKCogUG9pbnRlciB0byBmaXJzdCBwZW5kaW5nIGVsZW1lbnQsIG9yIHRvIFtsYXN0XSBpZiB0aGVyZSBpcyBub1xuICAgICBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGxhc3QgOiAnYSBub2RlIHJlZjtcbiAgKCogTm9kZSBtYXJraW5nIHRoZSBlbmQgb2YgdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudHMuICopXG59XG5cbmNsYXNzIHR5cGUgWydhXSBib3VuZGVkX3B1c2ggPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnRcbiAgbWV0aG9kIHJlc2l6ZSA6IGludCAtPiB1bml0XG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgY2xvc2UgOiB1bml0XG4gIG1ldGhvZCBjb3VudCA6IGludFxuICBtZXRob2QgYmxvY2tlZCA6IGJvb2xcbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2xcbiAgbWV0aG9kIHNldF9yZWZlcmVuY2UgOiAnYS4gJ2EgLT4gdW5pdFxuZW5kXG5cbigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gY2xvbmVzIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdFxuICAgcGVuZGluZyBlbGVtZW50LiAqKVxubGV0IGNsb25lIHMgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY2xvbmVcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAge1xuICAgIHNvdXJjZSA9IHMuc291cmNlO1xuICAgIGNsb3NlID0gcy5jbG9zZTtcbiAgICBjbG9zZWQgPSBzLmNsb3NlZDtcbiAgICBub2RlID0gcy5ub2RlO1xuICAgIGxhc3QgPSBzLmxhc3Q7XG4gIH1cblxubGV0IGZyb21fc291cmNlIHNvdXJjZSA9XG4gIGxldCBub2RlID0gbmV3X25vZGUgKCkgaW5cbiAgbGV0IGNsb3NlZCwgY2xvc2UgPSBMd3Qud2FpdCAoKSBpblxuICB7IHNvdXJjZSA7IGNsb3NlIDsgY2xvc2VkIDsgbm9kZSA7IGxhc3QgPSByZWYgbm9kZSB9XG5cbmxldCBmcm9tIGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbSB7IGZyb21fY3JlYXRlID0gZjsgZnJvbV90aHJlYWQgPSBMd3QucmV0dXJuX3VuaXQgfSlcblxubGV0IGZyb21fZGlyZWN0IGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbV9kaXJlY3QgZilcblxubGV0IGNsb3NlZCBzID0gcy5jbG9zZWRcblxubGV0IGlzX2Nsb3NlZCBzID1cbiAgbm90IChMd3QuaXNfc2xlZXBpbmcgKGNsb3NlZCBzKSlcblxubGV0IGVucXVldWUnIGUgbGFzdCA9XG4gIGxldCBub2RlID0gIWxhc3RcbiAgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgbm9kZS5kYXRhIDwtIGU7XG4gIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgbGFzdCA6PSBuZXdfbGFzdFxuXG5sZXQgZW5xdWV1ZSBlIHMgPVxuICBlbnF1ZXVlJyBlIHMubGFzdFxuXG5sZXQgY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpID1cbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgc291cmNlLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9XG4gICAgbGV0IHB1c2hfc2lnbmFsLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9IEx3dC53YWl0ICgpIGluXG4gICAgKHsgcHVzaF9zaWduYWw7XG4gICAgICAgcHVzaF93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaF9leHRlcm5hbCA9IE9iai5yZXByICgpIH0sXG4gICAgIHJlZiBwdXNoX3NpZ25hbF9yZXNvbHZlcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaCBzb3VyY2UpIGluXG4gICgqIFtwdXNoXSBzaG91bGQgbm90IGNsb3NlIG92ZXIgW3RdIHNvIHRoYXQgaXQgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW5cbiAgICogdGhlcmUgYXJlIHN0aWxsIHJlZmVyZW5jZXMgdG8gW3B1c2hdLiBVbnBhY2sgYWxsIHRoZSBjb21wb25lbnRzIG9mIFt0XVxuICAgKiB0aGF0IFtwdXNoXSBuZWVkcyBhbmQgcmVmZXJlbmNlIHRob3NlIGlkZW50aWZpZXJzIGluc3RlYWQuICopXG4gIGxldCBjbG9zZSA9IHQuY2xvc2UgYW5kIGNsb3NlZCA9IHQuY2xvc2VkIGFuZCBsYXN0ID0gdC5sYXN0IGluXG4gICgqIFRoZSBwdXNoIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0uICopXG4gIGxldCBwdXNoIHggPVxuICAgIGlmIG5vdCAoTHd0LmlzX3NsZWVwaW5nIGNsb3NlZCkgdGhlbiByYWlzZSBDbG9zZWQ7XG4gICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICBlbnF1ZXVlJyB4IGxhc3Q7XG4gICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgZWxlbWVudC4gKilcbiAgICBpZiBzb3VyY2UucHVzaF93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgIHNvdXJjZS5wdXNoX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgIGxldCBvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSAhcHVzaF9zaWduYWxfcmVzb2x2ZXIgaW5cbiAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgc291cmNlLnB1c2hfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICBwdXNoX3NpZ25hbF9yZXNvbHZlciA6PSBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXI7XG4gICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyICgpXG4gICAgZW5kO1xuICAgICgqIERvIHRoaXMgYXQgdGhlIGVuZCBpbiBjYXNlIG9uZSBvZiB0aGUgZnVuY3Rpb24gcmFpc2UgYW5cbiAgICAgICBleGNlcHRpb24uICopXG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIGNsb3NlICgpXG4gIGluXG4gICh0LCBwdXNoLCBmdW4geCAtPiBzb3VyY2UucHVzaF9leHRlcm5hbCA8LSBPYmoucmVwciB4KVxuXG5sZXQgcmV0dXJuIGEgPVxuICBsZXQgc3RyZWFtLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIHB1c2ggKFNvbWUgYSk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCByZXR1cm5fbHd0IGEgPVxuICBsZXQgc291cmNlLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIEx3dC5kb250X3dhaXRcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3QuYmluZCBhIChmdW4geCAtPlxuICAgICAgICBwdXNoIChTb21lIHgpO1xuICAgICAgICBwdXNoIE5vbmU7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG4gICAgKGZ1biBfZXhjIC0+IHB1c2ggTm9uZSk7XG4gIHNvdXJjZVxuXG5sZXQgb2Zfc2VxIHMgPVxuICBsZXQgcyA9IHJlZiBzIGluXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFzICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgIHwgU2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb21fZGlyZWN0IGdldFxuXG5sZXQgb2ZfbHd0X3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICAhcyAoKSA+fD0gZnVuY3Rpb25cbiAgICB8IEx3dF9zZXEuTmlsIC0+IE5vbmVcbiAgICB8IEx3dF9zZXEuQ29ucyAoZWx0LCBzJykgLT4gcyA6PSBzJzsgU29tZSBlbHRcbiAgaW5cbiAgZnJvbSBnZXRcblxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAoc291cmNlLCBwdXNoKVxuXG5sZXQgb2ZfaXRlciBpdGVyIGkgPVxuICBsZXQgc3RyZWFtLCBwdXNoID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgKGZ1biB4IC0+IHB1c2ggKFNvbWUgeCkpIGk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCBvZl9saXN0IGwgPVxuICBvZl9pdGVyIExpc3QuaXRlciBsXG5cbmxldCBvZl9hcnJheSBhID1cbiAgb2ZfaXRlciBBcnJheS5pdGVyIGFcblxubGV0IG9mX3N0cmluZyBzID1cbiAgb2ZfaXRlciBTdHJpbmcuaXRlciBzXG5cbigqIEFkZCB0aGUgcGVuZGluZyBlbGVtZW50IHRvIHRoZSBxdWV1ZSBhbmQgbm90aWZ5IHRoZSBibG9ja2VkIHB1c2hlZC5cblxuICAgUHJlY29uZGl0aW9uOiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBTb21lIF9cblxuICAgVGhpcyBkb2VzIG5vdCBtb2RpZnkgaW5mby5wdXNoYl9jb3VudC4gKilcbmxldCBub3RpZnlfcHVzaGVyIGluZm8gbGFzdCA9XG4gICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gIGVucXVldWUnIGluZm8ucHVzaGJfcGVuZGluZyBsYXN0O1xuICAoKiBDbGVhciBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAoKiBXYWtldXAgdGhlIHB1c2hlci4gKilcbiAgbGV0IG9sZF93YWtlbmVyID0gaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgaW5cbiAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciA8LSB3YWtlbmVyO1xuICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG5cbmNsYXNzIFsnYV0gYm91bmRlZF9wdXNoX2ltcGwgKGluZm8gOiAnYSBwdXNoX2JvdW5kZWQpIHdha2VuZXJfY2VsbCBsYXN0IGNsb3NlID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGNsb3NlZCA9IGZhbHNlXG5cbiAgbWV0aG9kIHNpemUgPVxuICAgIGluZm8ucHVzaGJfc2l6ZVxuXG4gIG1ldGhvZCByZXNpemUgc2l6ZSA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uYm91bmRlZF9wdXNoI3Jlc2l6ZVwiO1xuICAgIGluZm8ucHVzaGJfc2l6ZSA8LSBzaXplO1xuICAgIGlmIGluZm8ucHVzaGJfY291bnQgPCBpbmZvLnB1c2hiX3NpemUgJiYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50ICsgMTtcbiAgICAgIG5vdGlmeV9wdXNoZXIgaW5mbyBsYXN0XG4gICAgZW5kXG5cbiAgbWV0aG9kIHB1c2ggeCA9XG4gICAgaWYgY2xvc2VkIHRoZW5cbiAgICAgIEx3dC5mYWlsIENsb3NlZFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlblxuICAgICAgTHd0LmZhaWwgRnVsbFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9jb3VudCA+PSBpbmZvLnB1c2hiX3NpemUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIFNvbWUgeDtcbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+IGluZm8ucHVzaGJfcHVzaF93YWl0ZXIpXG4gICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgIHwgTHd0LkNhbmNlbGVkIC0+XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgICAgICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dhaXRlciA8LSB3YWl0ZXI7XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgICAgICAgICAgICBMd3QuZmFpbCBleG5cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgZW5xdWV1ZScgKFNvbWUgeCkgbGFzdDtcbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICAoKiBTZW5kIGEgc2lnbmFsIGlmIGF0IGxlYXN0IG9uZSB0aHJlYWQgaXMgd2FpdGluZyBmb3IgYSBuZXdcbiAgICAgICAgIGVsZW1lbnQuICopXG4gICAgICBpZiBpbmZvLnB1c2hiX3dhaXRpbmcgdGhlbiBiZWdpblxuICAgICAgICBpbmZvLnB1c2hiX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAgICgqIFVwZGF0ZSB0aHJlYWRzLiAqKVxuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgICAgIGluZm8ucHVzaGJfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICAgIHdha2VuZXJfY2VsbCA6PSBuZXdfd2FrZW5lcjtcbiAgICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3dha2VuZXIgKClcbiAgICAgIGVuZDtcbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBjbG9zZSA9XG4gICAgaWYgbm90IGNsb3NlZCB0aGVuIGJlZ2luXG4gICAgICBjbG9zZWQgPC0gdHJ1ZTtcbiAgICAgIGxldCBub2RlID0gIWxhc3QgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgICAgIG5vZGUuZGF0YSA8LSBOb25lO1xuICAgICAgbm9kZS5uZXh0IDwtIG5ld19sYXN0O1xuICAgICAgbGFzdCA6PSBuZXdfbGFzdDtcbiAgICAgIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXJfZXhuIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIENsb3NlZFxuICAgICAgZW5kO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3Qud2FrZXVwIGNsb3NlICgpO1xuICAgIGVuZFxuXG4gIG1ldGhvZCBjb3VudCA9XG4gICAgaW5mby5wdXNoYl9jb3VudFxuXG4gIG1ldGhvZCBibG9ja2VkID1cbiAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZVxuXG4gIG1ldGhvZCBjbG9zZWQgPVxuICAgIGNsb3NlZFxuXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biB4IC0+IGluZm8ucHVzaGJfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeFxuZW5kXG5cbmxldCBjcmVhdGVfYm91bmRlZCBzaXplID1cbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY3JlYXRlX2JvdW5kZWRcIjtcbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgaW5mbywgd2FrZW5lcl9jZWxsID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICBsZXQgcHVzaF93YWl0ZXIsIHB1c2hfd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgKHsgcHVzaGJfc2lnbmFsID0gd2FpdGVyO1xuICAgICAgIHB1c2hiX3dhaXRpbmcgPSBmYWxzZTtcbiAgICAgICBwdXNoYl9zaXplID0gc2l6ZTtcbiAgICAgICBwdXNoYl9jb3VudCA9IDA7XG4gICAgICAgcHVzaGJfcGVuZGluZyA9IE5vbmU7XG4gICAgICAgcHVzaGJfcHVzaF93YWl0ZXIgPSBwdXNoX3dhaXRlcjtcbiAgICAgICBwdXNoYl9wdXNoX3dha2VuZXIgPSBwdXNoX3dha2VuZXI7XG4gICAgICAgcHVzaGJfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgd2FrZW5lcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaF9ib3VuZGVkIGluZm8pIGluXG4gICh0LCBuZXcgYm91bmRlZF9wdXNoX2ltcGwgaW5mbyB3YWtlbmVyX2NlbGwgdC5sYXN0IHQuY2xvc2UpXG5cbigqIFdhaXQgZm9yIGEgbmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudFxuICAgb2YgdGhlIHN0cmVhbS4gKilcbmxldCBmZWVkIHMgPVxuICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gIHwgRnJvbSBmcm9tIC0+XG4gICAgKCogVGhlcmUgaXMgYWxyZWFkeSBhIHRocmVhZCBzdGFydGVkIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50LFxuICAgICAgIHdhaXQgZm9yIHRoaXMgb25lIHRvIHRlcm1pbmF0ZS4gKilcbiAgICBpZiBMd3QuaXNfc2xlZXBpbmcgZnJvbS5mcm9tX3RocmVhZCB0aGVuXG4gICAgICBMd3QucHJvdGVjdGVkIGZyb20uZnJvbV90aHJlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBPdGhlcndpc2UgcmVxdWVzdCBhIG5ldyBlbGVtZW50LiAqKVxuICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgIGZyb20uZnJvbV9jcmVhdGUgKCkgPj49IGZ1biB4IC0+XG4gICAgICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgICAgIGVucXVldWUgeCBzO1xuICAgICAgICBpZiB4ID0gTm9uZSB0aGVuIEx3dC53YWtldXAgcy5jbG9zZSAoKTtcbiAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgKCogQWxsb3cgb3RoZXIgdGhyZWFkcyB0byBhY2Nlc3MgdGhpcyB0aHJlYWQuICopXG4gICAgICBmcm9tLmZyb21fdGhyZWFkIDwtIHRocmVhZDtcbiAgICAgIEx3dC5wcm90ZWN0ZWQgdGhyZWFkXG4gICAgZW5kXG4gIHwgRnJvbV9kaXJlY3QgZiAtPlxuICAgIGxldCB4ID0gZiAoKSBpblxuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZSB4IHM7XG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgUHVzaCBwdXNoIC0+XG4gICAgcHVzaC5wdXNoX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaF9zaWduYWxcbiAgfCBQdXNoX2JvdW5kZWQgcHVzaCAtPlxuICAgIHB1c2gucHVzaGJfd2FpdGluZyA8LSB0cnVlO1xuICAgIEx3dC5wcm90ZWN0ZWQgcHVzaC5wdXNoYl9zaWduYWxcblxuKCogUmVtb3ZlIFtub2RlXSBmcm9tIHRoZSB0b3Agb2YgdGhlIHF1ZXVlLCBvciBkbyBub3RoaW5nIGlmIGl0IHdhc1xuICAgYWxyZWFkeSBjb25zdW1lZC5cblxuICAgUHJlY29uZGl0aW9uOiBub2RlLmRhdGEgPD4gTm9uZVxuKilcbmxldCBjb25zdW1lIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gcy5ub2RlIHRoZW4gYmVnaW5cbiAgICBzLm5vZGUgPC0gbm9kZS5uZXh0O1xuICAgIG1hdGNoIHMuc291cmNlIHdpdGhcbiAgICB8IFB1c2hfYm91bmRlZCBpbmZvIC0+XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBOb25lIHRoZW5cbiAgICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50IC0gMVxuICAgICAgZWxzZVxuICAgICAgICBub3RpZnlfcHVzaGVyIGluZm8gcy5sYXN0XG4gICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+XG4gICAgICAoKVxuICBlbmRcblxubGV0IHJlYyBwZWVrX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gcGVla19yZWMgcyBub2RlXG4gIGVsc2VcbiAgICBMd3QucmV0dXJuIG5vZGUuZGF0YVxuXG5sZXQgcGVlayBzID0gcGVla19yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBucGVla19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5wZWVrX3JlYyBub2RlIGFjYyBuIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIG5wZWVrX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IG5wZWVrIG4gcyA9IG5wZWVrX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3JlYyBzIG5vZGVcbiAgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcbiAgZW5kXG5cbmxldCBnZXQgcyA9IGdldF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBnZXRfZXhuX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgTHd0LnRyeV9iaW5kXG4gICAgICAoZnVuICgpIC0+IGZlZWQgcylcbiAgICAgIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBub2RlKVxuICAgICAgKGZ1biBleG4gLT4gTHd0LnJldHVybiAoU29tZSAoUmVzdWx0LkVycm9yIGV4bikpKVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiAoU29tZSAoUmVzdWx0Lk9rIHZhbHVlKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgd3JhcF9leG4gcyA9IGZyb20gKGZ1biAoKSAtPiBnZXRfZXhuX3JlYyBzIHMubm9kZSlcblxubGV0IHJlYyBuZ2V0X3JlYyBub2RlIGFjYyBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmdldF9yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBzLm5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbmdldF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBuZ2V0IG4gcyA9IG5nZXRfcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlbiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZ2V0X3doaWxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZSBmIHMgPSBnZXRfd2hpbGVfcmVjIHMubm9kZSBbXSBmIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF93aGlsZV9zX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBnZXRfd2hpbGVfc19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZV9zIGYgcyA9IGdldF93aGlsZV9zX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgbmV4dF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5leHRfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCBuZXh0IHMgPSBuZXh0X3JlYyBzIHMubm9kZVxuXG5sZXQgcmVjIGxhc3RfbmV3X3JlYyBub2RlIHggcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlIHggc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybiB4XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlLm5leHQgeCBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIHhcblxubGV0IGxhc3RfbmV3IHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IG5leHQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiB4IC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIF8gfCBMd3QuU2xlZXAgLT5cbiAgICAgIHRocmVhZFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmZhaWwgRW1wdHlcblxubGV0IHJlYyB0b19saXN0X3JlYyBub2RlIGFjYyBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX2xpc3RfcmVjIG5vZGUgYWNjIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgdG9fbGlzdF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgdG9fbGlzdCBzID0gdG9fbGlzdF9yZWMgcy5ub2RlIFtdIHNcblxubGV0IHJlYyB0b19zdHJpbmdfcmVjIG5vZGUgYnVmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgeDtcbiAgICAgIHRvX3N0cmluZ19yZWMgbm9kZS5uZXh0IGJ1ZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfcmVjIHMubm9kZSAoQnVmZmVyLmNyZWF0ZSAxMjgpIHNcblxubGV0IGp1bmsgcyA9XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW4gYmVnaW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPlxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgaWYgbm9kZS5kYXRhIDw+IE5vbmUgdGhlbiBjb25zdW1lIHMgbm9kZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCByZWMgbmp1bmtfcmVjIG5vZGUgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmp1bmtfcmVjIG5vZGUgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5qdW5rX3JlYyBub2RlLm5leHQgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG5qdW5rIG4gcyA9IG5qdW5rX3JlYyBzLm5vZGUgbiBzXG5cbmxldCByZWMganVua193aGlsZV9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4ganVua193aGlsZV9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGp1bmtfd2hpbGVfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlIGYgcyA9IGp1bmtfd2hpbGVfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBqdW5rX3doaWxlX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGp1bmtfd2hpbGVfcyBmIHMgPSBqdW5rX3doaWxlX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX29sZF9yZWMgbm9kZSBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAganVua19vbGRfcmVjIG5vZGUgc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlLm5leHQgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX29sZCBzID0ganVua19vbGRfcmVjIHMubm9kZSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMaXN0LnJldiBhY2NcblxubGV0IGdldF9hdmFpbGFibGUgcyA9IGdldF9hdmFpbGFibGVfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlIGFjYyBuIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlX3VwX3RvIG4gcyA9IGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBpc19lbXB0eSBzID1cbiAgaWYgcy5ub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXNfZW1wdHkgc1xuICBlbHNlXG4gICAgTHd0LnJldHVybiAocy5ub2RlLmRhdGEgPSBOb25lKVxuXG5sZXQgbWFwIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+fD0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBsZXQgeCA9IGYgeCBpblxuICAgIFNvbWUgeFxuICB8IE5vbmUgLT5cbiAgICBOb25lKVxuXG5sZXQgbWFwX3MgZiBzID1cbiAgZnJvbSAoZnVuICgpIC0+IGdldCBzID4+PSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPlxuICAgIGYgeCA+fD0gKGZ1biB4IC0+IFNvbWUgeClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl9ub25lKVxuXG5sZXQgZmlsdGVyIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW5cbiAgICAgICAgdFxuICAgICAgZWxzZVxuICAgICAgICBuZXh0ICgpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfcyBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgbmV4dCAoKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICB0XG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcCBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGdldCBzID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIG5leHQgKCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgbWFwX2xpc3QgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGxldCBsID0gZiB4IGluXG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0X3MgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGYgeCA+Pj0gZnVuIGwgLT5cbiAgICAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICAgICBuZXh0ICgpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBMd3QucmV0dXJuX25vbmUpXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICBMd3QucmV0dXJuIChTb21lIHgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmxhdHRlbiBzID1cbiAgbWFwX2xpc3QgKGZ1biBsIC0+IGwpIHNcblxubGV0IHJlYyBmb2xkX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCBhY2MgPSBmIHggYWNjIGluXG4gICAgICBmb2xkX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGQgZiBzIGFjYyA9IGZvbGRfcmVjIHMubm9kZSBmIHMgYWNjXG5cbmxldCByZWMgZm9sZF9zX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9zX3JlYyBub2RlIGYgcyBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4IGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZm9sZF9zX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGRfcyBmIHMgYWNjID0gZm9sZF9zX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGl0ZXJfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCAoKSA9IGYgeCBpblxuICAgICAgaXRlcl9yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyIGYgcyA9IGl0ZXJfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBpdGVyX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICAgIGl0ZXJfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3MgZiBzID0gaXRlcl9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9wX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3BfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCByZXMgPSBmIHggaW5cbiAgICAgIGxldCByZXN0ID0gaXRlcl9wX3JlYyBub2RlLm5leHQgZiBzIGluXG4gICAgICByZXMgPj49IGZ1biAoKSAtPiByZXN0XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGl0ZXJfcCBmIHMgPSBpdGVyX3BfcmVjIHMubm9kZSBmIHNcblxubGV0IGl0ZXJfbiA/KG1heF9jb25jdXJyZW5jeSA9IDEpIGYgc3RyZWFtID1cbiAgYmVnaW5cbiAgICBpZiBtYXhfY29uY3VycmVuY3kgPD0gMCB0aGVuXG4gICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJMd3Rfc3RyZWFtLml0ZXJfbjogbWF4X2NvbmN1cnJlbmN5IG11c3QgYmUgPiAwLCAlZCBnaXZlblwiXG4gICAgICAgICAgbWF4X2NvbmN1cnJlbmN5XG4gICAgICBpblxuICAgICAgaW52YWxpZF9hcmcgbWVzc2FnZVxuICBlbmQ7XG4gIGxldCByZWMgbG9vcCBydW5uaW5nIGF2YWlsYWJsZSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIGdldCBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBTb21lIGVsdCAtPlxuICAgICAgbG9vcCAoZiBlbHQgOjogcnVubmluZykgKHByZWQgYXZhaWxhYmxlKVxuICBpblxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeVxuXG5sZXQgcmVjIGZpbmRfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gb3B0XG4gICAgICBlbHNlXG4gICAgICAgIGZpbmRfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZCBmIHMgPSBmaW5kX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZmluZF9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9zIGYgcyA9IGZpbmRfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX21hcF9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIGlmIHggPSBOb25lIHRoZW5cbiAgICAgICAgZmluZF9tYXBfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfbWFwIGYgcyA9IGZpbmRfbWFwX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9tYXBfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZmluZF9tYXBfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0KVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcF9zIGYgcyA9IGZpbmRfbWFwX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IGNvbWJpbmUgczEgczIgPVxuICBsZXQgbmV4dCAoKSA9XG4gICAgbGV0IHQxID0gZ2V0IHMxIGFuZCB0MiA9IGdldCBzMiBpblxuICAgIHQxID4+PSBmdW4gbjEgLT5cbiAgICB0MiA+Pj0gZnVuIG4yIC0+XG4gICAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUoeDEsIHgyKSlcbiAgICB8IF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgczEgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgIWN1cnJlbnRfcyA9PSBzMiB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBjdXJyZW50X3MgOj0gczI7XG4gICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNvbmNhdCBzX3RvcCA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgKGZyb20gKGZ1biAoKSAtPiBMd3QucmV0dXJuX25vbmUpKSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0ICFjdXJyZW50X3MgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSBfIC0+XG4gICAgICB0XG4gICAgfCBOb25lIC0+XG4gICAgICBnZXQgc190b3AgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBjdXJyZW50X3MgOj0gcztcbiAgICAgICAgbmV4dCAoKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNob29zZSBzdHJlYW1zID1cbiAgbGV0IHNvdXJjZSBzID0gKHMsIGdldCBzID58PSBmdW4geCAtPiAocywgeCkpIGluXG4gIGxldCBzdHJlYW1zID0gcmVmIChMaXN0Lm1hcCBzb3VyY2Ugc3RyZWFtcykgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBtYXRjaCAhc3RyZWFtcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBMd3QuY2hvb3NlIChMaXN0Lm1hcCBzbmQgbCkgPj49IGZ1biAocywgeCkgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZW1vdmVfYXNzcSBzIGwgaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgc3RyZWFtcyA6PSBzb3VyY2UgcyA6OiBsO1xuICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHJlYW1zIDo9IGw7XG4gICAgICAgIG5leHQgKClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBwYXJzZSBzIGYgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0ucGFyc2VcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHMpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICBzLm5vZGUgPC0gbm9kZTtcbiAgICAgICBMd3QuZmFpbCBleG4pXG5cbmxldCBoZXhkdW1wIHN0cmVhbSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDgwIGFuZCBudW0gPSByZWYgMCBpblxuICBmcm9tIGJlZ2luIGZ1biBfIC0+XG4gICAgbmdldCAxNiBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA4eHwgIFwiICFudW07XG4gICAgICBudW0gOj0gIW51bSArIDE2O1xuICAgICAgbGV0IHJlYyBieXRlcyBwb3MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgYmxhbmtzIHBvc1xuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBidWYgXCIlMDJ4IFwiIChDaGFyLmNvZGUgeCk7XG4gICAgICAgICAgYnl0ZXMgKHBvcyArIDEpIGxcbiAgICAgIGFuZCBibGFua3MgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMTYgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgIFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgXCI7XG4gICAgICAgICAgYmxhbmtzIChwb3MgKyAxKVxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBieXRlcyAwIGw7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIgfFwiO1xuICAgICAgTGlzdC5pdGVyIChmdW4gY2ggLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaWYgY2ggPj0gJ1xceDIwJyAmJiBjaCA8PSAnXFx4N2UnIHRoZW4gY2ggZWxzZSAnLicpKSBsO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnfCc7XG4gICAgICBMd3QucmV0dXJuIChTb21lKEJ1ZmZlci5jb250ZW50cyBidWYpKVxuICBlbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG4oKiogTW9kdWxlIFtMd3RfcmVzdWx0XTogZXhwbGljaXQgZXJyb3IgaGFuZGxpbmcgKilcblxub3BlbiBSZXN1bHRcblxudHlwZSAoKydhLCArJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCBMd3QudFxuXG5sZXQgcmV0dXJuIHggPSBMd3QucmV0dXJuIChPayB4KVxubGV0IGZhaWwgZSA9IEx3dC5yZXR1cm4gKEVycm9yIGUpXG5cbmxldCBsaWZ0ID0gTHd0LnJldHVyblxubGV0IG9rIHggPSBMd3QubWFwIChmdW4geSAtPiBPayB5KSB4XG5sZXQgZXJyb3IgeCA9IEx3dC5tYXAgKGZ1biB5IC0+IEVycm9yIHkpIHhcblxubGV0IG1hcCBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpKVxuICAgIGVcblxubGV0IG1hcF9lcnJvciBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKGYgZSlcbiAgICAgIHwgT2sgeCAtPiBPayB4KVxuICAgIGVcbmxldCBtYXBfZXJyIGYgZSA9IG1hcF9lcnJvciBmIGVcblxubGV0IGNhdGNoIGUgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IG9rIChlICgpKSlcbiAgICBmYWlsXG5cbmxldCBnZXRfZXhuIGUgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiB4XG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmZhaWwgZSlcblxubGV0IGJpbmQgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5yZXR1cm4gKEVycm9yIGUpXG4gICAgICB8IE9rIHggLT4gZiB4KVxuICAgICAgXG5sZXQgYmluZF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiAoT2sgeCkpXG4gICAgICBcbmxldCBiaW5kX2x3dCBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gb2sgKGYgeClcbiAgICAgIHwgRXJyb3IgZSAtPiBmYWlsIGUpXG5cbmxldCBiaW5kX3Jlc3VsdCBlIGYgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICBlXG5cbmxldCBiaW5kX2x3dF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmJpbmQgKGYgZSkgZmFpbFxuICAgICAgfCBPayB4IC0+IHJldHVybiB4KVxubGV0IGJpbmRfbHd0X2VyciBlIGYgPSBiaW5kX2x3dF9lcnJvciBlIGZcblxubGV0IGJvdGggYSBiID1cbiAgbGV0IHMgPSByZWYgTm9uZSBpblxuICBsZXQgc2V0X29uY2UgZSA9XG4gICAgbWF0Y2ggIXMgd2l0aFxuICAgIHwgTm9uZSAtPiBzOj0gU29tZSBlXG4gICAgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgbGV0IChhLGIpID0gbWFwX2Vycm9yIHNldF9vbmNlIGEsbWFwX2Vycm9yIHNldF9vbmNlIGIgaW5cbiAgbGV0IHNvbWVfYXNzZXJ0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGUgLT4gRXJyb3IgZVxuICBpblxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHgsIE9rIHkgLT4gT2sgKHgseSlcbiAgICAgIHwgRXJyb3IgXywgT2sgX1xuICAgICAgfCBPayBfLEVycm9yIF9cbiAgICAgIHwgRXJyb3IgXywgRXJyb3IgXyAtPiBzb21lX2Fzc2VydCAhcylcbiAgICAoTHd0LmJvdGggYSBiKVxuXG5sZXQgaXRlciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgICB8IEVycm9yIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXRlcl9lcnJvciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD58PSkgZSBmID0gbWFwIGYgZVxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG5cbmluY2x1ZGUgSW5maXhcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuICB2YWwgZW1wdHk6IHRcbiAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gIHZhbCBmaW5kX21pbjogdCAtPiBlbHRcbiAgdmFsIGxvb2t1cF9taW46IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX21pbjogdCAtPiB0XG4gIHZhbCBzaXplOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50KSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBPcmQudFxuXG4gIHR5cGUgdCA9IHRyZWUgbGlzdFxuICBhbmQgdHJlZSA9IE5vZGUgb2YgZWx0ICogaW50ICogdHJlZSBsaXN0XG5cbiAgbGV0IHJvb3QgKE5vZGUgKHgsIF8sIF8pKSA9IHhcbiAgbGV0IHJhbmsgKE5vZGUgKF8sIHIsIF8pKSA9IHJcbiAgbGV0IGxpbmsgKE5vZGUgKHgxLCByMSwgYzEpIGFzIHQxKSAoTm9kZSAoeDIsIHIyLCBjMikgYXMgdDIpID1cbiAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHgxIHgyIGluXG4gICAgaWYgYyA8PSAwIHRoZW4gTm9kZSAoeDEsIHIxICsgMSwgdDI6OmMxKSBlbHNlIE5vZGUoeDIsIHIyICsgMSwgdDE6OmMyKVxuICBsZXQgcmVjIGlucyB0ID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgIC0+XG4gICAgICBbdF1cbiAgICB8ICh0Jzo6XykgYXMgdHMgd2hlbiByYW5rIHQgPCByYW5rIHQnIC0+XG4gICAgICB0Ojp0c1xuICAgIHwgdCc6OnRzIC0+XG4gICAgICBpbnMgKGxpbmsgdCB0JykgdHNcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgaXNfZW1wdHkgdHMgPSB0cyA9IFtdXG4gIGxldCBhZGQgeCB0cyA9IGlucyAoTm9kZSAoeCwgMCwgW10pKSB0c1xuICBsZXQgcmVjIHVuaW9uIHRzIHRzJyA9XG4gICAgbWF0Y2ggdHMsIHRzJyB3aXRoXG4gICAgICAoW10sIF8pIC0+IHRzJ1xuICAgIHwgKF8sIFtdKSAtPiB0c1xuICAgIHwgKHQxOjp0czEsIHQyOjp0czIpICAtPlxuICAgICAgaWYgcmFuayB0MSA8IHJhbmsgdDIgdGhlbiB0MSA6OiB1bmlvbiB0czEgKHQyOjp0czIpXG4gICAgICBlbHNlIGlmIHJhbmsgdDIgPCByYW5rIHQxIHRoZW4gdDIgOjogdW5pb24gKHQxOjp0czEpIHRzMlxuICAgICAgZWxzZSBpbnMgKGxpbmsgdDEgdDIpICh1bmlvbiB0czEgdHMyKVxuXG4gIGxldCByZWMgZmluZF9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAgICAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFt0XSAgIC0+IHJvb3QgdFxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCB4ID0gZmluZF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgeCBpblxuICAgICAgaWYgYyA8IDAgdGhlbiByb290IHQgZWxzZSB4XG5cbiAgbGV0IHJlYyBsb29rdXBfbWluID1cbiAgICBmdW5jdGlvblxuICAgIHwgW10gICAgLT4gTm9uZVxuICAgIHwgW3RdICAgLT4gU29tZSAocm9vdCB0KVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIG1hdGNoIGxvb2t1cF9taW4gdHMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB4IGFzIHJlc3VsdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBTb21lIChyb290IHQpIGVsc2UgcmVzdWx0XG5cbiAgbGV0IHJlYyBnZXRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBbdF0gICAtPiAodCwgW10pXG4gICAgfCB0Ojp0cyAtPlxuICAgICAgbGV0ICh0JywgdHMnKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgKHJvb3QgdCcpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuICh0LCB0cykgZWxzZSAodCcsIHQ6OnRzJylcblxuICBsZXQgcmVtb3ZlX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgdHMgLT5cbiAgICAgIGxldCAoTm9kZSAoXywgXywgYyksIHRzKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIHVuaW9uIChMaXN0LnJldiBjKSB0c1xuXG4gIGxldCByZWMgc2l6ZSBsID1cbiAgICBsZXQgc2l6ZXRyZWUgKE5vZGUgKF8sXyx0bCkpID0gMSArIHNpemUgdGwgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgdCAtPiBzICsgc2l6ZXRyZWUgdCkgMCBsXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogQSBzdXJ2ZXkgYW5kIG1lYXN1cmVtZW50cyBvZiBtb3JlIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGZvdW5kIGF0OlxuXG4gICAgaHR0cHM6Ly9qc3Rob21hcy5naXRodWIuaW8vbWFwLWNvbXBhcmlzb24uaHRtbFxuXG4gICBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC8zNDcuICopXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwIGYgbCA9XG4gIExpc3QucmV2IChMaXN0LnJldl9tYXAgZiBsKVxuXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkOjp0bCAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICgoZiBpIGhkKTo6YWNjKSAoaSArIDEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVjIGl0ZXJfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJfcyBmIGxcblxubGV0IGl0ZXJfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCByZWMgaXRlcmlfcyBpIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGkpIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJpX3MgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpX3MgZiBsID0gaXRlcmlfcyAwIGYgbFxuXG5sZXQgaXRlcmlfcCBmIGwgPVxuICBsZXQgZicgaSA9IEx3dC5hcHBseSAoZiBpKSBpblxuICBsZXQgdHMgPSB0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiBmJyBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCBtYXBfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIHIgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHI6OmFjYykgdGxcbiAgaW5cbiAgaW5uZXIgW10gbFxuXG5sZXQgcmVjIF9jb2xsZWN0X3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB0Ojp0cyAtPlxuICAgIHQgPj49IGZ1biBpIC0+XG4gICAgKF9jb2xsZWN0X3JldiBbQG9jYW1sLnRhaWxjYWxsXSkgKGk6OmFjYykgdHNcblxubGV0IG1hcF9wIGYgbCA9XG4gIGxldCB0cyA9IExpc3QucmV2X21hcCAoTHd0LmFwcGx5IGYpIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSBmIGhkID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHYgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0bFxuICAgICAgfCBOb25lIC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgYWNjIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IGZpbHRlcl9tYXBfcCBmIGwgPVxuICBsZXQgcmVjIF9jb2xsZWN0X29wdGlvbmFsX3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdICAgIC0+IEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB2IC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIHRzXG4gICAgfCBOb25lIC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0c1xuICBpblxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X29wdGlvbmFsX3JldiBbXSB0c1xuXG5sZXQgbWFwaV9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSAoZiBpKSBoZCA+Pj0gZnVuIHYgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgKGkrMSkgdGxcbiAgaW5cbiAgaW5uZXIgW10gMCBsXG5cbmxldCBtYXBpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBfY29sbGVjdF9yZXYgW10gdHNcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9zIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICByZXZfbWFwX2FwcGVuZF9zICh4IDo6IGFjYykgZiBsXG5cbmxldCByZXZfbWFwX3MgZiBsID1cbiAgcmV2X21hcF9hcHBlbmRfcyBbXSBmIGxcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9wIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGFjY1xuICB8IHggOjogbCAtPlxuICAgIHJldl9tYXBfYXBwZW5kX3BcbiAgICAgIChMd3QuYXBwbHkgZiB4ID4+PSBmdW4geCAtPlxuICAgICAgIGFjYyA+fD0gZnVuIGwgLT5cbiAgICAgICB4IDo6IGwpIGYgbFxuXG5sZXQgcmV2X21hcF9wIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3AgTHd0LnJldHVybl9uaWwgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0X3MgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgKGYgYWNjKSB4ID4+PSBmdW4gYWNjIC0+XG4gICAgKGZvbGRfbGVmdF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGFjYyBsXG5cbmxldCBmb2xkX3JpZ2h0X3MgZiBsIGFjYyA9XG4gIGxldCByZWMgaW5uZXIgZiBhID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMd3QucmV0dXJuIGFcbiAgICB8IGhkOjp0bCAtPiAoTHd0LmFwcGx5IChmIGhkKSBhKSA+Pj0gZnVuIGEnIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGYgYScgdGxcbiAgaW5cbiAgaW5uZXIgZiBhY2MgKExpc3QucmV2IGwpXG5cbmxldCByZWMgZm9yX2FsbF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl90cnVlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIChmb3JfYWxsX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIEx3dC5yZXR1cm5fZmFsc2VcblxubGV0IGZvcl9hbGxfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IHgpIGJsIHw+IEx3dC5yZXR1cm5cblxubGV0IHJlYyBleGlzdHNfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fZmFsc2VcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybl90cnVlXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKGV4aXN0c19zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IGV4aXN0c19wIGYgbCA9XG4gIG1hcF9wIGYgbCA+Pj0gZnVuIGJsIC0+IExpc3QuZXhpc3RzIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZmluZF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmZhaWwgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChmaW5kX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuXG5sZXQgX29wdGlvbmFsaXplIGYgeCA9XG4gIGYgeCA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIEx3dC5yZXR1cm4gKFNvbWUgeCkgZWxzZSBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbHRlcl9zIGYgbCA9XG4gIGZpbHRlcl9tYXBfcyAoX29wdGlvbmFsaXplIGYpIGxcblxubGV0IGZpbHRlcl9wIGYgbCA9XG4gICBmaWx0ZXJfbWFwX3AgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBwYXJ0aXRpb25fcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYzEgYWNjMiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjMSwgTGlzdC5yZXYgYWNjMilcbiAgICB8IGhkOjp0bCAtPiBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIGIgLT5cbiAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgaW5uZXIgKGhkOjphY2MxKSBhY2MyIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbm5lciBhY2MxIChoZDo6YWNjMikgdGxcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX3AgZiBsID1cbiAgbGV0IGcgeCA9IEx3dC5hcHBseSBmIHggPj49IGZ1biBiIC0+IEx3dC5yZXR1cm4gKGIsIHgpIGluXG4gIG1hcF9wIGcgbCA+Pj0gZnVuIHRsIC0+XG4gIGxldCBncm91cDEgPSB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIGZzdCB0bCBpblxuICBsZXQgZ3JvdXAyID1cbiAgICB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgQEAgZnN0IHgpIHRsIGluXG4gIEx3dC5yZXR1cm4gKGdyb3VwMSwgZ3JvdXAyKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIHQgPSB7XG4gIGNyZWF0ZSA6IHVuaXQgLT4gJ2EgTHd0LnQ7XG4gICgqIENyZWF0ZSBhIG5ldyBwb29sIG1lbWJlci4gKilcbiAgY2hlY2sgOiAnYSAtPiAoYm9vbCAtPiB1bml0KSAtPiB1bml0O1xuICAoKiBDaGVjayB2YWxpZGl0eSBvZiBhIHBvb2wgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlLiAqKVxuICB2YWxpZGF0ZSA6ICdhIC0+IGJvb2wgTHd0LnQ7XG4gICgqIFZhbGlkYXRlIGFuIGV4aXN0aW5nIGZyZWUgcG9vbCBtZW1iZXIgYmVmb3JlIHVzZS4gKilcbiAgZGlzcG9zZSA6ICdhIC0+IHVuaXQgTHd0LnQ7XG4gICgqIERpc3Bvc2Ugb2YgYSBwb29sIG1lbWJlci4gKilcbiAgY2xlYXJlZCA6IGJvb2wgcmVmIHJlZjtcbiAgKCogSGF2ZSB0aGUgY3VycmVudCBwb29sIGVsZW1lbnRzIGJlZW4gY2xlYXJlZCBvdXQ/ICopXG4gIG1heCA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcG9vbC4gKilcbiAgbXV0YWJsZSBjb3VudCA6IGludDtcbiAgKCogTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBwb29sLiAqKVxuICBsaXN0IDogJ2EgUXVldWUudDtcbiAgKCogQXZhaWxhYmxlIHBvb2wgbWVtYmVycy4gKilcbiAgd2FpdGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBQcm9taXNlIHJlc29sdmVycyB3YWl0aW5nIGZvciBhIGZyZWUgbWVtYmVyLiAqKVxufVxuXG5sZXQgY3JlYXRlIG0gPyh2YWxpZGF0ZSA9IGZ1biBfIC0+IEx3dC5yZXR1cm5fdHJ1ZSkgPyhjaGVjayA9IGZ1biBfIGYgLT4gZiB0cnVlKSA/KGRpc3Bvc2UgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpIGNyZWF0ZSA9XG4gIHsgbWF4ID0gbTtcbiAgICBjcmVhdGUgPSBjcmVhdGU7XG4gICAgdmFsaWRhdGUgPSB2YWxpZGF0ZTtcbiAgICBjaGVjayA9IGNoZWNrO1xuICAgIGRpc3Bvc2UgPSBkaXNwb3NlO1xuICAgIGNsZWFyZWQgPSByZWYgKHJlZiBmYWxzZSk7XG4gICAgY291bnQgPSAwO1xuICAgIGxpc3QgPSBRdWV1ZS5jcmVhdGUgKCk7XG4gICAgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG4oKiBDcmVhdGUgYSBwb29sIG1lbWJlci4gKilcbmxldCBjcmVhdGVfbWVtYmVyIHAgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICAgKCogTXVzdCBiZSBkb25lIGJlZm9yZSBwLmNyZWF0ZSB0byBwcmV2ZW50IG90aGVyIHJlc29sdmVycyBmcm9tXG4gICAgICAgICAgY3JlYXRpbmcgbmV3IG1lbWJlcnMgaWYgdGhlIGxpbWl0IGlzIHJlYWNoZWQuICopXG4gICAgICAgcC5jb3VudCA8LSBwLmNvdW50ICsgMTtcbiAgICAgICBwLmNyZWF0ZSAoKSlcbiAgICAoZnVuIGV4biAtPlxuICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgc28gZG9uJ3QgaW5jcmVtZW50IGNvdW50LiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG4oKiBSZWxlYXNlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgcmVsZWFzZSBwIGMgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgICgqIEEgcHJvbWlzZSByZXNvbHZlciBpcyB3YWl0aW5nLCBnaXZlIGl0IHRoZSBwb29sIG1lbWJlci4gKilcbiAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgY1xuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgcXVldWUgaXQuICopXG4gICAgUXVldWUucHVzaCBjIHAubGlzdFxuXG4oKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgZGlzcG9zZSBwIGMgPVxuICBwLmRpc3Bvc2UgYyA+Pj0gZnVuICgpIC0+XG4gIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gIEx3dC5yZXR1cm5fdW5pdFxuXG4oKiBDcmVhdGUgYSBuZXcgbWVtYmVyIHdoZW4gb25lIGlzIHRocm93biBhd2F5LiAqKVxubGV0IHJlcGxhY2VfZGlzcG9zZWQgcCA9XG4gIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIHAud2FpdGVycyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIE5vIG9uZSBpcyB3YWl0aW5nLCBkbyBub3QgY3JlYXRlIGEgbmV3IG1lbWJlciB0byBhdm9pZFxuICAgICAgIGxvc2luZyBhbiBlcnJvciBpZiBjcmVhdGlvbiBmYWlscy4gKilcbiAgICAoKVxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgIEx3dC5vbl9hbnlcbiAgICAgIChMd3QuYXBwbHkgcC5jcmVhdGUgKCkpXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgIEx3dC53YWtldXBfbGF0ZXIgd2FrZW5lciBjKVxuICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgbm90aWZ5IHRoZSB3YWl0ZXIgb2YgdGhlIGZhaWx1cmUuICopXG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biB3YWtlbmVyIGV4bilcblxuKCogVmVyaWZ5IGEgbWVtYmVyIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB1c2luZyBpdC4gKilcbmxldCB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgYyA9XG4gIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgcC52YWxpZGF0ZSBjKVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gY1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogUmVtb3ZlIHRoaXMgbWVtYmVyIGFuZCBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBjcmVhdGVfbWVtYmVyIHApXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgICgqIFZhbGlkYXRpb24gZmFpbGVkOiBjcmVhdGUgYSBuZXcgbWVtYmVyIGlmIGF0IGxlYXN0IG9uZVxuICAgICAgICAgICAgcmVzb2x2ZXIgaXMgd2FpdGluZy4gKilcbiAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIHJlcGxhY2VfZGlzcG9zZWQgcDtcbiAgICAgICAgIEx3dC5mYWlsIGUpXG5cbigqIEFjcXVpcmUgYSBwb29sIG1lbWJlci4gKilcbmxldCBhY3F1aXJlIHAgPVxuICBpZiBRdWV1ZS5pc19lbXB0eSBwLmxpc3QgdGhlblxuICAgICgqIE5vIG1vcmUgYXZhaWxhYmxlIG1lbWJlci4gKilcbiAgICBpZiBwLmNvdW50IDwgcC5tYXggdGhlblxuICAgICAgKCogTGltaXQgbm90IHJlYWNoZWQ6IGNyZWF0ZSBhIG5ldyBvbmUuICopXG4gICAgICBjcmVhdGVfbWVtYmVyIHBcbiAgICBlbHNlXG4gICAgICAoKiBMaW1pdCByZWFjaGVkOiB3YWl0IGZvciBhIGZyZWUgb25lLiAqKVxuICAgICAgKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBwLndhaXRlcnMgPj49IHZhbGlkYXRlX2FuZF9yZXR1cm4gcFxuICBlbHNlXG4gICAgKCogVGFrZSB0aGUgZmlyc3QgZnJlZSBtZW1iZXIgYW5kIHZhbGlkYXRlIGl0LiAqKVxuICAgIGxldCBjID0gUXVldWUudGFrZSBwLmxpc3QgaW5cbiAgICB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgY1xuXG4oKiBSZWxlYXNlIGEgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlIGlmIHRoZSBtZW1iZXJcbiAgIGlzIHN0aWxsIHZhbGlkLiAqKVxubGV0IGNoZWNrX2FuZF9yZWxlYXNlIHAgYyBjbGVhcmVkID1cbiAgbGV0IG9rID0gcmVmIGZhbHNlIGluXG4gIHAuY2hlY2sgYyAoZnVuIHJlc3VsdCAtPiBvayA6PSByZXN1bHQpO1xuICBpZiBjbGVhcmVkIHx8IG5vdCAhb2sgdGhlbiAoXG4gICAgKCogRWxlbWVudCBpcyBub3Qgb2sgb3IgdGhlIHBvb2wgd2FzIGNsZWFyZWQgLSBkaXNwb3NlIG9mIGl0ICopXG4gICAgZGlzcG9zZSBwIGNcbiAgKVxuICBlbHNlIChcbiAgICAoKiBFbGVtZW50IGlzIG9rIC0gcmVsZWFzZSBpdCBiYWNrIHRvIHRoZSBwb29sICopXG4gICAgcmVsZWFzZSBwIGM7XG4gICAgTHd0LnJldHVybl91bml0XG4gIClcblxubGV0IHVzZSBwIGYgPVxuICBhY3F1aXJlIHAgPj49IGZ1biBjIC0+XG4gICgqIENhcHR1cmUgdGhlIGN1cnJlbnQgY2xlYXJlZCBzdGF0ZSBzbyB3ZSBjYW4gc2VlIGlmIGl0IGNoYW5nZXMgd2hpbGUgdGhpc1xuICAgICBlbGVtZW50IGlzIGluIHVzZSAqKVxuICBsZXQgY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBsZXQgcHJvbWlzZSA9XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+IGYgYylcbiAgICAgIChmdW4gZSAtPlxuICAgICAgICAgY2hlY2tfYW5kX3JlbGVhc2UgcCBjICFjbGVhcmVkID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIEx3dC5mYWlsIGUpXG4gIGluXG4gIHByb21pc2UgPj49IGZ1biBfIC0+XG4gIGlmICFjbGVhcmVkIHRoZW4gKFxuICAgICgqIHAgd2FzIGNsZWFyZWQgd2hpbGUgcHJvbWlzZSB3YXMgcmVzb2x2aW5nIC0gZGlzcG9zZSBvZiB0aGlzIGVsZW1lbnQgKilcbiAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgcHJvbWlzZVxuICApXG4gIGVsc2UgKFxuICAgIHJlbGVhc2UgcCBjO1xuICAgIHByb21pc2VcbiAgKVxuXG5sZXQgY2xlYXIgcCA9XG4gIGxldCBlbGVtZW50cyA9IFF1ZXVlLmZvbGQgKGZ1biBsIGVsZW1lbnQgLT4gZWxlbWVudCA6OiBsKSBbXSBwLmxpc3QgaW5cbiAgUXVldWUuY2xlYXIgcC5saXN0O1xuICAoKiBJbmRpY2F0ZSB0byBhbnkgY3VycmVudGx5IGluLXVzZSBlbGVtZW50cyB0aGF0IHdlIGNsZWFyZWQgdGhlIHBvb2wgKilcbiAgbGV0IG9sZF9jbGVhcmVkID0gIShwLmNsZWFyZWQpIGluXG4gIG9sZF9jbGVhcmVkIDo9IHRydWU7XG4gIHAuY2xlYXJlZCA6PSByZWYgZmFsc2U7XG4gIEx3dF9saXN0Lml0ZXJfcyAoZGlzcG9zZSBwKSBlbGVtZW50c1xuXG5sZXQgd2FpdF9xdWV1ZV9sZW5ndGggcCA9IEx3dF9zZXF1ZW5jZS5sZW5ndGggcC53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogVGhpcyBjb2RlIGlzIGFkYXB0ZWQgZnJvbVxuICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAxMDAxMjE1NDI1L2h0dHA6Ly9laWdlbmNsYXNzLm9yZzo4MC9oaWtpL2xpZ2h0d2VpZ2h0LXRocmVhZHMtd2l0aC1sd3QuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBtdmFyX2NvbnRlbnRzIDogJ2Egb3B0aW9uO1xuICAoKiBDdXJyZW50IGNvbnRlbnRzICopXG5cbiAgd3JpdGVycyA6ICgnYSAqIHVuaXQgTHd0LnUpIEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgdG8gcHV0IGEgdmFsdWUgKilcblxuICByZWFkZXJzIDogJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnQ7XG4gICgqIFRocmVhZHMgd2FpdGluZyBmb3IgYSB2YWx1ZSAqKVxufVxuXG5sZXQgY3JlYXRlX2VtcHR5ICgpID1cbiAgeyBtdmFyX2NvbnRlbnRzID0gTm9uZTtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBjcmVhdGUgdiA9XG4gIHsgbXZhcl9jb250ZW50cyA9IFNvbWUgdjtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBwdXQgbXZhciB2ID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgYmVnaW4gbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci5yZWFkZXJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtdmFyLm12YXJfY29udGVudHMgPC0gU29tZSB2XG4gICAgICB8IFNvbWUgdyAtPlxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHcgdlxuICAgIGVuZDtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIF8gLT5cbiAgICBsZXQgKHJlcywgdykgPSBMd3QudGFzayAoKSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh2LCB3KSBtdmFyLndyaXRlcnMgaW5cbiAgICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuIF8gLT4gTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKTtcbiAgICByZXNcblxubGV0IG5leHRfd3JpdGVyIG12YXIgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBtdmFyLndyaXRlcnMgd2l0aFxuICB8IFNvbWUodicsIHcpIC0+XG4gICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdic7XG4gICAgTHd0Lndha2V1cF9sYXRlciB3ICgpXG4gIHwgTm9uZSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBOb25lXG5cbmxldCB0YWtlX2F2YWlsYWJsZSBtdmFyID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBTb21lIHYgLT5cbiAgICBuZXh0X3dyaXRlciBtdmFyO1xuICAgIFNvbWUgdlxuICB8IE5vbmUgLT5cbiAgICBOb25lXG5cbmxldCB0YWtlIG12YXIgPVxuICBtYXRjaCB0YWtlX2F2YWlsYWJsZSBtdmFyIHdpdGhcbiAgfCBTb21lIHYgLT4gTHd0LnJldHVybiB2XG4gIHwgTm9uZSAtPiAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG12YXIucmVhZGVyc1xuXG5sZXQgaXNfZW1wdHkgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBsb2NrZWQgOiBib29sOyB3YWl0ZXJzIDogdW5pdCBMd3QudSBMd3Rfc2VxdWVuY2UudCAgfVxuXG5sZXQgY3JlYXRlICgpID0geyBsb2NrZWQgPSBmYWxzZTsgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgbG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlblxuICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgbS53YWl0ZXJzXG4gIGVsc2UgYmVnaW5cbiAgICBtLmxvY2tlZCA8LSB0cnVlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmRcblxubGV0IHVubG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlbiBiZWdpblxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBtLndhaXRlcnMgdGhlblxuICAgICAgbS5sb2NrZWQgPC0gZmFsc2VcbiAgICBlbHNlXG4gICAgICAoKiBXZSBkbyBub3QgdXNlIFtMd3Qud2FrZXVwXSBoZXJlIHRvIGF2b2lkIGEgc3RhY2sgb3ZlcmZsb3dcbiAgICAgICAgIHdoZW4gdW5sb2NraW5nIGEgbG90IG9mIHRocmVhZHMuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIChMd3Rfc2VxdWVuY2UudGFrZV9sIG0ud2FpdGVycykgKClcbiAgZW5kXG5cbmxldCB3aXRoX2xvY2sgbSBmID1cbiAgbG9jayBtID4+PSBmdW4gKCkgLT5cbiAgTHd0LmZpbmFsaXplIGYgKGZ1biAoKSAtPiB1bmxvY2sgbTsgTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXNfbG9ja2VkIG0gPSBtLmxvY2tlZFxubGV0IGlzX2VtcHR5IG0gPSBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxudHlwZSAnYSB0ID0gJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnRcblxubGV0IGNyZWF0ZSA9IEx3dF9zZXF1ZW5jZS5jcmVhdGVcblxubGV0IHdhaXQgP211dGV4IGN2YXIgPVxuICBsZXQgd2FpdGVyID0gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBjdmFyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC51bmxvY2sgbVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IHdhaXRlcilcbiAgICAoZnVuICgpIC0+XG4gICAgICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC5sb2NrIG1cbiAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2lnbmFsIGN2YXIgYXJnID1cbiAgdHJ5XG4gICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBjdmFyKSBhcmdcbiAgd2l0aCBMd3Rfc2VxdWVuY2UuRW1wdHkgLT5cbiAgICAoKVxuXG5sZXQgYnJvYWRjYXN0IGN2YXIgYXJnID1cbiAgbGV0IHdha2VuZXJzID0gTHd0X3NlcXVlbmNlLmZvbGRfciAoZnVuIHggbCAtPiB4IDo6IGwpIGN2YXIgW10gaW5cbiAgTHd0X3NlcXVlbmNlLml0ZXJfbm9kZV9sIEx3dF9zZXF1ZW5jZS5yZW1vdmUgY3ZhcjtcbiAgTGlzdC5pdGVyIChmdW4gd2FrZW5lciAtPiBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYXJnKSB3YWtlbmVyc1xuXG5sZXQgYnJvYWRjYXN0X2V4biBjdmFyIGV4biA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pIHdha2VuZXJzXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgJ2EgZXZlbnQgPSAnYSBSZWFjdC5ldmVudFxudHlwZSAnYSBzaWduYWwgPSAnYSBSZWFjdC5zaWduYWxcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5FXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIGV2ZW50ID1cbiAgICBsZXQgciA9IHJlZiAoKSBpblxuICAgIEdjLmZpbmFsaXNlIChmaW5hbGlzZSBmKSByO1xuICAgIG1hcCAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KSBldmVudFxuXG4gIGxldCBuZXh0IGV2ID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgZXYgPSBtYXAgKGZ1biB4IC0+IEx3dC53YWtldXAgd2FrZW5lciB4KSAob25jZSBldikgaW5cbiAgICBMd3Qub25fY2FuY2VsIHdhaXRlciAoZnVuICgpIC0+IHN0b3AgZXYpO1xuICAgIHdhaXRlclxuXG4gIGxldCBsaW1pdCBmIGUgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50cyBbZV0gZnJvbSBvY2N1cnJpbmcgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiBMd3QucmV0dXJuX3VuaXQgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICgqIFRoZSBsaW1pdGVyIGlzIHNsZWVwaW5nLCB3ZSBxdWV1ZSB0aGUgZXZlbnQgZm9yIGxhdGVyXG4gICAgICAgICAgICAgICAgZGVsaXZlcmluZy4gKilcbiAgICAgICAgICAgICBtYXRjaCAhZGVsYXllZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGNlbGwgLT5cbiAgICAgICAgICAgICAgICgqIEFuIG9jY3VycmVuY2UgaXMgYWxyZWFkeSBxdWV1ZWQsIHJlcGxhY2UgaXQuICopXG4gICAgICAgICAgICAgICBjZWxsIDo9IHg7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgY2VsbCA9IHJlZiB4IGluXG4gICAgICAgICAgICAgICBkZWxheWVkIDo9IFNvbWUgY2VsbDtcbiAgICAgICAgICAgICAgIEx3dC5vbl9zdWNjZXNzICFsaW1pdGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICBlXG4gICAgaW5cblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGNhbmNlbF90aHJlYWQgdCAoKSA9XG4gICAgTHd0LmNhbmNlbCB0XG5cbiAgbGV0IGZyb20gZiA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGYgKCkgPj49IGZ1biB4IC0+XG4gICAgICBwdXNoIHg7XG4gICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsZXQgdCA9IEx3dC5wYXVzZSAoKSA+Pj0gbG9vcCBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IHRvX3N0cmVhbSBldmVudCA9XG4gICAgbGV0IHN0cmVhbSwgcHVzaCwgc2V0X3JlZiA9IEx3dF9zdHJlYW0uY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gICAgc2V0X3JlZiAobWFwIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBldmVudCk7XG4gICAgc3RyZWFtXG5cbiAgbGV0IG9mX3N0cmVhbSBzdHJlYW0gPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCB0ID1cbiAgICAgIEx3dC5wYXVzZSAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBMd3Rfc3RyZWFtLml0ZXIgKGZ1biB2IC0+IHRyeSBwdXNoIHYgd2l0aCBleG4gLT4gIUx3dC5hc3luY19leGNlcHRpb25faG9vayBleG4pIHN0cmVhbSBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IGRlbGF5IHRocmVhZCA9XG4gICAgbWF0Y2ggTHd0LnBvbGwgdGhyZWFkIHdpdGhcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgZVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGV2ZW50LCBzZW5kID0gY3JlYXRlICgpIGluXG4gICAgICBMd3Qub25fc3VjY2VzcyB0aHJlYWQgKGZ1biBlIC0+IHNlbmQgZTsgc3RvcCBldmVudCk7XG4gICAgICBzd2l0Y2ggbmV2ZXIgZXZlbnRcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgZSA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgZSA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBFdmVudCB0cmFuc2Zvcm1hdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3AgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gdCAtPiBMd3Qub25fc3VjY2VzcyB0IChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcnVuX3MgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSkgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9wIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYXBwX3MgZWYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZmlsdGVyX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiB0cnVlIC0+IHB1c2ggeCB8IGZhbHNlIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBkaWZmX3MgZiBlID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgTm9uZSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBtYXRjaCAhcHJldmlvdXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICB8IFNvbWUgeSAtPlxuICAgICAgICAgICAgIHByZXZpb3VzIDo9IFNvbWUgeDtcbiAgICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHggeSkpXG4gICAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgICBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhY2N1bV9zIGVmIGFjYyA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gZiAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYykpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZWYgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmb2xkX3MgZiBhY2MgZSA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYyB4KSkgKGZ1biB4IC0+IGFjYyA6PSB4OyBwdXNoIHgpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcmVjIHJldl9mb2xkIGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICByZXZfZm9sZCBmIGFjYyBsID4+PSBmdW4gYWNjIC0+XG4gICAgICBmIGFjYyB4XG5cbiAgbGV0IG1lcmdlX3MgZiBhY2MgZWwgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gbCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gcmV2X2ZvbGQgZiBhY2MgbCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBlbClcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5lbmRcblxubW9kdWxlIFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5TXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIHNpZ25hbCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXBcbiAgICAgIChmdW4geCAtPiBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgcik7IHgpXG4gICAgICBzaWduYWxcblxuICBsZXQgbGltaXQgP2VxIGYgcyA9XG4gICAgKCogVGhyZWFkIHdoaWNoIHByZXZlbnQgW3NdIHRvIGNoYW5nZXMgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiAoZiAoKSkgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCB4ID0gIWNlbGwgaW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgIHB1c2ggeCk7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgKCogU2V0IHRoZSBsaW1pdGVyIGZvciBmdXR1cmUgZXZlbnRzLiAqKVxuICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAoKiBTZW5kIHRoZSBvY2N1cnJlbmNlIG5vdy4gKilcbiAgICAgICAgICAgICBwdXNoIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cblxuICAgIGhvbGQgP2VxICh2YWx1ZSBzKSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSlcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgcyA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgcyA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBTaWduYWwgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3MgP2VxIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHQgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHQpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHZhbHVlIHMpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBtYXBfcyA/ZXEgZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGFwcF9zID9lcSBzZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChFLmFwcCAoRS5tYXAgKGZ1biBmIHggLT4gKGYsIHgpKSAoY2hhbmdlcyBzZikpIChjaGFuZ2VzIHMpKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+ICh2YWx1ZSBzZikgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZmlsdGVyX3MgP2VxIGYgaSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IEUuZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgbGV0IHggPSB2YWx1ZSBzIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZm1hcF9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIFNvbWUgeCAtPiBwdXNoIHggfCBOb25lIC0+ICgpKTsgTm9uZSkgKGNoYW5nZXMgcykgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIGkgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBkaWZmX3MgZiBzID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgKHZhbHVlIHMpIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBsZXQgeSA9ICFwcmV2aW91cyBpblxuICAgICAgICAgICBwcmV2aW91cyA6PSB4O1xuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBzYW1wbGVfcyBmIGUgcyA9XG4gICAgRS5tYXBfcyAoZnVuIHggLT4gZiB4ICh2YWx1ZSBzKSkgZVxuXG4gIGxldCBhY2N1bV9zID9lcSBlZiBpID1cbiAgICBob2xkID9lcSBpIChFLmFjY3VtX3MgZWYgaSlcblxuICBsZXQgZm9sZF9zID9lcSBmIGkgZSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5mb2xkX3MgZiBpIGUpXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zID9lcSBmIGFjYyBzbCA9XG4gICAgbGV0IHMgPSBtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBzbCBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGwxX3MgP2VxIGYgczEgPVxuICAgIG1hcF9zID9lcSBmIHMxXG5cbiAgbGV0IGwyX3MgP2VxIGYgczEgczIgPVxuICAgICgqIFNvbWUgZGV0YWlscyBhYm91dCB0aGUgdXNlIG9mIFtmdW4gXyBfIC0+IGZhbHNlXSBvblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzg5MyNwdWxscmVxdWVzdHJldmlldy03ODMwODM0OTYgKilcbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyKSAtPiBmIHgxIHgyKSAobDIgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIC0+ICh4MSwgeDIpKSBzMSBzMilcblxuICBsZXQgbDNfcyA/ZXEgZiBzMSBzMiBzMyA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMpIC0+IGYgeDEgeDIgeDMpIChsMyB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMtPiAoeDEsIHgyLCB4MykpIHMxIHMyIHMzKVxuXG4gIGxldCBsNF9zID9lcSBmIHMxIHMyIHMzIHM0ID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MywgeDQpIC0+IGYgeDEgeDIgeDMgeDQpIChsNCB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQtPiAoeDEsIHgyLCB4MywgeDQpKSBzMSBzMiBzMyBzNClcblxuICBsZXQgbDVfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSkgLT4gZiB4MSB4MiB4MyB4NCB4NSkgKGw1IH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4MyB4NCB4NS0+ICh4MSwgeDIsIHgzLCB4NCwgeDUpKSBzMSBzMiBzMyBzNCBzNSlcblxuICBsZXQgbDZfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSBzNiA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpIC0+IGYgeDEgeDIgeDMgeDQgeDUgeDYpIChsNiB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUgeDYtPiAoeDEsIHgyLCB4MywgeDQsIHg1LCB4NikpIHMxIHMyIHMzIHM0IHM1IHM2KVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTW9uYWRpYyBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJldHVybiA9XG4gICAgY29uc3RcblxuICBsZXQgYmluZF9zID9lcSBzIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKHN3aXRjaCA/ZXEgKGhvbGQgfmVxOiggPT0gKSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSkpXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9sd3RfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2ZpbGUgKilcbm1vZHVsZSBMd3RfZmlsZSA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcyAqKVxubW9kdWxlIEx3dF9qcyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzICopXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzb25wICopXG5tb2R1bGUgTHd0X2pzb25wID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfanNvbnBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF94bWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIEx3dF94bWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X3htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9sd3RfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBpbnQpIHkgPSB4IDwgeVxuXG4gIGxldCAoIDw9ICkgKHggOiBpbnQpIHkgPSB4IDw9IHlcblxuICBsZXQgKCA8PiApICh4IDogaW50KSB5ID0geCA8PiB5XG5cbiAgbGV0ICggPSApICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgKCA+ICkgKHggOiBpbnQpIHkgPSB4ID4geVxuXG4gIGxldCAoID49ICkgKHggOiBpbnQpIHkgPSB4ID49IHlcblxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG5cbiAgbGV0IGVxdWFsICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gWG1sSHR0cFJlcXVlc3Rcbm9wZW4hIEltcG9ydFxuXG5sZXQgZW5jb2RlX3VybCBsID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiJlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzKVxuICAgICAgICAgfCBuYW1lLCBgRmlsZSBzIC0+IFVybC51cmxlbmNvZGUgbmFtZSBeIFwiPVwiIF4gVXJsLnVybGVuY29kZSAodG9fc3RyaW5nIHMjIy5uYW1lKSlcbiAgICAgICBsKVxuXG4oKiBIaWdoZXIgbGV2ZWwgaW50ZXJmYWNlOiAqKVxuXG50eXBlICdyZXNwb25zZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICB7IHVybCA6IHN0cmluZ1xuICA7IGNvZGUgOiBpbnRcbiAgOyBoZWFkZXJzIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gIDsgY29udGVudF94bWwgOiB1bml0IC0+IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdGlvblxuICB9XG4oKiogdHlwZSBvZiB0aGUgaHR0cCBoZWFkZXJzICopXG5cbnR5cGUgaHR0cF9mcmFtZSA9IHN0cmluZyBnZW5lcmljX2h0dHBfZnJhbWVcblxuZXhjZXB0aW9uIFdyb25nX2hlYWRlcnMgb2YgKGludCAqIChzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikpXG5cbmxldCBkZWZhdWx0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IFwiXCIpIChmdW4geCAtPiBKcy50b19zdHJpbmcgeClcbiAgOyBjb250ZW50X3htbCA9XG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gcmVxIyMucmVzcG9uc2VYTUwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZG9jIC0+IGlmIEpzLnNvbWUgZG9jIyMuZG9jdW1lbnRFbGVtZW50ID09IEpzLm51bGwgdGhlbiBOb25lIGVsc2UgU29tZSBkb2MpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCB0ZXh0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IEpzLnN0cmluZyBcIlwiKSAoZnVuIHggLT4geClcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgZG9jdW1lbnRfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBqc29uX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uanNvbiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBibG9iX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uYmxvYiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBhcnJheWJ1ZmZlcl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGhhc19nZXRfYXJncyB1cmwgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0cmluZy5pbmRleCB1cmwgJz8nKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCBwZXJmb3JtX3Jhd1xuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgPyhjaGVja19oZWFkZXJzID0gZnVuIF8gXyAtPiB0cnVlKVxuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgKHR5cGUgcmVzcHR5cGUpXG4gICAgfihyZXNwb25zZV90eXBlIDogcmVzcHR5cGUgcmVzcG9uc2UpXG4gICAgdXJsID1cbiAgbGV0IGNvbnRlbnRzX25vcm1hbGl6YXRpb24gPSBmdW5jdGlvblxuICAgIHwgYFBPU1RfZm9ybSBhcmdzIC0+XG4gICAgICAgIGxldCBvbmx5X3N0cmluZ3MgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IF8sIGBTdHJpbmcgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZvcm1fY29udGVudHMgPVxuICAgICAgICAgIGlmIG9ubHlfc3RyaW5ncyB0aGVuIGBGaWVsZHMgKHJlZiBbXSkgZWxzZSBGb3JtLmVtcHR5X2Zvcm1fY29udGVudHMgKClcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKG5hbWUsIHZhbHVlKSAtPiBGb3JtLmFwcGVuZCBmb3JtX2NvbnRlbnRzIChuYW1lLCB2YWx1ZSkpIGFyZ3M7XG4gICAgICAgIGBGb3JtX2NvbnRlbnRzIGZvcm1fY29udGVudHNcbiAgICB8IChgU3RyaW5nIF8gfCBgRm9ybV9jb250ZW50cyBfKSBhcyB4IC0+IHhcbiAgICB8IGBCbG9iIGIgLT4gYEJsb2IgKGIgOiAjRmlsZS5ibG9iIEpzLnQgOj4gRmlsZS5ibG9iIEpzLnQpXG4gIGluXG4gIGxldCBjb250ZW50cyA9XG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGMgLT4gU29tZSAoY29udGVudHNfbm9ybWFsaXphdGlvbiBjKVxuICBpblxuICBsZXQgbWV0aG9kX3RvX3N0cmluZyBtID1cbiAgICBtYXRjaCBtIHdpdGhcbiAgICB8IGBHRVQgLT4gXCJHRVRcIlxuICAgIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gICAgfCBgUFVUIC0+IFwiUFVUXCJcbiAgICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICAgIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgaW5cbiAgbGV0IG1ldGhvZF8sIGNvbnRlbnRfdHlwZSA9XG4gICAgbGV0IG92ZXJyaWRlX21ldGhvZCBtID1cbiAgICAgIG1hdGNoIG92ZXJyaWRlX21ldGhvZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbVxuICAgICAgfCBTb21lIHYgLT4gbWV0aG9kX3RvX3N0cmluZyB2XG4gICAgaW5cbiAgICBsZXQgb3ZlcnJpZGVfY29udGVudF90eXBlIGMgPVxuICAgICAgbWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTb21lIGNcbiAgICAgIHwgU29tZSBfIC0+IGNvbnRlbnRfdHlwZVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBvdmVycmlkZV9tZXRob2QgXCJHRVRcIiwgY29udGVudF90eXBlXG4gICAgfCBTb21lIChgRm9ybV9jb250ZW50cyBmb3JtKSAtPiAoXG4gICAgICAgIG1hdGNoIGZvcm0gd2l0aFxuICAgICAgICB8IGBGaWVsZHMgX3N0cmluZ3MgLT5cbiAgICAgICAgICAgICggb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiXG4gICAgICAgICAgICAsIG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiIClcbiAgICAgICAgfCBgRm9ybURhdGEgXyAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZSlcbiAgICB8IFNvbWUgKGBTdHJpbmcgXyB8IGBCbG9iIF8pIC0+IG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIiwgY29udGVudF90eXBlXG4gIGluXG4gIGxldCB1cmwgPVxuICAgIGlmIFBvbHkuKGdldF9hcmdzID0gW10pXG4gICAgdGhlbiB1cmxcbiAgICBlbHNlIHVybCBeIChpZiBoYXNfZ2V0X2FyZ3MgdXJsIHRoZW4gXCImXCIgZWxzZSBcIj9cIikgXiBVcmwuZW5jb2RlX2FyZ3VtZW50cyBnZXRfYXJnc1xuICBpblxuICBsZXQgKHJlcyA6IHJlc3B0eXBlIGdlbmVyaWNfaHR0cF9mcmFtZSBMd3QudCksIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgcmVxID0gY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2RfKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChtYXRjaCBvdmVycmlkZV9taW1lX3R5cGUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIG1pbWVfdHlwZSAtPiByZXEjI292ZXJyaWRlTWltZVR5cGUgKEpzLnN0cmluZyBtaW1lX3R5cGUpKTtcbiAgKG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICB8IEFycmF5QnVmZmVyIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiXG4gIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgfCBKU09OIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJqc29uXCJcbiAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIChtYXRjaCB3aXRoX2NyZWRlbnRpYWxzIHdpdGhcbiAgfCBTb21lIGMgLT4gcmVxIyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgY1xuICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgfCBTb21lIGNvbnRlbnRfdHlwZSAtPlxuICAgICAgcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgXCJDb250ZW50LXR5cGVcIikgKEpzLnN0cmluZyBjb250ZW50X3R5cGUpXG4gIHwgXyAtPiAoKSk7XG4gIExpc3QuaXRlciAoZnVuIChuLCB2KSAtPiByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuKSAoSnMuc3RyaW5nIHYpKSBoZWFkZXJzO1xuICBsZXQgaGVhZGVycyBzID1cbiAgICBPcHQuY2FzZVxuICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAoZnVuIHYgLT4gU29tZSAoSnMudG9fc3RyaW5nIHYpKVxuICBpblxuICBsZXQgZG9fY2hlY2tfaGVhZGVycyA9XG4gICAgbGV0IHN0ID0gcmVmIGBOb3RfeWV0IGluXG4gICAgZnVuICgpIC0+XG4gICAgICBpZiBQb2x5Lighc3QgPSBgTm90X3lldClcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgY2hlY2tfaGVhZGVycyByZXEjIy5zdGF0dXMgaGVhZGVyc1xuICAgICAgICB0aGVuIHN0IDo9IGBQYXNzZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgTHd0Lndha2V1cF9leG4gdyAoV3JvbmdfaGVhZGVycyAocmVxIyMuc3RhdHVzLCBoZWFkZXJzKSk7XG4gICAgICAgICAgc3QgOj0gYEZhaWxlZDtcbiAgICAgICAgICByZXEjI2Fib3J0KTtcbiAgICAgIFBvbHkuKCFzdCA8PiBgRmFpbGVkKVxuICBpblxuICByZXEjIy5vbnJlYWR5c3RhdGVjaGFuZ2UgOj1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgICAgICBtYXRjaCByZXEjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICAgKCogSUUgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBmb3IgSEVBREVSU19SRUNFSVZFRC5cbiAgICAgICAgICAgICBzbyB3ZSB3YWl0IHRpbCBMT0FESU5HIHRvIGNoZWNrIGhlYWRlcnMuIFNlZTpcbiAgICAgICAgICAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzQzNjEodj12cy44NSkuYXNweCAqKVxuICAgICAgICB8IEhFQURFUlNfUkVDRUlWRUQgd2hlbiBub3QgRG9tX2h0bWwub25JRSAtPiBpZ25vcmUgKGRvX2NoZWNrX2hlYWRlcnMgKCkpXG4gICAgICAgIHwgTE9BRElORyB3aGVuIERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IERPTkUgLT5cbiAgICAgICAgICAgICgqIElmIHdlIGRpZG4ndCBjYXRjaCBhIHByZXZpb3VzIGV2ZW50LCB3ZSBjaGVjayB0aGUgaGVhZGVyLiAqKVxuICAgICAgICAgICAgaWYgZG9fY2hlY2tfaGVhZGVycyAoKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXJyYXlCdWZmZXIgLT4gYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgQmxvYiAtPiBibG9iX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERvY3VtZW50IC0+IGRvY3VtZW50X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEpTT04gLT4ganNvbl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBUZXh0IC0+IHRleHRfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBkZWZhdWx0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IHJlc3BvbnNlXG4gICAgICAgIHwgXyAtPiAoKSk7XG4gIChtYXRjaCBwcm9ncmVzcyB3aXRoXG4gIHwgU29tZSBwcm9ncmVzcyAtPlxuICAgICAgcmVxIyMub25wcm9ncmVzcyA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgIHByb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gIHwgTm9uZSAtPiAoKSk7XG4gIE9wdGRlZi5pdGVyIHJlcSMjLnVwbG9hZCAoZnVuIHVwbG9hZCAtPlxuICAgICAgbWF0Y2ggdXBsb2FkX3Byb2dyZXNzIHdpdGhcbiAgICAgIHwgU29tZSB1cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgICAgICB1cGxvYWQjIy5vbnByb2dyZXNzIDo9XG4gICAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICB1cGxvYWRfcHJvZ3Jlc3MgZSMjLmxvYWRlZCBlIyMudG90YWw7XG4gICAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudHMgd2l0aFxuICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZpZWxkcyBsKSkgLT4gcmVxIyNzZW5kIChKcy5zb21lIChzdHJpbmcgKGVuY29kZV91cmwgIWwpKSlcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZvcm1EYXRhIGYpKSAtPiByZXEjI3NlbmRfZm9ybURhdGEgZlxuICB8IFNvbWUgKGBTdHJpbmcgcykgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gIHwgU29tZSAoYEJsb2IgYikgLT4gcmVxIyNzZW5kX2Jsb2IgYik7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVxIyNhYm9ydCk7XG4gIHJlc1xuXG5sZXQgcGVyZm9ybV9yYXdfdXJsXG4gICAgPyhoZWFkZXJzID0gW10pXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgID8oZ2V0X2FyZ3MgPSBbXSlcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgdXJsID1cbiAgcGVyZm9ybV9yYXdcbiAgICB+aGVhZGVyc1xuICAgID9jb250ZW50X3R5cGVcbiAgICB+Z2V0X2FyZ3NcbiAgICA/Y29udGVudHNcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdFxuICAgIHVybFxuXG5sZXQgcGVyZm9ybVxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICAoVXJsLnN0cmluZ19vZl91cmwgdXJsKVxuXG5sZXQgZ2V0IHMgPSBwZXJmb3JtX3Jhd191cmwgc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQgc2xlZXAgZCA9XG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGlkID0gRG9tX2h0bWwuc2V0VGltZW91dCAoTHd0Lndha2V1cCB3KSAoZCAqLiAxMDAwLikgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IChmdW4gKCkgLT4gRG9tX2h0bWwuY2xlYXJUaW1lb3V0IGlkKTtcbiAgdFxuXG5sZXQgeWllbGQgKCkgPSBzbGVlcCAwLlxuXG5sZXQgd2FrZXVwID0gZnVuY3Rpb25cbiAgfCAxIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBMd3Qud2FrZXVwX3BhdXNlZCkgKEpzLmZsb2F0IDAuKSlcbiAgfCBfIC0+ICgpXG5cbmxldCAoKSA9IEx3dC5yZWdpc3Rlcl9wYXVzZV9ub3RpZmllciB3YWtldXBcblxubGV0IHByZXJyX3N0cmluZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgXyA9XG4gIEx3dC5hc3luY19leGNlcHRpb25faG9vayA6PVxuICAgIGZ1biBleG4gLT5cbiAgICAgIHByZXJyX3N0cmluZyBcIkV4Y2VwdGlvbiBkdXJpbmcgTHd0LmFzeW5jOiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYyByYW5kb21faWRlbnRpZmllciBzaXplID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIHNpemUgaW5cbiAgZm9yIF9pID0gMCB0byBzaXplIC0gMSBkb1xuICAgIEJ1ZmZlci5hZGRfY2hhciBiIChDaGFyLmNociAoOTcgKyBSYW5kb20uaW50IDI2KSlcbiAgZG9uZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBzKSlcbiAgdGhlbiAoKiBuYW1lIGFscmVhZHkgaW4gdXNlLCBjaG9vc2UgYW5vdGhlciBvbmUqKVxuICAgIHJhbmRvbV9pZGVudGlmaWVyIHNpemVcbiAgZWxzZSBzXG5cbmxldCByYXdfY2FsbCBuYW1lIHVyaSBlcnJvcl9jYiB1c2VyX2NiID1cbiAgbGV0IHNjcmlwdCA9IERvbV9odG1sLihjcmVhdGVTY3JpcHQgZG9jdW1lbnQpIGluXG4gIGxldCBmaW5hbGl6ZSAoKSA9XG4gICAgSnMuVW5zYWZlLmRlbGV0ZSBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBuYW1lKTtcbiAgICBKcy5PcHQuaXRlciBzY3JpcHQjIy5wYXJlbnROb2RlIChmdW4gcGFyZW50IC0+IERvbS5yZW1vdmVDaGlsZCBwYXJlbnQgc2NyaXB0KVxuICBpblxuICBsZXQgZXhlY3V0ZWQgPSByZWYgZmFsc2UgaW5cbiAgSnMuVW5zYWZlLnNldFxuICAgIERvbV9odG1sLndpbmRvd1xuICAgIChKcy5zdHJpbmcgbmFtZSlcbiAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHggLT5cbiAgICAgICAgIGV4ZWN1dGVkIDo9IHRydWU7XG4gICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgIHVzZXJfY2IgeCkpO1xuICBzY3JpcHQjIy5zcmMgOj0gSnMuc3RyaW5nIHVyaTtcbiAgc2NyaXB0IyMuX3R5cGUgOj0gSnMuc3RyaW5nIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gIHNjcmlwdCMjLmFzeW5jIDo9IEpzLl90cnVlO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9uZXJyb3JcbiAgOj0gZnVuIHggLT5cbiAgZmluYWxpemUgKCk7XG4gIGVycm9yX2NiIHgpO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9ubG9hZFxuICA6PSBmdW4geCAtPlxuICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgKEx3dF9qcy5zbGVlcCAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgIGlmICFleGVjdXRlZFxuICAgICAgICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5cbiAgICAgICAgICAgICAgKEpzLnN0cmluZyBcIkpzb25wOiBzY3JpcHQgbG9hZGVkIGJ1dCBjYWxsYmFjayBub3QgZXhlY3V0ZWRcIik7XG4gICAgICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgICAgIGVycm9yX2NiIHg7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKSkpO1xuICBsZXQgaW5pdCAoKSA9IGlnbm9yZSAoRG9tLmFwcGVuZENoaWxkIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBzY3JpcHQpIGluXG4gIGluaXQsIGZpbmFsaXplXG5cbmxldCBjYWxsXyBwcmVmaXggbWFrZV91cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBuYW1lID0gcHJlZml4IF4gcmFuZG9tX2lkZW50aWZpZXIgMTAgaW5cbiAgbGV0IHVyaSA9IG1ha2VfdXJpIG5hbWUgaW5cbiAgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYlxuXG5sZXQgY2FsbF9jdXN0b21fdXJsID90aW1lb3V0ID8ocHJlZml4ID0gXCJcIikgbWFrZV91cmkgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpbml0LCBmaW5hbGl6ZSA9IGNhbGxfIHByZWZpeCBtYWtlX3VyaSAoZnVuIF8gLT4gTHd0LmNhbmNlbCB0KSAoTHd0Lndha2V1cCB3KSBpblxuICBMd3Qub25fY2FuY2VsIHQgZmluYWxpemU7XG4gIGxldCBuZXdfdCA9XG4gICAgbWF0Y2ggdGltZW91dCB3aXRoXG4gICAgfCBOb25lIC0+IHRcbiAgICB8IFNvbWUgZGVsYXkgLT5cbiAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgZGVsYXkpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LmNhbmNlbCB0O1xuICAgICAgICAgICAgICB0KVxuICAgICAgICBpblxuICAgICAgICBMd3QuY2hvb3NlIFsgd2FpdDsgdCBdXG4gIGluXG4gIGluaXQgKCk7XG4gIG5ld190XG5cbmxldCBhZGRfcGFyYW0gbmFtZSB2YWx1ZSBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuICh4LCBfKSAtPiBub3QgKFN0cmluZy5lcXVhbCB4IG5hbWUpKSBsIGluXG4gIChuYW1lLCB2YWx1ZSkgOjogbFxuXG5sZXQgY2FsbCA/dGltZW91dCA/KHBhcmFtID0gXCJjYWxsYmFja1wiKSA/KHByZWZpeCA9IFwiXCIpIHVybCA9XG4gIGxldCBtYWtlX3VyaSBjYm5hbWUgPVxuICAgIG1hdGNoIFVybC51cmxfb2Zfc3RyaW5nIHVybCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiSnNvbnAuY2FsbDogQ2Fubm90IHBhcnNlIHVybFwiXG4gICAgfCBTb21lIHVybCAtPlxuICAgICAgICBsZXQgbmV3X3VybCA9XG4gICAgICAgICAgbWF0Y2ggdXJsIHdpdGhcbiAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBcbiAgICAgICAgICAgICAgICB7IGh0dHAgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmh1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBzXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT5cbiAgICAgICAgICAgICAgVXJsLkZpbGVcbiAgICAgICAgICAgICAgICB7IGZpbGUgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmZ1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgZmlsZS5VcmwuZnVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBVcmwuc3RyaW5nX29mX3VybCBuZXdfdXJsXG4gIGluXG4gIGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCB+cHJlZml4IG1ha2VfdXJpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFZpbmNlbnQgQmFsYXRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0ICggPj49ICkgPSBMd3QuYmluZFxuXG5sZXQgYXN5bmMgZiA9IEx3dC5hc3luYyAoZnVuICgpIC0+IEx3dF9qcy55aWVsZCAoKSA+Pj0gZilcblxubGV0IG9wdF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG1ha2VfZXZlbnQgZXZlbnRfa2luZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbGV0IGVsID0gcmVmIEpzLm51bGwgaW5cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgY2FuY2VsICgpID0gSnMuT3B0Lml0ZXIgIWVsIERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGNhbmNlbDtcbiAgZWwgOj1cbiAgICBKcy5zb21lXG4gICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgICAgICAgP2NhcHR1cmU6KG9wdF9tYXAgSnMuYm9vbCB1c2VfY2FwdHVyZSlcbiAgICAgICAgID9wYXNzaXZlOihvcHRfbWFwIEpzLmJvb2wgcGFzc2l2ZSlcbiAgICAgICAgIHRhcmdldFxuICAgICAgICAgZXZlbnRfa2luZFxuICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXYgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgY2FuY2VsICgpO1xuICAgICAgICAgICAgICBMd3Qud2FrZXVwIHcgZXY7XG4gICAgICAgICAgICAgIEpzLmJvb2wgdHJ1ZSkpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG5sZXQgY2F0Y2hfY2FuY2VsIGYgeCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiB4KVxuICAgIChmdW5jdGlvblxuICAgICAgfCBMd3QuQ2FuY2VsZWQgLT4gTHd0LnJldHVybiAoKVxuICAgICAgfCBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCB3aXRoX2Vycm9yX2xvZyBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuIGUgLT5cbiAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBlKSk7XG4gICAgICBMd3QucmV0dXJuICgpKVxuXG5sZXQgc2VxX2xvb3AgZXZoID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgKCogVXNpbmcgTHd0LmZhaWwgYXMgZGVmYXVsdCwgdG8gYmUgcG9seW1vcnBoaWMgKilcbiAgbGV0IGN1cl9oYW5kbGVyID0gcmVmIChMd3QucmV0dXJuICgpKSBpblxuICBsZXQgbHQsIF9sdyA9IEx3dC50YXNrICgpIGluXG4gIEx3dC5vbl9jYW5jZWwgbHQgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhbmNlbCAhY3VyO1xuICAgICAgaWYgY2FuY2VsX2hhbmRsZXIgdGhlbiBMd3QuY2FuY2VsICFjdXJfaGFuZGxlcjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgICAgKCogSW4gdGhlIGNhc2UgaXQgaGFzIGJlZW4gY2FuY2VsbGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBwcmV2aW91cyBoYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIG5vdCByZWluc3RhbGwgdGhlIGV2ZW50IGhhbmRsZXIgKilcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICFjdXJfaGFuZGxlciA+Pj0gYXV4KVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYXN5bmNfbG9vcCBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT4gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQpO1xuICAgICAgYXV4ICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYnVmZmVyZWRfbG9vcFxuICAgIGV2aFxuICAgID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSlcbiAgICA/KGNhbmNlbF9xdWV1ZSA9IHRydWUpXG4gICAgP3VzZV9jYXB0dXJlXG4gICAgP3Bhc3NpdmVcbiAgICB0YXJnZXRcbiAgICBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcXVldWUgPSByZWYgW10gaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgc3Bhd24gPSBMd3RfY29uZGl0aW9uLmNyZWF0ZSAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBpZiBjYW5jZWxfcXVldWUgdGhlbiBxdWV1ZSA6PSBbXTtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBzcGF3bmVyICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIHF1ZXVlIDo9IGUgOjogIXF1ZXVlO1xuICAgICAgTHd0X2NvbmRpdGlvbi5zaWduYWwgc3Bhd24gKCk7XG4gICAgICBzcGF3bmVyICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBsZXQgcmVjIHJ1bm5lciAoKSA9XG4gICAgY3VyX2hhbmRsZXIgOj0gTHd0LnJldHVybiAoKTtcbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggIXF1ZXVlIHdpdGhcbiAgICAgIHwgW10gLT4gTHd0X2NvbmRpdGlvbi53YWl0IHNwYXduID4+PSBydW5uZXJcbiAgICAgIHwgZSA6OiB0bCAtPlxuICAgICAgICAgIHF1ZXVlIDo9IHRsO1xuICAgICAgICAgIGN1cl9oYW5kbGVyIDo9IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0O1xuICAgICAgICAgICFjdXJfaGFuZGxlciA+Pj0gcnVubmVyKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBzcGF3bmVyKTtcbiAgTHd0LmFzeW5jIHJ1bm5lcjtcbiAgbHRcblxubGV0IGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IGxpbWl0ZWRfZnVuYyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGhhbmRsZXIgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBhc3luY19sb29wIGV2ZW50ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgKGZ1biBldiBsdCAtPlxuICAgICAgaW5jciBjb3VudDtcbiAgICAgIGxldCBuYiA9ICFjb3VudCBpblxuICAgICAgbGltaXRlZF9mdW5jICgpID4+PSBmdW4gXyAtPiBpZiAhY291bnQgPSBuYiB0aGVuIGhhbmRsZXIgZXYgbHQgZWxzZSBMd3QucmV0dXJuICgpKVxuXG5sZXQgbGltaXRlZF9sb29wIGV2ZW50ID8oZWxhcHNlZF90aW1lID0gMC4xKSA9XG4gIGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IChmdW4gKCkgLT4gTHd0X2pzLnNsZWVwIGVsYXBzZWRfdGltZSlcblxubGV0IGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY29weSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2Vtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBpbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5pbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRpbWV1cGRhdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ3N0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnbGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyb3AgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5ibHVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VibWl0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWxlY3QgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbXB0aWVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2Fkc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXlpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yYXRlY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVraW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc3RhbGxlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1c3BlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdm9sdW1lY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB3YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndhaXRpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG4oKiBzcGVjaWFsIGNhc2UgZm9yIG1vdXNld2hlZWwsIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgYnJvd3NlciAqKVxubGV0IG1vdXNld2hlZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbV9odG1sLmFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIH5keCB+ZHkgLT5cbiAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgZXY7XG4gICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgTHd0Lndha2V1cCB3IChldiwgKGR4LCBkeSkpO1xuICAgICAgICAgICBKcy5ib29sIHRydWUpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG4oKiBsZXQgX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5fRE9NTW91c2VTY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuKilcblxubGV0IHdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2hzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaG1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmVudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmxlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcnVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25lbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCB0cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25ydW4gP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IGNsaWNrcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjbGljayA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNvcGllcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjb3B5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXN0ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGFzdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkYmxjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZGJsY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNldXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNldXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlbW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2Vtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5cHJlc3NlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlwcmVzcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXl1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5dXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGlucHV0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBpbnB1dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRpbWV1cGRhdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRpbWV1cGRhdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW50ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbnRlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ2xlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyb3BzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyb3AgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2hlZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2hzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNobW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2htb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hjYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZm9jdXNlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBmb2N1cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGJsdXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGJsdXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzY3JvbGxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNjcm9sbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1Ym1pdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VibWl0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2VsZWN0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWxlY3QgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBhYm9ydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgYWJvcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlcnJvcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZXJyb3IgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2FucGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXl0aHJvdWdocyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjYW5wbGF5dGhyb3VnaCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGR1cmF0aW9uY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkdXJhdGlvbmNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGVtcHRpZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVtcHRpZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbmRlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZW5kZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkZWRkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkbWV0YWRhdGFzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWRlZG1ldGFkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2Fkc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXVzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGF1c2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwbGF5cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwbGF5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheWluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheWluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJhdGVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHJhdGVjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVrZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlZWtpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdGFsbGVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzdGFsbGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3VzcGVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VzcGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHZvbHVtZWNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agdm9sdW1lY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2FpdGluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agd2FpdGluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9zdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGdvdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmVudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmxlYXZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVybGVhdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVybW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm1vdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJvdmVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcnVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVydXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9uZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9ucnVucyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9ucnVuID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lICgpID1cbiAgbGV0IHQsIHMgPSBMd3Qud2FpdCAoKSBpblxuICBsZXQgKF8gOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCkgPVxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIChfIDogSnMubnVtYmVyX3QpIC0+IEx3dC53YWtldXAgcyAoKSkpXG4gIGluXG4gIHRcblxubGV0IG9ubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IGRvbUNvbnRlbnRMb2FkZWQgPVxuICBsZXQgY29tcGxldGUgPSBKcy5zdHJpbmcgXCJjb21wbGV0ZVwiIGluXG4gIGxldCBkb2MgPSBEb21faHRtbC53aW5kb3cjIy5kb2N1bWVudCBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBkb2MjIy5yZWFkeVN0YXRlID09IGNvbXBsZXRlXG4gICAgdGhlbiBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gICAgICBsZXQgd2FrZXVwIHcgXyA9IGlmIEx3dC5pc19zbGVlcGluZyB0IHRoZW4gTHd0Lndha2V1cCB3ICgpIGluXG4gICAgICBsZXQgd2FrZXVwX2V4biB3IGUgPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXBfZXhuIHcgZSBpblxuICAgICAgKCogaHR0cHM6Ly9naXRodWIuY29tL2RwZXJpbmkvQ29udGVudExvYWRlZC9ibG9iL21hc3Rlci9zcmMvY29udGVudGxvYWRlZC5qcyAqKVxuICAgICAgbGV0IHJlZ3VsYXIgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgZG9jIGluXG4gICAgICBMd3Qub25fYW55IHJlZ3VsYXIgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGllOCAqKVxuICAgICAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPVxuICAgICAgICBhc3luY19sb29wXG4gICAgICAgICAgKG1ha2VfZXZlbnQgKERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiKSlcbiAgICAgICAgICBkb2NcbiAgICAgICAgICAoZnVuIGUgXyAtPlxuICAgICAgICAgICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZSB0aGVuIHdha2V1cCB3IGU7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICBpblxuICAgICAgKCogZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqKVxuICAgICAgbGV0IGluaXQgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93IGluXG4gICAgICBMd3Qub25fYW55IGluaXQgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGNsZWFuIGFuZCByZXR1cm4gKilcbiAgICAgIEx3dC5iaW5kIHQgKGZ1biBfZSAtPlxuICAgICAgICAgIEx3dC5jYW5jZWwgcmVndWxhcjtcbiAgICAgICAgICBMd3QuY2FuY2VsIHJlYWR5c3RhdGVjaGFuZ2U7XG4gICAgICAgICAgTHd0LmNhbmNlbCBpbml0O1xuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IG9udW5sb2FkICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC51bmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmJlZm9yZXVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmVmb3JldW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25yZXNpemUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnJlc2l6ZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm9yaWVudGF0aW9uY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25wb3BzdGF0ZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9wc3RhdGUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmhhc2hjaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lmhhc2hjaGFuZ2UgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpID0gTHd0LnBpY2sgWyBvbnJlc2l6ZSAoKTsgb25vcmllbnRhdGlvbmNoYW5nZSAoKSBdXG5cbmxldCBvbnJlc2l6ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnJlc2l6ZSAoKSkgKCkgdFxuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbnBvcHN0YXRlcyB0ID0gc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucG9wc3RhdGUgKCkpICgpIHRcblxubGV0IG9uaGFzaGNoYW5nZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbmhhc2hjaGFuZ2UgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyB0ID1cbiAgc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpICgpIHRcblxubGV0IGxpbWl0ZWRfb25yZXNpemVzID9lbGFwc2VkX3RpbWUgdCA9XG4gIGxpbWl0ZWRfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpID9lbGFwc2VkX3RpbWUgKCkgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG5cbmxldCBsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuIEZpbGVcbm9wZW4hIEltcG9ydFxuXG5sZXQgcmVhZF93aXRoX2ZpbGVyZWFkZXIgKGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyKSBraW5kIGZpbGUgPVxuICBsZXQgcmVhZGVyID0gbmV3JWpzIGZpbGVSZWFkZXIgaW5cbiAgbGV0IHJlcywgdyA9IEx3dC50YXNrICgpIGluXG4gIHJlYWRlciMjLm9ubG9hZGVuZCA6PVxuICAgIGhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGlmIHJlYWRlciMjLnJlYWR5U3RhdGUgPT0gRE9ORVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTHd0Lndha2V1cFxuICAgICAgICAgICAgd1xuICAgICAgICAgICAgKG1hdGNoIE9wdC50b19vcHRpb24gKENvZXJjZVRvLnN0cmluZyByZWFkZXIjIy5yZXN1bHQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogY2FuJ3QgaGFwcGVuOiBjYWxsZWQgd2l0aCBnb29kIHJlYWRBc18gKilcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IHMpXG4gICAgICAgIGVsc2UgKCk7XG4gICAgICAgICgqIENDQyBUT0RPOiBoYW5kbGUgZXJyb3JzICopXG4gICAgICAgIEpzLl9mYWxzZSk7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVhZGVyIyNhYm9ydCk7XG4gIChtYXRjaCBraW5kIHdpdGhcbiAgfCBgQmluYXJ5U3RyaW5nIC0+IHJlYWRlciMjcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGVcbiAgfCBgVGV4dCAtPiByZWFkZXIjI3JlYWRBc1RleHQgZmlsZVxuICB8IGBUZXh0X3dpdGhFbmNvZGluZyBlIC0+IHJlYWRlciMjcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlXG4gIHwgYERhdGFVUkwgLT4gcmVhZGVyIyNyZWFkQXNEYXRhVVJMIGZpbGUpO1xuICByZXNcblxubGV0IHJlYWRlciBraW5kIGZpbGUgPSByZWFkX3dpdGhfZmlsZXJlYWRlciBmaWxlUmVhZGVyIGtpbmQgZmlsZVxuXG5sZXQgcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGUgPSByZWFkZXIgYEJpbmFyeVN0cmluZyBmaWxlXG5cbmxldCByZWFkQXNUZXh0IGZpbGUgPSByZWFkZXIgYFRleHQgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlID0gcmVhZGVyIChgVGV4dF93aXRoRW5jb2RpbmcgZSkgZmlsZVxuXG5sZXQgcmVhZEFzRGF0YVVSTCBmaWxlID0gcmVhZGVyIGBEYXRhVVJMIGZpbGVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0XG4gIGluY2x1ZGUgTHd0X3htbEh0dHBSZXF1ZXN0XG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5GaWxlXG4gIGluY2x1ZGUgTHd0X2ZpbGVcbmVuZFxuXG5tb2R1bGUgSnNvbnAgPSBMd3RfanNvbnBcbm1vZHVsZSBMd3RfanMgPSBMd3RfanNcbm1vZHVsZSBMd3RfanNfZXZlbnRzID0gTHd0X2pzX2V2ZW50c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogbmVlZCB0byBzcGVjaWZ5IG1lc3NhZ2VzIHdoZXJlIHRoZXJlIGlzIGFuIGVycm9yICopXG5sZXQgdG9zcyA6ICdhICdiLiAnYSAtPiAnYiA9XG4gZnVuIGUgLT5cbiAgbGV0ICgpID1cbiAgICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwidG9zc1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IGUgfF1cbiAgaW5cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBpZCB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJpZFwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBkZWJ1ZyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJkZWJ1Z1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBpbmZvIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImluZm9cIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgbm90aWNlIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcIm5vdGljZVwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCB3YXJuaW5nIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcIndhcm5pbmdcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZXJyb3IgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZXJyb3JcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZmF0YWwgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZmF0YWxcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQganF1ZXJ5X29uIChzZWxlY3RvciA6IHN0cmluZykgKGV2ZW50IDogc3RyaW5nKSBoYW5kbGVyID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwianF1ZXJ5T25cIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHNlbGVjdG9yKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBldmVudCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXI7XG4gICAgfF1cblxubGV0IG9wdGlvbl9zdHJpbmcgKGlkIDogc3RyaW5nIG9wdGlvbikgPVxuICBtYXRjaCBpZCB3aXRoXG4gIHwgU29tZSBpZCAtPiBKcy5zb21lIChKcy5zdHJpbmcgaWQpXG4gIHwgTm9uZSAtPiBKcy5udWxsXG5cbmxldCBwbG90UE5HID8ocGxvdFN0eWxlSWQgOiBzdHJpbmcgb3B0aW9uKSAocGxvdERpdklkIDogc3RyaW5nKSAodGl0bGUgOiBzdHJpbmcpXG4gICAgKHBsb3ROYW1lIDogc3RyaW5nKSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInBsb3RQTkdcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3REaXZJZCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdGl0bGUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3ROYW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKG9wdGlvbl9zdHJpbmcgcGxvdFN0eWxlSWQpO1xuICAgIHxdXG5cbmxldCBwbG90U1ZHID8ocGxvdFN0eWxlSWQgOiBzdHJpbmcgb3B0aW9uKSAocGxvdERpdklkIDogc3RyaW5nKSAodGl0bGUgOiBzdHJpbmcpXG4gICAgKHBsb3ROYW1lIDogc3RyaW5nKSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInBsb3RTVkdcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3REaXZJZCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdGl0bGUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHBsb3ROYW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKG9wdGlvbl9zdHJpbmcgcGxvdFN0eWxlSWQpO1xuICAgIHxdXG5cbmxldCBzYXZlRmlsZSB+KGRhdGEgOiAnYSBKcy50KSB+KG1pbWUgOiBzdHJpbmcpIH4oZmlsZW5hbWUgOiBzdHJpbmcpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInNhdmVGaWxlXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgZGF0YTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBtaW1lKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgfF1cblxudHlwZSBtZXRoID0gWyBgREVMRVRFIHwgYEdFVCB8IGBIRUFEIHwgYE9QVElPTlMgfCBgUEFUQ0ggfCBgUE9TVCB8IGBQVVQgXVxuXG5sZXQgbWV0aG9kX3RvX3N0cmluZyA6IG1ldGggLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gIHwgYFBBVENIIC0+IFwiUEFUQ0hcIlxuICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gIHwgYFBVVCAtPiBcIlBVVFwiXG5cbmxldCBhamF4X3JlcXVlc3QgPyh0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSB+KHVybCA6IHN0cmluZykgfihtZXRoIDogbWV0aClcbiAgICA/KGRhdGEgOiBzdHJpbmcgb3B0aW9uKSB+KGhhbmRsZXIgOiBpbnQgLT4gc3RyaW5nIC0+IHVuaXQpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiYWpheFJlcXVlc3RcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHVybCk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgKG1ldGhvZF90b19zdHJpbmcgbWV0aCkpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdFxuICAgICAgICAoSnMuT3B0Lm9wdGlvblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgIHwgU29tZSBkYXRhIC0+IFNvbWUgKEpzLnN0cmluZyBkYXRhKSkpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdFxuICAgICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHN0YXR1cyByZXNwb25zZSAtPlxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBkZWJ1Z1xuICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIChcInJlcXVlc3QgXCIgXiB1cmwgXiBcIiBhbnN3ZXI6IFwiIF4gc3RyaW5nX29mX2ludCBzdGF0dXMpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gZGVidWcgcmVzcG9uc2UgaW5cbiAgICAgICAgICAgICBoYW5kbGVyIHN0YXR1cyAoSnMudG9fc3RyaW5nIHJlc3BvbnNlKSkpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdFxuICAgICAgICAoSnMuT3B0Lm9wdGlvblxuICAgICAgICAgICAobWF0Y2ggdGltZW91dCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgIHwgU29tZSB0aW1lb3V0IC0+IFNvbWUgdGltZW91dCkpO1xuICAgIHxdXG5cbigqIFRoaXMgaXMgdG8gaGFuZGxlIGVycm9ycyBiZWluZyBsb3N0IGluIGFzeW5jc1xuICAgc28gdGhlcmUgc2hvdWxkIGJlIG5vIG90aGVyIGFzeW5jIGNhbGxzIGluIHRoZVxuICAgY29kZS5cbiopXG5sZXQgYXN5bmMgbG9jICh0YXNrIDogdW5pdCAtPiAnYSBMd3QudCkgOiB1bml0ID1cbiAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc19ldmVudHMuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhdGNoIHRhc2sgKGZ1biBleG4gLT5cbiAgICAgICAgICBsZXQgKCkgPSBpbmZvIChKcy5zdHJpbmcgKGxvYyBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pKSBpblxuICAgICAgICAgIGxldCAoKSA9IGRlYnVnIChKcy5zdHJpbmcgKFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpKSBpblxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBndWlkICgpIDogc3RyaW5nID1cbiAgSnMudG9fc3RyaW5nIChKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZ3VpZFwiKSBbfHxdKVxuXG5sZXQgbW9kYWwgfihpZCA6IHN0cmluZykgfihhY3Rpb24gOiBzdHJpbmcpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcIm1vZGFsXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGFjdGlvbikgfF1cblxubGV0IGVsZW1lbnRfZGF0YSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgKGxhYmVsIDogc3RyaW5nKSA6XG4gICAgSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiZWxlbWVudERhdGFcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQ7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBsYWJlbCkgfF1cblxubGV0IGNyZWF0ZV9zb3J0IChpZCA6IHN0cmluZykgKGhhbmRsZXIgOiBEb21faHRtbC5ldmVudCBKcy50IC0+ICdiIC0+IHVuaXQpIDpcbiAgICB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwiY3JlYXRlU29ydFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgaGFuZGxlciB8XVxuXG5sZXQgY2hpbGRyZW5fdmFsdWUgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChzZWxlY3RvciA6IHN0cmluZylcbiAgICAobWFwIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+ICdhKSA6ICdhIGxpc3QgPVxuICBBcnJheS50b19saXN0XG4gICAgKEpzLnRvX2FycmF5XG4gICAgICAgKEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgICAgICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNoaWxkcmVuVmFsdWVcIilcbiAgICAgICAgICBbfFxuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50O1xuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHNlbGVjdG9yKTtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgbWFwO1xuICAgICAgICAgIHxdKSlcblxubGV0IGhpZGVfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaGlkZUNvZGVNaXJyb3JcIikgW3x8XVxuXG5sZXQgc2hvd19jb2RlbWlycm9yICgpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzaG93Q29kZU1pcnJvclwiKSBbfHxdXG4iLCJsZXQgcmV2X3NwbGl0IGwgPVxuICBsZXQgcmVjIGlubmVyIHhzIHlzID0gZnVuY3Rpb25cbiAgICB8ICh4LCB5KSA6OiB4eXMgLT5cbiAgICAgICBpbm5lciAoeDo6eHMpICh5Ojp5cykgeHlzXG4gICAgfCBbXSAtPiAoeHMsIHlzKVxuICBpblxuICBpbm5lciBbXSBbXSBsXG5cbnR5cGUgd3JhcCA9IFtcbiAgfCBgV3JhcF9hdG9tc1xuICB8IGBBbHdheXNfd3JhcFxuICB8IGBOZXZlcl93cmFwXG4gIHwgYEZvcmNlX2JyZWFrc1xuICB8IGBGb3JjZV9icmVha3NfcmVjXG4gIHwgYE5vX2JyZWFrc1xuXVxuXG50eXBlIGxhYmVsX2JyZWFrID0gW1xuICB8IGBBdXRvXG4gIHwgYEFsd2F5c1xuICB8IGBBbHdheXNfcmVjXG4gIHwgYE5ldmVyXG5dXG5cbnR5cGUgc3R5bGVfbmFtZSA9IHN0cmluZ1xudHlwZSBzdHlsZSA9IHtcbiAgdGFnX29wZW4gOiBzdHJpbmc7XG4gIHRhZ19jbG9zZSA6IHN0cmluZ1xufVxuXG50eXBlIGF0b21fcGFyYW0gPSB7XG4gIGF0b21fc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGF0b20gPSB7XG4gIGF0b21fc3R5bGUgPSBOb25lXG59XG5cbnR5cGUgbGlzdF9wYXJhbSA9IHtcbiAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA6IGJvb2w7XG4gIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA6IGJvb2w7XG4gIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgOiBib29sO1xuICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgOiBib29sO1xuICBzcGFjZV9iZWZvcmVfY2xvc2luZyA6IGJvb2w7XG4gIHN0aWNrX3RvX2xhYmVsIDogYm9vbDtcbiAgYWxpZ25fY2xvc2luZyA6IGJvb2w7XG4gIHdyYXBfYm9keSA6IHdyYXA7XG4gIGluZGVudF9ib2R5IDogaW50O1xuICBsaXN0X3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIG9wZW5pbmdfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgYm9keV9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBzZXBhcmF0b3Jfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgY2xvc2luZ19zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgbGlzdCA9IHtcbiAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IHRydWU7XG4gIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IHRydWU7XG4gIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgPSBmYWxzZTtcbiAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gdHJ1ZTtcbiAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgPSB0cnVlO1xuICBzdGlja190b19sYWJlbCA9IHRydWU7XG4gIGFsaWduX2Nsb3NpbmcgPSB0cnVlO1xuICB3cmFwX2JvZHkgPSBgV3JhcF9hdG9tcztcbiAgaW5kZW50X2JvZHkgPSAyO1xuICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgb3BlbmluZ19zdHlsZSA9IE5vbmU7XG4gIGJvZHlfc3R5bGUgPSBOb25lO1xuICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICBjbG9zaW5nX3N0eWxlID0gTm9uZTtcbn1cblxudHlwZSBsYWJlbF9wYXJhbSA9IHtcbiAgbGFiZWxfYnJlYWs6IGxhYmVsX2JyZWFrO1xuICBzcGFjZV9hZnRlcl9sYWJlbCA6IGJvb2w7XG4gIGluZGVudF9hZnRlcl9sYWJlbCA6IGludDtcbiAgbGFiZWxfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGxhYmVsID0ge1xuICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICBzcGFjZV9hZnRlcl9sYWJlbCA9IHRydWU7XG4gIGluZGVudF9hZnRlcl9sYWJlbCA9IDI7XG4gIGxhYmVsX3N0eWxlID0gTm9uZTtcbn1cblxudHlwZSB0ID1cbiAgICBBdG9tIG9mIHN0cmluZyAqIGF0b21fcGFyYW1cbiAgfCBMaXN0IG9mIChzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgKiBsaXN0X3BhcmFtKSAqIHQgbGlzdFxuICB8IExhYmVsIG9mICh0ICogbGFiZWxfcGFyYW0pICogdFxuICB8IEN1c3RvbSBvZiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KVxuXG50eXBlIGVzY2FwZSA9XG4gICAgWyBgTm9uZVxuICAgIHwgYEVzY2FwZSBvZlxuICAgICAgICAoKHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQpIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG4gICAgfCBgRXNjYXBlX3N0cmluZyBvZiAoc3RyaW5nIC0+IHN0cmluZykgXVxuXG50eXBlIHN0eWxlcyA9IChzdHlsZV9uYW1lICogc3R5bGUpIGxpc3RcblxuKCpcbiAgIFRyYW5zZm9ybSBhIHRyZWUgc3RhcnRpbmcgZnJvbSB0aGUgbGVhdmVzLCBwcm9wYWdhdGluZyBhbmQgbWVyZ2luZ1xuICAgYWNjdW11bGF0b3JzIHVudGlsIHJlYWNoaW5nIHRoZSByb290LlxuKilcbmxldCBwcm9wYWdhdGVfZnJvbV9sZWFmX3RvX3Jvb3RcbiAgfmluaXRfYWNjICAoKiBjcmVhdGUgaW5pdGlhbCBhY2N1bXVsYXRvciBmb3IgYSBsZWFmICopXG4gIH5tZXJnZV9hY2MgKCogbWVyZ2UgdHdvIGFjY3VtdWxhdG9ycyBjb21pbmcgZnJvbSBjaGlsZCBub2RlcyAqKVxuICB+bWFwX25vZGUgICgqIChub2RlLCBhY2MpIC0+IChub2RlLCBhY2MpICopXG4gIHggPVxuXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQXRvbSBfIC0+XG4gICAgICAgIGxldCBhY2MgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIG1hcF9ub2RlIHggYWNjXG4gICAgfCBMaXN0IChwYXJhbSwgY2hpbGRyZW4pIC0+XG4gICAgICAgIGxldCBuZXdfY2hpbGRyZW4sIGFjY3MgPSByZXZfc3BsaXQgKExpc3QucmV2X21hcCBhdXggY2hpbGRyZW4pIGluXG4gICAgICAgIGxldCBhY2MgPSBMaXN0LmZvbGRfbGVmdCBtZXJnZV9hY2MgKGluaXRfYWNjIHgpIGFjY3MgaW5cbiAgICAgICAgbWFwX25vZGUgKExpc3QgKHBhcmFtLCBuZXdfY2hpbGRyZW4pKSBhY2NcbiAgICB8IExhYmVsICgoeDEsIHBhcmFtKSwgeDIpIC0+XG4gICAgICAgIGxldCBhY2MwID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBsZXQgbmV3X3gxLCBhY2MxID0gYXV4IHgxIGluXG4gICAgICAgIGxldCBuZXdfeDIsIGFjYzIgPSBhdXggeDIgaW5cbiAgICAgICAgbGV0IGFjYyA9IG1lcmdlX2FjYyAobWVyZ2VfYWNjIGFjYzAgYWNjMSkgYWNjMiBpblxuICAgICAgICBtYXBfbm9kZSAoTGFiZWwgKChuZXdfeDEsIHBhcmFtKSwgbmV3X3gyKSkgYWNjXG4gICAgfCBDdXN0b20gXyAtPlxuICAgICAgICBsZXQgYWNjID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBtYXBfbm9kZSB4IGFjY1xuICBpblxuICBhdXggeFxuXG4oKlxuICAgQ29udmVydCB3cmFwcGFibGUgbGlzdHMgaW50byB2ZXJ0aWNhbCBsaXN0cyBpZiBhbnkgb2YgdGhlaXIgZGVzY2VuZGFudHNcbiAgIGhhcyB0aGUgYXR0cmlidXRlIHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjLlxuKilcbmxldCBwcm9wYWdhdGVfZm9yY2VkX2JyZWFrcyB4ID1cbiAgKCogYWNjID0gd2hldGhlciB0byBmb3JjZSBicmVha3MgaW4gd3JhcHBhYmxlIGxpc3RzIG9yIGxhYmVscyAqKVxuICBsZXQgaW5pdF9hY2MgPSBmdW5jdGlvblxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWM7IF8gfSksIF8pXG4gICAgfCBMYWJlbCAoKF8sIHsgbGFiZWxfYnJlYWsgPSBgQWx3YXlzX3JlYzsgXyB9KSwgXykgLT4gdHJ1ZVxuICAgIHwgQXRvbSBfXG4gICAgfCBMYWJlbCBfXG4gICAgfCBDdXN0b20gX1xuICAgIHwgTGlzdCBfIC0+IGZhbHNlXG4gIGluXG4gIGxldCBtZXJnZV9hY2MgZm9yY2VfYnJlYWtzMSBmb3JjZV9icmVha3MyID1cbiAgICBmb3JjZV9icmVha3MxIHx8IGZvcmNlX2JyZWFrczJcbiAgaW5cbiAgbGV0IG1hcF9ub2RlIHggZm9yY2VfYnJlYWtzID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjOyBfIH0pLCBfKSAtPiB4LCB0cnVlXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzOyBfIH0pLCBfKSAtPiB4LCBmb3JjZV9icmVha3NcblxuICAgIHwgTGlzdCAoKG9wLCBzZXAsIGNsLCAoeyB3cmFwX2JvZHkgPSAoYFdyYXBfYXRvbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBBbHdheXNfd3JhcCk7IF8gfSBhcyBwKSksXG4gICAgICAgICAgICBjaGlsZHJlbikgLT5cbiAgICAgICAgaWYgZm9yY2VfYnJlYWtzIHRoZW5cbiAgICAgICAgICBsZXQgcCA9IHsgcCB3aXRoIHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3MgfSBpblxuICAgICAgICAgIExpc3QgKChvcCwgc2VwLCBjbCwgcCksIGNoaWxkcmVuKSwgdHJ1ZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeCwgZmFsc2VcblxuICAgIHwgTGFiZWwgKChhLCAoeyBsYWJlbF9icmVhayA9IGBBdXRvOyBfIH0gYXMgbHApKSwgYikgLT5cbiAgICAgICAgaWYgZm9yY2VfYnJlYWtzIHRoZW5cbiAgICAgICAgICBsZXQgbHAgPSB7IGxwIHdpdGggbGFiZWxfYnJlYWsgPSBgQWx3YXlzIH0gaW5cbiAgICAgICAgICBMYWJlbCAoKGEsIGxwKSwgYiksIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHgsIGZhbHNlXG5cbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBOb19icmVha3M7IF8gfSksIF8pXG4gICAgfCBMYWJlbCAoKF8sIHsgbGFiZWxfYnJlYWsgPSAoYEFsd2F5cyB8IGBBbHdheXNfcmVjIHwgYE5ldmVyKTsgXyB9KSwgXylcbiAgICB8IEF0b20gX1xuICAgIHwgQ3VzdG9tIF8gLT4geCwgZm9yY2VfYnJlYWtzXG4gIGluXG4gIGxldCBuZXdfeCwgX2ZvcmNlZF9icmVha3MgPVxuICAgIHByb3BhZ2F0ZV9mcm9tX2xlYWZfdG9fcm9vdFxuICAgICAgfmluaXRfYWNjXG4gICAgICB+bWVyZ2VfYWNjXG4gICAgICB+bWFwX25vZGVcbiAgICAgIHhcbiAgaW5cbiAgbmV3X3hcblxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiAgKCpcbiAgICAgUmV3cml0ZSB0aGUgdHJlZSB0byBiZSBwcmludGVkLlxuICAgICBDdXJyZW50bHksIHRoaXMgaXMgdXNlZCBvbmx5IHRvIGhhbmRsZSBgRm9yY2VfYnJlYWtzX3JlYy5cbiAgKilcbiAgbGV0IHJld3JpdGUgeCA9IHByb3BhZ2F0ZV9mb3JjZWRfYnJlYWtzIHhcblxuICAoKlxuICAgIFJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IG1hcmtfb3Blbl90YWcgYW5kIG1hcmtfY2xvc2VfdGFnXG4gICAgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIGNhbGxpbmcgcHBfb3V0cHV0X3N0cmluZyBvbmNlLlxuICAgIEl0J3MgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gYWx0aG91Z2ggbm90IGd1YXJhbnRlZWQgYnkgdGhlXG4gICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgRm9ybWF0IG1vZHVsZS5cbiAgKilcbiAgbGV0IHNldF9lc2NhcGUgZm10IGVzY2FwZSA9XG4gICAgbGV0IHByaW50MCwgZmx1c2gwID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgICBsZXQgdGFnZjAgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cblxuICAgIGxldCBpc190YWcgPSByZWYgZmFsc2UgaW5cblxuICAgIGxldCBtb3QgdGFnID1cbiAgICAgIGlzX3RhZyA6PSB0cnVlO1xuICAgICAgdGFnZjAubWFya19vcGVuX3N0YWcgdGFnXG4gICAgaW5cblxuICAgIGxldCBtY3QgdGFnID1cbiAgICAgIGlzX3RhZyA6PSB0cnVlO1xuICAgICAgdGFnZjAubWFya19jbG9zZV9zdGFnIHRhZ1xuICAgIGluXG5cbiAgICBsZXQgcHJpbnQgcyBwIG4gPVxuICAgICAgaWYgIWlzX3RhZyB0aGVuXG4gICAgICAgIChwcmludDAgcyBwIG47XG4gICAgICAgICBpc190YWcgOj0gZmFsc2UpXG4gICAgICBlbHNlXG4gICAgICAgIGVzY2FwZSBwcmludDAgcyBwIG5cbiAgICBpblxuXG4gICAgbGV0IHRhZ2YgPSB7XG4gICAgICB0YWdmMCB3aXRoXG4gICAgICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3RcbiAgICB9XG4gICAgaW5cbiAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIGZtdCBwcmludCBmbHVzaDA7XG4gICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10IHRhZ2ZcblxuXG4gIGxldCBzZXRfZXNjYXBlX3N0cmluZyBmbXQgZXNjID1cbiAgICBsZXQgZXNjYXBlIHByaW50IHMgcCBuID1cbiAgICAgIGxldCBzMCA9IFN0cmluZy5zdWIgcyBwIG4gaW5cbiAgICAgIGxldCBzMSA9IGVzYyBzMCBpblxuICAgICAgcHJpbnQgczEgMCAoU3RyaW5nLmxlbmd0aCBzMSlcbiAgICBpblxuICAgIHNldF9lc2NhcGUgZm10IGVzY2FwZVxuXG5cbiAgbGV0IGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBsID1cbiAgICBpZiBsIDw+IFtdIHRoZW4gKFxuICAgICAgRm9ybWF0LnBwX3NldF90YWdzIGZtdCB0cnVlO1xuICAgICAgbGV0IHRibDEgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBsZXQgdGJsMiA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgIExpc3QuaXRlciAoXG4gICAgICAgIGZ1biAoc3R5bGVfbmFtZSwgc3R5bGUpIC0+XG4gICAgICAgICAgSGFzaHRibC5hZGQgdGJsMSBzdHlsZV9uYW1lIHN0eWxlLnRhZ19vcGVuO1xuICAgICAgICAgIEhhc2h0YmwuYWRkIHRibDIgc3R5bGVfbmFtZSBzdHlsZS50YWdfY2xvc2VcbiAgICAgICkgbDtcbiAgICAgIGxldCBtYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgICAgICAgfCBGb3JtYXQuU3RyaW5nX3RhZyBzdHlsZV9uYW1lIC0+XG4gICAgICAgICAgICAodHJ5IEhhc2h0YmwuZmluZCB0YmwxIHN0eWxlX25hbWVcbiAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiKVxuICAgICAgICB8IF8gLT4gXCJcIlxuICAgICAgaW5cbiAgICAgIGxldCBtYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRm9ybWF0LlN0cmluZ190YWcgc3R5bGVfbmFtZSAtPlxuICAgICAgICAgICAgKHRyeSBIYXNodGJsLmZpbmQgdGJsMiBzdHlsZV9uYW1lXG4gICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gXCJcIilcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBcIlwiXG4gICAgICBpblxuXG4gICAgICBsZXQgdGFnZiA9IHtcbiAgICAgICAgKEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSkgd2l0aFxuICAgICAgICAgIG1hcmtfb3Blbl9zdGFnID0gbWFya19vcGVuX3RhZztcbiAgICAgICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtYXJrX2Nsb3NlX3RhZ1xuICAgICAgfVxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCB0YWdmXG4gICAgKTtcblxuICAgIChtYXRjaCBlc2NhcGUgd2l0aFxuICAgICAgICAgYE5vbmUgLT4gKClcbiAgICAgICB8IGBFc2NhcGUgZXNjIC0+IHNldF9lc2NhcGUgZm10IGVzY1xuICAgICAgIHwgYEVzY2FwZV9zdHJpbmcgZXNjIC0+IHNldF9lc2NhcGVfc3RyaW5nIGZtdCBlc2MpXG5cblxuICBsZXQgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudCA9XG4gICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICBgQWx3YXlzX3dyYXBcbiAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgIHwgYFdyYXBfYXRvbXMgLT4gRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICB8IGBGb3JjZV9icmVha3NfcmVjIC0+IEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTm9fYnJlYWtzIC0+IEZvcm1hdC5wcF9vcGVuX2hib3ggZm10ICgpXG5cbiAgbGV0IGV4dHJhX2JveCBwIGwgPVxuICAgIGxldCB3cmFwID1cbiAgICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgICBgQWx3YXlzX3dyYXAgLT4gdHJ1ZVxuICAgICAgICB8IGBOZXZlcl93cmFwXG4gICAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgICB8IGBGb3JjZV9icmVha3NfcmVjXG4gICAgICAgIHwgYE5vX2JyZWFrcyAtPiBmYWxzZVxuICAgICAgICB8IGBXcmFwX2F0b21zIC0+XG4gICAgICAgICAgICBMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uIEF0b20gXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuICAgIGluXG4gICAgaWYgd3JhcCB0aGVuXG4gICAgICAoKGZ1biBmbXQgLT4gRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCAwKSxcbiAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKSkpXG4gICAgZWxzZVxuICAgICAgKChmdW4gXyAtPiAoKSksXG4gICAgICAgKGZ1biBfIC0+ICgpKSlcblxuXG4gIGxldCBwcF9vcGVuX25vbmFsaWduZWRfYm94IGZtdCBwIGluZGVudCBsID1cbiAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgIGBBbHdheXNfd3JhcCAtPiBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTmV2ZXJfd3JhcCAtPiBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBXcmFwX2F0b21zIC0+XG4gICAgICAgICAgaWYgTGlzdC5mb3JfYWxsIChmdW5jdGlvbiBBdG9tIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGwgdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCBpbmRlbnRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWMgLT4gRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOb19icmVha3MgLT4gRm9ybWF0LnBwX29wZW5faGJveCBmbXQgKClcblxuXG4gIGxldCBvcGVuX3RhZyBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzIC0+IEZvcm1hdC5wcF9vcGVuX3N0YWcgZm10IChGb3JtYXQuU3RyaW5nX3RhZyBzKVxuXG4gIGxldCBjbG9zZV90YWcgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgXyAtPiBGb3JtYXQucHBfY2xvc2Vfc3RhZyBmbXQgKClcblxuICBsZXQgdGFnX3N0cmluZyBmbXQgbyBzID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICAgICAgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzXG4gICAgICB8IFNvbWUgdGFnIC0+XG4gICAgICAgICAgRm9ybWF0LnBwX29wZW5fc3RhZyBmbXQgKEZvcm1hdC5TdHJpbmdfdGFnIHRhZyk7XG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgcztcbiAgICAgICAgICBGb3JtYXQucHBfY2xvc2Vfc3RhZyBmbXQgKClcblxuICBsZXQgcmVjIGZwcmludF90IGZtdCA9IGZ1bmN0aW9uXG4gICAgICBBdG9tIChzLCBwKSAtPlxuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmF0b21fc3R5bGUgcztcblxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHApIGFzIHBhcmFtLCBsKSAtPlxuICAgICAgICBvcGVuX3RhZyBmbXQgcC5saXN0X3N0eWxlO1xuICAgICAgICBpZiBwLmFsaWduX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIGZwcmludF9saXN0IGZtdCBOb25lIHBhcmFtIGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZwcmludF9saXN0MiBmbXQgcGFyYW0gbDtcbiAgICAgICAgY2xvc2VfdGFnIGZtdCBwLmxpc3Rfc3R5bGVcblxuICAgIHwgTGFiZWwgKGxhYmVsLCB4KSAtPiBmcHJpbnRfcGFpciBmbXQgbGFiZWwgeFxuICAgIHwgQ3VzdG9tIGYgLT4gZiBmbXRcblxuICBhbmQgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bCA9XG4gICAgb3Blbl90YWcgZm10IHAuYm9keV9zdHlsZTtcbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuc2VwYXJhdG9yX3N0eWxlIHNlcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuICAgICAgICBmcHJpbnRfdCBmbXQgeFxuICAgICkgdGw7XG4gICAgY2xvc2VfdGFnIGZtdCBwLmJvZHlfc3R5bGVcblxuICBhbmQgZnByaW50X2xpc3RfYm9keV9zdGlja19yaWdodCBmbXQgcCBzZXAgaGQgdGwgPVxuICAgIG9wZW5fdGFnIGZtdCBwLmJvZHlfc3R5bGU7XG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuICAgIGNsb3NlX3RhZyBmbXQgcC5ib2R5X3N0eWxlXG5cbiAgYW5kIGZwcmludF9vcHRfbGFiZWwgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGxhYiwgbHApIC0+XG4gICAgICAgIG9wZW5fdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcbiAgICAgICAgZnByaW50X3QgZm10IGxhYjtcbiAgICAgICAgY2xvc2VfdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcbiAgICAgICAgaWYgbHAuc3BhY2VfYWZ0ZXJfbGFiZWwgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiXG5cbiAgKCogRWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwgbGlzdCAqKVxuICBhbmQgZnByaW50X2xpc3QgZm10IGxhYmVsICgob3AsIF9zZXAsIGNsLCBwKSBhcyBwYXJhbSkgPSBmdW5jdGlvblxuICAgICAgW10gLT5cbiAgICAgICAgZnByaW50X29wdF9sYWJlbCBmbXQgbGFiZWw7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHx8IHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuICAgIHwgaGQgOjogdGwgYXMgbCAtPlxuXG4gICAgICAgIGlmIHRsID0gW10gfHwgcC5zZXBhcmF0b3JzX3N0aWNrX2xlZnQgdGhlblxuICAgICAgICAgIGZwcmludF9saXN0X3N0aWNrX2xlZnQgZm10IGxhYmVsIHBhcmFtIGhkIHRsIGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZwcmludF9saXN0X3N0aWNrX3JpZ2h0IGZtdCBsYWJlbCBwYXJhbSBoZCB0bCBsXG5cblxuICBhbmQgZnByaW50X2xpc3Rfc3RpY2tfbGVmdCBmbXQgbGFiZWwgKG9wLCBzZXAsIGNsLCBwKSBoZCB0bCBsID1cbiAgICBsZXQgaW5kZW50ID0gcC5pbmRlbnRfYm9keSBpblxuICAgIHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQ7XG4gICAgZnByaW50X29wdF9sYWJlbCBmbXQgbGFiZWw7XG5cbiAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG5cbiAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuXG4gICAgbGV0IG9wZW5fZXh0cmEsIGNsb3NlX2V4dHJhID0gZXh0cmFfYm94IHAgbCBpblxuICAgIG9wZW5fZXh0cmEgZm10O1xuICAgIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGw7XG4gICAgY2xvc2VfZXh0cmEgZm10O1xuXG4gICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1pbmRlbnQpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtaW5kZW50KTtcbiAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2w7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuICBhbmQgZnByaW50X2xpc3Rfc3RpY2tfcmlnaHQgZm10IGxhYmVsIChvcCwgc2VwLCBjbCwgcCkgaGQgdGwgbCA9XG4gICAgbGV0IGJhc2VfaW5kZW50ID0gcC5pbmRlbnRfYm9keSBpblxuICAgIGxldCBzZXBfaW5kZW50ID1cbiAgICAgIFN0cmluZy5sZW5ndGggc2VwICsgKGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW4gMSBlbHNlIDApXG4gICAgaW5cbiAgICBsZXQgaW5kZW50ID0gYmFzZV9pbmRlbnQgKyBzZXBfaW5kZW50IGluXG5cbiAgICBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50O1xuICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuXG4gICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuXG4gICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcblxuICAgIGxldCBvcGVuX2V4dHJhLCBjbG9zZV9leHRyYSA9IGV4dHJhX2JveCBwIGwgaW5cbiAgICBvcGVuX2V4dHJhIGZtdDtcblxuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1zZXBfaW5kZW50KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtc2VwX2luZGVudCk7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuc2VwYXJhdG9yX3N0eWxlIHNlcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICBmcHJpbnRfdCBmbXQgeFxuICAgICkgdGw7XG5cbiAgICBjbG9zZV9leHRyYSBmbXQ7XG5cbiAgICBpZiBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLWluZGVudClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1pbmRlbnQpO1xuICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKVxuXG5cblxuICAoKiBhbGlnbl9jbG9zaW5nID0gZmFsc2UgKilcbiAgYW5kIGZwcmludF9saXN0MiBmbXQgKG9wLCBzZXAsIGNsLCBwKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPlxuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB8fCBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cbiAgICB8IGhkIDo6IHRsIGFzIGwgLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuXG4gICAgICAgIHBwX29wZW5fbm9uYWxpZ25lZF9ib3ggZm10IHAgMCBsIDtcbiAgICAgICAgaWYgcC5zZXBhcmF0b3JzX3N0aWNrX2xlZnQgdGhlblxuICAgICAgICAgIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZwcmludF9saXN0X2JvZHlfc3RpY2tfcmlnaHQgZm10IHAgc2VwIGhkIHRsO1xuICAgICAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKTtcblxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cblxuICAoKiBQcmludGluZyBhIGxhYmVsOnZhbHVlIHBhaXIuXG5cbiAgICAgVGhlIG9wZW5pbmcgYnJhY2tldCBzdGF5cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBrZXksIG5vIG1hdHRlciB3aGF0LFxuICAgICBhbmQgdGhlIGNsb3NpbmcgYnJhY2tldCBpcyBlaXRoZXIgb24gdGhlIHNhbWUgbGluZVxuICAgICBvciB2ZXJ0aWNhbGx5IGFsaWduZWQgd2l0aCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBrZXkuXG4gICopXG4gIGFuZCBmcHJpbnRfcGFpciBmbXQgKChsYWIsIGxwKSBhcyBsYWJlbCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIExpc3QgKChvcCwgc2VwLCBjbCwgcCksIGwpIHdoZW4gcC5zdGlja190b19sYWJlbCAmJiBwLmFsaWduX2Nsb3NpbmcgLT5cbiAgICAgICAgICBmcHJpbnRfbGlzdCBmbXQgKFNvbWUgbGFiZWwpIChvcCwgc2VwLCBjbCwgcCkgbFxuXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgaW5kZW50ID0gbHAuaW5kZW50X2FmdGVyX2xhYmVsIGluXG4gICAgICAgICAgRm9ybWF0LnBwX29wZW5faHZib3ggZm10IDA7XG5cbiAgICAgICAgICBvcGVuX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgICAgZnByaW50X3QgZm10IGxhYjtcbiAgICAgICAgICBjbG9zZV90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuXG4gICAgICAgICAgKG1hdGNoIGxwLmxhYmVsX2JyZWFrIHdpdGhcbiAgICAgICAgICAgfCBgQXV0byAtPlxuICAgICAgICAgICAgICAgaWYgbHAuc3BhY2VfYWZ0ZXJfbGFiZWwgdGhlblxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgaW5kZW50XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCBpbmRlbnRcbiAgICAgICAgICAgfCBgQWx3YXlzXG4gICAgICAgICAgIHwgYEFsd2F5c19yZWMgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIGZtdCAoKTtcbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IChTdHJpbmcubWFrZSBpbmRlbnQgJyAnKVxuICAgICAgICAgICB8IGBOZXZlciAtPlxuICAgICAgICAgICAgICAgaWYgbHAuc3BhY2VfYWZ0ZXJfbGFiZWwgdGhlblxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY2hhciBmbXQgJyAnXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmcHJpbnRfdCBmbXQgeDtcbiAgICAgICAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKVxuXG4gIGxldCB0b19mb3JtYXR0ZXIgZm10IHggPVxuICAgIGxldCB4ID0gcmV3cml0ZSB4IGluXG4gICAgZnByaW50X3QgZm10IHg7XG4gICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGxldCB0b19idWZmZXIgPyhlc2NhcGUgPSBgTm9uZSkgPyhzdHlsZXMgPSBbXSkgYnVmIHggPVxuICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgc3R5bGVzO1xuICAgIHRvX2Zvcm1hdHRlciBmbXQgeFxuXG4gIGxldCB0b19zdHJpbmcgP2VzY2FwZSA/c3R5bGVzIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciA/ZXNjYXBlID9zdHlsZXMgYnVmIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCB0b19jaGFubmVsID8oZXNjYXBlID0gYE5vbmUpID8oc3R5bGVzID0gW10pIG9jIHggPVxuICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIHN0eWxlcztcbiAgICB0b19mb3JtYXR0ZXIgZm10IHhcblxuICBsZXQgdG9fc3Rkb3V0ID9lc2NhcGUgP3N0eWxlcyB4ID0gdG9fY2hhbm5lbCA/ZXNjYXBlID9zdHlsZXMgc3Rkb3V0IHhcbiAgbGV0IHRvX3N0ZGVyciA/ZXNjYXBlID9zdHlsZXMgeCA9IHRvX2NoYW5uZWwgP2VzY2FwZSA/c3R5bGVzIHN0ZGVyciB4XG5cbmVuZFxuXG5cblxuXG5tb2R1bGUgQ29tcGFjdCA9XG5zdHJ1Y3RcbiAgb3BlbiBQcmludGZcblxuICBsZXQgcmVjIGZwcmludF90IGJ1ZiA9IGZ1bmN0aW9uXG4gICAgICBBdG9tIChzLCBfKSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgc1xuICAgIHwgTGlzdCAocGFyYW0sIGwpIC0+IGZwcmludF9saXN0IGJ1ZiBwYXJhbSBsXG4gICAgfCBMYWJlbCAobGFiZWwsIHgpIC0+IGZwcmludF9wYWlyIGJ1ZiBsYWJlbCB4XG4gICAgfCBDdXN0b20gZiAtPlxuICAgICAgICAoKiBXaWxsIG1vc3QgbGlrZWx5IG5vdCBiZSBjb21wYWN0ICopXG4gICAgICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICAgICAgZiBmbXQ7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBhbmQgZnByaW50X2xpc3QgYnVmIChvcCwgc2VwLCBjbCwgXykgPSBmdW5jdGlvblxuICAgICAgW10gLT4gYnByaW50ZiBidWYgXCIlcyVzXCIgb3AgY2xcbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIG9wO1xuICAgICAgICBmcHJpbnRfdCBidWYgeDtcbiAgICAgICAgTGlzdC5pdGVyIChcbiAgICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNlcDtcbiAgICAgICAgICAgIGZwcmludF90IGJ1ZiB4XG4gICAgICAgICkgdGw7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBjbFxuXG4gIGFuZCBmcHJpbnRfcGFpciBidWYgKGxhYmVsLCBfKSB4ID1cbiAgICBmcHJpbnRfdCBidWYgbGFiZWw7XG4gICAgZnByaW50X3QgYnVmIHhcblxuXG4gIGxldCB0b19idWZmZXIgYnVmIHggPSBmcHJpbnRfdCBidWYgeFxuXG4gIGxldCB0b19zdHJpbmcgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyIGJ1ZiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgdG9fZm9ybWF0dGVyIGZtdCB4ID1cbiAgICBsZXQgcyA9IHRvX3N0cmluZyB4IGluXG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIiBzO1xuICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBsZXQgdG9fY2hhbm5lbCBvYyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgYnVmIHg7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG5cbiAgbGV0IHRvX3N0ZG91dCB4ID0gdG9fY2hhbm5lbCBzdGRvdXQgeFxuICBsZXQgdG9fc3RkZXJyIHggPSB0b19jaGFubmVsIHN0ZGVyciB4XG5lbmRcblxuXG5cblxuKCogT2Jzb2xldGUgKilcbm1vZHVsZSBQYXJhbSA9XG5zdHJ1Y3RcbiAgbGV0IGxpc3RfdHJ1ZSA9IHtcbiAgICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gdHJ1ZTtcbiAgICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSB0cnVlO1xuICAgIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgPSB0cnVlO1xuICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWU7XG4gICAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgPSB0cnVlO1xuICAgIHN0aWNrX3RvX2xhYmVsID0gdHJ1ZTtcbiAgICBhbGlnbl9jbG9zaW5nID0gdHJ1ZTtcbiAgICB3cmFwX2JvZHkgPSBgV3JhcF9hdG9tcztcbiAgICBpbmRlbnRfYm9keSA9IDI7XG4gICAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gICAgb3BlbmluZ19zdHlsZSA9IE5vbmU7XG4gICAgYm9keV9zdHlsZSA9IE5vbmU7XG4gICAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgICBjbG9zaW5nX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsaXN0X2ZhbHNlID0ge1xuICAgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSBmYWxzZTtcbiAgICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSBmYWxzZTtcbiAgICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gZmFsc2U7XG4gICAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gZmFsc2U7XG4gICAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgPSBmYWxzZTtcbiAgICBzdGlja190b19sYWJlbCA9IGZhbHNlO1xuICAgIGFsaWduX2Nsb3NpbmcgPSBmYWxzZTtcbiAgICB3cmFwX2JvZHkgPSBgV3JhcF9hdG9tcztcbiAgICBpbmRlbnRfYm9keSA9IDI7XG4gICAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gICAgb3BlbmluZ19zdHlsZSA9IE5vbmU7XG4gICAgYm9keV9zdHlsZSA9IE5vbmU7XG4gICAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgICBjbG9zaW5nX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsYWJlbF90cnVlID0ge1xuICAgIGxhYmVsX2JyZWFrID0gYEF1dG87XG4gICAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSB0cnVlO1xuICAgIGluZGVudF9hZnRlcl9sYWJlbCA9IDI7XG4gICAgbGFiZWxfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxhYmVsX2ZhbHNlID0ge1xuICAgIGxhYmVsX2JyZWFrID0gYEF1dG87XG4gICAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSBmYWxzZTtcbiAgICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICAgIGxhYmVsX3N0eWxlID0gTm9uZTtcbiAgfVxuZW5kXG4iLCJleGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cblxuKCpcbiAgRGVidWdnaW5nIHV0aWxpdGllcy5cbiopXG5cbmxldCBzdHJpbmc4X29mX2ludCB4ID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgOCBpblxuICBmb3IgaSA9IDAgdG8gNyBkb1xuICAgIEJ5dGVzLnNldCBzICg3LWkpIChDaGFyLmNociAoMHhmZiBsYW5kICh4IGxzciAoOCAqIGkpKSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyBzXG5cbmxldCBzdHJpbmc0X29mX2ludCB4ID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgNCBpblxuICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgIEJ5dGVzLnNldCBzICgzLWkpIChDaGFyLmNociAoMHhmZiBsYW5kICh4IGxzciAoOCAqIGkpKSkpXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyBzXG5cbmxldCBwcmludF9iaXRzID8ocG9zID0gMCkgP2xlbiBzID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcG9zIDwgMCB8fCAocG9zID4gMCAmJiBwb3MgPj0gc2xlbikgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQmlfdXRpbC5wcmludF9iaXRzXCI7XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgIE5vbmUgLT4gc2xlbiAtIHBvc1xuICAgICAgfCBTb21lIGxlbiAtPlxuICAgICAgICAgIGlmIGxlbiA+IHNsZW4gLSBwb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpX3V0aWwucHJpbnRfYml0c1wiXG4gICAgICAgICAgZWxzZSBsZW5cbiAgaW5cblxuICBsZXQgciA9IEJ5dGVzLmNyZWF0ZSAobGVuICogOSkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgayA9IGkgKiA5IGluXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgcy5bcG9zK2ldIGluXG4gICAgZm9yIGogPSAwIHRvIDcgZG9cbiAgICAgIEJ5dGVzLnNldCByIChrK2opIChpZiAoeCBsc3IgKDcgLSBqKSkgbGFuZCAxID0gMCB0aGVuICcwJyBlbHNlICcxJylcbiAgICBkb25lO1xuICAgIEJ5dGVzLnNldCByIChrKzgpIChpZiAoaSArIDEpIG1vZCA4ID0gMCB0aGVuICdcXG4nIGVsc2UgJyAnKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgclxuXG4oKiBpbnQgc2l6ZSBpbiBiaXRzICopXG5sZXQgaW50X3NpemUgPVxuICBsZXQgYyA9IHJlZiAwIGluXG4gIGxldCByID0gcmVmICgtMSkgaW5cbiAgd2hpbGUgIXIgPD4gMCBkb1xuICAgIHIgOj0gIXIgbHNyIDE7XG4gICAgaW5jciBjXG4gIGRvbmU7XG4gICFjXG4iLCJ0eXBlIHR5cGVfaWQgPSBpbnRcblxubGV0IGR1bW15X3R5cGVfaWQgPSAwXG5cbmxldCBjcmVhdGVfdHlwZV9pZCA9XG4gIGxldCBuID0gcmVmIGR1bW15X3R5cGVfaWQgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciBuO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICBmYWlsd2l0aCBcIkJpX3NoYXJlLlJkX3BvbHkuY3JlYXRlX3R5cGVfaWQ6IFxcXG4gICAgICAgICAgICAgICAgZXhoYXVzdGVkIGF2YWlsYWJsZSB0eXBlX2lkJ3NcIlxuICAgIGVsc2VcbiAgICAgICFuXG5cbm1vZHVsZSBXciA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEggPSBIYXNodGJsLk1ha2UgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gT2JqLnQgKiB0eXBlX2lkXG4gICAgICBsZXQgZXF1YWwgKHgxLCB0MSkgKHgyLCB0MikgPSB4MSA9PSB4MiAmJiB0MSA9PSB0MlxuICAgICAgbGV0IGhhc2ggPSBIYXNodGJsLmhhc2hcbiAgICBlbmRcbiAgKVxuXG4gIHR5cGUgdGJsID0gaW50IEgudFxuXG4gIGxldCBjcmVhdGUgPSBILmNyZWF0ZVxuICBsZXQgY2xlYXIgdGJsID1cbiAgICBpZiBILmxlbmd0aCB0YmwgPiAwIHRoZW5cbiAgICAgIEguY2xlYXIgdGJsXG5cbiAgbGV0IHB1dCB0YmwgayBwb3MgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvczAgPSBILmZpbmQgdGJsIChPYmoubWFnaWMgaykgaW5cbiAgICAgIHBvcyAtIHBvczBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgSC5hZGQgdGJsIChPYmoubWFnaWMgaykgcG9zO1xuICAgICAgMFxuZW5kXG5cbm1vZHVsZSBSZCA9XG5zdHJ1Y3RcbiAgdHlwZSB0YmwgPSAoKGludCAqIHR5cGVfaWQpLCBPYmoudCkgSGFzaHRibC50XG5cbiAgbGV0IGNyZWF0ZSBuID0gSGFzaHRibC5jcmVhdGUgblxuICBsZXQgY2xlYXIgPSBIYXNodGJsLmNsZWFyXG5cbiAgbGV0IHB1dCB0YmwgcG9zIHggPVxuICAgIEhhc2h0YmwuYWRkIHRibCBwb3MgeFxuXG4gIGxldCBnZXQgdGJsIHBvcyA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCB0YmwgcG9zXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCByZWZlcmVuY2UpXCJcbmVuZFxuIiwidHlwZSB0ID0ge1xuICBtdXRhYmxlIGlfcyA6IGJ5dGVzO1xuICBtdXRhYmxlIGlfcG9zIDogaW50O1xuICBtdXRhYmxlIGlfbGVuIDogaW50O1xuICBtdXRhYmxlIGlfb2ZmcyA6IGludDtcbiAgbXV0YWJsZSBpX21heF9sZW4gOiBpbnQ7XG4gIGlfcmVmaWxsIDogKHQgLT4gaW50IC0+IHVuaXQpO1xuICBpX3NoYXJlZCA6IEJpX3NoYXJlLlJkLnRibDtcbn1cblxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG5sZXQgdHJ5X3ByZXJlYWQgaWIgbiA9XG4gIGlmIGliLmlfbGVuIC0gaWIuaV9wb3MgPCBuIHRoZW4gKFxuICAgIGliLmlfcmVmaWxsIGliIG47XG4gICAgbWluIChpYi5pX2xlbiAtIGliLmlfcG9zKSBuXG4gIClcbiAgZWxzZVxuICAgIG5cblxubGV0IHJlYWQgaWIgbiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+PSBuIHRoZW4gKFxuICAgIGliLmlfcG9zIDwtIHBvcyArIG47XG4gICAgcG9zXG4gIClcbiAgZWxzZVxuICAgIGlmIHRyeV9wcmVyZWFkIGliIG4gPj0gbiB0aGVuXG4gICAgICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgICAgIGliLmlfcG9zIDwtIGliLmlfcG9zICsgbjtcbiAgICAgIHBvc1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgcmVhZF9jaGFyIGliID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID4gMCB0aGVuIChcbiAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvcyBpblxuICAgIGliLmlfcG9zIDwtIHBvcyArIDE7XG4gICAgY1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgcG9zIGluXG4gICAgICBpYi5pX3BvcyA8LSBwb3MgKyAxO1xuICAgICAgY1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgcGVlayBpYiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+IDAgdGhlbiAoXG4gICAgQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgcG9zXG4gIClcbiAgZWxzZVxuICAgIGlmIHRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICAgIEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIGliLmlfcG9zXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCBmcm9tX2J5dGVzID8ocG9zID0gMCkgPyhzaHJsZW4gPSAxNikgcyA9IHtcbiAgaV9zID0gcztcbiAgaV9wb3MgPSBwb3M7XG4gIGlfbGVuID0gQnl0ZXMubGVuZ3RoIHM7XG4gIGlfb2ZmcyA9IC1wb3M7XG4gIGlfbWF4X2xlbiA9IEJ5dGVzLmxlbmd0aCBzO1xuICBpX3JlZmlsbCA9IChmdW4gaWIgbiAtPiAoKSk7XG4gIGlfc2hhcmVkID0gQmlfc2hhcmUuUmQuY3JlYXRlIHNocmxlbjtcbn1cblxubGV0IGZyb21fc3RyaW5nID9wb3MgP3NocmxlbiBzID0gZnJvbV9ieXRlcyA/cG9zID9zaHJsZW4gKEJ5dGVzLm9mX3N0cmluZyBzKVxuXG4oKlxuICBMaWtlIFBlcnZhc2l2ZXMucmVhbGx5X2lucHV0IGJ1dCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgcmVhZCBpbnN0ZWFkIG9mIHJhaXNpbmcgRW5kX29mX2ZpbGUgd2hlbiB0aGUgZW5kIG9mIGZpbGUgaXMgcmVhY2hlZC5cbiopXG5sZXQgcmVjIG5vdF9yZWFsbHlfaW5wdXQgaWMgcyBwb3MgbGVuIGFjY3UgPVxuICBsZXQgbiA9IGlucHV0IGljIHMgcG9zIGxlbiBpblxuICBpZiBuIDwgbGVuICYmIG4gPiAwIHRoZW5cbiAgICBub3RfcmVhbGx5X2lucHV0IGljIHMgKHBvcyArIG4pIChsZW4gLSBuKSAoYWNjdSArIG4pXG4gIGVsc2VcbiAgICBhY2N1ICsgblxuXG5sZXQgcmVmaWxsX2Zyb21fY2hhbm5lbCBpYyBpYiBuID1cbiAgaWYgbiA+IGliLmlfbWF4X2xlbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCaV9pbmJ1Zi5yZWZpbGxfZnJvbV9jaGFubmVsXCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlbV9sZW4gPSBpYi5pX2xlbiAtIGliLmlfcG9zIGluXG4gICAgaWYgcmVtX2xlbiA8IG4gdGhlblxuICAgICAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgICAgIEJ5dGVzLmJsaXQgcyBpYi5pX3BvcyBzIDAgcmVtX2xlbjtcbiAgICAgIGxldCB0b19yZWFkID0gbiAtIHJlbV9sZW4gaW5cbiAgICAgIGxldCByZWFsbHlfcmVhZCA9IG5vdF9yZWFsbHlfaW5wdXQgaWMgcyByZW1fbGVuIHRvX3JlYWQgMCBpblxuICAgICAgaWIuaV9vZmZzIDwtIGliLmlfb2ZmcyArIGliLmlfcG9zO1xuICAgICAgaWIuaV9wb3MgPC0gMDtcbiAgICAgIGliLmlfbGVuIDwtIHJlbV9sZW4gKyByZWFsbHlfcmVhZFxuICApXG5cbmxldCBmcm9tX2NoYW5uZWwgPyhsZW4gPSA0MDk2KSA/KHNocmxlbiA9IDE2KSBpYyA9IHtcbiAgaV9zID0gQnl0ZXMuY3JlYXRlIGxlbjtcbiAgaV9wb3MgPSAwO1xuICBpX2xlbiA9IDA7XG4gIGlfb2ZmcyA9IDA7XG4gIGlfbWF4X2xlbiA9IGxlbjtcbiAgaV9yZWZpbGwgPSByZWZpbGxfZnJvbV9jaGFubmVsIGljO1xuICBpX3NoYXJlZCA9IEJpX3NoYXJlLlJkLmNyZWF0ZSBzaHJsZW47XG59XG4iLCJ0eXBlIHQgPSB7XG4gIG11dGFibGUgb19zIDogYnl0ZXM7XG4gIG11dGFibGUgb19tYXhfbGVuIDogaW50O1xuICBtdXRhYmxlIG9fbGVuIDogaW50O1xuICBtdXRhYmxlIG9fb2ZmcyA6IGludDtcbiAgb19pbml0X2xlbiA6IGludDtcbiAgb19tYWtlX3Jvb20gOiAodCAtPiBpbnQgLT4gdW5pdCk7XG4gIG11dGFibGUgb19zaGFyZWQgOiBCaV9zaGFyZS5Xci50Ymw7XG4gIG9fc2hhcmVkX2luaXRfbGVuIDogaW50O1xufVxuXG5sZXQgcmVhbGx5X2V4dGVuZCBiIG4gPVxuICBsZXQgc2xlbjAgPSBiLm9fbWF4X2xlbiBpblxuICBsZXQgcmVxbGVuID0gYi5vX2xlbiArIG4gaW5cbiAgbGV0IHNsZW4gPVxuICAgIGxldCB4ID0gbWF4IHJlcWxlbiAoMiAqIHNsZW4wKSBpblxuICAgIGlmIHggPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4geFxuICAgIGVsc2VcbiAgICAgIGlmIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCA8IHJlcWxlbiB0aGVuXG5cdGludmFsaWRfYXJnIFwiQnVmLmV4dGVuZDogcmVhY2hlZCBTeXMubWF4X3N0cmluZ19sZW5ndGhcIlxuICAgICAgZWxzZVxuXHRTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgc2xlbiBpblxuICBCeXRlcy5ibGl0IGIub19zIDAgcyAwIGIub19sZW47XG4gIGIub19zIDwtIHM7XG4gIGIub19tYXhfbGVuIDwtIHNsZW5cblxubGV0IGZsdXNoX3RvX291dHB1dCBhYnN0cmFjdF9vdXRwdXQgYiBuID1cbiAgYWJzdHJhY3Rfb3V0cHV0IChCeXRlcy50b19zdHJpbmcgYi5vX3MpIDAgYi5vX2xlbjtcbiAgYi5vX29mZnMgPC0gYi5vX29mZnMgKyBiLm9fbGVuO1xuICBiLm9fbGVuIDwtIDA7XG4gIGlmIG4gPiBiLm9fbWF4X2xlbiB0aGVuXG4gICAgcmVhbGx5X2V4dGVuZCBiIG5cblxubGV0IGZsdXNoX3RvX2NoYW5uZWwgb2MgPSBmbHVzaF90b19vdXRwdXQgKG91dHB1dF9zdWJzdHJpbmcgb2MpXG5cblxubGV0IGNyZWF0ZSA/KG1ha2Vfcm9vbSA9IHJlYWxseV9leHRlbmQpID8oc2hybGVuID0gMTYpIG4gPSB7XG4gIG9fcyA9IEJ5dGVzLmNyZWF0ZSBuO1xuICBvX21heF9sZW4gPSBuO1xuICBvX2xlbiA9IDA7XG4gIG9fb2ZmcyA9IDA7XG4gIG9faW5pdF9sZW4gPSBuO1xuICBvX21ha2Vfcm9vbSA9IG1ha2Vfcm9vbTtcbiAgb19zaGFyZWQgPSBCaV9zaGFyZS5Xci5jcmVhdGUgc2hybGVuO1xuICBvX3NoYXJlZF9pbml0X2xlbiA9IHNocmxlbjtcbn1cblxubGV0IGNyZWF0ZV9jaGFubmVsX3dyaXRlciA/KGxlbiA9IDQwOTYpID9zaHJsZW4gb2MgPVxuICBjcmVhdGUgfm1ha2Vfcm9vbTooZmx1c2hfdG9fY2hhbm5lbCBvYykgP3NocmxlbiBsZW5cblxubGV0IGZsdXNoX2NoYW5uZWxfd3JpdGVyIGIgPVxuICBiLm9fbWFrZV9yb29tIGIgMFxuXG5sZXQgY3JlYXRlX291dHB1dF93cml0ZXIgPyhsZW4gPSA0MDk2KSA/c2hybGVuIG91dCA9XG4gIGNyZWF0ZSB+bWFrZV9yb29tOihmbHVzaF90b19vdXRwdXQgb3V0I291dHB1dCkgP3NocmxlbiBsZW5cblxubGV0IGZsdXNoX291dHB1dF93cml0ZXIgPSBmbHVzaF9jaGFubmVsX3dyaXRlclxuXG5cbigqXG4gIEd1YXJhbnRlZSB0aGF0IHRoZSBidWZmZXIgc3RyaW5nIGhhcyBlbm91Z2ggcm9vbSBmb3IgbiBhZGRpdGlvbmFsIGJ5dGVzLlxuKilcbmxldCBleHRlbmQgYiBuID1cbiAgaWYgYi5vX2xlbiArIG4gPiBiLm9fbWF4X2xlbiB0aGVuXG4gICAgYi5vX21ha2Vfcm9vbSBiIG5cblxubGV0IGFsbG9jIGIgbiA9XG4gIGV4dGVuZCBiIG47XG4gIGxldCBwb3MgPSBiLm9fbGVuIGluXG4gIGIub19sZW4gPC0gcG9zICsgbjtcbiAgcG9zXG5cbmxldCBhZGRfc3ViIGJsaXQgYiBzIHBvcyBsZW4gPVxuICBleHRlbmQgYiBsZW47XG4gIGJsaXQgcyBwb3MgYi5vX3MgYi5vX2xlbiBsZW47XG4gIGIub19sZW4gPC0gYi5vX2xlbiArIGxlblxuXG5sZXQgYWRkX3N1YnN0cmluZyA9IGFkZF9zdWIgU3RyaW5nLmJsaXRcbmxldCBhZGRfc3ViYnl0ZXMgPSBhZGRfc3ViIEJ5dGVzLmJsaXRcblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgYWRkX3N1YnN0cmluZyBiIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWRkX2J5dGVzIGIgcyA9XG4gIGFkZF9zdWJieXRlcyBiIHMgMCAoQnl0ZXMubGVuZ3RoIHMpXG5cblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDEgaW5cbiAgQnl0ZXMuc2V0IGIub19zIHBvcyBjXG5cbmxldCB1bnNhZmVfYWRkX2NoYXIgYiBjID1cbiAgbGV0IGxlbiA9IGIub19sZW4gaW5cbiAgQnl0ZXMuc2V0IGIub19zIGxlbiBjO1xuICBiLm9fbGVuIDwtIGxlbiArIDFcblxubGV0IGFkZF9jaGFyMiBiIGMxIGMyID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgMiBpblxuICBsZXQgcyA9IGIub19zIGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyBwb3MgYzE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzEpIGMyXG5cbmxldCBhZGRfY2hhcjQgYiBjMSBjMiBjMyBjNCA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDQgaW5cbiAgbGV0IHMgPSBiLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIGMxO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSBjMjtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMikgYzM7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzMpIGM0XG5cblxuXG5sZXQgY2xlYXIgYiA9XG4gIGIub19vZmZzIDwtIDA7XG4gIGIub19sZW4gPC0gMDtcbiAgQmlfc2hhcmUuV3IuY2xlYXIgYi5vX3NoYXJlZFxuXG5sZXQgcmVzZXQgYiA9XG4gIGlmIEJ5dGVzLmxlbmd0aCBiLm9fcyA8PiBiLm9faW5pdF9sZW4gdGhlblxuICAgIGIub19zIDwtIEJ5dGVzLmNyZWF0ZSBiLm9faW5pdF9sZW47XG4gIGIub19vZmZzIDwtIDA7XG4gIGIub19sZW4gPC0gMDtcbiAgYi5vX3NoYXJlZCA8LSBCaV9zaGFyZS5Xci5jcmVhdGUgYi5vX3NoYXJlZF9pbml0X2xlblxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5vX3MgMCBiLm9fbGVuXG4iLCIoKiBWYXJpYWJsZS1ieXRlIGVuY29kaW5nIG9mIDgtYnl0ZSBpbnRlZ2VycyAoc3RhcnRpbmcgZnJvbSAwKS4gKilcblxub3BlbiBQcmludGZcbm9wZW4gQmlfb3V0YnVmXG5vcGVuIEJpX2luYnVmXG5cbnR5cGUgdWludCA9IGludFxuXG4oKiBNYXhpbXVtIGxlbmd0aCBvZiBhIHZpbnQgZGVjb2RhYmxlIGludG8gYW4gT0NhbWwgaW50LFxuICAgbWF4aW11bSB2YWx1ZSBvZiB0aGUgaGlnaGVzdCBieXRlIG9mIHRoZSBsYXJnZXN0IHZpbnQgc3VwcG9ydGVkICopXG5sZXQgbWF4X3ZpbnRfYnl0ZXMsIG1heF9oaWdoZXN0X2J5dGUgPVxuICBpZiBCaV91dGlsLmludF9zaXplIG1vZCA3ID0gMCB0aGVuXG4gICAgbGV0IG0gPSBCaV91dGlsLmludF9zaXplIC8gNyBpblxuICAgIGxldCBoID0gMSBsc2wgNyAtIDEgaW5cbiAgICBtLCBoXG4gIGVsc2VcbiAgICBsZXQgbSA9IEJpX3V0aWwuaW50X3NpemUgLyA3ICsgMSBpblxuICAgIGxldCBoID0gMSBsc2wgKEJpX3V0aWwuaW50X3NpemUgbW9kIDcpIC0gMSBpblxuICAgIG0sIGhcblxubGV0IGNoZWNrX2hpZ2hlc3RfYnl0ZSB4ID1cbiAgaWYgeCA+IG1heF9oaWdoZXN0X2J5dGUgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJWaW50IGV4Y2VlZGluZyByYW5nZSBvZiBPQ2FtbCBpbnRzXCJcblxuXG5sZXQgdW5zaWduZWRfb2Zfc2lnbmVkIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgICgqXG4gICAgICAwIC0+IDBcbiAgICAgIDEgLT4gMlxuICAgICAgMiAtPiA0XG4gICAgICAzIC0+IDZcbiAgICAqKVxuICAgIGkgbHNsIDFcbiAgZWxzZVxuICAgICgqXG4gICAgICAtMSAtPiAxXG4gICAgICAtMiAtPiAzXG4gICAgICAtMyAtPiA1XG4gICAgKilcbiAgICAoKC0xLWkpIGxzbCAxKSBsb3IgMVxuXG5sZXQgc2lnbmVkX29mX3Vuc2lnbmVkIGkgPVxuICBpZiBpIGxhbmQgMSA9IDAgdGhlbiBpIGxzciAxXG4gIGVsc2UgLTEgLSAoaSBsc3IgMSlcblxubGV0IHdyaXRlX3V2aW50IGJ1ZiBpICA9XG4gIEJpX291dGJ1Zi5leHRlbmQgYnVmIG1heF92aW50X2J5dGVzO1xuXG4gIGxldCB4ID0gcmVmIGkgaW5cbiAgd2hpbGUgIXggbHNyIDcgPD4gMCBkb1xuICAgIGxldCBieXRlID0gMHg4MCBsb3IgKCF4IGxhbmQgMHg3ZikgaW5cbiAgICBCaV9vdXRidWYudW5zYWZlX2FkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgYnl0ZSk7XG4gICAgeCA6PSAheCBsc3IgNztcbiAgZG9uZTtcbiAgQmlfb3V0YnVmLnVuc2FmZV9hZGRfY2hhciBidWYgKENoYXIuY2hyICF4KVxuXG5sZXQgd3JpdGVfc3ZpbnQgYnVmIGkgPVxuICB3cml0ZV91dmludCBidWYgKHVuc2lnbmVkX29mX3NpZ25lZCBpKVxuXG4oKiBjb252ZW5pZW5jZSAqKVxubGV0IHV2aW50X29mX3VpbnQgP2J1ZiBpID1cbiAgbGV0IGJ1ZmZlciA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBCaV9vdXRidWYuY3JlYXRlIDEwXG4gICAgICB8IFNvbWUgYiAtPiBiXG4gIGluXG4gIEJpX291dGJ1Zi5jbGVhciBidWZmZXI7XG4gIHdyaXRlX3V2aW50IGJ1ZmZlciBpO1xuICBCaV9vdXRidWYuY29udGVudHMgYnVmZmVyXG5cbmxldCBzdmludF9vZl9pbnQgP2J1ZiBpID1cbiAgdXZpbnRfb2ZfdWludCA/YnVmICh1bnNpZ25lZF9vZl9zaWduZWQgaSlcblxuXG5sZXQgcmVhZF91dmludCBpYiA9XG4gIGxldCBhdmFpbCA9IEJpX2luYnVmLnRyeV9wcmVyZWFkIGliIG1heF92aW50X2J5dGVzIGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBsZXQgeCA9IHJlZiAwIGluXG4gICh0cnlcbiAgICAgZm9yIGkgPSAwIHRvIGF2YWlsIC0gMSBkb1xuICAgICAgIGxldCBiID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAocG9zK2kpKSBpblxuICAgICAgIHggOj0gKChiIGxhbmQgMHg3ZikgbHNsICg3KmkpKSBsb3IgIXg7XG4gICAgICAgaWYgYiA8IDB4ODAgdGhlbiAoXG5cdCBpYi5pX3BvcyA8LSBwb3MgKyBpICsgMTtcblx0IGlmIGkgKyAxID0gbWF4X3ZpbnRfYnl0ZXMgdGhlblxuXHQgICBjaGVja19oaWdoZXN0X2J5dGUgYjtcblx0IHJhaXNlIEV4aXRcbiAgICAgICApXG4gICAgIGRvbmU7XG4gICAgIEJpX3V0aWwuZXJyb3IgXCJVbnRlcm1pbmF0ZWQgdmludCBvciB2aW50IGV4Y2VlZGluZyByYW5nZSBvZiBPQ2FtbCBpbnRzXCJcbiAgIHdpdGggRXhpdCAtPiAoKVxuICApO1xuICAheFxuXG5cbmxldCByZWFkX3N2aW50IGliID1cbiAgc2lnbmVkX29mX3Vuc2lnbmVkIChyZWFkX3V2aW50IGliKVxuXG4oKiBjb252ZW5pZW5jZSAqKVxuXG5sZXQgY2hlY2tfZW5kX29mX2lucHV0IGliID1cbiAgaWYgQmlfaW5idWYudHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJKdW5rIGlucHV0IGFmdGVyIGVuZCBvZiB2aW50XCJcblxubGV0IHVpbnRfb2ZfdXZpbnQgcyA9XG4gIGxldCBpYiA9IEJpX2luYnVmLmZyb21fc3RyaW5nIHMgaW5cbiAgbGV0IHggPSByZWFkX3V2aW50IGliIGluXG4gIGNoZWNrX2VuZF9vZl9pbnB1dCBpYjtcbiAgeFxuXG5sZXQgaW50X29mX3N2aW50IHMgPVxuICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzIGluXG4gIGxldCB4ID0gcmVhZF9zdmludCBpYiBpblxuICBjaGVja19lbmRfb2ZfaW5wdXQgaWI7XG4gIHhcblxuXG4oKlxuICBUZXN0aW5nXG4qKVxuXG5sZXQgc3RyaW5nX29mX2xpc3QgbCA9XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgMTAwIGluXG4gIExpc3QuaXRlciAod3JpdGVfdXZpbnQgb2IpIGw7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgcmVjIHJlYWRfbGlzdCBpYiA9XG4gIGlmIGliLmlfcG9zIDwgaWIuaV9sZW4gdGhlblxuICAgIGxldCB4ID0gcmVhZF91dmludCBpYiBpblxuICAgIHggOjogcmVhZF9saXN0IGliXG4gIGVsc2VcbiAgICBbXVxuXG5sZXQgbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbGlzdCAoQmlfaW5idWYuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X2xpc3QgbCA9XG4gIExpc3QuaXRlciAoXG4gICAgZnVuIGkgLT5cbiAgICAgIHByaW50ZiBcImRlYyAlaVxcbmhleCAleFxcbmJpbiAlc1xcblwiIGkgaVxuXHQoQmlfdXRpbC5wcmludF9iaXRzIChCaV91dGlsLnN0cmluZzhfb2ZfaW50IGkpKVxuICApIGxcblxubGV0IHRlc3QgKCkgPVxuICBsZXQgbCA9IFtcbiAgICAwO1xuICAgIDB4ZmZmZmZmZjtcbiAgICAoMHgwMTAyMDMwNCBsc2wgMzIpIGxvciAweDA1MDYwNzA4O1xuICAgIG1heF9pbnQ7XG4gICAgbWluX2ludFxuICBdIGluXG4gIHByaW50ZiBcIklucHV0OlxcblwiO1xuICBwcmludF9saXN0IGw7XG4gIGxldCBsJyA9IGxpc3Rfb2Zfc3RyaW5nIChzdHJpbmdfb2ZfbGlzdCBsKSBpblxuICBwcmludGYgXCJPdXRwdXQ6XFxuXCI7XG4gIHByaW50X2xpc3QgbCc7XG4gIGlmIGwgPSBsJyB0aGVuXG4gICAgcHJpbnRfZW5kbGluZSBcIlNVQ0NFU1NcIlxuICBlbHNlXG4gICAgcHJpbnRfZW5kbGluZSBcIkZBSUxVUkVcIlxuIiwib3BlbiBQcmludGZcblxubGV0IGVycm9yIHMgPSBmYWlsd2l0aCAoXCJCaV9zdHJlYW06IFwiIF4gcylcblxubGV0IGlucHV0X2ludDY0IGljID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgICA2NCAtPlxuICAgICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpID0gMSB0byA4IGRvXG4gICAgICAgICAgbiA6PSAoIW4gbHNsIDgpIGxvciAoaW5wdXRfYnl0ZSBpYyk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IgXCJDb3JydXB0ZWQgc3RyZWFtOiBleGNlc3NpdmUgY2h1bmsgbGVuZ3RoXCI7XG4gICAgICAgICFuXG4gICAgfCAzMiAtPlxuICAgICAgICBmb3IgaSA9IDEgdG8gNCBkb1xuICAgICAgICAgIGlmIGlucHV0X2J5dGUgaWMgPD4gMCB0aGVuXG4gICAgICAgICAgICBlcnJvciBcIkNodW5rIGxlbmd0aCBleGNlZWRzIHN1cHBvcnRlZCByYW5nZSBvbiB0aGlzIHBsYXRmb3JtXCJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gNCBkb1xuICAgICAgICAgIG4gOj0gKCFuIGxzbCA4KSBsb3IgKGlucHV0X2J5dGUgaWMpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgICAgIGVycm9yIFwiQ2h1bmsgbGVuZ3RoIGV4Y2VlZHMgc3VwcG9ydGVkIHJhbmdlIG9uIHRoaXMgcGxhdGZvcm1cIjtcbiAgICAgICAgIW5cbiAgICB8IG4gLT5cbiAgICAgICAgZXJyb3IgKHNwcmludGYgXCJ1bnN1cHBvcnRlZCB3b3JkIHNpemUgKCVpKVwiIG4pXG5cbmxldCBvdXRwdXRfaW50NjQgb2MgbiA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgICAgNjQgLT5cbiAgICAgICAgbGV0IG4gPSByZWYgbiBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gOCBkb1xuICAgICAgICAgIG91dHB1dF9jaGFyIG9jIChjaGFyX29mX2ludCAoIW4gbHNyIDU2KSk7XG4gICAgICAgICAgbiA6PSAhbiBsc2wgOFxuICAgICAgICBkb25lXG4gICAgfCAzMiAtPlxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgICAgICAgbGV0IG4gPSByZWYgbiBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gNCBkb1xuICAgICAgICAgIG91dHB1dF9jaGFyIG9jIChjaGFyX29mX2ludCAoIW4gbHNyIDI0KSk7XG4gICAgICAgICAgbiA6PSAhbiBsc2wgOFxuICAgICAgICBkb25lXG4gICAgfCBuIC0+XG4gICAgICAgIGVycm9yIChzcHJpbnRmIFwidW5zdXBwb3J0ZWQgd29yZCBzaXplICglaSlcIiBuKVxuXG5sZXQgcmVjIHJlYWRfY2h1bmsgb2Zfc3RyaW5nIGljID1cbiAgbWF0Y2ggaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgICAnXFwwMDEnIC0+XG4gICAgICAgIGxldCBsZW4gPSBpbnB1dF9pbnQ2NCBpYyBpblxuICAgICAgICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgXCJDb3JydXB0ZWQgc3RyZWFtOiBleGNlc3NpdmUgY2h1bmsgbGVuZ3RoICglaSBieXRlcylcIiBsZW4pO1xuICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gICAgICAgIFNvbWUgKG9mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpKVxuXG4gICAgfCAnXFwwMDAnIC0+IE5vbmVcblxuICAgIHwgYyAtPiBlcnJvciAoc3ByaW50ZiBcIkNvcnJ1cHRlZCBzdHJlYW06ICVDXCIgYylcblxuXG5sZXQgZmxhdHRlbiBzdCA9XG4gIGxldCBhID0gcmVmIFt8IHxdIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgcmVjIG5leHQgaSA9XG4gICAgaWYgIXBvcyA+PSBBcnJheS5sZW5ndGggIWEgdGhlbiAoXG4gICAgICBtYXRjaCBTdHJlYW0ucGVlayBzdCB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBhJyAtPlxuICAgICAgICAgICAgU3RyZWFtLmp1bmsgc3Q7XG4gICAgICAgICAgICBhIDo9IGEnO1xuICAgICAgICAgICAgcG9zIDo9IDA7XG4gICAgICAgICAgICBuZXh0IGlcbiAgICApXG4gICAgZWxzZSAoXG4gICAgICBsZXQgeCA9ICghYSkuKCFwb3MpIGluXG4gICAgICBpbmNyIHBvcztcbiAgICAgIFNvbWUgeFxuICAgIClcbiAgaW5cbiAgU3RyZWFtLmZyb20gbmV4dFxuXG5cbmxldCByZWFkX3N0cmVhbSBvZl9zdHJpbmcgaWMgPVxuICBmbGF0dGVuIChTdHJlYW0uZnJvbSAoZnVuIGkgLT4gcmVhZF9jaHVuayBvZl9zdHJpbmcgaWMpKVxuXG5sZXQgcmV2X2FycmF5X29mX2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gW3x8XVxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgICAgICAgICBoZCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIGEuKGkpIDwtIGhkO1xuICAgICAgICAgICAgICAgIHIgOj0gdGw7XG4gICAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBkb25lO1xuICAgICAgICBhXG5cbmxldCB3cml0ZV9zdHJlYW0gPyhjaHVua19sZW4gPSAxMDI0KSB0b19zdHJpbmcgb2Mgc3QgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IGZsdXNoX2NodW5rICgpID1cbiAgICBsZXQgYSA9IHJldl9hcnJheV9vZl9saXN0ICFhY2MgaW5cbiAgICBhY2MgOj0gW107XG4gICAgbiA6PSAwO1xuICAgIGxldCBzID0gdG9fc3RyaW5nIGEgaW5cbiAgICBvdXRwdXRfY2hhciBvYyAnXFwwMDEnO1xuICAgIG91dHB1dF9pbnQ2NCBvYyAoU3RyaW5nLmxlbmd0aCBzKTtcbiAgICBvdXRwdXRfc3RyaW5nIG9jIHNcbiAgaW5cbiAgU3RyZWFtLml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBpbmNyIG47XG4gICAgICBhY2MgOj0geCA6OiAhYWNjO1xuICAgICAgaWYgIW4gPj0gY2h1bmtfbGVuIHRoZW5cbiAgICAgICAgZmx1c2hfY2h1bmsgKClcbiAgKSBzdDtcbiAgaWYgIW4gPiAwIHRoZW5cbiAgICBmbHVzaF9jaHVuayAoKTtcbiAgb3V0cHV0X2NoYXIgb2MgJ1xcMDAwJ1xuXG5cbmxldCB0ZXN0IGwgPVxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IGFzc2VydCAoeCA+PSAwICYmIHggPD0gOSkpIGw7XG4gIGxldCB0b19zdHJpbmcgYSA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfaW50IChBcnJheS50b19saXN0IGEpKVxuICBpblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKGZ1biBpIC0+IGludF9vZl9zdHJpbmcgKFN0cmluZy5tYWtlIDEgcy5baV0pKVxuICBpblxuICBsZXQgc3QgPSBTdHJlYW0ub2ZfbGlzdCBsIGluXG4gIGxldCBvYyA9IG9wZW5fb3V0IFwidGVzdC1zdHJlYW0uZGF0XCIgaW5cbiAgd3JpdGVfc3RyZWFtIH5jaHVua19sZW46MiB0b19zdHJpbmcgb2Mgc3Q7XG4gIGNsb3NlX291dCBvYztcblxuICBsZXQgaWMgPSBvcGVuX2luIFwidGVzdC1zdHJlYW0uZGF0XCIgaW5cbiAgbGV0IHN0JyA9IHJlYWRfc3RyZWFtIG9mX3N0cmluZyBpYyBpblxuICBsZXQgbCcgPSByZWYgW10gaW5cbiAgU3RyZWFtLml0ZXIgKGZ1biBpIC0+IGwnIDo9IGkgOjogIWwnKSBzdCc7XG4gIGNsb3NlX2luIGljO1xuICBsID0gTGlzdC5yZXYgIWwnXG4iLCJvcGVuIFByaW50ZlxuXG5vcGVuIEJpX291dGJ1Zlxub3BlbiBCaV9pbmJ1ZlxuXG50eXBlIG5vZGVfdGFnID0gaW50XG5cbmxldCBib29sX3RhZyA9IDBcbmxldCBpbnQ4X3RhZyA9IDFcbmxldCBpbnQxNl90YWcgPSAyXG5sZXQgaW50MzJfdGFnID0gM1xubGV0IGludDY0X3RhZyA9IDRcbmxldCBmbG9hdDMyX3RhZyA9IDExXG5sZXQgZmxvYXQ2NF90YWcgPSAxMlxubGV0IHV2aW50X3RhZyA9IDE2XG5sZXQgc3ZpbnRfdGFnID0gMTdcbmxldCBzdHJpbmdfdGFnID0gMThcbmxldCBhcnJheV90YWcgPSAxOVxubGV0IHR1cGxlX3RhZyA9IDIwXG5sZXQgcmVjb3JkX3RhZyA9IDIxXG5sZXQgbnVtX3ZhcmlhbnRfdGFnID0gMjJcbmxldCB2YXJpYW50X3RhZyA9IDIzXG5sZXQgdW5pdF90YWcgPSAyNFxubGV0IHRhYmxlX3RhZyA9IDI1XG5sZXQgc2hhcmVkX3RhZyA9IDI2XG5cbnR5cGUgaGFzaCA9IGludFxuXG4oKlxuICBEYXRhIHRyZWUsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuKilcbnR5cGUgdHJlZSA9XG4gICAgWyBgVW5pdFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludDggb2YgY2hhclxuICAgIHwgYEludDE2IG9mIGludFxuICAgIHwgYEludDMyIG9mIEludDMyLnRcbiAgICB8IGBJbnQ2NCBvZiBJbnQ2NC50XG4gICAgfCBgRmxvYXQzMiBvZiBmbG9hdFxuICAgIHwgYEZsb2F0NjQgb2YgZmxvYXRcbiAgICB8IGBVdmludCBvZiBpbnRcbiAgICB8IGBTdmludCBvZiBpbnRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXJyYXkgb2YgKG5vZGVfdGFnICogdHJlZSBhcnJheSkgb3B0aW9uXG4gICAgfCBgVHVwbGUgb2YgdHJlZSBhcnJheVxuICAgIHwgYFJlY29yZCBvZiAoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiB0cmVlKSBhcnJheVxuICAgIHwgYE51bV92YXJpYW50IG9mIChpbnQgKiB0cmVlIG9wdGlvbilcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgb3B0aW9uICogaGFzaCAqIHRyZWUgb3B0aW9uKVxuICAgIHwgYFRhYmxlIG9mXG5cdCgoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiBub2RlX3RhZykgYXJyYXkgKiB0cmVlIGFycmF5IGFycmF5KSBvcHRpb25cbiAgICB8IGBTaGFyZWQgb2YgdHJlZSBdXG5cbigqIGV4dGVuZCBzaWduIGJpdCAqKVxubGV0IG1ha2Vfc2lnbmVkIHggPVxuICBpZiB4ID4gMHgzRkZGRkZGRiB0aGVuIHggLSAoMSBsc2wgMzEpIGVsc2UgeFxuXG4oKlxuICBTYW1lIGZ1bmN0aW9uIGFzIHRoZSBvbmUgdXNlZCBmb3IgT0NhbWwgdmFyaWFudHMgYW5kIG9iamVjdCBtZXRob2RzLlxuKilcbmxldCBoYXNoX25hbWUgcyA9XG4gIGxldCBhY2N1ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBhY2N1IDo9IDIyMyAqICFhY2N1ICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoMSBsc2wgMzEgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBtYWtlX3NpZ25lZCAhYWNjdVxuXG5cbigqXG4gIFN0cnVjdHVyZSBvZiBhIGhhc2h0YWc6IDQgYnl0ZXMsXG5cbiAgYXJnYml0IDdiaXRzIDhiaXRzIDhiaXRzIDhiaXRzXG4gICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICAgICAgICAgICAzMS1iaXQgaGFzaFxuXG4gIGFyZ2JpdCA9IDEgaWZmIGhhc2h0YWcgaXMgZm9sbG93ZWQgYnkgYW4gYXJndW1lbnQsIHRoaXMgaXMgYWx3YXlzIDEgZm9yXG4gICAgICAgICAgIHJlY29yZCBmaWVsZHMuXG5cbiopXG5cbmxldCBtYXNrXzMxYml0ID1cbiAgbGV0IG4gPSBCaV91dGlsLmludF9zaXplIC0gMzEgaW5cbiAgYXNzZXJ0IChuID49IDApO1xuICBmdW4geCAtPiAoeCBsc2wgbikgbHNyIG5cblxubGV0IHdyaXRlX2hhc2h0YWcgb2IgaCBoYXNfYXJnID1cbiAgbGV0IGggPSBtYXNrXzMxYml0IGggaW5cbiAgbGV0IHBvcyA9IEJpX291dGJ1Zi5hbGxvYyBvYiA0IGluXG4gIGxldCBzID0gb2Iub19zIGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzMpIChDaGFyLmNociAoaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGggPSBoIGxzciA4IGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzIpIChDaGFyLmNociAoaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGggPSBoIGxzciA4IGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzEpIChDaGFyLmNociAoaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGggPSBoIGxzciA4IGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyBwb3MgKFxuICAgIENoYXIuY2hyIChcbiAgICAgIGlmIGhhc19hcmcgdGhlbiBoIGxvciAweDgwXG4gICAgICBlbHNlIGhcbiAgICApXG4gIClcblxubGV0IHN0cmluZ19vZl9oYXNodGFnIGggaGFzX2FyZyA9XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgNCBpblxuICB3cml0ZV9oYXNodGFnIG9iIGggaGFzX2FyZztcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX2hhc2h0YWcgaWIgY29udCA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA0IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MCA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkgaW5cbiAgbGV0IGhhc19hcmcgPSB4MCA+PSAweDgwIGluXG4gIGxldCB4MSA9ICh4MCBsYW5kIDB4N2YpIGxzbCAyNCBpblxuICBsZXQgeDIgPSAoQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSsxKSkpIGxzbCAxNiBpblxuICBsZXQgeDMgPSAoQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSsyKSkpIGxzbCA4IGluXG4gIGxldCB4NCA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMykpIGluXG4gIGxldCBoID0gbWFrZV9zaWduZWQgKHgxIGxvciB4MiBsb3IgeDMgbG9yIHg0KSBpblxuXG4gIGNvbnQgaWIgaCBoYXNfYXJnXG5cblxubGV0IHJlYWRfZmllbGRfaGFzaHRhZyBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA0IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MCA9IENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIGkpIGluXG4gIGlmIHgwIDwgMHg4MCB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIGZpZWxkIGhhc2h0YWcpXCI7XG4gIGxldCB4MSA9ICh4MCBsYW5kIDB4N2YpIGxzbCAyNCBpblxuICBsZXQgeDIgPSAoQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkrMSkpKSBsc2wgMTYgaW5cbiAgbGV0IHgzID0gKENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzIpKSkgbHNsIDggaW5cbiAgbGV0IHg0ID0gQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkrMykpIGluXG4gIG1ha2Vfc2lnbmVkICh4MSBsb3IgeDIgbG9yIHgzIGxvciB4NClcblxuXG50eXBlIGludDcgPSBpbnRcblxubGV0IHdyaXRlX251bXRhZyBvYiBpIGhhc19hcmcgPVxuICBpZiBpIDwgMCB8fCBpID4gMHg3ZiB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIG51bXRhZylcIjtcbiAgbGV0IHggPVxuICAgIGlmIGhhc19hcmcgdGhlbiBpIGxvciAweDgwXG4gICAgZWxzZSBpXG4gIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHJlYWRfbnVtdGFnIGliIGNvbnQgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgMSBpblxuICBsZXQgeCA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IGliLmlfcyBpKSBpblxuICBsZXQgaGFzX2FyZyA9IHggPj0gMHg4MCBpblxuICBjb250IGliICh4IGxhbmQgMHg3ZikgaGFzX2FyZ1xuXG5sZXQgbWFrZV91bmhhc2ggbCA9XG4gIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAoNCAqIExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHMgLT5cbiAgICAgIGxldCBoID0gaGFzaF9uYW1lIHMgaW5cbiAgICAgIHRyeVxuXHRtYXRjaCBIYXNodGJsLmZpbmQgdGJsIGggd2l0aFxuXHQgICAgU29tZSBzJyAtPlxuXHQgICAgICBpZiBzIDw+IHMnIHRoZW5cblx0XHRmYWlsd2l0aCAoXG5cdFx0ICBzcHJpbnRmXG5cdFx0ICAgIFwiQmlfaW8ubWFrZV91bmhhc2g6IFxcXG4gICAgICAgICAgICAgICAgICAgICAlUyBhbmQgJVMgaGF2ZSB0aGUgc2FtZSBoYXNoLCBwbGVhc2UgcGljayBhbm90aGVyIG5hbWVcIlxuXHRcdCAgICBzIHMnXG5cdFx0KVxuXHQgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcblxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gSGFzaHRibC5hZGQgdGJsIGggKFNvbWUgcylcbiAgKSBsO1xuICBmdW4gaCAtPlxuICAgIHRyeSBIYXNodGJsLmZpbmQgdGJsIGhcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cblxubGV0IHdyaXRlX3RhZyBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfdW5pdCBvYiAoKSA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAnXFx4MDAnXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9ib29sIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKGlmIHggdGhlbiAnXFx4MDEnIGVsc2UgJ1xceDAwJylcblxubGV0IHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiB4XG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ4IG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeCBsc3IgOCkpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4IGxhbmQgMHhmZikpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiB4ID1cbiAgbGV0IGhpZ2ggPSBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxNikgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoaGlnaCBsc3IgOCkpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChoaWdoIGxhbmQgMHhmZikpO1xuICBsZXQgbG93ID0gSW50MzIudG9faW50IHggaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKGxvdyBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGxvdyBsYW5kIDB4ZmYpKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4ID1cbiAgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgKEludDMyLmJpdHNfb2ZfZmxvYXQgeClcblxubGV0IGZsb2F0X2VuZGlhbm5lc3MgPSBsYXp5IChcbiAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyAxLjApIDAgd2l0aFxuICAgICAgJ1xceDNmJyAtPiBgQmlnXG4gICAgfCAnXFx4MDAnIC0+IGBMaXR0bGVcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4pXG5cbmxldCByZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgOCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmRvdWJsZV90YWcgOCBpblxuICAobWF0Y2ggTGF6eS5mb3JjZSBmbG9hdF9lbmRpYW5uZXNzIHdpdGhcbiAgICAgICBgTGl0dGxlIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IChPYmoub2JqIHgpICg3LWopIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkraikpXG5cdCBkb25lXG4gICAgIHwgYEJpZyAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCAoT2JqLm9iaiB4KSBqIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkraikpXG5cdCBkb25lXG4gICk7XG4gIChPYmoub2JqIHggOiBmbG9hdClcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeCA9XG4gIGxldCBpID0gQmlfb3V0YnVmLmFsbG9jIG9iIDggaW5cbiAgbGV0IHMgPSBvYi5vX3MgaW5cbiAgKG1hdGNoIExhenkuZm9yY2UgZmxvYXRfZW5kaWFubmVzcyB3aXRoXG4gICAgICAgYExpdHRsZSAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCBzIChpK2opIChTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIHgpICg3LWopKVxuXHQgZG9uZVxuICAgICB8IGBCaWcgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgcyAoaStqKSAoU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyB4KSBqKVxuXHQgZG9uZVxuICApXG5cbigqXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50NjQgb2IgeCA9XG4gIGxldCB4NCA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDQ4KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4NCBsc3IgOCkpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4NCBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgzID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMzIpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MyBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgzIGxhbmQgMHhmZikpO1xuICBsZXQgeDIgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxNikgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgyIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDIgbGFuZCAweGZmKSk7XG4gIGxldCB4MSA9IEludDY0LnRvX2ludCB4IGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MSBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgxIGxhbmQgMHhmZikpXG4qKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50NjQgb2IgeCA9XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgKEludDY0LmZsb2F0X29mX2JpdHMgeClcblxuXG5sZXQgc2FmZXR5X3Rlc3QgKCkgPVxuICBsZXQgcyA9IFwiXFx4M2ZcXHhmMFxceDA2XFx4MDVcXHgwNFxceDAzXFx4MDJcXHgwMVwiIGluXG4gIGxldCB4ID0gMS4wMDE0Njk2MjcwNjY1MTI4OCBpblxuICBsZXQgeSA9IHJlYWRfdW50YWdnZWRfZmxvYXQ2NCAoQmlfaW5idWYuZnJvbV9zdHJpbmcgcykgaW5cbiAgaWYgeCA8PiB5IHRoZW5cbiAgICBhc3NlcnQgZmFsc2U7XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgOCBpblxuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHg7XG4gIGlmIEJpX291dGJ1Zi5jb250ZW50cyBvYiA8PiBzIHRoZW5cbiAgICBhc3NlcnQgZmFsc2VcblxuXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9zdHJpbmcgb2IgcyA9XG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKFN0cmluZy5sZW5ndGggcyk7XG4gIEJpX291dGJ1Zi5hZGRfc3RyaW5nIG9iIHNcblxubGV0IHdyaXRlX3VudGFnZ2VkX3V2aW50ID0gQmlfdmludC53cml0ZV91dmludFxubGV0IHdyaXRlX3VudGFnZ2VkX3N2aW50ID0gQmlfdmludC53cml0ZV9zdmludFxuXG5sZXQgd3JpdGVfdW5pdCBvYiAoKSA9XG4gIHdyaXRlX3RhZyBvYiB1bml0X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfdW5pdCBvYiAoKVxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGJvb2xfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9ib29sIG9iIHhcblxubGV0IHdyaXRlX2NoYXIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfY2hhciBvYiB4XG5cbmxldCB3cml0ZV9pbnQ4IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDggb2IgeFxuXG5sZXQgd3JpdGVfaW50MTYgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQxNl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDE2IG9iIHhcblxubGV0IHdyaXRlX2ludDMyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50MzJfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiB4XG5cbmxldCB3cml0ZV9pbnQ2NCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDY0X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50NjQgb2IgeFxuXG5sZXQgd3JpdGVfZmxvYXQzMiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGZsb2F0MzJfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIG9iIHhcblxubGV0IHdyaXRlX2Zsb2F0NjQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBmbG9hdDY0X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4XG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBzdHJpbmdfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9zdHJpbmcgb2IgeFxuXG5sZXQgd3JpdGVfdXZpbnQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiB1dmludF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3V2aW50IG9iIHhcblxubGV0IHdyaXRlX3N2aW50IG9iIHggPVxuICB3cml0ZV90YWcgb2Igc3ZpbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9zdmludCBvYiB4XG5cblxuXG5cbmxldCByZWMgd3JpdGVfdCBvYiB0YWdnZWQgKHggOiB0cmVlKSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYFVuaXQgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdW5pdF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKClcblxuICAgIHwgYEJvb2wgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBib29sX3RhZztcblx0d3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4XG5cbiAgICB8IGBJbnQ4IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeFxuXG4gICAgfCBgSW50MTYgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQxNl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDE2IG9iIHhcblxuICAgIHwgYEludDMyIHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50MzJfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiB4XG5cbiAgICB8IGBJbnQ2NCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDY0X3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50NjQgb2IgeFxuXG4gICAgfCBgRmxvYXQzMiB4IC0+XG4gICAgICAgIGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGZsb2F0MzJfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIG9iIHhcblxuICAgIHwgYEZsb2F0NjQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBmbG9hdDY0X3RhZztcblx0d3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4XG5cbiAgICB8IGBVdmludCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHV2aW50X3RhZztcblx0QmlfdmludC53cml0ZV91dmludCBvYiB4XG5cbiAgICB8IGBTdmludCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHN2aW50X3RhZztcblx0QmlfdmludC53cml0ZV9zdmludCBvYiB4XG5cbiAgICB8IGBTdHJpbmcgcyAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBzdHJpbmdfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9zdHJpbmcgb2Igc1xuXG4gICAgfCBgQXJyYXkgbyAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBhcnJheV90YWc7XG5cdChtYXRjaCBvIHdpdGhcblx0ICAgICBOb25lIC0+IEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgMFxuXHQgICB8IFNvbWUgKG5vZGVfdGFnLCBhKSAtPlxuXHQgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG5cdCAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIGxlbjtcblx0ICAgICAgIGlmIGxlbiA+IDAgdGhlbiAoXG5cdFx0IHdyaXRlX3RhZyBvYiBub2RlX3RhZztcblx0XHQgQXJyYXkuaXRlciAod3JpdGVfdCBvYiBmYWxzZSkgYVxuXHQgICAgICAgKVxuXHQpXG5cbiAgICB8IGBUdXBsZSBhIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHR1cGxlX3RhZztcblx0QmlfdmludC53cml0ZV91dmludCBvYiAoQXJyYXkubGVuZ3RoIGEpO1xuXHRBcnJheS5pdGVyICh3cml0ZV90IG9iIHRydWUpIGFcblxuICAgIHwgYFJlY29yZCBhIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHJlY29yZF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKEFycmF5Lmxlbmd0aCBhKTtcbiAgICAgICAgQXJyYXkuaXRlciAod3JpdGVfZmllbGQgb2IpIGFcblxuICAgIHwgYE51bV92YXJpYW50IChpLCB4KSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBudW1fdmFyaWFudF90YWc7XG5cdHdyaXRlX251bXRhZyBvYiBpICh4IDw+IE5vbmUpO1xuXHQobWF0Y2ggeCB3aXRoXG5cdCAgICAgTm9uZSAtPiAoKVxuXHQgICB8IFNvbWUgdiAtPiB3cml0ZV90IG9iIHRydWUgdilcblxuICAgIHwgYFZhcmlhbnQgKG8sIGgsIHgpIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHZhcmlhbnRfdGFnO1xuXHR3cml0ZV9oYXNodGFnIG9iIGggKHggPD4gTm9uZSk7XG5cdChtYXRjaCB4IHdpdGhcblx0ICAgICBOb25lIC0+ICgpXG5cdCAgIHwgU29tZSB2IC0+IHdyaXRlX3Qgb2IgdHJ1ZSB2KVxuXG4gICAgfCBgVGFibGUgbyAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB0YWJsZV90YWc7XG5cdChtYXRjaCBvIHdpdGhcblx0ICAgICBOb25lIC0+IEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgMFxuXHQgICB8IFNvbWUgKGZpZWxkcywgYSkgLT5cblx0ICAgICAgIGxldCByb3dfbnVtID0gQXJyYXkubGVuZ3RoIGEgaW5cblx0ICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2Igcm93X251bTtcblx0ICAgICAgIGlmIHJvd19udW0gPiAwIHRoZW5cblx0XHQgbGV0IGNvbF9udW0gPSBBcnJheS5sZW5ndGggZmllbGRzIGluXG5cdFx0IEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgY29sX251bTtcblx0XHQgQXJyYXkuaXRlciAoXG5cdFx0ICAgZnVuIChuYW1lLCBoLCB0YWcpIC0+XG5cdFx0ICAgICB3cml0ZV9oYXNodGFnIG9iIGggdHJ1ZTtcblx0XHQgICAgIHdyaXRlX3RhZyBvYiB0YWdcblx0XHQgKSBmaWVsZHM7XG5cdFx0IGlmIHJvd19udW0gPiAwIHRoZW4gKFxuXHRcdCAgIGZvciBpID0gMCB0byByb3dfbnVtIC0gMSBkb1xuXHRcdCAgICAgbGV0IGFpID0gYS4oaSkgaW5cblx0XHQgICAgIGlmIEFycmF5Lmxlbmd0aCBhaSA8PiBjb2xfbnVtIHRoZW5cblx0XHQgICAgICAgaW52YWxpZF9hcmcgXCJCaV9pby53cml0ZV90OiBNYWxmb3JtZWQgYFRhYmxlXCI7XG5cdFx0ICAgICBmb3IgaiA9IDAgdG8gY29sX251bSAtIDEgZG9cblx0XHQgICAgICAgd3JpdGVfdCBvYiBmYWxzZSBhaS4oailcblx0XHQgICAgIGRvbmVcblx0XHQgICBkb25lXG5cdFx0IClcblx0KVxuXG4gICAgfCBgU2hhcmVkIHggLT5cbiAgICAgICAgaWYgdGFnZ2VkIHRoZW5cbiAgICAgICAgICB3cml0ZV90YWcgb2Igc2hhcmVkX3RhZztcbiAgICAgICAgbGV0IG9mZnNldCA9XG4gICAgICAgICAgQmlfc2hhcmUuV3IucHV0IG9iLm9fc2hhcmVkXG4gICAgICAgICAgICAoeCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgKG9iLm9fb2ZmcyArIG9iLm9fbGVuKSBpblxuICAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIG9mZnNldDtcbiAgICAgICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICAgICAgd3JpdGVfdCBvYiB0cnVlIHhcblxuYW5kIHdyaXRlX2ZpZWxkIG9iIChzLCBoLCB4KSA9XG4gIHdyaXRlX2hhc2h0YWcgb2IgaCB0cnVlO1xuICB3cml0ZV90IG9iIHRydWUgeFxuXG5sZXQgd3JpdGVfdHJlZSBvYiB4ID1cbiAgd3JpdGVfdCBvYiB0cnVlIHhcblxubGV0IHN0cmluZ19vZl90cmVlIHggPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDEwMDAgaW5cbiAgd3JpdGVfdHJlZSBvYiB4O1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHRhZ19vZl90cmVlICh4IDogdHJlZSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBVbml0IC0+IHVuaXRfdGFnXG4gICAgfCBgQm9vbCBfIC0+IGJvb2xfdGFnXG4gICAgfCBgSW50OCBfIC0+IGludDhfdGFnXG4gICAgfCBgSW50MTYgXyAtPiBpbnQxNl90YWdcbiAgICB8IGBJbnQzMiBfIC0+IGludDMyX3RhZ1xuICAgIHwgYEludDY0IF8gLT4gaW50NjRfdGFnXG4gICAgfCBgRmxvYXQzMiBfIC0+IGZsb2F0MzJfdGFnXG4gICAgfCBgRmxvYXQ2NCBfIC0+IGZsb2F0NjRfdGFnXG4gICAgfCBgVXZpbnQgXyAtPiB1dmludF90YWdcbiAgICB8IGBTdmludCBfIC0+IHN2aW50X3RhZ1xuICAgIHwgYFN0cmluZyBfIC0+IHN0cmluZ190YWdcbiAgICB8IGBBcnJheSBfIC0+IGFycmF5X3RhZ1xuICAgIHwgYFR1cGxlIF8gLT4gdHVwbGVfdGFnXG4gICAgfCBgUmVjb3JkIF8gLT4gcmVjb3JkX3RhZ1xuICAgIHwgYE51bV92YXJpYW50IF8gLT4gbnVtX3ZhcmlhbnRfdGFnXG4gICAgfCBgVmFyaWFudCBfIC0+IHZhcmlhbnRfdGFnXG4gICAgfCBgVGFibGUgXyAtPiB0YWJsZV90YWdcbiAgICB8IGBTaGFyZWQgXyAtPiBzaGFyZWRfdGFnXG5cblxubGV0IHJlYWRfdGFnIGliID1cbiAgQ2hhci5jb2RlIChCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIpXG5cbmxldCByZWFkX3VudGFnZ2VkX3VuaXQgaWIgPVxuICBtYXRjaCBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIgd2l0aFxuICAgICAgJ1xceDAwJyAtPiAoKVxuICAgIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKHVuaXQgdmFsdWUpXCJcblxubGV0IHJlYWRfdW50YWdnZWRfYm9vbCBpYiA9XG4gIG1hdGNoIEJpX2luYnVmLnJlYWRfY2hhciBpYiB3aXRoXG4gICAgICAnXFx4MDAnIC0+IGZhbHNlXG4gICAgfCAnXFx4MDEnIC0+IHRydWVcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChib29sIHZhbHVlKVwiXG5cbmxldCByZWFkX3VudGFnZ2VkX2NoYXIgaWIgPSBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWJcblxubGV0IHJlYWRfdW50YWdnZWRfaW50OCBpYiA9XG4gIENoYXIuY29kZSAoQmlfaW5idWYucmVhZF9jaGFyIGliKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQxNiBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiAyIGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gICgoQ2hhci5jb2RlIChCeXRlcy5nZXQgcyBpKSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSsxKSkpXG5cblxubGV0IHJlYWRfdW50YWdnZWRfaW50MzIgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgZ2V0X2NvZGUgcyBpID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyBpKSBpblxuICBsZXQgeDEgPVxuICAgIEludDMyLm9mX2ludCAoKChnZXRfY29kZSBzIChpICApKSBsc2wgOCkgbG9yIChnZXRfY29kZSBzIChpKzEpKSkgaW5cbiAgbGV0IHgyID1cbiAgICBJbnQzMi5vZl9pbnQgKCgoZ2V0X2NvZGUgcyAoaSsyKSkgbHNsIDgpIGxvciAoZ2V0X2NvZGUgcyAoaSszKSkpIGluXG4gIEludDMyLmxvZ29yIChJbnQzMi5zaGlmdF9sZWZ0IHgxIDE2KSB4MlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliID1cbiAgSW50MzIuZmxvYXRfb2ZfYml0cyAocmVhZF91bnRhZ2dlZF9pbnQzMiBpYilcblxuKCpcbmxldCByZWFkX3VudGFnZ2VkX2ludDY0IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDggaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgxID1cbiAgICBJbnQ2NC5vZl9pbnQgKCgoQ2hhci5jb2RlIHMuW2kgIF0pIGxzbCA4KSBsb3IgKENoYXIuY29kZSBzLltpKzFdKSkgaW5cbiAgbGV0IHgyID1cbiAgICBJbnQ2NC5vZl9pbnQgKCgoQ2hhci5jb2RlIHMuW2krMl0pIGxzbCA4KSBsb3IgKENoYXIuY29kZSBzLltpKzNdKSkgaW5cbiAgbGV0IHgzID1cbiAgICBJbnQ2NC5vZl9pbnQgKCgoQ2hhci5jb2RlIHMuW2krNF0pIGxzbCA4KSBsb3IgKENoYXIuY29kZSBzLltpKzVdKSkgaW5cbiAgbGV0IHg0ID1cbiAgICBJbnQ2NC5vZl9pbnQgKCgoQ2hhci5jb2RlIHMuW2krNl0pIGxzbCA4KSBsb3IgKENoYXIuY29kZSBzLltpKzddKSkgaW5cbiAgSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDEgNDgpXG4gICAgKEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgyIDMyKVxuICAgICAgIChJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MyAxNikgeDQpKVxuKilcblxubGV0IHJlYWRfdW50YWdnZWRfaW50NjQgaWIgPVxuICBJbnQ2NC5iaXRzX29mX2Zsb2F0IChyZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIpXG5cblxuXG5sZXQgcmVhZF91bnRhZ2dlZF9zdHJpbmcgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgcmVtID0gcmVmIGxlbiBpblxuICB3aGlsZSAhcmVtID4gMCBkb1xuICAgIGxldCBieXRlc19yZWFkID0gQmlfaW5idWYudHJ5X3ByZXJlYWQgaWIgIXJlbSBpblxuICAgIGlmIGJ5dGVzX3JlYWQgPSAwIHRoZW5cbiAgICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoc3RyaW5nKVwiXG4gICAgZWxzZSAoXG4gICAgICBCeXRlcy5ibGl0IGliLmlfcyBpYi5pX3BvcyBzdHIgIXBvcyBieXRlc19yZWFkO1xuICAgICAgaWIuaV9wb3MgPC0gaWIuaV9wb3MgKyBieXRlc19yZWFkO1xuICAgICAgcG9zIDo9ICFwb3MgKyBieXRlc19yZWFkO1xuICAgICAgcmVtIDo9ICFyZW0gLSBieXRlc19yZWFkXG4gICAgKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc3RyXG5cbmxldCByZWFkX3VudGFnZ2VkX3V2aW50ID0gQmlfdmludC5yZWFkX3V2aW50XG5sZXQgcmVhZF91bnRhZ2dlZF9zdmludCA9IEJpX3ZpbnQucmVhZF9zdmludFxuXG5sZXQgcmVhZF91bml0IGliID0gcmVhZF91bnRhZ2dlZF91bml0IGliOyBgVW5pdFxuXG5sZXQgcmVhZF9ib29sIGliID0gYEJvb2wgKHJlYWRfdW50YWdnZWRfYm9vbCBpYilcblxubGV0IHJlYWRfaW50OCBpYiA9IGBJbnQ4IChyZWFkX3VudGFnZ2VkX2NoYXIgaWIpXG5cbmxldCByZWFkX2ludDE2IGliID0gYEludDE2IChyZWFkX3VudGFnZ2VkX2ludDE2IGliKVxuXG5sZXQgcmVhZF9pbnQzMiBpYiA9IGBJbnQzMiAocmVhZF91bnRhZ2dlZF9pbnQzMiBpYilcblxubGV0IHJlYWRfaW50NjQgaWIgPSBgSW50NjQgKHJlYWRfdW50YWdnZWRfaW50NjQgaWIpXG5cbmxldCByZWFkX2Zsb2F0MzIgaWIgPVxuICBgRmxvYXQzMiAocmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliKVxuXG5sZXQgcmVhZF9mbG9hdDY0IGliID1cbiAgYEZsb2F0NjQgKHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYilcblxubGV0IHJlYWRfdXZpbnQgaWIgPSBgVXZpbnQgKHJlYWRfdW50YWdnZWRfdXZpbnQgaWIpXG5sZXQgcmVhZF9zdmludCBpYiA9IGBTdmludCAocmVhZF91bnRhZ2dlZF9zdmludCBpYilcblxubGV0IHJlYWRfc3RyaW5nIGliID0gYFN0cmluZyAocmVhZF91bnRhZ2dlZF9zdHJpbmcgaWIpXG5cbmxldCBwcmludCBzID0gcHJpbnRfc3RyaW5nIHM7IHByaW50X25ld2xpbmUgKClcblxubGV0IHJlYWRfdHJlZSA/KHVuaGFzaCA9IG1ha2VfdW5oYXNoIFtdKSBpYiA6IHRyZWUgPVxuXG4gIGxldCByZWMgcmVhZF9hcnJheSBpYiA9XG4gICAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIGxlbiA9IDAgdGhlbiBgQXJyYXkgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuICAgICAgbGV0IHJlYWQgPSByZWFkZXJfb2ZfdGFnIHRhZyBpblxuICAgICAgYEFycmF5IChTb21lICh0YWcsIEFycmF5LmluaXQgbGVuIChmdW4gXyAtPiByZWFkIGliKSkpXG5cbiAgYW5kIHJlYWRfdHVwbGUgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBgVHVwbGUgKEFycmF5LmluaXQgbGVuIChmdW4gXyAtPiByZWFkX3RyZWUgaWIpKVxuXG4gIGFuZCByZWFkX2ZpZWxkIGliID1cbiAgICBsZXQgaCA9IHJlYWRfZmllbGRfaGFzaHRhZyBpYiBpblxuICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cbiAgICBsZXQgeCA9IHJlYWRfdHJlZSBpYiBpblxuICAgIChuYW1lLCBoLCB4KVxuXG4gIGFuZCByZWFkX3JlY29yZCBpYiA9XG4gICAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGBSZWNvcmQgKEFycmF5LmluaXQgbGVuIChmdW4gXyAtPiByZWFkX2ZpZWxkIGliKSlcblxuICBhbmQgcmVhZF9udW1fdmFyaWFudF9jb250IGliIGkgaGFzX2FyZyA9XG4gICAgbGV0IHggPVxuICAgICAgaWYgaGFzX2FyZyB0aGVuXG5cdFNvbWUgKHJlYWRfdHJlZSBpYilcbiAgICAgIGVsc2Vcblx0Tm9uZVxuICAgIGluXG4gICAgYE51bV92YXJpYW50IChpLCB4KVxuXG4gIGFuZCByZWFkX251bV92YXJpYW50IGliID1cbiAgICByZWFkX251bXRhZyBpYiByZWFkX251bV92YXJpYW50X2NvbnRcblxuICBhbmQgcmVhZF92YXJpYW50X2NvbnQgaWIgaCBoYXNfYXJnID1cbiAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG4gICAgbGV0IHggPVxuICAgICAgaWYgaGFzX2FyZyB0aGVuXG5cdFNvbWUgKHJlYWRfdHJlZSBpYilcbiAgICAgIGVsc2Vcblx0Tm9uZVxuICAgIGluXG4gICAgYFZhcmlhbnQgKG5hbWUsIGgsIHgpXG5cbiAgYW5kIHJlYWRfdmFyaWFudCBpYiA9XG4gICAgcmVhZF9oYXNodGFnIGliIHJlYWRfdmFyaWFudF9jb250XG5cbiAgYW5kIHJlYWRfdGFibGUgaWIgPVxuICAgIGxldCByb3dfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgcm93X251bSA9IDAgdGhlblxuICAgICAgYFRhYmxlIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgY29sX251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgICAgbGV0IGZpZWxkcyA9XG5cdEFycmF5LmluaXQgY29sX251bSAoXG5cdCAgZnVuIF8gLT5cblx0ICAgIGxldCBoID0gcmVhZF9maWVsZF9oYXNodGFnIGliIGluXG5cdCAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG5cdCAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cblx0ICAgIChuYW1lLCBoLCB0YWcpXG5cdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVhZGVycyA9XG5cdEFycmF5Lm1hcCAoZnVuIChuYW1lLCBoLCB0YWcpIC0+IHJlYWRlcl9vZl90YWcgdGFnKSBmaWVsZHMgaW5cbiAgICAgIGxldCBhID1cblx0QXJyYXkuaW5pdCByb3dfbnVtXG5cdCAgKGZ1biBfIC0+XG5cdCAgICAgQXJyYXkuaW5pdCBjb2xfbnVtIChmdW4gaiAtPiByZWFkZXJzLihqKSBpYikpXG4gICAgICBpblxuICAgICAgYFRhYmxlIChTb21lIChmaWVsZHMsIGEpKVxuXG4gIGFuZCByZWFkX3NoYXJlZCBpYiA9XG4gICAgbGV0IHBvcyA9IGliLmlfb2ZmcyArIGliLmlfcG9zIGluXG4gICAgbGV0IG9mZnNldCA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgbGV0IHJlYyByID0gYFNoYXJlZCByIGluXG4gICAgICBCaV9zaGFyZS5SZC5wdXQgaWIuaV9zaGFyZWRcbiAgICAgICAgKHBvcywgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgKE9iai5yZXByIHIpO1xuICAgICAgbGV0IHggPSByZWFkX3RyZWUgaWIgaW5cbiAgICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIHIpIDEgKE9iai5yZXByIHgpO1xuICAgICAgclxuICAgIGVsc2VcbiAgICAgIE9iai5vYmogKEJpX3NoYXJlLlJkLmdldCBpYi5pX3NoYXJlZFxuICAgICAgICAgICAgICAgICAocG9zIC0gb2Zmc2V0LCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSlcblxuICBhbmQgcmVhZGVyX29mX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAwICgqIGJvb2wgKikgLT4gcmVhZF9ib29sXG4gICAgfCAxICgqIGludDggKikgLT4gcmVhZF9pbnQ4XG4gICAgfCAyICgqIGludDE2ICopIC0+IHJlYWRfaW50MTZcbiAgICB8IDMgKCogaW50MzIgKikgLT4gcmVhZF9pbnQzMlxuICAgIHwgNCAoKiBpbnQ2NCAqKSAtPiByZWFkX2ludDY0XG4gICAgfCAxMSAoKiBmbG9hdDMyICopIC0+IHJlYWRfZmxvYXQzMlxuICAgIHwgMTIgKCogZmxvYXQ2NCAqKSAtPiByZWFkX2Zsb2F0NjRcbiAgICB8IDE2ICgqIHV2aW50ICopIC0+IHJlYWRfdXZpbnRcbiAgICB8IDE3ICgqIHN2aW50ICopIC0+IHJlYWRfc3ZpbnRcbiAgICB8IDE4ICgqIHN0cmluZyAqKSAtPiByZWFkX3N0cmluZ1xuICAgIHwgMTkgKCogYXJyYXkgKikgLT4gcmVhZF9hcnJheVxuICAgIHwgMjAgKCogdHVwbGUgKikgLT4gcmVhZF90dXBsZVxuICAgIHwgMjEgKCogcmVjb3JkICopIC0+IHJlYWRfcmVjb3JkXG4gICAgfCAyMiAoKiBudW1fdmFyaWFudCAqKSAtPiByZWFkX251bV92YXJpYW50XG4gICAgfCAyMyAoKiB2YXJpYW50ICopIC0+IHJlYWRfdmFyaWFudFxuICAgIHwgMjQgKCogdW5pdCAqKSAtPiByZWFkX3VuaXRcbiAgICB8IDI1ICgqIHRhYmxlICopIC0+IHJlYWRfdGFibGVcbiAgICB8IDI2ICgqIHNoYXJlZCAqKSAtPiByZWFkX3NoYXJlZFxuICAgIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgdGFnKVwiXG5cbiAgYW5kIHJlYWRfdHJlZSBpYiA6IHRyZWUgPVxuICAgIHJlYWRlcl9vZl90YWcgKHJlYWRfdGFnIGliKSBpYlxuXG4gIGluXG4gIHJlYWRfdHJlZSBpYlxuXG5sZXQgdHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzID0gcmVhZF90cmVlID91bmhhc2ggKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpXG5cblxubGV0IHNraXBfYnl0ZXMgaWIgbiA9IGlnbm9yZSAoQmlfaW5idWYucmVhZCBpYiBuKVxuXG5sZXQgc2tpcF91bml0IGliID0gc2tpcF9ieXRlcyBpYiAxXG5sZXQgc2tpcF9ib29sIGliID0gc2tpcF9ieXRlcyBpYiAxXG5sZXQgc2tpcF9pbnQ4IGliID0gc2tpcF9ieXRlcyBpYiAxXG5sZXQgc2tpcF9pbnQxNiBpYiA9IHNraXBfYnl0ZXMgaWIgMlxubGV0IHNraXBfaW50MzIgaWIgPSBza2lwX2J5dGVzIGliIDRcbmxldCBza2lwX2ludDY0IGliID0gc2tpcF9ieXRlcyBpYiA4XG5sZXQgc2tpcF9mbG9hdDMyIGliID0gc2tpcF9ieXRlcyBpYiA0XG5sZXQgc2tpcF9mbG9hdDY0IGliID0gc2tpcF9ieXRlcyBpYiA4XG5sZXQgc2tpcF91dmludCBpYiA9IGlnbm9yZSAocmVhZF91bnRhZ2dlZF91dmludCBpYilcbmxldCBza2lwX3N2aW50IGliID0gaWdub3JlIChyZWFkX3VudGFnZ2VkX3N2aW50IGliKVxuXG5sZXQgc2tpcF9zdHJpbmcgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIHNraXBfYnl0ZXMgaWIgbGVuXG5cbmxldCByZWMgc2tpcF9hcnJheSBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgbGVuID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cbiAgICBsZXQgcmVhZCA9IHNraXBwZXJfb2ZfdGFnIHRhZyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICAgIHJlYWQgaWJcbiAgICBkb25lXG5cbmFuZCBza2lwX3R1cGxlIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgc2tpcCBpYlxuICBkb25lXG5cbmFuZCBza2lwX2ZpZWxkIGliID1cbiAgaWdub3JlIChyZWFkX2ZpZWxkX2hhc2h0YWcgaWIpO1xuICBza2lwIGliXG5cbmFuZCBza2lwX3JlY29yZCBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgIHNraXBfZmllbGQgaWJcbiAgZG9uZVxuXG5hbmQgc2tpcF9udW1fdmFyaWFudF9jb250IGliIGkgaGFzX2FyZyA9XG4gIGlmIGhhc19hcmcgdGhlblxuICAgIHNraXAgaWJcblxuYW5kIHNraXBfbnVtX3ZhcmlhbnQgaWIgPVxuICByZWFkX251bXRhZyBpYiBza2lwX251bV92YXJpYW50X2NvbnRcblxuYW5kIHNraXBfdmFyaWFudF9jb250IGliIGggaGFzX2FyZyA9XG4gIGlmIGhhc19hcmcgdGhlblxuICAgIHNraXAgaWJcblxuYW5kIHNraXBfdmFyaWFudCBpYiA9XG4gIHJlYWRfaGFzaHRhZyBpYiBza2lwX3ZhcmlhbnRfY29udFxuXG5hbmQgc2tpcF90YWJsZSBpYiA9XG4gIGxldCByb3dfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIHJvd19udW0gPSAwIHRoZW5cbiAgICAoKVxuICBlbHNlXG4gICAgbGV0IGNvbF9udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBsZXQgcmVhZGVycyA9XG4gICAgICBBcnJheS5pbml0IGNvbF9udW0gKFxuXHRmdW4gXyAtPlxuXHQgIGlnbm9yZSAocmVhZF9maWVsZF9oYXNodGFnIGliKTtcblx0ICBza2lwcGVyX29mX3RhZyAocmVhZF90YWcgaWIpXG4gICAgICApXG4gICAgaW5cbiAgICBmb3IgaSA9IDEgdG8gcm93X251bSBkb1xuICAgICAgZm9yIGogPSAxIHRvIGNvbF9udW0gZG9cblx0cmVhZGVycy4oaikgaWJcbiAgICAgIGRvbmVcbiAgICBkb25lXG5cbmFuZCBza2lwcGVyX29mX3RhZyA9IGZ1bmN0aW9uXG4gICAgMCAoKiBib29sICopIC0+IHNraXBfYm9vbFxuICB8IDEgKCogaW50OCAqKSAtPiBza2lwX2ludDhcbiAgfCAyICgqIGludDE2ICopIC0+IHNraXBfaW50MTZcbiAgfCAzICgqIGludDMyICopIC0+IHNraXBfaW50MzJcbiAgfCA0ICgqIGludDY0ICopIC0+IHNraXBfaW50NjRcbiAgfCAxMSAoKiBmbG9hdDMyICopIC0+IHNraXBfZmxvYXQzMlxuICB8IDEyICgqIGZsb2F0NjQgKikgLT4gc2tpcF9mbG9hdDY0XG4gIHwgMTYgKCogdXZpbnQgKikgLT4gc2tpcF91dmludFxuICB8IDE3ICgqIHN2aW50ICopIC0+IHNraXBfc3ZpbnRcbiAgfCAxOCAoKiBzdHJpbmcgKikgLT4gc2tpcF9zdHJpbmdcbiAgfCAxOSAoKiBhcnJheSAqKSAtPiBza2lwX2FycmF5XG4gIHwgMjAgKCogdHVwbGUgKikgLT4gc2tpcF90dXBsZVxuICB8IDIxICgqIHJlY29yZCAqKSAtPiBza2lwX3JlY29yZFxuICB8IDIyICgqIG51bV92YXJpYW50ICopIC0+IHNraXBfbnVtX3ZhcmlhbnRcbiAgfCAyMyAoKiB2YXJpYW50ICopIC0+IHNraXBfdmFyaWFudFxuICB8IDI0ICgqIHVuaXQgKikgLT4gc2tpcF91bml0XG4gIHwgMjUgKCogdGFibGUgKikgLT4gc2tpcF90YWJsZVxuICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHRhZylcIlxuXG5hbmQgc2tpcCBpYiA6IHVuaXQgPVxuICBza2lwcGVyX29mX3RhZyAocmVhZF90YWcgaWIpIGliXG5cblxuKCogRXF1aXZhbGVudCBvZiBBcnJheS5tYXAgdGhhdCBndWFyYW50ZWVzIGEgbGVmdC10by1yaWdodCBvcmRlciAqKVxubGV0IGFycmF5X21hcCBmIGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgaWYgbGVuID0gMCB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBBcnJheS5tYWtlIGxlbiAoZiAoQXJyYXkudW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICApXG5cblxubW9kdWxlIFBwID1cbnN0cnVjdFxuICBvcGVuIEVhc3lfZm9ybWF0XG5cbiAgbGV0IGFycmF5ID0gbGlzdFxuICBsZXQgcmVjb3JkID0gbGlzdFxuICBsZXQgdHVwbGUgPSB7IGxpc3Qgd2l0aFxuXHRcdCAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IGZhbHNlO1xuXHRcdCAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgPSBmYWxzZTtcblx0XHQgIGFsaWduX2Nsb3NpbmcgPSBmYWxzZSB9XG4gIGxldCB2YXJpYW50ID0geyBsaXN0IHdpdGhcblx0XHQgICAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gdHJ1ZSB9XG5cbiAgbGV0IG1hcCBmIGEgPSBBcnJheS50b19saXN0IChhcnJheV9tYXAgZiBhKVxuXG4gIGxldCByZWMgZm9ybWF0IHNoYXJlZCAoeCA6IHRyZWUpID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgYFVuaXQgLT4gQXRvbSAoXCJ1bml0XCIsIGF0b20pXG4gICAgICB8IGBCb29sIHggLT4gQXRvbSAoKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIiksIGF0b20pXG4gICAgICB8IGBJbnQ4IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTAyeFwiIChDaGFyLmNvZGUgeCksIGF0b20pXG4gICAgICB8IGBJbnQxNiB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwNHhcIiB4LCBhdG9tKVxuICAgICAgfCBgSW50MzIgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDhseFwiIHgsIGF0b20pXG4gICAgICB8IGBJbnQ2NCB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwMTZMeFwiIHgsIGF0b20pXG4gICAgICB8IGBGbG9hdDMyIHggLT4gQXRvbSAoc3RyaW5nX29mX2Zsb2F0IHgsIGF0b20pXG4gICAgICB8IGBGbG9hdDY0IHggLT4gQXRvbSAoc3RyaW5nX29mX2Zsb2F0IHgsIGF0b20pXG4gICAgICB8IGBVdmludCB4IC0+IEF0b20gKHN0cmluZ19vZl9pbnQgeCwgYXRvbSlcbiAgICAgIHwgYFN2aW50IHggLT4gQXRvbSAoc3RyaW5nX29mX2ludCB4LCBhdG9tKVxuICAgICAgfCBgU3RyaW5nIHMgLT4gQXRvbSAoc3ByaW50ZiBcIiVTXCIgcywgYXRvbSlcbiAgICAgIHwgYEFycmF5IE5vbmUgLT4gQXRvbSAoXCJbXVwiLCBhdG9tKVxuICAgICAgfCBgQXJyYXkgKFNvbWUgKF8sIGEpKSAtPlxuICAgICAgICAgIExpc3QgKChcIltcIiwgXCIsXCIsIFwiXVwiLCBhcnJheSksIG1hcCAoZm9ybWF0IHNoYXJlZCkgYSlcbiAgICAgIHwgYFR1cGxlIGEgLT4gTGlzdCAoKFwiKFwiLCBcIixcIiwgXCIpXCIsIHR1cGxlKSwgbWFwIChmb3JtYXQgc2hhcmVkKSBhKVxuICAgICAgfCBgUmVjb3JkIGEgLT4gTGlzdCAoKFwie1wiLCBcIixcIiwgXCJ9XCIsIHJlY29yZCksIG1hcCAoZm9ybWF0X2ZpZWxkIHNoYXJlZCkgYSlcbiAgICAgIHwgYE51bV92YXJpYW50IChpLCBvKSAtPlxuXHQgIGxldCBzdWZmaXggPVxuXHQgICAgaWYgaSA9IDAgdGhlbiBcIlwiXG5cdCAgICBlbHNlIHN0cmluZ19vZl9pbnQgaVxuXHQgIGluXG5cdCAgKG1hdGNoIG8gd2l0aFxuXHQgICAgICAgTm9uZSAtPiBBdG9tIChcIk5vbmVcIiBeIHN1ZmZpeCwgYXRvbSlcblx0ICAgICB8IFNvbWUgeCAtPlxuXHRcdCBsZXQgY29ucyA9IEF0b20gKFwiU29tZVwiIF4gc3VmZml4LCBhdG9tKSBpblxuXHRcdCBMYWJlbCAoKGNvbnMsIGxhYmVsKSwgZm9ybWF0IHNoYXJlZCB4KSlcbiAgICAgIHwgYFZhcmlhbnQgKG9wdF9uYW1lLCBoLCBvKSAtPlxuXHQgIGxldCBuYW1lID1cblx0ICAgIG1hdGNoIG9wdF9uYW1lIHdpdGhcblx0XHROb25lIC0+IHNwcmludGYgXCIjJTA4bHhcIiAoSW50MzIub2ZfaW50IGgpXG5cdCAgICAgIHwgU29tZSBzIC0+IHNwcmludGYgXCIlU1wiIHNcblx0ICBpblxuXHQgIChtYXRjaCBvIHdpdGhcblx0ICAgICAgIE5vbmUgLT4gQXRvbSAoXCI8XCIgXiBuYW1lIF4gXCI+XCIsIGF0b20pXG5cdCAgICAgfCBTb21lIHggLT5cblx0XHQgTGlzdCAoKFwiPFwiLCBcIlwiLCBcIj5cIiwgdHVwbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICBbIExhYmVsICgoQXRvbSAobmFtZSBeIFwiOlwiLCBhdG9tKSwgbGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQgc2hhcmVkIHgpIF0pXG5cdCAgKVxuICAgICAgfCBgVGFibGUgTm9uZSAtPiBBdG9tIChcIltdXCIsIGF0b20pXG4gICAgICB8IGBUYWJsZSAoU29tZSAoaGVhZGVyLCBhYSkpIC0+XG5cdCAgbGV0IHJlY29yZF9hcnJheSA9XG5cdCAgICBgQXJyYXkgKFxuXHQgICAgICBTb21lIChcblx0XHRyZWNvcmRfdGFnLFxuXHRcdEFycmF5Lm1hcCAoXG5cdFx0ICBmdW4gYSAtPlxuXHRcdCAgICBgUmVjb3JkIChcblx0XHQgICAgICBBcnJheS5tYXBpIChcblx0XHRcdGZ1biBpIHggLT5cblx0XHRcdCAgbGV0IHMsIGgsIF8gPSBoZWFkZXIuKGkpIGluXG5cdFx0XHQgIChzLCBoLCB4KVxuXHRcdCAgICAgICkgYVxuXHRcdCAgICApXG5cdFx0KSBhYVxuXHQgICAgICApXG5cdCAgICApIGluXG5cdCAgZm9ybWF0IHNoYXJlZCByZWNvcmRfYXJyYXlcblxuICAgICAgfCBgU2hhcmVkIHggLT5cbiAgICAgICAgICBsZXQgdGJsLCBwID0gc2hhcmVkIGluXG4gICAgICAgICAgaW5jciBwO1xuICAgICAgICAgIGxldCBwb3MgPSAhcCBpblxuICAgICAgICAgIGxldCBvZmZzZXQgPSBCaV9zaGFyZS5Xci5wdXQgdGJsICh4LCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSBwb3MgaW5cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgICAgICAgIExhYmVsICgoQXRvbSAoc3ByaW50ZiBcInNoYXJlZCVpIC0+XCIgcG9zLCBhdG9tKSwgbGFiZWwpLFxuICAgICAgICAgICAgICAgICAgIGZvcm1hdCBzaGFyZWQgeClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBdG9tIChzcHJpbnRmIFwic2hhcmVkJWlcIiAocG9zIC0gb2Zmc2V0KSwgYXRvbSlcblxuICBhbmQgZm9ybWF0X2ZpZWxkIHNoYXJlZCAobywgaCwgeCkgPVxuICAgIGxldCBzID1cbiAgICAgIG1hdGNoIG8gd2l0aFxuXHQgIE5vbmUgLT4gc3ByaW50ZiBcIiMlMDhseFwiIChJbnQzMi5vZl9pbnQgaClcblx0fCBTb21lIHMgLT4gc3ByaW50ZiBcIiVTXCIgc1xuICAgIGluXG4gICAgTGFiZWwgKChBdG9tIChzcHJpbnRmIFwiJXM6XCIgcywgYXRvbSksIGxhYmVsKSwgZm9ybWF0IHNoYXJlZCB4KVxuZW5kXG5cbmxldCBpbml0ICgpID0gKEJpX3NoYXJlLldyLmNyZWF0ZSA1MTIsIHJlZiAwKVxuXG5sZXQgdmlld19vZl90cmVlIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fc3RyaW5nIChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCBwcmludF92aWV3X29mX3RyZWUgdCA9XG4gIEVhc3lfZm9ybWF0LlByZXR0eS50b19zdGRvdXQgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IG91dHB1dF92aWV3X29mX3RyZWUgb2MgdCA9XG4gIEVhc3lfZm9ybWF0LlByZXR0eS50b19jaGFubmVsIG9jIChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCB2aWV3ID91bmhhc2ggcyA9XG4gIHZpZXdfb2ZfdHJlZSAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuXG5sZXQgcHJpbnRfdmlldyA/dW5oYXNoIHMgPVxuICBwcmludF92aWV3X29mX3RyZWUgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcblxubGV0IG91dHB1dF92aWV3ID91bmhhc2ggb2MgcyA9XG4gIG91dHB1dF92aWV3X29mX3RyZWUgb2MgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcbiIsIm9wZW4gUHJpbnRmXG5cbigqXG5sZXQgc3BsaXQgcyA9IFN0ci5zcGxpdCAoU3RyLnJlZ2V4cCBcIixcIikgc1xuKilcblxubGV0IHNwbGl0IHMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGxldCBzdG9wID0gcmVmIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gIGZvciBpID0gIXN0b3AgLSAxIGRvd250byAwIGRvXG4gICAgaWYgcy5baV0gPSAnLCcgdGhlbiAoXG4gICAgICBsZXQgc3RhcnQgPSBpICsgMSBpblxuICAgICAgYWNjIDo9IFN0cmluZy5zdWIgcyBzdGFydCAoIXN0b3AgLSBzdGFydCkgOjogIWFjYztcbiAgICAgIHN0b3AgOj0gaVxuICAgIClcbiAgZG9uZTtcbiAgU3RyaW5nLnN1YiBzIDAgIXN0b3AgOjogIWFjY1xuXG5cbmxldCBsb2FkX2xpbmVzIGFjY3UgcyA9XG4gIGxldCBpYyA9IG9wZW5faW4gcyBpblxuICBsZXQgbCA9IHJlZiBhY2N1IGluXG4gICh0cnlcbiAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgIGwgOj0gaW5wdXRfbGluZSBpYyA6OiBMaXN0LnJldiAhbFxuICAgICBkb25lXG4gICB3aXRoIEVuZF9vZl9maWxlIC0+XG4gICAgIGNsb3NlX2luIGljXG4gICk7XG4gICFsXG5cbmxldCBsb2FkIGljID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAwMCBpblxuICB0cnlcbiAgICB3aGlsZSB0cnVlIGRvXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChpbnB1dF9jaGFyIGljKTtcbiAgICBkb25lO1xuICAgIGFzc2VydCBmYWxzZVxuICB3aXRoIEVuZF9vZl9maWxlIC0+XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgKCAvLyApID0gRmlsZW5hbWUuY29uY2F0XG5cbmxldCBkZWZhdWx0X2RpY3RfcGF0aCAoKSA9XG4gIHRyeVxuICAgIG1hdGNoIFN5cy5vc190eXBlIHdpdGhcbiAgICAgICAgXCJVbml4XCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVcIiAvLyBcIi5iZHVtcC1kaWN0XCIpXG4gICAgICB8IFwiV2luMzJcIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVBBVEhcIiAvLyBcIl9iZHVtcC1kaWN0XCIpXG4gICAgICB8IFwiQ3lnd2luXCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVcIiAvLyBcIi5iZHVtcC1kaWN0XCIpXG4gICAgICB8IF8gLT4gTm9uZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIE5vbmVcblxubGV0IGxvYWRfZGljdGlvbmFyeSBkaWNfZmlsZSBhY2N1ID1cbiAgbWF0Y2ggZGljX2ZpbGUgd2l0aFxuICAgICAgTm9uZSAtPiBhY2N1XG4gICAgfCBTb21lIGZuIC0+XG4gICAgICAgIGlmIFN5cy5maWxlX2V4aXN0cyBmbiB0aGVuXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsb2FkX2xpbmVzIGFjY3UgZm5cbiAgICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiQ2Fubm90IGxvYWQgZGljdGlvbmFyeSBmcm9tICVTOiAlc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuIChQcmludGV4Yy50b19zdHJpbmcgZSkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhY2N1XG5cbmxldCB3cml0ZV91bmlxIG9jIGEgPVxuICBpZiBBcnJheS5sZW5ndGggYSA+IDAgdGhlbiAoXG4gICAgZnByaW50ZiBvYyBcIiVzXFxuXCIgYS4oMCk7XG4gICAgaWdub3JlIChcbiAgICAgIEFycmF5LmZvbGRfbGVmdCAoXG4gICAgICAgIGZ1biBsYXN0IHggLT5cbiAgICAgICAgICBpZiBsYXN0IDw+IHggdGhlblxuICAgICAgICAgICAgZnByaW50ZiBvYyBcIiVzXFxuXCIgeDtcbiAgICAgICAgICB4XG4gICAgICApIGEuKDApIGFcbiAgICApXG4gIClcblxubGV0IHNhdmVfZGljdGlvbmFyeSBkaWNfZmlsZSBsID1cbiAgbWF0Y2ggZGljX2ZpbGUgd2l0aFxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmbiAtPlxuICAgICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgICBBcnJheS5zb3J0IFN0cmluZy5jb21wYXJlIGE7XG4gICAgICAgIGxldCBvYyA9IG9wZW5fb3V0IGZuIGluXG4gICAgICAgIGxldCBmaW5hbGx5ICgpID0gY2xvc2Vfb3V0X25vZXJyIG9jIGluXG4gICAgICAgIHRyeVxuICAgICAgICAgIHdyaXRlX3VuaXEgb2MgYTtcbiAgICAgICAgICBmaW5hbGx5ICgpXG4gICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgIGZpbmFsbHkgKCk7XG4gICAgICAgICAgcmFpc2UgZVxuIiwibGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcbiIsImxldCB2ZXJzaW9uID0gXCIyLjEuMlwiXG5cbmV4Y2VwdGlvbiBKc29uX2Vycm9yIG9mIHN0cmluZ1xuXG5sZXQganNvbl9lcnJvciBzID0gcmFpc2UgKEpzb25fZXJyb3IgcylcblxuZXhjZXB0aW9uIEVuZF9vZl9hcnJheVxuZXhjZXB0aW9uIEVuZF9vZl9vYmplY3RcbmV4Y2VwdGlvbiBFbmRfb2ZfdHVwbGVcbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanVuayBidWYgbiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAgICggKCkgKVxuIyA5OCBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCAxIC0+XG4jIDMgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgIChcbiAgICAgaWYgbiA8PSAwIHRoZW4gKClcbiAgICAgZWxzZSBiZWdpblxuICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKExleGluZy5sZXhlbWVfY2hhciBsZXhidWYgMCk7XG4gICAgICAgcmVhZF9qdW5rIGJ1ZiAobiAtIDEpIGxleGJ1ZlxuICAgICBlbmRcbiAgICAgKVxuIyAxMDkgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDExIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gXG5sZXQgcmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBuIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIGxldCBqdW5rX3N0YXJ0X3BvcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIHJlYWRfanVuayBidWYgbiBsZXhidWY7XG4gIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGp1bmtfc3RhcnRfcG9zICsgMVxuXG4jIDEyMyBcImxpYi9sZXhlcl91dGlscy5tbFwiXG4iLCJcbnR5cGUgJ2Egb2NhbWxfYXJyYXkgPSAnYSBhcnJheVxuXG5sZXQgaW5wdXRfZmlsZSBmbmFtZSByZWFkID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgbGV0IHggPSByZWFkIGljIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgeFxuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBlXG5cbmxldCBvdXRwdXRfZmlsZSBmbmFtZSB3cml0ZSA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmbmFtZSBpblxuICB0cnlcbiAgICB3cml0ZSBvYztcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubW9kdWxlIEJpbmlvdSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSByZWFkZXIgPSBCaV9pbmJ1Zi50IC0+ICdhXG4gIHR5cGUgJ2Egd3JpdGVyID0gQmlfb3V0YnVmLnQgLT4gJ2EgLT4gdW5pdFxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgaWMgPVxuICAgIGxldCBpYiA9IEJpX2luYnVmLmZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gaWMgaW5cbiAgICByZWFkIGliXG5cbiAgbGV0IGZyb21fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgcmVhZCBmbmFtZSA9XG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/bGVuIH5zaHJsZW4gcmVhZCBpYylcblxuICBsZXQgdG9fY2hhbm5lbCA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgb2MgeCA9XG4gICAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZV9jaGFubmVsX3dyaXRlciA/bGVuIH5zaHJsZW4gb2MgaW5cbiAgICB3cml0ZSBvYiB4O1xuICAgIEJpX291dGJ1Zi5mbHVzaF9jaGFubmVsX3dyaXRlciBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gPyhzaHJsZW4gPSAwKSB3cml0ZSBmbmFtZSB4ID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHRvX2NoYW5uZWwgP2xlbiB+c2hybGVuIHdyaXRlIG9jIHgpXG5lbmRcblxubW9kdWxlIEpzb24gPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gWW9qc29uLlNhZmUubGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZmluaXNoIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG4gICAgaWYgbm90IChZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIFlvanNvbi5qc29uX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZVwiXG5cbiAgbGV0IGZyb21fbGV4YnVmID8oc3RyZWFtID0gZmFsc2UpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIGxzIGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIFlvanNvbi5TYWZlLnJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIFlvanNvbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZCBscyBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggbHMgbGV4YnVmO1xuXG4gICAgeFxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSByZWFkIHMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBmcm9tX2xleGJ1ZiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBpbnB1dF9maWxlIGZuYW1lIChmdW4gaWMgLT4gZnJvbV9jaGFubmVsID9idWYgfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljKVxuXG4gICgqIHNlcV91bmZvbGQgaXMgU2VxLnVuZm9sZCwgbmVlZGVkIGZvciBvY2FtbCA8IDQuMTEgKilcbiAgbGV0IHJlYyBzZXFfdW5mb2xkIGYgdSAoKSA9XG4gICAgbWF0Y2ggZiB1IHdpdGhcbiAgICB8IE5vbmUgLT4gU2VxLk5pbFxuICAgIHwgU29tZSAoeCwgdScpIC0+IFNlcS5Db25zICh4LCBzZXFfdW5mb2xkIGYgdScpXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgcmVhZCBscyBsZXhidWYgPVxuICAgIGxldCBmICgpID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdiA9IGZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSByZWFkIGxzIGxleGJ1ZiBpblxuICAgICAgICBTb21lICh2LCAoKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBZb2pzb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBOb25lXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICgqIFNlcS51bmZvbGQgaXMgb25seSBhdmFpbGFibGUgZnJvbSBvY2FtbCA0LjExICopXG4gICAgc2VxX3VuZm9sZCBmICgpXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgaWMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmID9maW4gcmVhZCBscyBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lOnNyYyA/bG51bSByZWFkIGZuYW1lID1cbiAgICBsZXQgZm5hbWUwID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBmbmFtZVxuICAgICAgICB8IFNvbWUgcyAtPiBzXG4gICAgaW5cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbl9ub2VyciBpYzsgZmluICgpIGluXG4gICAgc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IGxpc3RfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBzZXEgPSBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyBpblxuICAgIExpc3Qub2Zfc2VxIHNlcVxuXG4gIGxldCBsaXN0X2Zyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWMgaW5cbiAgICBsaXN0X2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gfmZuYW1lOmZuYW1lMCA/bG51bSByZWFkIGljXG5cbiAgbGV0IHRvX3N0cmluZyA/KGxlbiA9IDEwMjQpIHdyaXRlIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCB0b19maWxlID9sZW4gd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gd3JpdGUgb2MgeClcblxuICBsZXQgc2VxX3RvX3N0cmluZyA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHNlcV90b19jaGFubmVsID8obGVuID0gMTAyNCkgPyhsZiA9IFwiXFxuXCIpIHdyaXRlIG9jIHNlcSA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBTZXEuaXRlciAoZnVuIHggLT4gd3JpdGUgb2IgeDsgQnVmZmVyLmFkZF9zdHJpbmcgb2IgbGYpIHNlcTtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYlxuXG4gIGxldCBzZXFfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSBzZXEgPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2Mgc2VxKVxuXG4gIGxldCBsaXN0X3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSBsID1cbiAgICBzZXFfdG9fc3RyaW5nID9sZW4gP2xmIHdyaXRlIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgbCA9XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiA/bGYgd3JpdGUgb2MgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IGxpc3RfdG9fZmlsZSA/bGVuID9sZiB3cml0ZSBmbmFtZSAgbCA9XG4gICAgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgKExpc3QudG9fc2VxIGwpXG5cbiAgbGV0IHByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIgbG9jIG5hbWUgPVxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCJGb3VuZCB1bmtub3duIEpTT04gZmllbGQgJXMgd2hpbGUgZXhwZWN0aW5nIHR5cGUgZGVmaW5lZCBhdDogJXNcIlxuICAgICAgICBuYW1lIGxvY1xuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbGV0IHVua25vd25fZmllbGRfaGFuZGxlciA9IHJlZiBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyXG5lbmRcblxubW9kdWxlIFZhbGlkYXRpb24gPVxuc3RydWN0XG4gIHR5cGUgcGF0aF9lbGVtID0gWyBgRmllbGQgb2Ygc3RyaW5nIHwgYEluZGV4IG9mIGludCBdXG4gIHR5cGUgcGF0aCA9IHBhdGhfZWxlbSBsaXN0XG5cbiAgbGV0IHN0cmluZ19vZl9wYXRoIGwgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoXG4gICAgICBMaXN0LnJldl9tYXAgKFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgYEZpZWxkIHMgLT4gXCIuXCIgXiBzXG4gICAgICAgICAgfCBgSW5kZXggbiAtPiBcIltcIiBeIHN0cmluZ19vZl9pbnQgbiBeIFwiXVwiXG4gICAgICApIGxcbiAgICApXG5cbiAgdHlwZSBlcnJvciA9IHtcbiAgICBlcnJvcl9wYXRoIDogcGF0aDtcbiAgICBlcnJvcl9tc2cgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGVycm9yID9tc2cgcGF0aCA9IHtcbiAgICBlcnJvcl9wYXRoID0gcGF0aDtcbiAgICBlcnJvcl9tc2cgPSBtc2c7XG4gIH1cblxuICBsZXQgc3RyaW5nX29mX2Vycm9yIHggPVxuICAgIGxldCBwYXRoID0gc3RyaW5nX29mX3BhdGggeC5lcnJvcl9wYXRoIGluXG4gICAgbWF0Y2ggeC5lcnJvcl9tc2cgd2l0aFxuICAgICAgICBOb25lIC0+XG4gICAgICAgICAgXCJWYWxpZGF0aW9uIGVycm9yOyBwYXRoID0gPHJvb3Q+XCIgXiBwYXRoXG4gICAgICB8IFNvbWUgbXNnIC0+XG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJWYWxpZGF0aW9uIGVycm9yOiAlczsgcGF0aCA9IDxyb290PiVzXCIgbXNnIHBhdGhcbmVuZFxuIiwibGV0IHZhbGlkYXRlX2xpc3QgZiBwYXRoIGwgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBzdWJwYXRoID0gYEluZGV4IGkgOjogcGF0aCBpblxuICAgICAgICBtYXRjaCBmIHN1YnBhdGggeCB3aXRoXG4gICAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIChpKzEpIGxcbiAgICAgICAgICB8IGVyciAtPiBlcnJcbiAgaW5cbiAgbG9vcCBmIHBhdGggMCBsXG5cbmxldCB2YWxpZGF0ZV9hcnJheSBmIHBhdGggYSA9XG4gIGxldCByZWMgbG9vcCBmIHBhdGggYSBsZW4gaSA9XG4gICAgaWYgaSA+PSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAoYEluZGV4IGkgOjogcGF0aCkgYS4oaSkgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gbG9vcCBmIHBhdGggYSBsZW4gKGkrMSlcbiAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIGEgKEFycmF5Lmxlbmd0aCBhKSAwXG5cbmxldCB2YWxpZGF0ZV9vcHRpb24gZiBwYXRoID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gZiBwYXRoIHhcbiIsIigqXG4gIFJ1bnRpbWUgbGlicmFyeSBmb3IgSlNPTlxuKilcblxub3BlbiBQcmludGZcblxudHlwZSAnYSB3cml0ZSA9IEJ1ZmZlci50IC0+ICdhIC0+IHVuaXRcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCBlcnJvcl93aXRoX2xpbmUgcCBzID1cbiAgbGV0IHMyID1cbiAgICBtYXRjaCBwLllvanNvbi5MZXhlcl9zdGF0ZS5mbmFtZSB3aXRoXG4gICAgICBTb21lIGYgLT4gc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmUgJWk6XFxuJXNcIiBmIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICAgIHwgTm9uZSAtPiBzcHJpbnRmIFwiTGluZSAlaTpcXG4lc1wiIHAuWW9qc29uLkxleGVyX3N0YXRlLmxudW0gc1xuICBpblxuICByYWlzZSAoRXJyb3IgczIpXG5cblxubGV0IGxpc3RfaXRlciBmIHNlcCB4IGwgPVxuICBsZXQgcmVjIGF1eCBmIHNlcCB4ID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgc2VwIHg7XG4gICAgICAgIGYgeCB5O1xuICAgICAgICBhdXggZiBzZXAgeCBsXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuXG5sZXQgYXJyYXlfaXRlciBmIHNlcCB4IGEgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIG4gPiAwIHRoZW4gKFxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIDApO1xuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgc2VwIHg7XG4gICAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmVcbiAgKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCB3cml0ZV9saXN0IHdyaXRlX2l0ZW0gb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGxpc3RfaXRlciB3cml0ZV9pdGVtIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2FycmF5IHdyaXRlX2l0ZW0gb2IgYSA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGFycmF5X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBhO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hc3NvY19saXN0IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBsaXN0X2l0ZXIgKFxuICAgIGZ1biBvYiAoaywgdikgLT5cbiAgICAgIHdyaXRlX2tleSBvYiBrO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgIHdyaXRlX2l0ZW0gb2IgdlxuICApIHdyaXRlX2NvbW1hIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX2Fzc29jX2FycmF5IHdyaXRlX2tleSB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBhcnJheV9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cblxubGV0IHdyaXRlX29wdGlvbiB3cml0ZV9pdGVtIG9iID0gZnVuY3Rpb25cbiAgICBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJOb25lXFxcIj5cIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI8XFxcIlNvbWVcXFwiOlwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI+XCJcblxubGV0IHdyaXRlX3N0ZF9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJOb25lXFxcIlwiXG4gIHwgU29tZSB4IC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU29tZVxcXCIsXCI7XG4gICAgICB3cml0ZV9pdGVtIG9iIHg7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIl1cIlxuXG5sZXQgd3JpdGVfbnVsbGFibGUgd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuICB8IFNvbWUgeCAtPiB3cml0ZV9pdGVtIG9iIHhcblxubGV0IHdyaXRlX2ludF9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIFlvanNvbi5TYWZlLndyaXRlX2ludCBvYiAoaW50X29mX2NoYXIgeClcblxubGV0IHdyaXRlX2ludDhfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50OCBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQzMi50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDMyX2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDMyIG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ2NCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKEludDY0LnRvX3N0cmluZyB4KVxuXG5sZXQgd3JpdGVfaW50NjRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfaW50NjQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IG1pbl9mbG9hdCA9IGZsb2F0IG1pbl9pbnRcbmxldCBtYXhfZmxvYXQgPSBmbG9hdCBtYXhfaW50XG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeCA9XG4gIGlmIHggPj0gbWluX2Zsb2F0ICYmIHggPD0gbWF4X2Zsb2F0IHRoZW5cbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2JcbiAgICAgIChpbnRfb2ZfZmxvYXQgKGlmIHggPCAwLiB0aGVuIHggLS4gMC41IGVsc2UgeCArLiAwLjUpKVxuICBlbHNlXG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgICAgIEZQX25vcm1hbFxuICAgICAgfCBGUF9zdWJub3JtYWxcbiAgICAgIHwgRlBfemVybyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiAoUHJpbnRmLnNwcmludGYgXCIlLjBmXCIgeClcbiAgICAgIHwgRlBfaW5maW5pdGUgLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBpbmYgb3IgLWluZiBpbnRvIGEgSlNPTiBpbnRcIlxuICAgICAgfCBGUF9uYW4gLT4gZXJyb3IgXCJDYW5ub3QgY29udmVydCBOYU4gaW50byBhIEpTT04gaW50XCJcblxubGV0IHdyaXRlX2Zsb2F0X2FzX2ludF9zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9mbG9hdF9hc19pbnQgb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxudHlwZSAnYSByZWFkID0gWW9qc29uLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcblxubGV0IHJlYWRfbnVsbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX251bGwgcCBsYlxuXG5sZXQgcmVhZF9ib29sIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYm9vbCBwIGxiXG5cbmxldCByZWFkX2ludCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludCBwIGxiXG5cbmxldCByZWFkX2ludDggcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQ4IHAgbGJcblxubGV0IHJlYWRfaW50MzIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQzMiBwIGxiXG5cbmxldCByZWFkX2ludDY0IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50NjQgcCBsYlxuXG5sZXQgcmVhZF9udW1iZXIgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udW1iZXIgcCBsYlxuXG5sZXQgcmVhZF9zdHJpbmcgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9zdHJpbmcgcCBsYlxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiXG5cbmxldCByZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbGlzdCByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9hcnJheSByZWFkX2l0ZW0gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgbGV0IHJlYWQgYWNjIGsgcCBsYiA9IChrLCByZWFkX2l0ZW0gcCBsYikgOjogYWNjIGluXG4gIFlvanNvbi5TYWZlLnJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWQgW10gcCBsYlxuXG5sZXQgcmVhZF9hc3NvY19saXN0IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiID1cbiAgTGlzdC5yZXYgKHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIpXG5cbmxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfCB8XVxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgcmVhZF9hc3NvY19hcnJheSByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIGFycmF5X29mX3Jldl9saXN0IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgcmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2NvbG9uIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYlxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgcCBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cbmxldCBtaXNzaW5nX2ZpZWxkIHAgZmllbGRfbmFtZSA9XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQgJXNcIiBmaWVsZF9uYW1lKVxuXG5sZXQgbWlzc2luZ19maWVsZHMgcCBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5sZXQgaW52YWxpZF92YXJpYW50X3RhZyBwIHMgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIlVuc3VwcG9ydGVkIHZhcmlhbnQgJVNcIiBzKVxuXG5sZXQgcmVhZF93aXRoX2FkYXB0ZXIgbm9ybWFsaXplIHJlYWRlciBwIGxiID1cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLnJlYWRfanNvbiBwIGxiIGluXG4gIGxldCBhc3QnID0gbm9ybWFsaXplIGFzdCBpblxuICBsZXQgcycgPSBZb2pzb24uU2FmZS50b19zdHJpbmcgYXN0JyBpblxuICBsZXQgbGInID0gTGV4aW5nLmZyb21fc3RyaW5nIHMnIGluXG4gIHJlYWRlciBwIGxiJ1xuXG5sZXQgd3JpdGVfd2l0aF9hZGFwdGVyIHJlc3RvcmUgd3JpdGVyIG9iIHggPVxuICBsZXQgb2JfdG1wID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIHdyaXRlciBvYl90bXAgeDtcbiAgbGV0IHNfdG1wID0gQnVmZmVyLmNvbnRlbnRzIG9iX3RtcCBpblxuICBsZXQgYXN0ID0gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgc190bXAgaW5cbiAgbGV0IGFzdCcgPSByZXN0b3JlIGFzdCBpblxuICBZb2pzb24uU2FmZS50b19idWZmZXIgb2IgYXN0J1xuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4gICBUT0RPOiB3aGF0IGFyZSB0aGVzZSBhc3N1bXB0aW9ucyBhbmQgd2hpY2ggY29tcG9uZW50IG1ha2VzIHRoZW0/XG4qKVxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG4oKiBUaGlzIG11c3QgYmUgYSB0ZXN0IGZvciB0aGUgdHlwZSBjaGVja2VyIHNpbmNlIHRoZSBmdW5jdGlvbiBpc24ndCB1c2VkXG4gICBhbnl3aGVyZS4gKilcbmxldCBfdGVzdCAoKSA9XG4gIHsgeyBfYSA9IE5vbmU7IF9iID0gQXJyYXkubGVuZ3RoIFN5cy5hcmd2IH0gd2l0aCBfYSA9IE5vbmUgfVxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuKCpcbiAgUnVudGltZSBsaWJyYXJ5XG4qKVxuXG5vcGVuIFByaW50ZlxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbigqXG4gIEVycm9yIG1lc3NhZ2VzXG4qKVxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxubGV0IHJlYWRfZXJyb3IgKCkgPVxuICBlcnJvciBcIlJlYWQgZXJyb3JcIlxuXG5sZXQgcmVhZF9lcnJvcl9hdCBpYiA9XG4gIGVycm9yIChzcHJpbnRmIFwiUmVhZCBlcnJvciAoJWkpXCIgaWIuQmlfaW5idWYuaV9wb3MpXG5cbmxldCB0YWdfZXJyb3IgdGFnIHMgPVxuICBlcnJvciAoc3ByaW50ZiBcIkZvdW5kIHdyb25nIHRhZyAlaSBmb3IgJXNcIiB0YWcgcylcblxubGV0IHVuc3VwcG9ydGVkX3ZhcmlhbnQgaCBoYXNfYXJnID1cbiAgZXJyb3IgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50IChoYXNoPSVpLCBhcmc9JUIpXCIgaCBoYXNfYXJnKVxuXG5cbmxldCBtaXNzaW5nX3R1cGxlX2ZpZWxkcyBsZW4gcmVxX2ZpZWxkcyA9XG4gIGxldCBtaXNzaW5nID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgKFxuICAgICAgZnVuIGkgYWNjIC0+IGlmIGkgPj0gbGVuIHRoZW4gaSA6OiBhY2MgZWxzZSBhY2NcbiAgICApIHJlcV9maWVsZHMgW11cbiAgaW5cbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHR1cGxlIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggbWlzc2luZyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCBtaXNzaW5nKSkpXG5cblxubGV0IG1pc3NpbmdfZmllbGRzIGJpdF9maWVsZHMgZmllbGRfbmFtZXMgPVxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGZvciB6ID0gQXJyYXkubGVuZ3RoIGZpZWxkX25hbWVzIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCBpID0geiAvIDMxIGluXG4gICAgbGV0IGogPSB6IG1vZCAzMSBpblxuICAgIGlmIGJpdF9maWVsZHMuKGkpIGxhbmQgKDEgbHNsIGopID0gMCB0aGVuXG4gICAgICBhY2MgOj0gZmllbGRfbmFtZXMuKHopIDo6ICFhY2NcbiAgZG9uZTtcbiAgZXJyb3IgKHNwcmludGYgXCJNaXNzaW5nIHJlY29yZCBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoICFhY2MgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgIWFjYykpXG5cblxuKCpcbiAgUmVhZGVyc1xuKilcblxubGV0IGdldF91bml0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwidW5pdFwiXG5cbmxldCByZWFkX3VuaXQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLnVuaXRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3VuaXQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9ib29sX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiYm9vbFwiXG5cbmxldCByZWFkX2Jvb2wgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmJvb2xfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Jvb2wgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnRfcmVhZGVyIHRhZyA9XG4gIG1hdGNoIHRhZyB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OFxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50XG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50XG4gICAgfCBfIC0+IHRhZ19lcnJvciB0YWcgXCJpbnRcIlxuXG5sZXQgcmVhZF9pbnQgaWIgPVxuICBtYXRjaCBCaV9pby5yZWFkX3RhZyBpYiB3aXRoXG4gICAgICAxIC0+IEJpX2lvLnJlYWRfdW50YWdnZWRfaW50OCBpYlxuICAgIHwgMiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gICAgfCAxNiAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3V2aW50IGliXG4gICAgfCAxNyAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX3N2aW50IGliXG4gICAgfCBfIC0+IHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9jaGFyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiY2hhclwiXG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDhfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2NoYXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQxNl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50MTZcIlxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50MTZfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDE2IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MzJfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDMyXCJcblxubGV0IHJlYWRfaW50MzIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDY0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQ2NFwiXG5cbmxldCByZWFkX2ludDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9mbG9hdDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiZmxvYXQzMlwiXG5cbmxldCBnZXRfZmxvYXQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQ2NF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQ2NFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0NjRcIlxuXG5sZXQgZ2V0X2Zsb2F0X3JlYWRlciA9IGdldF9mbG9hdDY0X3JlYWRlclxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDMyX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDMyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0NjRcblxubGV0IGdldF9zdHJpbmdfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLnN0cmluZ190YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfc3RyaW5nXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwic3RyaW5nXCJcblxubGV0IHJlYWRfc3RyaW5nIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZyBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3wgfF1cbiAgZWxzZVxuICAgIGxldCByZWFkZXIgPSBnZXRfcmVhZGVyIChCaV9pby5yZWFkX3RhZyBpYikgaW5cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChyZWFkZXIgaWIpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChyZWFkZXIgaWIpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCByZWFkX2xpc3RfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcblxubGV0IGdldF9hcnJheV9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImFycmF5XCJcblxubGV0IGdldF9saXN0X3JlYWRlciBnZXRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgZnVuIGliIC0+IEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYilcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJsaXN0XCJcblxubGV0IHJlYWRfYXJyYXkgZ2V0X3JlYWRlciBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfbGlzdCByZWFkIGliID1cbiAgQXJyYXkudG9fbGlzdCAocmVhZF9hcnJheSByZWFkIGliKVxuXG5cbigqXG4gIFdyaXRlcnNcbiopXG5cbmxldCB3cml0ZV90YWdnZWQgdGFnIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiB0YWc7XG4gIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV91bnRhZ2dlZF9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIE5vbmUgLT4gQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIGZhbHNlXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQmlfaW8ud3JpdGVfbnVtdGFnIGJ1ZiAwIHRydWU7XG4gICAgICAgIHdyaXRlIGJ1ZiB4XG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGUgYnVmIHggPVxuICBCaV9pby53cml0ZV90YWcgYnVmIEJpX2lvLm51bV92YXJpYW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4XG5cbmxldCBhcnJheV9pbml0MiBsZW4geCBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4KVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgYXJyYXlfaW5pdDMgbGVuIHggeSBmID1cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIChmIDAgeCB5KSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAoZiBpIHggeSlcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2l0ZXIyIGYgeCBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcblxubGV0IGFycmF5X2l0ZXIzIGYgeCB5IGEgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgZiB4IHkgKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cblxubGV0IHJlYyBsaXN0X2l0ZXIyIGYgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGYgeCB5O1xuICAgICAgbGlzdF9pdGVyMiBmIHggbFxuXG5sZXQgcmVjIGxpc3RfaXRlcjMgZiB4IHkgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeiA6OiBsIC0+XG4gICAgICBmIHggeSB6O1xuICAgICAgbGlzdF9pdGVyMyBmIHggeSBsXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGFycmF5X2l0ZXIyIHdyaXRlIGJ1ZiBhXG4gIClcblxubGV0IHdyaXRlX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2FycmF5IGNlbGxfdGFnIHdyaXRlIGJ1ZiBhXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgQmlfdmludC53cml0ZV91dmludCBidWYgbGVuO1xuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIEJpX2lvLndyaXRlX3RhZyBidWYgY2VsbF90YWc7XG4gICAgbGlzdF9pdGVyMiB3cml0ZSBidWYgbFxuICApXG5cbmxldCB3cml0ZV9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5hcnJheV90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2xpc3QgY2VsbF90YWcgd3JpdGUgYnVmIGxcblxuKCpcbiAgc2hvcnRjdXQgZm9yIGdldHRpbmcgdGhlIHRhZyBvZiBhIHBvbHltb3JwaGljIHZhcmlhbnQgc2luY2VcbiAgYmluaW91IHVzZXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb25cbiAgKHVzZWZ1bG5lc3M/KVxuKilcbmxldCBnZXRfcG9seV90YWcgKHggOiBbPiBdKSA9XG4gIGxldCByID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmouaXNfYmxvY2sgciB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCByIDApIDogaW50KVxuICBlbHNlXG4gICAgKE9iai5vYmogciA6IGludClcblxuKCogV2Ugd2FudCBhbiBpZGVudGl0eSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBpbmxpbmVkICopXG50eXBlIGlkZW50aXR5X3QgPSB7IG11dGFibGUgX2lkZW50aXR5IDogJ2EuICdhIC0+ICdhIH1cbmxldCBpZGVudGl0eV9yZWYgPSB7IF9pZGVudGl0eSA9IChmdW4geCAtPiB4KSB9XG5sZXQgaWRlbnRpdHkgeCA9IGlkZW50aXR5X3JlZi5faWRlbnRpdHkgeFxuXG4oKlxuICBDaGVja2luZyBhdCBydW50aW1lIHRoYXQgb3VyIGFzc3VtcHRpb25zIG9uIHVuc3BlY2lmaWVkIGNvbXBpbGVyIGJlaGF2aW9yXG4gIHN0aWxsIGhvbGQuXG4qKVxuXG50eXBlIHQgPSB7XG4gIF9hIDogaW50IG9wdGlvbjtcbiAgX2IgOiBpbnQ7XG59XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cblxuKCpcbiAgIFRoaXMgaXMgYSBydW50aW1lIHRlc3QgdGhhdCBjaGVja3Mgd2hldGhlciBvdXIgYXNzdW1wdGlvbnMgYWJvdXRcbiAgIHRoZSBjb21waWxlciBzdGlsbCBob2xkLlxuXG4gICBXZSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nIHdoZW4gdXNpbmcgYW4gT0NhbWwgY29tcGlsZXIgYnVpbHRcbiAgIHdpdGggdGhlIGZsYW1iZGEgb3B0aW1pemF0aW9uLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCB3YXJuaW5nXG4gICBhbmQgc2hvdWxkbid0IGJlIGlnbm9yZWQgaWYgdGhlIE9DYW1sL2JpbmlvdSBpcyB0byBiZSB1c2VkLlxuICAgVGhpcyB3b24ndCBhZmZlY3QgdGhlIE9DYW1sL0pTT04gYmFja2VuZC5cblxuICAgPiBXYXJuaW5nIDU5IFtmbGFtYmRhLWFzc2lnbm1lbnQtdG8tbm9uLW11dGFibGUtdmFsdWVdOiBBIHBvdGVudGlhbFxuICAgPiBhc3NpZ25tZW50IHRvIGEgbm9uLW11dGFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIHRoaXMgc291cmNlIGZpbGUuXG4gICA+IFN1Y2ggYXNzaWdubWVudHMgbWF5IGdlbmVyYXRlIGluY29ycmVjdCBjb2RlIHdoZW4gdXNpbmcgRmxhbWJkYS5cbiopXG5sZXQgdGVzdCAoKSA9XG4gIGxldCByID0gY3JlYXRlICgpIGluXG4gIGxldCB2ID0gU29tZSAxNyBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAwIChPYmoucmVwciB2KTtcbiAgbGV0IHNhZmVfciA9IGlkZW50aXR5IHIgaW5cbiAgKCogci5fYSBpcyBpbmxpbmVkIGJ5IG9jYW1sb3B0IGFuZCBlcXVhbHMgTm9uZVxuICAgICBiZWNhdXNlIHRoZSBmaWVsZCBpcyBzdXBwb3NlZCB0byBiZSBpbW11dGFibGUuICopXG4gIGFzc2VydCAoc2FmZV9yLl9hID0gdilcblxubGV0ICgpID0gdGVzdCAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuIiwiKCogSnNvbiBhZGFwdGVycy4gU2VlIC5tbGkuICopXG5cbmxldCBub3JtYWxpemVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5hc3NvYyB0eXBlX2ZpZWxkX25hbWUgZmllbGRzIHdpdGhcbiAgICAgICB8IGBTdHJpbmcgdHlwZV8gLT4gYExpc3QgWyBgU3RyaW5nIHR5cGVfOyB4IF1cbiAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4geFxuICAgICAgIHwgXyAtPiB4ICgqIG1hbGZvcm1lZCAqKVxuICAgICAgKVxuICB8IGBTdHJpbmcgdHlwZV8gYXMgeCAtPiB4XG4gIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuXG5sZXQgcmVzdG9yZV90eXBlX2ZpZWxkIHR5cGVfZmllbGRfbmFtZSAoeCA6IFlvanNvbi5TYWZlLnQpIDogWW9qc29uLlNhZmUudCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgYEFzc29jIGZpZWxkcyBdIC0+XG4gICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgKHR5cGVfZmllbGRfbmFtZSwgYFN0cmluZyB0eXBlXykgOjpcbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoaywgdikgLT4gayA8PiB0eXBlX2ZpZWxkX25hbWUpIGZpZWxkc1xuICAgICAgaW5cbiAgICAgIGBBc3NvYyBmaWVsZHNcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgbm9ybWFsaXplIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG4gIHZhbCByZXN0b3JlIDogWW9qc29uLlNhZmUudCAtPiBZb2pzb24uU2FmZS50XG5lbmRcblxubW9kdWxlIFR5cGVfZmllbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUGFyYW0gPSBzaWdcbiAgICB2YWwgdHlwZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChQYXJhbSA6IFBhcmFtKSA6IFMgPSBzdHJ1Y3RcbiAgICBsZXQgbm9ybWFsaXplID0gbm9ybWFsaXplX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG5cbiAgICBsZXQgcmVzdG9yZSA9IHJlc3RvcmVfdHlwZV9maWVsZCBQYXJhbS50eXBlX2ZpZWxkX25hbWVcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfcGFyYW0gOiBQYXJhbSA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2ZpZWxkX25hbWUgPSBcInR5cGVcIlxuICBlbmRcblxuICBpbmNsdWRlIE1ha2UgKERlZmF1bHRfcGFyYW0pXG5lbmRcblxubW9kdWxlIE9uZV9maWVsZCA9IHN0cnVjdFxuICBvcGVuIFlvanNvbi5TYWZlXG5cbiAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgW25hbWUsIHZhbHVlXSAtPiBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICBsZXQgcmVzdG9yZSAoeCA6IHQpIDogdCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTGlzdCBbYFN0cmluZyBuYW1lOyB2YWx1ZV0gLT4gYEFzc29jIFtuYW1lLCB2YWx1ZV1cbiAgICB8IGBTdHJpbmcgXyBhcyB4IC0+IHhcbiAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbmVuZFxuXG5tb2R1bGUgVHlwZV9hbmRfdmFsdWVfZmllbGRzID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWx1ZV9maWVsZF9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGtub3duX3RhZ3MgOiAoc3RyaW5nIGxpc3QgKiBzdHJpbmcpIG9wdGlvblxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgb3BlbiBZb2pzb24uU2FmZVxuICAgIG9wZW4gUGFyYW1cblxuICAgIGxldCBpc19rbm93bl90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IHRydWUpXG4gICAgICB8IFNvbWUgKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+IEhhc2h0YmwuYWRkIHRibCB4ICgpKSBsO1xuICAgICAgICAgIEhhc2h0YmwubWVtIHRibFxuXG4gICAgbGV0IGlzX2NhdGNoX2FsbF90YWcgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKGZ1biBfIC0+IGZhbHNlKVxuICAgICAgfCBTb21lIChfLCBzKSAtPiAoKD0pIHMpXG5cbiAgICBsZXQgY2F0Y2hfYWxsX3RhZyAoKSA9XG4gICAgICBtYXRjaCBrbm93bl90YWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSAoXywgcykgLT4gc1xuXG4gICAgbGV0IHdyYXBfdmFyaWFudCB0eXBlXyB2YWx1ZSA9XG4gICAgICBsZXQgdmFyaWFudCA9IGBMaXN0IFtgU3RyaW5nIHR5cGVfOyB2YWx1ZV0gaW5cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIHZhcmlhbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgdmFyaWFudCBdXG5cbiAgICBsZXQgd3JhcF9lbnVtIHR5cGVfID1cbiAgICAgIGlmIGlzX2tub3duX3RhZyB0eXBlXyB0aGVuXG4gICAgICAgIGBTdHJpbmcgdHlwZV9cbiAgICAgIGVsc2VcbiAgICAgICAgYExpc3QgWyBgU3RyaW5nIChjYXRjaF9hbGxfdGFnICgpKTsgYE51bGwgXVxuXG4gICAgbGV0IG5vcm1hbGl6ZSAoeCA6IHQpIDogdCA9XG4gICAgICBsZXQgb3BlbiBZb2pzb24uU2FmZS5VdGlsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgICAgIGxldCB0eXBlXyA9IG1lbWJlciB0eXBlX2ZpZWxkX25hbWUgeCB8PiB0b19zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QubWFwIChmdW4gKChrLCB2KSBhcyBmaWVsZCkgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgZm91bmQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAoaywgd3JhcF92YXJpYW50IHR5cGVfIHYpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkXG4gICAgICAgICAgICApIGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBpZiAhZm91bmQgdGhlblxuICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKHZhbHVlX2ZpZWxkX25hbWUsIHdyYXBfZW51bSB0eXBlXykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxuICAgIGxldCB1bndyYXBfdmFsdWUgKHggOiB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFN0cmluZyB0YWcgLT4gKHRhZywgTm9uZSlcbiAgICAgIHwgYExpc3QgW2BTdHJpbmcgdGFnOyB2XSAtPlxuICAgICAgICAgIGlmIGlzX2NhdGNoX2FsbF90YWcgdGFnIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggdiB3aXRoXG4gICAgICAgICAgICB8IGBMaXN0IFtgU3RyaW5nIHJlYWxfdGFnOyBgTnVsbF0gLT4gKHJlYWxfdGFnLCBOb25lKVxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgcmVhbF92XSAtPiAocmVhbF90YWcsIFNvbWUgcmVhbF92KVxuICAgICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKHRhZywgU29tZSB2KVxuICAgICAgfCBtYWxmb3JtZWQgLT4gZmFpbHdpdGggKFwiTWFsZm9ybWVkIGpzb24gZmllbGQgXCIgXiB2YWx1ZV9maWVsZF9uYW1lKVxuXG4gICAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IChmdW4gKChrLCB0YWdnZWQpIGFzIGZpZWxkKSBhY2MgLT5cbiAgICAgICAgICAgICAgaWYgayA9IHZhbHVlX2ZpZWxkX25hbWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHRhZywgb3B0X3ZhbHVlID0gdW53cmFwX3ZhbHVlIHRhZ2dlZCBpblxuICAgICAgICAgICAgICAgIHR5cGVfIDo9IFNvbWUgdGFnO1xuICAgICAgICAgICAgICAgIG1hdGNoIG9wdF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2YWx1ZV9maWVsZF9uYW1lLCB2KSA6OiBhY2NcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSB0eXBlX2ZpZWxkX25hbWUgdGhlblxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmllbGQgOjogYWNjXG4gICAgICAgICAgICAgICkgZmllbGRzIFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIG1hdGNoICF0eXBlXyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgICAgICAgICB8IFNvbWUgdGFnIC0+ICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdGFnKSA6OiBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGBBc3NvYyBmaWVsZHNcbiAgICAgIHwgbWFsZm9ybWVkIC0+IG1hbGZvcm1lZFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIEFycmF5IHdpdGggZHluYW1pYyBzaXplXG5cbiAgICBJdCB1c2VzIGltcGVyYXRpdmUgc3R5bGVzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgbW9kdWxlcyAqKVxuXG5tb2R1bGUgRHluQXJyYXkgPVxuZnVuY3RvclxuICAoRyA6IEdlbkFycmF5LkdlbkFycmF5KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSB7XG4gICAgICAgIG11dGFibGUgYXJyYXk6ICdhIEcudDtcbiAgICAgICAgbXV0YWJsZSBjdXJyZW50X3NpemU6IGludDtcbiAgICAgICAgZGVmYXVsdDogaW50IC0+ICdhO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlIG4gYSA9XG4gICAgICAgIHsgYXJyYXkgPSBHLmNyZWF0ZSBuIGE7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSAoZnVuIF8gLT4gYSkgfVxuXG4gICAgICBsZXQgbGVuZ3RoIGEgPSBhLmN1cnJlbnRfc2l6ZVxuXG4gICAgICBsZXQgZXhwYW5kIHQgPVxuICAgICAgICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCBuJyA9IG1heCAobiArIDEpIChuICogMikgaW5cbiAgICAgICAgbGV0IGFycmF5JyA9IEcuaW5pdCBuJyB0LmRlZmF1bHQgaW5cbiAgICAgICAgbGV0ICgpID0gRy5ibGl0IHQuYXJyYXkgMCBhcnJheScgMCBuIGluXG4gICAgICAgIGxldCAoKSA9IHQuYXJyYXkgPC0gYXJyYXknIGluXG4gICAgICAgIHQuY3VycmVudF9zaXplIDwtIG4nXG5cbiAgICAgIGxldCBnZXQgYSBpID1cbiAgICAgICAgaWYgbGVuZ3RoIGEgPiBpIHRoZW5cbiAgICAgICAgICBHLmdldCBhLmFycmF5IGlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGEuZGVmYXVsdCBpXG5cbiAgICAgIGxldCByZWMgc2V0IGEgaSB2ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgICAgICBpZiBuID4gaSB0aGVuXG4gICAgICAgICAgRy5zZXQgYS5hcnJheSBpIHZcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gZXhwYW5kIGEgaW5cbiAgICAgICAgICBzZXQgYSBpIHZcbiAgICAgICAgKVxuXG4gICAgICBsZXQgbWFrZSA9IGNyZWF0ZVxuICAgICAgbGV0IGluaXQgbiBmID0geyBhcnJheSA9IEcuaW5pdCBuIGY7IGN1cnJlbnRfc2l6ZSA9IG47IGRlZmF1bHQgPSBmIH1cblxuICAgICAgbGV0IGFwcGVuZCBhIGIgPVxuICAgICAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgICAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgICAgICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgICAgICAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgICAgICAgZ2V0IGEgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxuICAgICAgbGV0IGNvbmNhdCBsID1cbiAgICAgICAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRHluYW1pY0FycmF5LmNvbmNhdFwiKVxuICAgICAgICB8IHQgOjogXyAtPlxuICAgICAgICAgIGxldCBlbHQgPSBnZXQgdCAwIGluXG4gICAgICAgICAgbGV0IGMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHNvbCBhIC0+IHNvbCArIGxlbmd0aCBhKSAwIGwgaW5cbiAgICAgICAgICBsZXQgbSA9IGNyZWF0ZSBjIGVsdCBpblxuICAgICAgICAgIGxldCByZWMgYXV4IGsgbCA9XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhdXgyIDAga1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gYXV4IDAgbCBpblxuICAgICAgICAgIG1cblxuICAgICAgbGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuc3ViXCIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbiAgICAgIGxldCBjb3B5IGEgPVxuICAgICAgICB7XG4gICAgICAgICAgYXJyYXkgPSBHLmNvcHkgYS5hcnJheTtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBhLmN1cnJlbnRfc2l6ZTtcbiAgICAgICAgICBkZWZhdWx0ID0gYS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgIGxldCBmaWxsIGEgc3RhcnQgbGVuIHggPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGkgPVxuICAgICAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIChpICsgMSlcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNfYXJyYXkuZmlsbFwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYXV4IDAgc3RhcnRcblxuICAgICAgbGV0IG9mX2xpc3QgfmRlZmF1bHQgbCA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X3NpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgICAgIGFycmF5ID0gRy5vZl9saXN0IH5kZWZhdWx0IGw7XG4gICAgICAgICAgZGVmYXVsdCA9IChmdW4gXyAtPiBkZWZhdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgaXRlciBmIGEgPSBHLml0ZXIgZiBhLmFycmF5XG4gICAgICBsZXQgaXRlcmkgZiBhID0gRy5pdGVyaSBmIGEuYXJyYXlcbiAgICAgIGxldCBmb2xkX2xlZnRpIGYgYiBhID0gRy5mb2xkX2xlZnRpIGYgYiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9yaWdodGkgZiBhIGIgPSBHLmZvbGRfcmlnaHRpIGYgYS5hcnJheSBiXG4gICAgICBsZXQgbWFwIGYgYSA9IGluaXQgKGxlbmd0aCBhKSAoZnVuIGkgLT4gZiAoZ2V0IGEgaSkpXG5cbiAgICAgIGxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICAgICAgICBpZlxuICAgICAgICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICAgICAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgfHwgb2ZzMiA8IDBcbiAgICAgICAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBcIkR5bmFtaWNBcnJheS5ibGl0XCJcbiAgICAgICAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgICAgICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBCb3R0b20tdXAgY29weSAqKVxuICAgICAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBHLnNldCBhMi5hcnJheSAob2ZzMiArIGkpIChHLmdldCBhMS5hcnJheSAob2ZzMSArIGkpKVxuICAgICAgICAgIGRvbmVcblxuICAgICAgbGV0IHByaW50ID90cmFpbGluZyBwcl9zIHByX2EgZiBhID0gRy5wcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYS5hcnJheVxuICAgIGVuZCA6XG4gICAgICBHZW5BcnJheS5HZW5BcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IFVuYXJ5IG9mICdhIGFycmF5IHwgQmluYXJ5IG9mICdhIGFycmF5IGFycmF5XG5cbmxldCBtYXhfYXJyYXlfc2l6ZTEgPSBTeXMubWF4X2FycmF5X2xlbmd0aCAoKiA1ICopXG5cbmxldCBtYXhfYXJyYXlfc2l6ZTIgPVxuICBpZiBmbG9hdF9vZl9pbnQgbWF4X2FycmF5X3NpemUxID4gc3FydCAoZmxvYXRfb2ZfaW50IG1heF9pbnQpIHRoZW5cbiAgICBtYXhfaW50XG4gIGVsc2VcbiAgICBtYXhfYXJyYXlfc2l6ZTEgKiBtYXhfYXJyYXlfc2l6ZTFcblxubGV0IGV1Y2xpZGVlbiBwIHEgPSBwIC8gcSwgcCBtb2QgcVxuXG5sZXQgY3JlYXRlIG4gYSA9XG4gIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkubWFrZSBuIGEpXG4gIGVsc2UgaWYgbiA+IG1heF9hcnJheV9zaXplMiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJHZW5BcnJheTogYXJyYXkgdG9vIGxhcmdlXCJcbiAgZWxzZSAoXG4gICAgbGV0IG0gPVxuICAgICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gbiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgIGxldCBsID0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYSBpblxuICAgICAgbGV0IG0gPVxuICAgICAgICBBcnJheS5tYWtlXG4gICAgICAgICAgKGlmIHEgPSAwIHRoZW5cbiAgICAgICAgICAgICBwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBwICsgMSlcbiAgICAgICAgICBsXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggayA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtLihrKSA8LSBBcnJheS5tYWtlIG1heF9hcnJheV9zaXplMSBhO1xuICAgICAgICAgIGF1eCAoayAtIDEpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBpZiBxID0gMCB0aGVuXG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgbS4ocCkgPC0gQXJyYXkubWFrZSBxIGE7XG4gICAgICAgIGF1eCAocCAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBsZW5ndGggPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkubGVuZ3RoIGFcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgcSA9IEFycmF5Lmxlbmd0aCAoQXJyYXkudW5zYWZlX2dldCBhIChwIC0gMSkpIGluXG4gICAgKChwIC0gMSkgKiBtYXhfYXJyYXlfc2l6ZTEpICsgcVxuXG5sZXQgZ2V0MiBhIHAgcSA9IEFycmF5LnVuc2FmZV9nZXQgKEFycmF5LnVuc2FmZV9nZXQgYSBwKSBxXG5cbmxldCBnZXQgYSBpID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfZ2V0IGEgaVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IHAsIHEgPSBldWNsaWRlZW4gaSBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICBnZXQyIGEgcCBxXG5cbmxldCBzZXQyIGEgcCBxIGogPSBBcnJheS51bnNhZmVfc2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcSBqXG5cbmxldCBzZXQgYSBpIGogPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LnVuc2FmZV9zZXQgYSBpIGpcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgc2V0MiBhIHAgcSBqXG5cbmxldCBtYWtlID0gY3JlYXRlXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHx8IG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkJpZ19hcnJheS5pbml0IDogXCIgXiBzdHJpbmdfb2ZfaW50IG4pKVxuICBlbHNlIGlmIG4gPD0gbWF4X2FycmF5X3NpemUxIHRoZW5cbiAgICBVbmFyeSAoQXJyYXkuaW5pdCBuIGYpXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBBcnJheS5pbml0XG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgIHBcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgcCArIDEpXG4gICAgICAgIChmdW4gcCcgLT5cbiAgICAgICAgICBpZiBwJyA9IHAgdGhlblxuICAgICAgICAgICAgQXJyYXkuaW5pdCBxIChmdW4geCAtPiBmICgocCAqIG1heF9hcnJheV9zaXplMSkgKyB4KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5pbml0IG1heF9hcnJheV9zaXplMSAoZnVuIHggLT4gZiAoKHAnICogbWF4X2FycmF5X3NpemUxKSArIHgpKSlcbiAgICBpblxuICAgIEJpbmFyeSBtXG4gIClcblxubGV0IGFwcGVuZCBhIGIgPVxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgYyA9IGxhICsgbGIgaW5cbiAgaW5pdCBjIChmdW4geCAtPlxuICAgICAgaWYgeCA8IGxhIHRoZW5cbiAgICAgICAgZ2V0IGEgeFxuICAgICAgZWxzZVxuICAgICAgICBnZXQgYiAoeCAtIGxhKSlcblxubGV0IGNvbmNhdCBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuIHggLT4gbGVuZ3RoIHggPiAwKSBsIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFVuYXJ5IFt8fF1cbiAgfCB0IDo6IF8gLT5cbiAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IG1cbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCBzID0gbGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHJlYyBhdXgyIG9mZnNldCBrID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSBzIHRoZW5cbiAgICAgICAgICAgIGF1eCBrIHFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHNldCBtIGsgKGdldCB0IG9mZnNldCk7XG4gICAgICAgICAgICBhdXgyIChvZmZzZXQgKyAxKSAoayArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBhdXgyIDAga1xuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgc3ViIGEgc3RhcnQgbGVuID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LnN1YlwiKVxuICBlbHNlIGlmIHNpemUgPSAwIHRoZW5cbiAgICBVbmFyeSBbfHxdXG4gIGVsc2VcbiAgICBpbml0IGxlbiAoZnVuIHggLT4gZ2V0IGEgKHggKyBzdGFydCkpXG5cbmxldCBjb3B5ID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IFVuYXJ5IChBcnJheS5jb3B5IGEpXG4gIHwgQmluYXJ5IGInIC0+XG4gICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYicgaW5cbiAgICBCaW5hcnkgKEFycmF5LmluaXQgc2l6ZSAoZnVuIHggLT4gQXJyYXkuY29weSBiJy4oeCkpKVxuXG5sZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgbGV0IHNpemUgPSBsZW5ndGggYSBpblxuICBpZiBzdGFydCA8IDAgfHwgbGVuIDwgMCB8fCBzdGFydCArIGxlbiA+IHNpemUgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQmlnX2FycmF5LmZpbGxcIilcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgIGlmIGsgPCBsZW4gdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHNldCBhIGkgeCBpblxuICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBzdGFydFxuICApXG5cbmxldCBvZl9saXN0IH5kZWZhdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIGFzIGwgLT5cbiAgICBsZXQgX2lrbm93d2hhdGltZG9pbmcgPSBkZWZhdWx0IGluXG4gICAgbGV0IHNpemUgPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgc2l6ZSB0IGluXG4gICAgbGV0IHJlYyBhdXggayA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoKSA9IHNldCBhIGsgdCBpblxuICAgICAgICBhdXggKGsgKyAxKSBxXG4gICAgaW5cbiAgICBhdXggMCBsXG5cbmxldCBpdGVyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlciBmIGFcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5pdGVyIChBcnJheS5pdGVyIGYpIGFcblxubGV0IGl0ZXJpIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gQXJyYXkuaXRlcmkgZiBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgZyBrIGsnID0gKGsgKiBtYXhfYXJyYXlfc2l6ZTEpICsgaycgaW5cbiAgICBBcnJheS5pdGVyaSAoZnVuIGsgYSAtPiBBcnJheS5pdGVyaSAoZnVuIGsnIGEgLT4gZiAoZyBrIGsnKSBhKSBhKSBhXG5cbmxldCBnZW4gZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICB8IEJpbmFyeSBhIC0+IGgyIChnMiAoZzEgZikgYSlcblxubGV0IG1hcCBmIHggPSBnZW4gQXJyYXkubWFwIEFycmF5Lm1hcCAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSBmIHhcblxuKCpsZXQgZ2VuaSBnMSBnMiBoMSBoMiBmID0gZnVuY3Rpb25cbiAgICAgIHwgVW5hcnkgYSAtPiBoMSAoZzEgZiBhKVxuICAgICAgfCBCaW5hcnkgYiAtPlxuICBoMlxuICAgIChnMlxuICAgICAgIChmdW4gcCBhIC0+XG4gICAgICAgIGxldCBuID0gcCAqIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgICBnMVxuICAgKGZ1biBxIGEgLT4gZiAocSArIG4pIGEpXG4gICBhKVxuICAgICAgIGIpXG5cbiAgICBsZXQgbWFwaSA9XG4gICAgICBnZW5pIEFycmF5Lm1hcGkgQXJyYXkubWFwaSAoZnVuIHggLT4gVW5hcnkgeCkgKGZ1biB4IC0+IEJpbmFyeSB4KSopXG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZlxuICAgIGxlbiA8IDAgfHwgb2ZzMSA8IDBcbiAgICB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgfHwgb2ZzMiA8IDBcbiAgICB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIGlmIG9mczEgPCBvZnMyIHRoZW5cbiAgICAoKiBUb3AtZG93biBjb3B5ICopXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICBzZXQgYTIgKG9mczIgKyBpKSAoZ2V0IGExIChvZnMxICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcblxubGV0IGZvbGRfbGVmdGkgZiBpbml0IGEgPVxuICBsZXQgeSA9IHJlZiBpbml0IGluXG4gIGxldCAoKSA9IGl0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IGZvbGRfcmlnaHQgZiBhIGluaXQgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBVbmFyeSBhIC0+IEFycmF5LmZvbGRfcmlnaHQgZiBhIGluaXRcbiAgfCBCaW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IChBcnJheS5mb2xkX3JpZ2h0IGYpIGEgaW5pdFxuXG5sZXQgZm9sZF9yaWdodGkgZiBhIGluaXQgPVxuICBsZXQgZyBrIChpLCBjdXJyZW50KSA9IGkgLSAxLCBmIGkgayBjdXJyZW50IGluXG4gIHNuZCAoZm9sZF9yaWdodCBnIGEgKGxlbmd0aCBhIC0gMSwgaW5pdCkpXG5cbmxldCBwcmludCA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBsZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiAoZ2V0IGEgaSkgaW5cbiAgICAgIGlmIGkgPCBsZW5ndGggYSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICAgIGF1eCAoc3VjYyBpKSBmXG4gICAgICApIGVsc2UgaWYgaSA+IDAgdGhlblxuICAgICAgICB0cmFpbGluZyBmXG4gICAgKVxuICBpblxuICBhdXggMCBmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZmxvYXRfaXNfemVybyB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gIHwgRlBfemVybyAtPiB0cnVlXG4gIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gZmFsc2VcblxubGV0IHBvdyBpIGogPVxuICBsZXQgKCkgPSBhc3NlcnQgKDAgPD0gaikgaW5cbiAgbGV0IHJlYyBhdXggaSBrIGFjY3UgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIGsgbGFuZCAxID0gMCB0aGVuXG4gICAgICBhdXggaSAoayAvIDIpIGFjY3UgKiBhY2N1XG4gICAgZWxzZVxuICAgICAgYXV4IGkgKGsgLyAyKSAoaSAqIGFjY3UgKiBhY2N1KVxuICBpblxuICBhdXggaSBqIDFcblxubGV0IGZhY3QgaSA9XG4gIGxldCByZWMgYXV4IGkgYWNjdSA9XG4gICAgaWYgaSA8IDIgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCAoaSAtIDEpIChpICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgMVxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjIHN0YXJ0IGNvbWJpbmUgZiBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgb2xkIG9jYyBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogdCB3aGVuIGggPSBvbGQgLT4gYXV4IHQgb2xkICgxICsgb2NjKSBhY2N1XG4gICAgfCBfIC0+XG4gICAgICBsZXQgYWNjdSA9IGNvbWJpbmUgYWNjdSAoZiBvY2MpIGluXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IGggOjogdCAtPiBhdXggdCBoIDEgYWNjdVxuICAgICAgfCBbXSAtPiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAxXG4gIHwgaCA6OiB0IC0+IGF1eCB0IGggMSBzdGFydFxuXG5sZXQgZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIgc3RhcnQgY29tYmluZSBmIGwxIGwyID1cbiAgbGV0IGwxID0gTGlzdC5zb3J0IGNvbXBhcmUgbDEgaW5cbiAgbGV0IGwyID0gTGlzdC5zb3J0IGNvbXBhcmUgbDIgaW5cbiAgbGV0IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW10sIDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHJlYyBhdXggbCBoIG9jYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdLCBvY2NcbiAgICAgICAgfCBoJyA6OiB0IHdoZW4gaCA9IGgnIC0+IGF1eCB0IGggKG9jYyArIDEpXG4gICAgICAgIHwgXyAtPiBsLCBvY2NcbiAgICAgIGluXG4gICAgICBhdXggdCBoIDFcbiAgaW5cbiAgbGV0IHJlYyBhdXggbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IGgxIDo6IF8sIGgyIDo6IF8gd2hlbiBoMSA9IGgyIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgbGV0IGwyLCBvY2MyID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDIgaW5cbiAgICAgIGF1eCBsMSBsMiAoY29tYmluZSBhY2N1IChmIG9jYzEgb2NjMikpXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gY29tcGFyZSBoMSBoMiA8IDAgLT5cbiAgICAgIGxldCBsMSwgb2NjMSA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwxIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIDApKVxuICAgIHwgXyA6OiBfLCBfIDo6IF8gLT5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiAwIG9jYzIpKVxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBhY2N1XG4gIGluXG4gIGF1eCBsMSBsMiBzdGFydFxuXG5sZXQgZGl2MiB4ID0gSW50NjQuZGl2IHggKEludDY0LmFkZCBJbnQ2NC5vbmUgSW50NjQub25lKVxuXG5sZXQgcG93NjQgeCBuID1cbiAgYXNzZXJ0IChuID49IEludDY0Lnplcm8pO1xuICBsZXQgcmVjIGF1eCBrIGFjY3UgPVxuICAgIGlmIGsgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIEludDY0LmxvZ2FuZCBrIEludDY0Lm9uZSA9IEludDY0Lnplcm8gdGhlblxuICAgICAgYXV4IChkaXYyIGspIChJbnQ2NC5tdWwgYWNjdSBhY2N1KVxuICAgIGVsc2VcbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIHggKEludDY0Lm11bCBhY2N1IGFjY3UpKVxuICBpblxuICBhdXggbiBJbnQ2NC5vbmVcblxubGV0IGNhbnRvcl9wYWlyaW5nIHggeSA9XG4gIGxldCBzID0geCArIHkgaW5cbiAgKHN1Y2MgcyAqIHMgLyAyKSArIHlcblxubGV0IHJlYWRfaW5wdXQgKCkgPVxuICBsZXQgcmVjIHBhcnNlIGFjYyBpbnB1dCA9XG4gICAgbWF0Y2ggU3RyZWFtLm5leHQgaW5wdXQgd2l0aFxuICAgIHwgJ1xcbicgLT4gYWNjXG4gICAgfCBjIC0+IHBhcnNlIChQcmludGYuc3ByaW50ZiBcIiVzJWNcIiBhY2MgYykgaW5wdXRcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHVzZXJfaW5wdXQgPSBTdHJlYW0ub2ZfY2hhbm5lbCBzdGRpbiBpblxuICAgIHBhcnNlIFwiXCIgdXNlcl9pbnB1dFxuICB3aXRoIFN0cmVhbS5GYWlsdXJlIC0+IGludmFsaWRfYXJnIFwiVG9vbHMuUmVhZF9pbnB1dDogY2Fubm90IHJlYWQgc3RyZWFtXCJcblxubGV0IG5vdF9hbl9pZCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID0gMFxuICB8fFxuICBsZXQgaSA9IGludF9vZl9jaGFyIHMuWzBdIGluXG4gIChpIDwgNjUgfHwgaSA+IDEyMiB8fCAoaSA+IDkwICYmIChpIDw+IDk1IHx8IFN0cmluZy5sZW5ndGggcyA9IDEpICYmIGkgPCA5NykpXG4gIHx8XG4gIHRyeVxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbGV0IGkgPSBpbnRfb2ZfY2hhciBjIGluXG4gICAgICAgIGlmXG4gICAgICAgICAgaSA8IDQ4IHx8IGkgPiAxMjJcbiAgICAgICAgICB8fCAoaSA+IDU3ICYmIChpIDwgNjUgfHwgKGkgPiA5MCAmJiBpIDw+IDk1ICYmIGkgPCA5NykpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgcztcbiAgICBmYWxzZVxuICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG5cbmxldCBhcnJheV9mb2xkX2xlZnRfbWFwaSBmIHggYSA9XG4gIGxldCB5ID0gcmVmIHggaW5cbiAgbGV0IG8gPVxuICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBhKSAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHknLCBvdXQgPSBmIGkgIXkgYS4oaSkgaW5cbiAgICAgICAgbGV0ICgpID0geSA6PSB5JyBpblxuICAgICAgICBvdXQpXG4gIGluXG4gICF5LCBvXG5cbmxldCBhcnJheV9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIGkgdiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBBcnJheS51bnNhZmVfc2V0IHYgaSAoZiB4KTtcbiAgICAgIGZpbGwgZiAoc3VjYyBpKSB2IGxcbiAgaW5cbiAgZnVuIGYgLT4gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFt8fF1cbiAgICB8IHggOjogbCAtPlxuICAgICAgbGV0IGxlbiA9IHN1Y2MgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBsZXQgYW5zID0gQXJyYXkubWFrZSBsZW4gKGYgeCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiAxIGFucyBsIGluXG4gICAgICBhbnNcblxubGV0IGFycmF5X3Jldl9vZl9saXN0ID1cbiAgbGV0IHJlYyBmaWxsIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgaCcgaW5cbiAgICAgIGZpbGwgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gW3x8XVxuICB8IGggOjogdCAtPlxuICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIGggaW5cbiAgICBsZXQgKCkgPSBmaWxsIG91dCAobCAtIDIpIHQgaW5cbiAgICBvdXRcblxubGV0IGFycmF5X3Jldl9tYXBfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBmIG91dCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgIHwgaCcgOjogdCcgLT5cbiAgICAgIGxldCAoKSA9IEFycmF5LnVuc2FmZV9zZXQgb3V0IGkgKGYgaCcpIGluXG4gICAgICBmaWxsIGYgb3V0IChwcmVkIGkpIHQnXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBsID0gc3VjYyAoTGlzdC5sZW5ndGggdCkgaW5cbiAgICAgIGxldCBvdXQgPSBBcnJheS5tYWtlIGwgKGYgaCkgaW5cbiAgICAgIGxldCAoKSA9IGZpbGwgZiBvdXQgKGwgLSAyKSB0IGluXG4gICAgICBvdXRcblxubGV0IGFycmF5X2ZvbGRfbGVmdGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gaSBlIC0+IHkgOj0gZiBpICF5IGUpIGEgaW5cbiAgIXlcblxubGV0IHJlYyBhdXhfZm9sZF9yaWdodGkgaSBmIGEgeCA9XG4gIGlmIGkgPCAwIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBhdXhfZm9sZF9yaWdodGkgKHByZWQgaSkgZiBhIChmIGkgYS4oaSkgeClcblxubGV0IGFycmF5X2ZvbGRfcmlnaHRpIGYgYSB4ID0gYXV4X2ZvbGRfcmlnaHRpIChBcnJheS5sZW5ndGggYSAtIDEpIGYgYSB4XG5cbmxldCBhcnJheV9mb2xkX2xlZnQyaSBmIHggYTEgYTIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBhMiB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJhcnJheV9mb2xkX2xlZnQyaVwiKVxuICBlbHNlXG4gICAgYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBlIC0+IGYgaSB4IGUgYTIuKGkpKSB4IGExXG5cbmxldCBhcnJheV9maWx0ZXIgZiBhID1cbiAgYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgaWYgZiBpIHggdGhlblxuICAgICAgICBpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gYVxuXG5sZXQgYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGwxIGwyID1cbiAgaWYgQXJyYXkubGVuZ3RoIGwxIDw+IEFycmF5Lmxlbmd0aCBsMiB0aGVuXG4gICAgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGYgaiA9XG4gICAgICBpZiBqID0gQXJyYXkubGVuZ3RoIGwxIHRoZW5cbiAgICAgICAgU29tZSAoW10sIFtdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihqKSBpblxuICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaikgaW5cbiAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIG5iMSA9IDAgdGhlblxuICAgICAgICAgIGYgKHN1Y2MgailcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBhdXggaSB2YSBvdXQgPVxuICAgICAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IG5iMSwgYWcxID0gbDEuKGkpIGluXG4gICAgICAgICAgICAgIGxldCBuYjIsIGFnMiA9IGwyLihpKSBpblxuICAgICAgICAgICAgICBpZiBuYjEgPD4gbmIyIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2UgaWYgbmIxID4gMCAmJiBuYjEgPCB2YSB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhdXggKHN1Y2MgaSkgdmEgb3V0XG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2MgaikgbmIxIChhZzEsIGFnMilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIGluXG4gICAgZiAwXG4gIClcblxubGV0IGFycmF5X2NvbXBhcmUgY29tcGFyZSBhIGIgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBsJyA9IEFycmF5Lmxlbmd0aCBiIGluXG4gIGxldCBkID0gU3RkbGliLmNvbXBhcmUgbCBsJyBpblxuICBsZXQgcmVjIGF1eF9hcnJheV9jb21wYXJlIGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXBhcmUgYS4oaykgYi4oaykgaW5cbiAgICAgIGlmIG8gPD4gMCB0aGVuXG4gICAgICAgIG9cbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2FycmF5X2NvbXBhcmUgKHN1Y2MgaylcbiAgICApXG4gIGluXG4gIGlmIGQgPD4gMCB0aGVuXG4gICAgZFxuICBlbHNlXG4gICAgYXV4X2FycmF5X2NvbXBhcmUgMFxuXG5sZXQgaXRlcmkgZiBpID1cbiAgbGV0IHJlYyBhdXggaiA9XG4gICAgaWYgaiA8IGkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBmIGogaW5cbiAgICAgIGF1eCAoc3VjYyBqKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IHJlYyByZWN0aSBmIHggaSA9XG4gIGlmIDAgPCBpIHRoZW4gKFxuICAgIGxldCBpJyA9IHByZWQgaSBpblxuICAgIHJlY3RpIGYgKGYgeCBpJykgaSdcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgbWluX3Bvc19pbnRfbm90X3plcm8gKGtleWEsIGRhdGFhKSAoa2V5YiwgZGF0YWIpID1cbiAgaWYga2V5YSA9IDAgdGhlblxuICAgIGtleWIsIGRhdGFiXG4gIGVsc2UgaWYga2V5YiA9IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2UgaWYgY29tcGFyZSBrZXlhIGtleWIgPiAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlXG4gICAga2V5YSwgZGF0YWFcblxubGV0IG1heF9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YSwgZGF0YWFcbiAgZWxzZVxuICAgIGtleWIsIGRhdGFiXG5cbmxldCBmb2xkX292ZXJfcGVybXV0YXRpb25zIGYgbCBhY2N1ID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gZGlzY2FyZGVkIHBlcm11dGF0aW9uIGFjY3UgPVxuICAgIG1hdGNoIHRvX2RvLCBkaXNjYXJkZWQgd2l0aFxuICAgIHwgW10sIFtdIC0+IGYgcGVybXV0YXRpb24gYWNjdVxuICAgIHwgW10sIF8gOjogXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIF8gLT5cbiAgICAgIGxldCB0b19kbzEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgYSAtPiBhIDo6IGxpc3QpIHQgZGlzY2FyZGVkIGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0b19kbzEgW10gKGggOjogcGVybXV0YXRpb24pIGFjY3UgaW5cbiAgICAgIGxldCBhY2N1ID0gYXV4IHQgKGggOjogZGlzY2FyZGVkKSBwZXJtdXRhdGlvbiBhY2N1IGluXG4gICAgICBhY2N1XG4gIGluXG4gIGF1eCBsIFtdIFtdIGFjY3VcblxubGV0IGdjZF8yIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgaWYgYiA9IDAgdGhlblxuICAgICAgYVxuICAgIGVsc2VcbiAgICAgIGF1eCBiIChhIG1vZCBiKVxuICBpblxuICBsZXQgYSA9IGFicyBhIGluXG4gIGxldCBiID0gYWJzIGIgaW5cbiAgaWYgYSA8IGIgdGhlblxuICAgIGF1eCBiIGFcbiAgZWxzZVxuICAgIGF1eCBhIGJcblxubGV0IGxjbV8yIGEgYiA9IGFicyBhICogYWJzIGIgLyBnY2RfMiBhIGJcblxubGV0IGxjbSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gMFxuICB8IGggOjogdCAtPiBMaXN0LmZvbGRfbGVmdCBsY21fMiBoIHRcblxubGV0IGdldF9pbnRlcnZhbF9saXN0IHAgaSBqID1cbiAgbGV0IGFkZCBjdXJyZW50IG91dHB1dCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dFxuICAgIHwgU29tZSBwIC0+IHAgOjogb3V0cHV0XG4gIGluXG4gIGxldCBpbnNlcnQgayBjdXJyZW50ID1cbiAgICBtYXRjaCBjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAoaywgaylcbiAgICB8IFNvbWUgKF8sIGopIC0+IFNvbWUgKGssIGopXG4gIGluXG4gIGxldCByZWMgYXV4IHAgayBjdXJyZW50IG91dHB1dCA9XG4gICAgaWYgayA8IGkgdGhlblxuICAgICAgYWRkIGN1cnJlbnQgb3V0cHV0XG4gICAgZWxzZSBpZiBwIGsgdGhlblxuICAgICAgYXV4IHAgKGsgLSAxKSAoaW5zZXJ0IGsgY3VycmVudCkgb3V0cHV0XG4gICAgZWxzZVxuICAgICAgYXV4IHAgKGsgLSAxKSBOb25lIChhZGQgY3VycmVudCBvdXRwdXQpXG4gIGluXG4gIGF1eCBwIGogTm9uZSBbXVxuXG5sZXQgbG93ZXJjYXNlID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IGNhcGl0YWxpemUgPSBTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxuXG5sZXQgc3RyaW5nX3NwbGl0X29uX2NoYXIgKGRlbGltaXRlciA6IGNoYXIpIChzIDogc3RyaW5nKSA6XG4gICAgc3RyaW5nICogc3RyaW5nIG9wdGlvbiA9XG4gIHRyeVxuICAgIGxldCBpbmRleCA9IFN0cmluZy5pbmRleCBzIGRlbGltaXRlciBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBTdHJpbmcuc3ViIHMgMCBpbmRleCwgU29tZSAoU3RyaW5nLnN1YiBzIChpbmRleCArIDEpIChsZW5ndGggLSBpbmRleCAtIDEpKVxuICB3aXRoIE5vdF9mb3VuZCAtPiBzLCBOb25lXG5cbmxldCBzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXN0IHAgbCA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCBcXG5cIiBpblxuXG4gIGxldCByZWMgYXV4IHRhaWwgbm9jYyBjdXJyZW50IGFjY3UgPVxuICAgIG1hdGNoIHRhaWwgd2l0aFxuICAgIHwgW10gLT4gKGN1cnJlbnQsIG5vY2MpIDo6IGFjY3VcbiAgICB8IChoLCBuKSA6OiB0IHdoZW4gcCBoIGN1cnJlbnQgPSAwIC0+XG4gICAgICAoKmxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyIFwiRFVQTCAlaVxcblwiIChuK25vY2MpIGluKilcbiAgICAgIGF1eCB0IChuICsgbm9jYykgY3VycmVudCBhY2N1XG4gICAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggKChjdXJyZW50LCBub2NjKSA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChoLCBuKSA6OiB0IC0+IGF1eCB0IG4gaCBbXVxuXG5sZXQgY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0ID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgZXh0IHRoZW5cbiAgICBGaWxlbmFtZS5jaG9wX3N1ZmZpeCBuYW1lIGV4dFxuICBlbHNlXG4gICAgRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvbiBuYW1lXG5cbmxldCBmaW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIG5hbWUgfmZhY3VsdGF0aXZlIH5leHQgPVxuICBsZXQgZXh0ID1cbiAgICBtYXRjaCBleHQgd2l0aFxuICAgIHwgU29tZSBlIC0+IGVcbiAgICB8IE5vbmUgLT4gRmlsZW5hbWUuZXh0ZW5zaW9uIG5hbWVcbiAgaW5cbiAgbGV0IGJhc2UgPSBjaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZSBeIGV4dCkgdGhlbiAoXG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICBpZiBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIGV4dCkgdGhlbiAoXG4gICAgICBsZXQgdiA9IHJlZiAwIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3aGlsZSBhbHJlYWR5X3RoZXJlIChiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dCkgZG9cbiAgICAgICAgICBpbmNyIHZcbiAgICAgICAgZG9uZVxuICAgICAgaW5cbiAgICAgIGJhc2UnIF4gXCJ+XCIgXiBzdHJpbmdfb2ZfaW50ICF2IF4gZXh0XG4gICAgKSBlbHNlXG4gICAgICBiYXNlJyBeIGV4dFxuICApIGVsc2VcbiAgICBiYXNlIF4gZXh0XG5cbmxldCBkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIgOiBjaGFyID0gJ1xceDFlJyAoKiBcIlxcdFwiICopXG5cbmxldCBnZXRfcmVmIHJlZiA9XG4gIGxldCBpID0gIXJlZiBpblxuICBsZXQgKCkgPSByZWYgOj0gaSArIDEgaW5cbiAgaVxuXG5sZXQgcmVtb3ZlX2RvdWJsZV9lbGVtZW50cyBsID1cbiAgbGV0IGwgPSBMaXN0LnNvcnQgY29tcGFyZSBsIGluXG4gIGxldCByZWMgYXV4IGwgYWNjdSBvbGQgPVxuICAgIG1hdGNoIGwsIG9sZCB3aXRoXG4gICAgfCBbXSwgXyAtPiBhY2N1XG4gICAgfCBoIDo6IHQsIFNvbWUgaCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgYWNjdSBvbGRcbiAgICB8IGggOjogdCwgKE5vbmUgfCBTb21lIF8pIC0+IGF1eCB0IChoIDo6IGFjY3UpIChTb21lIGgpXG4gIGluXG4gIGF1eCBsIFtdIE5vbmVcblxubGV0IGZyb21fbl90b18wIG4gPVxuICBsZXQgcmVjIGF1eCBrIGFjYyA9XG4gICAgaWYgayA+IG4gdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgYXV4IChrICsgMSkgKGsgOjogYWNjKVxuICBpblxuICBhdXggMCBbXVxuXG5sZXQgY2xlYXIgYSA9IEFycmF5Lml0ZXJpIChmdW4gaSBfIC0+IGEuKGkpIDwtIFtdKSBhXG5cbmxldCBzb3J0X2J5X3ByaW9yaXR5IGYgbiA9XG4gIGxldCBhID0gQXJyYXkubWFrZSAobiArIDEpIFtdIGluXG4gIGxldCBrZXlzID0gZnJvbV9uX3RvXzAgbiBpblxuICBsZXQgc29ydCBsID1cbiAgICBsZXQgcmVjIGF1eCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGsgPSBmIGggaW5cbiAgICAgICAgbGV0ICgpID0gYS4oaykgPC0gaCA6OiBhLihrKSBpblxuICAgICAgICBhdXggdFxuICAgIGluXG4gICAgbGV0ICgpID0gYXV4IGwgaW5cbiAgICBsZXQgb3V0cHV0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCBrZXkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgZWx0IC0+IGVsdCA6OiBsaXN0KSBsaXN0IGEuKGtleSkpXG4gICAgICAgIFtdIGtleXNcbiAgICBpblxuICAgIGxldCAoKSA9IGNsZWFyIGEgaW5cbiAgICBvdXRwdXRcbiAgaW5cbiAgc29ydFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGluaXRpYWxfYnVmZmVyX3NpemUgPSAweDEwMDBcblxubGV0IHdyaXRlX3RvX2NoYW5uZWwgZiBkIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICBsZXQgKCkgPSBmIGIgeCBpblxuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBkIGJcblxubGV0IHN0cmluZ19vZl93cml0ZSBmID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIGxldCAoKSA9IGYgb2IgeCBpblxuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfb2Zfc3RyaW5nIGYgeCA9XG4gIGxldCBsZXhfc3QgPSBZb2pzb24uQmFzaWMuaW5pdF9sZXhlciAoKSBpblxuICBsZXQgbGV4X2J1ZiA9IExleGluZy5mcm9tX3N0cmluZyB4IGluXG4gIGYgbGV4X3N0IGxleF9idWZcblxubGV0IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCB4ID0gZiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICB4XG5cbmxldCByZWFkX25leHRfaXRlbSBmIHN0IGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIHJlYWRfYmV0d2Vlbl9zcGFjZXMgZiBzdCBiXG5cbmxldCBidWlsZF9tc2cgcyA9IFwiTm90IGEgY29ycmVjdCBcIiBeIHNcbmxldCBvZl9zdHJpbmcgKHMgOiBzdHJpbmcpID0gYFN0cmluZyBzXG5cbmxldCB0b19zdHJpbmcgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJzdHJpbmdcIikgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgKHMgOiBzdHJpbmcpIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfaW50IChzIDogaW50KSA9IGBJbnQgc1xuXG5sZXQgdG9faW50ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiaW50XCIpID0gZnVuY3Rpb25cbiAgfCBgSW50IChzIDogaW50KSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2Jvb2wgKHMgOiBib29sKSA9XG4gIGBTdHJpbmdcbiAgICAoaWYgcyB0aGVuXG4gICAgICAgXCJ0cnVlXCJcbiAgICAgZWxzZVxuICAgICAgIFwiZmFsc2VcIilcblxubGV0IHRvX2Jvb2wgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJib29sZWFuXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBgU3RyaW5nIFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml0ICgpID0gYE51bGxcblxubGV0IHRvX3VuaXQgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ1bml0XCIpID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiAoKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9vcHRpb24gdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBgTnVsbFxuICB8IFNvbWUgeCAtPlxuICAgIChtYXRjaCB0b19qc29uIHggd2l0aFxuICAgIHwgYE51bGwgLT4gZmFpbHdpdGggXCJhbWJpZ3VvdXMgSnNvblV0aWwub2Zfb3B0aW9uXCJcbiAgICB8IHggLT4geClcblxubGV0IHRvX29wdGlvbiA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuXG5sZXQgd3JpdGVfb3B0aW9uIGYgb2IgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgfCBTb21lIHggLT4gZiBvYiB4XG5cbmxldCByZWFkX29wdGlvbiBmIHAgbGIgPVxuICBpZiBZb2pzb24uQmFzaWMucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKGYgcCBsYilcblxubGV0IG9mX2xpc3QgdG9fanNvbiBsID0gYExpc3QgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2xpc3QgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJsaXN0XCIpIG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21tYSBvYiA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyBpdGVyMiBmX2VsdCB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgIHdyaXRlX2NvbW1hIHg7XG4gICAgZl9lbHQgeCB5O1xuICAgIGl0ZXIyIGZfZWx0IHggbFxuXG5sZXQgd3JpdGVfbGlzdCBmIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICBmIG9iIHk7XG4gICAgICBpdGVyMiBmIG9iIGxcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgb2ZfYXJyYXkgdG9fanNvbiBhID1cbiAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biB4IGFjYyAtPiB0b19qc29uIHggOjogYWNjKSBhIFtdKVxuXG5sZXQgdG9fYXJyYXkgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhcnJheVwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IG9mX2pzb24gbFxuICB8IGBOdWxsIC0+IFt8fF1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfYXJyYXkgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBpZiBBcnJheS5sZW5ndGggbCA+IDAgdGhlbiBmIG9iIGwuKDApIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgKCkgPSB3cml0ZV9jb21tYSBvYiBpblxuICAgICAgICBmIG9iIGwuKHN1Y2MgaSkpXG4gICAgICAocHJlZCAoQXJyYXkubGVuZ3RoIGwpKVxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWMgaXRlcl9zZXEgb2IgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZiA6OiBxIC0+XG4gICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgaXRlcl9zZXEgb2IgcVxuXG5sZXQgd3JpdGVfc2VxdWVuY2Ugb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBmIDo6IHEgLT5cbiAgICAgIGxldCAoKSA9IGYgb2IgaW5cbiAgICAgIGl0ZXJfc2VxIG9iIHFcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVhZF92YXJpYW50IHJlYWRfaWQgcmVhZCBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IGNzdCA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgcmVhZF9pZCBzdCBiIGluXG4gIGxldCBvdXQgPSByZWFkIHN0IGIgY3N0IGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIG91dFxuXG5sZXQgc21hcnRfYXNzb2MgbCA9XG4gIGBBc3NvY1xuICAgIChMaXN0LnJldlxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8sIChgTnVsbCB8IGBBc3NvYyBbXSB8IGBMaXN0IFtdKSAtPiBhY2NcbiAgICAgICAgICAgIHwgeCAtPiB4IDo6IGFjYylcbiAgICAgICAgICBbXSBsKSlcblxubGV0IG9mX2Fzc29jIHRvX2pzb24gbCA9IGBBc3NvYyAoTGlzdC5yZXZfbWFwIHRvX2pzb24gKExpc3QucmV2IGwpKVxuXG5sZXQgdG9fYXNzb2MgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJhc3NvY2lhdGlvblwiKSBvZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeSBMaXN0LnJldl9tYXAgb2ZfanNvbiAoTGlzdC5yZXYgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IGBOdWxsIC0+IFtdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2ZpZWxkIG5hIGYgb2IgeCA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgbmEgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICc6JyBpblxuICBmIG9iIHhcblxubGV0IG9mX3BhaXIgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSB0b19qc29uMSB0b19qc29uMiAoYSwgYikgPVxuICBgQXNzb2MgWyBsYWIxLCB0b19qc29uMSBhOyBsYWIyLCB0b19qc29uMiBiIF1cblxubGV0IHRvX3RyaXBsZSA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8obGFiMyA9IFwidGhpcmRcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcInRyaXBsZVwiKSBvZl9qc29uMSBvZl9qc29uMiBvZl9qc29uMyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSxcbiAgICAgICAgIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbCksXG4gICAgICAgICBvZl9qc29uMyAoTGlzdC5hc3NvYyBsYWIzIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl90cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpIHRvX2pzb24xXG4gICAgdG9fanNvbjIgdG9fanNvbjMgKGEsIGIsIGMpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYjsgbGFiMywgdG9fanNvbjMgYyBdXG5cbmxldCB0b19wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJwYWlyXCIpXG4gICAgb2ZfanNvbjEgb2ZfanNvbjIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnkgb2ZfanNvbjEgKExpc3QuYXNzb2MgbGFiMSBsKSwgb2ZfanNvbjIgKExpc3QuYXNzb2MgbGFiMiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2NvbXBhY3RfcGFpciBmIGcgb2IgKHgsIHkpID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gZyBvYiB5IGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfY29tcGFjdF9wYWlyIGYgZyBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHN0IGIgaW5cbiAgbGV0IHggPSByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBzdCBiIGluXG4gIGxldCB5ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBnIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfcmJyIHN0IGIgaW5cbiAgeCwgeVxuXG5sZXQgY29tcGFjdF90b19wYWlyIGYgZyA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyB4OyB5IF0gLT4gZiB4LCBnIHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvbXBhY3QgcGFpclwiLCB4KSlcblxubGV0IG9mX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgfmZvbGQga2V5X3RvX2pzb25cbiAgICB2YWx1ZV90b19qc29uIG1hcCA9XG4gIGBMaXN0XG4gICAgKExpc3QucmV2XG4gICAgICAgKGZvbGRcbiAgICAgICAgICAoZnVuIChrZXkgOiAna2V5KSAodmFsdWUgOiAndmFsdWUpIChsaXN0IDogWW9qc29uLkJhc2ljLnQgbGlzdCkgLT5cbiAgICAgICAgICAgIGBBc3NvYyBbIGxhYl9rZXksIGtleV90b19qc29uIGtleTsgbGFiX3ZhbHVlLCB2YWx1ZV90b19qc29uIHZhbHVlIF1cbiAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgbWFwIFtdKSlcblxubGV0IHRvX21hcCA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcIm1hcFwiKSB+YWRkIH5lbXB0eSBqc29uX3RvX2tleSBqc29uX3RvX3ZhbHVlID1cbiAgZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWFwIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgKGpzb25fdG9fa2V5IChMaXN0LmFzc29jIGxhYl9rZXkgbCkpXG4gICAgICAgICAgICAgICAoanNvbl90b192YWx1ZSAoTGlzdC5hc3NvYyBsYWJfdmFsdWUgbCkpXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gICAgICBlbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX3VuaXhfbGFiZWwgPSBmdW5jdGlvblxuICB8IFVuaXhMYWJlbHMuRTJCSUcgLT4gYEFzc29jIFsgXCJFMkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUNDRVMgLT4gYEFzc29jIFsgXCJFQUNDRVNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFHQUlOIC0+IGBBc3NvYyBbIFwiRUFHQUlOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCQURGIC0+IGBBc3NvYyBbIFwiRUJBREZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUJVU1kgLT4gYEFzc29jIFsgXCJFQlVTWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ0hJTEQgLT4gYEFzc29jIFsgXCJFQ0hJTERcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURFQURMSyAtPiBgQXNzb2MgWyBcIkVERUFETEtcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRURPTSAtPiBgQXNzb2MgWyBcIkVET01cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUVYSVNUIC0+IGBBc3NvYyBbIFwiRUVYSVNUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVGQVVMVCAtPiBgQXNzb2MgWyBcIkVGQVVMVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkJJRyAtPiBgQXNzb2MgWyBcIkVGQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlRSIC0+IGBBc3NvYyBbIFwiRUlOVFJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlOVkFMIC0+IGBBc3NvYyBbIFwiRUlOVkFMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTyAtPiBgQXNzb2MgWyBcIkVJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNESVIgLT4gYEFzc29jIFsgXCJFSVNESVJcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1GSUxFIC0+IGBBc3NvYyBbIFwiRU1GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNTElOSyAtPiBgQXNzb2MgWyBcIkVNTElOS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkFNRVRPT0xPTkcgLT4gYEFzc29jIFsgXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5GSUxFIC0+IGBBc3NvYyBbIFwiRU5GSUxFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0RFViAtPiBgQXNzb2MgWyBcIkVOT0RFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9FTlQgLT4gYEFzc29jIFsgXCJFTk9FTlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRVhFQyAtPiBgQXNzb2MgWyBcIkVOT0VYRUNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PTENLIC0+IGBBc3NvYyBbIFwiRU5PTENLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT01FTSAtPiBgQXNzb2MgWyBcIkVOT01FTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9TUEMgLT4gYEFzc29jIFsgXCJFTk9TUENcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1lTIC0+IGBBc3NvYyBbIFwiRU5PU1lTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RESVIgLT4gYEFzc29jIFsgXCJFTk9URElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RFTVBUWSAtPiBgQXNzb2MgWyBcIkVOT1RFTVBUWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UVFkgLT4gYEFzc29jIFsgXCJFTk9UVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5YSU8gLT4gYEFzc29jIFsgXCJFTlhJT1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEVSTSAtPiBgQXNzb2MgWyBcIkVQRVJNXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQSVBFIC0+IGBBc3NvYyBbIFwiRVBJUEVcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVJBTkdFIC0+IGBBc3NvYyBbIFwiRVJBTkdFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVST0ZTIC0+IGBBc3NvYyBbIFwiRVJPRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNQSVBFIC0+IGBBc3NvYyBbIFwiRVNQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUkNIIC0+IGBBc3NvYyBbIFwiRVNSQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVhERVYgLT4gYEFzc29jIFsgXCJFWERFVlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FV09VTERCTE9DSyAtPiBgQXNzb2MgWyBcIkVXT1VMREJMT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlBST0dSRVNTIC0+IGBBc3NvYyBbIFwiRUlOUFJPR1JFU1NcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFMUkVBRFkgLT4gYEFzc29jIFsgXCJFQUxSRUFEWVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UU09DSyAtPiBgQXNzb2MgWyBcIkVOT1RTT0NLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERVNUQUREUlJFUSAtPiBgQXNzb2MgWyBcIkVERVNUQUREUlJFUVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTVNHU0laRSAtPiBgQXNzb2MgWyBcIkVNU0dTSVpFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT1RZUEUgLT4gYEFzc29jIFsgXCJFUFJPVE9UWVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1BST1RPT1BUIC0+IGBBc3NvYyBbIFwiRU5PUFJPVE9PUFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTT0NLVE5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1BOT1RTVVBQIC0+IGBBc3NvYyBbIFwiRU9QTk9UU1VQUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUEZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSSU5VU0UgLT4gYEFzc29jIFsgXCJFQUREUklOVVNFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUwgLT4gYEFzc29jIFsgXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRET1dOIC0+IGBBc3NvYyBbIFwiRU5FVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVUUkVTRVQgLT4gYEFzc29jIFsgXCJFTkVUUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5BQk9SVEVEIC0+IGBBc3NvYyBbIFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVTRVQgLT4gYEFzc29jIFsgXCJFQ09OTlJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0JVRlMgLT4gYEFzc29jIFsgXCJFTk9CVUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJU0NPTk4gLT4gYEFzc29jIFsgXCJFSVNDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1RDT05OIC0+IGBBc3NvYyBbIFwiRU5PVENPTk5cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVNIVVRET1dOIC0+IGBBc3NvYyBbIFwiRVNIVVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVUT09NQU5ZUkVGUyAtPiBgQXNzb2MgWyBcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVElNRURPVVQgLT4gYEFzc29jIFsgXCJFVElNRURPVVRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEIC0+IGBBc3NvYyBbIFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVIT1NURE9XTiAtPiBgQXNzb2MgWyBcIkVIT1NURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVFVOUkVBQ0ggLT4gYEFzc29jIFsgXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUxPT1AgLT4gYEFzc29jIFsgXCJFTE9PUFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FT1ZFUkZMT1cgLT4gYEFzc29jIFsgXCJFT1ZFUkZMT1dcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgaW50IC0+IGBBc3NvYyBbIFwiRVVOS05PV05FUlJcIiwgb2ZfaW50IGludCBdXG5cbmxldCAodG9fdW5peF9sYWJlbCA6IFlvanNvbi5CYXNpYy50IC0+IFVuaXhMYWJlbHMuZXJyb3IpID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJFMkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkUyQklHXG4gIHwgYEFzc29jIFsgKFwiRUFDQ0VTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFDQ0VTXG4gIHwgYEFzc29jIFsgKFwiRUFHQUlOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFHQUlOXG4gIHwgYEFzc29jIFsgKFwiRUJBREZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQkFERlxuICB8IGBBc3NvYyBbIChcIkVCVVNZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJVU1lcbiAgfCBgQXNzb2MgWyAoXCJFQ0hJTERcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ0hJTERcbiAgfCBgQXNzb2MgWyAoXCJFREVBRExLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURFQURMS1xuICB8IGBBc3NvYyBbIChcIkVET01cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRE9NXG4gIHwgYEFzc29jIFsgKFwiRUVYSVNUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUVYSVNUXG4gIHwgYEFzc29jIFsgKFwiRUZBVUxUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZBVUxUXG4gIHwgYEFzc29jIFsgKFwiRUZCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FRkJJR1xuICB8IGBBc3NvYyBbIChcIkVJTlRSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVFJcbiAgfCBgQXNzb2MgWyAoXCJFSU5WQUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU5WQUxcbiAgfCBgQXNzb2MgWyAoXCJFSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSU9cbiAgfCBgQXNzb2MgWyAoXCJFSVNESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSVNESVJcbiAgfCBgQXNzb2MgWyAoXCJFTUZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTUxJTktcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTUxJTktcbiAgfCBgQXNzb2MgWyAoXCJFTkFNRVRPT0xPTkdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkFNRVRPT0xPTkdcbiAgfCBgQXNzb2MgWyAoXCJFTkZJTEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkZJTEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9ERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9ERVZcbiAgfCBgQXNzb2MgWyAoXCJFTk9FTlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9FTlRcbiAgfCBgQXNzb2MgWyAoXCJFTk9FWEVDXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRVhFQ1xuICB8IGBBc3NvYyBbIChcIkVOT0xDS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0xDS1xuICB8IGBBc3NvYyBbIChcIkVOT01FTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT01FTVxuICB8IGBBc3NvYyBbIChcIkVOT1NQQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NQQ1xuICB8IGBBc3NvYyBbIChcIkVOT1NZU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1NZU1xuICB8IGBBc3NvYyBbIChcIkVOT1RESVJcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9URElSXG4gIHwgYEFzc29jIFsgKFwiRU5PVEVNUFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVEVNUFRZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFRZXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFRZXG4gIHwgYEFzc29jIFsgKFwiRU5YSU9cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTlhJT1xuICB8IGBBc3NvYyBbIChcIkVQRVJNXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBFUk1cbiAgfCBgQXNzb2MgWyAoXCJFUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVJBTkdFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJBTkdFXG4gIHwgYEFzc29jIFsgKFwiRVJPRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUk9GU1xuICB8IGBBc3NvYyBbIChcIkVTUElQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUElQRVxuICB8IGBBc3NvYyBbIChcIkVTUkNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNSQ0hcbiAgfCBgQXNzb2MgWyAoXCJFWERFVlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVYREVWXG4gIHwgYEFzc29jIFsgKFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FV09VTERCTE9DS1xuICB8IGBBc3NvYyBbIChcIkVJTlBST0dSRVNTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOUFJPR1JFU1NcbiAgfCBgQXNzb2MgWyAoXCJFQUxSRUFEWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBTFJFQURZXG4gIHwgYEFzc29jIFsgKFwiRU5PVFNPQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9UU09DS1xuICB8IGBBc3NvYyBbIChcIkVERVNUQUREUlJFUVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERVNUQUREUlJFUVxuICB8IGBBc3NvYyBbIChcIkVNU0dTSVpFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1TR1NJWkVcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9UWVBFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPVFlQRVxuICB8IGBBc3NvYyBbIChcIkVOT1BST1RPT1BUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PUFJPVE9PUFRcbiAgfCBgQXNzb2MgWyAoXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUFJPVE9OT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFT1BOT1RTVVBQXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9QTk9UU1VQUFxuICB8IGBBc3NvYyBbIChcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVBRERSSU5VU0VcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUklOVVNFXG4gIHwgYEFzc29jIFsgKFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBRERSTk9UQVZBSUxcbiAgfCBgQXNzb2MgWyAoXCJFTkVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVORVRSRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVORVRSRVNFVFxuICB8IGBBc3NvYyBbIChcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVDT05OQUJPUlRFRFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRU5PQlVGU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0JVRlNcbiAgfCBgQXNzb2MgWyAoXCJFSVNDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTQ09OTlxuICB8IGBBc3NvYyBbIChcIkVOT1RDT05OXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVENPTk5cbiAgfCBgQXNzb2MgWyAoXCJFU0hVVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU0hVVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVE9PTUFOWVJFRlNcbiAgfCBgQXNzb2MgWyAoXCJFVElNRURPVVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FVElNRURPVVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFRlVTRURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTlJFRlVTRURcbiAgfCBgQXNzb2MgWyAoXCJFSE9TVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFSE9TVFVOUkVBQ0hcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FSE9TVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTE9PUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVMT09QXG4gIHwgYEFzc29jIFsgKFwiRU9WRVJGTE9XXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU9WRVJGTE9XXG4gIHwgYEFzc29jIFsgKFwiRVVOS05PV05FUlJcIiwgaW50KSBdIC0+IFVuaXhMYWJlbHMuRVVOS05PV05FUlIgKHRvX2ludCBpbnQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwgeCkpXG5cbmxldCBvZl91bml4X2Vycm9yID0gZnVuY3Rpb25cbiAgfCBVbml4LkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXguRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXguRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXguRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXguRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXguRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXguRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXguRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXguRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfZXJyb3IgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4LmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peC5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXguRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXguRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXguRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peC5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peC5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peC5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4LkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peC5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peC5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peC5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peC5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peC5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXguRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peC5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4LkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4LkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggZXJyb3JcIiwgeCkpXG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgWW9qc29uLkJhc2ljLndyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgc3RvcCA9IFN0b3Agb2YgJ2IgfCBTdWNjZXNzIG9mICdhXG5cbmxldCBzdWNjZXNzIGEgPSBTdWNjZXNzIGFcbmxldCBzdG9wIGEgPSBTdG9wIGFcblxubGV0IHN1Y2Nlc3Nfb3Jfc3RvcCBmIGcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN1Y2Nlc3MgYSAtPiBmIGFcbiAgfCBTdG9wIGEgLT4gZyBhXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbmVuZFxuXG50eXBlICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSkgd2l0aF9sb2dfd3JhcCA9XG4gICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24gLT4gZXhuIC0+ICdlcnJvcikgLT5cbiAgJ3BhcmFtZXRlcnMgLT5cbiAgJ2Vycm9yIC0+XG4gICdhXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuICB2YWwgYWRkIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmUgOiBlbHQgLT4gdCAtPiB0XG5cbiAgdmFsIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIGJvb2wgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0IDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gIHZhbCB1bmlvbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXNqb2ludF91bmlvbiA6IHQgLT4gdCAtPiB0IG9wdGlvblxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBtaW51cyA6IHQgLT4gdCAtPiB0XG4gICgqKiBbbWludXMgYSBiXSBjb250YWlucyBlbGVtZW50cyBvZiBbYV0gdGhhdCBhcmUgbm90IGluIFtiXSAqKVxuXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IHRcbiAgKCoqIFtkaWZmIGEgYl0gPSBbbWludXMgKHVuaW9uIGEgYikgKGludGVyIGEgYildICopXG5cbiAgdmFsIG1pbnVzX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGludGVyX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDogKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIHQgLT4gdCAtPiAnZXJyb3IgKiB0KSB3aXRoX2xvZ193cmFwXG4gICgqIHZhbCBzcGxpdF93aXRoX2xvZ3M6XG4gICAgICAgICgncGFyYW1ldGVycywnZXJyb3IsZWx0IC0+IHQgLT4gJ2Vycm9yICogKCB0ICogYm9vbCAqIHQpKSB3aXRoX2xvZ193cmFwICopXG5cbiAgdmFsIHNpemUgOiB0IC0+IGludFxuICB2YWwgbWVtIDogZWx0IC0+IHQgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG5cbiAgdmFsIGZpbHRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgdmFsIHBhcnRpdGlvbiA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuXG4gIHZhbCBwYXJ0aXRpb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQgKiB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmFuZG9tIDogUmFuZG9tLlN0YXRlLnQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgc2l6ZSA6ICdhIHQgLT4gaW50XG4gIHZhbCByb290IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWF4X2tleSA6ICdhIHQgLT4gZWx0IG9wdGlvblxuICB2YWwgYWRkIDogZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgcmVtb3ZlIDogZWx0IC0+ICdhIHQgLT4gJ2EgdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiBib29sICogJ2EgdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBwb3AgOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb24gKiAnYSB0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZF9vcHRpb24gOiBlbHQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfZGVmYXVsdCA6ICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIG9wdGlvbikgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmaW5kX2RlZmF1bHRfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgLT4gZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGRpZmZfcHJlZCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgam9pbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgc3BsaXRfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogKCdhIHQgKiAnYSBvcHRpb24gKiAnYSB0KSApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1cGRhdGVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWFwMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYiAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKiAnYyB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJ6X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2EgLT4gJ2EgLT4gJ2Vycm9yICogJ2EpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnZXJyb3IpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnZXJyb3IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZGlmZl9wcmVkX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2Vycm9yICogJ2EgdCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgbWVyZ2Vfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdW5pb25fd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIChlbHQgLT4gJ2EgLT4gJ2Vycm9yICogJ2IgLT4gJ2Vycm9yICogJ2IpIC0+XG4gICAgICAoZWx0IC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgc2V0IC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiAtPlxuICAgICAgJ2Vycm9yICogJ2IgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgaXRlciA6IChlbHQgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuXG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDpcbiAgICAoZWx0IC0+ICdhIC0+ICdiIC0+ICgnYiwgJ2MpIFN0b3Auc3RvcCkgLT4gJ2EgdCAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3BcblxuICB2YWwgbW9uYWRpY19mb2xkMiA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnbWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgbW9uYWRpY19mb2xkMl9zcGFyc2UgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfaXRlcjJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdtZXRob2RfaGFuZGxlclxuXG4gIHZhbCBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgbWFwaSA6IChlbHQgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcDIgOiAoJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBwcmludCA6XG4gICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldCB3aXRoIHR5cGUgZWx0ID0gZWx0XG4gIG1vZHVsZSBNYXAgOiBNYXAgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmV4Y2VwdGlvbiBEZWFkQ29kZUlzTm90RGVhZCBvZiBzdHJpbmdcblxubW9kdWxlIE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlKSA6IFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICBtb2R1bGUgU2V0ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuXG4gICAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgRW1wdHkgfCBOb2RlIG9mIHQgKiBlbHQgKiB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6IHRcbiAgICAgIHZhbCBoZWlnaHQgOiB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiB0IC0+IGVsdCAtPiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIChpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgaHIpXG4gICAgICAgICAgICArIDEsXG4gICAgICAgICAgICBzaXplIGxlZnQgKyBzaXplIHJpZ2h0ICsgMSApXG4gICAgZW5kXG5cbiAgICB0eXBlIHQgPSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCBzaW5nbGV0b24gdmFsdWUgPSBub2RlIGVtcHR5IHZhbHVlIGVtcHR5XG5cbiAgICBsZXQgaXNfc2luZ2xldG9uIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAoc2V0MSwgXywgc2V0MiwgXywgXykgLT4gaXNfZW1wdHkgc2V0MSAmJiBpc19lbXB0eSBzZXQyXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjIyXCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnRsZWZ0ID49IGhlaWdodCBsZWZ0cmlnaHQgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgKG5vZGUgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdHJpZ2h0IHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAyMjlcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnRsZWZ0IDwgaGVpZ2h0IGxlZnRyaWdodCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnRyaWdodGxlZnQsIGxlZnRyaWdodHZhbHVlLCBsZWZ0cmlnaHRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHRsZWZ0KVxuICAgICAgICAgICAgICAgIGxlZnRyaWdodHZhbHVlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdHJpZ2h0cmlnaHQgdmFsdWUgcmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjM4XCIpXG4gICAgICAgICgqIGhlaWdodF9yaWdodCA+IGhlaWdodF9sZWZ0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0cmlnaHQgPj0gaGVpZ2h0IHJpZ2h0bGVmdCB0aGVuXG4gICAgICAgICAgICBub2RlIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0KSByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0bGVmdCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjQ1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCByaWdodHJpZ2h0IDwgaGVpZ2h0IHJpZ2h0bGVmdCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdGxlZnQsIHJpZ2h0bGVmdHZhbHVlLCByaWdodGxlZnRyaWdodCwgXywgXylcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQgdmFsdWUgcmlnaHRsZWZ0bGVmdClcbiAgICAgICAgICAgICAgICByaWdodGxlZnR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0bGVmdHJpZ2h0IHJpZ2h0dmFsdWUgcmlnaHRyaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQgdmFsdWUgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBTZXQgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgc2V0XCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5TRVQuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICAoKiogQmV3YXJlIHNvbWUgY29kZSByZWxpZXMgb24gdGhlIGludmFyaWFudCBbYWRkIHggcyA9PSBzXSBpZmYgW21lbSB4IHNdICopXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCBsIGluXG4gICAgICAgICAgaWYgbyA9PSBsIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIG8gdiByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IG8gPSBhZGQgeCByIGluXG4gICAgICAgICAgaWYgbyA9PSByIHRoZW5cbiAgICAgICAgICAgIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGwgdiBvXG4gICAgICAgIClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCB0cnVlLCBzaW5nbGV0b24gbmV3X3ZhbFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgbmV3X3ZhbCB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBzZXQgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIHNldCA9XG4gICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWUgKFwiU2V0TWFwIGxpbmUgMzAwXCIgXiBcIiBhbiBhbHJlYWR5IGVsdCBoYXMgYmVlbiBhZGRlZCB0byBhIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmFkZFwiKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBzZXRcblxuICAgIGxldCBhZGRfZXZlbl9pZl9pdF9leGlzdHMgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gYWRkIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IGpvaW4gbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgcmlnaHQnXG4gICAgICAgICkgZWxzZSBpZiByaWdodGhlaWdodCA+IGxlZnRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IGpvaW4gbGVmdCB2YWx1ZSByaWdodGxlZnQgaW5cbiAgICAgICAgICBiYWxhbmNlIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub2RlIGxlZnQgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZSwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gc2FmZV9leHRyYWN0X21pbl9lbHQgbGVmdGxlZnQgbGVmdHZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCByZWMgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtaW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMDNcIilcbiAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IGVycm9yLCBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPlxuICAgICAgICBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIFwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzLCBsaW5lIDMxMVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwgXywgcmlnaHQsIF8sIF8pIC0+IGVycm9yLCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0XG4gICAgICAgIGluXG4gICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZSByaWdodFxuXG4gICAgbGV0IG1lcmdlIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgYmFsYW5jZSBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSBfLCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxlZnQyID1cbiAgICAgICAgICByZW1vdmVfbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBlbHRfb3B0ID0gbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDIgaW5cbiAgICAgICAgKG1hdGNoIGVsdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJtZXJnZV93aXRoX2xvZ3MsbGluZSAzMzlcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGVmdFxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBsZWZ0aGVpZ2h0LCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKHJpZ2h0bGVmdCwgcmlnaHR2YWx1ZSwgcmlnaHRyaWdodCwgcmlnaHRoZWlnaHQsIF8pICkgLT5cbiAgICAgICAgaWYgbGVmdGhlaWdodCA+IHJpZ2h0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdHJpZ2h0IHZhbHVlIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0bGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0dmFsdWUgcmlnaHRyaWdodFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgY29uY2F0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4yLCBzZXQyJyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQyIHZhbHVlMiByaWdodDIgaW5cbiAgICAgICAgam9pbiBzZXQxIG1pbjIgc2V0MidcblxuICAgIGxldCBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiY29uY2F0X3dpdGhfbG9ncyxsaW5lIDM5MFwiKVxuICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBzZXQxXG4gICAgICAgIHwgU29tZSBlbHQgLT4gam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgZWx0IGxlZnQyKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKGVtcHR5LCBmYWxzZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsIHNldF92YWwgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdCwgdHJ1ZSwgcmlnaHQpXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodHJpZ2h0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodGxlZnQgc2V0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0cmlnaHQsIGJvb2wsIHJpZ2h0cmlnaHQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnRsZWZ0ID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHNldF92YWwgbGVmdHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0KVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbWVyZ2UgbGVmdCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0JyA9IHJlbW92ZSB2YWx1ZSBsZWZ0IGluXG4gICAgICAgICAgaWYgbGVmdCA9PSBsZWZ0JyB0aGVuXG4gICAgICAgICAgICBzZXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBiYWxhbmNlIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCByaWdodCcgPSByZW1vdmUgdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBpZiByaWdodCA9PSByaWdodCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgc2V0IC0+IGVycm9yLCBmYWxzZSwgc2V0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWVfc2V0LCByaWdodCwgXywgXykgYXMgc2V0IC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID0gbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHJpZ2h0IGluXG4gICAgICAgICAgZXJyb3IsIHRydWUsIHNldFxuICAgICAgICApIGVsc2UgaWYgYyA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDQ1NFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlX3NldCByaWdodFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCByaWdodCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NjdcIilcbiAgICAgICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgdmFsdWVfc2V0IHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHNldFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgc2V0XG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA0ODFcIlxuICAgICAgICAgICAgICBeIFwiQXR0ZW1wdCB0byByZW1vdmUgYW4gZWx0IHRoYXQgZG9lcyBub3QgZXhpc3RcIikpXG4gICAgICAgICAgICBOb3RfZm91bmQsXG4gICAgICAgICAgc2V0IClcblxuICAgIGxldCByZWMgc3BsaXQgc3BsaXRfdmFsdWUgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgc3BsaXRfdmFsdWUgc2V0X3ZhbHVlIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBsZWZ0LCB0cnVlLCByaWdodFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRsZWZ0ID0gc3BsaXQgc3BsaXRfdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGxldCByaWdodHJpZ2h0ID0gam9pbiByaWdodGxlZnQgc2V0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0ID0gc3BsaXQgc3BsaXRfdmFsdWUgcmlnaHQgaW5cbiAgICAgICAgICBsZXQgbGVmdGxlZnQgPSBqb2luIGxlZnQgc2V0X3ZhbHVlIGxlZnRyaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGQgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsZWZ0MiwgXywgcmlnaHQyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgICBsZXQgcmlnaHQnID0gdW5pb24gcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW5cbiAgICAgICAgICBhZGQgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIGxldCBsZWZ0JyA9IHVuaW9uIGxlZnQxIGxlZnQyIGluXG4gICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICBqb2luIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludF91bmlvbiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gU29tZSBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gU29tZSBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuIChcbiAgICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICAgIGlmIG91dCA9PSBzZXQxIHRoZW5cbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBtYXRjaCBkaXNqb2ludF91bmlvbiBsZWZ0MSBsZWZ0MiwgZGlzam9pbnRfdW5pb24gcmlnaHQxIHJpZ2h0MiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0JylcbiAgICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIGhlaWdodDEgPSAxIHRoZW4gKFxuICAgICAgICAgIGxldCBvdXQgPSBhZGQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgICBpZiBzZXQyID09IG91dCB0aGVuXG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIF8sIHJpZ2h0MSA9IHNwbGl0IHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgIHwgU29tZSBsZWZ0JywgU29tZSByaWdodCcgLT4gU29tZSAoam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnKVxuICAgICAgICAgIHwgXywgXyAtPiBOb25lXG4gICAgICAgIClcblxuICAgIGxldCByZWMgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBoZWlnaHQyLCBfKSApIC0+XG4gICAgICAgIGlmIGhlaWdodDEgPiBoZWlnaHQyIHRoZW5cbiAgICAgICAgICBpZiBoZWlnaHQyID0gMSB0aGVuXG4gICAgICAgICAgICBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIF8sIHJpZ2h0MikgPVxuICAgICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIF8sIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgc2V0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUyIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHcgcCBlIHMgcydcbiAgICBsZXQgZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIHcgcCBlIHMgcycgPSB1bmlvbl9nZW4gYWRkX3dpdGhfbG9ncyB3IHAgZSBzIHMnXG5cbiAgICBsZXQgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgY29uY2F0IGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGxlZnQnID0gZiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgbGV0IHJpZ2h0JyA9IGYgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG5cbiAgICBsZXQgcmVjIGludGVyIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgaW50ZXJcblxuICAgIGxldCBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuXG4gICAgbGV0IHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgZXJyb3IsIGxlZnQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gZiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGNvbmNhdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgbWgnLCB0cmlwbGUyID0gc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBtaCcgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMlxuICAgICAgICAgIGludGVyX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBkaWZmIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgZGlmZlxuXG4gICAgbGV0IHJlYyBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRyaXBsZTIgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDJcbiAgICAgICAgaW5cbiAgICAgICAgc3V0dXJlX25vdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpXG4gICAgICAgICAgdHJpcGxlMiBkaWZmX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtaW51cyBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBzZXQxXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZV9ub3QgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSkgdHJpcGxlMiBtaW51c1xuXG4gICAgbGV0IHJlYyBtaW51c193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgbWludXNfd2l0aF9sb2dzXG5cbiAgICBsZXQgcmVjIG1lbSBzZWFyY2hlZF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNlYXJjaGVkX3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBjID09IDBcbiAgICAgICAgfHwgbWVtIHNlYXJjaGVkX3ZhbHVlXG4gICAgICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCBmaWx0ZXIgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGQgdmFsdWUgYWNjdVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IGVtcHR5IHNldFxuXG4gICAgbGV0IGZpbHRlcl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1IHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0gYWNjdSBpblxuICAgICAgICAgIGZpbHRcbiAgICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsaXN0XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjdSlcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIGZpbHQgKGVycm9yLCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHQsIGYpIGFzIGFjY3UpID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBwYXJ0XG4gICAgICAgICAgICAocGFydFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIHQsIGZcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB0LCBhZGQgdmFsdWUgZilcbiAgICAgICAgICAgICAgIGxlZnQpXG4gICAgICAgICAgICByaWdodFxuICAgICAgaW5cbiAgICAgIHBhcnQgKGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICBsZXQgcGFydGl0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcCBzZXQgPVxuICAgICAgbGV0IHJlYyBwYXJ0ICgocmgsIHQsIGYpIGFzIGFjY3UpIHNldCA9XG4gICAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyByaCB2YWx1ZSB0IGluXG4gICAgICAgICAgICAgICAgICBhLCBiLCBmXG4gICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBjID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgZiBpblxuICAgICAgICAgICAgICAgICAgYSwgdCwgY1xuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlcnJvciwgZW1wdHksIGVtcHR5KSBzZXRcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gZW51bSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW51bVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgY29uc19lbnVtIChNb3JlICh2YWx1ZSwgcmlnaHQsIGVudW0pKSBsZWZ0XG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBlMSByMSkgKGNvbnNfZW51bSBlMiByMilcblxuICAgIGxldCBjb21wYXJlIHNldDEgc2V0MiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIEVuZCBzZXQxKSAoY29uc19lbnVtIEVuZCBzZXQyKVxuXG4gICAgbGV0IGVxdWFsIHNldDEgc2V0MiA9IGNvbXBhcmUgc2V0MSBzZXQyID09IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChsZWZ0MiwgdmFsdWUyLCByaWdodDIsIF8sIF8pICkgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZTEgdmFsdWUyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBzdWJzZXQgbGVmdDEgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSByaWdodDJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IChub2RlIGxlZnQxIHZhbHVlMSBlbXB0eSkgbGVmdDIgJiYgc3Vic2V0IHJpZ2h0MSBzZXQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzdWJzZXQgKG5vZGUgZW1wdHkgdmFsdWUxIHJpZ2h0MSkgcmlnaHQyICYmIHN1YnNldCBsZWZ0MSBzZXQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYgdmFsdWUgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzZXQgYWNjdSA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiB2YWx1ZSAoZm9sZCBmIGxlZnQgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfaW52IGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX2ludiBmIGwgKGYgdiAoZm9sZF9pbnYgZiByIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgJiYgZm9yX2FsbCBwIGxlZnQgJiYgZm9yX2FsbCBwIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCB2YWx1ZSB8fCBleGlzdHMgcCBsZWZ0IHx8IGV4aXN0cyBwIHJpZ2h0XG5cbiAgICBsZXQgZWxlbWVudHMgc2V0ID1cbiAgICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGVsZW1lbnRzX2F1eCAodmFsdWUgOjogZWxlbWVudHNfYXV4IGFjY3UgcmlnaHQpIGxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50c19hdXggW10gc2V0XG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IGF1eF9wcmludCByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYUBdXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXSxAICVhXCIgYXV4X3ByaW50IGxlZnQgT3JkLnByaW50IGtleVxuICAgICAgICAgIGF1eF9wcmludCByaWdodFxuXG4gICAgbGV0IHByaW50IGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIGFzIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbeyVhfUBdXCIgYXV4X3ByaW50IG1cblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbGVmdFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgcmlnaHQsIF8sIF8pIC0+IG1heF9lbHQgcmlnaHRcblxuICAgIGxldCBjaG9vc2UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcblxuICAgIGxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgICAgICBpZiBhaW1fYWNjID49IGFjYyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgYWNjX2wgPSBzaXplIGwgaW5cbiAgICAgICAgICBsZXQgYWNjX3IgPSBzaXplIHIgaW5cbiAgICAgICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgYWltX2FjYyBsXG4gICAgICAgICAgZWxzZSBpZiBhY2NfciArIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgICAgICBmaW5kX2FjYyAoYWltX2FjYyAtIGFjY19sKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU29tZSBrZXlcbiAgICAgICAgKVxuXG4gICAgKCogbGV0IHJlYyBmaW5kX2FjYyBrIG0gPVxuICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIGtleSwgciwgXywgXykgLT5cbiAgICAgICAgICAgIGxldCBzID0gc2l6ZSBsIGluXG4gICAgICAgICAgICBpZiBrIDwgcyB0aGVuIGZpbmRfYWNjIGsgbFxuICAgICAgICAgICAgICBlbHNlIGlmIGsgPSBzIHRoZW4gU29tZSBrZXlcbiAgICAgICAgICAgICAgZWxzZSBmaW5kX2FjYyAoayAtIHMgLSAxKSByICopXG5cbiAgICBsZXQgcmFuZG9tIHJzIG0gPVxuICAgICAgbGV0IHMgPSBzaXplIG0gaW5cbiAgICAgIGlmIHMgPSAwIHRoZW5cbiAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX2FjYyAoUmFuZG9tLlN0YXRlLmludCBycyAoc2l6ZSBtKSkgbVxuXG4gICAgKCogbGV0IGFkZCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBhZGRfd2l0aF9sb2dzXG4gICAgICAgbGV0IHNwbGl0ID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHNwbGl0X3dpdGhfbG9nc1xuICAgICAgIGxldCByZW1vdmUgPSAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHJlbW92ZV93aXRoX2xvZ3NcbiAgICAgICBsZXQgdW5pb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gdW5pb25fd2l0aF9sb2dzXG4gICAgICAgbGV0IGludGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGludGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBkaWZmID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGRpZmZfd2l0aF9sb2dzXG4gICAgICAgbGV0IG1pbnVzID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIG1pbnVzX3dpdGhfbG9nc1xuICAgICAgIGxldCBmaWx0ZXIgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZmlsdGVyX3dpdGhfbG9nc1xuICAgICAgIGxldCBwYXJ0aXRpb24gPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIHBhcnRpdGlvbl93aXRoX2xvZ3NcbiAgICAqKVxuICBlbmRcblxuICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIE1hcCBpbXBsZW1lbnRhdGlvbiopXG5cbiAgbW9kdWxlIE1hcCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlICsnZGF0YSB0ID0gcHJpdmF0ZVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIHZhbCBlbXB0eSA6ICdhIHRcbiAgICAgIHZhbCBoZWlnaHQgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICAgICAgdmFsIG5vZGUgOiAnYSB0IC0+IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKydkYXRhIHQgPVxuICAgICAgICB8IEVtcHR5XG4gICAgICAgIHwgTm9kZSBvZiAnZGF0YSB0ICogZWx0ICogJ2RhdGEgKiAnZGF0YSB0ICogaW50ICogaW50XG5cbiAgICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoLCBfKSAtPiBoXG5cbiAgICAgIGxldCBzaXplID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgXywgcykgLT4gc1xuXG4gICAgICBsZXQgbm9kZSBsZWZ0IGtleTAgZGF0YSByaWdodCA9XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICAgIGxldCBociA9IGhlaWdodCByaWdodCBpblxuICAgICAgICBOb2RlXG4gICAgICAgICAgKCBsZWZ0LFxuICAgICAgICAgICAga2V5MCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICgxXG4gICAgICAgICAgICArXG4gICAgICAgICAgICBpZiBobCA+IGhyIHRoZW5cbiAgICAgICAgICAgICAgaGxcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgaHIpLFxuICAgICAgICAgICAgMSArIHNpemUgbGVmdCArIHNpemUgcmlnaHQgKVxuICAgIGVuZFxuXG4gICAgdHlwZSArJ2EgdCA9ICdhIFByaXZhdGUudFxuXG4gICAgbGV0IGVtcHR5ID0gUHJpdmF0ZS5lbXB0eVxuICAgIGxldCBoZWlnaHQgPSBQcml2YXRlLmhlaWdodFxuICAgIGxldCBzaXplID0gUHJpdmF0ZS5zaXplXG4gICAgbGV0IG5vZGUgPSBQcml2YXRlLm5vZGVcblxuICAgIHR5cGUgc2V0ID0gU2V0LnRcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJvb3QgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChfLCB4LCBkLCBfLCBfLCBfKSAtPiBTb21lICh4LCBkKVxuXG4gICAgbGV0IHJlYyBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgaywgXywgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT4gU29tZSBrXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgXywgXywgbSwgXywgXykgLT4gbWF4X2tleSBtXG5cbiAgICBsZXQgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIGxldCBoZWlnaHRfbGVmdCA9IGhlaWdodCBsZWZ0IGluXG4gICAgICBsZXQgaGVpZ2h0X3JpZ2h0ID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODI4XCIpXG4gICAgICAgICgqIGhlaWdodF9sZWZ0ID4gaGVpZ2h0X3JpZ2h0ICsgMiA+PSAyICopXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MCwga2V5MCwgZGF0YTAsIHJpZ2h0MCwgXywgXykgLT5cbiAgICAgICAgICBpZiBoZWlnaHQgbGVmdDAgPj0gaGVpZ2h0IHJpZ2h0MCB0aGVuXG4gICAgICAgICAgICBub2RlIGxlZnQwIGtleTAgZGF0YTAgKG5vZGUgcmlnaHQwIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmlnaHQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4MzVcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IGxlZnQwIDwgaGVpZ2h0IHJpZ2h0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICAgICAgKG5vZGUgbGVmdDAga2V5MCBkYXRhMCBsZWZ0MSlcbiAgICAgICAgICAgICAgICBrZXkxIGRhdGExXG4gICAgICAgICAgICAgICAgKG5vZGUgcmlnaHQxIGtleSBkYXRhIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg0NFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0MCA+PSBoZWlnaHQgbGVmdDAgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IGtleSBkYXRhIGxlZnQwKSBrZXkwIGRhdGEwIHJpZ2h0MFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggbGVmdDAgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDg1MVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHQwIDwgaGVpZ2h0IGxlZnQwICopXG4gICAgICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MSkga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkwIGRhdGEwIHJpZ2h0MClcbiAgICAgICAgICApXG4gICAgICApIGVsc2VcbiAgICAgICAgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IGRhdGEgcmlnaHQgPVxuICAgICAgdHJ5IGVycm9yLCBiYWxhbmNlIGxlZnQga2V5IGRhdGEgcmlnaHRcbiAgICAgIHdpdGggRGVhZENvZGVJc05vdERlYWQgbG9jIC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChsb2MgXiBcIiBNYXAgaW52YXJpYW50IGlzIGJyb2tlbiwga2VlcCBvbiB3aXRoIHVuYmFsYW5jZWQgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYmFsYW5jZVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbm9kZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGFkZCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChhZGQga2V5IGRhdGEgbGVmdCkga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YV9tYXAgKGFkZCBrZXkgZGF0YSByaWdodClcblxuICAgIGxldCByZWMgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgbm9kZSBlbXB0eSBrZXkgZGF0YSBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGFfbWFwLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBmYWxzZSwgbm9kZSBsZWZ0IGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhX21hcCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIHJpZ2h0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICApXG5cbiAgICBsZXQgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSBtYXAgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBtYXAgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYSwgYiwgXywgXyA9IF9fUE9TX18gaW5cbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbCBcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChhIF4gXCIgbGluZTogXCIgXiBzdHJpbmdfb2ZfaW50IGJcbiAgICAgICAgICAgICAgXiBcIjogQXR0ZW1wdCB0byBhZGQgYW4gYXNzb2NpYXRpb24gb3ZlciBhIGZvcm1lciBvbmUgaW4gYSBtYXBcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLk1hcC5hZGRcIiksXG4gICAgICAgICAgbWFwIClcbiAgICAgIClcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZyBtYXAga2V5IGRhdGEgbWFwJyA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IChrZXksIGRhdGEpLCBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBtaW4sIGxlZnQnID0gZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MiBpblxuICAgICAgICBtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJ1xuXG4gICAgbGV0IHJlYyBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwIGtleSBkYXRhXG4gICAgICAgIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgKChrZXksIGRhdGEpLCBtYXAnKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIChtaW4sIGxlZnQnKSA9XG4gICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTJcbiAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgKG1pbiwgYmFsYW5jZSBsZWZ0JyBrZXkgZGF0YSBtYXAnKVxuXG4gICAgbGV0IG1lcmdlIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCAoa2V5MywgZGF0YTMpLCBsZWZ0JyA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWxhbmNlIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgbWFwMVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCAoKGtleTMsIGRhdGEzKSwgbGVmdCcpID1cbiAgICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICAgIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEga2V5MyBkYXRhMyBsZWZ0JylcblxuICAgIGxldCByZWMgcmVtb3ZlIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICBiYWxhbmNlIChyZW1vdmUga2V5IGxlZnQpIGtleV9tYXAgZGF0YSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0IGtleV9tYXAgZGF0YSAocmVtb3ZlIGtleSByaWdodClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGZhbHNlLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBtYXBcbiAgICAgICAgKSBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBib29sLCBsZWZ0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0JyA9PSBsZWZ0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NjFcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHJpZ2h0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiByaWdodCcgPT0gcmlnaHQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcIlNldE1hcCBsaW5lIDk3OFwiKVxuICAgICAgICAgICAgICAgICAgKGZhaWx3aXRoIFwiSW52YXJpYW50IGlzIGJyb2tlblwiKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0J1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgIGxldCByZW1vdmVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbWFwXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIGVycm9yLCBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgKCB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIChcIlNldE1hcCBsaW5lIDk5NFwiXG4gICAgICAgICAgICAgIF4gXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiXG4gICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlRyeSB0byByZW1vdmUgYW4gYXNzb2NpYXRpb24gdGhhdCBpcyBub3QgZGVmaW5lZCBpbiBNYXAucmVtb3ZlXCIpLFxuICAgICAgICAgIG1hcCApXG5cbiAgICBsZXQgcmVjIHBvcCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSBhcyBtIC0+IE5vbmUsIG1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSBhcyBtIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGQsIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHBvcCB4IGwgd2l0aFxuICAgICAgICAgIHwgKE5vbmUgYXMgbyksIF8gLT4gbywgbVxuICAgICAgICAgIHwgKFNvbWUgXyBhcyBvKSwgdCAtPiBvLCBiYWxhbmNlIHQgdiBkIHJcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCByIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSBsIHYgZCB0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgam9pbiBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSAxMDEzXCIpICgqIEJ5IGNhc2UgYW5hbHlzaXMgKilcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMiAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXAyXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSB2YWx1ZSByaWdodCA9XG4gICAgICBtYXRjaCBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgd2l0aFxuICAgICAgfCBlcnJvciwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgXCJNYXAuam9pbl93aXRoX2xvZ3MsIGxpbmUgOTg2LCB0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgIGJlIGVtcHR5XCIpXG4gICAgICAgICAgICAoZmFpbHdpdGggXCJ0aGUgb3V0cHV0IG9mIGJhbGFuY2Ugc2hvdWxkIG5vdCBiZSBlbXB0eVwiKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZW1wdHlcbiAgICAgIHwgZXJyb3IsIChQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSBhcyBtYXAyKSAtPlxuICAgICAgICBsZXQgaCA9IGhlaWdodCBsZWZ0MiAtIGhlaWdodCByaWdodDIgaW5cbiAgICAgICAgaWYgaCA+IDIgfHwgaCA8IC0yIHRoZW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMiByaWdodDJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCBtYXAyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlbXB0eSwgTm9uZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIHZhbHVlIGtleTEgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgbGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MVxuICAgICAgICBlbHNlIGlmIGNtcCA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgbGVmdDEgaW5cbiAgICAgICAgICBsZXQgcmlnaHQyJyA9IGpvaW4gcmlnaHQyIGtleTEgZGF0YTEgcmlnaHQxIGluXG4gICAgICAgICAgbGVmdDIsIGRhdGEyLCByaWdodDInXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUgcmlnaHQxIGluXG4gICAgICAgICAgbGV0IGxlZnQyJyA9IGpvaW4gbGVmdDEga2V5MSBkYXRhMSBsZWZ0MiBpblxuICAgICAgICAgIGxlZnQyJywgZGF0YTIsIHJpZ2h0MlxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgTm9uZSwgZW1wdHkpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCAobGVmdDEsIFNvbWUgZGF0YTEsIHJpZ2h0MSlcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MicpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQyJyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEga2V5MSBkYXRhMSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0MicsIGRhdGEyLCByaWdodDIpXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlmZiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmYgbGVmdDEgbGVmdDIgaW5cbiAgICAgICAgbGV0IG9yaWdodDEsIG9yaWdodDIgPSBkaWZmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyB1bmlvbiBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyID0gc3BsaXQgdmFsdWUxIG1hcDIgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbGVmdDEsIG9wX2RhdGExLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgbWFwMSBpblxuICAgICAgICAgIGpvaW4gKHVuaW9uIGxlZnQxIGxlZnQyKSB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgICh1bmlvbiByaWdodDEgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBtYXAyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIGRhdGExLCByaWdodDEsIGhlaWdodDEsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgZGF0YTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID49IGhlaWdodDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIG9wX2RhdGEyLCByaWdodDIpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MSwgb3BfZGF0YTEsIHJpZ2h0MSkgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTIgbWFwMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZTFcbiAgICAgICAgICAgIChtYXRjaCBvcF9kYXRhMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBkMSlcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZSBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodXBkYXRlIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICAodXBkYXRlIHJpZ2h0MSByaWdodDIpXG4gICAgICApXG5cbiAgICBsZXQgcmVjIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBpZiBtYXAxID09IG1hcDIgdGhlblxuICAgICAgICBlcnJvciwgbWFwMlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTFcbiAgICAgICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBkMilcbiAgICAgICAgICAgIHJpZ2h0J1xuICAgICAgKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWQgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIGxldCBvbGVmdDEsIG9sZWZ0MiA9IGRpZmZfcHJlZCBwcmVkIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZl9wcmVkIHByZWQgcmlnaHQxIHJpZ2h0MiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPiBtZXJnZSBvbGVmdDEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBqb2luIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgfCBOb25lIC0+IGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgbWVyZ2Ugb2xlZnQyIG9yaWdodDIpXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIGRhdGEsIF8sIF8sIF8pIC0+IFNvbWUgKGtleSwgZGF0YSlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgZmluZF9vcHRpb24ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX2RlZmF1bHQgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdCBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJsaW5lIDY1OVwiKSBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBTb21lIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfb3B0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NjlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZGF0YVxuICAgICAgICBlbHNlXG4gICAgICAgICAgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlciBlcnJvciBkIGtleVxuICAgICAgICAgICAgKGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHJpZ2h0KVxuXG4gICAgbGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIF8sIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgY21wID09IDBcbiAgICAgICAgfHxcbiAgICAgICAgaWYgY21wID4gMCB0aGVuXG4gICAgICAgICAgbWVtIGtleSByaWdodFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWVtIGtleSBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbHRlcl9vbmUgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBpZiBwIGtleSB2YWx1ZSB0aGVuXG4gICAgICAgICAgU29tZSAoa2V5LCB2YWx1ZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZmlsdGVyX29uZSBwIGxlZnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfb25lIHAgcmlnaHRcbiAgICAgICAgICB8IG91dCAtPiBvdXRcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0ICgpID0gaXRlciBmIGxlZnQgaW5cbiAgICAgICAgbGV0ICgpID0gZiBrZXkgZGF0YSBpblxuICAgICAgICBpdGVyIGYgcmlnaHRcblxuICAgIGxldCByZWMgZm9sZCBmIG1hcCB2YWx1ZSA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgZm9sZCBmIHJpZ2h0IChmIGtleSBkYXRhIChmb2xkIGYgbGVmdCB2YWx1ZSkpXG5cbiAgICBsZXQgcmVjIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IG91dHB1dGwgPSBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgaW50ZXJydXB0ZWQsIHZhbHVlID0gb3V0cHV0bCBpblxuICAgICAgICBpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgb3V0cHV0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgbGV0IHZhbF9vcHQgPVxuICAgICAgICAgICAgICAgIHRyeSBTb21lIChmIGtleSBkYXRhIHZhbHVlKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHZhbF9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZSwgU3RvcC5zdWNjZXNzIHZhbHVlXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgcmlnaHQgdilcbiAgICAgICAgICAgICAgICAgIChmdW4gdiAtPiBmYWxzZSwgU3RvcC5zdG9wIHYpXG4gICAgICAgICAgICAgICAgICB2KVxuICAgICAgICAgICAgKGZ1biB4IC0+IGZhbHNlLCBTdG9wLnN0b3AgeClcbiAgICAgICAgICAgIHZhbHVlXG5cbiAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIG1hcCB2YWx1ZSA9XG4gICAgICBzbmQgKGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUpXG5cbiAgICBsZXQgcmVjIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnIsIHZhbHVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycicsIHZhbHVlJyA9IG1vbmFkaWNfZm9sZCBwYXJhbSBlcnIgZiBsZWZ0IHZhbHVlIGluXG4gICAgICAgIGxldCBlcnInJywgdmFsdWUnJyA9IGYgcGFyYW0gZXJyJyBrZXkgZGF0YSB2YWx1ZScgaW5cbiAgICAgICAgbW9uYWRpY19mb2xkIHBhcmFtIGVycicnIGYgcmlnaHQgdmFsdWUnJ1xuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgcmggaCBtYXAyIHJlc1xuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGcgbWFwMSByZXNcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZyBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPSBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBnIGggbGVmdDEgbGVmdDIgcmVzIGluXG4gICAgICAgICAgbGV0IHJoJycsIHJlcycnID0gZiBwYXJhbWV0ZXJzIHJoJyBrZXkxIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmgnJyBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIGxldCBpZCBfIHggXyBfIHkgPSB4LCB5IGluXG4gICAgICBtb25hZGljX2ZvbGQyIHBhcmFtZXRlcnMgcmggZiBpZCBpZCBtYXAxIG1hcDIgcmVzXG5cbiAgICBsZXQgbW9uYWRpY19pdGVyMl9zcGFyc2UgcGFyYW1ldGVycyByaCBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgbW9uYWRpY19mb2xkMl9zcGFyc2UgcGFyYW1ldGVycyByaFxuICAgICAgICAgIChmdW4gcCBlIGsgYSBiICgpIC0+IGYgcCBlIGsgYSBiLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIHNldCBtYXAgcmVzID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5IC0+IHJoLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGxlZnQyLCBkYXRhMiwgcmlnaHQyID0gc3BsaXQga2V5MSBtYXAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHJoJywgcmVzJyA9XG4gICAgICAgICAgICBtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24gcGFyYW1ldGVycyByaCBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnIGYgcmlnaHQxIHJpZ2h0MiByZXMnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmgnJyBmIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBub2RlIChtYXBpIGYgbGVmdCkga2V5IChmIGtleSBkYXRhKSAobWFwaSBmIHJpZ2h0KVxuXG4gICAgbGV0IG1hcCBmIHMgPSBtYXBpIChmdW4gXyB4IC0+IGYgeCkgc1xuXG4gICAgbGV0IHJlYyBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBtYXAgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvcnMsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPSBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBsZWZ0IGluXG4gICAgICAgIGxldCBlcnJvcnMsIGRhdGEnID0gZiBwYXJhbWV0ZXJzIGVycm9ycyBkYXRhIGluXG4gICAgICAgIGxldCBlcnJvciwgcmlnaHQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgcmlnaHQgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCcga2V5IGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBtYXAyIGYgbWFwIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAnXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwJyBpblxuICAgICAgICBqb2luIChtYXAyIGYgbGVmdDEgbGVmdDIpIGtleTFcbiAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBmIGRhdGExIGQyKVxuICAgICAgICAgIChtYXAyIGYgcmlnaHQxIHJpZ2h0MilcblxuICAgIGxldCByZWMgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBnIG1hcDIpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3JzLCBsZWZ0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIGcgaCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZGF0YScgPVxuICAgICAgICAgIG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGRhdGExXG4gICAgICAgICAgfCBTb21lIGQyIC0+IGggcGFyYW1ldGVycyBlcnJvcnMgZGF0YTEgZDJcbiAgICAgICAgaW5cbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIGtleTEgZGF0YScgcmlnaHQnXG5cbiAgICBsZXQgbWFwMnpfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgPVxuICAgICAgbWFwMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yc1xuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI0OCwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gbWFwMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuXG4gICAgbGV0IHJlYyBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIGVycm9yIGcgbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBoIHBhcmFtZXRlcnMgZXJyb3IgKGtleTEgOiBlbHQpIGRhdGExIGRhdGEyIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgPVxuICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG4gICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBfIF8gYSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgICAoU29tZSBcImxpbmUgMTI1MSwgaW5jb21wYXRpYmxlIG1hcHMgaW4gZm9sZDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGl0ZXIyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyID1cbiAgICAgIGxldCBlcnJvciwgXyA9XG4gICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXIgZXJyIGEgYiBjIF8gLT4gZiBwYXIgZXJyIGEgYiBjLCAoKSlcbiAgICAgICAgICBtYXAxIG1hcDIgKClcbiAgICAgIGluXG4gICAgICBlcnJvclxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIGtleSBkYXRhICYmIGZvcl9hbGwgcCByaWdodCAmJiBmb3JfYWxsIHAgbGVmdFxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgLT4gY29uc19lbnVtIGwgKE1vcmUgKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGNvbXBhcmVcbiAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICBpZiBjbXAgeCB5IHRoZW5cbiAgICAgICAgICAgIDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAxKVxuICAgICAgICBtMSBtMlxuICAgICAgPT0gMFxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+XG4gICAgICAgIGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID0gYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCByZWMgYXV4X3ByaW50IHByIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS0+QCwlYUBdXCIgT3JkLnByaW50IGtleSBwciBkYXRhXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPiVhQF0sQCAlYVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YSAoYXV4X3ByaW50IHByKVxuICAgICAgICAgIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCBQcml2YXRlLkVtcHR5LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdXCIgKGF1eF9wcmludCBwcikgbGVmdCBPcmQucHJpbnQga2V5IHByXG4gICAgICAgICAgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWEtPiVhQF0sQCAlYVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50XG4gICAgICAgICAga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcikgcmlnaHRcblxuICAgIGxldCBwcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIChhdXhfcHJpbnQgcHIpIG1cblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvcmlnaHQxLCBvcmlnaHQyID1cbiAgICAgICAgICBkaWZmX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHggPSBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgZW1wdHksIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwMlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9sZWZ0MSwgb2xlZnQyID1cbiAgICAgICAgICBkaWZmX3ByZWRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwcmVkIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCByaWdodDEgcmlnaHQyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4gcHJlZCB4IGRhdGExIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzIpXG5cbiAgICBsZXQgcmVjIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgIGVycm9yIGYgZyBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQsIG1hcCB3aXRoXG4gICAgICB8IFNldC5Qcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCByZXNcbiAgICAgIHwgU2V0LlByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgbWFwXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZyBrZXkxIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgIGVycm9yIGYgZyBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJycgPSBmIGtleTEgZGF0YTIgKGVycm9yLCByZXMnKSBpblxuICAgICAgICAgIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBlcnJvciBmIGcgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBzZXQgbWFwIHJlcyA9XG4gICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICBmXG4gICAgICAgIChmdW4gXyB4IC0+IHgpXG4gICAgICAgIHNldCBtYXAgcmVzXG5cbiAgICBsZXQgdG9fanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIikgPVxuICAgICAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmZvbGRcblxuICAgIGxldCBvZl9qc29uID8obGFiX2tleSA9IFwia2V5XCIpID8obGFiX3ZhbHVlID0gXCJ2YWx1ZVwiKVxuICAgICAgICA/KGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcIm1hcFwiKSA9XG4gICAgICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXkgfmxhYl92YWx1ZSB+ZXJyb3JfbXNnIH5hZGQgfmVtcHR5XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT4gJ2IgLT4gKCdiIC0+ICdhIC0+ICdiKSAtPiAnYSBtYXBfYSAtPiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX21hcF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2JcblxuICB2YWwgcHJval9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6IChlbHRfYSAtPiBlbHRfYikgLT4gc2V0X2EgLT4gc2V0X2EgbWFwX2JcblxuICB2YWwgcGFydGl0aW9uX3NldF9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0X2EgLT4gJ21ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgc2V0X2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiBzZXRfYSBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qIChBIDogUykgKEIgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgKG1lcmdlIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKSBkYXRhX2EpXG4gICAgICAgICAgbWFwX2IpXG4gICAgICBtYXAgTUIuZW1wdHlcblxuICBsZXQgcHJval9tYXBfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIGlkZW50aXR5X2VsdCBtb25hZGljX21lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbW9uYWRpY19tZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1CLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2IgbWFwX2IpXG4gICAgICAgICAgICBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgTUIuYWRkIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBzZXRfYSA9IFNBLmZvbGQgKGZ1biBrZXlfYSAtPiBTQi5hZGQgKGYga2V5X2EpKSBzZXRfYSBTQi5lbXB0eVxuXG4gIGxldCBwcm9qX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIHNldF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgIGhhbmRsZXIsIFNCLmFkZCBrZXlfYiBzZXRfYilcbiAgICAgIHNldF9hIChoYW5kbGVyLCBTQi5lbXB0eSlcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIG1hcF9iIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpIG1hcF9iKVxuICAgICAgc2V0X2EgTUIuZW1wdHlcblxuICBsZXQgcGFydGl0aW9uX3NldF9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGhhbmRsZXIsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgaGFuZGxlciwga2V5X2IgPSBmIHBhcmFtZXRlciBoYW5kbGVyIGtleV9hIGluXG4gICAgICAgICggaGFuZGxlcixcbiAgICAgICAgICBNQi5hZGQga2V5X2JcbiAgICAgICAgICAgIChTQS5hZGQga2V5X2EgKE1CLmZpbmRfZGVmYXVsdCBTQS5lbXB0eSBrZXlfYiBtYXBfYikpXG4gICAgICAgICAgICBtYXBfYiApKVxuICAgICAgc2V0X2EgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4oKiB0b2RvOiBhZGQgdGhlIGZvbGxvd2luZyAgdGVzdCB0byB0aGUgc2FuaXR5IHRlc3RzICopXG5cbigqXG4oKiBmb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgY29kZTogKilcblxubW9kdWxlIEludE1hcCA9IE1ha2Uoc3RydWN0IHR5cGUgdCA9IGludCBsZXQgY29tcGFyZSA9IGNvbXBhcmUgZW5kKVxubW9kdWxlIFAgPSBQcm9qKEludE1hcCkoSW50TWFwKVxuXG5cbmxldCBmID0gTGlzdC5mb2xkX2xlZnRcbihmdW4gbWFwIChhLGIpIC0+IEludE1hcC5NYXAuYWRkIGEgYiBtYXApXG5JbnRNYXAuTWFwLmVtcHR5XG5bMSxbMjszXTsyLFszOzRdOzUsWzY7N107OCxbMTI7MTNdXVxuXG4oKiBiYWQgaW1wbGVtZW50YXRpb24gKHF1YWRyYXRpYyB0aW1lIGNvbXBsZXhpdHkpICopXG5sZXQgZyA9IFAucHJvaiAoZnVuIGkgLT4gaSBtb2QgMikgW10gKExpc3QuYXBwZW5kKSBmXG5cbigqIGdvb2QgaW1wbGVtZW50YXRpb24gKGxpbmVhciB0aW1lIGNvbXBsZXhpdHkpKilcbmxldCBnJyA9IEludE1hcC5NYXAubWFwIExpc3QucmV2IChQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChmdW4geCB5IC0+IExpc3QuYXBwZW5kIChMaXN0LnJldiB5KSB4KSBmKVxuXG5cbmxldCBkdW1wIChzOnN0cmluZykgZiA9XG4gIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJXM6IFxcblwiIHMgaW5cbiAgbGV0IF8gPSBJbnRNYXAuTWFwLml0ZXJcbihmdW4gYSBsIC0+XG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiAgJWk6XCIgYSBpblxubGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLFwiKSBsIGluXG5sZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIlxcblwiIGluICgpKVxuZiBpblxuICAoKVxubGV0IF8gPSBkdW1wIFwiZlwiIGZcbmxldCBfID0gZHVtcCBcImdcIiBnXG5sZXQgXyA9IGR1bXAgXCJnJ1wiIGcnXG5cbigqIHNob3VsZCBkdW1wOiAqKVxuKCpcblxuZjpcbiAgMToyLDMsXG4gIDI6Myw0LFxuICA1OjYsNyxcbiAgODoxMiwxMyxcbmc6XG4gIDA6Myw0LDEyLDEzLFxuICAxOjIsMyw2LDcsXG4gKilcbiAqKVxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gJ2IgLT4gJ2EgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYyBtYXBfYlxuZW5kXG5cbm1vZHVsZSBQcm9qMiAoQSA6IFMpIChCIDogUykgKEMgOiBTKSA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIGxldCBrZXlfYyA9IGcga2V5X2EgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9IE1CLmZpbmRfZGVmYXVsdCBNQy5lbXB0eSBrZXlfYiBtYXBfYiBpblxuICAgICAgICBsZXQgc3VibWFwID1cbiAgICAgICAgICBNQy5hZGQga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSAoTUMuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXApIGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2oyX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQy5hZGQga2V5X2MgZGF0YScgc3VibWFwIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGhhbmRsZXIsIE1CLmVtcHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW50X2NvbXBhcmUgKHggOiBpbnQpIHkgPSBTdGRsaWIuY29tcGFyZSB4IHlcblxubGV0IGludF9wYWlyX2NvbXBhcmUgKHAsIHEpIChwJywgcScpID1cbiAgbGV0IG8gPSBpbnRfY29tcGFyZSBwIHAnIGluXG4gIGlmIG8gPSAwIHRoZW5cbiAgICBpbnRfY29tcGFyZSBxIHEnXG4gIGVsc2VcbiAgICBvXG5cbmxldCBzdHJpbmdfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gU3RyaW5nLmNvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgU3RyaW5nLmNvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgcGFpcl9lcXVhbCBlcWEgZXFiICh4YSwgeGIpICh5YSwgeWIpID0gZXFhIHhhIHlhICYmIGVxYiB4YiB5YlxuXG5tb2R1bGUgU3RyaW5nU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmVuZClcblxubW9kdWxlIFN0cmluZ1NldCA9IFN0cmluZ1NldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdNYXAgPSBTdHJpbmdTZXRNYXAuTWFwXG5cbm1vZHVsZSBTdHJpbmcyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmdcblxuICBsZXQgY29tcGFyZSA9IHN0cmluZ19wYWlyX2NvbXBhcmVcbiAgbGV0IHByaW50IGYgKGEsIGIpID0gRm9ybWF0LmZwcmludGYgZiBcIiglcywgJXMpXCIgYSBiXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmcyTWFwID0gU3RyaW5nMlNldE1hcC5NYXBcblxubW9kdWxlIEludFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBJbnRTZXQgPSBJbnRTZXRNYXAuU2V0XG5tb2R1bGUgSW50TWFwID0gSW50U2V0TWFwLk1hcFxuXG5tb2R1bGUgSW50MlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50ICogaW50XG5cbiAgbGV0IGNvbXBhcmUgPSBpbnRfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWksICVpKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgSW50MlNldCA9IEludDJTZXRNYXAuU2V0XG5tb2R1bGUgSW50Mk1hcCA9IEludDJTZXRNYXAuTWFwXG5cbm1vZHVsZSBDaGFyU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IEZvcm1hdC5wcF9wcmludF9jaGFyXG5lbmQpXG5cbm1vZHVsZSBDaGFyU2V0ID0gQ2hhclNldE1hcC5TZXRcbm1vZHVsZSBDaGFyTWFwID0gQ2hhclNldE1hcC5NYXBcbm1vZHVsZSBEeW5BcnJheSA9IER5bmFtaWNBcnJheS5EeW5BcnJheSAoTGFyZ2VBcnJheSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1bnNvbWUgZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSBhIC0+IGFcblxubGV0IHVuc29tZV9vcl9yYWlzZVxuICAgID8oZXhjZXAgPSBJbnZhbGlkX2FyZ3VtZW50IFwidW5zb21lX29yX3JhaXNlIHdhcyBwYXNzZWQgYSBOb25lXCIpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHJhaXNlIGV4Y2VwXG4gIHwgU29tZSBhIC0+IGFcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgYmluZCBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIG8gLT4gZiBvXG5cbmxldCBmb2xkIGYgeCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB4XG4gIHwgU29tZSB5IC0+IGYgeCB5XG5cbmxldCBlcXVhbCBlcSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcSB4IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcG9zaXRpb24gPSB7IGNocjogaW50OyBsaW5lOiBpbnQgfVxudHlwZSB0ID0geyBmaWxlOiBzdHJpbmc7IGZyb21fcG9zaXRpb246IHBvc2l0aW9uOyB0b19wb3NpdGlvbjogcG9zaXRpb24gfVxudHlwZSAnYSBhbm5vdGVkID0gJ2EgKiB0XG5cbmxldCB2ICh2LCBfKSA9IHZcbmxldCBnZXRfYW5ub3QgKF8sIGFubm90KSA9IGFubm90XG5sZXQgY29weV9hbm5vdCAoXywgbG9jKSBhID0gYSwgbG9jXG5sZXQgbWFwX2Fubm90IGYgKGEsIGxvYykgPSBmIGEsIGxvY1xuXG5sZXQgb2ZfcG9zIHN0YXJ0X2xvY2F0aW9uIGVuZF9sb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgYXNzZXJ0IChzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWUpXG4gIGluXG4gIHtcbiAgICBmaWxlID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19jbnVtIC0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBzdGFydF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICAgIHRvX3Bvc2l0aW9uID1cbiAgICAgIHtcbiAgICAgICAgY2hyID0gZW5kX2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2JvbDtcbiAgICAgICAgbGluZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2xudW07XG4gICAgICB9O1xuICB9XG5cbmxldCBkdW1teV9wb3NpdGlvbiA9XG4gIHtcbiAgICBjaHIgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfY251bSAtIExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19ib2w7XG4gICAgbGluZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19sbnVtO1xuICB9XG5cbmxldCBkdW1teSA9XG4gIHtcbiAgICBmaWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lO1xuICAgIGZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGR1bW15X3Bvc2l0aW9uO1xuICB9XG5cbmxldCBhbm5vdF93aXRoX2R1bW15IHggPSB4LCBkdW1teVxuXG5sZXQgaXNfZHVtbXkgbG9jID1cbiAgbG9jLmZpbGUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWVcbiAgJiYgbG9jLmZyb21fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuICAmJiBsb2MudG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvblxuXG5sZXQgaXNfYW5ub3RlZF93aXRoX2R1bW15IChfLCBsb2MpID0gaXNfZHVtbXkgbG9jXG5cbmxldCBwcmludCBmIGxvYyA9XG4gIGxldCBwcl9mIGYgPVxuICAgIGlmIGxvYy5maWxlIDw+IFwiXCIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiRmlsZSBcXFwiJXNcXFwiLCBcIiBsb2MuZmlsZVxuICBpblxuICBsZXQgcHJfbCBmID1cbiAgICBpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lID0gbG9jLnRvX3Bvc2l0aW9uLmxpbmUgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmUgJWlcIiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcImxpbmVzICVpLSVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZSBsb2MudG9fcG9zaXRpb24ubGluZVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXQldCwgY2hhcmFjdGVycyAlaS0laTpcIiBwcl9mIHByX2wgbG9jLmZyb21fcG9zaXRpb24uY2hyXG4gICAgbG9jLnRvX3Bvc2l0aW9uLmNoclxuXG5sZXQgdG9fc3RyaW5nIGxvYyA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50IGxvY1xubGV0IHByaW50X2Fubm90ZWQgcHIgZiAoeCwgbCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWFAICVhXCIgcHJpbnQgbCBwciB4XG5cbmxldCByZWFkX3Bvc2l0aW9uIHAgbGIgPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIgd2l0aFxuICB8IGBBc3NvYyBbIChcImxpbmVcIiwgYEludCBsaW5lKTsgKFwiY2hyXCIsIGBJbnQgY2hyKSBdXG4gIHwgYEFzc29jIFsgKFwiY2hyXCIsIGBJbnQgY2hyKTsgKFwibGluZVwiLCBgSW50IGxpbmUpIF0gLT5cbiAgICB7IGxpbmU7IGNociB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHBvc2l0aW9uXCIsIHgpKVxuXG5sZXQgd3JpdGVfcG9zaXRpb24gb2IgeyBsaW5lOyBjaHIgfSA9XG4gIFlvanNvbi53cml0ZV9hc3NvYyBvYiBbIFwibGluZVwiLCBgSW50IGxpbmU7IFwiY2hyXCIsIGBJbnQgY2hyIF1cblxubGV0IHRvX2NvbXBhY3RfeW9qc29uIGRlY2xzIGxvYyA9XG4gIGlmIGlzX2R1bW15IGxvYyB0aGVuXG4gICAgYE51bGxcbiAgZWxzZVxuICAgIGBBc3NvY1xuICAgICAgKChpZiBsb2MuZnJvbV9wb3NpdGlvbi5saW5lIDw+IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICAoXCJlbGluZVwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5saW5lKSA6OiBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmdW4gbCAtPlxuICAgICAgICBsKVxuICAgICAgICAgW1xuICAgICAgICAgICAoIFwiZmlsZVwiLFxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kIChNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsb2MuZmlsZSkgZGVjbHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpXG4gICAgICAgICAgICAgfCBOb25lIC0+IGBTdHJpbmcgbG9jLmZpbGUgKTtcbiAgICAgICAgICAgXCJibGluZVwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmU7XG4gICAgICAgICAgIFwiYmNoclwiLCBgSW50IGxvYy5mcm9tX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgICAgXCJlY2hyXCIsIGBJbnQgbG9jLnRvX3Bvc2l0aW9uLmNocjtcbiAgICAgICAgIF0pXG5cbmxldCBvZl9jb21wYWN0X3lvanNvbiA/KGZpbGVuYW1lcyA9IFt8fF0pID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBkdW1teVxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDUgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImZpbGVcIiBsIHdpdGhcbiAgICAgICAgIHwgYFN0cmluZyB4IC0+IHhcbiAgICAgICAgIHwgYEludCBpIC0+IGZpbGVuYW1lcy4oaSlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IG9mX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJsaW5lXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImJjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2NociA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiZWNoclwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdG9fbGluZSA9XG4gICAgICAgICBtYXRjaCBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJlbGluZVwiIHggd2l0aFxuICAgICAgICAgfCBgTnVsbCAtPiBvZl9saW5lXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGU7XG4gICAgICAgICBmcm9tX3Bvc2l0aW9uID0geyBsaW5lID0gb2ZfbGluZTsgY2hyID0gb2ZfY2hyIH07XG4gICAgICAgICB0b19wb3NpdGlvbiA9IHsgbGluZSA9IHRvX2xpbmU7IGNociA9IHRvX2NociB9O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGFycm93X25vdGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB5b2pzb25fb2ZfYW5ub3RlZCA/ZmlsZW5hbWVzIGYgKHgsIGwpID1cbiAgbGV0IGpwID0gdG9fY29tcGFjdF95b2pzb24gZmlsZW5hbWVzIGwgaW5cbiAgaWYganAgPSBgTnVsbCB0aGVuXG4gICAgYEFzc29jIFsgXCJ2YWxcIiwgZiB4IF1cbiAgZWxzZVxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeDsgXCJsb2NcIiwganAgXVxuXG5sZXQgYW5ub3RlZF9vZl95b2pzb24gP2ZpbGVuYW1lcyBmID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgeCk7IChcImxvY1wiLCBsKSBdIHwgYEFzc29jIFsgKFwibG9jXCIsIGwpOyAoXCJ2YWxcIiwgeCkgXSAtPlxuICAgIGYgeCwgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lcyBsXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpIF0gLT4gZiB4LCBkdW1teVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3JhbmdlIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b19jb21wYWN0X3lvanNvbiBOb25lIGYpXG5cbmxldCBzdHJpbmdfb2ZfcmFuZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmFuZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3JhbmdlIHAgbGIgPVxuICBvZl9jb21wYWN0X3lvanNvbiA/ZmlsZW5hbWVzOk5vbmUgKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IHJhbmdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yYW5nZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgaXNfaW5jbHVkZWRfaW4gZmlsZSB7IGxpbmU7IGNociB9IHJhbmdlID1cbiAgZmlsZSA9IHJhbmdlLmZpbGVcbiAgJiYgbGluZSA+PSByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmVcbiAgJiYgbGluZSA8PSByYW5nZS50b19wb3NpdGlvbi5saW5lXG4gICYmIChsaW5lIDw+IHJhbmdlLmZyb21fcG9zaXRpb24ubGluZSB8fCBjaHIgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5jaHIpXG4gICYmIChsaW5lIDw+IHJhbmdlLnRvX3Bvc2l0aW9uLmxpbmUgfHwgY2hyIDw9IHJhbmdlLnRvX3Bvc2l0aW9uLmNocilcblxubGV0IG1lcmdlIGIgZSA9XG4gIGxldCAoKSA9IGFzc2VydCAoYi5maWxlID0gZS5maWxlKSBpblxuICB7XG4gICAgZmlsZSA9IGIuZmlsZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gYi5mcm9tX3Bvc2l0aW9uO1xuICAgIHRvX3Bvc2l0aW9uID0gZS50b19wb3NpdGlvbjtcbiAgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBGb3JtYXRcblxubGV0IGxpc3RpID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxldCByZWMgYXV4IGFjYyBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIGVsIF0gLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGVsIGluXG4gICAgICB0cmFpbGluZyBmXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCAoKSA9IHByX2VsIGFjYyBmIGggaW5cbiAgICAgIGxldCAoKSA9IHByX3NlcCBmIGluXG4gICAgICBhdXggKHN1Y2MgYWNjKSBmIHRcbiAgaW5cbiAgYXV4IDAgZiBsXG5cbmxldCBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiBsID1cbiAgbGlzdGkgP3RyYWlsaW5nIHByX3NlcCAoZnVuIF8gZiB4IC0+IHByX2VsIGYgeCkgZiBsXG5cbmxldCBzZXQgP3RyYWlsaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCBmIHNldCA9XG4gIGxpc3QgP3RyYWlsaW5nIHByX3NlcCBwcl9lbCBmIChlbGVtZW50cyBzZXQpXG5cbmxldCBoYXNodGJsIHByX3NlcCBwcl9lbCBmIHRibCA9XG4gIGxpc3QgcHJfc2VwIHByX2VsIGYgKEhhc2h0YmwuZm9sZCAoZnVuIGEgYiBsIC0+IChhLCBiKSA6OiBsKSB0YmwgW10pXG5cbmxldCBib3R0b20gZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4OEFcXHhBNVwiXG5sZXQgbnUgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceENFXFx4QkRcIlxubGV0IGVtcHR5X3NldCBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbmxldCBjb21tYSBmID0gZnByaW50ZiBmIFwiLEAgXCJcbmxldCBkb3QgZiA9IGZwcmludGYgZiBcIi5cIlxubGV0IGNvbXBhY3RfY29tbWEgZiA9IGZwcmludGYgZiBcIixALFwiXG5sZXQgY29sb24gZiA9IGZwcmludGYgZiBcIjtAIFwiXG5sZXQgc3BhY2UgZiA9IHBwX3ByaW50X3NwYWNlIGYgKClcbmxldCBjdXQgZiA9IHBwX3ByaW50X2N1dCBmICgpXG5sZXQgZW1wdHkgXyA9ICgpXG5sZXQgdW5pdCBfICgpID0gKClcbmxldCBwYWlyIHBwYSBwcGIgZiAoYSwgYikgPSBmcHJpbnRmIGYgXCIoJWEsICVhKVwiIHBwYSBhIHBwYiBiXG5cbmxldCBvcHRpb24gPyh3aXRoX3NwYWNlID0gdHJ1ZSkgcHIgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgIGZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfc3BhY2UgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgICAgIHByIHhcblxubGV0IGFycmF5ID8odHJhaWxpbmcgPSBmdW4gXyAtPiAoKSkgcHJfc2VwIHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJfZWwgaSBmIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuXG5sZXQgcGxhaW5fYXJyYXkgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWFcIiBpIHByX2VsIGEuKGkpIGluXG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGEgLSAxIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIjtALCV0XCIgKGF1eCAoc3VjYyBpKSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbfCV0fF1cIiAoYXV4IDApXG5cbmxldCBlcnJvciBwciB4ID0gZXByaW50ZiBcIiVhQC5cIiAoTG9jLnByaW50X2Fubm90ZWQgcHIpIHhcblxubGV0IGxpc3RfdG9fc3RyaW5nIHByX3NlcCBwcl9lbCAoKSBsID1cbiAgbGV0IHJlYyBhdXggKCkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgWyBlbCBdIC0+IHByX2VsICgpIGVsXG4gICAgfCBoIDo6IHQgLT4gc3ByaW50ZiBcIiVhJXQlYVwiIHByX2VsIGggcHJfc2VwIGF1eCB0XG4gIGluXG4gIGF1eCAoKSBsXG5cbmxldCBzZXRfdG9fc3RyaW5nIGVsZW1lbnRzIHByX3NlcCBwcl9lbCAoKSBzZXQgPVxuICBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgKGVsZW1lbnRzIHNldClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gaW50XG50eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGtleSAqIHQgKiBpbnQgKiBJbnQ2NC50XG4oKk5vZGUobGVmdCxrZXkscmlnaHQsaGVpZ2h0LGFjYykqKVxuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuXG5sZXQgYWNjdmFsID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKF8sIF8sIF8sIF8sIGFjYykgLT4gYWNjXG5cbmxldCB0b3RhbCA9IGFjY3ZhbFxuXG5sZXQgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwTFxuICB8IE5vZGUgKGwsIF8sIHIsIF8sIGFjYykgLT4gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcilcblxubGV0IHJlYyBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IE5vZGUgKGwsIGssIHIsIF8sIGFjYykgYXMgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj48JWQsJUxpKCVMaSk+QCxbJWFALHwlYUAsXVwiIGsgYWNjICh3ZWlnaHQgeClcbiAgICAgIHByaW50IGwgcHJpbnQgclxuXG5sZXQgY3JlYXRlIGwga2V5IGFjYyByID1cbiAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgTm9kZSAobCwga2V5LCByLCBzdWNjIChtaW4gaGwgaHIpLCBhY2MpXG5cbmxldCBiYWwgbCB4IHcgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIGlmIGhsID4gaHIgKyAyIHRoZW4gKFxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBhY2NfbCkgLT5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgY3JlYXRlIGxsIGx2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIChjcmVhdGUgbHIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgdyAoYWNjdmFsIGxyKSkgYWNjX3IpIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19scnIgPSBhY2N2YWwgbHJyIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGxsIGx2IChJbnQ2NC5zdWIgYWNjX2wgYWNjX2xycikgbHJsKVxuICAgICAgICAgICAgbHJ2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIGxyciB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbHJyIHcpIGFjY19yKSByKVxuICAgICAgKVxuICApIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiAoXG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIGFjY19yKSAtPlxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICBjcmVhdGVcbiAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgKGFjY3ZhbCBybCkpIHJsKVxuICAgICAgICAgIHJ2XG4gICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgIHJyXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+XG4gICAgICAgICAgbGV0IGFjY19ybGwgPSBhY2N2YWwgcmxsIGluXG4gICAgICAgICAgY3JlYXRlXG4gICAgICAgICAgICAoY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3JsbCkgcmxsKVxuICAgICAgICAgICAgcmx2XG4gICAgICAgICAgICAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpXG4gICAgICAgICAgICAoY3JlYXRlIHJsciBydiAoSW50NjQuc3ViIGFjY19yIGFjY19ybGwpIHJyKVxuICAgICAgKVxuICApIGVsc2UgKFxuICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICBjcmVhdGUgbCB4IChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcikgclxuICApXG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IE5vZGUgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIGFkZCBrZXkgd2VpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb2RlIChFbXB0eSwga2V5LCBFbXB0eSwgMSwgSW50NjQub2ZfaW50IHdlaWdodClcbiAgfCBOb2RlIChsLCBrZXknLCByLCBoLCBhY2MpIC0+XG4gICAgaWYga2V5ID0ga2V5JyB0aGVuXG4gICAgICBOb2RlXG4gICAgICAgICggbCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcixcbiAgICAgICAgICBoLFxuICAgICAgICAgIEludDY0LmFkZCAoSW50NjQuYWRkIChJbnQ2NC5vZl9pbnQgd2VpZ2h0KSAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB3ZWlnaHQnID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGtleSA8IGtleScgdGhlblxuICAgICAgICBiYWwgKGFkZCBrZXkgd2VpZ2h0IGwpIGtleScgd2VpZ2h0JyByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIGtleScgd2VpZ2h0JyAoYWRkIGtleSB3ZWlnaHQgcilcbiAgICApXG5cbmxldCByZWMgZmluZF9hY2MgYWltX2FjYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTm9kZSAobCwga2V5LCByLCBfLCBhY2MpIC0+XG4gICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgICAgbGV0IGFjY19yID0gYWNjdmFsIHIgaW5cbiAgICAgIGlmIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgZWxzZSBpZiBJbnQ2NC5hZGQgYWNjX3IgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgZmluZF9hY2MgKEludDY0LnN1YiBhaW1fYWNjIGFjY19sKSByXG4gICAgICBlbHNlXG4gICAgICAgIGtleVxuICAgIClcblxubGV0IHJlYyBtZW0ga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IE5vZGUgKGwsIGtleScsIHIsIF8sIF8pIC0+XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIGtleSBrZXknIGluXG4gICAgYyA9IDBcbiAgICB8fCBtZW0ga2V5XG4gICAgICAgICAoaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHIpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKEVtcHR5LCB4LCByLCBfLCBhY2MpIC0+IHgsIEludDY0LnN1YiBhY2MgKGFjY3ZhbCByKVxuICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9iaW5kaW5nIGxcblxubGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5yZW1vdmVfbWluX2VsdFwiXG4gIHwgTm9kZSAoRW1wdHksIF8sIHIsIF8sIF8pIC0+IHJcbiAgfCBOb2RlIChsLCB4LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgeCB3ZWlnaHQgclxuXG5sZXQgbWVyZ2UgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEVtcHR5LCB0IC0+IHRcbiAgfCB0LCBFbXB0eSAtPiB0XG4gIHwgTm9kZSBfLCBOb2RlIF8gLT5cbiAgICBsZXQgeCwgdyA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgYmFsIHQxIHggdyAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG5sZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IE5vZGUgKGwsIHYsIHIsIF8sIGFjYykgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgeCB2IGluXG4gICAgaWYgYyA9IDAgdGhlblxuICAgICAgbWVyZ2UgbCByXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0ID0gSW50NjQuc3ViIChJbnQ2NC5zdWIgYWNjIChhY2N2YWwgbCkpIChhY2N2YWwgcikgaW5cbiAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgYmFsIChyZW1vdmUgeCBsKSB2IHdlaWdodCByXG4gICAgICBlbHNlXG4gICAgICAgIGJhbCBsIHYgd2VpZ2h0IChyZW1vdmUgeCByKVxuICAgIClcbigqXG5sZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBpdGVyIGYgbDsgZiB2ICh3ZWlnaHQgeCk7IGl0ZXIgZiByXG5cbmxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gIG1hdGNoIG0gd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBOb2RlKGwsIHYsIHIsIF8sXykgYXMgeCAtPiBmb2xkIGYgciAoZiB2ICh3ZWlnaHQgeCkgKGZvbGQgZiBsIGFjY3UpKVxuKilcblxuKCoqUmV0dXJucyAoa2V5LHZhbHVlKSBhdCByYW5kb20gaW4gdGhlIHRyZWUqKVxubGV0IHJhbmRvbSBzdGF0ZSBtID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKGFjY3ZhbCBtKSBpblxuICAgIGZpbmRfYWNjIHIgbVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmFuZG9tX3ZhbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXR1cyA9XG4gIFsgYE9LXG4gIHwgYEFjY2VwdGVkXG4gIHwgYENyZWF0ZWRcbiAgfCBgQmFkX3JlcXVlc3RcbiAgfCBgQ29uZmxpY3RcbiAgfCBgTm90X2ZvdW5kXG4gIHwgYFJlcXVlc3RfdGltZW91dCBdXG4oKiogVGhlIHN1YnNldCBvZiBbQ29odHRwLkNvZGUuc3RhdHVzXSB3ZSBuZWVkICopXG5cbnR5cGUgbWVzc2FnZSA9IHtcbiAgc2V2ZXJpdHk6IExvZ3MubGV2ZWw7XG4gIHRleHQ6IHN0cmluZzsgKCpzaG91bGQgYmUgYW4gYWxnZWJyYWljIHR5cGUqKVxuICByYW5nZTogTG9jLnQgb3B0aW9uO1xufVxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIHZhbHVlOiAoJ2EsICdiKSBSZXN1bHQucmVzdWx0O1xuICBzdGF0dXM6IHN0YXR1cztcbiAgbWVzc2FnZXM6IG1lc3NhZ2UgbGlzdDtcbn1cblxubGV0IHdyaXRlX3NldmVyaXR5IG9iIHggPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJyBpblxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiAoTG9ncy5sZXZlbF90b19zdHJpbmcgKFNvbWUgeCkpIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCByZWFkX3NldmVyaXR5IHAgbGIgPVxuICBtYXRjaCBMb2dzLmxldmVsX29mX3N0cmluZyAoWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIpIHdpdGhcbiAgfCBSZXN1bHQuT2sgKFNvbWUgeCkgLT4geFxuICB8IFJlc3VsdC5PayBOb25lIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk1lc3NhZ2Ugb2Ygbm8gc2V2ZXJpdHlcIilcbiAgfCBSZXN1bHQuRXJyb3IgKGBNc2cgeCkgLT5cbiAgICByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgKFwiV2hpbGUgcmVhZGluZyBzZXZlcml0eTogXCIgXiB4KSlcblxubGV0IHdyaXRlX3N0YXR1cyBvYiA9IGZ1bmN0aW9uXG4gIHwgYE9LIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAwXCJcbiAgfCBgQWNjZXB0ZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIyMDJcIlxuICB8IGBDcmVhdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAxXCJcbiAgfCBgQmFkX3JlcXVlc3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDBcIlxuICB8IGBDb25mbGljdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOVwiXG4gIHwgYE5vdF9mb3VuZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwNFwiXG4gIHwgYFJlcXVlc3RfdGltZW91dCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjQwOFwiXG5cbmxldCByZWFkX3N0YXR1cyBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIgd2l0aFxuICB8IDIwMCAtPiBgT0tcbiAgfCAyMDIgLT4gYEFjY2VwdGVkXG4gIHwgMjAxIC0+IGBDcmVhdGVkXG4gIHwgNDAwIC0+IGBCYWRfcmVxdWVzdFxuICB8IDQwOSAtPiBgQ29uZmxpY3RcbiAgfCA0MDQgLT4gYE5vdF9mb3VuZFxuICB8IDQwOCAtPiBgUmVxdWVzdF90aW1lb3V0XG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkpzb25fZXJyb3JcbiAgICAgICAgIChcIlN0YXR1cyBcIiBeIHN0cmluZ19vZl9pbnQgeCBeIFwiIGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgS2FwcGFcIikpXG5cbmxldCB3cml0ZV9tZXNzYWdlIG9iIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2V2ZXJpdHlcIiB3cml0ZV9zZXZlcml0eSBvYiBzZXZlcml0eSBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInRleHRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIHRleHQgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHIgLT5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInJhbmdlXCIgTG9jLndyaXRlX3JhbmdlIG9iIHJcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9tZXNzYWdlIHAgbGIgPVxuICBsZXQgc2V2ZXJpdHksIHRleHQsIHJhbmdlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIHQsIHIpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2V2ZXJpdHlcIiB0aGVuXG4gICAgICAgICAgcmVhZF9zZXZlcml0eSBwIGxiLCB0LCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJ0ZXh0XCIgdGhlblxuICAgICAgICAgIHMsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCByXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJyYW5nZVwiIHRoZW5cbiAgICAgICAgICBzLCB0LCBTb21lIChMb2MucmVhZF9yYW5nZSBwIGxiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIk5vIGZpZWxkIFwiIF4ga2V5IF4gXCIgZXhwZWN0ZWQgaW4gbWVzc2FnZVwiKSkpXG4gICAgICAoTG9ncy5BcHAsIFwiXCIsIE5vbmUpIHAgbGJcbiAgaW5cbiAgeyBzZXZlcml0eTsgdGV4dDsgcmFuZ2UgfVxuXG5sZXQgcHJpbnRfbWVzc2FnZSBmIHsgcmFuZ2U7IHRleHQ7IF8gfSA9XG4gIG1hdGNoIHJhbmdlIHdpdGhcbiAgfCBTb21lIHJhbmdlIC0+IExvYy5wcmludF9hbm5vdGVkIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAodGV4dCwgcmFuZ2UpXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgdGV4dFxuXG5sZXQgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iID0gZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJPa1xcXCIsXCI7XG4gICAgd3JpdGVfX29rIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHg7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFcnJvclxcXCIsXCI7XG4gICAgd3JpdGVfX2Vycm9yIG9iIHg7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICB3cml0ZV9zdGF0dXMgb2Igc3RhdHVzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9tZXNzYWdlIG9iIG1lc3NhZ2VzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHN0cmluZ19vZl90IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90X2NvbnRlbnQgZiBwIGxiID1cbiAgbGV0IHYgPSBmIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBzID0gcmVhZF9zdGF0dXMgcCBsYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGIgaW5cbiAgdiwgcywgWW9qc29uLkJhc2ljLnJlYWRfbGlzdCByZWFkX21lc3NhZ2UgcCBsYlxuXG5sZXQgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIHAgbGIgPVxuICBsZXQgYXV4X3JlYWRfdCBjbG9zaW5nIHAgbGIgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbGV0IG91dCA9XG4gICAgICBZb2pzb24uQmFzaWMubWFwX2lkZW50IHBcbiAgICAgICAgKGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3ViIHMgcG9zIGxlbiB3aXRoXG4gICAgICAgICAgfCBcIk9rXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fb2sgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IFwiRXJyb3JcIiAtPlxuICAgICAgICAgICAgbGV0IHYsIHN0YXR1cywgbWVzc2FnZXMgPSByZWFkX3RfY29udGVudCByZWFkX19lcnJvciBwIGxiIGluXG4gICAgICAgICAgICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIHY7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAgICAgICAgIChcIkZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgZG9lcyBub3QgYmVsb25nIHRvIHRoZSByZXN1bHQgdHlwZVwiKSkpXG4gICAgICAgIGxiXG4gICAgaW5cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGNsb3NpbmcgcCBsYjtcbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIG91dFxuICBpblxuICBtYXRjaCBZb2pzb24uQmFzaWMuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gIHwgYEVkZ3lfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX2d0IHAgbGJcbiAgfCBgRG91YmxlX3F1b3RlIC0+IHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciBcIk5vdCBvZiByZXN1bHQgdHlwZVwiKVxuICB8IGBTcXVhcmVfYnJhY2tldCAtPiBhdXhfcmVhZF90IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiXG5cbmxldCB0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBsaWZ0ID8ob2tfc3RhdHVzID0gYE9LKSA/KGVycm9yX3N0YXR1cyA9IGBCYWRfcmVxdWVzdCkgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IG9rX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4gIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyA9IFtdIH1cblxubGV0IGZvbGQgfihvayA6ICdvayAtPiAnYSkgfihlcnJvciA6ICdlcnJvciAtPiAnYSkgOiAoJ29rLCAnZXJyb3IpIHQgLT4gJ2EgPVxuICBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgXyB9IC0+IG9rIG9cbiAgfCB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGU7IF8gfSAtPiBlcnJvciBlXG5cbmxldCBiaW5kIDpcbiAgICB0eXBlIG9rIGEgZXJyLlxuICAgID9vdmVyd3JpdGVfc3RhdHVzOnN0YXR1cyAtPlxuICAgID9lcnJvcl9zdGF0dXM6c3RhdHVzIC0+XG4gICAgKG9rIC0+IChhLCBlcnIpIFJlc3VsdC5yZXN1bHQpIC0+XG4gICAgKG9rLCBlcnIpIHQgLT5cbiAgICAoYSwgZXJyKSB0ID1cbiBmdW4gP292ZXJ3cml0ZV9zdGF0dXMgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICAobWF0Y2ggb2sgbyB3aXRoXG4gICAgfCBSZXN1bHQuRXJyb3IgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBlcnJvcl9zdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICB8IFJlc3VsdC5PayBfIGFzIHZhbHVlIC0+XG4gICAgICAobWF0Y2ggb3ZlcndyaXRlX3N0YXR1cyB3aXRoXG4gICAgICB8IE5vbmUgLT4geyB2YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICB8IFNvbWUgc3RhdHVzIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSkpXG5cbmxldCBtYXAgOiB0eXBlIG9rIGEgZXJyLiAob2sgLT4gYSkgLT4gKG9rLCBlcnIpIHQgLT4gKGEsIGVycikgdCA9XG4gZnVuIG9rIC0+IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBvOyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICB7IHZhbHVlID0gUmVzdWx0Lk9rIChvayBvKTsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSAtPiBlXG5cbmxldCBtYXAyIDpcbiAgICB0eXBlIGEgYiBvayBlcnIuIChhIC0+IGIgLT4gb2spIC0+IChhLCBlcnIpIHQgLT4gKGIsIGVycikgdCAtPiAob2ssIGVycikgdCA9XG4gZnVuIGYgYSBiIC0+XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8ICggeyB2YWx1ZSA9IFJlc3VsdC5PayBhOyBtZXNzYWdlczsgXyB9LFxuICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5PayBiOyBzdGF0dXM7IG1lc3NhZ2VzID0gbScgfSApIC0+XG4gICAge1xuICAgICAgdmFsdWUgPSBSZXN1bHQuT2sgKGYgYSBiKTtcbiAgICAgIHN0YXR1cztcbiAgICAgIG1lc3NhZ2VzID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBtJykgbWVzc2FnZXM7XG4gICAgfVxuICB8ICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSwgXyAtPiBlXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayBfOyBfIH0sICh7IHZhbHVlID0gUmVzdWx0LkVycm9yIF87IF8gfSBhcyBlKSAtPiBlXG5cbmxldCBlcnJvciA/KHN0YXR1cyA9IGBCYWRfcmVxdWVzdCkgKGVycm9yIDogJ2Vycm9yKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgZXJyb3I7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBvayA/KHN0YXR1cyA9IGBPSykgKG9rIDogJ29rKSA6ICgnb2ssICdlcnJvcikgdCA9XG4gIHsgdmFsdWUgPSBSZXN1bHQuT2sgb2s7IHN0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5leGNlcHRpb24gTm90QmlqZWN0aXZlXG5leGNlcHRpb24gQ2xhc2hpbmdcblxubGV0IHNwZWNpYWxfdmFsID0gbWF4X2ludFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW1tZWRpYXRlOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgZGVsYXllZDogKHQgKiB0KSBvcHRpb247XG4gIG11dGFibGUgaXNfaWRlbnRpdHk6IGJvb2w7XG4gIG11dGFibGUgZHN0czogTW9kcy5JbnRTZXQudDtcbn1cblxubGV0IGVtcHR5ICgpID1cbiAge1xuICAgIGltbWVkaWF0ZSA9IFt8fF07XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgfVxuXG5sZXQgZHVtbXkgPSBlbXB0eSAoKVxuXG5sZXQgaWRlbnRpdHkgbCA9XG4gIGxldCBtYXggPSBMaXN0LmZvbGRfbGVmdCBtYXggMCBsIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChzdWNjIG1heCkgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gTGlzdC5pdGVyIChmdW4geCAtPiBpbW1lZGlhdGUuKHgpIDwtIHgpIGwgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gTm9uZTtcbiAgICBpc19pZGVudGl0eSA9IHRydWU7XG4gICAgZHN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG91dCB4IC0+IE1vZHMuSW50U2V0LmFkZCB4IG91dCkgTW9kcy5JbnRTZXQuZW1wdHkgbDtcbiAgfVxuXG5sZXQgaXNfaWRlbnRpdHkgaSA9IGkuaXNfaWRlbnRpdHlcblxubGV0IHJlYyBjb21wdXRlIGsgaSA9XG4gIGxldCB2ID0gaS5pbW1lZGlhdGUuKGspIGluXG4gIGlmIHYgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgIHZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaS5kZWxheWVkIHdpdGhcbiAgICB8IE5vbmUgLT4gc3BlY2lhbF92YWxcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICBpZiBrID49IEFycmF5Lmxlbmd0aCB4LmltbWVkaWF0ZSB0aGVuXG4gICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHYnID0gY29tcHV0ZSBrIHggaW5cbiAgICAgICAgaWYgdicgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgc3BlY2lhbF92YWxcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHYnJyA9IGNvbXB1dGUgdicgeSBpblxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIGlmIHYnJyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgICAgdidcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdicnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpLmltbWVkaWF0ZS4oaykgPC0gbyBpblxuICAgICAgICAgIG9cbiAgICAgICAgKVxuICAgICAgKVxuICApXG5cbmxldCBmb3JjZSBpID1cbiAgaWYgaS5kZWxheWVkIDw+IE5vbmUgdGhlbiAoXG4gICAgbGV0ICgpID0gQXJyYXkuaXRlcmkgKGZ1biBrIF8gLT4gaWdub3JlIChjb21wdXRlIGsgaSkpIGkuaW1tZWRpYXRlIGluXG4gICAgaS5kZWxheWVkIDwtIE5vbmVcbiAgKVxuXG5sZXQgdG9fbGlzdCBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgKGksIHYpIDo6IGFjY1xuICAgICAgZWxzZVxuICAgICAgICBhY2MpXG4gICAgW10gaS5pbW1lZGlhdGVcbiAgfD4gTGlzdC5yZXZcblxubGV0IGltYWdlIGkgPSBpLmRzdHNcblxubGV0IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgPVxuICBsZXQgbCA9IG1heCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSAoeCArIDEpIGluXG4gIGxldCBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIGwgc3BlY2lhbF92YWwgaW5cbiAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIGluXG4gIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICB7XG4gICAgaW1tZWRpYXRlO1xuICAgIGRlbGF5ZWQgPSBpLmRlbGF5ZWQ7XG4gICAgaXNfaWRlbnRpdHkgPSBpLmlzX2lkZW50aXR5ICYmIHggPT0geTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzO1xuICB9XG5cbmxldCBhZGQgfmRlYnVnX21vZGUgeCB5IGkgPVxuICBsZXQgbm90X29rID1cbiAgICBkZWJ1Z19tb2RlICYmIHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgaS5pbW1lZGlhdGUuKHgpIDw+IHNwZWNpYWxfdmFsXG4gIGluXG4gIGlmIG5vdF9vayB0aGVuXG4gICAgcmFpc2UgQ2xhc2hpbmdcbiAgZWxzZSAoXG4gICAgbGV0IGknID0gdW5zYWZlX2Z1bmN0aW9ubmFsX2FkZCB4IHkgaSBpblxuICAgIGlmIGkuZHN0cyA9PSBpJy5kc3RzIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIGknXG4gIClcblxubGV0IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB4IHkgaSA9XG4gIGxldCAoKSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgaW5cbiAgICBpZiB4ID49IGwgdGhlbiAoXG4gICAgICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyB4KSBzcGVjaWFsX3ZhbCBpblxuICAgICAgbGV0ICgpID0gQXJyYXkuYmxpdCBpLmltbWVkaWF0ZSAwIGltbWVkaWF0ZSAwIGwgaW5cbiAgICAgIGxldCAoKSA9IGltbWVkaWF0ZS4oeCkgPC0geSBpblxuICAgICAgaS5pbW1lZGlhdGUgPC0gaW1tZWRpYXRlXG4gICAgKSBlbHNlXG4gICAgICBpLmltbWVkaWF0ZS4oeCkgPC0geVxuICBpblxuICBsZXQgKCkgPSBpLmlzX2lkZW50aXR5IDwtIGkuaXNfaWRlbnRpdHkgJiYgeCA9PSB5IGluXG4gIGkuZHN0cyA8LSBNb2RzLkludFNldC5hZGQgeSBpLmRzdHNcblxubGV0IGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBvcmlnaW4gPSBpLmRzdHMgaW5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgaW5cbiAgICBub3QgKGkuZHN0cyA9PSBvcmlnaW4pXG4gIClcblxubGV0IHJlYyBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgcHJlID0gZnVuY3Rpb25cbiAgfCBfIHdoZW4gcHJlID0gaWQgLT4gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBtYXggc3Vic3RcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgcHJlIGggc3Vic3QgaW5cbiAgICBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBtYXggaWQgc3Vic3QgaCB0XG5cbmxldCBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0IH5zdG9wX2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcIlJlbmFtaW5nLmN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2xpc3RcIlxuICB8IGggOjogdCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9IGN5Y2xpY19wZXJtdXRhdGlvbl9mcm9tX2lkZW50aXR5IGggc3RvcF9hdCBvdXQgaCB0IGluXG4gICAgb3V0XG5cbmxldCBtZW0geCBpID0geCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBjb21wdXRlIHggaSA8PiBzcGVjaWFsX3ZhbFxuXG5sZXQgZm9sZCBmIGkgYWNjID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIGFjYyB2IC0+XG4gICAgICBpZiB2ID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgZiBpIHYgYWNjKVxuICAgIGFjYyBpLmltbWVkaWF0ZVxuXG5sZXQgYXBwbHkgfmRlYnVnX21vZGUgaSB4ID1cbiAgaWYgKG5vdCBpLmlzX2lkZW50aXR5KSB8fCBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgIGxldCBjID0gY29tcHV0ZSB4IGkgaW5cbiAgICBpZiBjID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgcmFpc2UgVW5kZWZpbmVkXG4gICAgZWxzZVxuICAgICAgY1xuICApIGVsc2VcbiAgICB4XG5cbmxldCBjb21wb3NlIH5kZWJ1Z19tb2RlIGV4dGVuc2libGUgaSBpJyA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZXh0ZW5zaWJsZSB8fCBkZWJ1Z19tb2RlIHRoZW5cbiAgICB7XG4gICAgICBpbW1lZGlhdGUgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUpIHNwZWNpYWxfdmFsO1xuICAgICAgZGVsYXllZCA9IFNvbWUgKGksIGknKTtcbiAgICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiBpJy5pc19pZGVudGl0eTtcbiAgICAgIGRzdHMgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biB2JyBzZXQgLT5cbiAgICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIGknIGluXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgdicnIHNldClcbiAgICAgICAgICBpLmRzdHMgTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgfVxuICAoKiBsZXQgc2lnbWEsaXNfaWQgPVxuICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biB4IHkgKG91dCxpc19pZCkgLT5cbiAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geSBpJy5zaWdtYSB3aXRoXG4gICAgICAgICAgIHwgU29tZSB6IC0+IChNb2RzLkludE1hcC5hZGQgeCB6IG91dCxpc19pZCAmJiB4PT16KVxuICAgICAgICAgICB8IE5vbmUgLT4gKG91dCxpc19pZCAmJiB4PT15KVxuICAgICAgICAgKSBpLnNpZ21hIChpLnNpZ21hLHRydWUpXG4gICAgIGluXG4gICAgIHtzaWdtYT1zaWdtYSA7IGlzX2lkZW50aXR5PWlzX2lkIDsgZHN0cyA9IGknLmRzdHN9XG4gICopXG4gIGVsc2VcbiAgICBpJ1xuXG5sZXQgaW52ZXJzZSBpID1cbiAgaWYgaS5pc19pZGVudGl0eSB0aGVuXG4gICAgaVxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgeSA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICB5IDwgQXJyYXkubGVuZ3RoIG91dC5pbW1lZGlhdGUgJiYgb3V0LmltbWVkaWF0ZS4oeSkgPD4gc3BlY2lhbF92YWxcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgTm90QmlqZWN0aXZlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHVuc2FmZV9pbXBlcmF0aXZlX2FkZCB5IHggb3V0KVxuICAgICAgICBpLmltbWVkaWF0ZVxuICAgIGluXG4gICAgb3V0XG4gIClcblxubGV0IGNvbXBhcmUgaSBpJyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgbGV0ICgpID0gZm9yY2UgaScgaW5cbiAgVG9vbHMuYXJyYXlfY29tcGFyZSBNb2RzLmludF9jb21wYXJlIGkuaW1tZWRpYXRlIGknLmltbWVkaWF0ZVxuXG5sZXQgZXF1YWwgaSBpJyA9IGNvbXBhcmUgaSBpJyA9IDBcblxubGV0IG1pbl9lbHQgaSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gIGxldCByZWMgYXV4X21pbl9lbHQgayA9XG4gICAgaWYgayA+PSBsIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvID0gY29tcHV0ZSBrIGkgaW5cbiAgICAgIGlmIG8gPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIGF1eF9taW5fZWx0IChzdWNjIGspXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKGssIG8pXG4gICAgKVxuICBpblxuICBhdXhfbWluX2VsdCAwXG5cbmxldCBwcmludCBmIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGlnbm9yZVxuICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgKGZ1biBzcmMgYiBkc3QgLT5cbiAgICAgICAgIGlmIHNyYyA8PiBkc3QgJiYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW4gKFxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVpLT4laVwiXG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBQcC5jb21tYVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgc3JjIGRzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICB0cnVlXG4gICAgICAgICApIGVsc2VcbiAgICAgICAgICAgYilcbiAgICAgICBmYWxzZSBpLmltbWVkaWF0ZSlcblxubGV0IHByaW50X2Z1bGwgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFsoJWEpQF1cIlxuICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIHNyYyBmIGRzdCAtPlxuICAgICAgICAgaWYgZHN0IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgICAgaWYgc3JjIDw+IGRzdCB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpLT4laVwiIHNyYyBkc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiBzcmMpKVxuICAgIGkuaW1tZWRpYXRlXG5cbmxldCB0b195b2pzb24gaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgYExpc3RcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGFjYyBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGBMaXN0IFsgYEludCBzcmM7IGBJbnQgZHN0IF0gOjogYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFjYylcbiAgICAgICBbXSBpLmltbWVkaWF0ZSlcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIGFzIHggLT5cbiAgICAgICAgICAgIGlmIG5vdCAoaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGU6ZmFsc2Ugc3JjIGRzdCBvdXQpIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSlcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCByZW5hbWluZyBpdGVtXCIsIHgpKSlcbiAgICAgICAgbFxuICAgIGluXG4gICAgb3V0XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmdcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRyZWUgPSB7XG4gIG1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICB1bm1hc2s6IChpbnQsIGludCkgSGFzaHRibC50O1xuICBtdXRhYmxlIG5ld19tYXNrOiBpbnQ7XG4gIG11dGFibGUgaW5mX2xpc3Q6IE1vZHMuSW50U2V0LnQ7XG4gIHNpemU6IGludDtcbiAgd2VpZ2h0X29mX25vZGVzOiBmbG9hdCBhcnJheTtcbiAgd2VpZ2h0X29mX3N1YnRyZWVzOiBmbG9hdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5O1xuICB1bmJhbGFuY2VkX2V2ZW50czogYm9vbCBhcnJheTtcbiAgbGF5ZXI6IGludCBhcnJheTtcbiAgbXV0YWJsZSBjb25zaXN0ZW50OiBib29sO1xufVxuXG5sZXQgbWFzayB0IGkgPVxuICB0cnkgSGFzaHRibC5maW5kIHQubWFzayBpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IG0gPSB0Lm5ld19tYXNrIGluXG4gICAgbGV0ICgpID0gdC5uZXdfbWFzayA8LSBtICsgMSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0Lm1hc2sgaSBtIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHQudW5tYXNrIG0gaSBpblxuICAgIG1cblxubGV0IHVubWFzayB0IG0gPVxuICB0cnkgSGFzaHRibC5maW5kIHQudW5tYXNrIG1cbiAgd2l0aCBOb3RfZm91bmQgLT4gaW52YWxpZF9hcmcgXCJSYW5kb21fdHJlZTogaW5jb2hlcmVudCBoYXNoXCJcblxubGV0IGlzX2luZmluaXRlIGkgdCA9XG4gIGxldCBpID0gbWFzayB0IGkgaW5cbiAgTW9kcy5JbnRTZXQubWVtIGkgdC5pbmZfbGlzdFxuXG5sZXQgZmluZCBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIHQud2VpZ2h0X29mX25vZGVzLihpKVxuXG5sZXQgY29weSB0ID1cbiAge1xuICAgIG1hc2sgPSBIYXNodGJsLmNvcHkgdC5tYXNrO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY29weSB0LnVubWFzaztcbiAgICBuZXdfbWFzayA9IHQubmV3X21hc2s7XG4gICAgc2l6ZSA9IHQuc2l6ZTtcbiAgICAoKlx0dG90YWwgPSB0LnRvdGFsIDsqKVxuICAgIHdlaWdodF9vZl9ub2RlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfbm9kZXM7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gQXJyYXkuY29weSB0LndlaWdodF9vZl9zdWJ0cmVlcztcbiAgICBsYXllciA9IEFycmF5LmNvcHkgdC5sYXllcjtcbiAgICBjb25zaXN0ZW50ID0gdC5jb25zaXN0ZW50O1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkuY29weSB0LnVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGNvcHlfdmVjdF9pbiB0IHQxID0gQXJyYXkuaXRlcmkgKGZ1biBpIGEgLT4gdDEuKGkpIDwtIGEpIHRcblxubGV0IGNvcHlfaW4gdDEgdDIgPVxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX25vZGVzIHQyLndlaWdodF9vZl9ub2RlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEud2VpZ2h0X29mX3N1YnRyZWVzIHQyLndlaWdodF9vZl9zdWJ0cmVlcyBpblxuICBsZXQgKCkgPSBjb3B5X3ZlY3RfaW4gdDEubGF5ZXIgdDIubGF5ZXIgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzIHQyLnVuYmFsYW5jZWRfZXZlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgY29weV92ZWN0X2luIHQxLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIHQyLnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyXG4gIGluXG4gIGxldCAoKSA9IHQyLmNvbnNpc3RlbnQgPC0gdDEuY29uc2lzdGVudCBpblxuICB0MlxuXG5sZXQgaXNfcm9vdCBpID0gaSA9IDFcblxubGV0IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSB0aGVuIChcbiAgICAgIGxldCBsID0gdC5sYXllci4oaSkgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIHRydWUgaW5cbiAgICAgIHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpIDwtIGkgOjogdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4obClcbiAgICApXG4gIGluXG4gIHQuY29uc2lzdGVudCA8LSBmYWxzZVxuXG5sZXQgdXBkYXRlX3N0cnVjdHVyZSB0ID1cbiAgaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICB0XG4gIGVsc2UgKFxuICAgIGxldCBuX2xheWVyID0gdC5sYXllci4odC5zaXplKSBpblxuICAgIGxldCB1cGRhdGVfc3RydWN0dXJlX2F1eCBpID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLihpKSA8LVxuICAgICAgICAgICh0LndlaWdodF9vZl9ub2Rlcy4oaSlcbiAgICAgICAgICArLiAoaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgICAgIDAuXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oMiAqIGkpKVxuICAgICAgICAgICsuXG4gICAgICAgICAgaWYgKDIgKiBpKSArIDEgPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgMC5cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oKDIgKiBpKSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHMuKGkpIDwtIGZhbHNlIGluXG4gICAgICBpZiBub3QgKGlzX3Jvb3QgaSkgdGhlbiAoXG4gICAgICAgIGxldCBmYXRoZXIgPSBpIC8gMiBpblxuICAgICAgICBkZWNsYXJlX3VuYmFsYW5jZWQgZmF0aGVyIHRcbiAgICAgIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgaW5cbiAgICAgICAgbGV0ICgpID0gdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllci4oaykgPC0gW10gaW5cbiAgICAgICAgbGV0ICgpID0gTGlzdC5pdGVyIHVwZGF0ZV9zdHJ1Y3R1cmVfYXV4IGwgaW5cbiAgICAgICAgYXV4IChrIC0gMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBuX2xheWVyIGluXG4gICAgbGV0ICgpID0gdC5jb25zaXN0ZW50IDwtIHRydWUgaW5cbiAgICB0XG4gIClcblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IHRfbm9kZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgdF9zdWJ0cmVlID0gQXJyYXkubWFrZSAobiArIDEpIDAuIGluXG4gIGxldCBsYXllciA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IHJlYyBhdXggayBjdXJyZW50X2xheWVyIGxheWVyX2VuZCA9XG4gICAgICBpZiBrIDw9IG4gdGhlblxuICAgICAgICBpZiBrID4gbGF5ZXJfZW5kIHRoZW5cbiAgICAgICAgICBhdXggayAoY3VycmVudF9sYXllciArIDEpICgoMiAqIGxheWVyX2VuZCkgKyAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBsYXllci4oaykgPC0gY3VycmVudF9sYXllciBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGN1cnJlbnRfbGF5ZXIgbGF5ZXJfZW5kXG4gICAgICAgIClcbiAgICBpblxuICAgIGF1eCAxIDEgMVxuICBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIgPSBBcnJheS5tYWtlIChsYXllci4obikgKyAxKSBbXSBpblxuICBsZXQgdW5iYWxhbmNlZF9ldmVudHMgPSBBcnJheS5tYWtlIChuICsgMSkgZmFsc2UgaW5cbiAge1xuICAgIHNpemUgPSBuO1xuICAgICgqXHR0b3RhbCA9IDAuOyopXG4gICAgbmV3X21hc2sgPSAxO1xuICAgIG1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIHVubWFzayA9IEhhc2h0YmwuY3JlYXRlIChuICsgMSk7XG4gICAgaW5mX2xpc3QgPSBNb2RzLkludFNldC5lbXB0eTtcbiAgICBjb25zaXN0ZW50ID0gdHJ1ZTtcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSB0X25vZGU7XG4gICAgd2VpZ2h0X29mX3N1YnRyZWVzID0gdF9zdWJ0cmVlO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyO1xuICAgIHVuYmFsYW5jZWRfZXZlbnRzO1xuICAgIGxheWVyO1xuICB9XG5cbmxldCBhZGQgaSB3IHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIGlmIHcgPCAwLiB0aGVuXG4gICAgZmFpbHdpdGggXCJOZWdhdGl2ZSB2YWx1ZSBmb3JiaWRkZW4gaW4gUmFuZG9tX3RyZWVcIlxuICBlbHNlIChcbiAgICBsZXQgdyA9XG4gICAgICBpZiB3ID0gaW5maW5pdHkgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQuYWRkIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICAwLlxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gdC5pbmZfbGlzdCA8LSBNb2RzLkludFNldC5yZW1vdmUgaSB0LmluZl9saXN0IGluXG4gICAgICAgIHdcbiAgICAgIClcbiAgICBpblxuICAgICgqXHRsZXQgdG90YWwgPSB0LnRvdGFsIC0uIHQud2VpZ2h0X29mX25vZGVzLihpKSArLiB3IGluKilcbiAgICBsZXQgKCkgPSB0LndlaWdodF9vZl9ub2Rlcy4oaSkgPC0gdyBpblxuICAgIGxldCAoKSA9IGRlY2xhcmVfdW5iYWxhbmNlZCBpIHQgaW5cbiAgICAoKSAoKnQudG90YWwgPC0gKG1heCAwLjAgdG90YWwpICgqbm90IHNhdGlzZmFjdG9yeSopKilcbiAgKVxuXG5sZXQgdG90YWwgdCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHQuaW5mX2xpc3QgdGhlbiAoXG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBpZiB0LnNpemUgPSAwIHRoZW5cbiAgICAgIDAuXG4gICAgZWxzZVxuICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDEpXG4gICkgZWxzZVxuICAgIGluZmluaXR5XG5cbmxldCByYW5kb20gcnMgdCA9XG4gIG1hdGNoIE1vZHMuSW50U2V0LnJhbmRvbSBycyB0LmluZl9saXN0IHdpdGhcbiAgfCBTb21lIHggLT4gdW5tYXNrIHQgeCwgaW5maW5pdHlcbiAgfCBOb25lIC0+XG4gICAgbGV0IHQgPSB1cGRhdGVfc3RydWN0dXJlIHQgaW5cbiAgICBsZXQgYSA9IHRvdGFsIHQgaW5cbiAgICBpZiBhIDw9IDAuIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBSYW5kb20uU3RhdGUuZmxvYXQgcnMgYSBpblxuICAgICAgbGV0IHJlYyBmaW5kIGkgciA9XG4gICAgICAgIGxldCBub2RlID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIGluXG4gICAgICAgIGlmIHIgPCBub2RlIHRoZW5cbiAgICAgICAgICBpLCBub2RlXG4gICAgICAgIGVsc2UgaWYgMiAqIGkgPiB0LnNpemUgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcicgPSByIC0uIG5vZGUgaW5cbiAgICAgICAgICBsZXQgbHNvbiA9IDIgKiBpIGluXG4gICAgICAgICAgbGV0IHJzb24gPSAoMiAqIGkpICsgMSBpblxuICAgICAgICAgIGxldCBsZWZ0ID0gdC53ZWlnaHRfb2Zfc3VidHJlZXMuKGxzb24pIGluXG4gICAgICAgICAgaWYgcicgPCBsZWZ0IHRoZW5cbiAgICAgICAgICAgIGZpbmQgbHNvbiByJ1xuICAgICAgICAgIGVsc2UgaWYgcnNvbiA+IHQuc2l6ZSB0aGVuXG4gICAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kIHJzb24gKHInIC0uIGxlZnQpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVwLCB3ID0gZmluZCAxIHIgaW5cbiAgICAgIHVubWFzayB0IHJlcCwgd1xuICAgIClcblxuKCogVE9ET1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXkgO1xuICAgdW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXI6IGludCBsaXN0IGFycmF5IDtcbiopXG5sZXQgZGVidWdfcHJpbnQgZiB0ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslc2NvbnNpc3RlbnQ6QCBbXCJcbiAgICAgIChpZiB0LmNvbnNpc3RlbnQgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwidW5cIilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gaSBrIC0+XG4gICAgICAgIGxldCBiYWwgPVxuICAgICAgICAgIGlmIHQudW5iYWxhbmNlZF9ldmVudHMuKGspIHRoZW5cbiAgICAgICAgICAgIFwiIVwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW52ID1cbiAgICAgICAgICBpZiBIYXNodGJsLmZpbmQgdC5tYXNrIGsgPSBpIHRoZW5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIiBub3QgaW52b2x1dGl2ZVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbmYgPVxuICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHQud2VpZ2h0X29mX25vZGVzLihrKSB3aXRoXG4gICAgICAgICAgfCBGUF9pbmZpbml0ZSB3aGVuIE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QgLT4gXCJcIlxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgLT4gXCIgbm90IGluIGluZl9saXN0XCJcbiAgICAgICAgICB8IF8gd2hlbiBub3QgKE1vZHMuSW50U2V0Lm1lbSBrIHQuaW5mX2xpc3QpIC0+IFwiXCJcbiAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3plcm8gfCBGUF9uYW4gfCBGUF9zdWJub3JtYWwgLT4gXCIgaW4gaW5mX2xpc3RcIlxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlaTolZiVzJXMsQCxcIiBiYWwgaSB0LndlaWdodF9vZl9ub2Rlcy4oaykgaW5mIGludilcbiAgICAgIHQudW5tYXNrXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJdQF1cIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdyYXBoX3BhZ2UgdGl0bGUgP3N1YnRpdGxlIGRlcHMgaGVhZGVyIGNvcmUgZiA9XG4gIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXQ8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGRlcHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIGhlYWRlciBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxoMT5AWyV0JXRAXTwvaDE+QCxcIiB0aXRsZSAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc3VidGl0bGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsPHNtYWxsPiV0PC9zbWFsbD5cIiB0KVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXRALDwvZGl2PkBdQCw8L2JvZHk+QCw8L2h0bWw+QF1ALlwiIGNvcmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmluX2FsZ19vcCA9IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyB8IE1JTiB8IE1BWFxudHlwZSB1bl9hbGdfb3AgPSBMT0cgfCBTUVJUIHwgRVhQIHwgU0lOVVMgfCBDT1NJTlVTIHwgVEFOIHwgSU5UIHwgVU1JTlVTXG5cbnR5cGUgc3RhdGVfYWxnX29wID1cbiAgfCBDUFVUSU1FXG4gIHwgVElNRV9WQVJcbiAgfCBFVkVOVF9WQVJcbiAgfCBOVUxMX0VWRU5UX1ZBUlxuICB8IFRNQVhfVkFSXG4gIHwgRU1BWF9WQVJcblxudHlwZSBiaW5fYm9vbF9vcCA9IEFORCB8IE9SXG50eXBlIHVuX2Jvb2xfb3AgPSBOT1RcbnR5cGUgY29tcGFyZV9vcCA9IEdSRUFURVIgfCBTTUFMTEVSIHwgRVFVQUwgfCBESUZGXG50eXBlIHJldl9kZXAgPSBBTEcgb2YgaW50IHwgUlVMRSBvZiBpbnQgfCBNT0RJRiBvZiBpbnRcblxubGV0IGJpbl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBNVUxUIC0+IFwiKlwiXG4gIHwgU1VNIC0+IFwiK1wiXG4gIHwgRElWIC0+IFwiL1wiXG4gIHwgTUlOVVMgLT4gXCItXCJcbiAgfCBQT1cgLT4gXCJeXCJcbiAgfCBNT0RVTE8gLT4gXCJbbW9kXVwiXG4gIHwgTUlOIC0+IFwiW21pbl1cIlxuICB8IE1BWCAtPiBcIlttYXhdXCJcblxubGV0IGJpbl9hbGdfb3BfaXNfcHJlZml4ID0gZnVuY3Rpb25cbiAgfCBNQVggfCBNSU4gLT4gdHJ1ZVxuICB8IE1VTFQgfCBTVU0gfCBESVYgfCBNSU5VUyB8IFBPVyB8IE1PRFVMTyAtPiBmYWxzZVxuXG5sZXQgcHJpbnRfYmluX2FsZ19vcCBmeCB4IGZ5IHkgZiBvcCA9XG4gIGlmIGJpbl9hbGdfb3BfaXNfcHJlZml4IG9wIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgKCVhKSAoJWEpXCIgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeCB4IGZ5IHlcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJXMgJWEpXCIgZnggeCAoYmluX2FsZ19vcF90b19zdHJpbmcgb3ApIGZ5IHlcblxubGV0IGJpbl9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgYmluX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiKlwiIC0+IE1VTFRcbiAgfCBgU3RyaW5nIFwiK1wiIC0+IFNVTVxuICB8IGBTdHJpbmcgXCIvXCIgLT4gRElWXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBNSU5VU1xuICB8IGBTdHJpbmcgXCJeXCIgLT4gUE9XXG4gIHwgYFN0cmluZyBcIlttb2RdXCIgLT4gTU9EVUxPXG4gIHwgYFN0cmluZyBcIlttaW5dXCIgLT4gTUlOXG4gIHwgYFN0cmluZyBcIlttYXhdXCIgLT4gTUFYXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYmluX2FsZ19vcFwiLCB4KSlcblxubGV0IHVuX2FsZ19vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IENPU0lOVVMgLT4gXCJbY29zXVwiXG4gIHwgU0lOVVMgLT4gXCJbc2luXVwiXG4gIHwgVEFOIC0+IFwiW3Rhbl1cIlxuICB8IEVYUCAtPiBcIltleHBdXCJcbiAgfCBTUVJUIC0+IFwiW3NxcnRdXCJcbiAgfCBJTlQgLT4gXCJbaW50XVwiXG4gIHwgTE9HIC0+IFwiW2xvZ11cIlxuICB8IFVNSU5VUyAtPiBcIi1cIlxuXG5sZXQgcHJpbnRfdW5fYWxnX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2FsZ19vcF90b19zdHJpbmcgb3ApXG5sZXQgdW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYWxnX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJbY29zXVwiIC0+IENPU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Npbl1cIiAtPiBTSU5VU1xuICB8IGBTdHJpbmcgXCJbdGFuXVwiIC0+IFRBTlxuICB8IGBTdHJpbmcgXCJbZXhwXVwiIC0+IEVYUFxuICB8IGBTdHJpbmcgXCJbc3FydF1cIiAtPiBTUVJUXG4gIHwgYFN0cmluZyBcIltpbnRdXCIgLT4gSU5UXG4gIHwgYFN0cmluZyBcIltsb2ddXCIgLT4gTE9HXG4gIHwgYFN0cmluZyBcIi1cIiAtPiBVTUlOVVNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCB1bl9hbGdfb3BcIiwgeCkpXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDUFVUSU1FIC0+IFwiW1RzaW1dXCJcbiAgfCBUSU1FX1ZBUiAtPiBcIltUXVwiXG4gIHwgRVZFTlRfVkFSIC0+IFwiW0VdXCJcbiAgfCBOVUxMX0VWRU5UX1ZBUiAtPiBcIltFLV1cIlxuICB8IFRNQVhfVkFSIC0+IFwiW1RtYXhdXCJcbiAgfCBFTUFYX1ZBUiAtPiBcIltFbWF4XVwiXG5cbmxldCBwcmludF9zdGF0ZV9hbGdfb3AgZiBvcCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAoc3RhdGVfYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHN0YXRlX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW1RzaW1dXCIgLT4gQ1BVVElNRVxuICB8IGBTdHJpbmcgXCJbVF1cIiAtPiBUSU1FX1ZBUlxuICB8IGBTdHJpbmcgXCJbRV1cIiAtPiBFVkVOVF9WQVJcbiAgfCBgU3RyaW5nIFwiW0UtXVwiIC0+IE5VTExfRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltUbWF4XVwiIC0+IFRNQVhfVkFSXG4gIHwgYFN0cmluZyBcIltFbWF4XVwiIC0+IEVNQVhfVkFSXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3Qgc3RhdGVfYWxnX29wXCIsIHgpKVxuXG5sZXQgYmluX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBTkQgLT4gXCImJlwiXG4gIHwgT1IgLT4gXCJ8fFwiXG5cbmxldCBwcmludF9iaW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5sZXQgYmluX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKGJpbl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9ib29sX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCImJlwiIC0+IEFORFxuICB8IGBTdHJpbmcgXCJ8fFwiIC0+IE9SXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IHVuX2Jvb2xfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBOT1QgLT4gXCJbbm90XVwiXG5cbmxldCBwcmludF91bl9ib29sX29wIGYgb3AgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2Jvb2xfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHVuX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxuXG5sZXQgdW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW25vdF1cIiAtPiBOT1RcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBib29sZWFuIG9wXCIsIHgpKVxuXG5sZXQgY29tcGFyZV9vcF90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEdSRUFURVIgLT4gXCI+XCJcbiAgfCBTTUFMTEVSIC0+IFwiPFwiXG4gIHwgRVFVQUwgLT4gXCI9XCJcbiAgfCBESUZGIC0+IFwiIT1cIlxuXG5sZXQgcHJpbnRfY29tcGFyZV9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcbmxldCBjb21wYXJlX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChjb21wYXJlX29wX3RvX3N0cmluZyBvcClcblxubGV0IGNvbXBhcmVfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIj5cIiAtPiBHUkVBVEVSXG4gIHwgYFN0cmluZyBcIjxcIiAtPiBTTUFMTEVSXG4gIHwgYFN0cmluZyBcIj1cIiAtPiBFUVVBTFxuICB8IGBTdHJpbmcgXCIhPVwiIC0+IERJRkZcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBjb21wYXJlX29wXCIsIHgpKVxuXG5sZXQgcHJpbnRfcmV2X2RlcCBmID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJyYXRlX29mX3J1bGUgWyVpXVwiIGlkXG4gICgqXCJyYXRlIG9mIHJ1bGUgJyVhJ1wiIChNb2RlbC5wcmludF9ydWxlIGVudikgaWQqKVxuICB8IEFMRyBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxnZWJyYWljIHZhcmlhYmxlIFslaV1cIiBpZFxuICAoKlwidmFyaWFibGUgJyVhJ1wiIChNb2RlbC5wcmludF9hbGcgZW52KSBpZCopXG4gIHwgTU9ESUYgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImludGVydmVudGlvbiBbJWldXCIgaWRcblxubGV0IHJldl9kZXBfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBSVUxFIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIlJVTEVcIjsgYEludCBpZCBdXG4gIHwgQUxHIGlkIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF1cbiAgfCBNT0RJRiBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF1cblxubGV0IHJldl9kZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXSAtPiBSVUxFIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQUxHXCI7IGBJbnQgaWQgXSAtPiBBTEcgaWRcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNT0RJRlwiOyBgSW50IGlkIF0gLT4gTU9ESUYgaWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCByZXZfZGVwXCIsIHgpKVxuXG5tb2R1bGUgRGVwU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSByZXZfZGVwXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50X3Jldl9kZXBcbmVuZClcblxubW9kdWxlIERlcFNldCA9IERlcFNldE1hcC5TZXRcblxubGV0IGRlcHNldF90b195b2pzb24geCA9XG4gIGBMaXN0IChEZXBTZXQuZm9sZCAoZnVuIHggYSAtPiByZXZfZGVwX3RvX3lvanNvbiB4IDo6IGEpIHggW10pXG5cbmxldCBkZXBzZXRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBEZXBTZXQuZW1wdHlcbiAgfCBgTGlzdCBsIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHggLT4gRGVwU2V0LmFkZCAocmV2X2RlcF9vZl95b2pzb24geCkgYWNjKVxuICAgICAgRGVwU2V0LmVtcHR5IGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgZGVwc2V0XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gRiBvZiBmbG9hdCB8IEkgb2YgaW50IHwgSTY0IG9mIEludDY0LnRcblxubGV0IGNhc3RfYmluX29wIH5vcF9mID9vcF9pID9vcF9pNjQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gRiAob3BfZiB4IHkpXG4gIHwgSSB4LCBGIHkgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpIHkpXG4gIHwgRiB4LCBJIHkgLT4gRiAob3BfZiB4IChmbG9hdF9vZl9pbnQgeSkpXG4gIHwgSSB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoZmxvYXRfb2ZfaW50IHkpKVxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeCB5KSlcbiAgfCBJIHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCAoSW50NjQub2ZfaW50IHgpIHkpKVxuICB8IEk2NCB4LCBJIHkgLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IE5vbmUgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggKEludDY0Lm9mX2ludCB5KSkpXG4gIHwgSTY0IHgsIEk2NCB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChJbnQ2NC50b19mbG9hdCB5KSlcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHggeSkpXG4gIHwgRiB4LCBJNjQgeSAtPiBGIChvcF9mIHggKEludDY0LnRvX2Zsb2F0IHkpKVxuICB8IEk2NCB4LCBGIHkgLT4gRiAob3BfZiAoSW50NjQudG9fZmxvYXQgeCkgeSlcblxubGV0IGNhc3RfdW5fb3AgP29wX2YgP29wX2kgP29wX2k2NCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5cIlxuICAgICAgfCBTb21lIG9wX2kgLT4gSSAob3BfaSAoaW50X29mX2Zsb2F0IHgpKSkpXG4gIHwgSTY0IHggLT5cbiAgICAobWF0Y2ggb3BfaTY0IHdpdGhcbiAgICB8IFNvbWUgb3BfaTY0IC0+IEk2NCAob3BfaTY0IHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpKSkpXG4gIHwgSSB4IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgeClcbiAgICB8IE5vbmUgLT5cbiAgICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcImNhc3RfdW5fb3BcIlxuICAgICAgfCBTb21lIG9wX2YgLT4gRiAob3BfZiAoZmxvYXRfb2ZfaW50IHgpKSkpXG5cbmxldCBjb21wYXJlIG4xIG4yID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCBGIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBGIHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChmbG9hdF9vZl9pbnQgeSlcbiAgfCBJIHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoZmxvYXRfb2ZfaW50IHgpIHlcbiAgfCBJIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC5vZl9pbnQgeCkgeVxuICB8IEk2NCB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHlcbiAgfCBJNjQgeCwgSSB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0Lm9mX2ludCB5KVxuICB8IEYgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoSW50NjQudG9fZmxvYXQgeSlcbiAgfCBJNjQgeCwgRiB5IC0+IFN0ZGxpYi5jb21wYXJlIChJbnQ2NC50b19mbG9hdCB4KSB5XG5cbmxldCBpc19ncmVhdGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA+IDBcbmxldCBpc19zbWFsbGVyIG4xIG4yID0gY29tcGFyZSBuMSBuMiA8IDBcbmxldCBpc19lcXVhbCBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPSAwXG5sZXQgYWRkIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCArLiApIH5vcF9pOiggKyApIH5vcF9pNjQ6SW50NjQuYWRkIG4xIG4yXG5sZXQgc3ViIG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6KCAtLiApIH5vcF9pOiggLSApIH5vcF9pNjQ6SW50NjQuc3ViIG4xIG4yXG5sZXQgbXVsdCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKi4gKSB+b3BfaTooICogKSB+b3BfaTY0OkludDY0Lm11bCBuMSBuMlxubGV0IG1pbiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOm1pbiB+b3BfaTptaW4gfm9wX2k2NDptaW4gbjEgbjJcbmxldCBtYXggbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptYXggfm9wX2k6bWF4IH5vcF9pNjQ6bWF4IG4xIG4yXG5cbmxldCByZW0gbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfaTooIG1vZCApIH5vcF9pNjQ6SW50NjQucmVtIH5vcF9mOm1vZF9mbG9hdCBuMSBuMlxuXG5sZXQgaW50ZXJuYWxfZGl2IG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCAvICkgfm9wX2k2NDpJbnQ2NC5kaXYgfm9wX2Y6KCAvLiApIG4xIG4yXG5cbmxldCBzdWNjIG4gPSBjYXN0X3VuX29wIH5vcF9mOigoICsuICkgMS4pIH5vcF9pOnN1Y2Mgfm9wX2k2NDpJbnQ2NC5zdWNjIG5cbmxldCBwcmVkIG4gPSBjYXN0X3VuX29wIH5vcF9mOihmdW4geCAtPiB4IC0uIDEuKSB+b3BfaTpwcmVkIH5vcF9pNjQ6SW50NjQucHJlZCBuXG5sZXQgbmVnIG4gPSBjYXN0X3VuX29wIH5vcF9mOiggfi0uICkgfm9wX2k6KCB+LSApIH5vcF9pNjQ6SW50NjQubmVnIG5cblxubGV0IHRvX2Zsb2F0IG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCBJIHggLT4gU29tZSAoZmxvYXRfb2ZfaW50IHgpXG4gIHwgSTY0IHggLT4gU29tZSAoSW50NjQudG9fZmxvYXQgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IFNvbWUgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gTm9uZSlcblxubGV0IHRvX2ludCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgRiB4IC0+IGludF9vZl9mbG9hdCB4XG4gIHwgSSB4IC0+IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19pbnQgeCAoKk1pZ2h0IGV4Y2VlZCB0aGViaWdnZXN0IDMyIGJpdHMgaW50ZWdlciopXG5cbmxldCB6ZXJvID0gSSAwXG5cbmxldCBpc196ZXJvID0gZnVuY3Rpb25cbiAgfCBJNjQgeCAtPiB4ID0gSW50NjQuemVyb1xuICB8IEkgeCAtPiB4ID0gMFxuICB8IEYgeCAtPiBUb29scy5mbG9hdF9pc196ZXJvIHhcblxubGV0IG9uZSA9IEkgMVxuXG5sZXQgaXNfc3RyaWN0bHlfcG9zaXRpdmUgPSBmdW5jdGlvblxuICB8IEYgeCAtPiB4ID4gMC5cbiAgfCBJIHggLT4geCA+IDBcbiAgfCBJNjQgeCAtPiB4ID4gSW50NjQuemVyb1xuXG5sZXQgcG9zX3BvdyBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9mOiggKiogKSB+b3BfaTpUb29scy5wb3cgfm9wX2k2NDpUb29scy5wb3c2NCBuMSBuMlxuXG5sZXQgcG93IHggbiA9XG4gIGlmIGlzX3plcm8gbiB8fCBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW5cbiAgICBwb3NfcG93IHggblxuICBlbHNlIChcbiAgICBtYXRjaCB0b19mbG9hdCB4IHdpdGhcbiAgICB8IFNvbWUgeCAtPiBwb3NfcG93IChGICgxLiAvLiB4KSkgKG5lZyBuKVxuICAgIHwgTm9uZSAtPiBGIG5hblxuICApXG5cbmxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByZXR0eV9wcmludCBmID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVnXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcblxubGV0IHByaW50X29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgeFxuICB8IEk2NCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlTGRcIiB4XG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKHN0cmluZ19vZl9mbG9hdCB4KVxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gKCkpXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IEYgeCAtPiBzdHJpbmdfb2ZfZmxvYXQgeFxuICB8IEk2NCB4IC0+IEludDY0LnRvX3N0cmluZyB4XG4gIHwgSSB4IC0+IHN0cmluZ19vZl9pbnQgeFxuXG5sZXQgcmVjIGl0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgaXRlcmkgZiAoZiBuIHgpIChwcmVkIG4pXG4gIGVsc2VcbiAgICB4XG5cbmxldCByZWMgbWF5YmVfaXRlcmkgZiB4IG4gPVxuICBpZiBpc19zdHJpY3RseV9wb3NpdGl2ZSBuIHRoZW4gKFxuICAgIG1hdGNoIGYgbiB4IHdpdGhcbiAgICB8IE5vbmUgLT4geFxuICAgIHwgU29tZSB4JyAtPiBtYXliZV9pdGVyaSBmIHgnIChwcmVkIG4pXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG9mX3N0cmluZyB4ID1cbiAgdHJ5IEkgKGludF9vZl9zdHJpbmcgeCkgd2l0aCBGYWlsdXJlIF8gLT4gRiAoZmxvYXRfb2Zfc3RyaW5nIHgpXG5cbmxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICB8IEkgeCAtPiBgSW50IHhcbiAgfCBJNjQgeCAtPiBgU3RyaW5nIChJbnQ2NC50b19zdHJpbmcgeClcbiAgfCBGIHggLT5cbiAgICAobWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGBGbG9hdCB4XG4gICAgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPiBgU3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgeCkpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgeCAtPiBJIHhcbiAgfCBgRmxvYXQgeCAtPiBGIHhcbiAgfCBgU3RyaW5nIG4gYXMgeCAtPlxuICAgICh0cnkgSTY0IChJbnQ2NC5vZl9zdHJpbmcgbilcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAodHJ5IEYgKGZsb2F0X29mX3N0cmluZyBuKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBOYnJcIiwgeCkpXG5cbmxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX3QgcCBsYiA9IG9mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxubGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IG9mX2Jpbl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLk1VTFQgLT4gbXVsdFxuICB8IE9wZXJhdG9yLlNVTSAtPiBhZGRcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICBmdW4geCB5IC0+XG4gICAgICBpZiAobm90IChpc196ZXJvIHkpKSAmJiBpc196ZXJvIChyZW0geCB5KSB0aGVuXG4gICAgICAgIGludGVybmFsX2RpdiB4IHlcbiAgICAgIGVsc2VcbiAgICAgICAgY2FzdF9iaW5fb3Agfm9wX2Y6KCAvLiApIHggeVxuICB8IE9wZXJhdG9yLk1JTlVTIC0+IHN1YlxuICB8IE9wZXJhdG9yLk1PRFVMTyAtPiByZW1cbiAgfCBPcGVyYXRvci5NSU4gLT4gbWluXG4gIHwgT3BlcmF0b3IuTUFYIC0+IG1heFxuICB8IE9wZXJhdG9yLlBPVyAtPiBwb3dcblxubGV0IG9mX3VuX2FsZ19vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuTE9HIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6bG9nIHhcbiAgfCBPcGVyYXRvci5TUVJUIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6c3FydCB4XG4gIHwgT3BlcmF0b3IuRVhQIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6ZXhwIHhcbiAgfCBPcGVyYXRvci5TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNpbiB4XG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmNvcyB4XG4gIHwgT3BlcmF0b3IuVEFOIC0+IGZ1biB4IC0+IGNhc3RfdW5fb3Agfm9wX2Y6dGFuIHhcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9pOihmdW4gbiAtPiBuKSB+b3BfaTY0OihmdW4gbiAtPiBuKSB4XG4gIHwgT3BlcmF0b3IuVU1JTlVTIC0+IG5lZ1xuXG5sZXQgb2ZfY29tcGFyZV9vcCA9IGZ1bmN0aW9uXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPiBpc19ncmVhdGVyXG4gIHwgT3BlcmF0b3IuU01BTExFUiAtPiBpc19zbWFsbGVyXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT4gaXNfZXF1YWxcbiAgfCBPcGVyYXRvci5ESUZGIC0+IGZ1biB2IHYnIC0+IG5vdCAoaXNfZXF1YWwgdiB2JylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBTeW50YXhfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gTWFsZm9ybWVkX0RlY2wgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5leGNlcHRpb24gSW50ZXJuYWxfRXJyb3Igb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG5cbmxldCB3YXJuaW5nX2J1ZmZlciA6IChMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSkgbGlzdCByZWYgPVxuICByZWYgW11cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgZGVjbHM6IChzdHJpbmcgKiAnYSkgYXJyYXk7IGZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQgfVxuXG5sZXQgbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhID1cbiAgbGV0IGJhZCA9XG4gICAgbWF0Y2ggZm9yYmlkZGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IFNvbWUgcyAtPiBmdW4geCAtPiBNb2RzLlN0cmluZ1NldC5tZW0geCBzXG4gIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgbWFwICgoeCwgcG9zKSwgXykgLT5cbiAgICAgIGlmIGJhZCB4IHx8IE1vZHMuU3RyaW5nTWFwLm1lbSB4IG1hcCB0aGVuXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMYWJlbCAnXCIgXiB4IF4gXCInIGFscmVhZHkgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgZWxzZVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgeCBpIG1hcClcbiAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhXG5cbmxldCBjcmVhdGUgP2ZvcmJpZGRlbiBhID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwIChmdW4gKCh4LCBfKSwgeSkgLT4geCwgeSkgYTtcbiAgICBmaW5kZXIgPSBuYW1lX21hcF9vZl9hcnJheSA/Zm9yYmlkZGVuIGE7XG4gIH1cblxubGV0IGNyZWF0ZV9mcm9tX2xpc3QgP2ZvcmJpZGRlbiBsID0gY3JlYXRlID9mb3JiaWRkZW4gKEFycmF5Lm9mX2xpc3QgbClcblxuKCogVE9ETyBzZWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcyAqKVxubGV0IGNyZWF0ZV9ub19sb2MgP2ZvcmJpZGRlbiBhID1cbiAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+ICh4LCBMb2MuZHVtbXkpLCB5KSBhIHw+IGNyZWF0ZSA/Zm9yYmlkZGVuXG5cbmxldCBzaXplIG5kID0gQXJyYXkubGVuZ3RoIG5kLmRlY2xzXG5sZXQgZWx0X25hbWUgbmQgaSA9IGZzdCBuZC5kZWNscy4oaSlcblxubGV0IGVsdF9pZCA/KGtpbmQgPSBcImVsZW1lbnRcIikgbmQgKHMsIHBvcykgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzIG5kLmZpbmRlciB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiXFxcIiVzXFxcIiBpcyBub3QgYSBkZWNsYXJlZCAlcy5cIiBzIGtpbmQsIHBvcykpXG5cbmxldCBwcmludCB+c2VwIHBwIGYgbmQgPVxuICBQcC5hcnJheSBzZXAgKGZ1biBpIGYgKG4sIGVsKSAtPiBwcCBpIG4gZiBlbCkgZiBuZC5kZWNsc1xuXG5sZXQgZGVidWdfcHJpbnQgcHIgZiBuZCA9XG4gIHByaW50IH5zZXA6UHAuc3BhY2VcbiAgICAoZnVuIGkgbiBmIGVsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVpPiVzOiBAWzwyPiVhQF1AXVwiIGkgbiBwciBlbClcbiAgICBmIG5kXG5cbmxldCBmb2xkIGYgYWNjIG5kID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgYWNjIChuYSwgeCkgLT4gZiBpIG5hIGFjYyB4KSBhY2MgbmQuZGVjbHNcblxubGV0IG1hcCBmIG5kID1cbiAgeyBkZWNscyA9IEFycmF5Lm1hcCAoZnVuIChzLCB2KSAtPiBzLCBmIHMgdikgbmQuZGVjbHM7IGZpbmRlciA9IG5kLmZpbmRlciB9XG5cbmxldCBtYXBpIGYgbmQgPVxuICB7XG4gICAgZGVjbHMgPSBBcnJheS5tYXBpIChmdW4gaSAocywgdikgLT4gcywgZiBpIHMgdikgbmQuZGVjbHM7XG4gICAgZmluZGVyID0gbmQuZmluZGVyO1xuICB9XG5cbmxldCBlbHRfdmFsIG5kIGkgPSBzbmQgbmQuZGVjbHMuKGkpXG5cbmxldCB0b19qc29uIGF1eCBuZCA9XG4gIGBMaXN0XG4gICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICh4LCBhKSBhY2MgLT4gYEFzc29jIFsgXCJuYW1lXCIsIGBTdHJpbmcgeDsgXCJkZWNsXCIsIGF1eCBhIF0gOjogYWNjKVxuICAgICAgIG5kLmRlY2xzIFtdKVxuXG5sZXQgb2ZfanNvbiBhdXggPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgZGVjbHMgPVxuICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIGBTdHJpbmcgeCk7IChcImRlY2xcIiwgYSkgXVxuICAgICAgICAgIHwgYEFzc29jIFsgKFwiZGVjbFwiLCBhKTsgKFwibmFtZVwiLCBgU3RyaW5nIHgpIF0gLT5cbiAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IHgsIGF1eCBhXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSB2YWxpZCBOYW1lZERlY2wgZWxlbWVudFwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGNyZWF0ZSBkZWNsc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIHAgbGlzdCA9XG4gIGxldCByZWMgYXV4IGxpc3QgYnVmZmVyIG91dHB1dCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBwIGggLT4gYXV4IHQgW10gKChoIDo6IGJ1ZmZlcikgOjogb3V0cHV0KVxuICAgIHwgaCA6OiB0IC0+IGF1eCB0IChoIDo6IGJ1ZmZlcikgb3V0cHV0XG4gICAgfCBbXSAtPiBvdXRwdXRcbiAgaW5cbiAgbGV0IHJldl9jb25jYXQgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKExpc3QuZm9sZF9sZWZ0IChmdW4gb3V0cHV0IGEgLT4gYSA6OiBvdXRwdXQpKSBbXSBsaXN0XG4gIGluXG4gIHJldl9jb25jYXQgKGF1eCBsaXN0IFtdIFtdKVxuXG5sZXQgcmVjIGxhc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9sYXN0XCJcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiBsIC0+IGxhc3QgbFxuXG5sZXQgcmVjIGF1eF9wb3BfbGFzdCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwibGlzdF9wb3BfbGFzdFwiXG4gIHwgWyB4IF0gLT4gTGlzdC5yZXYgYWNjLCB4XG4gIHwgaCA6OiB0IC0+IGF1eF9wb3BfbGFzdCAoaCA6OiBhY2MpIHRcblxubGV0IHBvcF9sYXN0IGwgPSBhdXhfcG9wX2xhc3QgW10gbFxuXG5sZXQgY29uc19vcHRpb24gaCB0ID1cbiAgbWF0Y2ggaCB3aXRoXG4gIHwgU29tZSB4IC0+IHggOjogdFxuICB8IE5vbmUgLT4gdFxuXG5sZXQgcmVjIHNtYXJ0X2ZpbHRlciBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X2ZpbHRlciBmIHEgaW5cbiAgICBpZiBmIHQgdGhlblxuICAgICAgaWYgcSA9PSBxJyB0aGVuXG4gICAgICAgIGxcbiAgICAgIGVsc2VcbiAgICAgICAgdCA6OiBxJ1xuICAgIGVsc2VcbiAgICAgIHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZWMgc21hcnRfbWFwIGYgPSBmdW5jdGlvblxuICB8IHQgOjogcSBhcyBsIC0+XG4gICAgbGV0IHEnID0gc21hcnRfbWFwIGYgcSBpblxuICAgIGxldCB0JyA9IGYgdCBpblxuICAgIGlmIHQnID09IHQgJiYgcScgPT0gcSB0aGVuXG4gICAgICBsXG4gICAgZWxzZVxuICAgICAgdCcgOjogcSdcbiAgfCBsIC0+IGxcblxubGV0IHJldl9tYXBpIGYgbCA9XG4gIGxldCByZWMgYXV4X21hcGkgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4X21hcGkgKHByZWQgaSkgKGYgaSBoIDo6IGFjYykgcVxuICBpblxuICBhdXhfbWFwaSAoTGlzdC5sZW5ndGggbCAtIDEpIFtdIGxcblxubGV0IHJlYyBtYXBfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGNvbnNfb3B0aW9uIChmIGgpIChtYXBfb3B0aW9uIGYgcSlcblxubGV0IGV4aXN0c191bmlxIGYgbCA9XG4gIGxldCByZWMgc2Vjb25kID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGggOjogdCAtPiAobm90IChmIGgpKSAmJiBzZWNvbmQgdFxuICBpblxuICBsZXQgcmVjIGZpcnN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGYgaCB0aGVuXG4gICAgICAgIHNlY29uZCB0XG4gICAgICBlbHNlXG4gICAgICAgIGZpcnN0IHRcbiAgaW5cbiAgZmlyc3QgbFxuXG5sZXQgbWVyZ2VfdW5pcSBjbXAgbDEgbDIgPVxuICBsZXQgcmVjIGF1eF9tZXJnZV91bmlxIGwxIGwyIGsgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgXyAtPiBrIGwyXG4gICAgfCBfLCBbXSAtPiBrIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIGwyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgYXV4X21lcmdlX3VuaXEgbDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQyIHRoZW5cbiAgICAgICAgICAgICAgayBsMlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMiA6OiBvKSlcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X21lcmdlX3VuaXEgdDEgdDIgKGZ1biBvIC0+XG4gICAgICAgICAgICBpZiBvID09IHQxIHRoZW5cbiAgICAgICAgICAgICAgayBsMVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBrIChoMSA6OiBvKSlcbiAgaW5cbiAgYXV4X21lcmdlX3VuaXEgbDEgbDIgKGZ1biB4IC0+IHgpXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgZiBsIGFjYyA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCBmIHQgKGYgaCA6OiBhY2MpXG5cbmxldCByZWMgbWFwX2ZsYXR0ZW4gZiA9IGZ1bmN0aW9uXG4gICgqIGxpc3RfYmluZCAqKVxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiB0IC0+IExpc3QuYXBwZW5kIChmIGgpIChtYXBfZmxhdHRlbiBmIHQpXG4oKiBMaXN0LnJldlxuICAgKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIChMaXN0LnJldl9tYXAgZiBsKSlcbiopXG5cbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIGwgPVxuICBsZXQgcmVjIGF1eCBsYXN0IGwgYWNjID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGggOjogcSB3aGVuIGxhc3QgPSBoIC0+IGF1eCBsYXN0IHEgYWNjXG4gICAgfCBoIDo6IHEgLT4gYXV4IGggcSAoaCA6OiBhY2MpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoIDo6IHEgLT4gYXV4IGggcSBbIGggXVxuXG5sZXQgcmVjIGZvbGRfcmlnaHRfbWFwIGYgbCB4ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW10sIHhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgdCcsIHgnID0gZm9sZF9yaWdodF9tYXAgZiB0IHggaW5cbiAgICBsZXQgaCcsIHgnJyA9IGYgaCB4JyBpblxuICAgIGgnIDo6IHQnLCB4JydcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgeCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHhcbiAgfCBbXSwgXyA6OiBfIHwgXyA6OiBfLCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImxpc3RfZm9sZF9sZWZ0MlwiKVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPiBmb2xkX2xlZnQyIGYgKGYgeCBoMSBoMikgdDEgdDJcblxubGV0IHJhbmRvbSBycyBsID0gTGlzdC5udGggbCAoUmFuZG9tLlN0YXRlLmludCBycyAoTGlzdC5sZW5ndGggbCkpXG5cbmxldCBmaW5kX29wdGlvbiAocCA6ICdhIC0+IGJvb2wpIChsIDogJ2EgbGlzdCkgOiAnYSBvcHRpb24gPVxuICB0cnkgU29tZSAoTGlzdC5maW5kIHAgbCkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggJCQgKSA9IGNvbnNfb3B0aW9uXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICBtdXRhYmxlIHNpemU6IGludDtcbiAgZGljdDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbmxldCBjcmVhdGUgc2l6ZSA9XG4gIHsgc2l6ZSA9IDA7IGJhZyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIHNpemUgKC0xKTsgZGljdCA9IEhhc2h0YmwuY3JlYXRlIHNpemUgfVxuXG5sZXQgcHJpbnQgZiBzID1cbiAgaWYgcy5zaXplIDw9IDAgdGhlblxuICAgIFBwLmVtcHR5X3NldCBmXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsgXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIHMuc2l6ZSAtIDIgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKTtcbiAgICAgICAgUHAuY29tbWEgZlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAocy5zaXplIC0gMSkpIGluXG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIH1cIlxuICApXG5cbmxldCBpc19lbXB0eSBzID0gcy5zaXplID0gMFxuXG5sZXQgYWRkIHggcyA9XG4gIGlmIG5vdCAoSGFzaHRibC5tZW0gcy5kaWN0IHgpIHRoZW4gKFxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHMuc2l6ZSB4IGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIHMuZGljdCB4IHMuc2l6ZSBpblxuICAgIHMuc2l6ZSA8LSBzdWNjIHMuc2l6ZVxuICApXG5cbmxldCByZW1vdmUgeCBzID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IEhhc2h0YmwuZmluZCBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIHMuZGljdCB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBvcyA8IHMuc2l6ZSAtIDEgdGhlbiAoXG4gICAgICAgIGxldCBsYXN0ID0gTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpIGluXG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgbGFzdCBwb3MgaW5cbiAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgcy5iYWcgcG9zIGxhc3RcbiAgICAgIClcbiAgICBpblxuICAgIHMuc2l6ZSA8LSBwcmVkIHMuc2l6ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiAoKVxuXG5sZXQgc2l6ZSBzID0gcy5zaXplXG5cbmxldCByYW5kb20gcnMgcyA9XG4gIGlmIHMuc2l6ZSA8IDEgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChSYW5kb20uU3RhdGUuaW50IHJzIHMuc2l6ZSkpXG5cbmxldCBmb2xkIGYgcyBhY2MgPVxuICBUb29scy5yZWN0aSAoZnVuIGFjYyBpIC0+IGYgKE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIGkpIGFjYykgYWNjIHMuc2l6ZVxuXG5sZXQgbWVtIHggcyA9IEhhc2h0YmwubWVtIHMuZGljdCB4XG4iLCJ0eXBlICdhIHQgPSAnYSBsaXN0XG5cbmxldCBjcmVhdGUgX2kgX2RlZmF1bHQgPSBbXVxubGV0IGFkZCB4IHQgPSB4IDo6IHRcbmxldCBpdGVyIGYgdCA9IExpc3QuaXRlciBmIChMaXN0LnJldiB0KVxubGV0IGNsZWFuIF8gPSBbXVxuIiwibW9kdWxlIHR5cGUgSGFzaCA9IHNpZ1xuICB0eXBlIGhhc2hlZF9saXN0XG4gIHR5cGUgZWx0XG4gIHR5cGUgY2FjaGVcblxuICB2YWwgaW50X29mX2hhc2hlZF9saXN0IDogaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBjb21wYXJlIDogaGFzaGVkX2xpc3QgLT4gaGFzaGVkX2xpc3QgLT4gaW50XG4gIHZhbCBpbml0IDogdW5pdCAtPiBjYWNoZVxuICB2YWwgaGFzaCA6IGNhY2hlIC0+IGVsdCBsaXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGNvbnMgOiBjYWNoZSAtPiBlbHQgLT4gaGFzaGVkX2xpc3QgLT4gY2FjaGUgKiBoYXNoZWRfbGlzdFxuICB2YWwgZW1wdHkgOiBoYXNoZWRfbGlzdFxuICB2YWwgcHJpbnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGhhc2hlZF9saXN0IC0+IHVuaXRcbiAgdmFsIHByaW50X2NhY2hlIDogRm9ybWF0LmZvcm1hdHRlciAtPiBjYWNoZSAtPiB1bml0XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoQSA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBBLnRcbiAgICB0eXBlIGVsdF9pZCA9IGludFxuICAgIHR5cGUgaGFzaGVkX2xpc3QgPSBpbnRcblxuICAgIGxldCBpbnRfb2ZfaGFzaGVkX2xpc3QgKGggOiBoYXNoZWRfbGlzdCkgOiBpbnQgPSBoXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICBtb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKEEpXG5cbiAgICB0eXBlIGNhY2hlID0ge1xuICAgICAgZGljdGlvbmFyeTogZWx0X2lkIFNldE1hcC5NYXAudDtcbiAgICAgIG5leHRfZWx0X2lkOiBlbHRfaWQ7XG4gICAgICBjb25zOiBoYXNoZWRfbGlzdCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gICAgICBuZXh0X2xpc3RfaWQ6IGhhc2hlZF9saXN0O1xuICAgIH1cblxuICAgIGxldCBmc3RfZWx0X2lkID0gMVxuICAgIGxldCBuZXh0X2VsdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9lbHRfaWQgY2FjaGUgPVxuICAgICAgKCBjYWNoZS5uZXh0X2VsdF9pZCxcbiAgICAgICAgeyBjYWNoZSB3aXRoIG5leHRfZWx0X2lkID0gbmV4dF9lbHRfaWQgY2FjaGUubmV4dF9lbHRfaWQgfSApXG5cbiAgICBsZXQgZnN0X2xpc3RfaWQgPSAxXG4gICAgbGV0IG5leHRfbGlzdF9pZCA9IHN1Y2NcblxuICAgIGxldCBmcmVzaF9saXN0X2lkIGNhY2hlID1cbiAgICAgICggeyBjYWNoZSB3aXRoIG5leHRfbGlzdF9pZCA9IG5leHRfbGlzdF9pZCBjYWNoZS5uZXh0X2xpc3RfaWQgfSxcbiAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIClcblxuICAgIGxldCBpbml0ICgpID1cbiAgICAgIHtcbiAgICAgICAgZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuZW1wdHk7XG4gICAgICAgIG5leHRfZWx0X2lkID0gZnN0X2VsdF9pZDtcbiAgICAgICAgY29ucyA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDAgTm9uZTtcbiAgICAgICAgbmV4dF9saXN0X2lkID0gZnN0X2xpc3RfaWQ7XG4gICAgICB9XG5cbiAgICBsZXQgZW1wdHkgPSAwXG5cbiAgICBsZXQgaGFzaF9lbHQgY2FjaGUgZWx0ID1cbiAgICAgIG1hdGNoIFNldE1hcC5NYXAuZmluZF9vcHRpb24gZWx0IGNhY2hlLmRpY3Rpb25hcnkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gY2FjaGUsIGlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWQsIGNhY2hlID0gZnJlc2hfZWx0X2lkIGNhY2hlIGluXG4gICAgICAgIHsgY2FjaGUgd2l0aCBkaWN0aW9uYXJ5ID0gU2V0TWFwLk1hcC5hZGQgZWx0IGlkIGNhY2hlLmRpY3Rpb25hcnkgfSwgaWRcblxuICAgIGxldCBjb25zIGNhY2hlIGhlYWQgdGFpbCA9XG4gICAgICBsZXQgY2FjaGUsIGhhc2hfaGVhZCA9IGhhc2hfZWx0IGNhY2hlIGhlYWQgaW5cbiAgICAgIGxldCBzdWJ0YWIgPVxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYWNoZS5jb25zIGhhc2hfaGVhZCB3aXRoXG4gICAgICAgIHwgU29tZSBzdWJ0YWIgLT4gc3VidGFiXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzdWJ0YWIgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmUgaW5cbiAgICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYWNoZS5jb25zIGhhc2hfaGVhZCAoU29tZSBzdWJ0YWIpIGluXG4gICAgICAgICAgc3VidGFiXG4gICAgICBpblxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgc3VidGFiIHRhaWwgd2l0aFxuICAgICAgfCBTb21lIGhhc2ggLT4gY2FjaGUsIGhhc2hcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgY2FjaGUsIGhhc2ggPSBmcmVzaF9saXN0X2lkIGNhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHN1YnRhYiB0YWlsIChTb21lIGhhc2gpIGluXG4gICAgICAgIGNhY2hlLCBoYXNoXG5cbiAgICBsZXQgcmVjIGhhc2ggY2FjaGUgbGlzdCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gY2FjaGUsIGVtcHR5XG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgY2FjaGUsIHQgPSBoYXNoIGNhY2hlIHQgaW5cbiAgICAgICAgY29ucyBjYWNoZSBoIHRcblxuICAgIGxldCBwcmludCBmb3JtYXR0ZXIgPSBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlaVwiXG5cbiAgICBsZXQgcHJpbnRfY2FjaGUgZm9ybWF0dGVyIGNhY2hlID1cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlclxuICAgICAgICAgIFwiQ2FjaGVcXG4gbmV4dF9mcmVzaF9saXN0X2lkOiAlaTsgbmV4dF9mcmVzaF9lbHRfaWQ6ICVpXFxuXCJcbiAgICAgICAgICBjYWNoZS5uZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9lbHRfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTZXRNYXAuTWFwLml0ZXJcbiAgICAgICAgICAoZnVuIGEgaSAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCJESUM6JWE6JWlcXG5cIiBBLnByaW50IGEgaSlcbiAgICAgICAgICBjYWNoZS5kaWN0aW9uYXJ5XG4gICAgICBpblxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGEgb3B0IC0+XG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgb3B0IC0+XG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgICAgICAgIChmdW4gYiBrIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGsgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiKCVpLCVpKS0+JWkgXFxuXCIgYSBiIGspXG4gICAgICAgICAgICAgIG9wdClcbiAgICAgICAgY2FjaGUuY29uc1xuICBlbmRcbiIsInR5cGUgdCA9IHsgbnVtOiBpbnQ7IGRlbjogaW50IH1cblxubGV0IHNpZ24gZiA9XG4gIGlmIGYubnVtID0gMCB0aGVuXG4gICAgeyBudW0gPSAwOyBkZW4gPSAxIH1cbiAgZWxzZSBpZiBmLmRlbiA8IDAgdGhlblxuICAgIHsgbnVtID0gLWYubnVtOyBkZW4gPSAtZi5kZW4gfVxuICBlbHNlXG4gICAgZlxuXG5sZXQgc2ltcGxpZnkgZiA9XG4gIGxldCBnY2QgPSBUb29scy5nY2RfMiBmLm51bSBmLmRlbiBpblxuICBzaWduIHsgbnVtID0gZi5udW0gLyBnY2Q7IGRlbiA9IGYuZGVuIC8gZ2NkIH1cblxubGV0IGFkZCBhIGIgPVxuICBzaW1wbGlmeSB7IG51bSA9IChhLm51bSAqIGIuZGVuKSArIChiLm51bSAqIGEuZGVuKTsgZGVuID0gYi5kZW4gKiBhLmRlbiB9XG5cbmxldCBvcCBmID0geyBmIHdpdGggbnVtID0gLWYubnVtIH1cbmxldCBzdWIgYSBiID0gYWRkIGEgKG9wIGIpXG5sZXQgbXVsdCBhIGIgPSBzaW1wbGlmeSB7IG51bSA9IGEubnVtICogYi5udW07IGRlbiA9IGEuZGVuICogYi5kZW4gfVxuXG5sZXQgaW52IGEgPVxuICBpZiBhLm51bSA9IDAgdGhlblxuICAgIE5vbmVcbiAgZWxzZVxuICAgIFNvbWUgeyBudW0gPSBhLmRlbjsgZGVuID0gYS5udW0gfVxuXG5sZXQgZGl2IGEgYiA9XG4gIG1hdGNoIGludiBiIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGJfaW52IC0+IFNvbWUgKG11bHQgYSBiX2ludilcblxubGV0IHplcm8gPSB7IG51bSA9IDA7IGRlbiA9IDEgfVxubGV0IGlzX2VxdWFsIGEgYiA9IGEgPSBiXG5sZXQgb2ZfaW50IGkgPSBzaW1wbGlmeSB7IG51bSA9IGk7IGRlbiA9IDEgfVxubGV0IGlzX3plcm8gYSA9IGEubnVtID0gMFxubGV0IG9uZSA9IG9mX2ludCAxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IHdhaXRpbmdfZWx0czogJ2EgbGlzdDsgbGlzdDogJ2EgbGlzdCB9XG5cbmxldCBlbXB0eSA9IHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBbXSB9XG5sZXQgaXNfZW1wdHkgdCA9IHQud2FpdGluZ19lbHRzID0gW10gJiYgdC5saXN0ID0gW11cbmxldCBwdXNoIGEgdCA9IHsgdCB3aXRoIHdhaXRpbmdfZWx0cyA9IGEgOjogdC53YWl0aW5nX2VsdHMgfVxuXG5sZXQgcmVjIHBvcCB0ID1cbiAgbWF0Y2ggdC5saXN0IHdpdGhcbiAgfCBoZWFkIDo6IHRhaWwgLT4geyB0IHdpdGggbGlzdCA9IHRhaWwgfSwgU29tZSBoZWFkXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC53YWl0aW5nX2VsdHMgd2l0aFxuICAgIHwgW10gLT4gdCwgTm9uZVxuICAgIHwgbGlzdCAtPiBwb3AgeyB3YWl0aW5nX2VsdHMgPSBbXTsgbGlzdCA9IExpc3QucmV2IGxpc3QgfSlcbiIsIigqIENvcHlyaWdodCAoYykgMjAxMSwgSm9uYXRoYW4gRGVycXVlIC0gTUlUIGxpY2Vuc2VkICopXG5cbmxldCAoICYmJiApID0gSW50MzIubG9nYW5kXG5sZXQgKCBeXl4gKSA9IEludDMyLmxvZ3hvclxubGV0ICggPj4+ICkgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG5cbmxldCBjcmNfdGFibGUgPVxuICBbfFxuICAgIDB4MDAwMDAwMDBsO1xuICAgIDB4NzcwNzMwOTZsO1xuICAgIDB4ZWUwZTYxMmNsO1xuICAgIDB4OTkwOTUxYmFsO1xuICAgIDB4MDc2ZGM0MTlsO1xuICAgIDB4NzA2YWY0OGZsO1xuICAgIDB4ZTk2M2E1MzVsO1xuICAgIDB4OWU2NDk1YTNsO1xuICAgIDB4MGVkYjg4MzJsO1xuICAgIDB4NzlkY2I4YTRsO1xuICAgIDB4ZTBkNWU5MWVsO1xuICAgIDB4OTdkMmQ5ODhsO1xuICAgIDB4MDliNjRjMmJsO1xuICAgIDB4N2ViMTdjYmRsO1xuICAgIDB4ZTdiODJkMDdsO1xuICAgIDB4OTBiZjFkOTFsO1xuICAgIDB4MWRiNzEwNjRsO1xuICAgIDB4NmFiMDIwZjJsO1xuICAgIDB4ZjNiOTcxNDhsO1xuICAgIDB4ODRiZTQxZGVsO1xuICAgIDB4MWFkYWQ0N2RsO1xuICAgIDB4NmRkZGU0ZWJsO1xuICAgIDB4ZjRkNGI1NTFsO1xuICAgIDB4ODNkMzg1YzdsO1xuICAgIDB4MTM2Yzk4NTZsO1xuICAgIDB4NjQ2YmE4YzBsO1xuICAgIDB4ZmQ2MmY5N2FsO1xuICAgIDB4OGE2NWM5ZWNsO1xuICAgIDB4MTQwMTVjNGZsO1xuICAgIDB4NjMwNjZjZDlsO1xuICAgIDB4ZmEwZjNkNjNsO1xuICAgIDB4OGQwODBkZjVsO1xuICAgIDB4M2I2ZTIwYzhsO1xuICAgIDB4NGM2OTEwNWVsO1xuICAgIDB4ZDU2MDQxZTRsO1xuICAgIDB4YTI2NzcxNzJsO1xuICAgIDB4M2MwM2U0ZDFsO1xuICAgIDB4NGIwNGQ0NDdsO1xuICAgIDB4ZDIwZDg1ZmRsO1xuICAgIDB4YTUwYWI1NmJsO1xuICAgIDB4MzViNWE4ZmFsO1xuICAgIDB4NDJiMjk4NmNsO1xuICAgIDB4ZGJiYmM5ZDZsO1xuICAgIDB4YWNiY2Y5NDBsO1xuICAgIDB4MzJkODZjZTNsO1xuICAgIDB4NDVkZjVjNzVsO1xuICAgIDB4ZGNkNjBkY2ZsO1xuICAgIDB4YWJkMTNkNTlsO1xuICAgIDB4MjZkOTMwYWNsO1xuICAgIDB4NTFkZTAwM2FsO1xuICAgIDB4YzhkNzUxODBsO1xuICAgIDB4YmZkMDYxMTZsO1xuICAgIDB4MjFiNGY0YjVsO1xuICAgIDB4NTZiM2M0MjNsO1xuICAgIDB4Y2ZiYTk1OTlsO1xuICAgIDB4YjhiZGE1MGZsO1xuICAgIDB4MjgwMmI4OWVsO1xuICAgIDB4NWYwNTg4MDhsO1xuICAgIDB4YzYwY2Q5YjJsO1xuICAgIDB4YjEwYmU5MjRsO1xuICAgIDB4MmY2ZjdjODdsO1xuICAgIDB4NTg2ODRjMTFsO1xuICAgIDB4YzE2MTFkYWJsO1xuICAgIDB4YjY2NjJkM2RsO1xuICAgIDB4NzZkYzQxOTBsO1xuICAgIDB4MDFkYjcxMDZsO1xuICAgIDB4OThkMjIwYmNsO1xuICAgIDB4ZWZkNTEwMmFsO1xuICAgIDB4NzFiMTg1ODlsO1xuICAgIDB4MDZiNmI1MWZsO1xuICAgIDB4OWZiZmU0YTVsO1xuICAgIDB4ZThiOGQ0MzNsO1xuICAgIDB4NzgwN2M5YTJsO1xuICAgIDB4MGYwMGY5MzRsO1xuICAgIDB4OTYwOWE4OGVsO1xuICAgIDB4ZTEwZTk4MThsO1xuICAgIDB4N2Y2YTBkYmJsO1xuICAgIDB4MDg2ZDNkMmRsO1xuICAgIDB4OTE2NDZjOTdsO1xuICAgIDB4ZTY2MzVjMDFsO1xuICAgIDB4NmI2YjUxZjRsO1xuICAgIDB4MWM2YzYxNjJsO1xuICAgIDB4ODU2NTMwZDhsO1xuICAgIDB4ZjI2MjAwNGVsO1xuICAgIDB4NmMwNjk1ZWRsO1xuICAgIDB4MWIwMWE1N2JsO1xuICAgIDB4ODIwOGY0YzFsO1xuICAgIDB4ZjUwZmM0NTdsO1xuICAgIDB4NjViMGQ5YzZsO1xuICAgIDB4MTJiN2U5NTBsO1xuICAgIDB4OGJiZWI4ZWFsO1xuICAgIDB4ZmNiOTg4N2NsO1xuICAgIDB4NjJkZDFkZGZsO1xuICAgIDB4MTVkYTJkNDlsO1xuICAgIDB4OGNkMzdjZjNsO1xuICAgIDB4ZmJkNDRjNjVsO1xuICAgIDB4NGRiMjYxNThsO1xuICAgIDB4M2FiNTUxY2VsO1xuICAgIDB4YTNiYzAwNzRsO1xuICAgIDB4ZDRiYjMwZTJsO1xuICAgIDB4NGFkZmE1NDFsO1xuICAgIDB4M2RkODk1ZDdsO1xuICAgIDB4YTRkMWM0NmRsO1xuICAgIDB4ZDNkNmY0ZmJsO1xuICAgIDB4NDM2OWU5NmFsO1xuICAgIDB4MzQ2ZWQ5ZmNsO1xuICAgIDB4YWQ2Nzg4NDZsO1xuICAgIDB4ZGE2MGI4ZDBsO1xuICAgIDB4NDQwNDJkNzNsO1xuICAgIDB4MzMwMzFkZTVsO1xuICAgIDB4YWEwYTRjNWZsO1xuICAgIDB4ZGQwZDdjYzlsO1xuICAgIDB4NTAwNTcxM2NsO1xuICAgIDB4MjcwMjQxYWFsO1xuICAgIDB4YmUwYjEwMTBsO1xuICAgIDB4YzkwYzIwODZsO1xuICAgIDB4NTc2OGI1MjVsO1xuICAgIDB4MjA2Zjg1YjNsO1xuICAgIDB4Yjk2NmQ0MDlsO1xuICAgIDB4Y2U2MWU0OWZsO1xuICAgIDB4NWVkZWY5MGVsO1xuICAgIDB4MjlkOWM5OThsO1xuICAgIDB4YjBkMDk4MjJsO1xuICAgIDB4YzdkN2E4YjRsO1xuICAgIDB4NTliMzNkMTdsO1xuICAgIDB4MmViNDBkODFsO1xuICAgIDB4YjdiZDVjM2JsO1xuICAgIDB4YzBiYTZjYWRsO1xuICAgIDB4ZWRiODgzMjBsO1xuICAgIDB4OWFiZmIzYjZsO1xuICAgIDB4MDNiNmUyMGNsO1xuICAgIDB4NzRiMWQyOWFsO1xuICAgIDB4ZWFkNTQ3MzlsO1xuICAgIDB4OWRkMjc3YWZsO1xuICAgIDB4MDRkYjI2MTVsO1xuICAgIDB4NzNkYzE2ODNsO1xuICAgIDB4ZTM2MzBiMTJsO1xuICAgIDB4OTQ2NDNiODRsO1xuICAgIDB4MGQ2ZDZhM2VsO1xuICAgIDB4N2E2YTVhYThsO1xuICAgIDB4ZTQwZWNmMGJsO1xuICAgIDB4OTMwOWZmOWRsO1xuICAgIDB4MGEwMGFlMjdsO1xuICAgIDB4N2QwNzllYjFsO1xuICAgIDB4ZjAwZjkzNDRsO1xuICAgIDB4ODcwOGEzZDJsO1xuICAgIDB4MWUwMWYyNjhsO1xuICAgIDB4NjkwNmMyZmVsO1xuICAgIDB4Zjc2MjU3NWRsO1xuICAgIDB4ODA2NTY3Y2JsO1xuICAgIDB4MTk2YzM2NzFsO1xuICAgIDB4NmU2YjA2ZTdsO1xuICAgIDB4ZmVkNDFiNzZsO1xuICAgIDB4ODlkMzJiZTBsO1xuICAgIDB4MTBkYTdhNWFsO1xuICAgIDB4NjdkZDRhY2NsO1xuICAgIDB4ZjliOWRmNmZsO1xuICAgIDB4OGViZWVmZjlsO1xuICAgIDB4MTdiN2JlNDNsO1xuICAgIDB4NjBiMDhlZDVsO1xuICAgIDB4ZDZkNmEzZThsO1xuICAgIDB4YTFkMTkzN2VsO1xuICAgIDB4MzhkOGMyYzRsO1xuICAgIDB4NGZkZmYyNTJsO1xuICAgIDB4ZDFiYjY3ZjFsO1xuICAgIDB4YTZiYzU3NjdsO1xuICAgIDB4M2ZiNTA2ZGRsO1xuICAgIDB4NDhiMjM2NGJsO1xuICAgIDB4ZDgwZDJiZGFsO1xuICAgIDB4YWYwYTFiNGNsO1xuICAgIDB4MzYwMzRhZjZsO1xuICAgIDB4NDEwNDdhNjBsO1xuICAgIDB4ZGY2MGVmYzNsO1xuICAgIDB4YTg2N2RmNTVsO1xuICAgIDB4MzE2ZThlZWZsO1xuICAgIDB4NDY2OWJlNzlsO1xuICAgIDB4Y2I2MWIzOGNsO1xuICAgIDB4YmM2NjgzMWFsO1xuICAgIDB4MjU2ZmQyYTBsO1xuICAgIDB4NTI2OGUyMzZsO1xuICAgIDB4Y2MwYzc3OTVsO1xuICAgIDB4YmIwYjQ3MDNsO1xuICAgIDB4MjIwMjE2YjlsO1xuICAgIDB4NTUwNTI2MmZsO1xuICAgIDB4YzViYTNiYmVsO1xuICAgIDB4YjJiZDBiMjhsO1xuICAgIDB4MmJiNDVhOTJsO1xuICAgIDB4NWNiMzZhMDRsO1xuICAgIDB4YzJkN2ZmYTdsO1xuICAgIDB4YjVkMGNmMzFsO1xuICAgIDB4MmNkOTllOGJsO1xuICAgIDB4NWJkZWFlMWRsO1xuICAgIDB4OWI2NGMyYjBsO1xuICAgIDB4ZWM2M2YyMjZsO1xuICAgIDB4NzU2YWEzOWNsO1xuICAgIDB4MDI2ZDkzMGFsO1xuICAgIDB4OWMwOTA2YTlsO1xuICAgIDB4ZWIwZTM2M2ZsO1xuICAgIDB4NzIwNzY3ODVsO1xuICAgIDB4MDUwMDU3MTNsO1xuICAgIDB4OTViZjRhODJsO1xuICAgIDB4ZTJiODdhMTRsO1xuICAgIDB4N2JiMTJiYWVsO1xuICAgIDB4MGNiNjFiMzhsO1xuICAgIDB4OTJkMjhlOWJsO1xuICAgIDB4ZTVkNWJlMGRsO1xuICAgIDB4N2NkY2VmYjdsO1xuICAgIDB4MGJkYmRmMjFsO1xuICAgIDB4ODZkM2QyZDRsO1xuICAgIDB4ZjFkNGUyNDJsO1xuICAgIDB4NjhkZGIzZjhsO1xuICAgIDB4MWZkYTgzNmVsO1xuICAgIDB4ODFiZTE2Y2RsO1xuICAgIDB4ZjZiOTI2NWJsO1xuICAgIDB4NmZiMDc3ZTFsO1xuICAgIDB4MThiNzQ3NzdsO1xuICAgIDB4ODgwODVhZTZsO1xuICAgIDB4ZmYwZjZhNzBsO1xuICAgIDB4NjYwNjNiY2FsO1xuICAgIDB4MTEwMTBiNWNsO1xuICAgIDB4OGY2NTllZmZsO1xuICAgIDB4Zjg2MmFlNjlsO1xuICAgIDB4NjE2YmZmZDNsO1xuICAgIDB4MTY2Y2NmNDVsO1xuICAgIDB4YTAwYWUyNzhsO1xuICAgIDB4ZDcwZGQyZWVsO1xuICAgIDB4NGUwNDgzNTRsO1xuICAgIDB4MzkwM2IzYzJsO1xuICAgIDB4YTc2NzI2NjFsO1xuICAgIDB4ZDA2MDE2ZjdsO1xuICAgIDB4NDk2OTQ3NGRsO1xuICAgIDB4M2U2ZTc3ZGJsO1xuICAgIDB4YWVkMTZhNGFsO1xuICAgIDB4ZDlkNjVhZGNsO1xuICAgIDB4NDBkZjBiNjZsO1xuICAgIDB4MzdkODNiZjBsO1xuICAgIDB4YTliY2FlNTNsO1xuICAgIDB4ZGViYjllYzVsO1xuICAgIDB4NDdiMmNmN2ZsO1xuICAgIDB4MzBiNWZmZTlsO1xuICAgIDB4YmRiZGYyMWNsO1xuICAgIDB4Y2FiYWMyOGFsO1xuICAgIDB4NTNiMzkzMzBsO1xuICAgIDB4MjRiNGEzYTZsO1xuICAgIDB4YmFkMDM2MDVsO1xuICAgIDB4Y2RkNzA2OTNsO1xuICAgIDB4NTRkZTU3MjlsO1xuICAgIDB4MjNkOTY3YmZsO1xuICAgIDB4YjM2NjdhMmVsO1xuICAgIDB4YzQ2MTRhYjhsO1xuICAgIDB4NWQ2ODFiMDJsO1xuICAgIDB4MmE2ZjJiOTRsO1xuICAgIDB4YjQwYmJlMzdsO1xuICAgIDB4YzMwYzhlYTFsO1xuICAgIDB4NWEwNWRmMWJsO1xuICAgIDB4MmQwMmVmOGRsO1xuICB8XVxuXG5sZXQgc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIGxldCBhY2NfciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSBvZmZzZXQgdG8gb2Zmc2V0ICsgbGVuZ3RoIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIChTdHJpbmcuZ2V0IHN0ciBpKVxuICBkb25lO1xuICAhYWNjX3JcblxuKCpsZXQgYmlnc3RyaW5nX2ZvbGRfbGVmdCBmIGFjYyBzdHIgPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gMCB0byAoQmlnYXJyYXkuQXJyYXkxLmRpbSBzdHIpIC0gMSBkb1xuICAgIGFjY19yIDo9IGYgIWFjY19yIEBAIEJpZ2FycmF5LkFycmF5MS5nZXQgc3RyIGlcbiAgZG9uZTtcbiAgIWFjY19yXG4qKVxudHlwZSB0ID0gaW50MzJcblxubGV0IHVwZGF0ZV9jcmMgYWNjIGMgPVxuICBsZXQgaW5kZXggPSBJbnQzMi50b19pbnQgKGFjYyBeXl4gSW50MzIub2ZfaW50IChpbnRfb2ZfY2hhciBjKSAmJiYgMHhmZmwpIGluXG4gIGNyY190YWJsZS4oaW5kZXgpIF5eXiAoYWNjID4+PiA4KSAmJiYgMHhmZmZmZmZmZmxcblxubGV0IHN0cmluZyA/KGNyYyA9IDBsKSBzdHIgb2Zmc2V0IGxlbmd0aCA9XG4gIHN0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyIG9mZnNldCBsZW5ndGhcbiAgXl5eIDB4ZmZmZmZmZmZsXG5cbigqbGV0IGJpZ3N0cmluZyA/KGNyYz0wbCkgc3RyID1cbiAgKGJpZ3N0cmluZ19mb2xkX2xlZnQgdXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgc3RyKSBeXl4gMHhmZmZmZmZmZmxcbiopXG4oKlxubGV0IGRpZ2VzdCAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IENzdHJ1Y3QubGVuIGJ1ZiAtIG9mZiBpblxuICBjc3RydWN0IH5jcmM6KGNyYyA6PiBpbnQzMikgKENzdHJ1Y3Quc3ViIGJ1ZiBvZmYgbGVuKVxuXG5sZXQgZGlnZXN0diA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHYgLT4gZGlnZXN0IGFjYyB2KVxuXG5sZXQgZGlnZXN0YyAoY3JjIDogdCkgYnl0ZSA9XG4gICh1cGRhdGVfY3JjIChjcmMgXl5eIDB4ZmZmZmZmZmZsKSAoQ2hhci5jaHIgYnl0ZSkpIF5eXiAweGZmZmZmZmZmbFxuXG5sZXQgZGlnZXN0cyAoY3JjIDogdCkgPyhvZmYgPSAwKSA/bGVuIGJ1ZiA9XG4gIGxldCBsZW4gPSBtYXRjaCBsZW4gd2l0aCBTb21lIGxlbiAtPiBsZW4gfCBOb25lIC0+IEJ5dGVzLmxlbmd0aCBidWYgLSBvZmYgaW5cbiAgYnl0ZXMgfmNyYzooY3JjIDo+IGludDMyKSBidWYgb2ZmIGxlblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBwcCBwcGYgdiA9IEZtdC5wZiBwcGYgXCIlMDRseFwiICh2IDo+IGludDMyKVxuXG5sZXQgZGVmYXVsdCA9IDBsXG5cbmxldCBlcSA9IEludDMyLmVxdWFsXG5sZXQgbmVxIGEgYiA9IG5vdCAoZXEgYSBiKVxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29sb3IgPSBSZWQgfCBHcmV5IHwgTGlnaHRibHVlIHwgQmxhY2tcblxubGV0IHRyaXBsZV9vZl9jb2xvciA9IGZ1bmN0aW9uXG4gIHwgUmVkIC0+IDI1NSwgMCwgMFxuICB8IEdyZXkgLT4gMTI4LCAxMjgsIDEyOFxuICB8IExpZ2h0Ymx1ZSAtPiAwLCAwLCAxMjhcbiAgfCBCbGFjayAtPiAwLCAwLCAwXG4iLCJ0eXBlICdhIHQgPSB7XG4gIHNpemU6IGludDtcbiAgZGVmYXVsdDogJ2E7XG4gIG11dGFibGUgc3RhcnQ6IGludDtcbiAgbXV0YWJsZSBmaW5hbDogaW50O1xuICBjb250ZW50OiAnYSBhcnJheTtcbn1cblxubGV0IGNyZWF0ZSBpIGRlZmF1bHQgPVxuICBsZXQgc2l6ZSA9IG1heCBpIDIgaW5cbiAgeyBzaXplOyBkZWZhdWx0OyBzdGFydCA9IDA7IGZpbmFsID0gMDsgY29udGVudCA9IEFycmF5Lm1ha2Ugc2l6ZSBkZWZhdWx0IH1cblxubGV0IHN1Y2MgaSB0ID1cbiAgaWYgaSA9IHQuc2l6ZSAtIDEgdGhlblxuICAgIDBcbiAgZWxzZVxuICAgIHN1Y2MgaVxuXG5sZXQgZnVsbCB0ID0gc3VjYyB0LmZpbmFsIHQgPSB0LnN0YXJ0XG5sZXQgZnJlZV9vbmUgdCA9IHQuc3RhcnQgPC0gc3VjYyB0LnN0YXJ0IHRcblxubGV0IGFkZCB4IHQgPVxuICBsZXQgKCkgPSBpZiBmdWxsIHQgdGhlbiBmcmVlX29uZSB0IGluXG4gIGxldCAoKSA9IHQuY29udGVudC4odC5maW5hbCkgPC0geCBpblxuICBsZXQgKCkgPSB0LmZpbmFsIDwtIHN1Y2MgdC5maW5hbCB0IGluXG4gIHRcblxubGV0IGl0ZXIgZiB0ID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA8PiB0LmZpbmFsIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiB0LmNvbnRlbnQuKGkpIGluXG4gICAgICBhdXggKHN1Y2MgaSB0KVxuICAgIClcbiAgaW5cbiAgYXV4IHQuc3RhcnRcblxubGV0IGNsZWFuIHQgPVxuICBsZXQgcmVjIGF1eCBrID1cbiAgICBpZiBrID0gdC5zaXplIHRoZW5cbiAgICAgIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IHQuY29udGVudC4oaykgPC0gdC5kZWZhdWx0IGluXG4gICAgICBhdXggKGsgKyAxKVxuICAgIClcbiAgaW5cbiAgYXV4IDBcbiIsIigqKlxuICAqIGNhY2hlLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjcvMDMvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNy8wMy8yMDEyXG4gICogKlxuICAqXG4gICogSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXNcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2FjaGUgPSBzaWdcbiAgbW9kdWxlIE8gOiBTZXRNYXAuT3JkZXJlZFR5cGVcblxuICB0eXBlIHRcblxuICB2YWwgbGFzdCA6IHQgLT4gTy50IG9wdGlvblxuICB2YWwgY3JlYXRlIDogaW50IG9wdGlvbiAtPiB0XG4gIHZhbCBhZGQgOiBPLnQgLT4gdCAtPiB0XG4gIHZhbCBmb2xkIDogKE8udCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgaXRlciA6IChPLnQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIENhY2hlID1cbmZ1bmN0b3JcbiAgKE9PIDogU2V0TWFwLk9yZGVyZWRUeXBlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICBtb2R1bGUgTyA9IE9PXG4gICAgICBtb2R1bGUgU00gPSBTZXRNYXAuTWFrZSAoTylcbiAgICAgIG1vZHVsZSBTID0gU00uU2V0XG5cbiAgICAgIHR5cGUgZmluaXRlX2NhY2hlID0ge1xuICAgICAgICBzaXplOiBpbnQ7XG4gICAgICAgIG9mZnNldDogaW50O1xuICAgICAgICBjYWNoZTogTy50IG9wdGlvbiBhcnJheTtcbiAgICAgICAgYmFnOiBTLnQ7XG4gICAgICAgIGxhc3Q6IE8udCBvcHRpb247XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVhdGVfZmluaXRlIG4gPVxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZSA9IG47XG4gICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICBjYWNoZSA9IEFycmF5Lm1ha2UgbiBOb25lO1xuICAgICAgICAgIGJhZyA9IFMuZW1wdHk7XG4gICAgICAgICAgbGFzdCA9IE5vbmU7XG4gICAgICAgIH1cblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCBpblxuICAgICAgICBpZiBvZmZzZXQgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSAwIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgdCB3aXRoIG9mZnNldCA9IG9mZnNldCArIDEgfVxuXG4gICAgICBsZXQgYWRkX2Zpbml0ZSBrZXkgdCA9XG4gICAgICAgIGxldCB0ID0geyB0IHdpdGggbGFzdCA9IFNvbWUga2V5IH0gaW5cbiAgICAgICAgaWYgUy5tZW0ga2V5IHQuYmFnIHRoZW5cbiAgICAgICAgICB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB0ID0geyB0IHdpdGggYmFnID0gUy5hZGQga2V5IHQuYmFnIH0gaW5cbiAgICAgICAgICBsZXQgdCA9IG5leHQgdCBpblxuICAgICAgICAgIGxldCBvdmVyd3JpdHRlbl92YWx1ZSA9IHQuY2FjaGUuKHQub2Zmc2V0KSBpblxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0dGVuX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiB0XG4gICAgICAgICAgICB8IFNvbWUgb3ZlcndyaXR0ZW5fdmFsdWUgLT5cbiAgICAgICAgICAgICAgeyB0IHdpdGggYmFnID0gUy5yZW1vdmUgb3ZlcndyaXR0ZW5fdmFsdWUgdC5iYWcgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSB0LmNhY2hlLih0Lm9mZnNldCkgPC0gU29tZSBrZXkgaW5cbiAgICAgICAgICB0XG4gICAgICAgIClcblxuICAgICAgbGV0IGxhc3RfZmluaXRlIHQgPSB0Lmxhc3RcblxuICAgICAgdHlwZSBpbmZpbml0ZV9jYWNoZSA9IHsgaW5mX2JhZzogUy50OyBsYXN0OiBPLnQgb3B0aW9uIH1cbiAgICAgIHR5cGUgdCA9IEZpbml0ZSBvZiBmaW5pdGVfY2FjaGUgfCBJbmZpbml0ZSBvZiBpbmZpbml0ZV9jYWNoZVxuXG4gICAgICBsZXQgY3JlYXRlX2luZmluaXRlID0geyBpbmZfYmFnID0gUy5lbXB0eTsgbGFzdCA9IE5vbmUgfVxuXG4gICAgICBsZXQgYWRkX2luZmluaXRlIGtleSB0ID1cbiAgICAgICAgeyBpbmZfYmFnID0gUy5hZGQga2V5IHQuaW5mX2JhZzsgbGFzdCA9IFNvbWUga2V5IH1cblxuICAgICAgbGV0IGNyZWF0ZSBzaXplID1cbiAgICAgICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJbmZpbml0ZSBjcmVhdGVfaW5maW5pdGVcbiAgICAgICAgfCBTb21lIGEgLT4gRmluaXRlIChjcmVhdGVfZmluaXRlIGEpXG5cbiAgICAgIGxldCBsYXN0IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBsYXN0X2Zpbml0ZSB0XG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiB0Lmxhc3RcblxuICAgICAgbGV0IGFkZCBrZXkgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IEZpbml0ZSAoYWRkX2Zpbml0ZSBrZXkgdClcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IEluZmluaXRlIChhZGRfaW5maW5pdGUga2V5IHQpXG5cbiAgICAgIGxldCBmb2xkIGYgdCBhID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5mb2xkIGYgdC5iYWcgYVxuICAgICAgICB8IEluZmluaXRlIHQgLT4gUy5mb2xkIGYgdC5pbmZfYmFnIGFcblxuICAgICAgbGV0IGl0ZXIgZiB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gUy5pdGVyIGYgdC5iYWdcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuaXRlciBmIHQuaW5mX2JhZ1xuICAgIGVuZCA6XG4gICAgICBDYWNoZSB3aXRoIHR5cGUgTy50ID0gT08udClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRnJvbSkgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbm1vZHVsZSBCQSA9IEJpZ2FycmF5LkFycmF5MVxuXG50eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBidWZmZXI6IGJpZ3N0cmluZztcbiAgbXV0YWJsZSBwb3NpdGlvbjogaW50O1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBpbml0aWFsX2J1ZmZlcjogYmlnc3RyaW5nO1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9XG4gICAgaWYgbiA8IDEgdGhlblxuICAgICAgMVxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgblxuICBpblxuICBsZXQgcyA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IG4gaW5cbiAgeyBidWZmZXIgPSBzOyBwb3NpdGlvbiA9IDA7IGxlbmd0aCA9IG47IGluaXRpYWxfYnVmZmVyID0gcyB9XG5cbmxldCBjb250ZW50cyBiID1cbiAgbGV0IG91dCA9IEJBLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IGIucG9zaXRpb24gaW5cbiAgbGV0ICgpID0gQkEuYmxpdCAoQkEuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvbikgb3V0IGluXG4gIG91dFxuXG4oKmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJBLnN1YiBiLmJ1ZmZlciBvZnMgbGVuXG4qKVxuKCpcbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJBLmJsaXQgKHN1YiBzcmMgc3Jjb2ZmIGxlbilcbiAgICAgIChCaWdzdHJpbmcuc3ViIChCaWdzdHJpbmcub2ZfYXJyYXkgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBkc3QpIGRzdG9mZiBsZW4pXG4qKVxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gYi5wb3NpdGlvbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZVxuICAgIEJBLnVuc2FmZV9nZXQgYi5idWZmZXIgb2ZzXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCQS5kaW0gYi5idWZmZXJcblxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gIHdoaWxlIGIucG9zaXRpb24gKyBtb3JlID4gIW5ld19sZW4gZG9cbiAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlblxuICBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgaWYgYi5wb3NpdGlvbiArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgbGV0IG5ld19idWZmZXIgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIChCQS5zdWIgbmV3X2J1ZmZlciAwIGIucG9zaXRpb24pO1xuICBiLmJ1ZmZlciA8LSBuZXdfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSAhbmV3X2xlblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbigqXG4gbGV0IGFkZF91dGZfOF91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgYWRkX2NoYXIgYiAoQ2hhci51bnNhZmVfY2hyIHUpXG4gfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEMwIGxvciAodSBsc3IgNikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDMgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDM7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhFMCBsb3IgKHUgbHNyIDEyKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAzXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RjAgbG9yICh1IGxzciAxOCkpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuIGxldCBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKHUgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpIChDaGFyLnVuc2FmZV9jaHIgKHUgbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyAyXG4gfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICBsZXQgaGkgPSAweEQ4MDAgbG9yICh1JyBsc3IgMTApIGluXG4gICAgIGxldCBsbyA9IDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpIGluXG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDQgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDQ7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApIChDaGFyLnVuc2FmZV9jaHIgKGhpIGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKSAoQ2hhci51bnNhZmVfY2hyIChsbyBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMykgKENoYXIudW5zYWZlX2NociAobG8gbHNyIDgpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuKilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChiLnBvc2l0aW9uICsgaSkgKFN0cmluZy5nZXQgcyAob2Zmc2V0ICsgaSkpXG4gIGRvbmU7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPSBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbigqXG5sZXQgYWRkX2J5dGVzIGIgcyA9IGFkZF9zdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogcmVhZCB1cCB0byBbbGVuXSBieXRlcyBmcm9tIFtpY10gaW50byBbYl0uICopXG5sZXQgcmVjIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlbiA9XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgbGV0IG4gPSBpbnB1dCBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAgIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gICAgaWYgbiA9IDAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgYWRkX2NoYW5uZWxfcmVjIGIgaWMgKGxlbi1uKSAgICgqIG4gPD0gbGVuICopXG4gIClcblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGFkZF9jaGFubmVsX3JlYyBiIGljIGxlblxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIChMd3RfYnl0ZXMudG9fYnl0ZXMgYi5idWZmZXIpIDAgYi5wb3NpdGlvblxuKilcbigqbGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICAgIHwgJygnIC0+ICcpJ1xuICAgIHwgJ3snIC0+ICd9J1xuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbiAgbGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICAgIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gIGxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgICAgfCBfIC0+IGkgaW5cbiAgICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbiAgKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbiAgbGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICAgIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAgICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgICB8IF8gLT5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuICAoKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbiAgbGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJyQnIC0+XG4gICAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgICAgbGV0IGlkZW50LCBuZXh0X2kgPSBmaW5kX2lkZW50IHMgaiBsaW0gaW5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICB8IGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9PSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICBlbmQgZWxzZVxuICAgICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gICAgc3Vic3QgJyAnIDBcblxuICBsZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICAgIGVsc2VcbiAgICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cbiopXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgQ2l0cml4IFN5c3RlbXMgSW5jLlxuICogQ29weXJpZ2h0IChjKSAyMDEwIFRob21hcyBHYXphZ25haXJlIDx0aG9tYXNAZ2F6YWduYWlyZS5jb20+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxubGV0IGRlZmF1bHRfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlxuXG5sZXQgdXJpX3NhZmVfYWxwaGFiZXQgPVxuICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9cIlxuXG5sZXQgcGFkZGluZyA9ICc9J1xuXG5sZXQgb2ZfY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9XG4gIGlmIHggPSBwYWRkaW5nIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBTdHJpbmcuaW5kZXggYWxwaGFiZXQgeFxuXG5sZXQgdG9fY2hhciA/KGFscGhhYmV0ID0gZGVmYXVsdF9hbHBoYWJldCkgeCA9IGFscGhhYmV0Llt4XVxuXG5sZXQgZGVjb2RlID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGxldCBpbnB1dCA9XG4gICAgaWYgbGVuZ3RoIG1vZCA0ID0gMCB0aGVuXG4gICAgICBpbnB1dFxuICAgIGVsc2VcbiAgICAgIGlucHV0IF4gU3RyaW5nLm1ha2UgKDQgLSAobGVuZ3RoIG1vZCA0KSkgcGFkZGluZ1xuICBpblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgd29yZHMgPSBsZW5ndGggLyA0IGluXG4gIGxldCBwYWRkaW5nID1cbiAgICBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgMCAtPiAwXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDJdID0gcGFkZGluZyAtPiAyXG4gICAgfCBfIHdoZW4gaW5wdXQuW2xlbmd0aCAtIDFdID0gcGFkZGluZyAtPiAxXG4gICAgfCBfIC0+IDBcbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0XG4gICAgICAoKHdvcmRzICogMykgLSBwYWRkaW5nKVxuICBpblxuICBmb3IgaSA9IDAgdG8gd29yZHMgLSAxIGRvXG4gICAgbGV0IGEgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDApKVxuICAgIGFuZCBiID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAxKSlcbiAgICBhbmQgYyA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMikpXG4gICAgYW5kIGQgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDMpKSBpblxuICAgIGxldCBuID0gKGEgbHNsIDE4KSBsb3IgKGIgbHNsIDEyKSBsb3IgKGMgbHNsIDYpIGxvciBkIGluXG4gICAgbGV0IHggPSAobiBsc3IgMTYpIGxhbmQgMjU1IGFuZCB5ID0gKG4gbHNyIDgpIGxhbmQgMjU1IGFuZCB6ID0gbiBsYW5kIDI1NSBpblxuICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMCkgKGNoYXJfb2ZfaW50IHgpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAyIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMSkgKGNoYXJfb2ZfaW50IHkpO1xuICAgIGlmIGkgPD4gd29yZHMgLSAxIHx8IHBhZGRpbmcgPCAxIHRoZW5cbiAgICAgIEJpZ2FycmF5LkFycmF5MS5zZXQgb3V0cHV0ICgoMyAqIGkpICsgMikgKGNoYXJfb2ZfaW50IHopXG4gIGRvbmU7XG4gIG91dHB1dFxuXG5sZXQgZW5jb2RlID8ocGFkID0gdHJ1ZSkgP2FscGhhYmV0IGlucHV0ID1cbiAgbGV0IGxlbmd0aCA9IEJpZ2FycmF5LkFycmF5MS5kaW0gaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gKGxlbmd0aCArIDIpIC8gMyBpblxuICAoKiByb3VuZGVkIHVwICopXG4gIGxldCBwYWRkaW5nX2xlbiA9XG4gICAgaWYgbGVuZ3RoIG1vZCAzID0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgMyAtIChsZW5ndGggbW9kIDMpXG4gIGluXG4gIGxldCBvdXRwdXQgPSBCeXRlcy5tYWtlICh3b3JkcyAqIDQpICdcXDAwMCcgaW5cbiAgbGV0IGdldCBpID1cbiAgICBpZiBpID49IGxlbmd0aCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2NoYXIgKEJpZ2FycmF5LkFycmF5MS5nZXQgaW5wdXQgaSlcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCB4ID0gZ2V0ICgoMyAqIGkpICsgMClcbiAgICBhbmQgeSA9IGdldCAoKDMgKiBpKSArIDEpXG4gICAgYW5kIHogPSBnZXQgKCgzICogaSkgKyAyKSBpblxuICAgIGxldCBuID0gKHggbHNsIDE2KSBsb3IgKHkgbHNsIDgpIGxvciB6IGluXG4gICAgbGV0IGEgPSAobiBsc3IgMTgpIGxhbmQgNjNcbiAgICBhbmQgYiA9IChuIGxzciAxMikgbGFuZCA2M1xuICAgIGFuZCBjID0gKG4gbHNyIDYpIGxhbmQgNjNcbiAgICBhbmQgZCA9IG4gbGFuZCA2MyBpblxuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAwKSAodG9fY2hhciA/YWxwaGFiZXQgYSk7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDEpICh0b19jaGFyID9hbHBoYWJldCBiKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMikgKHRvX2NoYXIgP2FscGhhYmV0IGMpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAzKSAodG9fY2hhciA/YWxwaGFiZXQgZClcbiAgZG9uZTtcbiAgZm9yIGkgPSAxIHRvIHBhZGRpbmdfbGVuIGRvXG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIGkpIHBhZGRpbmdcbiAgZG9uZTtcbiAgaWYgcGFkIHRoZW5cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIG91dHB1dFxuICBlbHNlXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBvdXRwdXQgMCAoQnl0ZXMubGVuZ3RoIG91dHB1dCAtIHBhZGRpbmdfbGVuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBsaW5rcyA9XG4gIHwgTElOS1Mgb2YgKChpbnQgKiBpbnQpICogaW50KSBsaXN0XG4gIHwgV0hBVEVWRVJcbiAgfCBTT01FXG4gIHwgVFlQRSBvZiBzdHJpbmcgKiBzdHJpbmdcblxudHlwZSBjY19wb3J0ID0ge1xuICBwb3J0X2xpbmtzOiBsaW5rcztcbiAgcG9ydF9zdGF0ZXM6IHN0cmluZyBsaXN0IG9wdGlvbjsgICgqKiBbTm9uZV0gbWVhbnMgV0hBVEVWRVIgKilcbn1cblxudHlwZSBzaXRlID0gUG9ydCBvZiBjY19wb3J0IHwgQ291bnRlciBvZiBpbnRcbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9uYW1lOiBzdHJpbmc7IHNpdGVfdHlwZTogc2l0ZSB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBzdHJpbmc7XG4gIG5vZGVfaWQ6IGludCBvcHRpb247XG4gIG5vZGVfc2l0ZXM6IGNjX3NpdGUgYXJyYXk7XG59XG5cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgb3B0aW9uIGFycmF5IGFycmF5XG5cbm1vZHVsZSBMaW5rU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSAoaW50ICogaW50KSAqIGludFxuXG4gIGxldCBwcmludCA9XG4gICAgUHAucGFpclxuICAgICAgKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ludFxuXG4gIGxldCBjb21wYXJlICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB4JyBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgeSB5J1xuICAgIGVsc2VcbiAgICAgIGNcbmVuZClcblxubGV0IHByaW50X2xpbmsgKGRhbmdsaW5nLCBmcmVlX2lkKSBwIGYgPSBmdW5jdGlvblxuICB8IFdIQVRFVkVSIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsjXVwiXG4gIHwgU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbX11cIlxuICB8IFRZUEUgKHNpLCB0eSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlslcy4lc11cIiBzaSB0eVxuICB8IExJTktTIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlsuXVwiXG4gIHwgTElOS1MgbCAtPlxuICAgIGxldCBteXNlbGYgPVxuICAgICAgcmVmIChMaW5rU2V0TWFwLk1hcC5maW5kX2RlZmF1bHQgTGlua1NldE1hcC5NYXAuZW1wdHkgcCAhZGFuZ2xpbmcpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcCcgLT5cbiAgICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgICBpZiBwID0gcCcgdGhlblxuICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHApXG4gICAgICAgICAgICAgICAgICAgICAoTGlua1NldE1hcC5NYXAuZmluZF9vcHRpb24gcCcgIWRhbmdsaW5nKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZCBpblxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG15c2VsZiA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCcgIWZyZWVfaWQgIW15c2VsZiBpblxuICAgICAgICAgICAgICAgICAgICFmcmVlX2lkXG4gICAgICAgICAgICAgICAgIHwgU29tZSB2YSAtPiB2YVxuICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXCIgaSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIGRhbmdsaW5nIDo9IExpbmtTZXRNYXAuTWFwLmFkZCBwICFteXNlbGYgIWRhbmdsaW5nXG5cbmxldCBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZiA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7I31cIlxuICAgICAgfCBTb21lIFtdIC0+ICgpXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgaSkpXG4gICAgICAgICAgbClcbiAgICBwLnBvcnRfc3RhdGVzXG4gICAgKG1hdGNoIHdpdGhfbGluayB3aXRoXG4gICAgfCBTb21lIHBhY2sgLT4gcHJpbnRfbGluayBwYWNrIChub2RlLCBpZClcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyAtPiAoKSlcbiAgICBwLnBvcnRfbGlua3NcblxubGV0IHByaW50X2ludGYgd2l0aF9saW5rIG5vZGUgPVxuICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGlkIGYgc2kgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHNpLnNpdGVfbmFtZSBpblxuICAgICAgbWF0Y2ggc2kuc2l0ZV90eXBlIHdpdGhcbiAgICAgIHwgUG9ydCBwIC0+IHByaW50X3BvcnQgd2l0aF9saW5rIG5vZGUgcCBpZCBmXG4gICAgICB8IENvdW50ZXIgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiez0laX1cIiBpKVxuXG5sZXQgcHJpbnRfYWdlbnQgd2l0aF9pZCBsaW5rIG5vZGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBTb21lIGFnIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXMoQFs8aD4lYUBdKVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ4JWk6XCIgaSkpXG4gICAgICAoaWYgd2l0aF9pZCB0aGVuXG4gICAgICAgICBhZy5ub2RlX2lkXG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSlcbiAgICAgIGFnLm5vZGVfdHlwZSAocHJpbnRfaW50ZiBsaW5rIG5vZGUpIGFnLm5vZGVfc2l0ZXNcblxubGV0IHByaW50X2NjIGYgbWl4ID1cbiAgbGV0IGxpbmsgPSBTb21lIChyZWYgTGlua1NldE1hcC5NYXAuZW1wdHksIHJlZiAwKSBpblxuICBQcC5hcnJheVxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKGZ1biBhbCAtPiBQcC5hcnJheSBQcC5jb21tYSAoZnVuIGFyIC0+IHByaW50X2FnZW50IHRydWUgbGluayAoYWwsIGFyKSkpXG4gICAgZiBtaXhcblxubGV0IGdldF9jb2xvciA9XG4gIGxldCBzdG9yZSA9IEhhc2h0YmwuY3JlYXRlIDEwIGluXG4gIGZ1biBpIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBzdG9yZSBpXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCB2ID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIjJXgleCV4XCIgKFJhbmRvbS5pbnQgMjU1KSAoUmFuZG9tLmludCAyNTUpXG4gICAgICAgICAgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEhhc2h0YmwuYWRkIHN0b3JlIGkgdiBpblxuICAgICAgdlxuXG5sZXQgcHJpbnRfZG90X2NjIG5iX2NjIGYgbWl4ID1cbiAgUHAuYXJyYXkgUHAuZW1wdHlcbiAgICAoZnVuIGlsIC0+XG4gICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGlyIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBhZyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIFtsYWJlbCA9IFxcXCJAWzxoPiVhQF1cXFwiLCBjb2xvciA9IFxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgc3R5bGU9ZmlsbGVkXTtALFwiXG4gICAgICAgICAgICBuYl9jYyBpbCBpclxuICAgICAgICAgICAgKHByaW50X2FnZW50IGZhbHNlIE5vbmUgKGlsLCBpcikpXG4gICAgICAgICAgICAoU29tZSBhZykgKGdldF9jb2xvciBhZy5ub2RlX3R5cGUpO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJub2RlJWRfJWRfJWQgLT4gY291bnRlciVkIFtzdHlsZT1pbnZpc107QCxcIiBuYl9jYyBpbFxuICAgICAgICAgICAgaXIgbmJfY2MpKVxuICAgIGYgbWl4O1xuICBpZ25vcmVcbiAgQEAgQXJyYXkuaXRlcmlcbiAgICAgICAoZnVuIGFsIC0+XG4gICAgICAgICBBcnJheS5pdGVyaSAoZnVuIGFyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgICAgICAgKGZ1biBzIHNpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBXSEFURVZFUiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNPTUUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBUWVBFIChfc2ksIF90eSkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBMSU5LUyBsaW5rcyAtPlxuICAgICAgICAgICAgICAgICAgICAgUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgKChhbCcsIGFyJyksIHMnKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhbCA8IGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGFsID0gYWwnICYmIChhciA8IGFyJyB8fCAoYXIgPSBhcicgJiYgcyA8IHMnKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBtaXguKGFsJykuKGFyJykgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub2RlJWRfJWRfJWQgLT4gbm9kZSVkXyVkXyVkIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWlsbGFiZWw9XFxcIiVzXFxcIiwgaGVhZGxhYmVsPVxcXCIlc1xcXCIsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1ub25lXTtALFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJfY2MgYWwgYXIgbmJfY2MgYWwnIGFyJyBzaS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZycubm9kZV9zaXRlcy4ocycpLnNpdGVfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgIGYgbGlua3MpKVxuICAgICAgICAgICAgICAgYWcubm9kZV9zaXRlcykpXG4gICAgICAgbWl4XG5cbigqXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuICopXG5cbmxldCB3cml0ZV9jY19wb3J0IG9iIHAgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X2xpbmtzXCJcbiAgICAgIChmdW4gb2IgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBXSEFURVZFUiAtPiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvYiAoKVxuICAgICAgICB8IFNPTUUgLT4gWW9qc29uLkJhc2ljLndyaXRlX2Jvb2wgb2IgdHJ1ZVxuICAgICAgICB8IFRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIntcXFwic2l0ZV9uYW1lXFxcIjpcXFwiXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBzaSBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIixcXFwiYWdlbnRfdHlwZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgdHkgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJ9XCJcbiAgICAgICAgfCBMSU5LUyBsIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpclxuICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgIG9iIGwpXG4gICAgICBvYiBwLnBvcnRfbGlua3NcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInBvcnRfc3RhdGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gKEpzb25VdGlsLndyaXRlX2xpc3QgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZykpXG4gICAgICBvYiBwLnBvcnRfc3RhdGVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHdyaXRlX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBmLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBDb3VudGVyIGkgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb3VudGVyXCIgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnLCcgaW5cbiAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgaVxuICAgIHwgUG9ydCBwIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwicG9ydFwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICB3cml0ZV9jY19wb3J0IG9iIHBcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfY2Nfc2l0ZSBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2l0ZV9uYW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBmLnNpdGVfbmFtZVxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfdHlwZVwiIHdyaXRlX3NpdGUgb2IgZiBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCBsaW5rc19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFdIQVRFVkVSXG4gIHwgYEJvb2wgYiAtPlxuICAgIGxldCAoKSA9IGFzc2VydCBiIGluXG4gICAgU09NRVxuICB8IGBBc3NvYyBbIChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKTsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KSBdXG4gIHwgYEFzc29jIFsgKFwiYWdlbnRfdHlwZVwiLCBgU3RyaW5nIHR5KTsgKFwic2l0ZV9uYW1lXCIsIGBTdHJpbmcgc2kpIF0gLT5cbiAgICBUWVBFIChzaSwgdHkpXG4gIHwgYExpc3QgXyBhcyB4IC0+XG4gICAgbGV0IGVycm9yX21zZyA9IE5vbmUgaW5cbiAgICBMSU5LU1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgIChKc29uVXRpbC5jb21wYWN0X3RvX3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZylcbiAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZykpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgeClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjY19wb3J0XCIsIHgpKVxuXG5sZXQgcmVhZF9jY19wb3J0IHAgbGIgPVxuICBsZXQgcG9ydF9saW5rcywgcG9ydF9zdGF0ZXMgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAocywgaSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3J0X2xpbmtzXCIgdGhlblxuICAgICAgICAgIGxpbmtzX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKSwgaVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydF9zdGF0ZXNcIikgaW5cbiAgICAgICAgICAoIHMsXG4gICAgICAgICAgICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKExJTktTIFtdLCBTb21lIFtdKSBwIGxiXG4gIGluXG4gIHsgcG9ydF9saW5rczsgcG9ydF9zdGF0ZXMgfVxuXG5sZXQgcmVhZF9zaXRlIHAgbGIgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sYnIgcCBsYiBpblxuICBsZXQga2V5ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChmdW4gcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcImNvdW50ZXJcIiB0aGVuXG4gICAgICAgICAgQ291bnRlciAoWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJwb3J0XCIpIGluXG4gICAgICAgICAgUG9ydCAocmVhZF9jY19wb3J0IHAgbGIpXG4gICAgICAgICkpXG4gICAgICBwIGxiXG4gIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBwIGxiIGluXG4gIG91dFxuXG5sZXQgcmVhZF9jY19zaXRlIHAgbGIgPVxuICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3R5cGUgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAobiwgcykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzaXRlX25hbWVcIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInNpdGVfdHlwZVwiKSBpblxuICAgICAgICAgIG4sIHJlYWRfc2l0ZSBwIGxiXG4gICAgICAgICkpXG4gICAgICAoXCJcIiwgQ291bnRlciAoLTEpKSBwIGxiXG4gIGluXG4gIHsgc2l0ZV9uYW1lOyBzaXRlX3R5cGUgfVxuXG5sZXQgd3JpdGVfY2Nfbm9kZSBvYiB4ID1cbiAgSnNvblV0aWwud3JpdGVfb3B0aW9uXG4gICAgKGZ1biBvYiBmIC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfdHlwZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2JcbiAgICAgICAgICBmLm5vZGVfdHlwZVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBmLm5vZGVfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5vZGVfaWQgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX2lkXCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBub2RlX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9jb21tYSBvYlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9zaXRlc1wiXG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX3NpdGUpXG4gICAgICAgICAgb2IgZi5ub2RlX3NpdGVzXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICBvYiB4XG5cbmxldCByZWFkX2NjX25vZGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfb3B0aW9uXG4gICAgKGZ1biBwIGxiIC0+XG4gICAgICBsZXQgbm9kZV9pZCwgbm9kZV90eXBlLCBub2RlX3NpdGVzID1cbiAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAgICAgKGZ1biAoaWQsIG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgICAgICBpZiBrZXkgPSBcIm5vZGVfaWRcIiB0aGVuXG4gICAgICAgICAgICAgIFNvbWUgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKSwgbiwgc1xuICAgICAgICAgICAgZWxzZSBpZiBrZXkgPSBcIm5vZGVfdHlwZVwiIHRoZW5cbiAgICAgICAgICAgICAgaWQsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcIm5vZGVfc2l0ZXNcIikgaW5cbiAgICAgICAgICAgICAgaWQsIG4sIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfc2l0ZSBwIGxiXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChOb25lLCBcIlwiLCBbfHxdKSBwIGxiXG4gICAgICBpblxuICAgICAgeyBub2RlX2lkOyBub2RlX3R5cGU7IG5vZGVfc2l0ZXMgfSlcbiAgICBwIGxiXG5cbmxldCB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgd3JpdGVfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IG9iIGYgPVxuICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSAoWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgcmVhZF9jY19ub2RlKSBvYiBmXG5cbmxldCBzdHJpbmdfb2ZfY29ubmVjdGVkX2NvbXBvbmVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSB3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9jb25uZWN0ZWRfY29tcG9uZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdsaW5rcyBzaXRlX3NpZyA9IHtcbiAgaW50ZXJuYWxfc3RhdGU6IHVuaXQgTmFtZWREZWNscy50O1xuICBsaW5rczogJ2xpbmtzIG9wdGlvbjtcbiAgY291bnRlcnNfaW5mbzogKGludCAqIGludCkgb3B0aW9uO1xuICAgICAgKCoqIElmIHJlbGV2YW50OiBjb3VudGVyIENFUSB2YWx1ZSAqIGNvdW50ZXIgZGVsdGEgKilcbn1cblxudHlwZSB0ID0gYm9vbCBhcnJheSBhcnJheSBzaXRlX3NpZyBOYW1lZERlY2xzLnRcblxubGV0IGZvbGQgZiA9IE5hbWVkRGVjbHMuZm9sZCAoZnVuIGkgbiBvIF8gLT4gZiBpIG4gbylcblxubGV0IG51bV9vZl9zaXRlID9hZ2VudF9uYW1lIHNpdGVfbmFtZSBzaWduYXR1cmUgPVxuICBsZXQga2luZCA9XG4gICAgbWF0Y2ggYWdlbnRfbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+IFwic2l0ZSBuYW1lXCJcbiAgICB8IFNvbWUgYWdlbnRfbmFtZSAtPiBcInNpdGUgbmFtZSBmb3IgYWdlbnQgXCIgXiBhZ2VudF9uYW1lXG4gIGluXG4gIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kIHNpZ25hdHVyZSBzaXRlX25hbWVcblxubGV0IHNpdGVfb2ZfbnVtIGFkZHIgc2lnbmF0dXJlID1cbiAgdHJ5IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lnbmF0dXJlIGFkZHJcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBudW1fb2ZfaW50ZXJuYWxfc3RhdGUgc2l0ZV9pZCBzdGF0ZSBzaWduYXR1cmUgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9uYW1lLCBzaXRlX3NpZyA9IHNpZ25hdHVyZS5OYW1lZERlY2xzLmRlY2xzLihzaXRlX2lkKSBpblxuICAgIE5hbWVkRGVjbHMuZWx0X2lkXG4gICAgICB+a2luZDooXCJpbnRlcm5hbCBzdGF0ZSBmb3Igc2l0ZSBcIiBeIHNpdGVfbmFtZSlcbiAgICAgIHNpdGVfc2lnLmludGVybmFsX3N0YXRlIHN0YXRlXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBzaXRlX2lkIHZhbF9pZCBzaWduYXR1cmUgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgc2lnbmF0dXJlIHNpdGVfaWQgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9uYW1lIHNpdGVfc2lnLmludGVybmFsX3N0YXRlIHZhbF9pZFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGNvdW50ZXJfb2Zfc2l0ZV9pZCBzaXRlX2lkIHNpZ25hdHVyZSA9XG4gIHRyeSAoTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkKS5jb3VudGVyc19pbmZvXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgaGFzX2NvdW50ZXIgc2lnbmF0dXJlID1cbiAgZm9sZFxuICAgIChmdW4gcF9pZCBfIG9rIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBwX2lkIGluXG4gICAgICAgIG9rIHx8IG5vdCAoc2l0ZV9zaWcuY291bnRlcnNfaW5mbyA9IE5vbmUpXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgZmFsc2Ugc2lnbmF0dXJlXG5cbigqXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG4qKVxuXG5sZXQgb25lX3RvX2pzb24gPVxuICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biBzaWduYXR1cmUgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBcImludGVybmFsX3N0YXRlXCIsXG4gICAgICAgICAgICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgc2lnbmF0dXJlLmludGVybmFsX3N0YXRlICk7XG4gICAgICAgICAgKCBcImxpbmtzXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBsaW5rcyAtPlxuICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBhIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCAoQXJyYXkuZm9sZF9yaWdodCAoZnVuIGIgYyAtPiBgQm9vbCBiIDo6IGMpIGEgW10pXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgIGxpbmtzIFtdKSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmxpbmtzICk7XG4gICAgICAgICAgKCBcImNvdW50ZXJzX2luZm9cIixcbiAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChjMSwgYzIpIC0+IGBMaXN0IFsgYEludCBjMTsgYEludCBjMiBdKVxuICAgICAgICAgICAgICBzaWduYXR1cmUuY291bnRlcnNfaW5mbyApO1xuICAgICAgICBdKVxuXG5sZXQgb25lX29mX2pzb24gOiBZb2pzb24uQmFzaWMudCAtPiBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudCA9XG4gIE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcImludGVybmFsX3N0YXRlXCIsIGEpOyAoXCJsaW5rc1wiLCBiKTsgKFwiY291bnRlcnNfaW5mb1wiLCBjKSBdIC0+XG4gICAgICB7XG4gICAgICAgIGludGVybmFsX3N0YXRlID1cbiAgICAgICAgICBOYW1lZERlY2xzLm9mX2pzb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGE7XG4gICAgICAgIGxpbmtzID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCcgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEJvb2wgYiAtPiBiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGwnXG4gICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYjtcbiAgICAgICAgY291bnRlcnNfaW5mbyA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgTGlzdCBbIGBJbnQgYzE7IGBJbnQgYzIgXSAtPiBjMSwgYzJcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYztcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG5cbnR5cGUgY291bnRlcl9hZ2VudF9pbmZvID0geyBpZDogaW50OyBhcml0eTogaW50OyBwb3J0czogaW50ICogaW50IH1cblxudHlwZSBzID0ge1xuICBhZ2VudF9zaWdzOiB0IE5hbWVkRGVjbHMudDtcbiAgY291bnRlcl9hZ2VudF9pbmZvOiBjb3VudGVyX2FnZW50X2luZm8gb3B0aW9uO1xufVxuXG5sZXQgc2l6ZSBzaWdzID0gTmFtZWREZWNscy5zaXplIHNpZ3MuYWdlbnRfc2lnc1xubGV0IGdldCBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ3MuYWdlbnRfc2lncyBhZ2VudF9pZFxubGV0IGFyaXR5IHNpZ3MgYWdlbnRfaWQgPSBOYW1lZERlY2xzLnNpemUgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgbWF4X2FyaXR5IHNpZ3MgPVxuICBOYW1lZERlY2xzLmZvbGQgKGZ1biBfIF8geCBhIC0+IG1heCB4IChOYW1lZERlY2xzLnNpemUgYSkpIDAgc2lncy5hZ2VudF9zaWdzXG5cbmxldCBhZ2VudF9vZl9udW0gaSBzaWdzID0gTmFtZWREZWNscy5lbHRfbmFtZSBzaWdzLmFnZW50X3NpZ3MgaVxuXG5sZXQgbnVtX29mX2FnZW50IG5hbWUgc2lncyA9XG4gIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdlbnRcIiBzaWdzLmFnZW50X3NpZ3MgbmFtZVxuXG5sZXQgaWRfb2Zfc2l0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbnVtX29mX3NpdGUgfmFnZW50X25hbWUgc2l0ZV9uYW1lIChnZXQgc2lncyBuKVxuXG5sZXQgc2l0ZV9vZl9pZCBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPSBzaXRlX29mX251bSBzaXRlX2lkIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGlkX29mX2ludGVybmFsX3N0YXRlICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHkpIHNpdGVfbmFtZSBzdGF0ZSBzaWdzID1cbiAgbGV0IG4gPSBudW1fb2ZfYWdlbnQgYWdlbnRfdHkgc2lncyBpblxuICBsZXQgc2lnbmF0dXJlID0gZ2V0IHNpZ3MgbiBpblxuICBsZXQgc2l0ZV9pZCA9IG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSBzaWduYXR1cmUgaW5cbiAgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlXG5cbmxldCBpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ2VudF9pZCBpZF9zaXRlIGlkX3N0YXRlIHNpZ3MgPVxuICBpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIGlkX3NpdGUgaWRfc3RhdGUgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVzX251bWJlciBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnZW50X2lkKSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5zaXplIHNpdGVfc2lnLmludGVybmFsX3N0YXRlXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ2VudF9pZCBzaXRlX2lkIHNpZ3MgPVxuICB0cnlcbiAgICBsZXQgc2l0ZV9zaWcgPSBOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnZW50X2lkKSBzaXRlX2lkIGluXG4gICAgaWYgTmFtZWREZWNscy5zaXplIHNpdGVfc2lnLmludGVybmFsX3N0YXRlID0gMCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAwXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuZGVmYXVsdF9udW1fdmFsdWU6IGludmFsaWQgc2l0ZSBpZGVudGlmaWVyXCJcblxubGV0IHJlYyBhbGxvd2VkX2xpbmsgYWcxIHMxIGFnMiBzMiBzaWdzID1cbiAgaWYgYWcxID4gYWcyIHRoZW5cbiAgICBhbGxvd2VkX2xpbmsgYWcyIHMyIGFnMSBzMSBzaWdzXG4gIGVsc2UgKFxuICAgIHRyeVxuICAgICAgbWF0Y2ggKE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWcxKSBzMSkubGlua3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSBsIC0+IGwuKGFnMiAtIGFnMSkuKHMyKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIlNpZ25hdHVyZS5hbGxvd2VkX2xpbms6IGludmFsaWQgc2l0ZSBpZGVudGlmaWVyXCJcbiAgKVxuXG5sZXQgY3JlYXRlIH5jb3VudGVyc19wZXJfYWdlbnQgYWdlbnRfc2lncyA9XG4gIHtcbiAgICBhZ2VudF9zaWdzO1xuICAgIGNvdW50ZXJfYWdlbnRfaW5mbyA9XG4gICAgICAoaWYgY291bnRlcnNfcGVyX2FnZW50ID0gW10gdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgY291bnRlciBhZ2VudCwgd2UgY2hvb3NlIDAgZm9yIGl0cyBhZ2VudCBpZCBhbmQgMCBhbmQgMSBhcyBpdHMgcG9ydCBpZHMgKilcbiAgICAgICAgIFNvbWUgeyBpZCA9IDA7IGFyaXR5ID0gMjsgcG9ydHMgPSAwLCAxIH0pO1xuICB9XG5cbmxldCBpc19jb3VudGVyX2FnZW50IHNpZ3Mgbl9pZCA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+IG5faWQgPSBhZ2VudF9pbmZvLmlkXG5cbmxldCBwb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3Mgbl9pZCA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGFnZW50X2luZm8gLT5cbiAgICBpZiBuX2lkID0gYWdlbnRfaW5mby5pZCB0aGVuXG4gICAgICBTb21lIGFnZW50X2luZm8ucG9ydHNcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBzaXRlX2lzX2NvdW50ZXIgc2lncyBhZ190eSBpZCA9XG4gIGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpIDw+IE5vbmVcblxubGV0IGdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTm8gY291bnRlciBhZ2VudFwiXG4gIHwgU29tZSBjb3VudGVyX2FnZW50X2luZm8gLT4gY291bnRlcl9hZ2VudF9pbmZvXG5cbmxldCBwcmludF9hZ2VudCBzaWdzIGYgYWdfdHkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgYWdlbnRfb2ZfbnVtIGFnX3R5IHNpZ3NcblxubGV0IHByaW50X3NpdGUgc2lncyBhZ190eSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIHNpdGVfb2ZfaWQgYWdfdHkgaWQgc2lnc1xuXG5sZXQgcHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlIGYgaWQgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdfdHkgc2l0ZSBpZCBzaWdzXG5cbmxldCBwcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHByaW50X3NpdGUgc2lncyBhZ190eSBmIHNpdGVcbiAgfCBTb21lIGlkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVzfVwiXG4gICAgICAoc2l0ZV9vZl9pZCBhZ190eSBzaXRlIHNpZ3MpXG4gICAgICAoaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdfdHkgc2l0ZSBpZCBzaWdzKVxuXG5sZXQgcHJpbnRfY291bnRlciBzaWdzIGFnX3R5IGYgaWQgPVxuICBtYXRjaCBjb3VudGVyX29mX3NpdGVfaWQgaWQgKGdldCBzaWdzIGFnX3R5KSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGMxLCBjMikgLT4gRm9ybWF0LmZwcmludGYgZiBcIns9JWQvKz0lZH1cIiBjMSBjMlxuXG5sZXQgcHJpbnRfb25lID8oc2lncyA6IHMgb3B0aW9uKSAoaSA6IGludCkgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKVxuICAgIChzaWduYXR1cmUgOiB0KSA9XG4gIGxldCBwcF9pbnQgZiB4ID1cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgeCA+IDAgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuYSBmICgpIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgbmEpKVxuICAgICAgICB4XG4gIGluXG4gIGxldCBwcF9saW5rID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gXyBfIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIGZ1biBpIGYgLT4gKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbGlua3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhXVwiXG4gICAgICAgICAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBhZyAtPlxuICAgICAgICAgICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHNpIGYgYiAtPlxuICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3NpdGUgc2lncyAoaSArIGFnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBzaSAocHJpbnRfYWdlbnQgc2lncykgKGkgKyBhZykpKSlcbiAgICAgICAgICAgIGxpbmtzKVxuICBpblxuICBsZXQgcHBfY291bnRzIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoYzEsIGMyKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiez0lZC8rPSVkfVwiIGMxIGMyXG4gIGluXG4gIChOYW1lZERlY2xzLnByaW50XG4gICAgIH5zZXA6KGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIsQCxcIilcbiAgICAgKGZ1biBfIG5hbWUgZiBzaXRlX3NpZyAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhJWElYVwiIG5hbWUgcHBfaW50IHNpdGVfc2lnLmludGVybmFsX3N0YXRlXG4gICAgICAgICAocHBfbGluayBpKSBzaXRlX3NpZy5saW5rcyBwcF9jb3VudHMgc2l0ZV9zaWcuY291bnRlcnNfaW5mbykpXG4gICAgZiBzaWduYXR1cmVcblxubGV0IHByaW50IGYgc2lncyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiBzaSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JSVhZ2VudDogJXMoJWEpQF1cIiBuIChwcmludF9vbmUgfnNpZ3MgaSkgc2kpKVxuICAgIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgdG9fanNvbiBzaWdzID0gTmFtZWREZWNscy50b19qc29uIG9uZV90b19qc29uIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgb2ZfanNvbiB2ID1cbiAgbGV0IGFnZW50X3NpZ3MgOiAnYSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50ID1cbiAgICBOYW1lZERlY2xzLm9mX2pzb24gb25lX29mX2pzb24gdlxuICBpblxuICBtYXRjaFxuICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIFwiX19jb3VudGVyX2FnZW50XCIgYWdlbnRfc2lncy5OYW1lZERlY2xzLmZpbmRlclxuICB3aXRoXG4gIHwgU29tZSBpZCAtPlxuICAgIGxldCBhZ2VudF9zaWduYXR1cmUgPSBOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lncyBpZCBpblxuICAgIGxldCBwb3J0cyA9XG4gICAgICAoIG51bV9vZl9zaXRlIChcImFcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUsXG4gICAgICAgIG51bV9vZl9zaXRlIChcImJcIiwgTG9jLmR1bW15KSBhZ2VudF9zaWduYXR1cmUgKVxuICAgIGluXG4gICAgeyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBTb21lIHsgaWQ7IGFyaXR5ID0gMjsgcG9ydHMgfSB9XG4gIHwgTm9uZSAtPiB7IGFnZW50X3NpZ3M7IGNvdW50ZXJfYWdlbnRfaW5mbyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjY19zaXRlID0geyBzaXRlX2xpbms6IChpbnQgKiBpbnQpIG9wdGlvbjsgc2l0ZV9zdGF0ZTogaW50IG9wdGlvbiB9XG5cbnR5cGUgY2Nfbm9kZSA9IHtcbiAgbm9kZV90eXBlOiBpbnQ7XG4gIG5vZGVfaWRfaW5fd2l0bmVzczogaW50O1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIGFycmF5XG5cbmxldCByZWMgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgZG9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgKHgsIHkpIDo6IHEgLT5cbiAgICBsZXQgbyA9IGEuKHgpIGluXG4gICAgbGV0IHAgPSBiLih5KSBpblxuICAgIG8ubm9kZV90eXBlID0gcC5ub2RlX3R5cGVcbiAgICAmJlxuICAgIGxldCBpX29rID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIHggeSAtPlxuICAgICAgICAgIGJcbiAgICAgICAgICAmJlxuICAgICAgICAgIG1hdGNoIHguc2l0ZV9zdGF0ZSwgeS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGEgPSBiXG4gICAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IChTb21lIF8gfCBOb25lKSwgXyAtPiBmYWxzZSlcbiAgICAgICAgdHJ1ZSBvLm5vZGVfc2l0ZXMgcC5ub2RlX3NpdGVzXG4gICAgaW5cbiAgICBpX29rXG4gICAgJiZcbiAgICAobWF0Y2hcbiAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgKGZ1biBfIGMgeCB5IC0+XG4gICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY1xuICAgICAgICAgICB8IFNvbWUgdG9kbyAtPlxuICAgICAgICAgICAgIChtYXRjaCB4LnNpdGVfbGluaywgeS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gY1xuICAgICAgICAgICAgIHwgU29tZSAoYSwgcyksIFNvbWUgKGIsIHMnKSAtPlxuICAgICAgICAgICAgICAgaWYgcyA8PiBzJyB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICggTGlzdC5maW5kX2FsbCAoZnVuIChhJywgYicpIC0+IGEgPSBhJyB8fCBiID0gYicpIGRvbixcbiAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSB0b2RvIClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfLCBfIHwgXywgXyA6OiBfIDo6IF8gfCBbIF8gXSwgWyBfIF0gLT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFsgKGEnLCBiJykgXSwgW10gfCBbXSwgWyAoYScsIGInKSBdIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgYSA9IGEnICYmIGIgPSBiJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBjXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICB8IFtdLCBbXSAtPiBTb21lICgoYSwgYikgOjogdG9kbylcbiAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgKFNvbWUgcSkgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgICB3aXRoXG4gICAgfCBTb21lIHRvZG8nIC0+IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiICgoeCwgeSkgOjogZG9uKSB0b2RvJ1xuICAgIHwgXyAtPiBmYWxzZSlcblxubGV0IGNsYXNzaWZ5X2J5X3R5cGUgc2lncyBtaXggPVxuICBsZXQgbGVuID0gU2lnbmF0dXJlLnNpemUgc2lncyBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsZW4gKDAsIFtdKSBpblxuICBsZXQgY2xhc3NpZnkgaWQgYWcgPVxuICAgIGxldCBuYiwgYWdzID0gb3V0LihhZy5ub2RlX3R5cGUpIGluXG4gICAgb3V0LihhZy5ub2RlX3R5cGUpIDwtIHN1Y2MgbmIsIGlkIDo6IGFnc1xuICBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSBjbGFzc2lmeSBtaXggaW5cbiAgb3V0XG5cbmxldCBlcXVhbCBjYnRfYSBhIGNidF9iIGIgPVxuICBtYXRjaCBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGwgY2J0X2EgY2J0X2Igd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIChbXSwgYWdzKSAtPiBhZ3MgPSBbXVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+IGJvb2wgfHwgYWdlbnRzX2FyZV9jb21wYXRpYmxlcyBhIGIgW10gWyBoMSwgYWcgXSlcbiAgICAgIGZhbHNlIGFnc1xuXG5sZXQgaGFzaF9wcmltZSA9IDI5XG5cbmxldCBjb2Fyc2VfaGFzaCBjYnQgPVxuICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGwsIF8pIGFjYyAtPiBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKSBjYnQgMFxuXG50eXBlIHQgPSAoaW50ICogKGludCAqIGludCBsaXN0KSBhcnJheSAqIGNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5JbnRNYXAudFxuXG5sZXQgZW1wdHkgPSBNb2RzLkludE1hcC5lbXB0eVxuXG5sZXQgaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyB4IHMgPVxuICBsZXQgY2J0X3ggPSBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgeCBpblxuICBsZXQgaHMgPSBjb2Fyc2VfaGFzaCBjYnRfeCBpblxuICBsZXQgbCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbXSBocyBzIGluXG4gIGxldCByZWMgYXV4X2luY3JlbWVudCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbIDEsIGNidF94LCB4IF1cbiAgICB8ICgobiwgY2J0X3ksIHkpIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGVxdWFsIGNidF94IHggY2J0X3kgeSB0aGVuXG4gICAgICAgIChzdWNjIG4sIGNidF95LCB5KSA6OiB0XG4gICAgICBlbHNlXG4gICAgICAgIGggOjogYXV4X2luY3JlbWVudCB0XG4gIGluXG4gIE1vZHMuSW50TWFwLmFkZCBoc1xuICAgIChpZiByYXcgdGhlblxuICAgICAgICgxLCBjYnRfeCwgeCkgOjogbFxuICAgICBlbHNlXG4gICAgICAgYXV4X2luY3JlbWVudCBsKVxuICAgIHNcblxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIGNjIChuaWQsIHNpZCkgY291bnQgPVxuICBsZXQgYWcgPSBjYy4obmlkKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpZCBhY2Mgc2kgLT5cbiAgICAgIGlmIGlkID0gc2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPiBjb3VudGVyX3ZhbHVlIGNjIHggKGFjYyArIDEpXG4gICAgICApKVxuICAgIGNvdW50IGFnLm5vZGVfc2l0ZXNcblxubGV0IGNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdyBzaWdzIGNjID1cbiAgbGV0IHIgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgY2NfbGlzdCwgaW5kZXhlcywgXyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIChhY2MsIGluZGV4ZXMsIHBvcykgYWcgLT5cbiAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5ub2RlX3R5cGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaW5kZXhlcycgPVxuICAgICAgICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgICAgICAgIGluZGV4ZXNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBwb3MgaW5kZXhlcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiSW5qZWN0aXZpdHkgb2YgcmVuYW1pbmcgaW4gc25hcHNob3RcIikpXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IHJcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFnIDo6IGFjYywgaW5kZXhlcycsIHBvcyArIDFcbiAgICAgICAgfCBTb21lIF8gLT4gYWNjLCBpbmRleGVzLCBwb3MpXG4gICAgICAoW10sIHIsIDApIGNjXG4gIGluXG4gIGxldCBjY193aXRob3V0X2NvdW50ZXJzID0gQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgY2NfbGlzdCkgaW5cbiAgW3xcbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9XG4gICAgICAgICAgICAgIChpZiByYXcgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIGFnLm5vZGVfaWRfaW5fd2l0bmVzc1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIGFnLm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcyA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgICAgICAoZnVuIGlkIHNpIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZy5ub2RlX3R5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIChsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWcubm9kZV90eXBlIGlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX2xpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChkbl9pZCwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG5faWQnID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmRleGVzIGRuX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFJlbmFtaW5nLlVuZGVmaW5lZCB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuKGRuX2lkKS5ub2RlX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5MSU5LUyBbICgwLCBkbl9pZCcpLCBzIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLkNvdW50ZXIgKGNvdW50ZXJfdmFsdWUgY2MgKGRuX2lkLCBzKSAwKSkpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBhZy5ub2RlX3NpdGVzO1xuICAgICAgICAgIH0pXG4gICAgICBjY193aXRob3V0X2NvdW50ZXJzO1xuICB8XVxuXG5sZXQgZm9sZCBmIHggcyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIF8gbCBhY2MgLT4gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChuYiwgXywgY2MpIC0+IGYgYSBuYiBjYykgYWNjIGwpXG4gICAgcyB4XG5cbmxldCBleHBvcnQgfmRlYnVnX21vZGUgfnJhdyBzaWdzIHMgPVxuICBmb2xkIChmdW4gYSB4IHkgLT4gKHgsIGNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdyBzaWdzIHkpIDo6IGEpIFtdIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludCAqIGludFxuKCoqIGFnZW50X2lkICogYWdlbnRfdHlwZSAqKVxuXG50eXBlIGFnID0gdFxuXG5sZXQgbWFrZSB+aWQgfnNvcnQgPSBpZCwgc29ydFxuXG5sZXQgcHJpbnQgP3NpZ3MgfndpdGhfaWQgZiAoaSwgdHkpID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHR5IChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX2lkIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIi8qJWkqL1wiIGkpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpXCIgaVxuXG5sZXQgcHJpbnRfc2l0ZSA/c2lncyAoaSwgYWdlbnQpIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ2VudCBmIGlkXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpXCIgaSBpZFxuXG5sZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgKGksIGFnZW50KSBzaXRlIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ2VudCBzaXRlIGYgKFNvbWUgaWQpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpfiVpXCIgaSBzaXRlIGlkXG5cbmxldCBwcmludF9yYXdfaW50ZXJuYWwgP3NpZ3MgKGksIGFnZW50KSBzaXRlIGYgaWQgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIGlkXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwibiVpcyVpfiVpXCIgaSBzaXRlIGlkXG5cbmxldCByZW5hbWUgfmRlYnVnX21vZGUgaW5qIChuX2lkLCBuX3R5KSA9XG4gIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBuX2lkLCBuX3R5XG5cbmxldCBzb3J0IChfLCB0eSkgPSB0eVxubGV0IGlkIChpZCwgXykgPSBpZFxubGV0IGNvbXBhcmUgKGlkMSwgXykgKGlkMiwgXykgPSBNb2RzLmludF9jb21wYXJlIGlkMSBpZDJcbmxldCBqc29uX2RpY3Rpb25uYXJ5ID0gXCJcXFwiYWdlbnRcXFwiOntcXFwiaWRcXFwiOjAsXFxcInR5cGVcXFwiOjF9XCJcblxubGV0IHdyaXRlX2pzb24gb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9qc29uIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcblxubGV0IHRvX2pzb24gKGlkLCB0eSkgPSBgTGlzdCBbIGBJbnQgaWQ7IGBJbnQgdHkgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF0gLT4gaWQsIHR5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuXG5tb2R1bGUgU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBhZ1xuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBwcmludCA/c2lnczpOb25lIH53aXRoX2lkOnRydWVcbmVuZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZGdlID0gc3RydWN0XG4gIHR5cGUgdCA9IEFnZW50LnQgKiBpbnRcbiAgKCoqIGFnZW50ICogc2l0ZSAqKVxuXG4gIGxldCBfY29tcGFyZSAoKG4sIF8pLCBzKSAoKG4nLCBfKSwgcycpID1cbiAgICBsZXQgYyA9IE1vZHMuaW50X2NvbXBhcmUgbiBuJyBpblxuICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICBjXG4gICAgZWxzZVxuICAgICAgTW9kcy5pbnRfY29tcGFyZSBzIHMnXG5cbiAgKCogbGV0IGR1bW15X2xpbmsgPSAoKC0xLC0xKSwtMSkgKilcbmVuZFxuXG4oKiBmdW5jdGlvbnMgdXNpbmcgdGhlIGNhY2hlIGFyZSByZXNwb25zaWJsZSBvZiByZXNldGluZyB0aGUgY2FjaGUgYXQgZXhpdCAqKVxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICB0ZXN0czogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgICBiYWc6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgbXV0YWJsZSBsaW1pdDogaW50O1xuICB9XG5cbiAgbGV0IGludF9sID0gMzEgKCpTeXMuaW50X3NpemUqKVxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIHsgdGVzdHMgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSAwOyBiYWcgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSAwOyBsaW1pdCA9IDAgfVxuXG4gIGxldCBtYXJrIHQgaSA9XG4gICAgbGV0IHggPSBpIC8gaW50X2wgaW5cbiAgICBsZXQgb2xkID0gTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIG9sZCA9IDAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHQuYmFnIHQubGltaXQgeCBpblxuICAgICAgICB0LmxpbWl0IDwtIHN1Y2MgdC5saW1pdFxuICAgICAgKVxuICAgIGluXG4gICAgTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyB4IChvbGQgbG9yICgxIGxzbCAoaSBtb2QgaW50X2wpKSlcblxuICBsZXQgdGVzdCB0IGkgPVxuICAgIE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgKGkgLyBpbnRfbCkgbGFuZCAoMSBsc2wgKGkgbW9kIGludF9sKSkgPD4gMFxuXG4gIGxldCByZXNldCB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgKE1vZHMuRHluQXJyYXkuZ2V0IHQuYmFnIGkpIDApXG4gICAgICAgIHQubGltaXRcbiAgICBpblxuICAgIHQubGltaXQgPC0gMFxuXG4gIGxldCBpdGVyaV9yZXNldCBmIHQgPVxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICBsZXQgaSA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuYmFnIGsgaW5cbiAgICAgICAgICBsZXQgdiA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgaSBpblxuICAgICAgICAgIGlmIHYgPD4gMCB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpbnRfbCAqIGkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgICAgICAgICAgKGZ1biBqIC0+IGlmIHYgbGFuZCAoMSBsc2wgaikgPD4gMCB0aGVuIGYgKGFjYyArIGopKVxuICAgICAgICAgICAgICAgIGludF9sXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyBpIDBcbiAgICAgICAgICApKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcbmVuZFxuXG5sZXQgZ2x1ZV9jb25uZWN0ZWRfY29tcG9uZW50IGxpbmtzIGNhY2hlIGNjcyBub2RlMSBub2RlMiA9XG4gIGxldCBjY19pZF9vcCA9IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMiBpblxuICBsZXQgcmVjIGV4cGxvcmVfc2l0ZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIG5leHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICB8IFNvbWUgKChpZCcsIF8pLCBfKSAtPlxuICAgICAgICBpZiBNb2RzLkR5bkFycmF5LmdldCBjY3MgaWQnID0gY2NfaWRfb3AgfHwgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIChpZCcgOjogbmV4dClcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBpc19pbl9jYyBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICBpc19pbl9jY1xuICAgICAgICAoZXhwbG9yZV9zaXRlIGlkIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgbmV4dClcbiAgICAgICAgdG9kb3NcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSBjY19pZF9vcCkgY2FjaGVcbiAgICAgIHwgXyAtPiBpc19pbl9jYyBbXSBuZXh0KVxuICBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIG5vZGUxIGluXG4gIGlzX2luX2NjIFtdIFsgbm9kZTEgXVxuXG5sZXQgc2VwYXJhdGVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyAoY2FjaGUxLCBjYWNoZTIpIGNjcyBub2RlMSBub2RlMiA9XG4gIGxldCBvbGRfY2NfaWQgPSBPcHRpb25fdXRpbC51bnNvbWUgKC0xKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIG5vZGUxKSBpblxuICBsZXQgcmVjIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIHNpdGUgbmV4dCA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgU29tZSBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICB8IFNvbWUgKChpZCcsIF8pLCBfKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIG1hdGNoIGRzdF9jYWNoZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGRjIC0+IENhY2hlLnRlc3QgZGMgaWQnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgaWYgQ2FjaGUudGVzdCBjYWNoZSBpZCcgdGhlblxuICAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgbmV4dCcgLT4gbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBuZXh0JyB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXQgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIG9yaWcpKSBjYWNoZVxuICAgICAgICBpblxuICAgICAgICBTb21lIChvbGRfY2NfaWQsIG9yaWcpXG4gICAgICB8IF8gLT4gbWFya19uZXdfY2Mgb3JpZyBjYWNoZSBbXSBuZXh0KVxuICBpblxuICBsZXQgcmVjIGluX3NhbWVfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBvdGhlcl9uZXh0IHRoaXNfb3JpZyB0aGlzX2NhY2hlXG4gICAgICB0aGlzX25leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgaW5zcGVjdF9zaXRlIHRoaXNfY2FjaGUgfmRzdF9jYWNoZTpvdGhlcl9jYWNoZSBpZFxuICAgICAgICAgICAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpXG4gICAgICAgICAgIHRoaXNfbmV4dFxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IG90aGVyX2NhY2hlIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgU29tZSBuZXh0JyAtPlxuICAgICAgICBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZSBuZXh0J1xuICAgICAgICAgIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCB0aGlzX25leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiBDYWNoZS50ZXN0IHRoaXNfY2FjaGUgb2xkX2NjX2lkIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IHRoaXNfY2FjaGUgaW5cbiAgICAgICAgICBtYXJrX25ld19jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIFtdIG90aGVyX25leHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDYWNoZS5pdGVyaV9yZXNldFxuICAgICAgICAgICAgICAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgKFNvbWUgdGhpc19vcmlnKSlcbiAgICAgICAgICAgICAgdGhpc19jYWNoZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZSAob2xkX2NjX2lkLCB0aGlzX29yaWcpXG4gICAgICAgIClcbiAgICAgIHwgXyAtPlxuICAgICAgICBpbl9zYW1lX2NjIHRoaXNfb3JpZyB0aGlzX2NhY2hlIHRoaXNfbmV4dCBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIFtdXG4gICAgICAgICAgb3RoZXJfbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZTEgbm9kZTEgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZTIgbm9kZTIgaW5cbiAgaW5fc2FtZV9jYyBub2RlMSBjYWNoZTEgWyBub2RlMSBdIG5vZGUyIGNhY2hlMiBbXSBbIG5vZGUyIF1cblxudHlwZSB0YWJsZXMgPSB7XG4gIGNvbm5lY3Q6IEVkZ2UudCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzdGF0ZTogaW50IG9wdGlvbiBhcnJheSBNb2RzLkR5bkFycmF5LnQ7XG4gIHNvcnQ6IGludCBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICBjb25uZWN0ZWRfY29tcG9uZW50OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudCBvcHRpb247XG4gIGNhY2hlczogQ2FjaGUudCAqIENhY2hlLnQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSB0YWJsZXM6IHRhYmxlcyBvcHRpb247XG4gIG1pc3NpbmdzOiBNb2RzLkludDJTZXQudDtcbiAgZnJlZV9pZDogaW50ICogaW50IGxpc3Q7XG59XG4oKiogKGFnZW50LHNpdGUgLT4gYmluZGluZ19zdGF0ZTsgbWlzc2luZ3MpO1xuICAgIGFnZW50LHNpdGUgLT4gaW50ZXJuYWxfc3RhdGU7IGFnZW50IC0+IHNvcnQ7IGZyZWVfaWRcbiAgICB0aGUgZnJlZSBzaXRlcyBhcmUgbmVpdGhlciBpbiBtaXNzaW5ncyBub3IgaW4gbGlua2luZ19kZXN0aW5hdGlvbiAqKVxuXG5sZXQgZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICB7XG4gICAgdGFibGVzID1cbiAgICAgIFNvbWVcbiAgICAgICAge1xuICAgICAgICAgIGNvbm5lY3QgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBbfHxdO1xuICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgTm9uZTtcbiAgICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50ID1cbiAgICAgICAgICAgIChpZiB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWUgKE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmUpXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgIH07XG4gICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuZW1wdHk7XG4gICAgZnJlZV9pZCA9IDAsIFtdO1xuICB9XG5cbmxldCBjb3B5IGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAge1xuICAgICAgdGFibGVzID1cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbm5lY3QgPSBNb2RzLkR5bkFycmF5Lm1hcCBBcnJheS5jb3B5IHRhYmxlcy5jb25uZWN0O1xuICAgICAgICAgICAgc3RhdGUgPSBNb2RzLkR5bkFycmF5Lm1hcCBBcnJheS5jb3B5IHRhYmxlcy5zdGF0ZTtcbiAgICAgICAgICAgIHNvcnQgPSBNb2RzLkR5bkFycmF5LmNvcHkgdGFibGVzLnNvcnQ7XG4gICAgICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50ID1cbiAgICAgICAgICAgICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChNb2RzLkR5bkFycmF5LmNvcHkgY2NzKSk7XG4gICAgICAgICAgICBjYWNoZXMgPSBDYWNoZS5jcmVhdGUgKCksIENhY2hlLmNyZWF0ZSAoKTtcbiAgICAgICAgICB9O1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzO1xuICAgIH1cblxudHlwZSBzdGF0cyA9IHsgbmJfYWdlbnRzOiBpbnQgfVxuXG5sZXQgc3RhdHMgZ3JhcGggPVxuICBsZXQgdG9wX2lkLCBmcmVlX2lkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgeyBuYl9hZ2VudHMgPSB0b3BfaWQgLSBMaXN0Lmxlbmd0aCBmcmVlX2lkcyB9XG5cbmxldCBhZGRfYWdlbnQgP2lkIHNpZ3MgdHkgZ3JhcGggPVxuICBsZXQgYXIgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eSBpblxuICBsZXQgYWwgPSBBcnJheS5tYWtlIGFyIE5vbmUgaW5cbiAgbGV0IGFpID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0IGgsIGZyZWVfaWQgPVxuICAgICAgbWF0Y2ggaWQgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+XG4gICAgICAgICggaWQsXG4gICAgICAgICAgbGV0IG5ld19pZCwgbCA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgICBpZiBpZCA8IG5ld19pZCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIExpc3QucGFydGl0aW9uIChmdW4gaSAtPiBpID0gaWQpIGwgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdCAtPiBuZXdfaWQsIHRcbiAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgKFwiVHJ5IHRvIGFkZCBhbiBhZ2VudCB3aXRoIGEgdGhlIGZyZWUgaWQgXCJcbiAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBpZCkpKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgKCBzdWNjIGlkLFxuICAgICAgICAgICAgICBUb29scy5yZWN0aSAoZnVuIGFjYyBrIC0+IChrICsgbmV3X2lkKSA6OiBhY2MpIGwgKGlkIC0gbmV3X2lkKSApIClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZ3JhcGguZnJlZV9pZCB3aXRoXG4gICAgICAgIHwgbmV3X2lkLCBoIDo6IHQgLT4gaCwgKG5ld19pZCwgdClcbiAgICAgICAgfCBuZXdfaWQsIFtdIC0+IG5ld19pZCwgKHN1Y2MgbmV3X2lkLCBbXSkpXG4gICAgaW5cbiAgICBsZXQgbWlzc2luZ3MnID1cbiAgICAgIFRvb2xzLnJlY3RpIChmdW4gYSBzIC0+IE1vZHMuSW50MlNldC5hZGQgKGgsIHMpIGEpIGdyYXBoLm1pc3NpbmdzIGFyXG4gICAgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuY29ubmVjdCBoIGFsIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnN0YXRlIGggYWkgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc29ydCBoIChTb21lIHR5KSBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGggKFNvbWUgaClcbiAgICBpblxuICAgIGgsIHsgdGFibGVzID0gU29tZSB0YWJsZXM7IG1pc3NpbmdzID0gbWlzc2luZ3MnOyBmcmVlX2lkIH1cblxubGV0IGFkZF9mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgYWRkX2ludGVybmFsIGFnIHMgaSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIDwtIFNvbWUgaSBpblxuICAgIHsgdGFibGVzID0gU29tZSB0YWJsZXM7IG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7IGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkIH1cblxubGV0IGFkZF9saW5rIChhZywgdHkpIHMgKGFnJywgdHknKSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIFNvbWUgKChhZycsIHR5JyksIHMnKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZycpLihzJykgPC0gU29tZSAoKGFnLCB0eSksIHMpXG4gICAgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIGxldCBpID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZykgaW5cbiAgICAgICAgbGV0IGogPSBPcHRpb25fdXRpbC51bnNvbWUgKC0yKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnJykgaW5cbiAgICAgICAgaWYgaSA9IGogdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCB0YWJsZXMuY29ubmVjdCAoZnN0IHRhYmxlcy5jYWNoZXMpIGNjcyBhZ1xuICAgICAgICAgICAgICBhZydcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKGosIGkpXG4gICAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgbWlzc2luZ3MgPVxuICAgICAgICAgIE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKVxuICAgICAgICAgICAgKE1vZHMuSW50MlNldC5yZW1vdmUgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IHJlbW92ZV9hZ2VudCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBhZyBbfHxdIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgYWcgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGFnIE5vbmVcbiAgICBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuZmlsdGVyIChmdW4gKGFnJywgXykgLT4gYWcgPD4gYWcnKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPVxuICAgICAgICAobGV0IG5ld19pZCwgaWRzID0gZ3JhcGguZnJlZV9pZCBpblxuICAgICAgICAgbmV3X2lkLCBhZyA6OiBpZHMpO1xuICAgIH1cblxubGV0IHJlbW92ZV9mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IGFzc2VydCAoKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPSBOb25lKSBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQuYWRkIChhZywgcykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICB9XG5cbmxldCBnZXRfaW50ZXJuYWwgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIlNpdGUgXCIgXiBzdHJpbmdfb2ZfaW50IHMgXiBcIiBvZiBhZ2VudCBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgICAgICBeIFwiIGhhcyBubyBpbnRlcm5hbCBzdGF0ZSBpbiB0aGUgY3VycmVudCBncmFwaC5cIikpXG5cbmxldCBnZXRfc2l0ZXMgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgYXJyID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgQXJyYXkubGVuZ3RoIGFyclxuXG5sZXQgZ2V0X3NvcnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgIHwgU29tZSB0eSAtPiB0eVxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiQWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgaGFzIG5vIHR5cGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgcmVtb3ZlX2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICAobWF0Y2ggaSB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoIGksXG4gICAgICAgIHtcbiAgICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgICBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzO1xuICAgICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgICB9ICkpXG5cbmxldCByZW1vdmVfbGluayBhZyBzIGFnJyBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZycpLihzJykgPC0gTm9uZSBpblxuICAgIGxldCBvdXQgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT5cbiAgICAgICAgc2VwYXJhdGVfY29ubmVjdGVkX2NvbXBvbmVudCB0YWJsZXMuY29ubmVjdCB0YWJsZXMuY2FjaGVzIGNjcyBhZyBhZydcbiAgICBpblxuICAgICgge1xuICAgICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgICAgbWlzc2luZ3MgPVxuICAgICAgICAgIE1vZHMuSW50MlNldC5hZGQgKGFnLCBzKSAoTW9kcy5JbnQyU2V0LmFkZCAoYWcnLCBzJykgZ3JhcGgubWlzc2luZ3MpO1xuICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIH0sXG4gICAgICBvdXQgKVxuXG5sZXQgaXNfYWdlbnQgKGFnLCB0eSkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICAobWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgd2l0aFxuICAgIHwgU29tZSB0eScgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAodHkgPSB0eScpIGluXG4gICAgICB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgaXNfYWdlbnRfaWQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyA8PiBOb25lXG5cbmxldCBpc19mcmVlIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdICYmIHQuKHMpID0gTm9uZVxuXG5sZXQgaXNfaW50ZXJuYWwgaSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcgaW5cbiAgICB0IDw+IFt8fF1cbiAgICAmJlxuICAgIChtYXRjaCB0LihzKSB3aXRoXG4gICAgfCBTb21lIGogLT4gaiA9IGlcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBsaW5rX2V4aXN0cyBhZyBzIGFnJyBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICB0IDw+IFt8fF1cbiAgICAmJlxuICAgIChtYXRjaCB0LihzKSB3aXRoXG4gICAgfCBTb21lICgoYWcnJywgXyksIHMnJykgLT4gYWcnID0gYWcnJyAmJiBzJyA9IHMnJ1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGV4aXN0c19mcmVzaCBhZyBzIHR5IHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIGlmIHQgPSBbfHxdIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuKHMpIHdpdGhcbiAgICAgIHwgU29tZSAoKGFnJywgdHknKSwgcycnKSAtPlxuICAgICAgICBpZiB0eScgPSB0eSAmJiBzJyA9IHMnJyB0aGVuXG4gICAgICAgICAgU29tZSBhZydcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgKVxuXG5sZXQgbGlua19kZXN0aW5hdGlvbiBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpXG5cbmxldCBpdGVyX25laWdoYm9ycyBmIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFnX3RhYmxlID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBBcnJheS5pdGVyXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBzIC0+IGYgKGZzdCBzKSlcbiAgICAgIGFnX3RhYmxlXG5cbmxldCBhbGxfYWdlbnRzX3doZXJlIGYgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgb3V0ID0gSW50Q29sbGVjdGlvbi5jcmVhdGUgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkR5bkFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaWQgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgdHkgd2hlbiBmIChpZCwgdHkpIC0+IEludENvbGxlY3Rpb24uYWRkIGlkIG91dFxuICAgICAgICAgIHwgXyAtPiAoKSlcbiAgICAgICAgdGFibGVzLnNvcnRcbiAgICBpblxuICAgIG91dFxuXG5sZXQgaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IGFnIGFnJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgXCJpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZyA9IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpXG5cbmxldCBnZXRfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgXCJnZXRfY29ubmVjdGVkX2NvbXBvbmVudCB3aGlsZSBub3QgdHJhY2tpbmcgY2NzXCIpKVxuICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnKVxuXG4oKiogVGhlIHNuYXBzaG90IG1hY2hpbmVyeSAqKVxubGV0IG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgbm9kZSBncmFwaCA9XG4gIGxldCByZWMgYnVpbGQgaWQgYWNjIGtub3duID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBUb29scy5hcnJheV9yZXZfbWFwX29mX2xpc3RcbiAgICAgICAgKGZ1biAobm9kZV9pZF9pbl93aXRuZXNzLCBub2RlX3R5cGUsIHNpdGVzKSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfaWRfaW5fd2l0bmVzcztcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfdHlwZTtcbiAgICAgICAgICAgIFNuYXBzaG90Lm5vZGVfc2l0ZXMgPVxuICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGxpbmssIHNpdGVfc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFNuYXBzaG90LnNpdGVfbGluayA9XG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgobiwgXyksIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAoLTEpIG4ga25vd24sIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rO1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX3N0YXRlO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBzaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgICBhY2NcbiAgICB8IChub2RlLCB0eSkgOjogdG9kb3MgLT5cbiAgICAgIGlmIENhY2hlLnRlc3QgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgdGhlblxuICAgICAgICBidWlsZCBpZCBhY2Mga25vd24gdG9kb3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBncmFwaC5zb3J0IG5vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFZGdlcy5vbmVfY29ubmVjdGVkX2NvbXBvbmVudFwiXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayAoZnN0IGdyYXBoLmNhY2hlcykgbm9kZSBpblxuICAgICAgICAgIGxldCBrbm93bicgPSBNb2RzLkludE1hcC5hZGQgbm9kZSBpZCBrbm93biBpblxuICAgICAgICAgIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gICAgICAgICAgbGV0IHRvZG9zJywgcG9ydHMgPVxuICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgKGZ1biAodG9kb3MsIGFjYykgaSAtPlxuICAgICAgICAgICAgICAgIGxldCBsaW5rID0gKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLmNvbm5lY3Qgbm9kZSkuKGkpIGluXG4gICAgICAgICAgICAgICAgKCAobWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdG9kb3NcbiAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChuJywgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIE1vZHMuSW50TWFwLm1lbSBuJyBrbm93bicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRvZG9zXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBwIDo6IHRvZG9zKSxcbiAgICAgICAgICAgICAgICAgIChsaW5rLCAoTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc3RhdGUgbm9kZSkuKGkpKSA6OiBhY2MgKSlcbiAgICAgICAgICAgICAgKHRvZG9zLCBbXSkgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGJ1aWxkIChzdWNjIGlkKSAoKG5vZGUsIHR5LCBwb3J0cykgOjogYWNjKSBrbm93bicgdG9kb3MnXG4gICAgICApXG4gIGluXG4gIGJ1aWxkIDAgW10gTW9kcy5JbnRNYXAuZW1wdHkgWyBub2RlLCB0eSBdXG5cbmxldCBzcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBzcGVjaWUgPVxuICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgcm9vdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgIChcIlNvcnQgb2Ygbm9kZSB1bmF2YWlsYWJsZSBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdCkpKVxuICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgIFNuYXBzaG90LmNjX3RvX3VzZXJfY2MgfmRlYnVnX21vZGUgfnJhdzp0cnVlIHNpZ3NcbiAgICAgICAgICAob25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSByb290IHRhYmxlcylcbiAgICBpblxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBzcGVjaWVcblxubGV0IHJlYyBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyBub2RlID1cbiAgaWYgbm9kZSA9IE1vZHMuRHluQXJyYXkubGVuZ3RoIHRhYmxlcy5zb3J0IHRoZW4gKFxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBjY3NcbiAgKSBlbHNlIGlmIENhY2hlLnRlc3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBub2RlIHRoZW5cbiAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIGNjcyAoc3VjYyBub2RlKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgICB8IFNvbWUgdHkgLT5cbiAgICAgIGxldCBvdXQgPSBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCBzaWdzIHR5IG5vZGUgdGFibGVzIGluXG4gICAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzXG4gICAgICAgIChTbmFwc2hvdC5pbmNyZW1lbnRfaW5fc25hcHNob3QgfnJhdyBzaWdzIG91dCBjY3MpXG4gICAgICAgIChzdWNjIG5vZGUpXG4gIClcblxubGV0IGJ1aWxkX3NuYXBzaG90IH5yYXcgc2lncyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzIFNuYXBzaG90LmVtcHR5IDBcblxubGV0IGJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBzaWdzIGdyYXBoID1cbiAgU25hcHNob3QuZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyAoYnVpbGRfc25hcHNob3QgfnJhdyBzaWdzIGdyYXBoKVxuXG5sZXQgZGVidWdfcHJpbnQgZiBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT1VUREFURURAIFwiXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgcHJpbnRfc2l0ZXMgYWcgPVxuICAgICAgUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaSV0JXRcIiBzXG4gICAgICAgICAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBpbnQgLT4gZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGludFxuICAgICAgICAgICAgfCBOb25lIC0+IGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBpZiBNb2RzLkludDJTZXQubWVtIChhZywgcykgZ3JhcGgubWlzc2luZ3MgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiP1wiXG4gICAgICAgICAgICAgIHwgU29tZSAoKGFnJywgdHknKSwgcycpIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi0+JWk6JWkuJWlcIiBhZycgdHknIHMnKSlcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkucHJpbnQgUHAuZW1wdHlcbiAgICAgIChmdW4gYWcgZiBhIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICAgICAgfCBTb21lIHR5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaShAWyVhQF0pQCBcIiBhZyB0eSAocHJpbnRfc2l0ZXMgYWcpIGFcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYSA9IFt8fF0gdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWk6Tk9UWVBFKEBbJWFAXSlAIFwiIGFnIChwcmludF9zaXRlcyBhZykgYSlcbiAgICAgIGYgdGFibGVzLmNvbm5lY3RcblxudHlwZSBwYXRoID0gKChBZ2VudC50ICogaW50KSAqIChBZ2VudC50ICogaW50KSkgbGlzdFxuKCoqICgoYWdlbnRfaWQsIGFnZW50X25hbWUpLHNpdGVfbmFtZSkgKilcblxubGV0IHJlYyBwcmludF9wYXRoID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFBwLmVtcHR5X3NldCBmXG4gIHwgWyAoKGFnLCBzKSwgKGFnJywgcycpKSBdIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJWFcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICBzXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZycpXG4gICAgICBzJ1xuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZydcbiAgfCAoKGFnLCBzKSwgKCgocCcsIF8pIGFzIGFnJyksIHMnKSkgOjogKCgoKHAnJywgXyksIF8pLCBfKSA6OiBfIGFzIGwpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJXQlYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgaWYgcCcgPD4gcCcnIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEjI1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZycpXG4gICAgICAocHJpbnRfcGF0aCA/c2lncykgbFxuXG5sZXQgZW1wdHlfcGF0aCA9IFtdXG5sZXQgc2luZ2xldG9uX3BhdGggbiBzIG4nIHMnID0gWyAobiwgcyksIChuJywgcycpIF1cbmxldCByZXZfcGF0aCBsID0gTGlzdC5yZXZfbWFwIChmdW4gKHgsIHkpIC0+IHksIHgpIGxcblxubGV0IGlzX3ZhbGlkX3BhdGggcCBncmFwaCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW4gKCgoYWcsIF8pLCBzKSwgKChhZycsIF8pLCBzJykpIC0+IGxpbmtfZXhpc3RzIGFnIHMgYWcnIHMnIGdyYXBoKVxuICAgIHBcblxubGV0IGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsIH5sb29waW5nID9tYXhfZGlzdGFuY2Ugc3RvcF9vbl9maW5kIGlzX2ludGVyZXN0aW5nXG4gICAgbGlua3MgY2FjaGUgb3V0IHRvZG9zID1cbiAgbGV0IHJlYyBsb29rX2VhY2hfc2l0ZSAoKCgoaWQsIF8pIGFzIGFnKSwgcGF0aCkgYXMgeCkgc2l0ZVxuICAgICAgKChvdXQsIG5leHQpIGFzIGFjYykgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgKGZhbHNlLCBvdXQsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgfCBTb21lICgoKChpZCcsIF8pIGFzIGFnJyksIHNpdGUnKSBhcyB5KSAtPlxuICAgICAgICBpZiBhZycgPSBmc3QgbG9vcGluZyAmJiBzaXRlJyA8PiBzbmQgbG9vcGluZyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGxldCBwYXRoJyA9ICh5LCAoYWcsIHByZWQgc2l0ZSkpIDo6IHBhdGggaW5cbiAgICAgICAgICBsZXQgbmV4dCcgPSAoYWcnLCBwYXRoJykgOjogbmV4dCBpblxuICAgICAgICAgIGxldCBvdXQnLCBzdG9yZSA9XG4gICAgICAgICAgICBtYXRjaCBpc19pbnRlcmVzdGluZyBhZycgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4gKCh4LCBpZCcpLCBwYXRoJykgOjogb3V0LCB0cnVlXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0LCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc3RvcmUgJiYgc3RvcF9vbl9maW5kIHRoZW5cbiAgICAgICAgICAgIFNvbWUgKHRydWUsIG91dCcsIG5leHQnKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgKG91dCcsIG5leHQnKVxuICAgICAgICApXG4gICAgKVxuICBpblxuICAoKiBkZXB0aCA9IG51bWJlciBvZiBlZGdlcyBiZXR3ZWVuIHJvb3QgYW5kIG5vZGUgKilcbiAgbGV0IHJlYyBhdXggZGVwdGggb3V0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgKCgoaWQsIF8pLCBfKSBhcyB4KSA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgKG91dCwgbmV4dClcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAoc3RvcCwgb3V0JywgbmV4dCcpIC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIG91dCdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCBkZXB0aCBvdXQnIG5leHQnIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT4gb3V0XG4gICAgICAoKiBlbmQgd2hlbiBhbGwgZ3JhcGggdHJhdmVyc2VkIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgcGF0aHMgKilcbiAgICAgIHwgXyAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBTb21lIGQgd2hlbiBkIDw9IGRlcHRoIC0+IG91dFxuICAgICAgICAoKiBzdG9wIHdoZW4gdGhlIG1heCBkaXN0YW5jZSBpcyByZWFjaGVkICopXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoZGVwdGggKyAxKSBvdXQgW10gbmV4dFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGRlcHRoIG91dCBbXSBuZXh0KSlcbiAgaW5cbiAgYXV4IDEgb3V0IFtdIHRvZG9zXG5cbigqIG5vZGVzX3g6IGFnZW50X2lkIGxpc3QgPSAoaW50ICogaW50KSBsaXN0XG4gICBub2Rlc195OiBhZGVudF9pZCBsaXN0ID0gaW50IGxpc3QgKilcbmxldCBhcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXNfeCBub2Rlc195ID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgaWZcbiAgICAgIGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3gpKVxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3kpKVxuICAgICAgICBncmFwaFxuICAgIHRoZW4gKFxuICAgICAgKCogbG9vayBmb3IgdGhlIGNsb3Nlc3Qgbm9kZSBpbiBub2Rlc195ICopXG4gICAgICBsZXQgaXNfaW5fbm9kZXNfeSB6ID1cbiAgICAgICAgaWYgTGlzdC5tZW0geiBub2Rlc195IHRoZW5cbiAgICAgICAgICBTb21lICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgKCogYnJlYWR0aCBmaXJzdCBzZWFyY2ggaXMgY2FsbGVkIG9uIGEgbGlzdCBvZiBzaXRlcztcbiAgICAgICAgIHN0YXJ0IHRoZSBicmVhZHRoIGZpcnN0IHNlYXJjaCB3aXRoIHRoZSBib3VuZGFyaWVzIG9mIG5vZGVzX3gsXG4gICAgICAgICB0aGF0IGlzIGFsbCBzaXRlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gb3RoZXIgbm9kZXMgaW4geFxuICAgICAgICAgYW5kIHdpdGggYWxsIG5vZGVzIGluIG5vZGVzX3ggbWFya2VkIGFzIGRvbmUgKilcbiAgICAgIGxldCBwcmVwYXJlID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAoKGlkLCBfKSBhcyBhZykgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCB0YWJsZXMuY2FjaGVzKSBpZCBpblxuICAgICAgICAgICAgKGFnLCBbXSkgOjogYWNjKVxuICAgICAgICAgIFtdIG5vZGVzX3hcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBicmVhZHRoX2ZpcnN0X3RyYXZlcnNhbFxuICAgICAgICAgIH5sb29waW5nOigoLTEsIC0xKSwgLTEpXG4gICAgICAgICAgP21heF9kaXN0YW5jZSB0cnVlIGlzX2luX25vZGVzX3kgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBbXVxuICAgICAgICAgIHByZXBhcmVcbiAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFsgKF8sIHApIF0gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBTb21lIHBcbiAgICAgIHwgXyA6OiBfIC0+IGZhaWx3aXRoIFwiRWRnZXMuYXJlX3RoZXlfY29ubmVjdGVkIGNvbXBsZXRlbHkgYnJva2VuXCJcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWJzdHJhY3QgPSBFeGlzdGluZyBvZiBpbnQgfCBGcmVzaCBvZiBBZ2VudC50XG50eXBlICdhIHBvcnQgPSAnYSAqIGludFxudHlwZSAnYSBhcnJvdyA9IFRvTm9kZSBvZiAnYSBwb3J0IHwgVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBvZiBpbnRcbnR5cGUgJ2Egc3RlcCA9ICdhIHBvcnQgKiAnYSBhcnJvd1xudHlwZSAnYSB0ID0gJ2Egc3RlcCBsaXN0XG5cbmxldCBwcmludF9pZCBzaWdzIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS0laVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgdHkgaWRcblxubGV0IHByaW50X2lkX3NpdGUgP3NvdXJjZSBzaWdzIGZpbmRfdHkgbiA9XG4gIGxldCB0eSA9XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCBGcmVzaCAoXywgdHkpIC0+IHR5XG4gICAgfCBFeGlzdGluZyBpZCAtPlxuICAgICAgKG1hdGNoIHNvdXJjZSB3aXRoXG4gICAgICB8IFNvbWUgKEZyZXNoIChpZCcsIHR5KSkgd2hlbiBpZCA9IGlkJyAtPiB0eVxuICAgICAgfCBOb25lIHwgU29tZSAoRnJlc2ggXyB8IEV4aXN0aW5nIF8pIC0+IGZpbmRfdHkgaWQpXG4gIGluXG4gIFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHlcblxubGV0IHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBuID1cbiAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lnc1xuICAgIChtYXRjaCBuIHdpdGhcbiAgICB8IEV4aXN0aW5nIGlkIC0+IGZpbmRfdHkgaWRcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHkpXG5cbmxldCBpZF91cF90b19hbHBoYV90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGkgLT4gYEludCBpXG4gIHwgRnJlc2ggZiAtPiBBZ2VudC50b19qc29uIGZcblxubGV0IGlkX3VwX3RvX2FscGhhX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IEV4aXN0aW5nIGlcbiAgfCB4IC0+IEZyZXNoIChBZ2VudC5vZl9qc29uIHgpXG5cbmxldCBwb3J0X3RvX3lvanNvbiAoYSwgcykgPSBgTGlzdCBbIGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiBhOyBgSW50IHMgXVxuXG5sZXQgcG9ydF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYTsgYEludCBzIF0gLT4gaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uIGEsIHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHBvcnRcIiwgeCkpXG5cbmxldCBhcnJvd190b195b2pzb24gPSBmdW5jdGlvblxuICB8IFRvTm9kZSBwIC0+IHBvcnRfdG9feW9qc29uIHBcbiAgfCBUb05vdGhpbmcgLT4gYE51bGxcbiAgfCBUb0ludGVybmFsIGkgLT4gYEludCBpXG5cbmxldCBhcnJvd19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFRvTm90aGluZ1xuICB8IGBJbnQgaSAtPiBUb0ludGVybmFsIGlcbiAgfCB4IC0+IFRvTm9kZSAocG9ydF9vZl95b2pzb24geClcblxubGV0IHN0ZXBfdG9feW9qc29uIChwLCBhKSA9IGBMaXN0IFsgcG9ydF90b195b2pzb24gcDsgYXJyb3dfdG9feW9qc29uIGEgXVxuXG5sZXQgc3RlcF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgcDsgYSBdIC0+IHBvcnRfb2ZfeW9qc29uIHAsIGFycm93X29mX3lvanNvbiBhXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvbiBzdGVwXCIsIHgpKVxuXG5sZXQgdG9feW9qc29uIGwgPSBgTGlzdCAoTGlzdC5tYXAgc3RlcF90b195b2pzb24gbClcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBzdGVwX29mX3lvanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvblwiLCB4KSlcblxubGV0IGV4dGVuZCBmID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBfIC0+IGZcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBpZiB4ID0gaWQgdGhlblxuICAgICAgICB0eVxuICAgICAgZWxzZVxuICAgICAgICBmIHhcblxubGV0IHJlYyBwcmludCBzaWdzIGZpbmRfdHkgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm90aGluZykgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWFbLl0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm9kZSAoaWQsIHBvcnQpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVslYS4lYV0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnRfaWRfc2l0ZSB+c291cmNlIHNpZ3MgZmluZF90eSBpZClcbiAgICAgIHBvcnQgKHByaW50X2lkIHNpZ3MpIGlkXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIChleHRlbmQgZmluZF90eSBpZCkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvSW50ZXJuYWwgaSkgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWEpLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGZpbmRfdHkgc291cmNlIHNpdGUpXG4gICAgICAoU29tZSBpKVxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCBmaW5kX3R5IHNvdXJjZSkpXG4gICAgICB0XG5cbmxldCBjb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIGUgKHNpZCwgc3R5KSBzc2l0ZSBhcnJvdyA9XG4gIG1hdGNoIGUsIGFycm93IHdpdGhcbiAgfCBfLCBUb05vZGUgKEV4aXN0aW5nIF8sIF8pIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgIFwiTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IGRvZXMgbm90IGRlYWwgd2l0aCBleGlzdGluZyBcXFxuICAgICAgICAgICAgIGFycm93XCIpKVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCB4KSwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHggPSBUb05vdGhpbmcgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb0ludGVybmFsIGkgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvSW50ZXJuYWwgaSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHR5JyA9IHN0eScgJiYgc2l0ZScgPSBzc2l0ZScgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2UgaWYgdHkgPSBzdHknICYmIHNpdGUgPSBzc2l0ZScgJiYgdHknID0gc3R5ICYmIHNpdGUnID0gc3NpdGUgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHRoZW5cbiAgICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICggKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKVxuICAgICAgfCAoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpICksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogc2VsZi1saW5rIGluIGFnZW50ICopXG4gICAgaWZcbiAgICAgICgoc3NpdGUgPSBzaXRlICYmIHNzaXRlJyA9IHNpdGUnKSB8fCAoc3NpdGUnID0gc2l0ZSAmJiBzc2l0ZSA9IHNpdGUnKSlcbiAgICAgICYmIGlkID0gaWQnICYmIHNpZCA9IHNpZCcgJiYgdHkgPSBzdHkgJiYgc3R5ID0gc3R5J1xuICAgIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIF8pLCBfIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCAoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSksIFRvTm9kZSBfIC0+IE5vbmVcblxubGV0IGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGUgZScgPVxuICBtYXRjaCBlLCBlJyB3aXRoXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb05vdGhpbmcpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvSW50ZXJuYWwgaSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb0ludGVybmFsIGkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmogJiYgUmVuYW1pbmcubWVtIGlkJyBpbmpcbiAgICAgICYmIChlXG4gICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksXG4gICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCcpLCBzaXRlJykgKVxuICAgICAgICAgfHwgZVxuICAgICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSxcbiAgICAgICAgICAgICAgICBUb05vZGUgKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSApKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKSAtPlxuICAgIGlmXG4gICAgICB0eScgPSB0eVxuICAgICAgJiYgKG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopKVxuICAgICAgJiYgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpXG4gICAgICAgICB8fCAoaWQgPSBpZCcgJiYgc3NpdGUgPSBzaXRlJyAmJiBzc2l0ZScgPSBzaXRlKSlcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogd2l0aFxuICAgICAgfCBTb21lIGluaidcbiAgICAgICAgd2hlbiBSZW5hbWluZy5tZW0gaWQgaW5qJyAmJiBzaWQgPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkIC0+XG4gICAgICAgIFNvbWUgaW5qJ1xuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIF8sIF8pLCBUb05vZGUgKEZyZXNoIF8sIF8pKSwgKCgoRnJlc2ggXyB8IEV4aXN0aW5nIF8pLCBfKSwgXykgLT5cbiAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm90aGluZyksICgoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpLCB4KSAtPlxuICAgIGlmIHR5ID0gdHknICYmIHNpdGUgPSBzaXRlJyAmJiB4ID0gVG9Ob3RoaW5nICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkIGluailcbiAgICB0aGVuXG4gICAgICBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb0ludGVybmFsIGkgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCwgc3R5KSwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSkgKSAtPlxuICAgIGlmIChub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopKSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCcgaW5qKSB0aGVuXG4gICAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIF8pLCAoKEZyZXNoIF8sIF8pLCBfKSAtPiBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRXhpc3RpbmcgXywgXyksIF8pIC0+IE5vbmVcblxubGV0IHJlYyBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBjb21wYXRpYmxlX3BvaW50IH5kZWJ1Z19tb2RlIGluaiBoIGdvYWwgd2l0aFxuICAgIHwgTm9uZSAtPiBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIChoIDo6IGFjYykgdFxuICAgIHwgU29tZSBpbmonIC0+IFNvbWUgKGluaicsIExpc3QucmV2X2FwcGVuZCBhY2MgdCkpXG5cbmxldCByZWMgaXNfc3VibmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpbmogbmF2ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIChpbmosIG5hdilcbiAgfCBoIDo6IHQgLT5cbiAgICAobWF0Y2ggYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogaCBbXSBuYXYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChpbmonLCBuYXYnKSAtPiBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaicgbmF2JyB0KVxuXG5sZXQgcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgbiAtPiBpbmoyY2MsIEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyY2MgbilcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoyY2MgaW5cbiAgICBsZXQgaWQnID1cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcgdGhlbiAoXG4gICAgICAgIG1hdGNoIE1vZHMuSW50U2V0Lm1heF9lbHQgaW1nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIGkgLT4gc3VjYyBpXG4gICAgICApIGVsc2VcbiAgICAgICAgaWRcbiAgICBpblxuICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGluajJjYyB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBpbmonIC0+IGluaicsIEZyZXNoIChpZCcsIHR5KSlcblxubGV0IHJlYyByZW5hbWUgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbmoyY2MsIFtdXG4gIHwgKCh4LCBpKSwgKChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIGEpKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qIHQgaW5cbiAgICBpbmonLCAoKHgnLCBpKSwgYSkgOjogdCdcbiAgfCAoKHgsIGkpLCBUb05vZGUgKHksIGopKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgeScgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qIHkgaW5cbiAgICBsZXQgaW5qJycsIHQnID0gcmVuYW1lIH5kZWJ1Z19tb2RlIGluaicgdCBpblxuICAgIGluaicnLCAoKHgnLCBpKSwgVG9Ob2RlICh5JywgaikpIDo6IHQnXG5cbmxldCBjaGVja19lZGdlIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgXyksIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG5cbigqaW5qIGlzIHRoZSBwYXJ0aWFsIGluamVjdGlvbiBidWlsdCBzbyBmYXI6IGluajphYnMtPmNvbmNyZXRlKilcbmxldCBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgaWZcbiAgICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICAgIHNpdGUnIGdyYXBoXG4gICAgdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbm9kZSAtPiBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCByb290IGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaicgLT4gZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgZHN0KVxuICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQnKVxuICAgICAgc2l0ZScgZ3JhcGhcbiAgfCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpIC0+XG4gICAgKG1hdGNoIEVkZ2VzLmV4aXN0c19mcmVzaCByb290IHNpdGUgdHkgc2l0ZScgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBub2RlIGluaicpXG5cbmxldCBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBkc3QgLT5cbiAgICBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgcm9vdCBpbmpcbiAgICAgICYmIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHJvb3Qgc2l0ZSBkc3RcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpZCwgc2l0ZSAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQsIHNpdGVcbiAgfCBGcmVzaCAoaWQsIF8pLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuXG5sZXQgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIHggLT4geFxuICB8IFRvTm9kZSB4IC0+IFRvTm9kZSAoY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiB4KVxuXG5sZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSByb290IGdyYXBoIG5hdiA9XG4gIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgb3V0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBvdXQgKChwLCBkc3QpIGFzIHN0ZXApIC0+XG4gICAgICAgIG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgfCBTb21lIChyb290LCBhY2MpIC0+XG4gICAgICAgICAgaWYgaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCBzdGVwIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICAgICAgKCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHAsXG4gICAgICAgICAgICAgICAgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogZHN0IClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lIChOb25lLCBzdCA6OiBhY2MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgKFNvbWUgKFNvbWUgcm9vdCwgW10pKVxuICAgICAgbmF2XG4gIGluXG4gIE9wdGlvbl91dGlsLm1hcCAoZnVuIChfLCBsKSAtPiBMaXN0LnJldiBsKSBvdXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaW50ZXJuYWwgPSBpbnQgb3B0aW9uXG50eXBlIGxpbmsgPSBGUkVFIHwgVkFMIG9mIGludFxudHlwZSBhZ2VudCA9IHsgYV90eXBlOiBpbnQ7IGFfcG9ydHM6IGxpbmsgYXJyYXk7IGFfaW50czogaW50ZXJuYWwgYXJyYXkgfVxudHlwZSB0ID0gYWdlbnQgbGlzdFxuXG5sZXQgY29weV9hZ2VudCBhZ2VudCA9XG4gIHtcbiAgICBhX3R5cGUgPSBhZ2VudC5hX3R5cGU7XG4gICAgYV9wb3J0cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9wb3J0cztcbiAgICBhX2ludHMgPSBBcnJheS5jb3B5IGFnZW50LmFfaW50cztcbiAgfVxuXG50eXBlIGluY3JfdCA9IHtcbiAgZmF0aGVyOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICByYW5rOiAoaW50ICogKGJvb2wgKiBib29sKSkgTW9kcy5EeW5BcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICB7XG4gICAgZmF0aGVyID0gTW9kcy5EeW5BcnJheS5pbml0IG4gKGZ1biBpIC0+IGkpO1xuICAgIHJhbmsgPSBNb2RzLkR5bkFycmF5Lm1ha2UgbiAoMSwgKHRydWUsIGZhbHNlKSk7XG4gIH1cblxubGV0IHJlYyBmaW5kX2F1eCBhIGkgPVxuICBsZXQgYWkgPVxuICAgIGlmIE1vZHMuRHluQXJyYXkubGVuZ3RoIGEgPD0gaSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgTW9kcy5EeW5BcnJheS5nZXQgYSBpXG4gIGluXG4gIGlmIGFpID09IGkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IHJvb3QgPSBmaW5kX2F1eCBhIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgYSBpIHJvb3QgaW5cbiAgICByb290XG4gIClcblxubGV0IGZpbmQgaCB4ID0gZmluZF9hdXggaC5mYXRoZXIgeFxubGV0IGNvbWJpbmVfcmFua3MgKGl4LCAoYngsIF8pKSAoaXksIChieSwgXykpID0gaXggKyBpeSwgKGJ4ICYmIGJ5LCB0cnVlKVxuXG5sZXQgdW5pb24gaCB4IHkgPVxuICBsZXQgcm9vdF94ID0gZmluZCBoIHggaW5cbiAgbGV0IHJvb3RfeSA9IGZpbmQgaCB5IGluXG4gIGlmIHJvb3RfeCA9PSByb290X3kgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCByYW5rX3ggPSBNb2RzLkR5bkFycmF5LmdldCBoLnJhbmsgcm9vdF94IGluXG4gICAgbGV0IHJhbmtfeSA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3kgaW5cbiAgICBpZiBmc3QgcmFua194ID4gZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApIGVsc2UgaWYgZnN0IHJhbmtfeCA8IGZzdCByYW5rX3kgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF95IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3ggcm9vdF95XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApXG4gIClcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IGNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5hX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCBhID0gYWcuYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgYiA9IGFnLmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgRlJFRSAtPiAoKVxuICAgICAgICAgICAgfCBWQUwgbG5rX2IgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IEZSRUUgLT5cbiAgICAgICAgICAgICAgICAoKiBpbiB0aGlzIGNhc2UgdGhlIGVuZHBvaW50IG9mIHRoZSBjaGFpbiBvZiBpbmNyZW1lbnRzIGlzIHJhdzpcbiAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgaXMgY3JlYXRlZCB3aXRoIGEgY291bnRlciB2YWx1ZSopXG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBmaW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5yYW5rIHJvb3QgKHMgLSAxLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgVkFMIGxua19hIC0+IHVuaW9uIHQgbG5rX2IgbG5rX2EpKSlcbiAgICAgICAgbWl4XG4gIGluXG4gIHRcblxubGV0IHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHMgZiA9IGZ1bmN0aW9uXG4gIHwgRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IFZBTCBpIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCByb290ID0gZmluZCBjb3VudGVyX2FnZW50cyBpIGluXG4gICAgICAgbGV0IGNvdW50ZXIsIChfLCBpc19jb3VudGVyKSA9XG4gICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVyX2FnZW50cy5yYW5rIHJvb3RcbiAgICAgICBpblxuICAgICAgIGlmIGlzX2NvdW50ZXIgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIns9JWR9XCIgY291bnRlclxuICAgICAgIGVsc2VcbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaVxuICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkpXG5cbmxldCBhdXhfcHBfc2kgc2lncyBhIHMgZiBpID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYSBzIGYgaVxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggaSB3aXRoXG4gICAgfCBTb21lIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpeyVpfVwiIHMgaVxuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgcylcblxubGV0IHByaW50X2ludGYgfm5vQ291bnRlcnMgd2l0aF9saW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKVxuICAgID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFcIlxuICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgIChhdXhfcHBfc2kgc2lncyBhZ190eSBpKSBpbnRzLihpKVxuICAgICAgICAgIChpZiB3aXRoX2xpbmsgdGhlblxuICAgICAgICAgICAgIHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGZ1biBfIF8gLT5cbiAgICAgICAgICAgKCkpXG4gICAgICAgICAgcG9ydHMuKGkpXG4gICAgICBpblxuICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBhdXhfcHBfYWcgc2lncyBmIGEgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MgZiBhXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgYVxuXG5sZXQgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKGF1eF9wcF9hZyBzaWdzKSBhZy5hX3R5cGVcbiAgICAocHJpbnRfaW50ZiB+bm9Db3VudGVycyBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnLmFfdHlwZSlcbiAgICAoYWcuYV9wb3J0cywgYWcuYV9pbnRzKSAoZnVuIGYgLT5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIrXCIpXG5cbmxldCBwcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZCB+aW5pdGlhbF9jb21tYSA/c2lncyBmIG1peCA9XG4gIGxldCBjb3VudGVyX2FnZW50cyA9IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggaW5cbiAgbGV0IHJlYyBhdXhfcHJpbnQgc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLmFfdHlwZSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIHRydWUgP3NpZ3MgY291bnRlcl9hZ2VudHMgZiBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9wcmludCB0cnVlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4X3ByaW50IGluaXRpYWxfY29tbWEgbWl4XG5cbmxldCBhZ2VudF90b19qc29uIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLmFfdHlwZTtcbiAgICAgICggXCJzaXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBGUkVFIC0+IGBOdWxsXG4gICAgICAgICAgICAgICB8IFZBTCBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfcG9ydHMgW10pICk7XG4gICAgICAoIFwiaW50ZXJuYWxzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfaW50cyBbXSkgKTtcbiAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXVxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKSBdXG4gIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJ0eXBlXCIsIGBJbnQgdCkgXVxuICB8IGBBc3NvYyBbIChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpIF0gLT5cbiAgICB7XG4gICAgICBhX3R5cGUgPSB0O1xuICAgICAgYV9wb3J0cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IEZSRUVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFZBTCBwXG4gICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzaXRlIGxpbmtcIiwgeCkpKVxuICAgICAgICAgIHM7XG4gICAgICBhX2ludHMgPVxuICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICB8IGBJbnQgcCAtPiBTb21lIHBcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGludGVybmFsIHN0YXRlXCIsIHgpKSlcbiAgICAgICAgICBpO1xuICAgIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X2FnZW50XCIsIHgpKVxuXG5sZXQgdG9fanNvbiBtID0gYExpc3QgKExpc3QubWFwIGFnZW50X3RvX2pzb24gbSlcblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgYWdlbnRfb2ZfanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJhd19taXh0dXJlXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJ2YXNpdmVzX2Jvb2wgPSBib29sXG5cbnR5cGUgKCdtaXgsICdpZCkgZSA9XG4gIHwgQklOX0FMR19PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBVTl9BTEdfT1Agb2YgT3BlcmF0b3IudW5fYWxnX29wICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFNUQVRFX0FMR19PUCBvZiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BcbiAgfCBBTEdfVkFSIG9mICdpZFxuICB8IEtBUFBBX0lOU1RBTkNFIG9mICdtaXhcbiAgfCBUT0tFTl9JRCBvZiAnaWRcbiAgfCBDT05TVCBvZiBOYnIudFxuICB8IElGIG9mXG4gICAgICAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IERJRkZfVE9LRU4gb2YgKCgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWQgKiAnaWQpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdtaXgpXG5cbmFuZCAoJ21peCwgJ2lkKSBib29sID1cbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBCSU5fQk9PTF9PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgVU5fQk9PTF9PUCBvZiBPcGVyYXRvci51bl9ib29sX29wICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICB8IENPTVBBUkVfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG5cbmxldCByZWMgZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5iaW5fYWxnX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG4gIHwgVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci51bl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgIF1cbiAgfCBTVEFURV9BTEdfT1Agb3AgLT4gT3BlcmF0b3Iuc3RhdGVfYWxnX29wX3RvX2pzb24gb3BcbiAgfCBBTEdfVkFSIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVkFSXCI7IGZfaWQgaSBdXG4gIHwgS0FQUEFfSU5TVEFOQ0UgY2MgLT4gYExpc3QgWyBgU3RyaW5nIFwiTUlYXCI7IGZfbWl4IGNjIF1cbiAgfCBUT0tFTl9JRCBpIC0+IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGZfaWQgaSBdXG4gIHwgQ09OU1QgbiAtPiBOYnIudG9feW9qc29uIG5cbiAgfCBJRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiSUZcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm87XG4gICAgICBdXG4gIHwgRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfaWQgdG9rZW47XG4gICAgICBdXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9NSVhUVVJFXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBleHByO1xuICAgICAgICBmX21peCBtaXh0dXJlO1xuICAgICAgXVxuXG5hbmQgYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBUUlVFIC0+IGBCb29sIHRydWVcbiAgfCBGQUxTRSAtPiBgQm9vbCBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICBdXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYjtcbiAgICAgIF1cbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5jb21wYXJlX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG5cbmxldCByZWMgZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjsgZXhwcjsgbWl4dHVyZSBdIC0+XG4gICAgRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX21peCBtaXh0dXJlIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX1RPS0VOXCI7IGV4cHI7IHRvayBdIC0+XG4gICAgRElGRl9UT0tFTlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX2lkIHRvayApXG4gIHwgYExpc3QgWyBvcDsgYTsgYiBdIC0+XG4gICAgQklOX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci5iaW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGEsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGJcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgaSBdIC0+IEFMR19WQVIgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJUT0tFTlwiOyBpIF0gLT4gVE9LRU5fSUQgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgY2MgXSAtPiBLQVBQQV9JTlNUQU5DRSAoZl9taXggY2MpXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2FsZ19vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhXG4gICAgICApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiSUZcIjsgY29uZDsgeWVzOyBubyBdIC0+XG4gICAgSUZcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm9cbiAgICAgIClcbiAgfCB4IC0+XG4gICAgKHRyeSBTVEFURV9BTEdfT1AgKE9wZXJhdG9yLnN0YXRlX2FsZ19vcF9vZl9qc29uIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeSBDT05TVCAoTmJyLm9mX3lvanNvbiB4KVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgQWxnX2V4cHJcIiwgeCkpKSlcblxuYW5kIGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPlxuICAgIGlmIGIgdGhlblxuICAgICAgVFJVRVxuICAgIGVsc2VcbiAgICAgIEZBTFNFXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQk9PTF9PUFxuICAgICAgKCBPcGVyYXRvci51bl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBCSU5fQk9PTF9PUFxuICAgICAgICAgKCBPcGVyYXRvci5iaW5fYm9vbF9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYSxcbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgIGIgKVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDT01QQVJFX09QXG4gICAgICAgICAgICAoIE9wZXJhdG9yLmNvbXBhcmVfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICAgICBiIClcbiAgICAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbCBleHByXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbF9leHByXCIsIHgpKVxuXG5sZXQgcmVjIHByaW50IHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IENPTlNUIG4gLT4gTmJyLnByaW50IGYgblxuICB8IEFMR19WQVIgbGFiIC0+IHByX3ZhciBmIGxhYlxuICB8IEtBUFBBX0lOU1RBTkNFIGFzdCAtPiBwcl9taXggZiBhc3RcbiAgfCBUT0tFTl9JRCB0ayAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByX3RvayB0a1xuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5wcmludF9zdGF0ZV9hbGdfb3AgZiBvcFxuICB8IEJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBPcGVyYXRvci5wcmludF9iaW5fYWxnX29wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiIGYgb3BcbiAgfCBVTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2FsZ19vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IElGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSBbP10gJWEgWzpdICVhXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgY29uZFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgeWVzXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBub1xuICB8IERJRkZfVE9LRU4gKChleHByLCBfKSwgdG9rKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZXhwciBwcl90b2sgdG9rXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGV4cHIsIF8pLCBtaXh0dXJlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBleHByIHByX21peCBtaXh0dXJlXG5cbmFuZCBwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlt0cnVlXVwiXG4gIHwgRkFMU0UgLT4gRm9ybWF0LmZwcmludGYgZiBcIltmYWxzZV1cIlxuICB8IFVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICglYSlcIiBPcGVyYXRvci5wcmludF91bl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgfCBCSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9iaW5fYm9vbF9vcCBvcFxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGEgT3BlcmF0b3IucHJpbnRfY29tcGFyZV9vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYlxuXG5sZXQgY29uc3QgbiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChDT05TVCBuKVxubGV0IGludCBpID0gY29uc3QgKE5ici5JIGkpXG5sZXQgZmxvYXQgZiA9IGNvbnN0IChOYnIuRiBmKVxubGV0IGFkZCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMikpXG5sZXQgbWludXMgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuTUlOVVMsIGUxLCBlMikpXG5sZXQgbXVsdCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlMSwgZTIpKVxubGV0IGRpdiBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUxLCBlMikpXG5sZXQgcG93IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlBPVywgZTEsIGUyKSlcbmxldCBsb2cgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5MT0csIGUxKSlcblxubGV0IGxuIGUxID1cbiAgKCogSkY6IElmIEkgcmVtZW1uYmVyIHdlbGwgKilcbiAgZGl2IChsb2cgZTEpIChsb2cgKGludCAxMCkpXG5cbmxldCBzaW4gZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TSU5VUywgZTEpKVxubGV0IGNvcyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkNPU0lOVVMsIGUxKSlcbmxldCB1bWludXMgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGUxKSlcbmxldCBzcXJ0IGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuU1FSVCwgZTEpKVxuXG5sZXQgcmVjIGFkZF9kZXAgKChpbl90LCBpbl9lLCB0b2tzX2QsIG91dCkgYXMgeCkgZCA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcCAoYWRkX2RlcCB4IGQgYSkgZCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgX1xuICAoKiB3aGVuIHdlIGRpZmZlcmVudGlhdGUgYWdhaW5zdCBhIHZhcmlhYmxlLCB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhpcyB2YXJpYWJsZSBvbmx5IGlmIHRoZSB2YXJpYWJsZSBvY2N1cnMgaW4gdGhlIGRpZmZlcm50aWF0ZWQgZXhwcmVzc2lvbiAqKVxuICAgIC0+XG4gICAgYWRkX2RlcCB4IGQgYVxuICB8IEFMR19WQVIgaiwgXyAtPlxuICAgIGxldCAoKSA9IG91dC4oaikgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIG91dC4oaikgaW5cbiAgICB4XG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8gfCBDT05TVCBfKSwgXyAtPiB4XG4gIHwgVE9LRU5fSUQgaSwgXyAtPlxuICAgIGxldCAoKSA9IHRva3NfZC4oaSkgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIHRva3NfZC4oaSkgaW5cbiAgICB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYWRkX2RlcCAoYWRkX2RlcCAoYWRkX2RlcF9ib29sIHggZCBjb25kKSBkIHllcykgZCBub1xuICB8IFNUQVRFX0FMR19PUCBvcCwgXyAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5FTUFYX1ZBUiB8IE9wZXJhdG9yLlRNQVhfVkFSIC0+IHhcbiAgICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl90LCBpbl9lLCB0b2tzX2QsIG91dFxuICAgIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+XG4gICAgICBpbl90LCBPcGVyYXRvci5EZXBTZXQuYWRkIGQgaW5fZSwgdG9rc19kLCBvdXQpXG5cbmFuZCBhZGRfZGVwX2Jvb2wgeCBkID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB4XG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYWRkX2RlcF9ib29sIHggZCBhXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXBfYm9vbCAoYWRkX2RlcF9ib29sIHggZCBhKSBkIGJcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcblxubGV0IHJlYyBoYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgZSAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9BTEdfT1AgKF8sIChhLCBfKSlcbiAgfCBESUZGX1RPS0VOICgoYSwgXyksIF8pXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGEsIF8pLCBfKSAtPlxuICAgICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGFcbiAgfCBTVEFURV9BTEdfT1AgXyB8IENPTlNUIF8gLT4gZmFsc2VcbiAgfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyAtPiB0cnVlXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIHllcyB8fCBoYXNfbWl4ID92YXJfZGVjbHMgbm9cbiAgICB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBjb25kXG4gIHwgQUxHX1ZBUiBpIC0+XG4gICAgKG1hdGNoIHZhcl9kZWNscyB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGYgLT4gaGFzX21peCA/dmFyX2RlY2xzIChmIGkpKVxuXG5hbmQgYm9vbF9oYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgYm9vbCAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgQ09NUEFSRV9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgKGEsIF8pKSAtPiBib29sX2hhc19taXggP3Zhcl9kZWNscyBhXG5cbmxldCByZWMgaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYiAmJiBpc19jb25zdGFudCBjXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX2NvbnN0YW50IGFcbiAgfCAoQUxHX1ZBUiBfIHwgU1RBVEVfQUxHX09QIF8gfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyksIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhICYmIGJvb2xfaXNfY29uc3RhbnQgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYVxuXG5sZXQgcmVjIGlzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPlxuICAgIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYiAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX3RpbWVfaG9tb2dlbmVvdXMgYVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApLFxuICAgICAgXyApXG4gIHwgQUxHX1ZBUiBfLCBfXG4gIHwgVE9LRU5fSUQgXywgX1xuICB8IEtBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IGZhbHNlXG5cbmFuZCBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYVxuXG5sZXQgcmVjIGF1eF9leHRyYWN0X2NjIGFjYyA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIGFjYyBhXG4gIHwgKEFMR19WQVIgXyB8IENPTlNUIF8gfCBUT0tFTl9JRCBfIHwgU1RBVEVfQUxHX09QIF8pLCBfIC0+IGFjY1xuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gaSA6OiBhY2NcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgKGV4dHJhY3RfY2NfYm9vbCBhY2MgY29uZCkgeWVzKSBub1xuXG5hbmQgZXh0cmFjdF9jY19ib29sIGFjYyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gYWNjXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGV4dHJhY3RfY2NfYm9vbCAoZXh0cmFjdF9jY19ib29sIGFjYyBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZXh0cmFjdF9jY19ib29sIGFjYyBhXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIHggPSBhdXhfZXh0cmFjdF9jYyBbXSB4XG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIHggPSBleHRyYWN0X2NjX2Jvb2wgW10geFxuXG5sZXQgc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0b2tzIHZhcnMgPVxuICBsZXQgaW5fdCA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgaW5fZSA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgdG9rc19kID0gQXJyYXkubWFrZSAoTmFtZWREZWNscy5zaXplIHRva3MpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIHZhcnMpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIHggKF8sIHkpIC0+IGFkZF9kZXAgeCAoT3BlcmF0b3IuQUxHIGkpIHkpXG4gICAgKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSB2YXJzXG5cbmxldCByZWMgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoQklOX0FMR19PUCAob3AsIGEsIGIpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhLFxuICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGJcbiAgICAgICApXG4gICAgIHdpdGhcbiAgICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gQ09OU1QgKE5ici5vZl9iaW5fYWxnX29wIG9wIGMxIGMyKSwgcG9zXG4gICAgfCAoICgoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgfCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfXG4gICAgICAgICAgIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgICAgXyApIGFzIGEnKSxcbiAgICAgICAgKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYicpICkgLT5cbiAgICAgIGlmIGEgPT0gYScgJiYgYiA9PSBiJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCAoVU5fQUxHX09QIChvcCwgYSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIGMsIF8gLT4gQ09OU1QgKE5ici5vZl91bl9hbGdfb3Agb3AgYyksIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBVTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCAoRElGRl9UT0tFTiAoYSwgdCksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgSUYgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX1RPS0VOIChhJywgdCksIHBvcylcbiAgfCAoRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgbSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX0tBUFBBX0lOU1RBTkNFIChhJywgbSksIHBvcylcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRU1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF9ldmVudHMgd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPiBOYnIuSSBuXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgICAgICBcIltFbWF4XSBjb25zdGFudCBpcyBldmFsdWF0ZWQgdG8gaW5maW5pdHlcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIE5ici5GIGluZmluaXR5KSxcbiAgICAgIHBvcyApXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRNQVhfVkFSLCBwb3MgLT5cbiAgICAoIENPTlNUXG4gICAgICAgIChtYXRjaCBtYXhfdGltZSB3aXRoXG4gICAgICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW1RtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5USU1FX1ZBUiB8IE9wZXJhdG9yLkVWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSICksXG4gICAgICBfICkgYXMgeCAtPlxuICAgIHhcbiAgfCAoQUxHX1ZBUiBpLCBwb3MpIGFzIHggLT5cbiAgICBpZiBMaXN0Lm1lbSBpIHVwZGF0ZWRfdmFycyB0aGVuXG4gICAgICB4XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB2YXJzLihpKSB3aXRoXG4gICAgICB8IF8sICgoKENPTlNUIF8gfCBBTEdfVkFSIF8pIGFzIHkpLCBfKSAtPiB5LCBwb3NcbiAgICAgIHwgKCBfLFxuICAgICAgICAgICggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICAgfCBUT0tFTl9JRCBfIHwgSUYgXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgeFxuICAgIClcbiAgfCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyksIF8pIGFzIHggLT4geFxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgIH52YXJzIGNvbmRcbiAgICAgd2l0aFxuICAgIHwgVFJVRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIHllc1xuICAgIHwgRkFMU0UsIF8gLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBub1xuICAgIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgY29uZCcgLT5cbiAgICAgICggSUZcbiAgICAgICAgICAoIGNvbmQnLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIHllcyxcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgICB+dmFycyBubyApLFxuICAgICAgICBwb3MgKSlcblxuYW5kIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoKFRSVUUgfCBGQUxTRSksIF8pIGFzIHggLT4geFxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBGQUxTRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5OT1QgLT4gVFJVRSwgcG9zXG4gICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYScpLCBfIC0+XG4gICAgICBVTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk9SIC0+IFRSVUUsIHBvc1xuICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzXG4gICAgICAgIGJcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgIH52YXJzIGIsXG4gICAgICAgICAgIG9wIClcbiAgICAgICB3aXRoXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLkFORCAtPiBGQUxTRSwgcG9zXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT4gYSdcbiAgICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGInKSwgXyAtPlxuICAgICAgICBCSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcykpXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgYScgPVxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICBpblxuICAgIGxldCBiJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgIGluXG4gICAgKG1hdGNoIGEnLCBiJyB3aXRoXG4gICAgfCAoQ09OU1QgbjEsIF8pLCAoQ09OU1QgbjIsIF8pIC0+XG4gICAgICBpZiBOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuMiB0aGVuXG4gICAgICAgIFRSVUUsIHBvc1xuICAgICAgZWxzZVxuICAgICAgICBGQUxTRSwgcG9zXG4gICAgfCAoICggKCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBESUZGX1RPS0VOIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgICBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IHJlYyBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgKChpbl90LCBfLCBfLCBkZXBzKSBhcyB2YXJzX2RlcHMpID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXyAtPiBmYWxzZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiwgXyAtPiB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLkVWRU5UX1ZBUiwgXyAtPiBub3Qgb25seV90aW1lXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSICksXG4gICAgICBfICkgLT5cbiAgICBmYWxzZVxuICB8IEFMR19WQVIgaSwgXyAtPlxuICAgIGxldCByZWMgYXV4IGogPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0Lm1lbSAoT3BlcmF0b3IuQUxHIGopIGluX3RcbiAgICAgIHx8IE9wZXJhdG9yLkRlcFNldC5leGlzdHNcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5BTEcgayAtPiBhdXgga1xuICAgICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIHwgT3BlcmF0b3IuTU9ESUYgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgZGVwcy4oailcbiAgICBpblxuICAgIGF1eCBpXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGNvbmRcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIHllc1xuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgbm9cblxuYW5kIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuXG5sZXQgcmVjIGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgPSBmdW5jdGlvblxuICB8IFRSVUUgfCBGQUxTRSAtPiBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwgKGEsIF8pKSAtPiBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBhIHx8IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYlxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBvbmx5X3RpbWUgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVRVUFMXG4gICAgICB3aGVuIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgICAgICAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGIgLT5cbiAgICAgIHRydWVcbiAgICB8IE9wZXJhdG9yLkVRVUFMIHwgT3BlcmF0b3IuU01BTExFUiB8IE9wZXJhdG9yLkdSRUFURVIgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICBmYWxzZSlcblxubGV0IHJlYyBtYXBfb25fbWl4dHVyZSBmID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBwIC0+IGYgaSwgcFxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcIkFsZ19leHByLm1hcF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IChDT05TVCBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoQUxHX1ZBUiBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoVE9LRU5fSUQgXywgXykgYXMgeCAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgaSksIHAgLT4gRElGRl9UT0tFTiAobWFwX29uX21peHR1cmUgZiBhLCBpKSwgcFxuICB8IChTVEFURV9BTEdfT1AgXywgXykgYXMgeCAtPiB4XG4gIHwgQklOX0FMR19PUCAobywgeCwgeSksIHAgLT5cbiAgICBCSU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9BTEdfT1AgKG8sIHgpLCBwIC0+IFVOX0FMR19PUCAobywgbWFwX29uX21peHR1cmUgZiB4KSwgcFxuICB8IElGIChiLCB4LCB5KSwgcCAtPlxuICAgIElGIChtYXBfYm9vbF9vbl9taXh0dXJlIGYgYiwgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG5cbmFuZCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IChUUlVFLCBfKSBhcyB4IC0+IHhcbiAgfCAoRkFMU0UsIF8pIGFzIHggLT4geFxuICB8IEJJTl9CT09MX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCwgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHkpLCBwXG4gIHwgVU5fQk9PTF9PUCAobywgeCksIHAgLT4gVU5fQk9PTF9PUCAobywgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgQ09NUEFSRV9PUCAobywgeCwgeSksIHAgLT5cbiAgICBDT01QQVJFX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxubGV0IHJlYyBmb2xkX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBfIC0+IGYgeCBpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IENPTlNUIF8sIF8gLT4geFxuICB8IEFMR19WQVIgXywgXyAtPiB4XG4gIHwgVE9LRU5fSUQgXywgXyAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgXyksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgU1RBVEVfQUxHX09QIF8sIF8gLT4geFxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9BTEdfT1AgKF8sIGEpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIHggYVxuICB8IElGIChiLCB1LCB2KSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IHUpIHYpIGJcblxuYW5kIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCA9IGZ1bmN0aW9uXG4gIHwgVFJVRSwgXyAtPiB4XG4gIHwgRkFMU0UsIF8gLT4geFxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCBhKSBiXG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKEJJTl9BTEdfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChCSU5fQUxHX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKCAoQklOX0FMR19PUCBfLCBfKSxcbiAgICAgICggKCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChCSU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChVTl9BTEdfT1AgKG9wYSwgYTEpLCBfKSwgKFVOX0FMR19PUCAob3BiLCBiMSksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxXG4gIHwgKCAoVU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICksXG4gICAgICAoVU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChTVEFURV9BTEdfT1Agb3BhLCBfKSwgKFNUQVRFX0FMR19PUCBvcGIsIF8pIC0+IG9wYSA9IG9wYlxuICB8ICggKFNUQVRFX0FMR19PUCBfLCBfKSxcbiAgICAgICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pIClcbiAgfCAoICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLFxuICAgICAgKFNUQVRFX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoQUxHX1ZBUiBpZDEsIF8pLCAoQUxHX1ZBUiBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChBTEdfVkFSIF8sIF8pLCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoQUxHX1ZBUiBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEtBUFBBX0lOU1RBTkNFIG1peDEsIF8pLCAoS0FQUEFfSU5TVEFOQ0UgbWl4MiwgXykgLT4gbWl4MSA9IG1peDJcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXywgXyksICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoS0FQUEFfSU5TVEFOQ0UgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChUT0tFTl9JRCBpZDEsIF8pLCAoVE9LRU5fSUQgaWQyLCBfKSAtPiBpZDEgPSBpZDJcbiAgfCAoVE9LRU5fSUQgXywgXyksICgoQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoQ09OU1QgXyB8IElGIF8pLCBfKSwgKFRPS0VOX0lEIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoQ09OU1QgYzEsIF8pLCAoQ09OU1QgYzIsIF8pIC0+IE5ici5pc19lcXVhbCBjMSBjMlxuICB8IChDT05TVCBfLCBfKSwgKElGIF8sIF8pIHwgKElGIF8sIF8pLCAoQ09OU1QgXywgXykgLT4gZmFsc2VcbiAgfCAoSUYgKGNvbmRhLCBhMSwgYTIpLCBfKSwgKElGIChjb25kYiwgYjEsIGIyKSwgXykgLT5cbiAgICBlcXVhbF9ib29sIGNvbmRhIGNvbmRiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSwgX1xuICB8IF8sICgoRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfKSwgXykgLT5cbiAgICBhc3NlcnQgZmFsc2VcblxuYW5kIGVxdWFsX2Jvb2wgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKFRSVUUsIF8pLCAoVFJVRSwgXykgLT4gdHJ1ZVxuICB8IChUUlVFLCBfKSwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoRkFMU0UgfCBCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXyksIChUUlVFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEZBTFNFLCBfKSwgKEZBTFNFLCBfKSAtPiB0cnVlXG4gIHwgKEZBTFNFLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKEZBTFNFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0JPT0xfT1AgKG9wYSwgYSksIF8pLCAoVU5fQk9PTF9PUCAob3BiLCBiKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhIGJcbiAgfCAoVU5fQk9PTF9PUCBfLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKSwgKFVOX0JPT0xfT1AgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChCSU5fQk9PTF9PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9CT09MX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsX2Jvb2wgYTEgYjEgJiYgZXF1YWxfYm9vbCBhMiBiMlxuICB8IChCSU5fQk9PTF9PUCBfLCBfKSwgKENPTVBBUkVfT1AgXywgXykgfCAoQ09NUEFSRV9PUCBfLCBfKSwgKEJJTl9CT09MX09QIF8sIF8pXG4gICAgLT5cbiAgICBmYWxzZVxuICB8IChDT01QQVJFX09QIChvcGEsIGExLCBhMiksIF8pLCAoQ09NUEFSRV9PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuIiwiKCoqXG4gICogY29udGFjdF9tYXAubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamVjdCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogQ3JlYXRpb246IDIwMTcsIHRoZSAyM3JkIG9mIEp1bmVcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNSAyMDE3PlxuICAqXG4gICogQ29tcHV0ZSBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50IGluIGNvbnRhY3QgbWFwXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGVcbiAgKiBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHQgPSAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheVxuXG5sZXQgdG9feW9qc29uIGEgPVxuICBsZXQgaW50bHNfdG9fanNvbiBhID1cbiAgICBgTGlzdCAoTW9kcy5JbnRTZXQuZm9sZCAoZnVuIGIgYWNjIC0+IGBJbnQgYiA6OiBhY2MpIGEgW10pXG4gIGluXG4gIGxldCBwYWlybHNfdG9fanNvbiBhID1cbiAgICBgTGlzdFxuICAgICAgKE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAoZnVuIChiLCBjKSBhY2MgLT4gYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIDo6IGFjYylcbiAgICAgICAgIGEgW10pXG4gIGluXG4gIGxldCBhcnJheV90b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIGFjYyAoYSwgYikgLT4gYExpc3QgWyBpbnRsc190b19qc29uIGE7IHBhaXJsc190b19qc29uIGIgXSA6OiBhY2MpXG4gICAgICAgICBbXSBhKVxuICBpblxuICBgTGlzdCAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHQgLT4gYXJyYXlfdG9fanNvbiB0IDo6IGFjYykgW10gYSlcblxubGV0IG9mX3lvanNvbiAoYSA6IFlvanNvbi5CYXNpYy50KSA9XG4gIGxldCBpbnRsc19vZl9qc29uIGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBJbnQgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhY2NcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTFcIiwgeCkpKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgcGFpcmxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIC0+IE1vZHMuSW50MlNldC5hZGQgKGIsIGMpIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMlwiLCB4KSkpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgYXJyYXlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgTGlzdCBscyAtPlxuICAgICAgKG1hdGNoIGxzIHdpdGhcbiAgICAgIHwgWyBgTGlzdCBhOyBgTGlzdCBiIF0gLT4gaW50bHNfb2ZfanNvbiBhLCBwYWlybHNfb2ZfanNvbiBiXG4gICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEzXCIsIHgpKVxuICBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBgTGlzdCBhcnJheTEgLT5cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgYXJyYXkyIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IGFycmF5X29mX2pzb24gYXJyYXkyXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGE0XCIsIHgpKSlcbiAgICAgIGFycmF5MVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBjb250YWN0IG1hcFwiLCB4KSlcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgZiBpbnRmIC0+XG4gICAgICAgICBpZiBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnID0gTm9uZSB8fCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+JSVhZ2VudDpAICVhKEBbJWFAXSlAXVwiXG4gICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgIGFnXG4gICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gcyBmIChpcywgbHMpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBTaWduYXR1cmUuc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWcgcyAmJiBub3Qgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfY291bnRlciBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEldCV0QF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnRTZXQuaXNfZW1wdHkgaXMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIntAWyVhQF19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnIHMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChNb2RzLkludDJTZXQuaXNfZW1wdHkgbHMpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAsW0BbJWFAXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnQyU2V0LmVsZW1lbnRzIFBwLnNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIChhZCwgc2QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHMpKSlcbiAgICAgICAgICAgICBpbnRmKSlcbiAgICBjXG5cbmxldCBjdXRfYXQgaSBzJyBsID1cbiAgbGV0IHJlYyBhdXhfY3V0X2F0IG8gPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKCgoaiwgcyksIF8pIGFzIGgpIDo6IHQgLT5cbiAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgaWYgcyA+PSBzJyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZSAoaCA6OiBvKVxuICAgICAgZWxzZVxuICAgICAgICBhdXhfY3V0X2F0IChoIDo6IG8pIHRcbiAgaW5cbiAgYXV4X2N1dF9hdCBbXSBsXG5cbmxldCBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwID1cbiAgbGV0IHJlYyBkZnMgKChrbm93biwgb3V0KSBhcyBhY2MpIHBhdGggaSBsYXN0X3MgPVxuICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW4gKFxuICAgICAgbWF0Y2ggY3V0X2F0IGkgbGFzdF9zIHBhdGggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIHggLT4ga25vd24sIHggOjogb3V0XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBrbm93bicgPSBNb2RzLkludFNldC5hZGQgaSBrbm93biBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHMgYWNjIChfLCBsKSAtPlxuICAgICAgICAgIGlmIHMgPSBsYXN0X3MgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biAoKHR5LCBzJykgYXMgeCkgYWNjIC0+IGRmcyBhY2MgKCgoaSwgcyksIHgpIDo6IHBhdGgpIHR5IHMnKVxuICAgICAgICAgICAgICBsIGFjYylcbiAgICAgICAgKGtub3duJywgb3V0KSBjb250YWN0X21hcC4oaSlcbiAgICApXG4gIGluXG4gIGxldCByZWMgc2NhbiAoKGtub3duLCBvdXQpIGFzIGFjYykgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgb3V0XG4gICAgZWxzZVxuICAgICAgc2NhblxuICAgICAgICAoaWYgTW9kcy5JbnRTZXQubWVtIGkga25vd24gdGhlblxuICAgICAgICAgICBhY2NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZGZzIGFjYyBbXSBpICgtMSkpXG4gICAgICAgIChwcmVkIGkpXG4gIGluXG4gIHNjYW4gKE1vZHMuSW50U2V0LmVtcHR5LCBbXSkgKEFycmF5Lmxlbmd0aCBjb250YWN0X21hcCAtIDEpXG5cbmxldCBwcmludF9jeWNsZXMgc2lncyBmb3JtIGNvbnRhY3RfbWFwID1cbiAgbGV0IG8gPSBnZXRfY3ljbGVzIGNvbnRhY3RfbWFwIGluXG4gIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYS0lYS5cIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgIGFnXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnJylcbiAgICAgICAgICAgcycpKVxuICAgIGZvcm0gb1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIzIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFyaW5nX2xldmVsID0gTm9fc2hhcmluZyB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZ1xuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJub19zaGFyaW5nXCIgLT4gTm9fc2hhcmluZ1xuICB8IGBTdHJpbmcgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCIgLT4gQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICB8IGBTdHJpbmcgXCJtYXhfc2hhcmluZ1wiIC0+IE1heF9zaGFyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3Qgc2hhcmluZ19sZXZlbFwiLCB4KSlcblxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcIm5vX3NoYXJpbmdcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcImNvbXBhdGlibGVfcGF0dGVybnNcIlxuICB8IE1heF9zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJtYXhfc2hhcmluZ1wiXG5cbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/bGVuOihfID0gMTAyNCkgPSBmdW5jdGlvblxuICB8IE5vX3NoYXJpbmcgLT4gXCJcXFwibm9fc2hhcmluZ1xcXCJcIlxuICB8IENvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJcXFwiY29tcGF0aWJsZV9wYXR0ZXJuc1xcXCJcIlxuICB8IE1heF9zaGFyaW5nIC0+IFwiXFxcIm1heF9zaGFyaW5nXFxcIlwiXG5cbmxldCByZWFkX3NoYXJpbmdfbGV2ZWwgcCBsYiA9XG4gIHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbGluayA9IFVuU3BlYyB8IEZyZWUgfCBMaW5rIG9mIGludCAqIGludCAgKCoqIG5vZGVfaWQsIHNpdGVfaWQgKilcblxudHlwZSBjYyA9IHtcbiAgbm9kZXNfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gIG5vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgKCpwYXR0ZXJuIGdyYXBoIGlkIC0+IFt8Li4uIChsaW5rX2osc3RhdGVfaikuLi58XSBpLmUgYWdlbnRfaWQgb24gc2l0ZV9qIGhhc1xuICAgIGEgbGluayBsaW5rX2ogYW5kIGludGVybmFsIHN0YXRlIHN0YXRlX2ogKC0xIG1lYW5zIGFueSkgKilcbiAgcmVjb2duX25hdjogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG59XG4oKiogVGhlIGxpbmsgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbZnN0IG5vZGVzKGkpLihrKV0uXG5cbiAgICBUaGUgaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSBrIG9mIG5vZGUgaSBpcyBbc25kIG5vZGVzKGkpLihrKV0uIEFcbiAgICBuZWdhdGl2ZSBudW1iZXIgbWVhbnMgVW5TcGVjLiAqKVxuXG50eXBlIHQgPSBjY1xudHlwZSBpZCA9IGludFxuXG5sZXQgZGVidWdfcHJpbnRfaWQgZm10IGlkID0gRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiBpZFxubGV0IHNpemVfb2ZfY2MgY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG5sZXQgY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IE1vZHMuaW50X2NvbXBhcmUgY2MgY2MnXG5sZXQgaXNfZXF1YWxfY2Fub25pY2FscyBjYyBjYycgPSBjb21wYXJlX2Nhbm9uaWNhbHMgY2MgY2MnID0gMFxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2MgPVxuICBsZXQgcGx1c19pbnRlcm5hbCBhY2MgcyBpID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBUb29scy5jYW50b3JfcGFpcmluZyAoc3VjYyBzKSAoc3VjYyBpKSArIGFjY1xuICBpblxuICBsZXQgbm9kZV9zaGFwZSA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBuIGUgYWNjIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHMgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFVuU3BlYywgaSAtPiBwbHVzX2ludGVybmFsIGFjYyBzIGlcbiAgICAgICAgICAgIHwgRnJlZSwgaSAtPiBwbHVzX2ludGVybmFsICgzICsgKHMgKiAzKSArIGFjYykgcyBpXG4gICAgICAgICAgICB8IExpbmsgKG4nLCBzJyksIGkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPSBwbHVzX2ludGVybmFsIGFjYyBzIGkgaW5cbiAgICAgICAgICAgICAgbGV0IGV4dHJhID0gVG9vbHMuY2FudG9yX3BhaXJpbmcgKDEgKyBtaW4gcyBzJykgKDEgKyBtYXggcyBzJykgaW5cbiAgICAgICAgICAgICAgaWYgKG4gPSBuJyAmJiBzIDwgcycpIHx8IG4gPCBuJyB0aGVuXG4gICAgICAgICAgICAgICAgKGV4dHJhICogNykgKyBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgIGFjYyBlKVxuICAgICAgY2Mubm9kZXMgMFxuICBpblxuICBBcnJheS5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIGFjYyAtPiBMaXN0Lmxlbmd0aCBsICsgKGhhc2hfcHJpbWUgKiBhY2MpKVxuICAgIGNjLm5vZGVzX2J5X3R5cGUgbm9kZV9zaGFwZVxuXG5sZXQgaWRfdG9feW9qc29uIGNjID0gYEludCBjY1xuXG5sZXQgaWRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IGNjIC0+IGNjXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuIGlkXCIsIHgpKVxuXG5tb2R1bGUgU2V0ID0gTW9kcy5JbnRTZXRcbm1vZHVsZSBNYXAgPSBNb2RzLkludE1hcFxuXG5tb2R1bGUgT2JzTWFwID0gc3RydWN0XG4gIGluY2x1ZGUgTW9kcy5EeW5BcnJheVxuXG4gIGxldCBkdW1teSB4ID0gbWFrZSAwIHhcbmVuZFxuXG5sZXQgZW1wdHlfY2Mgc2lncyA9XG4gIGxldCBuYnQgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICB7IG5vZGVzX2J5X3R5cGUgPSBuYnQ7IHJlY29nbl9uYXYgPSBbXTsgbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCByYXdfZmluZF90eSB0eXMgaWQgPVxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBhc3NlcnQgKGkgPj0gMCk7XG4gICAgaWYgTGlzdC5tZW0gaWQgdHlzLihpKSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgYXV4IChwcmVkIGkpXG4gIGluXG4gIGF1eCAoQXJyYXkubGVuZ3RoIHR5cyAtIDEpXG5cbmxldCBmaW5kX3R5IGNjIGlkID0gcmF3X2ZpbmRfdHkgY2Mubm9kZXNfYnlfdHlwZSBpZFxuXG5sZXQgYWRkX29yaWdpbiBkZXBzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGRlcHNcbiAgfCBTb21lIHggLT4gT3BlcmF0b3IuRGVwU2V0LmFkZCB4IGRlcHNcblxubGV0IHJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gY2MgPSBjYy5yZWNvZ25fbmF2XG5cbigqKiBFcnJvcnMgKilcbmxldCBhbHJlYWR5X3NwZWNpZmllZCA/c2lncyB4IGkgPVxuICBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlNpdGUgJWEgb2YgYWdlbnQgJWEgYWxyZWFkeSBzcGVjaWZpZWRcIlxuICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIHgpIGlcbiAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgeCkpXG5cbmxldCBkYW5nbGluZ19ub2RlIH5zaWdzIHR5cyB4ID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJDYW5ub3QgcHJvY2VlZCBiZWNhdXNlIGxhc3QgZGVjbGFyZWQgYWdlbnQgJWEvKiVpKi8lYVwiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIChyYXdfZmluZF90eSB0eXMgeCkgeCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgXCIgaXMgbm90IGxpbmtlZCB0byBpdHMgY29ubmVjdGVkIGNvbXBvbmVudC5cIikpXG5cbmxldCBpZGVudGl0eV9pbmplY3Rpb24gY2MgPVxuICBSZW5hbWluZy5pZGVudGl0eVxuICAgIChBcnJheS5mb2xkX2xlZnQgKGZ1biB4IHkgLT4gTGlzdC5yZXZfYXBwZW5kIHkgeCkgW10gY2Mubm9kZXNfYnlfdHlwZSlcblxuKCoqIHBpY2sgYSByb290IGluIHRoZSBDQy4gQW55IHJvb3Qgd29ya3MuXG4gICAgSW4gdGhpcyBjYXNlIHBpY2sgdGhlIGZpcnN0IG5vZGUgb2Ygc21hbGxlc3QgdHlwZSAqKVxubGV0IHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSA9XG4gIGxldCByZWMgYXV4IHR5ID1cbiAgICBpZiB0eSA9IEFycmF5Lmxlbmd0aCBub2Rlc19ieV90eXBlIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5vZGVzX2J5X3R5cGUuKHR5KSB3aXRoXG4gICAgICB8IFtdIC0+IGF1eCAoc3VjYyB0eSlcbiAgICAgIHwgaCA6OiBfIC0+IFNvbWUgKGgsIHR5KVxuICAgIClcbiAgaW5cbiAgYXV4IDBcblxubGV0IGZpbmRfcm9vdCBjYyA9IHJhd19maW5kX3Jvb3QgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgd2VpZ2h0IGNjID1cbiAgbGV0IGxpbmtzLCBkb3VibGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBBcnJheS5mb2xkX3JpZ2h0IChmdW4gKGksIHMpIChsLCBkKSAtPlxuICAgICAgICAgICAgaWYgaSA8PiBVblNwZWMgdGhlblxuICAgICAgICAgICAgICAoIHN1Y2NcbiAgICAgICAgICAgICAgICAgIChpZiBzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIGwpLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gRnJlZSB0aGVuXG4gICAgICAgICAgICAgICAgICBzdWNjIGRcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgc3VjYyBsXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBkICkpKVxuICAgICAgY2Mubm9kZXMgKDAsIDApXG4gIGluXG4gIGxpbmtzIC0gKGRvdWJsZSAvIDIpXG5cbmxldCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSA/cG9zc2liaWxpdGllcyB+c3RyaWN0IHJvb3QxIGNjMSByb290MiBjYzIgPVxuICBsZXQgdGljayB4ID1cbiAgICBtYXRjaCBwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgeCAhc1xuICBpblxuICBsZXQgcmVjIGF1eCBhdF9sZWFzdF9vbmVfZWRnZSByZW5hbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGF0X2xlYXN0X29uZV9lZGdlIHRoZW5cbiAgICAgICAgU29tZSByZW5hbWUsIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZSwgTm9uZVxuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gdGljayBwYWlyIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgIChmdW4gaSBjIChseCwgaXgpIChseSwgaXkpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lLCBfIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKG9uZV9lZGdlLCB0b2RvLCByZW4pLCBfIC0+XG4gICAgICAgICAgICAgICBpZiAoKG5vdCBzdHJpY3QpICYmIChpeCA9IC0xIHx8IGl5ID0gLTEpKSB8fCBpeCA9IGl5IHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IExpbmsgXywgRnJlZSB8IEZyZWUsIExpbmsgXyAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIEZyZWUgfCBGcmVlLCBVblNwZWMgfCBMaW5rIF8sIFVuU3BlYyB8IFVuU3BlYywgTGluayBfXG4gICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzdHJpY3QgdGhlblxuICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICAgICAgU29tZSAob25lX2VkZ2UgfHwgKGl4IDw+IC0xICYmIGl4ID0gaXkpLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPiBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgIHwgTGluayAobjEsIHMxKSwgTGluayAobjIsIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lICh0cnVlLCB0b2RvLCByZW4pLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSByJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgKG4xLCBuMikgOjogdG9kbywgcicpLCBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgdHJ1ZSkpXG4gICAgICAgICAgIChTb21lIChhdF9sZWFzdF9vbmVfZWRnZSwgdG9kb3MsIHJlbmFtZSksIE5vbmUpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcylcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcbiAgICAgIHwgU29tZSAob25lX2VkZ2VzJywgdG9kb3MnLCByZW4nKSwgXyAtPiBhdXggb25lX2VkZ2VzJyByZW4nIHRvZG9zJylcbiAgaW5cbiAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSByIC0+XG4gICAgbGV0IGFfc2luZ2xlX2FnZW50ID1cbiAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgIHRydWVcbiAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QxIGNjMS5ub2RlcylcbiAgICAgIHx8IEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgaSA9IC0xICYmIGwgPSBVblNwZWMpXG4gICAgICAgICAgIHRydWVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHJvb3QyIGNjMi5ub2RlcylcbiAgICBpblxuICAgIGF1eCBhX3NpbmdsZV9hZ2VudCByIFsgcm9vdDEsIHJvb3QyIF1cblxuKCoqIEByZXR1cm4gaW5qZWN0aW9uIGZyb20gYSB0byBiICopXG5sZXQgZXF1YWwgfmRlYnVnX21vZGUgYSBiID1cbiAgbWF0Y2hcbiAgICBUb29scy5hcnJheV9taW5fZXF1YWxfbm90X251bGxcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGEubm9kZXNfYnlfdHlwZSlcbiAgICAgIChBcnJheS5tYXAgKGZ1biB4IC0+IExpc3QubGVuZ3RoIHgsIHgpIGIubm9kZXNfYnlfdHlwZSlcbiAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKFtdLCBhZ3MpIC0+XG4gICAgaWYgYWdzID0gW10gdGhlblxuICAgICAgU29tZSAoUmVuYW1pbmcuZW1wdHkgKCkpXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFNvbWUgKGgxIDo6IF8sIGFncykgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBib29sIGFnIC0+XG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBib29sXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByZW5hbWUsIF8gPSBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaDEgYSBhZyBiIGluXG4gICAgICAgICAgcmVuYW1lKVxuICAgICAgTm9uZSBhZ3NcblxubGV0IGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgYSA9XG4gIG1hdGNoXG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IFRvb2xzLm1pbl9wb3NfaW50X25vdF96ZXJvIGFjYyAoTGlzdC5sZW5ndGggeCwgeCkpXG4gICAgICAoMCwgW10pIGEubm9kZXNfYnlfdHlwZVxuICB3aXRoXG4gIHwgXywgW10gLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgXywgKGggOjogXyBhcyBsKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OnRydWUgaCBhIGFnIGEgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gbFxuXG5sZXQgcG90ZW50aWFsX3BhaXJpbmcgc2lncyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgKGZ1biB4IGFjYyBsYSBsYiAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyB4IHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgYiAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpIGFjYyBsYSlcbiAgICAgICAgICBhY2MgbGIpXG4gICAgTW9kcy5JbnQyU2V0LmVtcHR5XG5cbmxldCBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBhIGIgPVxuICBsZXQgcG9zc2liaWxpdGllcyA9XG4gICAgcmVmIChwb3RlbnRpYWxfcGFpcmluZyBzaWdzIGEubm9kZXNfYnlfdHlwZSBiLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgZm9yX29uZV9yb290IGFjYyA9XG4gICAgbWF0Y2ggTW9kcy5JbnQyU2V0LmNob29zZSAhcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSB4IGEgeSBiXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lLCBfIC0+IGZvcl9vbmVfcm9vdCBhY2NcbiAgICAgIHwgU29tZSByLCBfIC0+IGZvcl9vbmVfcm9vdCAociA6OiBhY2MpKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCp0dXJucyBhIGNjIGludG8gYSBwYXRoKDpsaXN0KSBpbiB0aGUgZG9tYWluKilcbmxldCByYXdfdG9fbmF2aWdhdGlvbiAoZnVsbCA6IGJvb2wpIG5vZGVzX2J5X3R5cGUgbm9kZXMgPVxuICBsZXQgcmVjIGJ1aWxkX2ZvciAoZmlyc3QsIG91dCkgZG9uID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IExpc3QucmV2IG91dFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgZmlyc3QnLCBvdXQnLCB0b2RvID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKGZpcnN0LCBhbnMsIHJlKSBhcyBhY2MpIChsLCBzKSAtPlxuICAgICAgICAgICAgbGV0ICgoZmlyc3QnLCBhbnMnLCBfKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIChmdWxsIHx8IGZpcnN0KSAmJiBzID49IDAgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub0ludGVybmFsIHMgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFVuU3BlYyAtPiBhY2MnXG4gICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICggZmFsc2UsXG4gICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob3RoaW5nIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICB8IExpbmsgKG4sIGwpIC0+XG4gICAgICAgICAgICAgIGlmIExpc3QubWVtIG4gZG9uIHx8IChuID0gaCAmJiBpID4gbCkgdGhlblxuICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgZWxzZSBpZiBuID0gaCB8fCBMaXN0Lm1lbSBuIHJlIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBmdWxsIHx8IGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAoICggKGlmIGZpcnN0JyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBsKSApXG4gICAgICAgICAgICAgICAgICAgIDo6IGFucycsXG4gICAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZVxuICAgICAgICAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLkZyZXNoIChuLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIG4pLCBsKSApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgbiA6OiByZSApKVxuICAgICAgICAgIChmaXJzdCwgb3V0LCB0KVxuICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBoIG5vZGVzKVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2ZvciAoZmlyc3QnLCBvdXQnKSAoaCA6OiBkb24pIHRvZG9cbiAgaW5cbiAgbWF0Y2ggcmF3X2ZpbmRfcm9vdCBub2Rlc19ieV90eXBlIHdpdGhcbiAgfCBOb25lIC0+IFtdICgqZW1wdHkgcGF0aCBmb3IgeDAqKVxuICB8IFNvbWUgKHgsIF8pIC0+XG4gICAgKCooYWdfc29ydCxhZ19pZCkqKVxuICAgIGJ1aWxkX2ZvciAodHJ1ZSwgW10pICgqd2lwKikgW10gKCphbHJlYWR5X2RvbmUqKSBbIHggXVxuKCp0b2RvKilcblxubGV0IHJlYyBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciA9IGZ1bmN0aW9uXG4gIHwgW10sIF8gLT4gclxuICB8IF8gOjogXywgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHggOjogcSBhcyBsKSwgeSA6OiBxJyAtPlxuICAgIGlmIHggPSB5IHRoZW4gKFxuICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHggeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKHEsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZnN0cywgbHN0ID0gTGlzdF91dGlsLnBvcF9sYXN0IGwgaW5cbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBsc3QgeSByIHdpdGhcbiAgICAgIHwgU29tZSByJyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgcicgKGZzdHMsIHEnKVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIClcblxubGV0IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRzdF9uYnQgcmVmX25idCA9XG4gIGxldCByZSA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IHIgaWRzIC0+IHN1Yl9taW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSByIChpZHMsIHJlZl9uYnQuKHR5KSkpXG4gICAgcmUgZHN0X25idFxuXG5sZXQgbWluaW1pemUgfmRlYnVnX21vZGUgY2FuZF9uYnQgY2FuZF9ub2RlcyByZWZfbmJ0ID1cbiAgbGV0IHJlID0gbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgY2FuZF9uYnQgcmVmX25idCBpblxuICBsZXQgcmVfaW1nID0gUmVuYW1pbmcuaW1hZ2UgcmUgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IE1vZHMuSW50U2V0Lm1lbSBhIHJlX2ltZykpIHJlZl9uYnRcbiAgaW5cbiAgbGV0IG5vZGVzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGlkIHNpdGVzIGFjYyAtPlxuICAgICAgICBsZXQgc2l0ZXMnID1cbiAgICAgICAgICBBcnJheS5tYXBcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBpIC0+IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlIG4sIHMpLCBpXG4gICAgICAgICAgICAgIHwgKChVblNwZWMgfCBGcmVlKSwgXykgYXMgeCAtPiB4KVxuICAgICAgICAgICAgc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBpZCkgc2l0ZXMnIGFjYylcbiAgICAgIGNhbmRfbm9kZXMgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAge1xuICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgbm9kZXM7XG4gICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gIH1cblxuKCogcmV0dXJucyBhIGxpc3Qgb2YgY2Mgd2hlcmUgZWFjaCBjYyBpcyBpbmNsdWRlZCBpbiBjYzEqKVxubGV0IGluZnMgfmRlYnVnX21vZGUgc2lncyBjYzEgY2MyID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBjYzEubm9kZXNfYnlfdHlwZSBjYzIubm9kZXNfYnlfdHlwZSlcbiAgaW5cbiAgbGV0IHJlYyBhdXggcmVuYW1lIG5vZGVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IG5vZGVzXG4gICAgfCAoKG8sIHApIGFzIHBhaXIpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgKCkgPSBwb3NzaWJpbGl0aWVzIDo9IE1vZHMuSW50MlNldC5yZW1vdmUgcGFpciAhcG9zc2liaWxpdGllcyBpblxuICAgICAgbGV0IGxuazEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBvIGNjMS5ub2RlcyBpblxuICAgICAgbGV0ICh0b2RvcycsIHJlbicpLCBvdXRsID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0X21hcGlcbiAgICAgICAgICAoZnVuIGsgKCh0b2RvLCByZW4pIGFzIGFjYykgKGx5LCBpeSkgLT5cbiAgICAgICAgICAgIGxldCBseCwgaXggPSBsbmsxLihrKSBpblxuICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgIHwgTGluayBfLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIExpbmsgX1xuICAgICAgICAgICAgfCBMaW5rIF8sIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgfCBVblNwZWMsIEZyZWVcbiAgICAgICAgICAgIHwgRnJlZSwgVW5TcGVjXG4gICAgICAgICAgICB8IFVuU3BlYywgVW5TcGVjIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgfCBGcmVlLCBGcmVlIC0+XG4gICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgKExpbmsgKG4xLCBzMSkgYXMgeCksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgaWYgczEgPSBzMiB0aGVuXG4gICAgICAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIG4xIHJlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgKCAoaWYgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmVuIG4xID0gbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIFVuU3BlYyksXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIG4xIG4yIHJlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgZmluZF90eSBjYzEgbjEgPSBmaW5kX3R5IGNjMiBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgKCAoKG4xLCBuMikgOjogdG9kbywgcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIC0xICkgKSlcbiAgICAgICAgICAodG9kb3MsIHJlbmFtZSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gcCBjYzIubm9kZXMpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYiAobCwgaSkgLT4gYiAmJiBsID0gVW5TcGVjICYmIGkgPCAwKSB0cnVlIG91dGxcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4IHJlbicgbm9kZXMgdG9kb3MnXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCByZW4nIChNb2RzLkludE1hcC5hZGQgbyBvdXRsIG5vZGVzKSB0b2RvcydcbiAgaW5cblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHJvb3QxLCByb290MikgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgcm9vdDEgcm9vdDIgKFJlbmFtaW5nLmVtcHR5ICgpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICBsZXQgbm9kZXMgPSBhdXggciBNb2RzLkludE1hcC5lbXB0eSBbIHJvb3QxLCByb290MiBdIGluXG4gICAgICAgIGxldCBhY2MnID1cbiAgICAgICAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBub2RlcyB0aGVuXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBub2Rlc19ieV90eXBlID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAgICAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludE1hcC5tZW0gYSBub2RlcykpXG4gICAgICAgICAgICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtaW5pbWl6ZSB+ZGVidWdfbW9kZSBub2Rlc19ieV90eXBlIG5vZGVzIGNjMS5ub2Rlc19ieV90eXBlIDo6IGFjY1xuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgZm9yX29uZV9yb290IGFjYycpXG4gIGluXG4gIGZvcl9vbmVfcm9vdCBbXVxuXG4oKiByZW5hbWluZyBpcyBhIHRvdGFsIG1vcnBoaXNtIGZyb20gY2MxJyB0byBjYzI7IGNjMScgaXMgaW5jbHVkZWQgaW4gY2MxICopXG5sZXQgaW50ZXJzZWN0aW9uIHJlbmFtaW5nIGNjMSBjYzIgPVxuICBsZXQgbm9kZXMsIGltYWdlID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGkgaiAoKGFjY24sIGwpIGFzIGFjYykgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYzEubm9kZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBub2RlczEgLT5cbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbm9kZXMyIC0+XG4gICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgICAgICAgIChmdW4gayAobDIsIGkyKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwxLCBpMSA9IG5vZGVzMS4oaykgaW5cbiAgICAgICAgICAgICAgICAgICggKGlmIGwxID0gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjXG4gICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgIGwyKSxcbiAgICAgICAgICAgICAgICAgICAgaWYgaTEgPSAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGkyICkpXG4gICAgICAgICAgICAgICAgbm9kZXMyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGogb3V0IGFjY24sIGogOjogbCkpXG4gICAgICByZW5hbWluZyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgQXJyYXkubWFwIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTGlzdC5tZW0gYSBpbWFnZSkpIGNjMi5ub2Rlc19ieV90eXBlXG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbmxldCByZWMgY291bnRlcl92YWx1ZSBub2RlcyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbmlkIG5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGNvdW50XG4gIHwgU29tZSBhZyAtPlxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaWQgYWNjIChlbCwgXykgLT5cbiAgICAgICAgaWYgaWQgPSBzaWQgdGhlblxuICAgICAgICAgIGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgfCBVblNwZWMgfCBGcmVlIC0+IGFjY1xuICAgICAgICAgIHwgTGluayAoZG4sIGRpKSAtPiBjb3VudGVyX3ZhbHVlIG5vZGVzIChkbiwgZGkpIChhY2MgKyAxKVxuICAgICAgICApKVxuICAgICAgY291bnQgYWdcblxubGV0IGNvdW50ZXJfdmFsdWVfY2MgY2MgKG5pZCwgc2lkKSBjb3VudCA9XG4gIGxldCBub2RlcyA9IGNjLm5vZGVzIGluXG4gIGNvdW50ZXJfdmFsdWUgbm9kZXMgKG5pZCwgc2lkKSBjb3VudFxuXG5sZXQgZG90Y29tbWEgZG90bmV0ID1cbiAgaWYgZG90bmV0IHRoZW5cbiAgICBmdW4gZm10IC0+XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixcIlxuICBlbHNlXG4gICAgUHAuc3BhY2VcblxubGV0IHByaW50X2NjIH5ub0NvdW50ZXJzID8oZG90bmV0ID0gZmFsc2UpID8oZnVsbF9zcGVjaWVzID0gZmFsc2UpID9zaWdzID9jY19pZFxuICAgIH53aXRoX2lkIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBkb3Rjb21tYSBkb3RuZXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBwKVxuICAgICAgICAgICAgICAgICBzdFxuICAgICAgICAgICAgIGVsc2UgaWYgZWwgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgICB8IFVuU3BlYyAtPlxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBpZiBmdWxsX3NwZWNpZXMgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICBub3RfZW1wdHksIG91dFxuICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl92YWx1ZSBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKSAwIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiez0lZH1cIiBjb3VudGVyIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2NfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjY19pZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLypjYyVpKi9AIFwiIGNjX2lkXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgICAgKG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSkgfHwgbm9Db3VudGVyc1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYShcIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgaWYgZG90bmV0IHRoZW5cbiAgICAgICAgICAgICAgICAgICBmdW4gZm10IC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIi5cIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZClcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIpQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCBwcmludF9jY19hc19pZCBzaWdzIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgZWwgPD4gVW5TcGVjIHx8IHN0ID49IDAgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgfnNpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ+JWFcIiAoQWdlbnQucHJpbnRfcmF3X2ludGVybmFsIH5zaWdzIGFnIHApIHN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgICAgICAgfCBVblNwZWMgLT4gbm90X2VtcHR5IHx8IHN0ID49IDAsIG91dFxuICAgICAgICAgICB8IEZyZWUgLT4gdHJ1ZSwgb3V0XG4gICAgICAgICAgIHwgTGluayAoZHN0X2EsIGRzdF9wKSAtPlxuICAgICAgICAgICAgIGxldCBkc3RfdHkgPSBmaW5kX3R5IGNjIGRzdF9hIGluXG4gICAgICAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfdmFsdWUgY2Mubm9kZXMgKGRzdF9hLCBkc3RfcCkgMCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4rJWRcIiBjb3VudGVyIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgbGV0IGksIG91dCcgPVxuICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3RfcCkgbGlua19pZHMgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBvdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgZnJlZSwgKHN1Y2MgZnJlZSwgTW9kcy5JbnQyTWFwLmFkZCAoYWdfaSwgcCkgZnJlZSBsaW5rX2lkcylcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifiVpXCIgaSBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0J1xuICAgICAgICAgICAgICkpXG4gICAgICAgICAoZmFsc2UsIGxpbmtfaWRzKSBuZWlnaClcbiAgaW5cbiAgbGV0IF8sIF8gPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4geCBlbCAobm90X2VtcHR5LCBsaW5rX2lkcykgLT5cbiAgICAgICAgbGV0IGFnX3ggPSB4LCBmaW5kX3R5IGNjIHggaW5cbiAgICAgICAgaWYgbm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIChzbmQgYWdfeCkpIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXRAWzxoPiVhX19cIlxuICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9fXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgIChBZ2VudC5wcmludCB+c2lncyB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgYWdfeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IHByaW50X2ludGYgYWdfeCBsaW5rX2lkcyBlbCBpblxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiIGluXG4gICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIG5vdF9lbXB0eSwgbGlua19pZHMpXG4gICAgICBjYy5ub2Rlc1xuICAgICAgKGZhbHNlLCAoMSwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcbiAgaW5cbiAgKClcblxubGV0IHRvX3lvanNvbiBjYyA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgY2Mubm9kZXMgd2l0aFxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIG0gLT5cbiAgICBsZXQgcyA9IHN1Y2MgbSBpblxuICAgIGxldCBzb3J0cyA9IEFycmF5Lm1ha2UgcyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gdHkgLT4gTGlzdC5pdGVyIChmdW4gaWQgLT4gc29ydHMuKGlkKSA8LSBTb21lIHR5KSlcbiAgICAgICAgY2Mubm9kZXNfYnlfdHlwZVxuICAgIGluXG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJzb3J0c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIHNvcnRzIFtdKSApO1xuICAgICAgICAoIFwibm9kZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjLm5vZGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCBzKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT4gYEJvb2wgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQXNzb2MgWyBcIm5vZGVcIiwgYEludCBuOyBcInNpdGVcIiwgYEludCBzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGBCb29sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBJbnQgcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICBhIFtdKSlcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgW10gcykgKTtcbiAgICAgIF1cblxubGV0IG9mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwic29ydHNcIiwgYExpc3Qgcyk7IChcIm5vZGVzXCIsIGBMaXN0IG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJub2Rlc1wiLCBgTGlzdCBuKTsgKFwic29ydHNcIiwgYExpc3QgcykgXSAtPlxuICAgIGxldCBfLCBub2RlcyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChpLCBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiBzdWNjIGksIGFjY1xuICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgKCBzdWNjIGksXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYE51bGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIC0xIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMaW5rIChuLCBzKSwgLTFcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgQm9vbCBiOyBgSW50IHMgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggYEFzc29jIFsgKFwibm9kZVwiLCBgSW50IG4pOyAoXCJzaXRlXCIsIGBJbnQgcykgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQXNzb2MgWyAoXCJzaXRlXCIsIGBJbnQgcyk7IChcIm5vZGVcIiwgYEludCBuKSBdICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIHN0XG4gICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBub2RlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIGFjYyApXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZSBsaW5rc1wiLCB4KSkpXG4gICAgICAgICgwLCBNb2RzLkludE1hcC5lbXB0eSkgblxuICAgIGluXG4gICAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdfZGVjbCkgW10gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgfCBgSW50IHR5IC0+IG5vZGVzX2J5X3R5cGUuKHR5KSA8LSBpIDo6IG5vZGVzX2J5X3R5cGUuKHR5KVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBub2RlIHR5cGVcIiwgeCkpKVxuICAgICAgICBzXG4gICAgaW5cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXM7XG4gICAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgICB9XG4gIHwgYE51bGwgLT4gZW1wdHlfY2Mgc2lnX2RlY2xcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBhdHRlcm5cIiwgeCkpXG5cbmxldCBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIHJlc2VydmVkX2lkcyBmcmVlX2lkIGluajFfdG9fMiBjYzEgY2MyID1cbiAgbGV0IGltZyA9IFJlbmFtaW5nLmltYWdlIGluajFfdG9fMiBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biBpZCAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcpKSlcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgdXNlZF9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3RfdXRpbC5tYXBfb3B0aW9uIChmdW4gaWQgLT5cbiAgICAgICAgICAgaWYgUmVuYW1pbmcubWVtIGlkIGluajFfdG9fMiB0aGVuXG4gICAgICAgICAgICAgU29tZSAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMV90b18yIGlkKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSkpXG4gICAgICBjYzEubm9kZXNfYnlfdHlwZVxuICBpblxuICBsZXQgYXZhaWxhYmxlX2luX2NjMSA9XG4gICAgQXJyYXkubWFwaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoTGlzdC5tZW0geCBjYzEubm9kZXNfYnlfdHlwZS4oaSkpKSBsKVxuICAgICAgcmVzZXJ2ZWRfaWRzXG4gIGluXG4gIGxldCBmcmVlX2lkX2Zvcl9jYzEgPSByZWYgZnJlZV9pZCBpblxuXG4gIGxldCBnZXRfY2MyIGogKCgoaW5qMSwgZnJlZV9pZCksIGluajIsICh0b2RvczEsIHRvZG9zMikpIGFzIHBhY2spID1cbiAgICBpZiBSZW5hbWluZy5tZW0gaiBpbmoyIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajIgaiwgcGFja1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHR5ID0gZmluZF90eSBjYzIgaiBpblxuICAgICAgbGV0IGltZywgZnJlZV9pZCcgPVxuICAgICAgICBtYXRjaCBhdmFpbGFibGVfaWRzLih0eSkgd2l0aFxuICAgICAgICB8IFtdIC0+IGZyZWVfaWQsIHN1Y2MgZnJlZV9pZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pZHMuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaCwgZnJlZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHVzZWRfaWRzLih0eSkgPC0gaW1nIDo6IHVzZWRfaWRzLih0eSkgaW5cbiAgICAgIGxldCBvID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2luX2NjMS4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCB4ID0gIWZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIGxldCAoKSA9IGluY3IgZnJlZV9pZF9mb3JfY2MxIGluXG4gICAgICAgICAgeFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCAoKSA9IGF2YWlsYWJsZV9pbl9jYzEuKHR5KSA8LSB0IGluXG4gICAgICAgICAgaFxuICAgICAgaW5cbiAgICAgICggaW1nLFxuICAgICAgICAoICggKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBvIGltZyBpbmoxIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgICAgZnJlZV9pZCcgKSxcbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGogaW1nIGluajIgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAodG9kb3MxLCAoaiwgaW1nKSA6OiB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cblxuICBsZXQgZ2V0X2NjMSBpICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGkgaW5qMSB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoxIGksIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MxIGkgaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaSBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgaW5qMixcbiAgICAgICAgICAoKGksIGltZykgOjogdG9kb3MxLCB0b2RvczIpICkgKVxuICAgIClcbiAgaW5cbiAgbGV0IHBhY2snLCBub2RlcyA9XG4gICAgbGV0IHJlYyBnbHVlIHBhY2sgaW5qMiBub2RlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdLCBbXSAtPiBwYWNrLCBub2Rlc1xuICAgICAgfCBbXSwgKGksIGopIDo6IHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzIubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgIChwYWNrLCBpbmoyLCAoW10sIHRvZG9zMikpXG4gICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICAgIHwgKGksIGopIDo6IHRvZG9zMSwgdG9kb3MyIC0+XG4gICAgICAgIGxldCBub2Rlc2kgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBpIGNjMS5ub2RlcyBpblxuICAgICAgICBsZXQgbm9kZXNvID0gQXJyYXkuY29weSBub2Rlc2kgaW5cbiAgICAgICAgbGV0IHBhY2snLCBpbmoyJywgdG9kb3MnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBqIGNjMi5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IChVblNwZWMgfCBGcmVlKSwgXyAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0IGluXG4gICAgICAgICAgICAgICAgICBhY2MnKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgICAgfCBTb21lIG5vZGVzaiAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGcmVlLCBfIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgXywgc3RqID0gbm9kZXNqLihrKSBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBGcmVlLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0aSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgc3RpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMSBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbm9kZXNvLihrKSA8LSBMaW5rIChuJywgcyksIHN0byBpblxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBub2Rlc2ouKGspIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgc3RqIDw+IC0xIHRoZW4gbm9kZXNvLihrKSA8LSBVblNwZWMsIHN0aiBpblxuICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIHwgRnJlZSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgbm9kZXNvLihrKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICAgKCBGcmVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGogPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGogLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0byA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0alxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbicsIGFjYycgPSBnZXRfY2MyIG4gYWNjIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIChwYWNrLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKVxuICAgICAgICAgICAgICBub2Rlc2lcbiAgICAgICAgaW5cbiAgICAgICAgZ2x1ZSBwYWNrJyBpbmoyJyAoTW9kcy5JbnRNYXAuYWRkIGogbm9kZXNvIG5vZGVzKSB0b2RvcydcbiAgICBpblxuICAgIGdsdWUgKGluajFfdG9fMiwgZnJlZV9pZClcbiAgICAgIChSZW5hbWluZy5pZGVudGl0eSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgaW1nKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAoUmVuYW1pbmcudG9fbGlzdCBpbmoxX3RvXzIsIFtdKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCAoTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmUpIHVzZWRfaWRzIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSB4IC0+XG4gICAgICAgIHJlc2VydmVkX2lkcy4oaSkgPC1cbiAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIG5vZGVzX2J5X3R5cGUuKGkpIHgpXG4gICAgICBhdmFpbGFibGVfaWRzXG4gIGluXG4gICggcGFjaycsXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfSApXG5cbmxldCBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RfdG9fbyBjY19vIGNjX2QgPVxuICBsZXQgcmVjIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIG5leHRfcm91bmQgcmVjb2duIGludGVybiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbmV4dF9yb3VuZCA9IFtdIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlY29nbiBpbnRlcm5cbiAgICAgIGVsc2VcbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgW10gcmVjb2duIGludGVybiBuZXh0X3JvdW5kXG4gICAgfCAoKChpLCBqLCBzKSwgKG4nLCBzJykpIGFzIGgpIDo6IHRvZG9zIC0+XG4gICAgICBsZXQgbiA9IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9kX3RvX28gbicgaW5cbiAgICAgIChtYXRjaCBNb2RzLkludFNldC5tZW0gaiBkaXNjb3ZlcmVkLCBNb2RzLkludFNldC5tZW0gbicgZGlzY292ZXJlZCB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCAoaCA6OiBuZXh0X3JvdW5kKSByZWNvZ24gaW50ZXJuIHRvZG9zXG4gICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgbGV0IGludGVybicgPVxuICAgICAgICAgICggKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJykgKVxuICAgICAgICAgIDo6IGludGVyblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4nIHRvZG9zXG4gICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKG4sIGZpbmRfdHkgY2NfZCBuJyksIHMnKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgbicgZGlzY292ZXJlZClcbiAgICAgICAgICBuZXh0X3JvdW5kIHJlY29nbicgaW50ZXJuIHRvZG9zXG4gICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgIGxldCByZWNvZ24nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIG4sIHMnKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChpLCBmaW5kX3R5IGNjX2QgaiksIHMpIClcbiAgICAgICAgICA6OiByZWNvZ25cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzXG4gICAgICAgICAgKE1vZHMuSW50U2V0LmFkZCBqIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2RvcylcbiAgaW5cbiAgbGV0IGRpc2NvdiwgYWxsX2xpbmtzLCBpbnRlcm4gPVxuICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgIChmdW4gaiBpIChkaXNjLCBsaW5rcywgaW50ZXIpIC0+XG4gICAgICAgIGxldCBub2Rlc2QgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBqIGNjX2Qubm9kZXMgaW5cbiAgICAgICAgbGV0IGRpc2MnLCBub2Rlc28gPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2Nfby5ub2RlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRpc2MsIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBub2Rlc2QpIChVblNwZWMsIC0xKVxuICAgICAgICAgIHwgU29tZSBub2Rlc28gLT4gTW9kcy5JbnRTZXQuYWRkIGogZGlzYywgbm9kZXNvXG4gICAgICAgIGluXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgICAgKGZ1biBzICgoZGlzLCBsaSwgaW50KSBhcyBhY2MpIChvbCwgb3MpIChkbCwgZHMpIC0+XG4gICAgICAgICAgICBsZXQgKChfLCBfLCBpbnQnKSBhcyBhY2MnKSA9XG4gICAgICAgICAgICAgIGlmIG9zID0gLTEgJiYgZHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICggZGlzLFxuICAgICAgICAgICAgICAgICAgbGksXG4gICAgICAgICAgICAgICAgICAoKE5hdmlnYXRpb24uRXhpc3RpbmcgaSwgcyksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBkcykgOjogaW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgb2wgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGRsIHdpdGhcbiAgICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogaW50JyApXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcycpIC0+XG4gICAgICAgICAgICAgICAgaWYgbiA+ICgqbGEqKSBqIHx8IChuID0gaiAmJiBzID4gcycpIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBkaXMsICgoaSwgaiwgcyksIChuLCBzJykpIDo6IGxpLCBpbnQnXG4gICAgICAgICAgICApKVxuICAgICAgICAgIChkaXNjJywgbGlua3MsIGludGVyKSBub2Rlc28gbm9kZXNkKVxuICAgICAgaW5qX2RfdG9fb1xuICAgICAgKE1vZHMuSW50U2V0LmVtcHR5LCBbXSwgW10pXG4gIGluXG4gIGhhbmRsZV9saW5rcyBkaXNjb3YgW10gW10gaW50ZXJuIGFsbF9saW5rc1xuXG5tb2R1bGUgRW52IDogc2lnXG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICB2YWwgY29udGVudCA6IHBvaW50IC0+IGNjXG4gIHZhbCByb290cyA6IHBvaW50IC0+IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uXG4gIHZhbCBkZXBzIDogcG9pbnQgLT4gT3BlcmF0b3IuRGVwU2V0LnRcbiAgdmFsIHNvbnMgOiBwb2ludCAtPiB0cmFuc2l0aW9uIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIHZhbCBnZXQgOiB0IC0+IGlkIC0+IHBvaW50XG4gIHZhbCBnZXRfc2luZ2xlX2FnZW50IDogaW50IC0+IHQgLT4gKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvblxuICB2YWwgdG9fbmF2aWdhdGlvbiA6IHQgLT4gaWQgLT4gTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnRcblxuICB2YWwgZ2V0X2VsZW1lbnRhcnkgOlxuICAgIGRlYnVnX21vZGU6Ym9vbCAtPlxuICAgIHQgLT5cbiAgICBBZ2VudC50IC0+XG4gICAgaW50IC0+XG4gICAgTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLmFycm93IC0+XG4gICAgKGlkICogcG9pbnQgKiBSZW5hbWluZy50KSBvcHRpb25cblxuICB2YWwgc2lnbmF0dXJlcyA6IHQgLT4gU2lnbmF0dXJlLnNcbiAgdmFsIG5ld19vYnNfbWFwIDogdCAtPiAoaWQgLT4gJ2EpIC0+ICdhIE9ic01hcC50XG4gIHZhbCBwcmludCA6IG5vQ291bnRlcnM6Ym9vbCAtPiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9feW9qc29uIDogdCAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgb2ZfeW9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdHJhbnNpdGlvbiA9IHtcbiAgICBuZXh0OiBOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24udDtcbiAgICBkc3Q6IGlkOyAoKiBpZCBvZiBjYyBhbmQgYWxzbyBhZGRyZXNzIGluIHRoZSBFbnYuZG9tYWluIG1hcCopXG4gICAgaW5qOiBSZW5hbWluZy50OyAoKiBGcm9tIGRzdCBUbyAoXCJ0aGlzXCIgY2MgKyBleHRyYSBlZGdlKSAqKVxuICB9XG5cbiAgdHlwZSBwb2ludCA9IHtcbiAgICBjb250ZW50OiBjYztcbiAgICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG4gICAgZGVwczogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gICAgbXV0YWJsZSBzb25zOiB0cmFuc2l0aW9uIGxpc3Q7XG4gIH1cblxuICBsZXQgY29udGVudCBwID0gcC5jb250ZW50XG4gIGxldCByb290cyBwID0gcC5yb290c1xuICBsZXQgZGVwcyBwID0gcC5kZXBzXG4gIGxldCBzb25zIHAgPSBwLnNvbnNcblxuICB0eXBlIHQgPSB7XG4gICAgc2lnX2RlY2w6IFNpZ25hdHVyZS5zO1xuICAgIGlkX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICAgIG1heF9vYnM6IGludDtcbiAgICBkb21haW46IHBvaW50IGFycmF5O1xuICAgIGVsZW1lbnRhcmllczogKE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5zdGVwICogaWQpIGxpc3QgYXJyYXkgYXJyYXk7XG4gICAgc2luZ2xlX2FnZW50X3BvaW50czogKGlkICogT3BlcmF0b3IuRGVwU2V0LnQpIG9wdGlvbiBhcnJheTtcbiAgfVxuXG4gIGxldCBzaWduYXR1cmVzIGVudiA9IGVudi5zaWdfZGVjbFxuXG4gIGxldCBwcmludCB+bm9Db3VudGVycyBmIGVudiA9XG4gICAgbGV0IHBwX3BvaW50IHBfaWQgZiBwID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj5AWzxoPiVhQF1AICV0LT4gQFsoJWEpQF1AXVwiXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOmVudi5zaWdfZGVjbCB+Y2NfaWQ6cF9pZCB+d2l0aF9pZDp0cnVlIHgpXG4gICAgICAgIHAuY29udGVudFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICBpZiBwLnJvb3RzIDw+IE5vbmUgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbWyVhXUBdQCBcIlxuICAgICAgICAgICAgICAoUHAuc2V0IE9wZXJhdG9yLkRlcFNldC5lbGVtZW50cyBQcC5zcGFjZSBPcGVyYXRvci5wcmludF9yZXZfZGVwKVxuICAgICAgICAgICAgICBwLmRlcHMpXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBzIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEoJWEpQCAlaUBdXCJcbiAgICAgICAgICAgICAgIChOYXZpZ2F0aW9uLnByaW50IGVudi5zaWdfZGVjbCAoZmluZF90eSBwLmNvbnRlbnQpKVxuICAgICAgICAgICAgICAgcy5uZXh0IFJlbmFtaW5nLnByaW50IHMuaW5qIHMuZHN0KSlcbiAgICAgICAgcC5zb25zXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCIgKFBwLmFycmF5IFBwLnNwYWNlIHBwX3BvaW50KSBlbnYuZG9tYWluXG5cbiAgbGV0IGdldF9zaW5nbGVfYWdlbnQgdHkgZW52ID0gZW52LnNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KVxuICBsZXQgZ2V0IGVudiBjY19pZCA9IGVudi5kb21haW4uKGNjX2lkKVxuXG4gIGxldCB0b19uYXZpZ2F0aW9uIGVudiBpZCA9XG4gICAgbGV0IGNjID0gKGdldCBlbnYgaWQpLmNvbnRlbnQgaW5cbiAgICByYXdfdG9fbmF2aWdhdGlvbiB0cnVlIGNjLm5vZGVzX2J5X3R5cGUgY2Mubm9kZXNcblxuICBsZXQgdHJhbnNpdGlvbl90b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZHN0XCIsIGBJbnQgdC5kc3Q7XG4gICAgICAgIFwiaW5qXCIsIFJlbmFtaW5nLnRvX3lvanNvbiB0LmluajtcbiAgICAgICAgXCJuYXZcIiwgTmF2aWdhdGlvbi50b195b2pzb24gdC5uZXh0O1xuICAgICAgXVxuXG4gIGxldCB0cmFuc2l0aW9uX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcIm5hdlwiLCBuKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImlualwiLCByKTsgKFwiZHN0XCIsIGBJbnQgZHN0KSBdXG4gICAgfCBgQXNzb2MgWyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcIm5hdlwiLCBuKSBdXG4gICAgfCBgQXNzb2MgWyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCk7IChcImlualwiLCByKSBdIC0+XG4gICAgICB7IGRzdDsgaW5qID0gUmVuYW1pbmcub2ZfeW9qc29uIHI7IG5leHQgPSBOYXZpZ2F0aW9uLm9mX3lvanNvbiBuIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHRyYW5zaXRpb25cIiwgeCkpXG5cbiAgbGV0IHBvaW50X3RvX3lvanNvbiBwID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb250ZW50XCIsIHRvX3lvanNvbiBwLmNvbnRlbnQ7XG4gICAgICAgICggXCJyb290c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgKGZ1biAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCAoTGlzdC5tYXAgSnNvblV0aWwub2ZfaW50IGlkcyk7IGBJbnQgdHkgXSlcbiAgICAgICAgICAgIHAucm9vdHMgKTtcbiAgICAgICAgXCJkZXBzXCIsIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gcC5kZXBzO1xuICAgICAgICBcInNvbnNcIiwgYExpc3QgKExpc3QubWFwIHRyYW5zaXRpb25fdG9feW9qc29uIHAuc29ucyk7XG4gICAgICBdXG5cbiAgbGV0IHBvaW50X29mX3lvanNvbiBzaWdfZGVjbCA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgY29udGVudCA9IG9mX3lvanNvbiBzaWdfZGVjbCAoTGlzdC5hc3NvYyBcImNvbnRlbnRcIiBsKTtcbiAgICAgICAgICAgcm9vdHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwicm9vdHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBOdWxsIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGBMaXN0IFsgYExpc3QgaWRzOyBgSW50IHR5IF0gLT5cbiAgICAgICAgICAgICAgIFNvbWUgKExpc3QubWFwIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBpZHMsIHR5KVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkZXBzID0gT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvbiAoTGlzdC5hc3NvYyBcImRlcHNcIiBsKTtcbiAgICAgICAgICAgc29ucyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJzb25zXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IExpc3QubWFwIHRyYW5zaXRpb25fb2ZfeW9qc29uIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGRvbWFpbiBwb2ludFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpXG5cbiAgbGV0IHRvX3lvanNvbiBlbnYgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcInNpZ25hdHVyZXNcIiwgU2lnbmF0dXJlLnRvX2pzb24gZW52LnNpZ19kZWNsO1xuICAgICAgICAoIFwic2luZ2xlX2FnZW50c1wiLFxuICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBfZGVwcykgLT4gYEludCBpZClcbiAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LnNpbmdsZV9hZ2VudF9wb2ludHMgW10pICk7XG4gICAgICAgICggXCJlbGVtZW50YXJpZXNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChzdCwgZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIE5hdmlnYXRpb24uc3RlcF90b195b2pzb24gc3Q7IGBJbnQgZCBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIHggW10pXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5lbGVtZW50YXJpZXMgW10pICk7XG4gICAgICAgICggXCJkYWdcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gcG9pbnRfdG9feW9qc29uIHggOjogYWNjKVxuICAgICAgICAgICAgICAgZW52LmRvbWFpbiBbXSkgKTtcbiAgICAgICAgKCBcImlkX2J5X3R5cGVcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT4gYExpc3QgKExpc3QubWFwIChmdW4gaSAtPiBgSW50IGkpIHgpIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5pZF9ieV90eXBlIFtdKSApO1xuICAgICAgICBcIm1heF9vYnNcIiwgYEludCBlbnYubWF4X29icztcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAgbGV0IHNpZ19kZWNsID0gU2lnbmF0dXJlLm9mX2pzb24gKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCkgaW5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgc2lnX2RlY2w7XG4gICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic2luZ2xlX2FnZW50c1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpLCBPcGVyYXRvci5EZXBTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHNpbmdsZV9hZ2VudFwiLCB4KSkpKVxuICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGVsZW1lbnRhcmllcyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJlbGVtZW50YXJpZXNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYEludCBkIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uc3RlcF9vZl95b2pzb24gcywgZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBkb21haW4gPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZGFnXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChwb2ludF9vZl95b2pzb24gc2lnX2RlY2wpIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgaWRfYnlfdHlwZSA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJpZF9ieV90eXBlXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBtYXhfb2JzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm1heF9vYnNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHVwZGF0ZSBkb21haW5cIiwgeCkpXG5cbiAgbGV0IG5ld19vYnNfbWFwIGVudiBmID0gTW9kcy5EeW5BcnJheS5pbml0IGVudi5tYXhfb2JzIGZcblxuICBsZXQgZ2V0X2VsZW1lbnRhcnkgfmRlYnVnX21vZGUgZG9tYWluICgoXywgdHkpIGFzIG5vZGUpIHMgYXJyb3cgPVxuICAgIGxldCBzYSA9IGRvbWFpbi5lbGVtZW50YXJpZXMuKHR5KSBpblxuICAgIGxldCByZWMgZmluZF9nb29kX2VkZ2UgPSBmdW5jdGlvblxuICAgICAgKCpvbmUgc2hvdWxkIHVzZSBhIGhhc2ggaGVyZSopXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgKHN0LCBjY19pZCkgOjogdGFpbCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIHN0IG5vZGUgcyBhcnJvd1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZF9nb29kX2VkZ2UgdGFpbFxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIGxldCBkc3QgPSBnZXQgZG9tYWluIGNjX2lkIGluXG4gICAgICAgICAgU29tZSAoY2NfaWQsIGRzdCwgaW5qJykpXG4gICAgaW5cbiAgICBmaW5kX2dvb2RfZWRnZSBzYS4ocylcbmVuZFxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZCBmIGlkID1cbiAgbWF0Y2ggZG9tYWluIHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IGNjX2lkID1cbiAgICAgIGlmIHdpdGhfaWQgdGhlblxuICAgICAgICBTb21lIGlkXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIHByaW50X2NjIH5ub0NvdW50ZXJzIH5zaWdzOihFbnYuc2lnbmF0dXJlcyBlbnYpID9jY19pZCB+d2l0aF9pZCBmXG4gICAgICBlbnYuRW52LmRvbWFpbi4oaWQpLkVudi5jb250ZW50XG5cbmxldCBlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCB+ZGVidWdfbW9kZSBkb21haW4gYV9pZCBiID1cbiAgbGV0IGEgPSBkb21haW4uRW52LmRvbWFpbi4oYV9pZCkuRW52LmNvbnRlbnQgaW5cbiAgbWF0Y2ggZmluZF9yb290IGEgd2l0aFxuICB8IE5vbmUgLT4gWyBSZW5hbWluZy5lbXB0eSAoKSBdXG4gIHwgU29tZSAoaCwgdHkpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGFnIC0+XG4gICAgICAgIG1hdGNoIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5zdHJpY3Q6ZmFsc2UgaCBhIGFnIGIgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gYWNjXG4gICAgICAgIHwgU29tZSByLCBfIC0+IHIgOjogYWNjKVxuICAgICAgW10gYi5ub2Rlc19ieV90eXBlLih0eSlcblxudHlwZSBwcmVwb2ludCA9IHtcbiAgcF9pZDogaWQ7XG4gIGVsZW1lbnQ6IGNjO1xuICBkZXBlbmRpbmc6IE9wZXJhdG9yLkRlcFNldC50O1xuICByb290czogKGludCBsaXN0ICgqaWRzKikgKiBpbnQgKCp0eSopKSBvcHRpb247XG59XG5cbnR5cGUgd29yayA9IHtcbiAgc2lnczogU2lnbmF0dXJlLnM7XG4gIGNjX2VudjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gIHJlc2VydmVkX2lkOiBpbnQgbGlzdCBhcnJheTtcbiAgdXNlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIGZyZWVfaWQ6IGludDtcbiAgY2Nfbm9kZXM6IChsaW5rICogaW50KSBhcnJheSBNb2RzLkludE1hcC50O1xuICBkYW5nbGluZzogaW50OyAoKiBub2RlX2lkICopXG59XG5cbm1vZHVsZSBQcmVFbnYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBuYl9pZDogaW50O1xuICAgIGRvbWFpbjogcHJlcG9pbnQgbGlzdCBNb2RzLkludE1hcC50IE1vZHMuSW50TWFwLnQ7XG4gICAgbXV0YWJsZSB1c2VkX2J5X2FfYmVnaW5fbmV3OiBib29sO1xuICB9XG5cbiAgdHlwZSBzdGF0ID0geyBzdGF0X25vZGVzOiBpbnQ7IHN0YXRfbmF2X3N0ZXBzOiBpbnQgfVxuXG4gIGxldCBmcmVzaCBzaWdzIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluID1cbiAgICB7IHNpZ19kZWNsID0gc2lnczsgaWRfYnlfdHlwZTsgbmJfaWQ7IGRvbWFpbjsgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlIH1cblxuICBsZXQgZW1wdHkgc2lncyA9XG4gICAgbGV0IG5idCcgPSBBcnJheS5tYWtlIChTaWduYXR1cmUuc2l6ZSBzaWdzKSBbXSBpblxuICAgIGZyZXNoIHNpZ3MgbmJ0JyAxIE1vZHMuSW50TWFwLmVtcHR5XG5cbiAgbGV0IGNoZWNrX3ZpdGFsaXR5IGVudiA9IGFzc2VydCAoZW52LnVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSlcblxuICBsZXQgdG9fd29yayBlbnYgPVxuICAgIGxldCAoKSA9IGNoZWNrX3ZpdGFsaXR5IGVudiBpblxuICAgIGxldCAoKSA9IGVudi51c2VkX2J5X2FfYmVnaW5fbmV3IDwtIHRydWUgaW5cbiAgICB7XG4gICAgICBzaWdzID0gZW52LnNpZ19kZWNsO1xuICAgICAgY2NfZW52ID0gZW52LmRvbWFpbjtcbiAgICAgIHJlc2VydmVkX2lkID0gZW52LmlkX2J5X3R5cGU7XG4gICAgICB1c2VkX2lkID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5pZF9ieV90eXBlKSBbXTtcbiAgICAgIGZyZWVfaWQgPSBlbnYubmJfaWQ7XG4gICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgZGFuZ2xpbmcgPSAwO1xuICAgIH1cblxuICBsZXQgc2lncyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgZW1wdHlfcG9pbnQgc2lncyA9XG4gICAge1xuICAgICAgRW52LmNvbnRlbnQgPSBlbXB0eV9jYyBzaWdzO1xuICAgICAgRW52LnJvb3RzID0gTm9uZTtcbiAgICAgIEVudi5kZXBzID0gT3BlcmF0b3IuRGVwU2V0LmVtcHR5O1xuICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICB9XG5cbiAgbGV0IGZpbGxfZWxlbSBzaWdzIGJvdHRvbSA9XG4gICAgbGV0IGVsZW1lbnRhcmllcyA9XG4gICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuc2l6ZSBzaWdzKSAoZnVuIGkgLT5cbiAgICAgICAgICBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSBbXSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHAgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggcC5lbGVtZW50LnJlY29nbl9uYXYgd2l0aFxuICAgICAgICAgICAgICB8IFtdIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8ICgoTmF2aWdhdGlvbi5GcmVzaCBfLCBfKSwgXykgOjogXyA6OiBfIC0+ICgpXG4gICAgICAgICAgICAgIHwgWyAoKChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTEpLCBzMSksIGFycikgYXMgc3RlcCkgXSAtPlxuICAgICAgICAgICAgICAgIGxldCBzYTEgPSBlbGVtZW50YXJpZXMuKHR5MSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBzYTEuKHMxKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMxKSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBhcnIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKF8sIHR5MiksIHMyKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgdHkxID0gdHkyICYmIHMxIDw+IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgc2ExLihzMikgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMilcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc2EyID0gZWxlbWVudGFyaWVzLih0eTIpIGluXG4gICAgICAgICAgICAgICAgICAgIHNhMi4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMi4oczIpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgfCBOYXZpZ2F0aW9uLlRvTm90aGluZyB8IE5hdmlnYXRpb24uVG9JbnRlcm5hbCBfIC0+ICgpKSkpXG4gICAgICAgIGJvdHRvbVxuICAgIGluXG4gICAgZWxlbWVudGFyaWVzXG5cbiAgbGV0IHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IG5hdiA9XG4gICAgbGV0IHJlYyBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNvbWUgaW5qJ1xuICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLCBOYXZpZ2F0aW9uLlRvTm90aGluZykgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGlmIGZzdCBuLihzaSkgPSBGcmVlIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub0ludGVybmFsIGkpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBzbmQgbi4oc2kpID0gaSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZywgc2kpLFxuICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnJywgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gTGluayAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZycsIHNpJykgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoYWcnLCB0eScpLCBzaScpIClcbiAgICAgICAgOjogdCAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBhZylcbiAgICAgICAgICAgICBkc3Qubm9kZXNcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIChtYXRjaCBuLihzaSkgd2l0aFxuICAgICAgICAgIHwgTGluayAoYWdsLCBzaWwpLCBfIC0+XG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhZ2wgZHN0Lm5vZGVzX2J5X3R5cGUuKHR5JykgJiYgc2knID0gc2lsIHRoZW4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgYWcnIGFnbCBpbmonIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGluaicgLT4gYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICB8IChGcmVlIHwgVW5TcGVjKSwgXyAtPiBOb25lKSlcbiAgICBpblxuICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmoyZHN0IG5hdlxuXG4gIGxldCByZWMgaW5zZXJ0X25hdmlnYXRpb24gfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBkb21haW4gZHN0X2lkIGRzdFxuICAgICAgaW5qMmRzdCBwX2lkID1cbiAgICBpZiBwX2lkID0gZHN0X2lkIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb2ludCA9IGRvbWFpbi4ocF9pZCkgaW5cbiAgICAgIGxldCByZWMgaW5zZXJ0X25hdl9zb25zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCAoaW5qX2Uyc3VwLCBfKSwgc3VwID1cbiAgICAgICAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgaWRfYnlfdHlwZSBuYl9pZCBpbmoyZHN0XG4gICAgICAgICAgICAgIHBvaW50LkVudi5jb250ZW50IGRzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIHN1cCBkc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgaW5qX3N1cDJkc3QgLT5cbiAgICAgICAgICAgIGxldCBpbmpfZHN0MnAgPVxuICAgICAgICAgICAgICBSZW5hbWluZy5pbnZlcnNlXG4gICAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaW5qX2Uyc3VwIGlual9zdXAyZHN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuYXYgPVxuICAgICAgICAgICAgICBidWlsZF9uYXZpZ2F0aW9uX2JldHdlZW4gfmRlYnVnX21vZGUgaW5qX2RzdDJwIHBvaW50LkVudi5jb250ZW50XG4gICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9pbnQuRW52LnNvbnMgPC1cbiAgICAgICAgICAgICAgICB7IEVudi5kc3QgPSBkc3RfaWQ7IEVudi5pbmogPSBpbmpfZHN0MnA7IEVudi5uZXh0ID0gbmF2IH1cbiAgICAgICAgICAgICAgICA6OiBwb2ludC5FbnYuc29uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIExpc3QubGVuZ3RoIG5hdilcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAobWF0Y2ggcHJlc2VudF9pbl9kc3QgfmRlYnVnX21vZGUgZHN0IGluajJkc3QgaC5FbnYubmV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluc2VydF9uYXZfc29ucyB0XG4gICAgICAgICAgfCBTb21lIGlual9wJzJkc3QgLT5cbiAgICAgICAgICAgIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgICAgICAgICAgKFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2UgaC5FbnYuaW5qIGlual9wJzJkc3QpXG4gICAgICAgICAgICAgIGguRW52LmRzdClcbiAgICAgIGluXG4gICAgICBpbnNlcnRfbmF2X3NvbnMgcG9pbnQuRW52LnNvbnNcbiAgICApXG5cbiAgbGV0IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiBlbnYgcF9pZCBlbGVtZW50ID1cbiAgICBsZXQgdyA9IHdlaWdodCBlbGVtZW50IGluXG4gICAgbGV0IGhhc2ggPSBjb2Fyc2VfaGFzaCBlbGVtZW50IGluXG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcm9vdHMgPVxuICAgICAgICAgIGlmIHRvcGxldmVsIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAocmlkLCBydHkpIC0+XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgIHJ0eSApXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lXG4gICAgICAgIGluXG4gICAgICAgICggW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50O1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gYWRkX29yaWdpbiBPcGVyYXRvci5EZXBTZXQuZW1wdHkgb3JpZ2luO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIGlkZW50aXR5X2luamVjdGlvbiBlbGVtZW50LFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgcF9pZCApXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICAobWF0Y2ggZXF1YWwgfmRlYnVnX21vZGUgZWxlbWVudCBoLmVsZW1lbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgYSwgYiwgYywgZCA9IGF1eCB0IGluXG4gICAgICAgICAgaCA6OiBhLCBiLCBjLCBkXG4gICAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICAgIGlmIGgucm9vdHMgPD4gTm9uZSB8fCBub3QgdG9wbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBoLnJvb3RzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IGVsZW1lbnQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICggTGlzdC5zb3J0IE1vZHMuaW50X2NvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHIgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgciByaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGF1dG9tb3JwaGlzbXMgfmRlYnVnX21vZGUgZWxlbWVudCkpLFxuICAgICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIHBfaWQgPSBoLnBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBoLmVsZW1lbnQ7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gaC5kZXBlbmRpbmcgb3JpZ2luO1xuICAgICAgICAgICAgICByb290cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDo6IHQsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgaC5lbGVtZW50LFxuICAgICAgICAgICAgaC5wX2lkICkpXG4gICAgaW5cbiAgICBsZXQgZW52X3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBlbnYgaW5cbiAgICBsZXQgZW52X3dfaCwgciwgb3V0LCBvdXRfaWQgPVxuICAgICAgYXV4IChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBlbnZfdylcbiAgICBpblxuICAgIE1vZHMuSW50TWFwLmFkZCB3IChNb2RzLkludE1hcC5hZGQgaGFzaCBlbnZfd19oIGVudl93KSBlbnYsIHIsIG91dCwgb3V0X2lkXG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgaWYgbGV2ZWwgPCBtYXhfbCB0aGVuXG4gICAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgKHN1Y2MgbGV2ZWwpIGFjY1xuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBfIC0+IExpc3QucmV2X2FwcGVuZClcbiAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IChzdWNjIGxldmVsKSBkb21haW4pXG4gICAgICAgICAgICAgW10pXG4gICAgICBlbHNlXG4gICAgICAgIGFjY1xuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbmV3cyA9XG4gICAgICAgIG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgICB8IE5vX3NoYXJpbmcgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgTWF4X3NoYXJpbmcgLT4gaW5mcyBzaWdzIH5kZWJ1Z19tb2RlIHRoaXMuZWxlbWVudCBoLmVsZW1lbnRcbiAgICAgICAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAoZnVuIHIgLT4gaW50ZXJzZWN0aW9uIHIgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgICAgICAgIChtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyB0aGlzLmVsZW1lbnQgaC5lbGVtZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChtaWQsIGFjYykgY2MgLT5cbiAgICAgICAgICAgIGxldCBpZCcgPSBzdWNjIG1pZCBpblxuICAgICAgICAgICAgbGV0IHgsIF8sIF8sIGlkID0gYWRkX2NjIH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSBhY2MgaWQnIGNjIGluXG4gICAgICAgICAgICAoIChpZiBpZCA9IGlkJyB0aGVuXG4gICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIG1pZCksXG4gICAgICAgICAgICAgIHggKSlcbiAgICAgICAgICBhY2MgbmV3c1xuICAgICAgaW5cbiAgICAgIHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIHRoaXMgbWF4X2wgbGV2ZWwgYWNjJyB0XG5cbiAgbGV0IHJlYyBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIGxldmVsXG4gICAgICAoKF8sIGRvbWFpbikgYXMgYWNjKSA9XG4gICAgaWYgbGV2ZWwgPCAyIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gbGV2ZWwgZG9tYWluIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIG1heF9sIChwcmVkIGxldmVsKSBhY2NcbiAgICAgIHwgU29tZSBsaXN0IC0+XG4gICAgICAgIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIGF1eCAoc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgaCBtYXhfbCBsZXZlbCBhY2MgdCkgdFxuICAgICAgICBpblxuICAgICAgICBhdXggYWNjIChNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpIGxpc3QgW10pXG4gICAgKVxuXG4gIGxldCBzYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGRvbWFpbiA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBkb21haW4gd2l0aFxuICAgIHwgTm9uZSAtPiAwLCBkb21haW5cbiAgICB8IFNvbWUgbCAtPlxuICAgICAgbGV0IHNpID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gbCBtIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIHAgLT4gbWF4IG0gcC5wX2lkKSBtIGwpKVxuICAgICAgICAgIGRvbWFpbiAwXG4gICAgICBpblxuICAgICAgKG1hdGNoIHNoYXJpbmcgd2l0aFxuICAgICAgfCBOb19zaGFyaW5nIC0+IHNpLCBkb21haW5cbiAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyB8IE1heF9zaGFyaW5nIC0+XG4gICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbCBsIChzaSwgZG9tYWluKSlcblxuICBsZXQgb2ZfZW52IGVudiA9XG4gICAgbGV0IGFkZF9jYyBhY2MgcCA9XG4gICAgICBsZXQgdyA9IHdlaWdodCBwLmVsZW1lbnQgaW5cbiAgICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggcC5lbGVtZW50IGluXG4gICAgICBsZXQgYWNjX3cgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgdyBhY2MgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCB3XG4gICAgICAgIChNb2RzLkludE1hcC5hZGQgaGFzaFxuICAgICAgICAgICAocCA6OiBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaGFzaCBhY2NfdylcbiAgICAgICAgICAgYWNjX3cpXG4gICAgICAgIGFjY1xuICAgIGluXG4gICAgbGV0IGRvbWFpbicgPVxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAoZnVuIHBfaWQgYWNjIHAgLT5cbiAgICAgICAgICBhZGRfY2MgYWNjXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHBfaWQ7XG4gICAgICAgICAgICAgIGVsZW1lbnQgPSBwLkVudi5jb250ZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBwLkVudi5kZXBzO1xuICAgICAgICAgICAgICByb290cyA9IHAuRW52LnJvb3RzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgZW52LkVudi5kb21haW5cbiAgICBpblxuICAgIHtcbiAgICAgIHNpZ19kZWNsID0gZW52LkVudi5zaWdfZGVjbDtcbiAgICAgIG5iX2lkID0gc3VjYyAoQXJyYXkuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCBtYXgpIDAgZW52LkVudi5pZF9ieV90eXBlKTtcbiAgICAgIGlkX2J5X3R5cGUgPSBlbnYuRW52LmlkX2J5X3R5cGU7XG4gICAgICBkb21haW4gPSBkb21haW4nO1xuICAgICAgdXNlZF9ieV9hX2JlZ2luX25ldyA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgZGVidWdfcHJpbnQgZiBlbnYgPVxuICAgIFBwLmFycmF5IFBwLmNvbW1hXG4gICAgICAoZnVuIHR5IGYgbCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWQ6ICV0XCIgdHkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiW1wiO1xuICAgICAgICAgICAgUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiBhKSBmIGw7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXVwiKSlcbiAgICAgIGYgZW52LmlkX2J5X3R5cGU7XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInVzZWRfYnlfYV9iZWdpbl9uZXcgPSAlQkAuXCIgZW52LnVzZWRfYnlfYV9iZWdpbl9uZXdcbmVuZFxuXG4oKiogT3BlcmF0aW9uIHRvIGNyZWF0ZSBjYyAqKVxubGV0IGNoZWNrX2RhbmdsaW5nIHdrID1cbiAgaWYgd2suZGFuZ2xpbmcgPD4gMCB0aGVuXG4gICAgcmFpc2UgKGRhbmdsaW5nX25vZGUgfnNpZ3M6d2suc2lncyB3ay51c2VkX2lkIHdrLmRhbmdsaW5nKVxuXG5sZXQgYmVnaW5fbmV3IGVudiA9IFByZUVudi50b193b3JrIGVudlxuXG5sZXQgZnJlc2hfY2NfaWQgZG9tYWluID1cbiAgc3VjY1xuICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gbWF4IGFjYyBwLnBfaWQpIGFjYyB4KSlcbiAgICAgICBkb21haW4gMClcblxubGV0IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbCA/b3JpZ2luIHdrID1cbiAgbGV0ICgpID0gY2hlY2tfZGFuZ2xpbmcgd2sgaW5cbiAgKCogcmVidWlsZCBlbnYgKilcbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIHdrLnJlc2VydmVkX2lkLihpKSA8LSBMaXN0LnJldl9hcHBlbmQgd2sudXNlZF9pZC4oaSkgd2sucmVzZXJ2ZWRfaWQuKGkpKVxuICAgICAgKEFycmF5Lmxlbmd0aCB3ay51c2VkX2lkKVxuICBpblxuICBsZXQgbm9kZXNfYnlfdHlwZSA9IEFycmF5Lm1hcCBMaXN0LnJldiB3ay51c2VkX2lkIGluXG4gIGxldCBjY19jYW5kaWRhdGUgPVxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcyA9IHdrLmNjX25vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgd2suY2Nfbm9kZXM7XG4gICAgfVxuICBpblxuICBsZXQgcHJlZW52LCByLCBvdXQsIG91dF9pZCA9XG4gICAgUHJlRW52LmFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ay5jY19lbnZcbiAgICAgIChmcmVzaF9jY19pZCB3ay5jY19lbnYpIGNjX2NhbmRpZGF0ZVxuICBpblxuICBQcmVFbnYuZnJlc2ggd2suc2lncyB3ay5yZXNlcnZlZF9pZCB3ay5mcmVlX2lkIHByZWVudiwgciwgb3V0LCBvdXRfaWRcblxubGV0IGZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3ayA9XG4gIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDp0cnVlID9vcmlnaW4gd2tcblxubGV0IG5ld19saW5rIHdrICgoKHgsIF8pIGFzIG4xKSwgaSkgKCgoeSwgXykgYXMgbjIpLCBqKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCB5X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB5IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSksIHlfbi4oaikgd2l0aFxuICB8IChVblNwZWMsIHN0eCksIChVblNwZWMsIHN0eSkgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIExpbmsgKHksIGopLCBzdHggaW5cbiAgICBsZXQgKCkgPSB5X24uKGopIDwtIExpbmsgKHgsIGkpLCBzdHkgaW5cbiAgICBpZiB3ay5kYW5nbGluZyA9IHggfHwgd2suZGFuZ2xpbmcgPSB5IHRoZW5cbiAgICAgIHsgd2sgd2l0aCBkYW5nbGluZyA9IDAgfVxuICAgIGVsc2VcbiAgICAgIHdrXG4gIHwgKChGcmVlIHwgTGluayBfKSwgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjEgaSlcbiAgfCBfLCAoKEZyZWUgfCBMaW5rIF8pLCBfKSAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuMiBqKVxuXG5sZXQgbmV3X2ZyZWUgd2sgKCgoeCwgXykgYXMgbiksIGkpID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbWF0Y2ggeF9uLihpKSB3aXRoXG4gIHwgVW5TcGVjLCBzdCAtPlxuICAgIGxldCAoKSA9IHhfbi4oaSkgPC0gRnJlZSwgc3QgaW5cbiAgICB3a1xuICB8IChGcmVlIHwgTGluayBfKSwgXyAtPiByYWlzZSAoYWxyZWFkeV9zcGVjaWZpZWQgfnNpZ3M6d2suc2lncyBuIGkpXG5cbmxldCBuZXdfaW50ZXJuYWxfc3RhdGUgd2sgKCgoeCwgXykgYXMgbiksIGkpIHZhID1cbiAgbGV0IHhfbiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHggd2suY2Nfbm9kZXMgaW5cbiAgbGV0IGwsIHMgPSB4X24uKGkpIGluXG4gIGlmIHMgPj0gMCB0aGVuXG4gICAgcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuICBlbHNlIChcbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIGwsIHZhIGluXG4gICAgd2tcbiAgKVxuXG5sZXQgbmV3X25vZGUgd2sgdHlwZV9pZCA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSB3ay5zaWdzIHR5cGVfaWQgaW5cbiAgbWF0Y2ggd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIHdpdGhcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgKCkgPSB3ay51c2VkX2lkLih0eXBlX2lkKSA8LSBoIDo6IHdrLnVzZWRfaWQuKHR5cGVfaWQpIGluXG4gICAgbGV0ICgpID0gd2sucmVzZXJ2ZWRfaWQuKHR5cGVfaWQpIDwtIHQgaW5cbiAgICBsZXQgbm9kZSA9IGgsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gd2suZnJlZV9pZDtcbiAgICAgICAgZGFuZ2xpbmcgPVxuICAgICAgICAgIChpZiBNb2RzLkludE1hcC5pc19lbXB0eSB3ay5jY19ub2RlcyB0aGVuXG4gICAgICAgICAgICAgMFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgaCk7XG4gICAgICAgIGNjX25vZGVzID0gTW9kcy5JbnRNYXAuYWRkIGggKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuICB8IFtdIC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gd2suZnJlZV9pZCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCBub2RlID0gd2suZnJlZV9pZCwgdHlwZV9pZCBpblxuICAgICggbm9kZSxcbiAgICAgIHtcbiAgICAgICAgc2lncyA9IHdrLnNpZ3M7XG4gICAgICAgIGNjX2VudiA9IHdrLmNjX2VudjtcbiAgICAgICAgcmVzZXJ2ZWRfaWQgPSB3ay5yZXNlcnZlZF9pZDtcbiAgICAgICAgdXNlZF9pZCA9IHdrLnVzZWRfaWQ7XG4gICAgICAgIGZyZWVfaWQgPSBzdWNjIHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHdrLmZyZWVfaWQpO1xuICAgICAgICBjY19ub2RlcyA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHdrLmZyZWVfaWQgKEFycmF5Lm1ha2UgYXJpdHkgKFVuU3BlYywgLTEpKSB3ay5jY19ub2RlcztcbiAgICAgIH0gKVxuXG5sZXQgbWluaW1hbF9lbnYgfmRlYnVnX21vZGUgZW52IGNvbnRhY3RfbWFwID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gdHkgLT5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBzIGFjYyAoaW50cywgbGlua3MpIC0+XG4gICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgbGV0IHcgPSBuZXdfZnJlZSB3IChuLCBzKSBpblxuICAgICAgICAgIGxldCBhY2MnLCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICBsZXQgYWNjJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IHcgPSBiZWdpbl9uZXcgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfaW50ZXJuYWxfc3RhdGUgdyAobiwgcykgaSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQsIF8sIF8sIF8gPVxuICAgICAgICAgICAgICAgICAgcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHdcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgICAgaW50cyBhY2MnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgICAgKGZ1biAodHknLCBzJykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgbGV0IG4nLCB3ID0gbmV3X25vZGUgdyB0eScgaW5cbiAgICAgICAgICAgICAgbGV0IHcgPSBuZXdfbGluayB3IChuLCBzKSAobicsIHMnKSBpblxuICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID0gcmF3X2ZpbmlzaF9uZXcgfmRlYnVnX21vZGUgfnRvcGxldmVsOmZhbHNlIHcgaW5cbiAgICAgICAgICAgICAgaWYgdHkgPSB0eScgJiYgcyA8IHMnIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IG91dCBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4sIHMnKSBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQnLCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQnXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIG91dClcbiAgICAgICAgICAgIGxpbmtzIGFjYycnKSlcbiAgICBlbnYgY29udGFjdF9tYXBcblxubGV0IGZvbGRfYnlfdHlwZSBmIGNjIGFjYyA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGFnZW50X3R5cGUgYWNjIGxpc3RfcG9zIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyBwb3MgLT5cbiAgICAgICAgICBsZXQgaW50ZiA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHBvcyBjYy5ub2RlcyBpblxuICAgICAgICAgIGYgfnBvcyB+YWdlbnRfdHlwZSBpbnRmIGFjYylcbiAgICAgICAgYWNjIGxpc3RfcG9zKVxuICAgIGFjYyBjYy5ub2Rlc19ieV90eXBlXG5cbmxldCBmb2xkIGYgY2MgYWNjID0gTW9kcy5JbnRNYXAuZm9sZCBmIGNjLm5vZGVzIGFjY1xuXG5sZXQgZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgZW52IGNvbnRhY3RfbWFwID1cbiAgbGV0IHNpZ3MgPSBQcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IGVudiA9IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCBpblxuICBsZXQgc2ksIGNvbXBsZXRlX2RvbWFpbiA9XG4gICAgUHJlRW52LnNhdHVyYXRlIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgZW52LlByZUVudi5kb21haW5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IEFycmF5Lm1ha2UgKHN1Y2Mgc2kpIChQcmVFbnYuZW1wdHlfcG9pbnQgZW52LlByZUVudi5zaWdfZGVjbCkgaW5cbiAgbGV0IHNpbmdsZXMgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMSBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IGVsZW1lbnRhcmllcyA9IFByZUVudi5maWxsX2VsZW0gZW52LlByZUVudi5zaWdfZGVjbCBzaW5nbGVzIGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgKGZ1biBfIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSB4LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgc2luZ2xlc1xuICBpblxuICBsZXQgc3RhdF9uYXZfc3RlcHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbGV2ZWwgZG9tYWluX2xldmVsIGFjY19sZXZlbCAtPlxuICAgICAgICBpZiBsZXZlbCA8PSAxIHRoZW5cbiAgICAgICAgICBhY2NfbGV2ZWxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gXyBsIGFjYyAtPlxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gYWNjIHggLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbi4oeC5wX2lkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LnNvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHgucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHguZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIChmdW4gXyBsbCBhY2NsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ3MgfmRlYnVnX21vZGUgc2lncyBlLmVsZW1lbnQgeC5lbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmpzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIGlual9lX3ggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlRW52Lmluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgZG9tYWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wX2lkIHguZWxlbWVudCBpbmpfZV94IGUucF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBpbmpzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjbCBsbClcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlcyBhY2MpXG4gICAgICAgICAgICAgICAgYWNjIGwpXG4gICAgICAgICAgICBkb21haW5fbGV2ZWwgYWNjX2xldmVsKVxuICAgICAgY29tcGxldGVfZG9tYWluIDBcbiAgaW5cbiAgbGV0IGxldmVsMCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAwIGNvbXBsZXRlX2RvbWFpbiBpblxuICBsZXQgc2luZ2xlX2FnZW50X3BvaW50cyA9XG4gICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGVudi5QcmVFbnYuaWRfYnlfdHlwZSkgTm9uZVxuICBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICBtYXRjaCBmaW5kX3Jvb3QgcC5lbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChfLCB0eSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBkb21haW4uKHAucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgRW52LmNvbnRlbnQgPSBwLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIEVudi5yb290cyA9IHAucm9vdHM7XG4gICAgICAgICAgICAgICAgICAgIEVudi5kZXBzID0gcC5kZXBlbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNpbmdsZV9hZ2VudF9wb2ludHMuKHR5KSA8LSBTb21lIChwLnBfaWQsIHAuZGVwZW5kaW5nKSkpXG4gICAgICBsZXZlbDBcbiAgaW5cbiAgKCB7XG4gICAgICBFbnYuc2lnX2RlY2wgPSBlbnYuUHJlRW52LnNpZ19kZWNsO1xuICAgICAgRW52LmlkX2J5X3R5cGUgPSBlbnYuUHJlRW52LmlkX2J5X3R5cGU7XG4gICAgICBFbnYubWF4X29icyA9IGZyZXNoX2NjX2lkIGVudi5QcmVFbnYuZG9tYWluO1xuICAgICAgRW52LmRvbWFpbjtcbiAgICAgIEVudi5lbGVtZW50YXJpZXM7XG4gICAgICBFbnYuc2luZ2xlX2FnZW50X3BvaW50cztcbiAgICB9LFxuICAgIHsgc3RhdF9ub2RlcyA9IHNpOyBQcmVFbnYuc3RhdF9uYXZfc3RlcHMgfSApXG5cbmxldCBtZXJnZV9vbl9pbmYgfmRlYnVnX21vZGUgZW52IG0gZzEgZzIgPVxuICBsZXQgbV9saXN0ID0gUmVuYW1pbmcudG9fbGlzdCBtIGluXG4gIGxldCByb290MSwgcm9vdDIgPSBMaXN0LmhkIG1fbGlzdCBpblxuICBsZXQgcGFpcmluZyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBiKSAtPiBNb2RzLkludDJTZXQuYWRkIChhLCBiKSBhY2MpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgbV9saXN0XG4gIGluXG4gIGxldCBwb3NzaWJpbGl0aWVzID0gcmVmIHBhaXJpbmcgaW5cbiAgbWF0Y2hcbiAgICBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+cG9zc2liaWxpdGllcyB+c3RyaWN0OmZhbHNlIHJvb3QxIGcxIHJvb3QyIGcyXG4gIHdpdGhcbiAgfCBTb21lIG0nLCBfIC0+XG4gICAgbGV0IF8sIHB1c2hvdXQgPVxuICAgICAgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSBlbnYuUHJlRW52LmlkX2J5X3R5cGUgZW52LlByZUVudi5uYl9pZCBtJyBnMVxuICAgICAgICBnMlxuICAgIGluXG4gICAgU29tZSBwdXNob3V0LCBOb25lXG4gIHwgTm9uZSwgY29uZmxpY3QgLT4gTm9uZSwgY29uZmxpY3RcblxubGV0IGxlbmd0aCBjYyA9IE1vZHMuSW50TWFwLnNpemUgY2Mubm9kZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IFJlbmFtaW5nLnQgTW9kcy5JbnRNYXAudCAqIE1vZHMuSW50U2V0LnRcbigqIChtYXAsc2V0KVxuICAgbWFwOiBwb2ludF9pIC0+IChub2RlX2ooaSkgLT4gaWRfbm9kZV9ncmFwaF9pbl9jdXJyZW50X21hdGNoaW5nKVxuICAgc2V0OmNvZG9tYWluIG9mIGN1cnJlbnQgbWF0Y2hpbmcgKilcblxudHlwZSBtYXRjaGluZyA9IHRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50U2V0LmVtcHR5XG5cbmxldCBhZGRfY2MgKGluaiwgY28pIGlkIHIgPVxuICBsZXQgYyA9IFJlbmFtaW5nLmltYWdlIHIgaW5cbiAgbWF0Y2ggTW9kcy5JbnRTZXQuZGlzam9pbnRfdW5pb24gY28gYyB3aXRoXG4gIHwgU29tZSBjbycgLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHIgaW5qLCBjbycpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBkZWJ1Z19wcmludCBmIChtLCBfY28pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmNvbW1hIChmdW4gZiAoY2NpZCwgbm0pIC0+XG4gICAgICAgICBQcC5zZXQgUmVuYW1pbmcudG9fbGlzdCBQcC5jb21tYVxuICAgICAgICAgICAoZnVuIGYgKG5vZGUsIGRzdCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVpLT4laVwiIGNjaWQgbm9kZSBkc3QpXG4gICAgICAgICAgIGYgbm0pKVxuICAgIG1cblxubGV0IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290ID1cbiAgbGV0IHBvaW50ID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY19pZCBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5yb290cyBwb2ludCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk1hdGNoaW5nLnJlY29uc3RydWN0IGNjIGVycm9yXCJcbiAgKCotIHJtIC0gYWRkIDogaW50IC0+IGludCAtPiBSZW5hbWluZy50IC0+IFJlbmFtaW5nLnQgKilcbiAgfCBTb21lIChyaWRzLCBydHkpIC0+XG4gICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgbGV0IF8sIGluamVjdGl2ZSA9XG4gICAgICBtYXRjaCBQYXR0ZXJuLnJlY29uc3RydWN0aW9uX25hdmlnYXRpb24gKFBhdHRlcm4uRW52LmNvbnRlbnQgcG9pbnQpIHdpdGhcbiAgICAgIHwgXyA6OiBfIGFzIG5hdiAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKHJvb3QsIGluamVjdGl2ZSkgbmF2IC0+XG4gICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgIGluamVjdGl2ZVxuICAgICAgICAgICAgICAmJiBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGhcbiAgICAgICAgICAgICAgICAgICBuYXYgKSlcbiAgICAgICAgICAoU29tZSAocm9vdCwgcnR5KSwgdHJ1ZSlcbiAgICAgICAgICBuYXZcbiAgICAgICgqLSBybSAtIGZpbmRfcm9vdDogY2MgLT4gKHR5cGUsIG5vZGUpIG9wdGlvbiAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgKG1hdGNoIHJpZHMgd2l0aFxuICAgICAgICAgIHwgWyByaWQgXSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSByaWQgcm9vdCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpIClcbiAgICBpblxuICAgIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgICBpbmpcbiAgICBlbHNlXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJNYXRjaGluZy5yZWNvbnN0cnVjdCByZW5hbWluZyBlcnJvciBhdCByb290IFwiIF4gc3RyaW5nX29mX2ludCByb290KVxuXG4oKiByZWNvbnN0cnVjdDogUGF0dGVybi5FbnYudCAtPiBFZGdlcy50IC0+IHQgLT4gaW50IC0+IFBhdHRlcm4uaWQgLT5cbiAgIGludCAtPiB0IG9wdGlvbiopXG5sZXQgcmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiBpZCBjY19pZCByb290ID1cbiAgbGV0IHJlbmFtZSA9IHJlY29uc3RydWN0X3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjY19pZCByb290IGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIChSZW5hbWluZy5pbWFnZSByZW5hbWUpIChzbmQgaW5qKSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBjbyAtPiBTb21lIChNb2RzLkludE1hcC5hZGQgaWQgcmVuYW1lIChmc3QgaW5qKSwgY28pXG5cbmxldCByZWMgYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggcm9vdCBpbmogPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBoIDo6IHQgLT5cbiAgICBOYXZpZ2F0aW9uLmltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggaFxuICAgICYmIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIE5vbmUgaW5qIHRcblxubGV0IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgoXywgcnR5KSBhcyByb290KSBjY19pZCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgIHwgU29tZSAoXywgcnR5JykgLT4gcnR5ID0gcnR5J1xuICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgfCBuYXYgLT4gYXV4X2lzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZ3JhcGggKFNvbWUgcm9vdCkgKFJlbmFtaW5nLmVtcHR5ICgpKSBuYXZcblxubGV0IHJvb3RzX29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBjYyA9XG4gIEVkZ2VzLmFsbF9hZ2VudHNfd2hlcmVcbiAgICAoZnVuIHggLT4gaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggeCBjYylcbiAgICBncmFwaFxuXG4oKiBnZXQgOiAoQ29udGVudEFnZW50LnQgKiBpbnQpIC0+IHQgLT4gaW50ICopXG5sZXQgZ2V0IH5kZWJ1Z19tb2RlICgobm9kZSwgXyksIGlkKSAodCwgXykgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFJlbmFtaW5nLmR1bW15IGlkIHQpIG5vZGVcblxubGV0IGVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIGNjcyAodCwgXykgPVxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoTW9kcy5JbnRNYXAuc2l6ZSB0KSBbXSBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gaWQgbWFwIC0+XG4gICAgICAgIG91dC4oaWQpIDwtXG4gICAgICAgICAgUmVuYW1pbmcuZm9sZFxuICAgICAgICAgICAgKGZ1biBpIG91dCBhY2MgLT5cbiAgICAgICAgICAgICAgKCBvdXQsXG4gICAgICAgICAgICAgICAgUGF0dGVybi5maW5kX3R5XG4gICAgICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjY3MuKGlkKSkpXG4gICAgICAgICAgICAgICAgICBpIClcbiAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgbWFwIFtdKVxuICAgICAgdFxuICBpblxuICBvdXRcblxubW9kdWxlIENhY2hlID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhdHRlcm4uaWQgKiAoaW50ICogaW50KSBvcHRpb25cblxuICBsZXQgY29tcGFyZSAoYSwgYScpIChiLCBiJykgPVxuICAgIGxldCBjID0gUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgYSBiIGluXG4gICAgaWYgYyA9IDAgdGhlbiAoXG4gICAgICBtYXRjaCBhJywgYicgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICAgIHwgTm9uZSwgU29tZSBfIC0+IDFcbiAgICAgIHwgU29tZSBfLCBOb25lIC0+IC0xXG4gICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IE1vZHMuaW50X3BhaXJfY29tcGFyZSB4IHlcbiAgICApIGVsc2VcbiAgICAgIGNcblxuICBsZXQgcHJpbnQgZiAoYSwgYScpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVyczp0cnVlID9kb21haW46Tm9uZSB+d2l0aF9pZDp0cnVlKVxuICAgICAgYVxuICAgICAgKFBwLm9wdGlvbiAoUHAucGFpciBGb3JtYXQucHBfcHJpbnRfaW50IEZvcm1hdC5wcF9wcmludF9pbnQpKVxuICAgICAgYSdcbmVuZFxuXG5tb2R1bGUgQ2FjaGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoQ2FjaGUpXG5cbnR5cGUgY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQudFxuXG5sZXQgZW1wdHlfY2FjaGUgPSBDYWNoZVNldE1hcC5TZXQuZW1wdHlcblxubGV0IHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGluaiBncmFwaCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBpbmogc3RlcCAtPlxuICAgICAgbWF0Y2ggaW5qIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbmpcbiAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgTmF2aWdhdGlvbi5pbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHN0ZXApXG4gICAgKFNvbWUgaW5qKVxuXG4oKmVkZ2VzOiBsaXN0IG9mIGNvbmNyZXRlIGVkZ2VzLFxuICAgIHJldHVybnMgdGhlIHJvb3RzIG9mIG9ic2VydmFibGVzIHRoYXQgYXJlIGFib3ZlIGluIHRoZSBkb21haW4qKVxubGV0IGZyb21fZWRnZSB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggKChvdXQsIGNhY2hlKSBhcyBhY2MpIG5vZGUgc2l0ZSBhcnJvdyA9XG4gIGxldCByZWMgYXV4X2Zyb21fZWRnZXMgY2FjaGUgKChvYnMsIHJldl9kZXBzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjYywgY2FjaGVcbiAgICB8IChwaWQsIHBvaW50LCBpbmpfcG9pbnQyZ3JhcGgpIDo6IHJlbWFpbnMgLT5cbiAgICAgIGxldCBhY2MnID1cbiAgICAgICAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoaWRzLCB0eSkgLT5cbiAgICAgICAgICAoIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIGlkIC0+XG4gICAgICAgICAgICAgICAgKHBpZCwgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBpZCwgdHkpKVxuICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgb2JzIGlkcyxcbiAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZXZfZGVwcyAoUGF0dGVybi5FbnYuZGVwcyBwb2ludCkgKVxuICAgICAgaW5cbiAgICAgIGxldCByZW1haW5zJywgY2FjaGUnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgocmUsIGNhKSBhcyBwYWlyKSBzb24gLT5cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHN1cnZpdmVfbmF2IH5kZWJ1Z19tb2RlIGlual9wb2ludDJncmFwaCBncmFwaCBzb24uUGF0dGVybi5FbnYubmV4dFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBhaXJcbiAgICAgICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgICAgIGxldCByZW5hbWUgPVxuICAgICAgICAgICAgICAgIFJlbmFtaW5nLmNvbXBvc2UgfmRlYnVnX21vZGUgZmFsc2Ugc29uLlBhdHRlcm4uRW52LmluaiBpbmonXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjYScgPVxuICAgICAgICAgICAgICAgIENhY2hlU2V0TWFwLlNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChzb24uUGF0dGVybi5FbnYuZHN0LCBSZW5hbWluZy5taW5fZWx0IHJlbmFtZSlcbiAgICAgICAgICAgICAgICAgIGNhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGNhID09IGNhJyB0aGVuXG4gICAgICAgICAgICAgICAgcGFpclxuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcCcgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIHNvbi5QYXR0ZXJuLkVudi5kc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHNvbi5QYXR0ZXJuLkVudi5kc3QsIHAnLCByZW5hbWUgaW5cbiAgICAgICAgICAgICAgICBuZXh0IDo6IHJlLCBjYSdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAocmVtYWlucywgY2FjaGUpIChQYXR0ZXJuLkVudi5zb25zIHBvaW50KVxuICAgICAgaW5cbiAgICAgIGF1eF9mcm9tX2VkZ2VzIGNhY2hlJyBhY2MnIHJlbWFpbnMnXG4gIGluXG4gIG1hdGNoIFBhdHRlcm4uRW52LmdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiBub2RlIHNpdGUgYXJyb3cgd2l0aFxuICB8IE5vbmUgLT4gYWNjXG4gIHwgU29tZSB4IC0+XG4gICAgYXV4X2Zyb21fZWRnZXNcbiAgICAgICgqKCp1bm5lY2Vzc2FyeSopQ2FjaGVTZXRNYXAuU2V0LmFkZCAoY2NfaWQsUmVuYW1pbmcubWluX2VsdCBpbmonKSopXG4gICAgICBjYWNoZSBvdXQgWyB4IF1cblxubGV0IG9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGdyYXBoICgoKG9icywgcmRlcHMpLCBjYWNoZSkgYXMgYWNjKVxuICAgICgoXywgdHkpIGFzIG5vZGUpID1cbiAgaWYgRWRnZXMuaXNfYWdlbnQgbm9kZSBncmFwaCB0aGVuIChcbiAgICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfc2luZ2xlX2FnZW50IHR5IGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChjYywgZGVwcykgLT5cbiAgICAgICgoY2MsIG5vZGUpIDo6IG9icywgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMpLCBjYWNoZVxuICAgIHwgTm9uZSAtPiBhY2NcbiAgKSBlbHNlXG4gICAgYWNjXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgTmF2aWdhdGlvbi5Ub05vdGhpbmdcblxubGV0IG9ic2VydmFibGVzX2Zyb21faW50ZXJuYWwgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgaWQgPVxuICBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBub2RlIHNpdGUgKE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpZClcblxubGV0IG9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggYWNjIG4gc2l0ZSBuJyBzaXRlJyA9XG4gIGZyb21fZWRnZSBkb21haW4gfmRlYnVnX21vZGUgZ3JhcGggYWNjIG4gc2l0ZVxuICAgIChOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCBuJywgc2l0ZScpKVxuXG5tb2R1bGUgQWdlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRXhpc3Rpbmcgb2YgQWdlbnQudCAqIGludCB8IEZyZXNoIG9mIGludCAqIGludCAoKiB0eXBlLCBpZCAqKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCcpIGFzIHggLT5cbiAgICAgIGlmIGlkIDw+IGlkJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbicgPSBBZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaW5qIG4gaW5cbiAgICAgICAgaWYgbiA9PSBuJyB0aGVuXG4gICAgICAgICAgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgRXhpc3RpbmcgKG4nLCBpZCcpXG4gICAgICApXG4gICAgfCBGcmVzaCBfIGFzIHggLT4geFxuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBpZCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS8qJWkqL1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBuIGlkXG4gICAgfCBGcmVzaCAodHksIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiV0ICVpKi9cIlxuICAgICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50XG4gICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICB0eSBQcC5udSBpXG5cbiAgbGV0IHByaW50X3NpdGUgP3NpZ3MgcGxhY2UgZiBzaXRlID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBuIGYgc2l0ZVxuICAgIHwgRnJlc2ggKHR5LCBfKSAtPlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBzaXRlXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5IGYgc2l0ZSlcblxuICBsZXQgcHJpbnRfaW50ZXJuYWwgP3NpZ3MgcGxhY2Ugc2l0ZSBmIGlkID1cbiAgICBtYXRjaCBwbGFjZSB3aXRoXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgbiBzaXRlIGYgaWRcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWl+JWlcIiBzaXRlIGlkXG4gICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHNpdGUgZiAoU29tZSBpZCkpXG5cbiAgbGV0IGdldF90eXBlID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCBfKSAtPiBBZ2VudC5zb3J0IG5cbiAgICB8IEZyZXNoIChpLCBfKSAtPiBpXG5cbiAgbGV0IGdldF9pZCA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuaWQgblxuICAgIHwgRnJlc2ggKF8sIGkpIC0+IGlcblxuICBsZXQgaXNfZnJlc2ggPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgXyAtPiBmYWxzZVxuICAgIHwgRnJlc2ggXyAtPiB0cnVlXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+IGdldCB+ZGVidWdfbW9kZSAobiwgaWQpIGlual9ub2RlcywgQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAodHksIGlkKSAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGlual9mcmVzaCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiB4LCB0eVxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIChuLCB0eSkgLT5cbiAgICAgIChgQXNzb2NcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcIkV4aXN0aW5nXCIsXG4gICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJhZ2VudFwiLCBBZ2VudC50b19qc29uIG4gXTsgYEFzc29jIFsgXCJ0eXBlXCIsIGBJbnQgdHkgXTtcbiAgICAgICAgICAgICAgIF0gKTtcbiAgICAgICAgIF1cbiAgICAgICAgOiBZb2pzb24uQmFzaWMudClcbiAgICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZXNoXCIsIGBBc3NvYyBbIFwiaWRcIiwgYEludCBpZDsgXCJ0eXBlXCIsIGBJbnQgdHkgXSBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJFeGlzdGluZ1wiLCBgTGlzdCBsaXN0KSBdIC0+XG4gICAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFsgYEFzc29jIFsgKFwiYWdlbnRcIiwgYSkgXTsgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHR5KSBdIF0gLT5cbiAgICAgICAgRXhpc3RpbmcgKEFnZW50Lm9mX2pzb24gYSwgdHkpXG4gICAgICB8IHggOjogXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuICAgICAgfCBbXSAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIGBOdWxsKSkpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVzaFwiLCBhKSBdIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJ0eXBlXCIsIGBJbnQgdHkpIF0gLT4gRnJlc2ggKGlkLCB0eSlcbiAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKSlcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9uYW1lID0gaW50XG50eXBlIHNpdGVfbmFtZSA9IGludFxudHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxudHlwZSBiaW5kaW5nX3R5cGUgPSBhZ2VudF9uYW1lICogc2l0ZV9uYW1lXG50eXBlIGFic3RyYWN0ID0gTWF0Y2hpbmcuQWdlbnQudFxudHlwZSBjb25jcmV0ZSA9IEFnZW50LnRcbnR5cGUgJ2Egc2l0ZSA9ICdhICogc2l0ZV9uYW1lXG5cbnR5cGUgJ2EgdGVzdCA9XG4gIHwgSXNfSGVyZSBvZiAnYVxuICB8IEhhc19JbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBJc19GcmVlIG9mICdhIHNpdGVcbiAgfCBJc19Cb3VuZCBvZiAnYSBzaXRlXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSBvZiAnYSBzaXRlICogYmluZGluZ190eXBlXG4gIHwgSXNfQm91bmRfdG8gb2YgJ2Egc2l0ZSAqICdhIHNpdGVcblxudHlwZSAnYSBhY3Rpb24gPVxuICB8IENyZWF0ZSBvZiAnYSAqIChzaXRlX25hbWUgKiBpbnRlcm5hbF9zdGF0ZSBvcHRpb24pIGxpc3QgKCogcG91cnF1b2kgw6dhICopXG4gIHwgTW9kX2ludGVybmFsIG9mICdhIHNpdGUgKiBpbnRlcm5hbF9zdGF0ZVxuICB8IEJpbmQgb2YgJ2Egc2l0ZSAqICdhIHNpdGVcbiAgfCBCaW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgRnJlZSBvZiAnYSBzaXRlXG4gIHwgUmVtb3ZlIG9mICdhXG5cbigqIFRoZSBzZW1hbnRpY3Mgb2YgY29uY3JldGUgYWN0aW9ucyBzZWVtcyB0byBiZSB0aGUgZm9sbG93aW5nIG9uZS5cblxuICAgLSBXaGVuIGFuIGFnZW50IGlzIHJlbW92ZWQsIG5vIG90aGVyIGFjdGlvbiBpcyBzdG9yZWQgYWJvdXQgaXQgKGluY2x1ZGluZyBib25kIHJlbGVhc2luZykuXG4gICAtIENyZWF0ZWQgYWdlbnRzIGFyZSBjcmVhdGVkIHdpdGhvdXQgZGVmYXVsdCBiaW5kaW5nL2ludGVybmFsIHN0YXRlcy5cbiAgIC0gQm9uZHMgYXJlIGluc2VydGVkIHRoYW5rcyB0byB0d28gc3ltbWV0cmljIGFjdGlvbnMgKEJpbmRfdG8gLi4uKSAqKVxuXG5sZXQgd2VpZ2h0IGFjdGlvbiA9XG4gIG1hdGNoIGFjdGlvbiB3aXRoXG4gIHwgQ3JlYXRlIF8gLT4gMVxuICB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IDJcbiAgfCBSZW1vdmUgXyAtPiAwXG5cbmxldCB3ZWlnaHRfcmV2ZXJzZSBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAwXG4gIHwgUmVtb3ZlIF8gLT4gMlxuXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0ID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHQgMlxubGV0IHNvcnRfYWJzdHJhY3RfYWN0aW9uX2xpc3RfcmV2ZXJzZSA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0X3JldmVyc2UgMlxuXG50eXBlICdhIGJpbmRpbmdfc3RhdGUgPVxuICB8IEFOWVxuICB8IEZSRUVcbiAgfCBCT1VORFxuICB8IEJPVU5EX1RZUEUgb2YgYmluZGluZ190eXBlXG4gIHwgQk9VTkRfdG8gb2YgJ2Egc2l0ZVxuXG50eXBlICdhIGV2ZW50ID0ge1xuICB0ZXN0czogJ2EgdGVzdCBsaXN0IGxpc3Q7XG4gIGFjdGlvbnM6ICdhIGFjdGlvbiBsaXN0O1xuICBzaWRlX2VmZmVjdHNfc3JjOiAoJ2Egc2l0ZSAqICdhIGJpbmRpbmdfc3RhdGUpIGxpc3Q7XG4gIHNpZGVfZWZmZWN0c19kc3Q6ICdhIHNpdGUgbGlzdDtcbiAgY29ubmVjdGl2aXR5X3Rlc3RzOiAnYSB0ZXN0IGxpc3Q7XG59XG5cbmxldCBlbXB0eV9ldmVudCA9XG4gIHtcbiAgICB0ZXN0cyA9IFtdO1xuICAgIGFjdGlvbnMgPSBbXTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID0gW107XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IFtdO1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IFtdO1xuICB9XG5cbmxldCBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gQU5ZXG4gIHwgRlJFRSAtPiBGUkVFXG4gIHwgQk9VTkQgLT4gQk9VTkRcbiAgfCBCT1VORF9UWVBFIGJ0IC0+IEJPVU5EX1RZUEUgYnRcbiAgfCBCT1VORF90byAocGwsIHMpIC0+XG4gICAgQk9VTkRfdG8gKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuXG5sZXQgY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBwbCAtPiBJc19IZXJlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcbiAgfCBIYXNfSW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgSGFzX0ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IElzX0ZyZWUgKHBsLCBzKSAtPlxuICAgIElzX0ZyZWUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IElzX0JvdW5kIChwbCwgcykgLT5cbiAgICBJc19Cb3VuZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKHBsLCBzKSwgdCkgLT5cbiAgICBIYXNfQmluZGluZ190eXBlICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCB0KVxuICB8IElzX0JvdW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgSXNfQm91bmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcblxubGV0IGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChwbCwgaSkgLT5cbiAgICBDcmVhdGUgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBpKVxuICB8IE1vZF9pbnRlcm5hbCAoKHBsLCBzKSwgaSkgLT5cbiAgICBNb2RfaW50ZXJuYWwgKChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksIGkpXG4gIHwgQmluZCAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRcbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBCaW5kX3RvICgocGwsIHMpLCAocGwnLCBzJykpIC0+XG4gICAgQmluZF90b1xuICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwnLCBzJykgKVxuICB8IEZyZWUgKHBsLCBzKSAtPiBGcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBSZW1vdmUgcGwgLT4gUmVtb3ZlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbClcblxubGV0IHRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucyA9XG4gIHRyeSBTb21lIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYWN0aW9ucylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuKCogVGhlIGFjdGlvbiBpcyBkZWFsaW5nIHdpdGggYSBmcmVzaCBhZ2VudCAqKVxuXG5sZXQgY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0Lm1hcCAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGUgaW5qMmdyYXBoKSkgZS50ZXN0cztcbiAgICBhY3Rpb25zID1cbiAgICAgICgqIGFjdGlvbnMgYXJlIHJlb3JkZXJlZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgICAgIDEpIFJlbW92ZSBhY3Rpb25zXG4gICAgICAgICAyKSBDcmVhdGlvbiBhY3Rpb25zXG4gICAgICAgICAzKSBBbnl0aGluZyBlbHNlLiopXG4gICAgICBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0XG4gICAgICAgIChMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5hY3Rpb25zKTtcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgocGwsIHMpLCBiKSAtPlxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgICAgIGNvbmNyZXRpemVfYmluZGluZ19zdGF0ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggYiApKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAocGwsIHMpIC0+IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICAgICAgICBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IG1hcF90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYVxuICB8IEhhc19JbnRlcm5hbCAoKGEsIF8pLCBfKVxuICB8IElzX0ZyZWUgKGEsIF8pXG4gIHwgSXNfQm91bmQgKGEsIF8pXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIF8pLCBfKVxuICB8IElzX0JvdW5kX3RvICgoYSwgXyksIF8pIC0+XG4gICAgZiBhXG5cbmxldCBtYXBfYWN0aW9uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYSwgXylcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBCaW5kICgoYSwgXyksIF8pXG4gIHwgQmluZF90byAoKGEsIF8pLCBfKVxuICB8IEZyZWUgKGEsIF8pXG4gIHwgUmVtb3ZlIGEgLT5cbiAgICBmIGFcblxubGV0IG1hdGNoX3Rlc3RzID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBJc19IZXJlIGEsIElzX0hlcmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgSGFzX0ludGVybmFsICgoYSwgcyksIGkpLCBIYXNfSW50ZXJuYWwgKChiLCB0KSwgaikgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGkgPSBqXG4gIHwgSGFzX0JpbmRpbmdfdHlwZSAoKGEsIHMpLCBjKSwgSGFzX0JpbmRpbmdfdHlwZSAoKGIsIHQpLCBkKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgYyA9IGRcbiAgfCBJc19GcmVlIChhLCBzKSwgSXNfRnJlZSAoYiwgdCkgfCBJc19Cb3VuZCAoYSwgcyksIElzX0JvdW5kIChiLCB0KSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHRcbiAgfCBJc19Cb3VuZF90byAoKGEsIHMpLCAoYywgdSkpLCBJc19Cb3VuZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgSXNfSGVyZSBfLCBfXG4gIHwgSGFzX0ludGVybmFsIF8sIF9cbiAgfCBJc19GcmVlIF8sIF9cbiAgfCBJc19Cb3VuZCBfLCBfXG4gIHwgSXNfQm91bmRfdG8gXywgX1xuICB8IEhhc19CaW5kaW5nX3R5cGUgXywgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBtYXRjaF9hY3Rpb25zID0gZnVuY3Rpb25cbiAgKCogYWJzdHJhY3QsIGNvbmNyZXRlKilcbiAgfCBDcmVhdGUgKGEsIGFscyksIENyZWF0ZSAoYiwgYmxzKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBMaXN0LmZvbGRfbGVmdDJcbiAgICAgICAgIChmdW4gb2sgKHMsIGkpICh0LCBqKSAtPiBvayAmJiBzID0gdCAmJiBpID0gailcbiAgICAgICAgIHRydWUgYWxzIGJsc1xuICB8IE1vZF9pbnRlcm5hbCAoKGEsIHMpLCBpKSwgTW9kX2ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEJpbmQgKChhLCBzKSwgKGMsIHUpKSwgQmluZCAoKGIsIHQpLCAoZCwgdikpXG4gIHwgQmluZF90byAoKGEsIHMpLCAoYywgdSkpLCBCaW5kX3RvICgoYiwgdCksIChkLCB2KSkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgcyA9IHRcbiAgICAmJiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBjID0gQWdlbnQuc29ydCBkXG4gICAgJiYgdSA9IHZcbiAgfCBGcmVlIChhLCBzKSwgRnJlZSAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgUmVtb3ZlIGEsIFJlbW92ZSBiIC0+IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgfCBDcmVhdGUgXywgX1xuICB8IE1vZF9pbnRlcm5hbCBfLCBfXG4gIHwgQmluZCBfLCBfXG4gIHwgQmluZF90byBfLCBfXG4gIHwgRnJlZSBfLCBfXG4gIHwgUmVtb3ZlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgZ2V0X2lkcyBmIGF1eCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgYSAtPlxuICAgICAgbGV0IGlkID0gZiBhIGluXG4gICAgICBpZiBMaXN0Lm1lbSBpZCBhY2MgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgaWQgOjogYWNjKVxuICAgIGF1eFxuXG5sZXQgcmVjIG1hdGNoX3F1YXJrcyBhX3F1YXJrcyBjX3F1YXJrcyBmbWF0Y2ggPVxuICBtYXRjaCBhX3F1YXJrcyB3aXRoXG4gIHwgYXEgOjogYXFzIC0+XG4gICAgbGV0IGNxcywgcmVzdCA9IExpc3QucGFydGl0aW9uIChmdW4gY3EgLT4gZm1hdGNoIChhcSwgY3EpKSBjX3F1YXJrcyBpblxuICAgIGlmIGNxcyA9IFtdIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgbWF0Y2hfcXVhcmtzIGFxcyByZXN0IGZtYXRjaFxuICB8IFtdIC0+IGNfcXVhcmtzID0gW11cblxubGV0IHJlYyBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiYWJzdHJhY3QgYW5kIGNvbmNyZXQgcXVhcmtzIGRvbid0IG1hdGNoXCIpKVxuICB8IGNpZCA6OiB0bCAtPlxuICAgIGxldCBjdGVzdHMnID1cbiAgICAgIExpc3QuZmlsdGVyIChmdW4gdGVzdCAtPiBtYXBfdGVzdCAoZnVuIGEgLT4gQWdlbnQuaWQgYSA9IGNpZCkgdGVzdCkgY3Rlc3RzXG4gICAgaW5cbiAgICBsZXQgY2FjdGlvbnMnID1cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gYWN0IC0+IG1hcF9hY3Rpb24gKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIGFjdClcbiAgICAgICAgY2FjdGlvbnNcbiAgICBpblxuICAgIGlmXG4gICAgICBtYXRjaF9xdWFya3MgdGVzdHMgY3Rlc3RzJyBtYXRjaF90ZXN0c1xuICAgICAgJiYgbWF0Y2hfcXVhcmtzIGFjdGlvbnMgY2FjdGlvbnMnIG1hdGNoX2FjdGlvbnNcbiAgICB0aGVuXG4gICAgICBjaWRcbiAgICBlbHNlXG4gICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY3Rlc3RzIGNhY3Rpb25zIHRsXG5cbmxldCBtYXRjaGluZ19hYnN0cmFjdF9jb25jcmV0ZSB+ZGVidWdfbW9kZSBhZSBjZSA9XG4gIGxldCBhZV90ZXN0cyA9IExpc3QuZmxhdHRlbiBhZS50ZXN0cyBpblxuICBsZXQgY2VfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gY2UudGVzdHMgaW5cbiAgbGV0IGFic3RyYWN0X2lkcyA9XG4gICAgZ2V0X2lkc1xuICAgICAgKG1hcF9hY3Rpb24gTWF0Y2hpbmcuQWdlbnQuZ2V0X2lkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IE1hdGNoaW5nLkFnZW50LmdldF9pZCkgW10gYWVfdGVzdHMpXG4gICAgICBhZS5hY3Rpb25zXG4gIGluXG4gIGxldCBjb25jcmV0ZV9pZHMgPVxuICAgIGdldF9pZHMgKG1hcF9hY3Rpb24gQWdlbnQuaWQpXG4gICAgICAoZ2V0X2lkcyAobWFwX3Rlc3QgQWdlbnQuaWQpIFtdIGNlX3Rlc3RzKVxuICAgICAgY2UuYWN0aW9uc1xuICBpblxuICBsZXQgYXZhaWxhYmxlX2lkcyB1c2VkID1cbiAgICBMaXN0LmZpbHRlclxuICAgICAgKGZ1biBpIC0+IG5vdCAoTW9kcy5JbnRTZXQubWVtIGkgKFJlbmFtaW5nLmltYWdlIHVzZWQpKSlcbiAgICAgIGNvbmNyZXRlX2lkc1xuICBpblxuICBsZXQgcGFydGl0aW9uIGZtYXAgaSA9XG4gICAgTGlzdC5wYXJ0aXRpb24gKGZ1biBxIC0+IGZtYXAgKGZ1biBhIC0+IE1hdGNoaW5nLkFnZW50LmdldF9pZCBhID0gaSkgcSlcbiAgaW5cbiAgbGV0IG1hdGNoaW5nID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IGluamVjdGl2ZSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGkgLT5cbiAgICAgICAgYWNjXG4gICAgICAgICYmXG4gICAgICAgIGxldCB0ZXN0cywgXyA9IHBhcnRpdGlvbiBtYXBfdGVzdCBpIGFlX3Rlc3RzIGluXG4gICAgICAgIGxldCBhY3Rpb25zLCBfID0gcGFydGl0aW9uIG1hcF9hY3Rpb24gaSBhZS5hY3Rpb25zIGluXG4gICAgICAgIGxldCBqID1cbiAgICAgICAgICBmaW5kX21hdGNoIHRlc3RzIGFjdGlvbnMgY2VfdGVzdHMgY2UuYWN0aW9ucyAoYXZhaWxhYmxlX2lkcyBtYXRjaGluZylcbiAgICAgICAgaW5cbiAgICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaSBqIG1hdGNoaW5nKVxuICAgICAgdHJ1ZSBhYnN0cmFjdF9pZHNcbiAgaW5cbiAgaWYgaW5qZWN0aXZlIHRoZW5cbiAgICBTb21lIG1hdGNoaW5nXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZiAoKGlkLCBuYSkgYXMgYWdlbnQpID1cbiAgdHJ5XG4gICAgaWYgZiBpZCA9PSBpZCB0aGVuXG4gICAgICBhZ2VudFxuICAgIGVsc2VcbiAgICAgIGYgaWQsIG5hXG4gIHdpdGggTm90X2ZvdW5kIC0+IGFnZW50XG5cbmxldCBzdWJzdF9tYXBfc2l0ZSBmICgoYWcsIHMpIGFzIHNpdGUpID1cbiAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgaWYgYWcgPT0gYWcnIHRoZW5cbiAgICBzaXRlXG4gIGVsc2VcbiAgICBhZycsIHNcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IElzX0hlcmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19IZXJlIGFnZW50J1xuICB8IEhhc19JbnRlcm5hbCAoc2l0ZSwgaW50ZXJuYWxfc3RhdGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfSW50ZXJuYWwgKHNpdGUnLCBpbnRlcm5hbF9zdGF0ZSlcbiAgfCBJc19GcmVlIHNpdGUgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIElzX0ZyZWUgc2l0ZSdcbiAgfCBJc19Cb3VuZCBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZCBzaXRlJ1xuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIGJpbmRpbmdfdHlwZSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHNpdGUnLCBiaW5kaW5nX3R5cGUpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgYXMgeCAtPlxuICAgIGxldCBzaXRlMScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUxIGluXG4gICAgbGV0IHNpdGUyJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZTIgaW5cbiAgICBpZiBzaXRlMSA9PSBzaXRlMScgJiYgc2l0ZTIgPT0gc2l0ZTInIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19Cb3VuZF90byAoc2l0ZTEnLCBzaXRlMicpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X3Rlc3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJyA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIChhZ2VudCwgbGlzdCkgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmJyBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQ3JlYXRlIChhZ2VudCcsIGxpc3QpXG4gIHwgTW9kX2ludGVybmFsIChzaXRlLCBpKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIE1vZF9pbnRlcm5hbCAoc2l0ZScsIGkpXG4gIHwgQmluZCAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZCAoczEnLCBzMicpXG4gIHwgQmluZF90byAoczEsIHMyKSBhcyB4IC0+XG4gICAgbGV0IHMxJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMxIGluXG4gICAgbGV0IHMyJyA9IHN1YnN0X21hcF9zaXRlIGYnIHMyIGluXG4gICAgaWYgczEgPT0gczEnICYmIHMyID09IHMyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQmluZF90byAoczEnLCBzMicpXG4gIHwgRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgRnJlZSBzaXRlJ1xuICB8IFJlbW92ZSBhZ2VudCBhcyB4IC0+XG4gICAgbGV0IGFnZW50JyA9IGYgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIFJlbW92ZSBhZ2VudCdcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZiB4ID0gc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb25cbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9hY3Rpb24gfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmID0gZnVuY3Rpb25cbiAgfCAoQU5ZIHwgRlJFRSB8IEJPVU5EIHwgQk9VTkRfVFlQRSBfKSBhcyB4IC0+IHhcbiAgfCBCT1VORF90byAoYWcsIHMpIGFzIHggLT5cbiAgICBsZXQgYWcnID0gZiBhZyBpblxuICAgIGlmIGFnID09IGFnJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgQk9VTkRfdG8gKGFnJywgcylcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmICgoc2l0ZSwgYnN0YXRlKSBhcyB4KSA9XG4gIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYgc2l0ZSBpblxuICBsZXQgYnN0YXRlJyA9IHN1YnN0X21hcF9iaW5kaW5nX3N0YXRlIGYgYnN0YXRlIGluXG4gIGlmIHNpdGUgPT0gc2l0ZScgJiYgYnN0YXRlID09IGJzdGF0ZScgdGhlblxuICAgIHhcbiAgZWxzZVxuICAgIHNpdGUnLCBic3RhdGUnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZikgeFxuXG5sZXQgc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3QgaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lZmZlY3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCB+ZGVidWdfbW9kZSBpZCBpbmogeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IGYgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiBmKSBlLmFjdGlvbnM7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZikgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfc2l0ZSBmKSBlLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2V2ZW50IGYgZicgZSA9XG4gIHtcbiAgICB0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSlcbiAgICAgICAgZS50ZXN0cztcbiAgICBhY3Rpb25zID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24gZiBmJykgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgZiBmJyB4ID1cbiAgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudFxuICAgIChzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQgZilcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYnKVxuICAgIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MgZiAoYWdlbnQsIGlkKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgYWdlbnRcbiAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZ2VudClcbiAgICBpZFxuXG5sZXQgcHJpbnRfY29uY3JldGVfdGVzdCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0hlcmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG4gIHwgSGFzX0ludGVybmFsICgoYWcsIGlkKSwgaW50KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJIYXNfSW50ZXJuYWwoJWEuJWEpXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBpZClcbiAgICAgIGludFxuICB8IElzX0ZyZWUgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19GcmVlKCVhKVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gIHwgSXNfQm91bmQgc2l0ZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19Cb3VuZCglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHNpdGUsICh0eSwgc2lkKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQnR5cGUoJWEsJXQpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHR5IHNpZFxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICB0eVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHkpXG4gICAgICAgICAgICBzaWQpXG4gIHwgSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcblxubGV0IHByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKCgoXywgdHkpIGFzIGFnZW50KSwgbGlzdCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQ3JlYXRlKCVhW0BbPGg+JWFAXV0pXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdlbnRcbiAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoeCwgeSkgLT5cbiAgICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgdHkgeCBmIHlcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgeFxuICAgICAgICAgICAgIHwgU29tZSB5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaS4laVwiIHggeSkpKVxuICAgICAgbGlzdFxuICB8IE1vZF9pbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiTW9kKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBCaW5kIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmQoJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBCaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJpbmRfdG8oJWEsJWEpXCJcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTFcbiAgICAgIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKVxuICAgICAgc2l0ZTJcbiAgfCBGcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IFJlbW92ZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSZW1vdmUoJWEpXCIgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpIGFnZW50XG5cbmxldCBwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIqXCJcbiAgfCBGUkVFIC0+ICgpXG4gIHwgQk9VTkQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIV9cIlxuICB8IEJPVU5EX1RZUEUgKHMsIGEpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHNcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgYVxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3NcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgc1xuICB8IEJPVU5EX3RvICgoYWdfaWQsIGFnKSwgcykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiISVhXyVpLiVhXCJcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFnIGFnX2lkXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcblxubGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICBcIlxcXCJiaW5kaW5nX3R5cGVcXFwiOntcXFwidHlwZVxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInF1YXJrXFxcIjp7XFxcImFnZW50XFxcIjowLFxcXCJzaXRlXFxcIjoxfSxcXFwidGVzdFxcXCI6W1xcXCJJc19oZXJlXFxcIixcXFwiSGFzX0ludGVybmFsXFxcIixcXFwiSXNfRnJlZVxcXCIsXFxcIklzX0JvdW5kXFxcIixcXFwiSGFzX0JpbmRpbmdfdHlwZVxcXCIsXFxcIklzX0JvdW5kX3RvXFxcIl0sXFxcImFjdGlvbnNcXFwiOltcXFwiQ3JlYXRlXFxcIixcXFwiTW9kX2ludGVybmFsXFxcIixcXFwiQmluZFxcXCIsXFxcIkJpbmRfdG9cXFwiLFxcXCJGcmVlXFxcIixcXFwiUmVtb3ZlXFxcIl0sXFxcImJpbmRpbmdfc3RhdGVcXFwiOltcXFwiQU5ZXFxcIixcXFwiRlJFRVxcXCIsXFxcIkJPVU5EXFxcIixcXFwiQk9VTkRfVFlQRVxcXCIsXFxcIkJPVU5EX3RvXFxcIl0sXFxcImV2ZW50XFxcIjp7XFxcInRlc3RzXFxcIjowLFxcXCJhY3Rpb25zXFxcIjoxLFxcXCJzaWRlX2VmZmVjdF9zcmNcXFwiOjIsXFxcInNpZGVfZWZmZWN0X2RzdFxcXCI6MyxcXFwiY29ubmVjdGl2aXR5X3Rlc3RzXFxcIjo0fVwiXG5cbmxldCB3cml0ZV9iaW5kaW5nX3R5cGUgb2IgYSA9XG4gIEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgYVxuXG5sZXQgcmVhZF9iaW5kaW5nX3R5cGUgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgYmluZGluZ190eXBlX3RvX2pzb24gKHR5LCBzKSA9IGBMaXN0IFsgYEludCB0eTsgYEludCBzIF1cblxubGV0IGJpbmRpbmdfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIC0+IHR5LCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBiaW5kaW5nX3R5cGVcIiwgeCkpXG5cbmxldCB3cml0ZV9xdWFyayBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfcXVhcmsgZiBwIGxiID0gSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgZiBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxubGV0IHF1YXJrX3RvX2pzb24gZiAoYWcsIHMpID0gYExpc3QgWyBmIGFnOyBgSW50IHMgXVxuXG5sZXQgcXVhcmtfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGFnOyBgSW50IHMgXSAtPiBmIGFnLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcXVhcmtcIiwgeCkpXG5cbmxldCB3cml0ZV90ZXN0IGYgb2IgdCA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIHQgd2l0aFxuICAgIHwgSXNfSGVyZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAwKTsgKGZ1biBvIC0+IGYgbyBhKSBdXG4gICAgfCBIYXNfSW50ZXJuYWwgKHMsIGkpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcyk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gaSk7XG4gICAgICBdXG4gICAgfCBJc19GcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBJc19Cb3VuZCBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSGFzX0JpbmRpbmdfdHlwZSAocywgYikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDQpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2Igcyk7XG4gICAgICAgIChmdW4gb2IgLT4gd3JpdGVfYmluZGluZ190eXBlIG9iIGIpO1xuICAgICAgXVxuICAgIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIDUpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczEpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX3F1YXJrIGYgb2IgczIpO1xuICAgICAgXSlcblxubGV0IHJlYWRfdGVzdCBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IHkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgSXNfSGVyZSB5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgSGFzX0ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19GcmVlIHNcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmQgc1xuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgYmkgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEhhc19CaW5kaW5nX3R5cGUgKHMsIGJpKVxuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBJc19Cb3VuZF90byAoczEsIHMyKVxuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgdGVzdFwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IHRlc3RfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGEgLT4gYExpc3QgWyBgSW50IDA7IGYgYSBdXG4gIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgSXNfRnJlZSBzIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgcyBdXG4gIHwgSXNfQm91bmQgcyAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3R5cGVfdG9fanNvbiBiIF1cbiAgfCBJc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgIGBMaXN0IFsgYEludCA1OyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG5cbmxldCB0ZXN0X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGEgXSAtPiBJc19IZXJlIChmIGEpXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IEhhc19JbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMgXSAtPiBJc19GcmVlIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgMzsgcyBdIC0+IElzX0JvdW5kIChxdWFya19vZl9qc29uIGYgcylcbiAgfCBgTGlzdCBbIGBJbnQgNDsgczsgYiBdIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAocXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfdHlwZV9vZl9qc29uIGIpXG4gIHwgYExpc3QgWyBgSW50IDU7IHMxOyBzMiBdIC0+XG4gICAgSXNfQm91bmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3JvbmcgdGVzdFwiLCB4KSlcblxubGV0IHdyaXRlX2FjdGlvbiBmIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBhIHdpdGhcbiAgICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8gYWcpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnRcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCkpXG4gICAgICAgICAgICBvIGluZm8pO1xuICAgICAgXVxuICAgIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgQmluZCAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBCaW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMyk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMyKTtcbiAgICAgIF1cbiAgICB8IEZyZWUgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IFJlbW92ZSBhIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KTsgKGZ1biBvIC0+IGYgbyBhKSBdKVxuXG5sZXQgcmVhZF9hY3Rpb24gZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhZyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIGYgc3QgYiBpblxuICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfaW50KSkpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIENyZWF0ZSAoYWcsIGluZm8pXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgTW9kX2ludGVybmFsIChzLCBpKVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kIChzMSwgczIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMxID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgczIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEJpbmRfdG8gKHMxLCBzMilcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgRnJlZSBzXG4gICAgICB8IDUgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgUmVtb3ZlIGFcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIGFjdGlvblwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGFjdGlvbl90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWcsIGluZm8pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAwO1xuICAgICAgICBmIGFnO1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4gKHMsIGkpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAoYEludCBzXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IFsgYEludCBpIF0pKSlcbiAgICAgICAgICAgICBpbmZvKTtcbiAgICAgIF1cbiAgfCBNb2RfaW50ZXJuYWwgKHMsIGkpIC0+IGBMaXN0IFsgYEludCAxOyBxdWFya190b19qc29uIGYgczsgYEludCBpIF1cbiAgfCBCaW5kIChzMSwgczIpIC0+IGBMaXN0IFsgYEludCAyOyBxdWFya190b19qc29uIGYgczE7IHF1YXJrX3RvX2pzb24gZiBzMiBdXG4gIHwgQmluZF90byAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMzsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IFJlbW92ZSBhIC0+IGBMaXN0IFsgYEludCA1OyBmIGEgXVxuXG5sZXQgYWN0aW9uX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IDA7IGFnOyBgTGlzdCBpbmZvIF0gLT5cbiAgICBDcmVhdGVcbiAgICAgICggZiBhZyxcbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IHMgXSAtPiBzLCBOb25lXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzOyBgSW50IGkgXSAtPiBzLCBTb21lIGlcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFjdGlvbiBpbmZvXCIsIHgpKSlcbiAgICAgICAgICBpbmZvIClcbiAgfCBgTGlzdCBbIGBJbnQgMTsgczsgYEludCBpIF0gLT4gTW9kX2ludGVybmFsIChxdWFya19vZl9qc29uIGYgcywgaSlcbiAgfCBgTGlzdCBbIGBJbnQgMjsgczE7IHMyIF0gLT4gQmluZCAocXVhcmtfb2ZfanNvbiBmIHMxLCBxdWFya19vZl9qc29uIGYgczIpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMxOyBzMiBdIC0+IEJpbmRfdG8gKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCA0OyBzIF0gLT4gRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDU7IGEgXSAtPiBSZW1vdmUgKGYgYSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIGFjdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX2JpbmRpbmdfc3RhdGUgZiBvYiBiZiA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgKG1hdGNoIGJmIHdpdGhcbiAgICB8IEFOWSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCkgXVxuICAgIHwgRlJFRSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMSkgXVxuICAgIHwgQk9VTkQgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDIpIF1cbiAgICB8IEJPVU5EX1RZUEUgYiAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfYmluZGluZ190eXBlIG8gYik7XG4gICAgICBdXG4gICAgfCBCT1VORF90byBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNCk7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXSlcblxubGV0IHJlYWRfYmluZGluZ19zdGF0ZSBmIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gQU5ZXG4gICAgICB8IDEgLT4gRlJFRVxuICAgICAgfCAyIC0+IEJPVU5EXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSByZWFkX2JpbmRpbmdfdHlwZSBzdCBiIGluXG4gICAgICAgIEJPVU5EX1RZUEUgYlxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCT1VORF90byBzXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBiaW5kaW5nIHN0YXRlXCIgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgYmluZGluZ19zdGF0ZV90b19qc29uIGYgPSBmdW5jdGlvblxuICB8IEFOWSAtPiBgTGlzdCBbIGBJbnQgMCBdXG4gIHwgRlJFRSAtPiBgTGlzdCBbIGBJbnQgMSBdXG4gIHwgQk9VTkQgLT4gYExpc3QgWyBgSW50IDIgXVxuICB8IEJPVU5EX1RZUEUgYiAtPiBgTGlzdCBbIGBJbnQgMzsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgQk9VTkRfdG8gcyAtPiBgTGlzdCBbIGBJbnQgNDsgcXVhcmtfdG9fanNvbiBmIHMgXVxuXG5sZXQgYmluZGluZ19zdGF0ZV9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwIF0gLT4gQU5ZXG4gIHwgYExpc3QgWyBgSW50IDEgXSAtPiBGUkVFXG4gIHwgYExpc3QgWyBgSW50IDIgXSAtPiBCT1VORFxuICB8IGBMaXN0IFsgYEludCAzOyBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdIF0gLT4gQk9VTkRfVFlQRSAodHksIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IGBMaXN0IFsgYWc7IGBJbnQgcyBdIF0gLT4gQk9VTkRfdG8gKGYgYWcsIHMpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYmluZGluZ19zdGF0ZVwiLCB4KSlcblxubGV0IHdyaXRlX2V2ZW50IGYgb2IgZSA9XG4gIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIG9iXG4gICAgW1xuICAgICAgKGZ1biBvIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3QgKEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3Rlc3QgZikpIG8gZS50ZXN0cyk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfYWN0aW9uIGYpIG8gZS5hY3Rpb25zKTtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciAod3JpdGVfcXVhcmsgZikgKHdyaXRlX2JpbmRpbmdfc3RhdGUgZikpXG4gICAgICAgICAgbyBlLnNpZGVfZWZmZWN0c19zcmMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX3F1YXJrIGYpIG8gZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpIG8gZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IHJlYWRfZXZlbnQgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50XG4gICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkpXG4gICAgKGZ1biBzdCBiIHRlc3RzIC0+XG4gICAgICBsZXQgYWN0aW9ucyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX2FjdGlvbiBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciAocmVhZF9xdWFyayBmKSAocmVhZF9iaW5kaW5nX3N0YXRlIGYpKSlcbiAgICAgICAgICBzdCBiXG4gICAgICBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9xdWFyayBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF90ZXN0IGYpKSBzdCBiXG4gICAgICBpblxuICAgICAgeyB0ZXN0czsgYWN0aW9uczsgc2lkZV9lZmZlY3RzX3NyYzsgc2lkZV9lZmZlY3RzX2RzdDsgY29ubmVjdGl2aXR5X3Rlc3RzIH0pXG4gICAgc3QgYlxuXG5sZXQgZXZlbnRfdG9fanNvbiBmIGUgPVxuICBgTGlzdFxuICAgIFtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIGNjdCAtPiBgTGlzdCAoTGlzdC5tYXAgKHRlc3RfdG9fanNvbiBmKSBjY3QpKSBlLnRlc3RzKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAoYWN0aW9uX3RvX2pzb24gZikgZS5hY3Rpb25zKTtcbiAgICAgIGBMaXN0XG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChzLCBiKSAtPlxuICAgICAgICAgICAgIGBMaXN0IFsgcXVhcmtfdG9fanNvbiBmIHM7IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmIGIgXSlcbiAgICAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAocXVhcmtfdG9fanNvbiBmKSBlLnNpZGVfZWZmZWN0c19kc3QpO1xuICAgICAgYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgZS5jb25uZWN0aXZpdHlfdGVzdHMpO1xuICAgIF1cblxubGV0IGV2ZW50X29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgTGlzdCB0OyBgTGlzdCBhOyBgTGlzdCBzX2Vfc3JjOyBgTGlzdCBzX2VfZHN0OyBgTGlzdCBjX3QgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHRlc3RzID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgY2NsIC0+IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY2NsXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHQ7XG4gICAgICAgICBhY3Rpb25zID0gTGlzdC5tYXAgKGFjdGlvbl9vZl9qc29uIGYpIGE7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBzOyBiIF0gLT4gcXVhcmtfb2ZfanNvbiBmIHMsIGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmIGJcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc19lX3NyYztcbiAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QgPSBMaXN0Lm1hcCAocXVhcmtfb2ZfanNvbiBmKSBzX2VfZHN0O1xuICAgICAgICAgY29ubmVjdGl2aXR5X3Rlc3RzID0gTGlzdC5tYXAgKHRlc3Rfb2ZfanNvbiBmKSBjX3Q7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBldmVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgVHJhbnNmb3JtYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFnZW50IG9mICdhXG4gICAgfCBGcmVlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IExpbmtlZCBvZiAnYSBJbnN0YW50aWF0aW9uLnNpdGUgKiAnYSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBvZlxuICAgICAgICAnYSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lICogSW5zdGFudGlhdGlvbi5pbnRlcm5hbF9zdGF0ZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGBBc3NvYyBbIFwiQWdlbnRcIiwgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGEgXVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2MgWyBcIkZyZWVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IExpbmtlZCAoKGEsIHMpLCAoYiwgdCkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJMaW5rZWRcIixcbiAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTtcbiAgICAgICAgICAgICAgICBgSW50IHM7XG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGI7XG4gICAgICAgICAgICAgICAgYEludCB0O1xuICAgICAgICAgICAgICBdICk7XG4gICAgICAgIF1cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlV2hhdEV2ZXJcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJQb3NpdGl2ZUludGVybmFsaXplZFwiLFxuICAgICAgICAgICAgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzOyBgSW50IGkgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbIFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBNYXRjaGluZy5BZ2VudC50b195b2pzb24gYTsgYEludCBzIF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiQWdlbnRcIiwgYSkgXSAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEpXG4gICAgfCBgQXNzb2MgWyAoXCJGcmVlZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBGcmVlZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCBgQXNzb2MgWyAoXCJMaW5rZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGI7IGBJbnQgdCBdKSBdIC0+XG4gICAgICBMaW5rZWQgKChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcyksIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYiwgdCkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgYTsgYEludCBzIF0pIF0gLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHM7IGBJbnQgaSBdKSBdIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMsIGkpXG4gICAgfCBgQXNzb2MgWyAoXCJOZWdhdGl2ZUludGVybmFsaXplZFwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbiAgbGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogPSBmdW5jdGlvblxuICAgIHwgRnJlZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRnJlZWQgKHAnLCBzKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZVdoYXRFdmVyIChwJywgcylcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSBhcyB4IC0+XG4gICAgICBsZXQgcDEnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwMSBpblxuICAgICAgbGV0IHAyJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDIgaW5cbiAgICAgIGlmIHAxID09IHAxJyAmJiBwMiA9PSBwMicgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIExpbmtlZCAoKHAxJywgczEpLCAocDInLCBzMikpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAocCwgcywgaSkgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAocCcsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAocCwgcykgYXMgeCAtPlxuICAgICAgbGV0IHAnID0gTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiBwIGluXG4gICAgICBpZiBwID09IHAnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAocCcsIHMpXG4gICAgfCBBZ2VudCBwIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQWdlbnQgcCdcblxuICBsZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgbiAtPiBBZ2VudCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbilcbiAgICB8IEZyZWVkIChuLCBzKSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBMaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBMaW5rZWRcbiAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcyksXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4nLCBzJykgKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAobiwgcykgLT5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCAobiwgcywgaSkgLT5cbiAgICAgIFBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcylcblxuICBsZXQgbWFwX2ZvbGRfYWdlbnQgZiB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBZ2VudCBhIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBBZ2VudCBhJywgYWNjJ1xuICAgIHwgRnJlZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBGcmVlZCAoYScsIHMpLCBhY2MnXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT5cbiAgICAgIGxldCBhMScsIGFjYycgPSBmIGExIGFjYyBpblxuICAgICAgbGV0IGEyJywgYWNjJycgPSBmIGEyIGFjYycgaW5cbiAgICAgIExpbmtlZCAoKGExJywgczEpLCAoYTInLCBzMikpLCBhY2MnJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzKSwgYWNjJ1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMsIGkpLCBhY2MnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT5cbiAgICAgIGxldCBhJywgYWNjJyA9IGYgYSBhY2MgaW5cbiAgICAgIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcyksIGFjYydcblxuICBsZXQgbWFwX2FnZW50IGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBBZ2VudCAoZiBhKVxuICAgIHwgRnJlZWQgKGEsIHMpIC0+IEZyZWVkIChmIGEsIHMpXG4gICAgfCBMaW5rZWQgKChhMSwgczEpLCAoYTIsIHMyKSkgLT4gTGlua2VkICgoZiBhMSwgczEpLCAoZiBhMiwgczIpKVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcykgLT4gTmVnYXRpdmVXaGF0RXZlciAoZiBhLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIC0+IFBvc2l0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMsIGkpXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcykgLT4gTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGYgYSwgcylcblxuICBsZXQgZm9sZF9hZ2VudCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBBZ2VudCBhIC0+IGYgYWNjIGFcbiAgICB8IEZyZWVkIChhLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBMaW5rZWQgKChhMSwgXyksIChhMiwgXykpIC0+IGYgKGYgYWNjIGExKSBhMlxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIF8sIF8pIC0+IGYgYWNjIGFcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhLCBfKSAtPiBmIGFjYyBhXG5cbiAgbGV0IGVxdWFsIGYgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEFnZW50IGEsIEFnZW50IGEnIC0+IGYgYSBhJ1xuICAgIHwgKCBBZ2VudCBfLFxuICAgICAgICAoIEZyZWVkIF8gfCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgQWdlbnQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEZyZWVkIChhLCBzKSwgRnJlZWQgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgKCBGcmVlZCBfLFxuICAgICAgICAoIExpbmtlZCBfIHwgTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8gKSApXG4gICAgfCBfLCBGcmVlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpLCBMaW5rZWQgKChhMScsIHMxJyksIChhMicsIHMyJykpIC0+XG4gICAgICAoczEgPSBzMScgJiYgczIgPSBzMicgJiYgZiBhMSBhMScgJiYgZiBhMiBhMicpXG4gICAgICB8fCAoczEgPSBzMicgJiYgczIgPSBzMScgJiYgZiBhMSBhMicgJiYgZiBhMiBhMScpXG4gICAgfCAoIExpbmtlZCBfLFxuICAgICAgICAoTmVnYXRpdmVXaGF0RXZlciBfIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pIClcbiAgICB8IF8sIExpbmtlZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAoYSwgcyksIE5lZ2F0aXZlV2hhdEV2ZXIgKGEnLCBzJykgLT4gcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVXaGF0RXZlciBfLCAoUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIF8pXG4gICAgfCBfLCBOZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgcyksIE5lZ2F0aXZlSW50ZXJuYWxpemVkIChhJywgcycpIC0+XG4gICAgICBzID0gcycgJiYgZiBhIGEnXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfLCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgfCBQb3NpdGl2ZUludGVybmFsaXplZCBfLCBOZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpLCBQb3NpdGl2ZUludGVybmFsaXplZCAoYScsIHMnLCBpJykgLT5cbiAgICAgIGkgPSBpJyAmJiBzID0gcycgJiYgZiBhIGEnXG5cbiAgbGV0IHByaW50ID9zaWdzIGYgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdXCIgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKSBwXG4gICAgfCBGcmVlZCAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gJXRAXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzIFBwLmJvdHRvbVxuICAgIHwgTmVnYXRpdmVXaGF0RXZlciAocCwgcykgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLiVhID0gPz8/QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgc1xuICAgIHwgTGlua2VkICgocDEsIHMxKSwgKHAyLCBzMikpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICVhLiVhQF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAxXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAxKVxuICAgICAgICBzMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHAyXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHAyKVxuICAgICAgICBzMlxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X2ludGVybmFsID9zaWdzIHAgcylcbiAgICAgICAgaVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYX4gPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcblxuICBsZXQgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoKChhLCBfKSwgXykgYXMgcCkgKGRvbiwgb3V0KSA9XG4gICAgaWYgTGlzdC5tZW0gcCBkb24gfHwgTGlzdC5tZW0gYSBjcmVhdGVkX2FnZW50cyB0aGVuXG4gICAgICBkb24sIG91dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbG5rX2RzdCBwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBwIDo6IGRvbiwgRnJlZWQgcCA6OiBvdXRcbiAgICAgIHwgU29tZSBwJyAtPiBwIDo6IHAnIDo6IGRvbiwgTGlua2VkIChwLCBwJykgOjogb3V0XG4gICAgKVxuXG4gIGxldCBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gPSBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhZ19pZCwgXyksIF8pIC0+IFNvbWUgYWdfaWRcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gX1xuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIE5vbmVcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zID1cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvbiBhZ2VudHNfY3JlYXRlZF9ieV9hY3Rpb24gYWN0aW9uc1xuXG4gIGxldCBuZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3QgYWN0aW9ucyA9XG4gICAgbGV0IGNyZWF0ZWRfYWdlbnRzID0gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9ucyBhY3Rpb25zIGluXG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAoZnVuIHggKChkb24sIG91dCkgYXMgYWNjKSAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoXywgXykgLT4gYWNjXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoKGlkLCBfKSwgXykgYXMgcCksIF8pIC0+XG4gICAgICAgICAgICAgaWYgTGlzdC5tZW0gaWQgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgZG9uLCBvdXRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBkb24sIE5lZ2F0aXZlSW50ZXJuYWxpemVkIHAgOjogb3V0XG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwMVxuICAgICAgICAgICAgICAgKGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDIgYWNjKVxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBwIC0+XG4gICAgICAgICAgICAgZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCBwIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgdHkpIGFzIGEpIC0+XG4gICAgICAgICAgICAgVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiBnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IChhLCBzKSBzdClcbiAgICAgICAgICAgICAgIChkb24sIEFnZW50IGEgOjogb3V0KVxuICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSlcbiAgICAgICAgIGFjdGlvbnMgKFtdLCBbXSkpXG5cbiAgbGV0IHBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3Mgc2lkZV9lZmZlY3RfZHN0cyBhY3Rpb25zID1cbiAgICBsZXQgcmVtLCByZXYgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoKHJlbSwgb3V0KSBhcyBhY2MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCB0eSkgYXMgYSksIF8pIC0+XG4gICAgICAgICAgICAoIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAgKGZ1biBzdCBzIC0+IChhLCBzKSA6OiBzdClcbiAgICAgICAgICAgICAgICByZW0gKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KSxcbiAgICAgICAgICAgICAgQWdlbnQgYSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChhLCBzKSwgaSkgLT5cbiAgICAgICAgICAgIHJlbSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMsIGkpIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChwMSwgcDIpIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChwMSwgcDIpIC0+XG4gICAgICAgICAgICAoIExpc3QuZmlsdGVyIChmdW4gcCAtPiBwIDw+IHAxICYmIHAgPD4gcDIpIHJlbSxcbiAgICAgICAgICAgICAgTGlua2VkIChwMSwgcDIpIDo6IG91dCApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBwJyAtPiBwJyA8PiBwKSByZW0sIEZyZWVkIHAgOjogb3V0XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IGFjYylcbiAgICAgICAgKFtdLCBbXSkgYWN0aW9uc1xuICAgIGluXG4gICAgTGlzdC5yZXZfYXBwZW5kIHJldlxuICAgICAgKExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biBwIC0+IEZyZWVkIHApXG4gICAgICAgICByZW1cbiAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHAgLT4gRnJlZWQgcCkgc2lkZV9lZmZlY3RfZHN0cykpXG5lbmRcblxudHlwZSBhbGdfZXhwciA9IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZVxuXG50eXBlIGVsZW1lbnRhcnlfcnVsZSA9IHtcbiAgcmF0ZTogYWxnX2V4cHIgTG9jLmFubm90ZWQ7XG4gIHVuYXJ5X3JhdGU6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGFsZ19leHByIG9wdGlvbikgb3B0aW9uO1xuICBjb25uZWN0ZWRfY29tcG9uZW50czogUGF0dGVybi5pZCBhcnJheTsgKCppZCAtPiBjYyopXG4gIHJlbW92ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBpbnNlcnRlZDogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBUcmFuc2Zvcm1hdGlvbi50IGxpc3Q7XG4gIGRlbHRhX3Rva2VuczogKGFsZ19leHByIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICBzeW50YWN0aWNfcnVsZTogaW50OyAgKCoqIFswXSBtZWFucyBnZW5lcmF0ZWQgZm9yIHBlcnR1cmJhdGlvbi4gKilcbiAgaW5zdGFudGlhdGlvbnM6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi5ldmVudDtcbn1cblxubGV0IGV4dHJhY3RfY2NfaWRzIHIgPSByLmNvbm5lY3RlZF9jb21wb25lbnRzXG5sZXQgZXh0cmFjdF9hYnN0cmFjdF9ldmVudCByID0gci5pbnN0YW50aWF0aW9uc1xuXG5sZXQgYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uKSlcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBydWxlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgICggXCJyYXRlXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgci5yYXRlXG4gICAgICApO1xuICAgICAgKCBcInVuYXJ5X3JhdGVcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpKVxuICAgICAgICAgIHIudW5hcnlfcmF0ZSApO1xuICAgICAgKCBcImNvbm5lY3RlZF9jb21wb25lbnRzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIHIuY29ubmVjdGVkX2NvbXBvbmVudHMgKTtcbiAgICAgIFwicmVtb3ZlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLnJlbW92ZWQ7XG4gICAgICBcImluc2VydGVkXCIsIEpzb25VdGlsLm9mX2xpc3QgVHJhbnNmb3JtYXRpb24udG9feW9qc29uIHIuaW5zZXJ0ZWQ7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5kZWx0YV90b2tlbnMgKTtcbiAgICAgIFwic3ludGFjdGljX3J1bGVcIiwgYEludCByLnN5bnRhY3RpY19ydWxlO1xuICAgICAgKCBcImluc3RhbnRpYXRpb25zXCIsXG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24gci5pbnN0YW50aWF0aW9ucyApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciA9XG4gIG1hdGNoIHIgd2l0aFxuICB8IChgQXNzb2MgbCA6IFlvanNvbi5CYXNpYy50KSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJhdGUgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHVuYXJ5X3JhdGUgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidW5hcnlfcmF0ZVwiIHgpO1xuICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiIHgpO1xuICAgICAgICAgcmVtb3ZlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJlbW92ZWRcIiB4KTtcbiAgICAgICAgIGluc2VydGVkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdCBUcmFuc2Zvcm1hdGlvbi5vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW5zZXJ0ZWRcIiB4KTtcbiAgICAgICAgIGRlbHRhX3Rva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTpcInZhbFwiIH5sYWIyOlwidG9rXCJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5zXCIgeCk7XG4gICAgICAgICBzeW50YWN0aWNfcnVsZSA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInN5bnRhY3RpY19ydWxlXCIgbCk7XG4gICAgICAgICBpbnN0YW50aWF0aW9ucyA9XG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb25cbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluc3RhbnRpYXRpb25zXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbGVtZW50YXJ5IHJ1bGVcIiwgeCkpXG5cbmxldCBmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnMgY2MgPVxuICBsZXQgXywgdHIgPVxuICAgIFBhdHRlcm4uZm9sZF9ieV90eXBlXG4gICAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoZW1iLCBnKSAtPlxuICAgICAgICBsZXQgYSA9IHBvcywgYWdlbnRfdHlwZSBpblxuICAgICAgICBsZXQgZycgPSBUcmFuc2Zvcm1hdGlvbi5BZ2VudCBhIDo6IGcgaW5cbiAgICAgICAgbGV0IGVtYicgPSBNb2RzLkludE1hcC5hZGQgcG9zIGEgZW1iIGluXG4gICAgICAgICggZW1iJyxcbiAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAoZnVuIHNpdGUgYWNjIChsLCBpKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgICAgICAgaWYgaSA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoYSwgc2l0ZSwgaSkgOjogYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uRnJlZWQgKGEsIHNpdGUpIDo6IGFjYydcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLkxpbmsgKHgnLCBzJykgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCcgZW1iJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjYydcbiAgICAgICAgICAgICAgICB8IFNvbWUgYWcnIC0+XG4gICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChhLCBzaXRlKSwgKGFnJywgcycpKSA6OiBhY2MnKSlcbiAgICAgICAgICAgIGcnIGludGYgKSlcbiAgICAgIGNjIChNb2RzLkludE1hcC5lbXB0eSwgW10pXG4gIGluXG4gIExpc3QucmV2IHRyXG5cbnR5cGUgJ2FsZ19leHByIHByaW50X2V4cHIgPVxuICB8IFN0cl9wZXhwciBvZiBzdHJpbmcgTG9jLmFubm90ZWRcbiAgfCBBbGdfcGV4cHIgb2YgJ2FsZ19leHByIExvYy5hbm5vdGVkXG5cbmxldCBwcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBTdHJfcGV4cHIgcyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEFsZ19wZXhwciBhIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJBXCIsXG4gICAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgYSApO1xuICAgICAgXVxuXG5sZXQgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiQVwiLCB4KSBdIC0+XG4gICAgKHRyeVxuICAgICAgIEFsZ19wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuICB8IHggLT5cbiAgICAodHJ5XG4gICAgICAgU3RyX3BleHByXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgeClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcHJpbnQgZXhwclwiLCB4KSkpXG5cbmxldCBtYXBfZXhwcl9wcmludCBmIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChmIGUpKVxuICAgIHhcblxubGV0IGZvbGRfZXhwcl9wcmludCBmIGFjYyB4ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgfCBTdHJfcGV4cHIgXyAtPiBhY2NcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gZiBhY2MgZSlcbiAgICBhY2MgeFxuXG50eXBlIGRpbl9raW5kID0gQUJTT0xVVEUgfCBSRUxBVElWRSB8IFBST0JBQklMSVRZXG5cbmxldCBkaW5fa2luZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEFCU09MVVRFIC0+IGBTdHJpbmcgXCJBQlNPTFVURVwiXG4gIHwgUkVMQVRJVkUgLT4gYFN0cmluZyBcIlJFTEFUSVZFXCJcbiAgfCBQUk9CQUJJTElUWSAtPiBgU3RyaW5nIFwiUFJPQkFCSUxJVFlcIlxuXG5sZXQgZGluX2tpbmRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQUJTT0xVVEVcIiAtPiBBQlNPTFVURVxuICB8IGBTdHJpbmcgXCJSRUxBVElWRVwiIC0+IFJFTEFUSVZFXG4gIHwgYFN0cmluZyBcIlBST0JBQklMSVRZXCIgLT4gUFJPQkFCSUxJVFlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkaW5fa2luZFwiLCB4KSlcblxubGV0IHdyaXRlX2Rpbl9raW5kIG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iIChkaW5fa2luZF90b195b2pzb24gZilcblxubGV0IHN0cmluZ19vZl9kaW5fa2luZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5fa2luZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfZGluX2tpbmQgcCBsYiA9XG4gIGRpbl9raW5kX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgZGluX2tpbmRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9raW5kIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgbW9kaWZpY2F0aW9uID1cbiAgfCBJVEVSX1JVTEUgb2YgYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBlbGVtZW50YXJ5X3J1bGVcbiAgfCBVUERBVEUgb2YgaW50ICogYWxnX2V4cHIgTG9jLmFubm90ZWRcbiAgfCBTTkFQU0hPVCBvZiBib29sICogYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgU1RPUCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPVyBvZlxuICAgICAgc3RyaW5nIG9wdGlvblxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IERJTiBvZiBkaW5fa2luZCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBDRkxPV09GRiBvZiBzdHJpbmcgb3B0aW9uICogUGF0dGVybi5pZCBhcnJheVxuICB8IFBMT1RFTlRSWVxuICB8IFBSSU5UIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVMgb2ZcbiAgICAgIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICB8IFNQRUNJRVNfT0ZGIG9mIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuXG5sZXQgcHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBwcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IG1vZGlmaWNhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChuLCByKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiO1xuICAgICAgICAoIFwicmVwZWF0c1wiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgbiApO1xuICAgICAgICBcInJ1bGVcIiwgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByO1xuICAgICAgXVxuICB8IFVQREFURSAodiwgZSkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBcInZhclwiLCBgSW50IHY7XG4gICAgICAgICggXCJ2YWx1ZVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZSApO1xuICAgICAgXVxuICB8IFNOQVBTSE9UIChyYXcsIGYpIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCI7XG4gICAgICAgIFwicmF3XCIsIGBCb29sIHJhdztcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBTVE9QIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IENGTE9XIChuYW1lLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV1wiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IENGTE9XT0ZGIChuYW1lLCBpZHMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJDRkxPV09GRlwiO1xuICAgICAgICBcIm5hbWVcIiwgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZyBuYW1lO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgXVxuICB8IERJTiAoa2luZCwgZikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBcImtpbmRcIiwgZGluX2tpbmRfdG9feW9qc29uIGtpbmQ7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgRElOT0ZGIGYgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgUExPVEVOVFJZIC0+IGBBc3NvYyBbIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIgXVxuICB8IFBSSU5UIChmLCB0KSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgXCJ0ZXh0XCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSB0KTtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cbiAgfCBTUEVDSUVTIChmLCBpZHMsIHRlc3RzKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICAgIFwicGF0dGVyblwiLCBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiBpZHM7XG4gICAgICAgICggXCJ0ZXN0c1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uKSlcbiAgICAgICAgICAgIHRlc3RzICk7XG4gICAgICBdXG4gIHwgU1BFQ0lFU19PRkYgZiAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIjtcbiAgICAgICAgXCJmaWxlXCIsIGBMaXN0IChMaXN0Lm1hcCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmKTtcbiAgICAgIF1cblxubGV0IG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gICAgLT5cbiAgICBQUklOVFxuICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBmLFxuICAgICAgICBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0IClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF0gLT5cbiAgICBQUklOVCAoW10sIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHQpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcImtpbmRcIiwga2luZCkgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKTsgKFwiZmlsZVwiLCBgTGlzdCBmKSBdXG4gIHwgYEFzc29jIFsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdIC0+XG4gICAgRElOIChkaW5fa2luZF9vZl95b2pzb24ga2luZCwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZilcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKTsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YXJcIiwgYEludCB2KTsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWx1ZVwiLCBlKTsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICh2LCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGUpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJydWxlXCIsIHIpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcInJlcGVhdHNcIiwgbik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKSBdIC0+XG4gICAgSVRFUl9SVUxFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbixcbiAgICAgICAgcnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcyByIClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBMT1ROT1dcIikgXSAtPiBQTE9URU5UUllcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXSAtPlxuICAgIERJTk9GRiBbXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgbClcbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF1cbiAgICAtPlxuICAgIFNOQVBTSE9UIChyYXcsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcImZpbGVcIiwgYE51bGwpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gIHwgYEFzc29jIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIik7IChcInJhd1wiLCBgQm9vbCByYXcpIF0gLT5cbiAgICBTTkFQU0hPVCAocmF3LCBbXSlcbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXSAtPlxuICAgIFNOQVBTSE9UIChmYWxzZSwgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIFtdXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiQ0ZMT1dcIiAtPlxuICAgIENGTE9XXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XT0ZGXCJcbiAgICAtPlxuICAgIENGTE9XT0ZGXG4gICAgICAoIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJuYW1lXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKTsgKFwiZmlsZVwiLCBwKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBwKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTUEVDSUVTX09GRlwiKSBdIC0+XG4gICAgU1BFQ0lFU19PRkYgKEpzb25VdGlsLnRvX2xpc3QgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgcClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJTUEVDSUVTXCJcbiAgICAtPlxuICAgIFNQRUNJRVNcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImZpbGVcIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicGF0dGVyblwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi50ZXN0X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGVzdHNcIiBsKSApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG1vZGlmaWNhdGlvblwiLCB4KSlcblxudHlwZSBwZXJ0dXJiYXRpb24gPSB7XG4gIGFsYXJtOiBOYnIudCBvcHRpb247XG4gIHByZWNvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkO1xuICBlZmZlY3Q6IG1vZGlmaWNhdGlvbiBsaXN0O1xuICByZXBlYXQ6IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgbmVlZHNfYmFja3RyYWNrOiBib29sO1xufVxuXG5sZXQgYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBib29sX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgPVxuICBBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uKSlcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcyBwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJhbGFybVwiLCBKc29uVXRpbC5vZl9vcHRpb24gKGZ1biBuIC0+IE5ici50b195b2pzb24gbikgcC5hbGFybTtcbiAgICAgICggXCJjb25kaXRpb25cIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucHJlY29uZGl0aW9uICk7XG4gICAgICBcImVmZmVjdFwiLCBKc29uVXRpbC5vZl9saXN0IChtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpIHAuZWZmZWN0O1xuICAgICAgKCBcInJlcGVhdFwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgcC5yZXBlYXQgKTtcbiAgICAgIFwibmVlZHNfYmFja3RyYWNrXCIsIGBCb29sIHAubmVlZHNfYmFja3RyYWNrO1xuICAgIF1cblxubGV0IHBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA1IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFsYXJtID0gSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJhbGFybVwiIGwpO1xuICAgICAgICAgcHJlY29uZGl0aW9uID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZGl0aW9uXCIgbCk7XG4gICAgICAgICBlZmZlY3QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKG1vZGlmaWNhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImVmZmVjdFwiIGwpO1xuICAgICAgICAgcmVwZWF0ID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmVwZWF0XCIgbCk7XG4gICAgICAgICBuZWVkc19iYWNrdHJhY2sgPVxuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbFwiLCB4KSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJuZWVkc19iYWNrdHJhY2tcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwZXJ0dXJiYXRpb25cIiwgeCkpXG5cbmxldCBleGlzdHNfbW9kaWZpY2F0aW9uIGNoZWNrIGwgPVxuICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgcCAtPiBhY2MgfHwgTGlzdC5leGlzdHMgY2hlY2sgcC5lZmZlY3QpIGZhbHNlIGxcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgYWNjXG4gICAgKEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBlID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgYSAtPiBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3QgYSkgYWNjKSlcbiAgICBbXVxuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSlcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZSBhY2MgciA9XG4gIGxldCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgeClcbiAgICAgIGFjYyByLmRlbHRhX3Rva2Vuc1xuICBpblxuICBsZXQgYiA9XG4gICAgbWF0Y2ggci51bmFyeV9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gYVxuICAgIHwgU29tZSAoeCwgXykgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGEgeFxuICBpblxuICBsZXQgYyA9IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBiIHIucmF0ZSBpblxuICBMaXN0LnJldl9hcHBlbmQgKEFycmF5LnRvX2xpc3Qgci5jb25uZWN0ZWRfY29tcG9uZW50cykgY1xuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludCBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICBhY2MgeFxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gYWNjID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ydWxlXG4gICAgICAoZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlKVxuICAgICAgclxuICB8IFVQREFURSAoXywgZSkgLT4gZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19leHByIGFjYyBlXG4gIHwgU05BUFNIT1QgKF8sIHApIHwgU1RPUCBwIHwgU1BFQ0lFU19PRkYgcCB8IERJTiAoXywgcCkgfCBESU5PRkYgcCAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHBcbiAgfCBQUklOVCAoZm4sIHApIC0+XG4gICAgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wcmludFxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHApXG4gICAgICBmblxuICB8IENGTE9XIChfLCB4LCBfKSB8IENGTE9XT0ZGIChfLCB4KSB8IFNQRUNJRVMgKF8sIHgsIF8pIC0+XG4gICAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHgpIGFjY1xuICB8IFBMT1RFTlRSWSAtPiBhY2NcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9ucyBsID1cbiAgTGlzdC5mb2xkX2xlZnQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb24gW10gbFxuXG5sZXQgbWFwX2V4cHJfcnVsZSBmIHggPVxuICB7XG4gICAgcmF0ZSA9IGYgeC5yYXRlO1xuICAgIHVuYXJ5X3JhdGUgPSBPcHRpb25fdXRpbC5tYXAgKGZ1biAoeCwgZCkgLT4gZiB4LCBkKSB4LnVuYXJ5X3JhdGU7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPSB4LmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHJlbW92ZWQgPSB4LnJlbW92ZWQ7XG4gICAgaW5zZXJ0ZWQgPSB4Lmluc2VydGVkO1xuICAgIGRlbHRhX3Rva2VucyA9IExpc3QubWFwIChmdW4gKHgsIHQpIC0+IGYgeCwgdCkgeC5kZWx0YV90b2tlbnM7XG4gICAgc3ludGFjdGljX3J1bGUgPSB4LnN5bnRhY3RpY19ydWxlO1xuICAgIGluc3RhbnRpYXRpb25zID0geC5pbnN0YW50aWF0aW9ucztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3J1bGUgZiB4IHIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjICh5LCBfKSAtPiBmIGFjYyB5KVxuICAgIChPcHRpb25fdXRpbC5mb2xkIChmdW4gYSAoZSwgXykgLT4gZiBhIGUpIChmIHggci5yYXRlKSByLnVuYXJ5X3JhdGUpXG4gICAgci5kZWx0YV90b2tlbnNcblxubGV0IG1hcF9leHByX21vZGlmaWNhdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IElURVJfUlVMRSAoZiBlLCBtYXBfZXhwcl9ydWxlIGYgcilcbiAgfCBVUERBVEUgKGksIGUpIC0+IFVQREFURSAoaSwgZiBlKVxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+IFNOQVBTSE9UIChyYXcsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBTVE9QIHAgLT4gU1RPUCAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IFBSSU5UIChmbiwgcCkgLT4gUFJJTlQgKG1hcF9leHByX3ByaW50IGYgZm4sIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU4gKGIsIHApIC0+IERJTiAoYiwgbWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IERJTk9GRiBwIC0+IERJTk9GRiAobWFwX2V4cHJfcHJpbnQgZiBwKVxuICB8IChDRkxPVyBfIHwgQ0ZMT1dPRkYgXyB8IFNQRUNJRVNfT0ZGIF8gfCBQTE9URU5UUlkpIGFzIHggLT4geFxuICB8IFNQRUNJRVMgKHAsIHgsIHQpIC0+IFNQRUNJRVMgKG1hcF9leHByX3ByaW50IGYgcCwgeCwgdClcblxubGV0IGZvbGRfZXhwcl9tb2RpZmljYXRpb24gZiB4ID0gZnVuY3Rpb25cbiAgfCBJVEVSX1JVTEUgKGUsIHIpIC0+IGZvbGRfZXhwcl9ydWxlIGYgKGYgeCBlKSByXG4gIHwgVVBEQVRFIChfLCBlKSAtPiBmIHggZVxuICB8IFNOQVBTSE9UIChfLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcbiAgfCBTVE9QIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiAoZm9sZF9leHByX3ByaW50IGYgeCBwKSBmblxuICB8IERJTiAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgRElOT0ZGIHAgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZIC0+IHhcbiAgfCBTUEVDSUVTIChwLCBfLCBfKSAtPiBmb2xkX2V4cHJfcHJpbnQgZiB4IHBcblxubGV0IG1hcF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgeCA9XG4gIHtcbiAgICBhbGFybSA9IHguYWxhcm07XG4gICAgcHJlY29uZGl0aW9uID0gZl9ib29sIHgucHJlY29uZGl0aW9uO1xuICAgIGVmZmVjdCA9IExpc3QubWFwIChtYXBfZXhwcl9tb2RpZmljYXRpb24gZl9hbGcpIHguZWZmZWN0O1xuICAgIHJlcGVhdCA9IGZfYm9vbCB4LnJlcGVhdDtcbiAgICBuZWVkc19iYWNrdHJhY2sgPSB4Lm5lZWRzX2JhY2t0cmFjaztcbiAgfVxuXG5sZXQgZm9sZF9leHByX3BlcnR1cmJhdGlvbiBmX2FsZyBmX2Jvb2wgYWNjIHggPVxuICBsZXQgYTEgPSBmX2Jvb2wgYWNjIHgucHJlY29uZGl0aW9uIGluXG4gIGxldCBhMiA9IExpc3QuZm9sZF9sZWZ0IChmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSBhMSB4LmVmZmVjdCBpblxuICBmX2Jvb2wgYTIgeC5yZXBlYXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYW5ub3QpIGxpbmsgPVxuICB8IEFOWV9GUkVFXG4gIHwgTE5LX1ZBTFVFIG9mIGludCAqICdhbm5vdFxuICB8IExOS19GUkVFXG4gIHwgTE5LX0FOWVxuICB8IExOS19TT01FXG4gIHwgTE5LX1RZUEUgb2YgJ2EgKiAnYSAgKCoqIHBvcnQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgc3dpdGNoaW5nID0gTGlua2VkIG9mIGludCB8IEZyZWVkIHwgTWFpbnRhaW5lZCB8IEVyYXNlZFxuXG50eXBlIHJ1bGVfaW50ZXJuYWwgPVxuICB8IElfQU5ZXG4gIHwgSV9BTllfQ0hBTkdFRCBvZiBpbnRcbiAgfCBJX0FOWV9FUkFTRURcbiAgfCBJX1ZBTF9DSEFOR0VEIG9mIGludCAqIGludFxuICB8IElfVkFMX0VSQVNFRCBvZiBpbnRcblxudHlwZSBydWxlX2FnZW50ID0ge1xuICByYV90eXBlOiBpbnQ7XG4gIHJhX2VyYXNlZDogYm9vbDtcbiAgcmFfcG9ydHM6ICgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5O1xuICByYV9pbnRzOiBydWxlX2ludGVybmFsIGFycmF5O1xuICByYV9zeW50YXg6XG4gICAgKCgoaW50LCBpbnQgKiBpbnQpIGxpbmsgTG9jLmFubm90ZWQgKiBzd2l0Y2hpbmcpIGFycmF5XG4gICAgKiBydWxlX2ludGVybmFsIGFycmF5KVxuICAgIG9wdGlvbjtcbn1cblxudHlwZSBydWxlX21peHR1cmUgPSBydWxlX2FnZW50IGxpc3RcblxudHlwZSBydWxlID0ge1xuICByX21peDogcnVsZV9taXh0dXJlO1xuICByX2NyZWF0ZWQ6IFJhd19taXh0dXJlLnQ7XG4gIHJfZGVsdGFfdG9rZW5zOiAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogaW50KSBsaXN0O1xuICByX3JhdGU6IChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAgcl91bl9yYXRlOlxuICAgICgocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICByX2VkaXRfc3R5bGU6IGJvb2w7XG59XG5cbmxldCBwcmludF9saW5rIHByX3BvcnQgcHJfdHlwZSBwcl9hbm5vdCBmID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCIgKHByX3BvcnQgYSkgcCBwcl90eXBlIGFcbiAgfCBMTktfQU5ZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIlxuICB8IExOS19GUkVFIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIlxuICB8IExOS19TT01FIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIl9cIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpJWFcIiBpIHByX2Fubm90IGFcblxubGV0IGxpbmtfdG9fanNvbiBwb3J0X3RvX2pzb24gdHlwZV90b19qc29uIGFubm90X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEFOWV9GUkVFIC0+IGBTdHJpbmcgXCJBTllfRlJFRVwiXG4gIHwgTE5LX0ZSRUUgLT4gYFN0cmluZyBcIkZSRUVcIlxuICB8IExOS19UWVBFIChwLCBhKSAtPiBgTGlzdCBbIHBvcnRfdG9fanNvbiBhIHA7IHR5cGVfdG9fanNvbiBhIF1cbiAgfCBMTktfQU5ZIC0+IGBOdWxsXG4gIHwgTE5LX1NPTUUgLT4gYFN0cmluZyBcIlNPTUVcIlxuICB8IExOS19WQUxVRSAoaSwgYSkgLT4gYExpc3QgKGBJbnQgaSA6OiBhbm5vdF90b19qc29uIGEpXG5cbmxldCBsaW5rX29mX2pzb24gcG9ydF9vZl9qc29uIHR5cGVfb2ZfanNvbiBhbm5vdGVkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJBTllfRlJFRVwiIC0+IEFOWV9GUkVFXG4gIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBMTktfRlJFRVxuICB8IGBMaXN0IFsgcDsgYSBdIC0+XG4gICAgbGV0IHggPSB0eXBlX29mX2pzb24gYSBpblxuICAgIExOS19UWVBFIChwb3J0X29mX2pzb24geCBwLCB4KVxuICB8IGBOdWxsIC0+IExOS19BTllcbiAgfCBgU3RyaW5nIFwiU09NRVwiIC0+IExOS19TT01FXG4gIHwgYExpc3QgKGBJbnQgaSA6OiAoKFtdIHwgXyA6OiBfIDo6IF8pIGFzIGEpKSAtPlxuICAgIExOS19WQUxVRSAoaSwgYW5ub3RlZF9vZl9qc29uIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgbGlua1wiLCB4KSlcblxubGV0IHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzIGYgKHMsIGEpID1cbiAgaWYgbHR5cGVzIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLyolYS4lYSovXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGEpXG4gICAgICBzXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhXG5cbmxldCBwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMvJWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyMldH1cIiAoZnVuIGYgLT5cbiAgICAgICAgaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuICB8IElfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgaWYgaSA8PiBqIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWEvJWF9XCJcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGlcbiAgICAgICAgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpXG4gICAgICAgIGpcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJXR9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcbiAgICAgIChmdW4gZiAtPiBpZiBzaG93X2VyYXNlZCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi0tXCIpXG5cbmxldCBydWxlX2ludGVybmFsX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+IGBOdWxsXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+IGBMaXN0IFsgYFN0cmluZyBcIkFOWVwiOyBgSW50IGogXVxuICB8IElfQU5ZX0VSQVNFRCAtPiBgU3RyaW5nIFwiRVJBU0VEXCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF1cbiAgfCBJX1ZBTF9FUkFTRUQgaSAtPiBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF1cblxubGV0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gSV9BTllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF0gLT4gSV9BTllfQ0hBTkdFRCBqXG4gIHwgYFN0cmluZyBcIkVSQVNFRFwiIC0+IElfQU5ZX0VSQVNFRFxuICB8IGBMaXN0IFsgYEludCBpOyBgSW50IGogXSAtPiBJX1ZBTF9DSEFOR0VEIChpLCBqKVxuICB8IGBMaXN0IFsgYEludCBpOyBgU3RyaW5nIFwiRVJBU0VEXCIgXSAtPiBJX1ZBTF9FUkFTRUQgaVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHJ1bGVfaW50ZXJuYWxcIiwgeCkpXG5cbmxldCBwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkIGYgPSBmdW5jdGlvblxuICB8IExpbmtlZCBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWlcIiBpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLy5cIlxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiXG5cbmxldCBzd2l0Y2hpbmdfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZWQgLT4gYFN0cmluZyBcIkZyZWVkXCJcbiAgfCBNYWludGFpbmVkIC0+IGBTdHJpbmcgXCJNYWludGFpbmVkXCJcbiAgfCBFcmFzZWQgLT4gYFN0cmluZyBcIkVyYXNlZFwiXG4gIHwgTGlua2VkIGkgLT4gSnNvblV0aWwub2ZfaW50IGlcblxubGV0IHN3aXRjaGluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiRnJlZWRcIiAtPiBGcmVlZFxuICB8IGBTdHJpbmcgXCJNYWludGFpbmVkXCIgLT4gTWFpbnRhaW5lZFxuICB8IGBTdHJpbmcgXCJFcmFzZWRcIiAtPiBFcmFzZWRcbiAgfCB4IC0+IExpbmtlZCAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJJbnZhbGlkIFN3aXRjaGluZ1wiIHgpXG5cbmxldCBwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcyBmICgoZSwgXyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgKHByaW50X2xpbmtcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKSlcbiAgICBlXG4gICAgKHByaW50X3N3aXRjaGluZyB+c2hvd19lcmFzZWQpXG4gICAgc1xuXG5sZXQgcHJpbnRfY291bnRlcl90ZXN0IGYgPSBmdW5jdGlvblxuICB8IGMsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIGNcbiAgfCBjLCBmYWxzZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIGNcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgY291bnRlcnMgaiBmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaCB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaSBpblxuICAgIGxldCBzLCAoXywgaXNfY291bnRlcikgPSBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgaW5cbiAgICBsZXQgZGVsdGEgPVxuICAgICAgaWYgaXNfY291bnRlciB0aGVuXG4gICAgICAgIHMgLSAxXG4gICAgICBlbHNlXG4gICAgICAgIGogLSBpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLys9JWRcIiBkZWx0YVxuICB8IEZyZWVkIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJDYW5ub3QgZXJhc2UgYWxsIGluY3JlbWVudCBhZ2VudHNcIikpXG4gIHwgTWFpbnRhaW5lZCAtPiAoKVxuICB8IEVyYXNlZCAtPiAoKVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRmIH5ub0NvdW50ZXJzIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgYWdfdHkgZlxuICAgIChwb3J0cywgaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPiBpbnRzLihpKSA8PiBJX0FOWVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgKEVyYXNlZCB8IEZyZWVkIHwgTGlua2VkIF8pXG4gICAgICAgIHwgKChMTktfU09NRSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKGUsIF8pLCBzd2l0Y2ggPSBwb3J0cy4oaSkgaW5cbiAgICAgICAgbGV0IGlzX2NvdW50ZXIgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gZmFsc2VcbiAgICAgICAgICB8IExOS19WQUxVRSAoaiwgXykgLT5cbiAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCBjb3VudGVycyBqIGluXG4gICAgICAgICAgICAgICBsZXQgYywgKGVxLCBpc19jb3VudGVyJykgPVxuICAgICAgICAgICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVycy5SYXdfbWl4dHVyZS5yYW5rIHJvb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBpc19jb3VudGVyJyAmJiBub3Qgbm9Db3VudGVycyB0aGVuIChcbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWF7JWElYX1cIlxuICAgICAgICAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICAgICAgIGkgcHJpbnRfY291bnRlcl90ZXN0XG4gICAgICAgICAgICAgICAgICAgKGMgLSAxLCBlcSlcbiAgICAgICAgICAgICAgICAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjcmVhdGVkX2NvdW50ZXJzIGopXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBub3QgaXNfY291bnRlciB0aGVuXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhJWFcIlxuICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfaW50ZXJuYWwgc2lncyB+c2hvd19lcmFzZWQgYWdfdHkgaSlcbiAgICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgICAgKHByaW50X3J1bGVfbGluayBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzKVxuICAgICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgdW5pb25fZmluZF9jb3VudGVycyBzaWdzIG1peCA9XG4gIGxldCB0ID0gUmF3X21peHR1cmUuY3JlYXRlIDEgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gYWcgLT5cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUucG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnLnJhX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCAoYSwgXyksIF8gPSBhZy5yYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgKGIsIF8pLCBfID0gYWcucmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBMTktfVFlQRSBfIHwgTE5LX1NPTUUgLT4gKClcbiAgICAgICAgICAgIHwgTE5LX1ZBTFVFIChsbmtfYiwgXykgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2EsIF8pIC0+IFJhd19taXh0dXJlLnVuaW9uIHQgbG5rX2IgbG5rX2FcbiAgICAgICAgICAgICAgfCBBTllfRlJFRSB8IExOS19GUkVFIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsICh0cnVlLCB0cnVlKSlcbiAgICAgICAgICAgICAgfCBMTktfQU5ZIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5SYXdfbWl4dHVyZS5yYW5rIHJvb3QgKHMsIChmYWxzZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUG9ydCBhIG9mIF9fY291bnRlcl9hZ2VudCBhZ2VudCBub3Qgd2VsbCBzcGVjaWZpZWRcIikpKSkpXG4gICAgICAgIG1peFxuICBpblxuICB0XG5cbmxldCBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVycyBjcmVhdGVkX2NvdW50ZXJzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5yYV90eXBlXG4gICAgKHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZDpmYWxzZSB+bHR5cGVzIGFnLnJhX3R5cGUpXG4gICAgKGFnLnJhX3BvcnRzLCBhZy5yYV9pbnRzLCBjb3VudGVycywgY3JlYXRlZF9jb3VudGVycykgKGZ1biBmIC0+XG4gICAgICBpZiBhZy5yYV9lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItXCIpXG5cbmxldCBwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIChTb21lIHNpZ3MpIG1peCBpblxuICBsZXQgY3JlYXRlZF9pbmNyID0gUmF3X21peHR1cmUudW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBjcmVhdGVkIGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLnJhX3R5cGUgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9ydWxlX2FnZW50IH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjb3VudGVyX2FnZW50cyBjcmVhdGVkX2luY3JcbiAgICAgICAgICAgIGYgaFxuICAgICAgICBpblxuICAgICAgICBhdXhfcHJpbnQgdHJ1ZSB0XG4gICAgICApXG4gIGluXG4gIGF1eF9wcmludCBmYWxzZSBtaXhcblxubGV0IHByaW50X2ludGVybmFsX2xocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuXG5sZXQgcHJpbnRfaW50ZXJuYWxfcmhzIHNpZ3MgYWdfdHkgc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiAoKVxuICB8IElfQU5ZX0NIQU5HRUQgaiB8IElfVkFMX0NIQU5HRUQgKF8sIGopIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgalxuICB8IElfQU5ZX0VSQVNFRCB8IElfVkFMX0VSQVNFRCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzIGYgKChlLCBfKSwgXykgPVxuICBwcmludF9saW5rXG4gICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncylcbiAgICBmIGVcblxubGV0IHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIHMpID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgTGlua2VkIGkgLT5cbiAgICBwcmludF9saW5rXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncylcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIChmdW4gXyAoKSAtPiAoKSlcbiAgICAgIGZcbiAgICAgIChMTktfVkFMVUUgKGksICgpKSlcbiAgfCBGcmVlZCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBNYWludGFpbmVkIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgICBmIGVcbiAgfCBFcmFzZWQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBfIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfRVJBU0VEIHwgSV9BTllfQ0hBTkdFRCBfIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX2xocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2ludGZfcmhzIH5sdHlwZXMgc2lncyBhZ190eSBmIChwb3J0cywgaW50cykgPVxuICBsZXQgcmVjIGF1eCBlbXB0eSBpID1cbiAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICAgIHwgKChMTktfU09NRSB8IExOS19GUkVFIHwgQU5ZX0ZSRUUgfCBMTktfVFlQRSBfIHwgTE5LX1ZBTFVFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKSAtPiB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCBNYWludGFpbmVkIC0+XG4gICAgICAgICAgKG1hdGNoIGludHMuKGkpIHdpdGhcbiAgICAgICAgICB8IElfQU5ZIC0+IGZhbHNlXG4gICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPiBpIDw+IGpcbiAgICAgICAgICB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyB8IElfVkFMX0VSQVNFRCBfIC0+IHRydWUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhWyVhXVwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgaVxuICAgICAgICAgICAgKHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IGkpXG4gICAgICAgICAgICBpbnRzLihpKVxuICAgICAgICAgICAgKHByaW50X2xpbmtfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgICBpblxuICAgICAgICBhdXggZmFsc2UgKHN1Y2MgaSlcbiAgICAgICkgZWxzZVxuICAgICAgICBhdXggZW1wdHkgKHN1Y2MgaSlcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgcHJpbnRfYWdlbnRfbGhzIH5sdHlwZXMgc2lncyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSlcIlxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICBhZy5yYV90eXBlXG4gICAgKHByaW50X2ludGZfbGhzIH5sdHlwZXMgc2lncyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIGlmIG5vdCBhZy5yYV9lcmFzZWQgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgIGFnLnJhX3R5cGVcbiAgICAgIChwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cylcblxubGV0IHByaW50X3JocyB+bm9Db3VudGVycyB+bHR5cGVzIHNpZ3MgY3JlYXRlZCBmIG1peCA9XG4gIGxldCByZWMgYXV4IGVtcHR5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+aW5pdGlhbF9jb21tYToobm90IGVtcHR5KSB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICB+c2lncyBmIGNyZWF0ZWRcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgaC5yYV9lcmFzZWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0LlwiXG4gICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBQcC5jb21tYSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgICAgICAocHJpbnRfYWdlbnRfcmhzIH5sdHlwZXMgc2lncylcbiAgICAgICAgICAgIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4IHRydWUgbWl4XG5cbmxldCBwcmludF9yYXRlcyB+bm9Db3VudGVycyBzaWdzIHByX3RvayBwcl92YXIgZiByID1cbiAgbGV0IGx0eXBlcyA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgQEAgJWEldFwiXG4gICAgKEFsZ19leHByLnByaW50XG4gICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgIG0pXG4gICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAoZnN0IHIucl9yYXRlKVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX3VuX3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChyYSwgXyksIG1heF9kaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiXG4gICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgcHJfdG9rIHByX3ZhcilcbiAgICAgICAgICByYVxuICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIChtZCwgXykgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIlxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgICAgICAgIG1kKSlcbiAgICAgICAgICBtYXhfZGlzdClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGwgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiV0JXQlYSV0QF1cIlxuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB8fCByLnJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooci5yX21peCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYSAtPiAlYVwiXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FnZW50X2xocyB+bHR5cGVzOmZhbHNlIHNpZ3MpKVxuICAgICAgICAgIHIucl9taXhcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgci5yX21peCA8PiBbXSAmJiByLnJfY3JlYXRlZCA8PiBbXSB0aGVuIFBwLmNvbW1hIGYpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKSlcbiAgICAgICAgICByLnJfY3JlYXRlZFxuICAgICAgICAgIChwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlczpmYWxzZSBzaWdzIHIucl9jcmVhdGVkKVxuICAgICAgICAgIHIucl9taXgpXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLnJfZGVsdGFfdG9rZW5zIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiAoKG5iLCBfKSwgdGspIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIlxuICAgICAgICAgICAoQWxnX2V4cHIucHJpbnRcbiAgICAgICAgICAgICAgKGZ1biBmIG0gLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgICAocHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSBbXSlcbiAgICAgICAgICAgICAgICAgIG0pXG4gICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgIG5iIHByX3RvayB0aykpXG4gICAgci5yX2RlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPiBpZiBmdWxsIHRoZW4gcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgcilcblxubGV0IHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMgYSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwidHlwZVwiLCBgSW50IGEucmFfdHlwZTtcbiAgICAgICggXCJiaW5kaW5nc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoZSwgcykgYyAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAocywgYSkgLT4gWyBgSW50IHM7IGBJbnQgYSBdKSlcbiAgICAgICAgICAgICAgICAgICAgIGU7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX3RvX2pzb24gcztcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogYylcbiAgICAgICAgICAgICBhLnJhX3BvcnRzIFtdKSApO1xuICAgICAgKCBcInN0YXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGMgLT4gcnVsZV9pbnRlcm5hbF90b19qc29uIHggOjogYylcbiAgICAgICAgICAgICBhLnJhX2ludHMgW10pICk7XG4gICAgICBcImVyYXNlZFwiLCBgQm9vbCBhLnJhX2VyYXNlZDtcbiAgICBdXG5cbmxldCBydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDQgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiaW5kaW5nc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+XG4gICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgZTsgcyBdIC0+XG4gICAgICAgICAgICAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgIChsaW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgYEludCBzOyBgSW50IGEgXSAtPiBzLCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpKVxuICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmdfb2ZfanNvbiBzIClcbiAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAgbGV0IGludHMgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcInN0YXRlc1wiIGwgd2l0aFxuICAgICAgICAgfCBgTGlzdCBzIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHJ1bGVfaW50ZXJuYWxfb2ZfanNvbiBzXG4gICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICByYV90eXBlID0gWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChMaXN0LmFzc29jIFwidHlwZVwiIGwpO1xuICAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICAgcmFfZXJhc2VkID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVyYXNlZFwiIGwpO1xuICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAocG9ydHMsIGludHMpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJ1bGVfYWdlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKVxuXG5sZXQgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgSnNvblV0aWwub2ZfbGlzdCAocnVsZV9hZ2VudF90b19qc29uIGZpbGVuYW1lcylcblxubGV0IHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLnRvX2xpc3QgKHJ1bGVfYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpXG5cbmxldCBsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcylcbiAgICBKc29uVXRpbC5vZl9pbnRcblxubGV0IGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAocnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b19qc29uIH5maWxlbmFtZXMgciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwibWl4dHVyZVwiLCBydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMgci5yX21peDtcbiAgICAgIFwiY3JlYXRlZFwiLCBSYXdfbWl4dHVyZS50b19qc29uIHIucl9jcmVhdGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludClcbiAgICAgICAgICByLnJfZGVsdGFfdG9rZW5zICk7XG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSByLnJfcmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykpKSlcbiAgICAgICAgICByLnJfdW5fcmF0ZSApO1xuICAgICAgXCJlZGl0X3N0eWxlXCIsIGBCb29sIHIucl9lZGl0X3N0eWxlO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDcgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcl9taXggPSBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgKExpc3QuYXNzb2MgXCJtaXh0dXJlXCIgbCk7XG4gICAgICAgICByX2NyZWF0ZWQgPSBSYXdfbWl4dHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwiY3JlYXRlZFwiIGwpO1xuICAgICAgICAgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImRlbHRhX3Rva2Vuc1wiIGwpO1xuICAgICAgICAgcl9yYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicmF0ZVwiIGwpO1xuICAgICAgICAgcl91bl9yYXRlID1cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIChsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmFyeV9yYXRlXCIgbClcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpO1xuICAgICAgICAgcl9lZGl0X3N0eWxlID0gWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBcImVkaXRfc3R5bGVcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJ1bGVcIiwgeCkpXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gcG9zID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBIG1vZGlmaWNhdGlvbiBpcyBmb3JiaWRkZW4gaGVyZS5cIiwgcG9zKSlcblxubGV0IHJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoXCJJbiBhIHBhdHRlcm4sIGEgc2l0ZSBjYW5ub3QgaGF2ZSBzZXZlcmFsIGludGVybmFsIHN0YXRlcy5cIiwgcG9zKSlcblxubGV0IHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXMgfnNpZGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBcIiBeIHN0YXR1cyBeIFwiIHN0YXRlIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWUgXiBcIicsIHNpdGUgJ1wiIF4gbmFcbiAgICAgICAgIF4gXCInIG9uIHRoZSBcIiBeIHNpZGUgXiBcIiBoYW5kIHNpZGUgaXMgdW5kZXJzcGVjaWZpZWRcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiU2l0ZSAnXCIgXiBuYSBeIFwiJyBvY2N1cnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhpcyBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIGJvdGggYXMgcG9ydCBhbmQgYXMgY291bnRlciBpbiAnXCJcbiAgICAgICAgIF4gYWdlbnRfbmFtZSBeIFwiJ1wiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCByYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvcyA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICBeIFwiJyBvY2N1cnMgb25seSBvbmUgdGltZSBpbiB0aGUgbWl4dHVyZS5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIicgc2hvdWxkIGJlIG1hZGUgZnJlZSBpbiB0aGUgc2l0ZSAnXCJcbiAgICAgICAgIF4gbmEgXiBcIicgb2YgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIicsIHNpbmNlIGl0IHdpbGwgbWFkZSBiZSBmcmVlIGJ5IHNpZGUtZWZmZWN0LlwiLFxuICAgICAgICAgcG9zICkpXG5cbmxldCBjb3B5X3J1bGVfYWdlbnQgYSA9XG4gIGxldCBwID0gQXJyYXkuY29weSBhLnJhX3BvcnRzIGluXG4gIGxldCBpID0gQXJyYXkuY29weSBhLnJhX2ludHMgaW5cbiAge1xuICAgIHJhX3R5cGUgPSBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkID0gYS5yYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHMgPSBwO1xuICAgIHJhX2ludHMgPSBpO1xuICAgIHJhX3N5bnRheCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biBfIC0+IEFycmF5LmNvcHkgcCwgQXJyYXkuY29weSBpKSBhLnJhX3N5bnRheDtcbiAgfVxuXG5sZXQgYWdlbnRfdG9fZXJhc2VkIHNpZ3MgciA9XG4gIGxldCByYV9wb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBFcmFzZWQpIHIucmFfcG9ydHMgaW5cbiAgbGV0IHJhX2ludHMgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfRVJBU0VEIGlcbiAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgIChtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJX0FOWV9FUkFTRURcbiAgICAgICAgICB8IE5vbmUgLT4gSV9BTlkpKVxuICAgICAgci5yYV9pbnRzXG4gIGluXG4gIHtcbiAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPVxuICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgXyAtPiBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpKTtcbiAgfVxuXG5sZXQgdG9fZXJhc2VkIChzaWdzIDogU2lnbmF0dXJlLnMpICh4IDogcnVsZV9taXh0dXJlKSA6IHJ1bGVfbWl4dHVyZSA9XG4gIExpc3QubWFwIChhZ2VudF90b19lcmFzZWQgc2lncykgeFxuXG5sZXQgdG9fbWFpbnRhaW5lZCAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IHBvcnRzID0gQXJyYXkubWFwIChmdW4gKGEsIF8pIC0+IGEsIE1haW50YWluZWQpIHIucmFfcG9ydHMgaW5cbiAgICAgIGxldCBpbnRzID1cbiAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IElfVkFMX0NIQU5HRUQgKGksIF8pIHwgSV9WQUxfRVJBU0VEIGkgLT4gSV9WQUxfQ0hBTkdFRCAoaSwgaSlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT4gSV9BTlkpXG4gICAgICAgICAgci5yYV9pbnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICByYV90eXBlID0gci5yYV90eXBlO1xuICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgcmFfaW50cyA9IGludHM7XG4gICAgICAgIHJhX3N5bnRheCA9XG4gICAgICAgICAgKG1hdGNoIHIucmFfc3ludGF4IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBfIC0+IFNvbWUgKHBvcnRzLCBpbnRzKSk7XG4gICAgICB9KVxuICAgIHhcblxubGV0IHRvX3Jhd19taXh0dXJlIHNpZ3MgeCA9XG4gIExpc3QubWFwXG4gICAgKGZ1biByIC0+XG4gICAgICBsZXQgaW50ZXJuYWxzID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IFNvbWUgaVxuICAgICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0NIQU5HRUQgXyB8IElfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSByLnJhX3R5cGUgaiBzaWdzKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgKExOS19TT01FLCBwb3MgfCBMTktfVFlQRSBfLCBwb3MpLCBfIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgci5yYV90eXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBwb3J0X25hbWUgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgci5yYV90eXBlKSBqXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICBhZ2VudF9uYW1lIChwb3J0X25hbWUsIHBvcylcbiAgICAgICAgICAgIHwgKExOS19WQUxVRSAoaSwgXyksIF8pLCBfIC0+IFJhd19taXh0dXJlLlZBTCBpXG4gICAgICAgICAgICB8ICgoTE5LX0FOWSB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUpLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5GUkVFKVxuICAgICAgICAgIHIucmFfcG9ydHNcbiAgICAgIGluXG4gICAgICB7XG4gICAgICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICB9KVxuICAgIHhcblxubGV0IG1heF9saW5rX2lkIHIgPVxuICBsZXQgbWF4X3MgbSA9IGZ1bmN0aW9uXG4gICAgfCBMaW5rZWQgaSAtPiBtYXggaSBtXG4gICAgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWQgLT4gbVxuICBpblxuICBsZXQgbWF4X2xpbmtfaWRfc2l0ZXMgbWF4X2lkIGFnID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gbWF4X2lkIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgKExOS19WQUxVRSAoaiwgXyksIF8pLCBzIC0+IG1heF9zIChtYXggaiBtYXhfaWQpIHNcbiAgICAgICAgfCAoKExOS19UWVBFIF8gfCBMTktfU09NRSB8IExOS19GUkVFIHwgTE5LX0FOWSB8IEFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICBtYXhfcyBtYXhfaWQgcylcbiAgICAgIG1heF9pZCBhZy5yYV9wb3J0c1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBtYXhfbGlua19pZF9zaXRlcyAwIHJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgKCBcIkJ1ZzogTGluayBcIiBeIHN0cmluZ19vZl9pbnQga2V5XG4gICAgICAgICBeIFwiIGlzIHByb2JsZW1hdGljISBMS2FwcGEgaXMgZWl0aGVyIGJyb2tlblwiXG4gICAgICAgICBeIFwiIG9yIHVudXNlZCEgUGxlYXNlIHJlcG9ydC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBwX2lkID1cbiAgc25kIGNvbnRhY3RfbWFwLih0eV9pZCkuKHBfaWQpXG5cbmxldCBmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwIGFncyA9XG4gIGxldCBuZXdfc3dpdGNoID0gZnVuY3Rpb25cbiAgICB8IExLYXBwYS5NYWludGFpbmVkIC0+IExLYXBwYS5NYWludGFpbmVkXG4gICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+IExLYXBwYS5GcmVlZFxuICBpblxuICBsZXQgcmVjIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgaSA9XG4gICAgbGV0IHR5X2lkID0gYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW4gKFxuICAgICAgbGV0IGN1cnJlbnQnID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgfVxuICAgICAgICA6OiBjdXJyZW50XG4gICAgICBpblxuICAgICAgYXV4X2FncyBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQnIHRvZG9zIGFnX3RhaWxcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAocCwgYSksIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcG9ydHMuKGkpIDwtXG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSAoc3VjYyBmcmVlX2lkKSBwcmV2aW91cyBjdXJyZW50XG4gICAgICAgICAgKChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zKVxuICAgICAgICAgIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKExLYXBwYS5MTktfU09NRSwgXyksIHMgLT5cbiAgICAgICAgbGV0IG9yX3R5ID0gaSwgdHlfaWQgaW5cbiAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIChhLCBwKSBwcmV2JyAtPlxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgcG9ydHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvcnRzJy4oaSkgPC1cbiAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKHAsIGEpKSksIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdG9kb3MnID0gKGZyZWVfaWQsIChwLCBhKSwgb3JfdHksIG5ld19zd2l0Y2ggcykgOjogdG9kb3MgaW5cbiAgICAgICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldicgY3VycmVudCB0b2RvcycgYWdfdGFpbCBhZyBwb3J0cydcbiAgICAgICAgICAgICAgKHN1Y2MgaSkpXG4gICAgICAgICAgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICBwcmV2aW91c1xuICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIHBvcyksICgoTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkKSBhcyBzKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICgqIERvIG5vdCBtYWtlIHRlc3QgaWYgYmVpbmcgZnJlZSBpcyB0aGUgb25seSBwb3NzaWJpbGl0eSAqKVxuICAgICAgICAgIGlmIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIHBvcnRzLihpKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBMS2FwcGEuRnJlZWQgLT5cbiAgICAgICAgZmFpbHdpdGggXCJBIGZyZWUgc2l0ZSBjYW5ub3QgYmUgZnJlZWRcIlxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkxpbmtlZCBfIC0+XG4gICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICggKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIHBvcyksXG4gICAgICAgICAgKChMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkKSBhcyBzKSApIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmlzX2VtcHR5IChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgJiYgcyA9IExLYXBwYS5GcmVlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlzIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuTWFpbnRhaW5lZCBpblxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgIClcbiAgYW5kIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChMaXN0LnJldiBjdXJyZW50LCB0b2RvcykgOjogcHJldmlvdXNcbiAgICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgYWcuTEthcHBhLnJhX3BvcnRzIDBcbiAgaW5cbiAgYXV4X2FncyAoc3VjYyAoTEthcHBhLm1heF9saW5rX2lkIGFncykpIFtdIFtdIFtdIGFnc1xuXG5sZXQgY29tcGxldGVfd2l0aF9jYW5kaWRhdGUgb3V0cyBwcmV2cyBhZyBhZ190YWlsIGlkIHRvZG8gcF9pZCBkc3RfaW5mbyBwX3N3aXRjaFxuICAgID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgcG9ydCAtPlxuICAgICAgaWYgaSA8PiBwX2lkIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5BTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgcyA9IExLYXBwYS5NYWludGFpbmVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBwX3N3aXRjaFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlIGlmIHMgPSBMS2FwcGEuRXJhc2VkICYmIHBfc3dpdGNoID0gTEthcHBhLkZyZWVkIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBMaXN0LnJldl9hcHBlbmQgcHJldnNcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHMnO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgdG9kbyApXG4gICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChrLCB4KSwgXyksIHMgLT5cbiAgICAgICAgICBpZiB4ID0gZHN0X2luZm8gdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGosIF8sIChwJywgYScpLCBzdycpIC0+XG4gICAgICAgICAgICAgICAgICBqID0gayAmJiBpID0gcCcgJiYgYScgPSBhZy5MS2FwcGEucmFfdHlwZSAmJiBzdycgPSBwX3N3aXRjaClcbiAgICAgICAgICAgICAgICB0b2RvXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgXyBdLCB0b2RvJyAtPlxuICAgICAgICAgICAgICBsZXQgcG9ydHMnID0gQXJyYXkuY29weSBhZy5MS2FwcGEucmFfcG9ydHMgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgeCkpLCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICAgIHRvZG8nIClcbiAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICB8IFtdLCBfIC0+IGFjY1xuICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8ICgoTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1NPTUUpLCBfKSwgXyAtPiBhY2NcbiAgICAgICkpXG4gICAgb3V0cyBhZy5MS2FwcGEucmFfcG9ydHNcblxubGV0IG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBsaW5rIGRzdF9pbmZvIHN3aXRjaCA9XG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5X2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0ICgpID1cbiAgICBwb3J0cy4ocG9ydCkgPC1cbiAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChsaW5rLCBkc3RfaW5mbykpLCBzd2l0Y2hcbiAgaW5cbiAge1xuICAgIExLYXBwYS5yYV90eXBlID0gdHlfaWQ7XG4gICAgTEthcHBhLnJhX3BvcnRzID0gcG9ydHM7XG4gICAgTEthcHBhLnJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgTEthcHBhLnJhX2VyYXNlZCA9IGZhbHNlO1xuICAgIExLYXBwYS5yYV9zeW50YXggPSBOb25lO1xuICB9XG5cbmxldCByZWMgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKCgocG9ydCwgdHlfaWQpLCBkc3RfaW5mbywgcykgYXMgaW5mbykgYWNjXG4gICAgb3V0IHRvZG8gPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKCBMaXN0LnJldl9hcHBlbmQgYWNjXG4gICAgICAgIFsgbmV3X2FnZW50X3dpdGhfb25lX2xpbmsgc2lncyB0eV9pZCBwb3J0IGlkIGRzdF9pbmZvIHMgXSxcbiAgICAgIHRvZG8gKVxuICAgIDo6IG91dFxuICB8IGFnIDo6IGFnX3RhaWwgLT5cbiAgICBsZXQgb3V0X3RhaWwgPVxuICAgICAgYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgaW5mbyAoYWcgOjogYWNjKSBvdXQgdG9kbyBhZ190YWlsXG4gICAgaW5cbiAgICBpZiB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIHRoZW5cbiAgICAgIGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dF90YWlsIGFjYyBhZyBhZ190YWlsIGlkIHRvZG8gcG9ydCBkc3RfaW5mbyBzXG4gICAgZWxzZVxuICAgICAgb3V0X3RhaWxcblxubGV0IGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCAobSwgW10pIDo6IHQgLT4gYXV4IChtIDo6IGFjYykgdFxuICAgIHwgKG0sIChpZCwgaW5mbywgZHN0X2luZm8sIHMpIDo6IHRvZG8nKSA6OiB0IC0+XG4gICAgICBhdXggYWNjIChhZGRfb25lX2ltcGxpY2l0X2luZm8gc2lncyBpZCAoaW5mbywgZHN0X2luZm8sIHMpIFtdIHQgdG9kbycgbSlcbiAgaW5cbiAgYXV4IFtdIGxcblxubGV0IGlzX2xpbmtlZF9vbl9wb3J0IG1lIGkgaWQgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIChqLCBfKSwgXyksIF8gd2hlbiBpID0gaiAtPiBpZCA8PiBtZVxuICB8ICggKCAoIExLYXBwYS5MTktfVkFMVUUgXyB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgZmFsc2VcblxubGV0IGlzX2xpbmtlZF9vbiBpIGFnID1cbiAgVG9vbHMuYXJyYXlfZmlsdGVyIChpc19saW5rZWRfb25fcG9ydCAoLTEpIGkpIGFnLkxLYXBwYS5yYV9wb3J0cyA8PiBbXVxuXG5sZXQgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgcGxhY2VcbiAgICBzaXRlIChjYW5kLCBfKSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKGNhbmQgOjogcmVtb3ZlZCwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGUpIDo6IGFkZGVkKSxcbiAgICAgIGxpbmtzX3RyYW5zZiApXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkxpbmtlZCBpIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAuYWRkIGkgKHBsYWNlLCBzaXRlKSBsaW5rc190cmFuc2YgaW5cbiAgICAgIChjYW5kIDo6IHJlbW92ZWQsIGFkZGVkKSwgbGlua3NfdHJhbnNmJ1xuICAgIHwgU29tZSBkc3QnIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLnJlbW92ZSBpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgKCAoIGNhbmQgOjogcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmXG4gICAgcGxhY2Ugc2l0ZSBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExLYXBwYS5GcmVlZCAtPlxuICAgICggKHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5FcmFzZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiB0cmFuc2YsIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICB0cmFuc2YsIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCByZW1vdmVkLFxuICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGUpLCBkc3QnKSA6OiBhZGRlZCApLFxuICAgICAgICBsaW5rc190cmFuc2YnICkpXG5cbmxldCBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMgcGwgcyA9IGZ1bmN0aW9uXG4gIHwgTEthcHBhLkZyZWVkIC0+IEluc3RhbnRpYXRpb24uRnJlZSAocGwsIHMpIDo6IGFjdGlvbnNcbiAgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgLT4gYWN0aW9uc1xuXG5sZXQgYWRkX3NpZGVfc2l0ZSBzaWRlX3NpdGVzIGJ0IHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5FcmFzZWQgLT5cbiAgICAoKHBsLCBzKSwgYnQpIDo6IHNpZGVfc2l0ZXNcbiAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBzaWRlX3NpdGVzXG5cbmxldCBhZGRfZnJlZWRfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3RzIHBsIHMgPSBmdW5jdGlvblxuICB8IChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLCBMS2FwcGEuRnJlZWQgLT4gKHBsLCBzKSA6OiBzaWRlX2VmZmVjdHNcbiAgfCAoIChMS2FwcGEuTE5LX1ZBTFVFIF8sIF8pLFxuICAgICAgKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXykgKVxuICB8ICggKCAoIExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF9cbiAgICAgICAgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgXyApLFxuICAgICAgXyApIC0+XG4gICAgc2lkZV9lZmZlY3RzXG5cbmxldCBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIHNpZGVfZWZmZWN0cyBwbGFjZSByZWZpbmVkID1cbiAgbGV0IHJlYyBhdXggc2lkZV9lZmZlY3RzIHNpdGVfaWQgPVxuICAgIGlmIHNpdGVfaWQgPCAwIHRoZW5cbiAgICAgIHNpZGVfZWZmZWN0c1xuICAgIGVsc2VcbiAgICAgIGF1eFxuICAgICAgICAoYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbGFjZSBzaXRlX2lkIHJlZmluZWQuKHNpdGVfaWQpKVxuICAgICAgICAocHJlZCBzaXRlX2lkKVxuICBpblxuICBhdXggc2lkZV9lZmZlY3RzIChwcmVkIChBcnJheS5sZW5ndGggcmVmaW5lZCkpXG5cbigqIERlYWxzIHdpdGggdGVzdHMsIGVyYXN1cmUgaW50ZXJuYWwgc3RhdGUgY2hhbmdlIGFuZCByZWxlYXNlIChidXRcbiAgIG5vdCBiaW5kaW5nKSopXG5sZXQgbWFrZV9pbnN0YW50aWF0aW9uIHBsYWNlIGxpbmtzIGV2ZW50IHJlZl9wb3J0cyBpc19lcmFzZWQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICB7XG4gICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9IGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgIGFkZF9leHRyYV9zaWRlX2VmZmVjdHMgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IHBsYWNlXG4gICAgICAgICAgcmVmX3BvcnRzO1xuICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPSBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICB9XG4gIHwgU29tZSAocG9ydHMsIGludHMpIC0+XG4gICAgKG1hdGNoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCB0aGlzX2NjX3Rlc3RzIDo6IG9fY2NfdGVzdHMgLT5cbiAgICAgIGxldCByZWMgYXV4IHNpdGVfaWQgdGVzdHMgYWN0aW9ucyBzaWRlX2VmZmVjdHNfc3JjIHNpZGVfZWZmZWN0c19kc3QgbGlua3NcbiAgICAgICAgICA9XG4gICAgICAgIGlmIHNpdGVfaWQgPj0gQXJyYXkubGVuZ3RoIHBvcnRzIHRoZW5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gdGVzdHMgOjogb19jY190ZXN0cztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdGVzdHMnLCBhY3Rpb25zJyA9XG4gICAgICAgICAgICBtYXRjaCBpbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWSB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT4gdGVzdHMsIGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgICB0ZXN0cywgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGopIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLFxuICAgICAgICAgICAgICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaikgOjogYWN0aW9uc1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIGkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGkpIDo6IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGVzdHMnJywgYWN0aW9ucycnLCBzaWRlX3NpdGVzJywgc2lkZV9lZmZlY3RzJywgbGlua3MnID1cbiAgICAgICAgICAgIG1hdGNoIHBvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0c19kc3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICByZWZfcG9ydHMuKHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyYyBJbnN0YW50aWF0aW9uLkFOWSBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzJyxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5CT1VORCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19UWVBFIChiLCBhKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChwbGFjZSwgc2l0ZV9pZCksIChhLCBiKSlcbiAgICAgICAgICAgICAgICA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rcyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgKCB4IDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rcyApXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggdGVzdHMnLFxuICAgICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICAgIGxpbmtzICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKHN1Y2Mgc2l0ZV9pZCkgdGVzdHMnJyBhY3Rpb25zJycgc2lkZV9zaXRlcycgc2lkZV9lZmZlY3RzJyBsaW5rcydcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwXG4gICAgICAgIChJbnN0YW50aWF0aW9uLklzX0hlcmUgcGxhY2UgOjogdGhpc19jY190ZXN0cylcbiAgICAgICAgKGlmIGlzX2VyYXNlZCB0aGVuXG4gICAgICAgICAgIEluc3RhbnRpYXRpb24uUmVtb3ZlIHBsYWNlIDo6IGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgbGlua3MpXG5cbmxldCByZWMgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJlZ2lzdGVyZWRfbGlua3NcbiAgICAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucyByZW1haW5zID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5yb290IHJlZ2lzdGVyZWRfbGlua3Mgd2l0aFxuICAgIHwgTm9uZSAtPiB3aywgdHJhbnNmLCBsaW5rc190cmFuc2YsIGluc3RhbnRpYXRpb25zLCByZW1haW5zXG4gICAgfCBTb21lIChrZXksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUga2V5IExvYy5kdW1teSlcbiAgfCBhZyA6OiBhZ19sIC0+XG4gICAgbGV0IG5vZGUsIHdrID0gUGF0dGVybi5uZXdfbm9kZSB3ayBhZy5MS2FwcGEucmFfdHlwZSBpblxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIChub2RlLCBpZCkgaW5cbiAgICBsZXQgdHJhbnNmJyA9XG4gICAgICBpZiBhZy5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiByZW1vdmVkLCBhZGRlZFxuICAgICAgZWxzZVxuICAgICAgICB0cmFuc2ZcbiAgICBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIHdrIHJfbCBjX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgcmUgYWNjIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5MS2FwcGEucmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBpbnN0YW50aWF0aW9ucycgPVxuICAgICAgICAgIG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBjX2wgaW5zdGFudGlhdGlvbnMgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICBhZy5MS2FwcGEucmFfZXJhc2VkIGFnLkxLYXBwYS5yYV9zeW50YXhcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIHJfbCAocmVtb3ZlZCwgYWRkZWQpIGxfdCBpbnN0YW50aWF0aW9ucycgcmVcbiAgICAgICAgICBhY2NcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCB0cmFuc2YsIHdrJyA9XG4gICAgICAgICAgbWF0Y2ggYWcuTEthcHBhLnJhX2ludHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWSAtPiAocmVtb3ZlZCwgYWRkZWQpLCB3a1xuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0VSQVNFRCAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgd2sgKVxuICAgICAgICAgIHwgTEthcHBhLklfQU5ZX0NIQU5HRUQgaiAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgICAgICAgICAgKHBsYWNlLCBzaXRlX2lkLCBqKVxuICAgICAgICAgICAgICAgIDo6IGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgKCAoaWYgaSA9IGogdGhlblxuICAgICAgICAgICAgICAgICByZW1vdmVkLCBhZGRlZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICAgICA6OiBhZGRlZCApKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAoICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICBhZGRlZCApLFxuICAgICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ayAobm9kZSwgc2l0ZV9pZCkgaSApXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9wb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLCBzIC0+XG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIChwbGFjZSwgc2l0ZV9pZCksXG4gICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUsIF8pLCBzIC0+XG4gICAgICAgICAgbGV0IHdrJycgPSBQYXR0ZXJuLm5ld19mcmVlIHdrJyAobm9kZSwgc2l0ZV9pZCkgaW5cbiAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICBkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSwgTm9uZSlcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCB0cmFuc2YnIGxfdCcgcmUgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgIHwgKChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1RZUEUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgIFwiVHJ5IHRvIGNyZWF0ZSB0aGUgY29ubmVjdGVkIGNvbXBvbmVudHMgb2YgYW4gYW1iaWd1b3VzIFxcXG4gICAgICAgICAgICAgICAgICAgbWl4dHVyZS5cIikpXG4gICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGksIF8pLCBwb3MpLCBzIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgcl9sIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKChub2RlJywgc2l0ZScpIGFzIGRzdCkgLT5cbiAgICAgICAgICAgIGxldCBkc3RfcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZScsIGlkKSwgc2l0ZScgaW5cbiAgICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIGRzdCBpblxuICAgICAgICAgICAgbGV0IGNfbCcgPVxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3RfcGxhY2UpKVxuICAgICAgICAgICAgICAgIGNfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSxcbiAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgKE1vZHMuSW50TWFwLnJlbW92ZSBpIHJfbCkgY19sJyB0cmFuc2YnIGxfdCcgcmVcbiAgICAgICAgICAgICAgYWNjIChzdWNjIHNpdGVfaWQpXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZpbHRlclxuICAgICAgICAgICAgICAgICAoaXNfbGlua2VkX29uX3BvcnQgc2l0ZV9pZCBpKVxuICAgICAgICAgICAgICAgICBhZy5MS2FwcGEucmFfcG9ydHNcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgc2l0ZV9pZCcgXVxuICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgc2l0ZXMgb2YgMSBhZ2VudCAqKVxuICAgICAgICAgICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgYWNjXG4gICAgICAgICAgICAgICAgICAgJiYgTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSByZSAtPlxuICAgICAgICAgICAgICBsZXQgd2snJywgKHRyYW5zZicsIGxfdCcpID1cbiAgICAgICAgICAgICAgICBpZiBzaXRlX2lkJyA+IHNpdGVfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBQYXR0ZXJuLm5ld19saW5rIHdrJyAobm9kZSwgc2l0ZV9pZCkgKG5vZGUsIHNpdGVfaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwb3MgKVxuICAgICAgICAgICAgICAgICAgICAgIHMgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIHdrJywgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG9cbiAgICAgICAgICAgICAgICAgICAgICgocGxhY2UsIHNpdGVfaWQpLCAocGxhY2UsIHNpdGVfaWQnKSkpXG4gICAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJycgcl9sIGNfbCcgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvc1xuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAoKiBsaW5rIGJldHdlZW4gMiBhZ2VudHMgKilcbiAgICAgICAgICAgICAgbGV0IHJfbCcgPSBNb2RzLkludE1hcC5hZGQgaSAobm9kZSwgc2l0ZV9pZCkgcl9sIGluXG4gICAgICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgICAgICBkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIExpc3QucGFydGl0aW9uIChpc19saW5rZWRfb24gaSkgcmUgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZScgLT5cbiAgICAgICAgICAgICAgICBpZiBMaXN0X3V0aWwuZXhpc3RzX3VuaXEgKGlzX2xpbmtlZF9vbiBpKSBhY2MgdGhlblxuICAgICAgICAgICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wnIGNfbCB0cmFuc2YnIGxfdCcgcmUnIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgICAgfCBbIG4gXSwgcmUnXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyAobiA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgICAgICB8IF8sIF8gLT4gbGlua19vY2N1cmVuY2VfZmFpbHVyZSBpIHBvcykpKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzIHdrIHJlZ2lzdGVyZWRfbGlua3MgTW9kcy5JbnRNYXAuZW1wdHkgdHJhbnNmJyBsaW5rc190cmFuc2ZcbiAgICAgIHJlbWFpbnMgYWdfbCAwXG5cbmxldCByZWMgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbGlua3NfdHJhbnNmIGNyZWF0ZV9hY3Rpb25zXG4gICAgYWN0aW9ucyBmcmVzaCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjdGlvbnMgY3JlYXRlX2FjdGlvbnMsIChMaXN0LnJldiByZW1vdmVkLCBMaXN0LnJldiBhZGRlZClcbiAgICB8IFNvbWUgKGksIF8pIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBwbGFjZSA9IE1hdGNoaW5nLkFnZW50LkZyZXNoIChhZy5SYXdfbWl4dHVyZS5hX3R5cGUsIGZyZXNoKSBpblxuICAgIGxldCByZWMgaGFuZGxlX3BvcnRzIGFkZGVkIGxfdCBhY3Rpb25zIGludGYgc2l0ZV9pZCA9XG4gICAgICBpZiBzaXRlX2lkID0gQXJyYXkubGVuZ3RoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMgdGhlbiAoXG4gICAgICAgIGxldCBjcmVhdGVfYWN0aW9ucycgPVxuICAgICAgICAgIEluc3RhbnRpYXRpb24uQ3JlYXRlIChwbGFjZSwgTGlzdC5yZXYgaW50ZikgOjogY3JlYXRlX2FjdGlvbnNcbiAgICAgICAgaW5cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIChyZW1vdmVkLCBhZGRlZCkgbF90IGNyZWF0ZV9hY3Rpb25zJyBhY3Rpb25zXG4gICAgICAgICAgKHN1Y2MgZnJlc2gpIGFnX2xcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBhZGRlZCcsIGFjdGlvbnMnLCBwb2ludCA9XG4gICAgICAgICAgbWF0Y2ggYWcuUmF3X21peHR1cmUuYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFkZGVkLCBhY3Rpb25zLCAoc2l0ZV9pZCwgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgaSAtPlxuICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZCwgaSlcbiAgICAgICAgICAgICAgOjogYWRkZWQsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiBhY3Rpb25zLFxuICAgICAgICAgICAgICAoc2l0ZV9pZCwgU29tZSBpKSApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhZGRlZCcnLCBhY3Rpb25zJycsIGxfdCcgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgICB8IFJhd19taXh0dXJlLkZSRUUgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAocGxhY2UsIHNpdGVfaWQpIDo6IGFkZGVkJyxcbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5GcmVlIChwbGFjZSwgc2l0ZV9pZCkgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgIGxfdCApXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5WQUwgaSAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpIGxfdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZHN0LCBsX3QnIC0+XG4gICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdClcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kX3RvICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogSW5zdGFudGlhdGlvbi5CaW5kX3RvIChkc3QsIChwbGFjZSwgc2l0ZV9pZCkpXG4gICAgICAgICAgICAgICAgOjogYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgbF90JyApXG4gICAgICAgICAgICB8IE5vbmUsIGxfdCAtPlxuICAgICAgICAgICAgICBsZXQgbF90JyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZV9pZCkgbF90IGluXG4gICAgICAgICAgICAgIGFkZGVkJywgYWN0aW9ucycsIGxfdCcpXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9wb3J0cyBhZGRlZCcnIGxfdCcgYWN0aW9ucycnIChwb2ludCA6OiBpbnRmKSAoc3VjYyBzaXRlX2lkKVxuICAgICAgKVxuICAgIGluXG4gICAgaGFuZGxlX3BvcnRzXG4gICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBwbGFjZSA6OiBhZGRlZClcbiAgICAgIGxpbmtzX3RyYW5zZiBhY3Rpb25zIFtdIDBcblxubGV0IGluY3Jfb3JpZ2luID0gZnVuY3Rpb25cbiAgfCAoT3BlcmF0b3IuQUxHIF8gfCBPcGVyYXRvci5NT0RJRiBfKSBhcyB4IC0+IHhcbiAgfCBPcGVyYXRvci5SVUxFIGkgLT4gT3BlcmF0b3IuUlVMRSAoc3VjYyBpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkIG1peCAoZW52LCBvcmlnaW4pID1cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgcmVjIGF1eCBlbnYgdHJhbnNmb3JtYXRpb25zIGluc3RhbnRpYXRpb25zIGxpbmtzX3RyYW5zZiBhY2MgaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGxldCByZW1vdmVkLCBhZGRlZCA9IHRyYW5zZm9ybWF0aW9ucyBpblxuICAgICAgbGV0IGFjdGlvbnMnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjcyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChheCwgXykgYXMgeCksICgoYXksIF8pIGFzIHkpKVxuICAgICAgICAgICAgICB3aGVuIE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF4IHx8IE1hdGNoaW5nLkFnZW50LmlzX2ZyZXNoIGF5IC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoeCwgeSkgOjogYWNzXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICh4LCB5KSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmQgKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IF8gLT5cbiAgICAgICAgICAgICAgYWNzKVxuICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucyBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCB0cmFuc2Zvcm1hdGlvbnMnID0gTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQgaW5cbiAgICAgIGxldCBhY3Rpb25zJycsIHRyYW5zZm9ybWF0aW9ucycnID1cbiAgICAgICAgY29tcGxldGVfd2l0aF9jcmVhdGlvbiBzaWdzIHRyYW5zZm9ybWF0aW9ucycgbGlua3NfdHJhbnNmIFtdIGFjdGlvbnMnIDBcbiAgICAgICAgICBjcmVhdGVkXG4gICAgICBpblxuICAgICAgKCAoIG9yaWdpbixcbiAgICAgICAgICBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCBhY2MsXG4gICAgICAgICAgeyBpbnN0YW50aWF0aW9ucyB3aXRoIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjdGlvbnMnJyB9LFxuICAgICAgICAgIHRyYW5zZm9ybWF0aW9ucycnICksXG4gICAgICAgIChlbnYsIE9wdGlvbl91dGlsLm1hcCBpbmNyX29yaWdpbiBvcmlnaW4pIClcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IHdrID0gUGF0dGVybi5iZWdpbl9uZXcgZW52IGluXG4gICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAge1xuICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBbXSA6OiBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgd2tfb3V0LCAocmVtb3ZlZCwgYWRkZWQpLCBsX3QsIGV2ZW50LCByZW1haW5zID1cbiAgICAgICAgYWRkX2FnZW50c19pbl9jYyBzaWdzIGlkIHdrIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZm9ybWF0aW9uc1xuICAgICAgICAgIGxpbmtzX3RyYW5zZiBpbnN0YW50aWF0aW9ucycgdCBbIGggXVxuICAgICAgaW5cbiAgICAgIGxldCBlbnYnLCBpbmosIGNjLCBjY19pZCA9XG4gICAgICAgIFBhdHRlcm4uZmluaXNoX25ldyB+ZGVidWdfbW9kZSA/b3JpZ2luIHdrX291dFxuICAgICAgaW5cbiAgICAgIGxldCBhZGRlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCByZW1vdmVkJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKVxuICAgICAgICAgIHJlbW92ZWRcbiAgICAgIGluXG4gICAgICBsZXQgZXZlbnQnID1cbiAgICAgICAgSW5zdGFudGlhdGlvbi5yZW5hbWVfYWJzdHJhY3RfZXZlbnQgfmRlYnVnX21vZGUgaWQgaW5qIGV2ZW50XG4gICAgICBpblxuICAgICAgbGV0IGxfdCcgPVxuICAgICAgICBNb2RzLkludE1hcC5tYXBcbiAgICAgICAgICAoZnVuICgocCwgcykgYXMgeCkgLT5cbiAgICAgICAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcCcsIHMpXG4gICAgICAgICAgbF90XG4gICAgICBpblxuICAgICAgYXV4IGVudicgKHJlbW92ZWQnLCBhZGRlZCcpIGV2ZW50JyBsX3QnICgoY2NfaWQsIGNjKSA6OiBhY2MpIChzdWNjIGlkKVxuICAgICAgICByZW1haW5zXG4gIGluXG4gIGF1eCBlbnYgKFtdLCBbXSkgSW5zdGFudGlhdGlvbi5lbXB0eV9ldmVudCBNb2RzLkludE1hcC5lbXB0eSBbXSAwIG1peFxuXG5sZXQgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4cyA9XG4gIGFkZF9pbXBsaWNpdF9pbmZvcyBzaWdzXG4gICAgKGZpbmRfaW1wbGljaXRfaW5mb3MgY29udGFjdF9tYXBcbiAgICAgICAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBMS2FwcGEuY29weV9ydWxlX2FnZW50IHByZWNvbXBfbWl4cykpKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBwcmVjb21wX21peHMgY3JlYXRlZCA9XG4gIGxldCBub0NvdW50ZXJzID0gZGVidWdfbW9kZSBpblxuICBsZXQgc2lncyA9IFBhdHRlcm4uUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBhbGxfbWl4cyA9XG4gICAgcnVsZV9taXh0dXJlc19vZl9hbWJpZ3VvdXNfcnVsZSBjb250YWN0X21hcCBzaWdzIHByZWNvbXBfbWl4c1xuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbXBpbGVfbW9kZV9vbiB0aGVuXG4gICAgICBGb3JtYXQuZXByaW50ZiBcIkBbPHY+X19fX18oJWkpQCwlYUBdQC5cIiAoTGlzdC5sZW5ndGggYWxsX21peHMpXG4gICAgICAgIChQcC5saXN0IFBwLmN1dCAoZnVuIGYgeCAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJWFAXVwiXG4gICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6dHJ1ZSBjcmVhdGVkKVxuICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOih4IDw+IFtdKSB+c2lncylcbiAgICAgICAgICAgICAgIChMaXN0LnJldiBjcmVhdGVkKSkpXG4gICAgICAgIGFsbF9taXhzXG4gIGluXG4gIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgIChjb25uZWN0ZWRfY29tcG9uZW50c19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNyZWF0ZWQpXG4gICAgYWxsX21peHMgKGVudiwgb3JpZ2luKVxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBlbnYgP29yaWdpbiBtaXggPVxuICBsZXQgcnVsZXMsIChjY19lbnYsIF8pID1cbiAgICBjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX3J1bGUgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4IFtdXG4gIGluXG4gICggY2NfZW52LFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXywgbCwgZXZlbnQsIChbXSwgW10pIC0+IGwsIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHJ1bGVzIClcblxubGV0IGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkIHAgPVxuICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgIChmdW4gfnBvcyB+YWdlbnRfdHlwZSBpbnRmIChhY2MsIGxua19wYWNrKSAtPlxuICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGludGYpXG4gICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgIGluXG4gICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKSBMS2FwcGEuSV9BTlkgaW5cbiAgICAgIGxldCBvdXQgPVxuICAgICAgICB7XG4gICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ2VudF90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgICAgICAgICBMS2FwcGEucmFfcG9ydHM7XG4gICAgICAgICAgTEthcHBhLnJhX2ludHM7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9IE1vZHMuSW50TWFwLmFkZCBwb3Mgb3V0IGFjYyBpblxuICAgICAgbGV0IGxua19wYWNrJyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIHNpdGUgKChmcmVlX2lkLCBrbm93bl9zcmMpIGFzIHBhY2spIChsaW5rLCBpbnQpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBpbnQgPD4gLTEgdGhlbiByYV9pbnRzLihzaXRlKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaW50LCBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggbGluayB3aXRoXG4gICAgICAgICAgICB8IFBhdHRlcm4uVW5TcGVjIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5GcmVlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHBhY2tcbiAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rIChkc3RfYSwgZHN0X3MpIC0+XG4gICAgICAgICAgICAgIGxldCBzcmNfaW5mbyA9IHNpdGUsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5maW5kX29wdGlvbiAoZHN0X2EsIGRzdF9zKSBrbm93bl9zcmMgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKGlkLCBkc3RfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKHNpdGUpIDwtXG4gICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGlkLCBkc3RfaW5mbykpLFxuICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IG91dCBkc3RfYSBhY2MnKS5MS2FwcGEucmFfcG9ydHMuKGRzdF9zKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgc3JjX2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICggc3VjYyBmcmVlX2lkLFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAocG9zLCBzaXRlKSAoZnJlZV9pZCwgc3JjX2luZm8pIGtub3duX3NyYyApKSlcbiAgICAgICAgICBsbmtfcGFjayBpbnRmXG4gICAgICBpblxuICAgICAgYWNjJywgbG5rX3BhY2snKVxuICAgIHBcbiAgICAoTW9kcy5JbnRNYXAuZW1wdHksIChmcmVlX2lkLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuXG5sZXQgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHRyYW5zZnMgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKChmaWQsIGZyKSBhcyBwYWNrKSAtPiBmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChhX3R5cGUsIGlkKSkgLT5cbiAgICAgICAgbGV0IHNpID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYV90eXBlIGluXG4gICAgICAgIGxldCBuID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGU7XG4gICAgICAgICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gQXJyYXkubWFrZSBzaSBSYXdfbWl4dHVyZS5GUkVFO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gQXJyYXkubWFrZSBzaSBOb25lO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgZmlkLCBNb2RzLkludE1hcC5hZGQgaWQgbiBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIChtYXRjaCBhLkxLYXBwYS5yYV9pbnRzLihzKSB3aXRoXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIF8gfCBMS2FwcGEuSV9BTllfRVJBU0VEXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgXyAtPlxuICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0NIQU5HRUQgKGosIGspIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoaiA9IGspIGluXG4gICAgICAgICAgICAgIGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBpKVxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gYS5MS2FwcGEucmFfaW50cy4ocykgPC0gTEthcHBhLklfQU5ZX0NIQU5HRUQgaSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMsIGkpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9pbnRzLihzKSA8LSBTb21lIGlcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPiBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSwgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4ocykgPC0gdGVzdCwgTEthcHBhLkZyZWVkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwYWNrXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDEsIF8pLCBjY19pZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZDIsIF8pLCBjY19pZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBtaXhzLihjY19pZDEpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMSkgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQyIG1peHMuKGNjX2lkMikgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICBsZXQgdGVzdCwgZWRpdCA9IGEuTEthcHBhLnJhX3BvcnRzLihzMikgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMyKSA8LSB0ZXN0LCBMS2FwcGEuTGlua2VkIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkXG4gICAgICAgICAgKCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMikgKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoZWlkLCBfKSwgY2NfaWQpLCBzMiksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSwgczEpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDEpLCBzMSksXG4gICAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkMiksIHMyKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQxIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfcG9ydHMuKHMxKSA8LSBSYXdfbWl4dHVyZS5WQUwgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMikgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgc3VjYyBmaWQsIGZyKVxuICAgIChmcmVlX2lkLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICB0cmFuc2ZzXG4gIHw+IHNuZFxuXG5sZXQgYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgdHJhbnNmcyA9XG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoXywgKE1hdGNoaW5nLkFnZW50LkZyZXNoIF8sIF8pKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICgoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXyksIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykgLT5cbiAgICAgICAgKClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpKSAtPlxuICAgICAgICBsZXQgYWcgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+IGFcbiAgICAgICAgaW5cbiAgICAgICAgbWl4cy4oY2NfaWQpIDwtXG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlkIChMS2FwcGEuYWdlbnRfdG9fZXJhc2VkIHNpZ3MgYWcpIG1peHMuKGNjX2lkKSlcbiAgICB0cmFuc2ZzXG5cbmxldCBsa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgZG9tYWluIHIgPVxuICBsZXQgbmJfY2MgPSBBcnJheS5sZW5ndGggci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gIGxldCBtaXhzID0gQXJyYXkubWFrZSBuYl9jYyBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgZnJlZV9pZCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBjY19pZCBmcmVlX2lkIGNjIC0+XG4gICAgICAgIGxldCBvdXQsIChmcmVlX2lkJywgXykgPVxuICAgICAgICAgIGF1eF9sa2FwcGFfb2ZfcGF0dGVybiBmcmVlX2lkXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuY29udGVudCAoUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBjYykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IG1peHMuKGNjX2lkKSA8LSBvdXQgaW5cbiAgICAgICAgZnJlZV9pZCcpXG4gICAgICAxIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICBpblxuICBsZXQgbmV3cyA9XG4gICAgcmVnaXN0ZXJfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyBmcmVlX2lkIHIuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICBpblxuICBsZXQgKCkgPSBhZGRfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zIHNpZ3MgbWl4cyByLlByaW1pdGl2ZXMucmVtb3ZlZCBpblxuICBsZXQgcl9taXggPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIGIgLT4gTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIGIgYSlcbiAgICAgIFtdIG1peHNcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9jcmVhdGVkID1cbiAgICBNb2RzLkludE1hcC5mb2xkIChmdW4gXyB4IGFjYyAtPiB4IDo6IGFjYykgbmV3cyBbXSB8PiBMaXN0LnJldlxuICBpblxuICByX21peCwgcl9jcmVhdGVkXG4oKntcbiAgTEthcHBhLnJfbWl4OyBMS2FwcGEucl9jcmVhdGVkOyBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgTEthcHBhLnJfcmF0ZSA9IHIuUHJpbWl0aXZlcy5yYXRlO1xuICBMS2FwcGEucl91bl9yYXRlID0gci5QcmltaXRpdmVzLnVuYXJ5X3JhdGU7XG4gIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnM7XG4gIH0qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9mX3NuYXBzaG90IGcgPVxuICBsZXQgb3V0LCBfID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIG5vZGUgKGFjYywgcGFjaykgYWcgLT5cbiAgICAgICAgbGV0IHJhX3R5cGUgPSBhZy5TbmFwc2hvdC5ub2RlX3R5cGUgaW5cbiAgICAgICAgbGV0IGFyID0gQXJyYXkubGVuZ3RoIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXMgaW5cbiAgICAgICAgbGV0IHJhX3BvcnRzID1cbiAgICAgICAgICBBcnJheS5tYWtlIGFyIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5NYWludGFpbmVkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgYXIgTEthcHBhLklfQU5ZIGluXG4gICAgICAgIGxldCBwYWNrJyA9XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBpZCAoKGRhbmdsaW5nLCBmcmVlX2lkKSBhcyBwYWNrKSBwIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcC5TbmFwc2hvdC5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiByYV9pbnRzLihpZCkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnQyTWFwLnBvcCBzIGRhbmdsaW5nIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKHZhLCAoLTEsIC0xKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGRhbmdsaW5nJywgZnJlZV9pZFxuICAgICAgICAgICAgICAgIHwgTm9uZSwgZGFuZ2xpbmcnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICByYV9wb3J0cy4oaWQpIDwtXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoZnJlZV9pZCwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBNb2RzLkludDJNYXAuYWRkIChub2RlLCBpZCkgZnJlZV9pZCBkYW5nbGluZycsIHN1Y2MgZnJlZV9pZCkpXG4gICAgICAgICAgICBwYWNrIGFnLlNuYXBzaG90Lm5vZGVfc2l0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBMS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmFfcG9ydHM7XG4gICAgICAgICAgICByYV9pbnRzO1xuICAgICAgICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJhIDo6IGFjYywgcGFjaycpXG4gICAgICAoW10sIChNb2RzLkludDJNYXAuZW1wdHksIDEpKVxuICAgICAgZ1xuICBpblxuICBvdXRcblxubGV0IHBhdHRlcm5zX29mX21peHR1cmUgfmRlYnVnX21vZGUgY29udGFjdF9tYXAgc2lncyBwcmVfZW52IGUgPVxuICBsZXQgc25hcCA9IEVkZ2VzLmJ1aWxkX3NuYXBzaG90IH5yYXc6ZmFsc2Ugc2lncyBlIGluXG4gIGxldCBwcmVfZW52JywgYWNjID1cbiAgICBTbmFwc2hvdC5mb2xkXG4gICAgICAoZnVuIChjY19jYWNoZSwgYWNjKSBpIG0gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgICAgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19jYWNoZVxuICAgICAgICAgICAgKG9mX3NuYXBzaG90IG0pXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBjY19jYWNoZScsIFsgKFt8IChfLCB4KSB8XSwgXykgXSAtPlxuICAgICAgICAgIGNjX2NhY2hlJywgVG9vbHMucmVjdGkgKGZ1biBhIF8gLT4geCA6OiBhKSBhY2MgaVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgKHByZV9lbnYsIFtdKSBzbmFwXG4gIGluXG4gIHByZV9lbnYnLCBhY2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgZG9tYWluOiBQYXR0ZXJuLkVudi50O1xuICB0b2tlbnM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIE5hbWVkRGVjbHMudDtcbiAgb2JzZXJ2YWJsZXM6IFByaW1pdGl2ZXMuYWxnX2V4cHIgTG9jLmFubm90ZWQgYXJyYXk7XG4gIGFzdF9ydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBMS2FwcGEucnVsZSBMb2MuYW5ub3RlZCkgYXJyYXk7XG4gIHJ1bGVzOiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSBhcnJheTtcbiAgaW50ZXJ2ZW50aW9uczogUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb24gYXJyYXk7XG4gIGRlcGVuZGVuY2llc19pbl90aW1lOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgZGVwZW5kZW5jaWVzX2luX2V2ZW50OiBPcGVyYXRvci5EZXBTZXQudDtcbiAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llczogT3BlcmF0b3IuRGVwU2V0LnQgYXJyYXk7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xufVxuXG5sZXQgaW5pdCB+ZmlsZW5hbWVzIGRvbWFpbiB0b2tlbnMgYWxncyAoZGVwc19pbl90LCBkZXBzX2luX2UsIHRva19yZCwgYWxnX3JkKVxuICAgIChhc3RfcnVsZXMsIHJ1bGVzKSBvYnNlcnZhYmxlcyBpbnRlcnZlbnRpb25zIGNvbnRhY3RfbWFwID1cbiAge1xuICAgIGZpbGVuYW1lcztcbiAgICBkb21haW47XG4gICAgdG9rZW5zO1xuICAgIGFzdF9ydWxlcztcbiAgICBydWxlcztcbiAgICBhbGdzO1xuICAgIG9ic2VydmFibGVzO1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSBhbGdfcmQ7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gdG9rX3JkO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0gZGVwc19pbl90O1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IGRlcHNfaW5fZTtcbiAgICBpbnRlcnZlbnRpb25zO1xuICAgIGNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBkZWNvbnN0cnVjdCBlbnYgPVxuICAoIGVudi5maWxlbmFtZXMsXG4gICAgZW52LmRvbWFpbixcbiAgICBlbnYudG9rZW5zLFxuICAgIGVudi5hbGdzLFxuICAgICggZW52LmRlcGVuZGVuY2llc19pbl90aW1lLFxuICAgICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgICBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyApLFxuICAgIChlbnYuYXN0X3J1bGVzLCBlbnYucnVsZXMpLFxuICAgIGVudi5vYnNlcnZhYmxlcyxcbiAgICBlbnYuaW50ZXJ2ZW50aW9ucyxcbiAgICBlbnYuY29udGFjdF9tYXAgKVxuXG5sZXQgZG9tYWluIGVudiA9IGVudi5kb21haW5cbmxldCBnZXRfb2JzIGVudiA9IGVudi5vYnNlcnZhYmxlc1xubGV0IGdldF9ydWxlcyBlbnYgPSBlbnYucnVsZXNcbmxldCBuZXdfZG9tYWluIGRvbWFpbiBlbnYgPSB7IGVudiB3aXRoIGRvbWFpbiB9XG5sZXQgc2lnbmF0dXJlcyBlbnYgPSBQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGVudi5kb21haW5cbmxldCB0b2tlbnNfZmluZGVyIGVudiA9IGVudi50b2tlbnMuTmFtZWREZWNscy5maW5kZXJcbmxldCBhbGdzX2ZpbmRlciBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmZpbmRlclxubGV0IGNvbnRhY3RfbWFwIGVudiA9IGVudi5jb250YWN0X21hcFxubGV0IG51bV9vZl9hZ2VudCBubWUgZW52ID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBubWUgKHNpZ25hdHVyZXMgZW52KVxuXG5sZXQgZm9sZF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIGkgeCBydWxlIC0+IGYgaSB4IHJ1bGUpIHggZW52LnJ1bGVzXG5cbmxldCBmb2xkX3BlcnR1cmJhdGlvbnMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcCAtPiBmIGkgeCBwKSB4IGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBnZXRfcnVsZSBlbnYgaSA9IGVudi5ydWxlcy4oaSlcbmxldCBnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSA9IGVudi5hc3RfcnVsZXMuKGkgLSAxKVxubGV0IGdldF9hc3RfcnVsZSBlbnYgaSA9IGZzdCAoc25kIChnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCBlbnYgaSkpXG5cbmxldCBmb2xkX2FzdF9ydWxlcyBmIHggZW52ID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSB4IChfLCBfcnVsZSkgLT5cbiAgICAgIGxldCBsa2FwcGFfcnVsZSA9IGdldF9hc3RfcnVsZSBlbnYgaSBpblxuICAgICAgZiBpIHggbGthcHBhX3J1bGUpXG4gICAgeCBlbnYuYXN0X3J1bGVzXG5cbmxldCBnZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBpID1cbiAgaWYgdW5hcnkgdGhlbiAoXG4gICAgbWF0Y2ggKGZzdCAoc25kIGVudi5hc3RfcnVsZXMuKGkgLSAxKSkpLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIHVuYXJ5IHJhdGUgdG8gZ2V0IHBvc2l0aW9uIG9mXCJcbiAgICB8IFNvbWUgKChfLCBwb3MpLCBfKSAtPiBwb3NcbiAgKSBlbHNlXG4gICAgc25kIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl9yYXRlXG5cbmxldCBuYl9ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LnJ1bGVzXG5cbmxldCBudW1zX29mX3J1bGUgbmFtZSBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBpIGFjYyByIC0+XG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSkgd2l0aFxuICAgICAgfCBTb21lICh4LCBfKSwgXyAtPlxuICAgICAgICBpZiB4ID0gbmFtZSB0aGVuXG4gICAgICAgICAgaSA6OiBhY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY1xuICAgICAgfCBOb25lLCBfIC0+IGFjYylcbiAgICBbXSBlbnZcblxubGV0IG5iX3N5bnRhY3RpY19ydWxlcyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmFzdF9ydWxlc1xubGV0IG51bV9vZl9hbGcgcyBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInZhcmlhYmxlXCIgZW52LmFsZ3Mgc1xubGV0IGdldF9hbGcgZW52IGkgPSBmc3QgQEAgTmFtZWREZWNscy5lbHRfdmFsIGVudi5hbGdzIGlcbmxldCBnZXRfYWxncyBlbnYgPSBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG5sZXQgbmJfYWxncyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LmFsZ3NcbmxldCBudW1fb2ZfdG9rZW4gc3RyIGVudiA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwidG9rZW5cIiBlbnYudG9rZW5zIHN0clxubGV0IG5iX3Rva2VucyBlbnYgPSBOYW1lZERlY2xzLnNpemUgZW52LnRva2Vuc1xubGV0IGdldF9wZXJ0dXJiYXRpb24gZW52IGkgPSBlbnYuaW50ZXJ2ZW50aW9ucy4oaSlcbmxldCBuYl9wZXJ0dXJiYXRpb25zIGVudiA9IEFycmF5Lmxlbmd0aCBlbnYuaW50ZXJ2ZW50aW9uc1xubGV0IGdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYuYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcbmxldCBnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgPSBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLihpKVxuXG5sZXQgYWxsX2RlcGVuZGVuY2llcyBlbnYgPVxuICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50LFxuICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMsXG4gICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKVxuXG5sZXQgcHJpbnRfYWdlbnQgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYWdlbnRfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IChzaWduYXR1cmVzIGVudikgZiBpXG5cbmxldCBwcmludF9hbGcgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FsZ18laVwiIGlkXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgbmFtZSA9IE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LmFsZ3MgaWQgaW5cbiAgICBsZXQgc3BlY2lhbCA9IFRvb2xzLm5vdF9hbl9pZCBuYW1lIGluXG4gICAgbGV0ICgpID0gaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYW1lIGluXG4gICAgaWYgc3BlY2lhbCB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIidcIlxuXG5sZXQgcHJpbnRfdG9rZW4gP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3Rva2VuXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiAoTmFtZWREZWNscy5lbHRfbmFtZSBlbnYudG9rZW5zIGlkKVxuXG5sZXQgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGkgPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIl9fYXN0X3J1bGVfJWlcIiBpXG4gIHwgU29tZSBlbnYgLT5cbiAgICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gICAgaWYgaSA9IDAgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiSW50ZXJ2ZW50aW9uc1wiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBlbnYuYXN0X3J1bGVzLihwcmVkIGkpIHdpdGhcbiAgICAgIHwgU29tZSAobmEsIF8pLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBuYVxuICAgICAgfCBOb25lLCAociwgXykgLT5cbiAgICAgICAgTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2Ugc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpIGYgclxuICAgIClcblxubGV0IHByaW50X3J1bGUgfm5vQ291bnRlcnMgP2VudiBmIGlkID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX3J1bGVfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgcHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudiBmIGVudi5ydWxlcy4oaWQpLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcblxubGV0IG1hcF9vYnNlcnZhYmxlcyBmIGVudiA9IEFycmF5Lm1hcCAoZnVuICh4LCBfKSAtPiBmIHgpIGVudi5vYnNlcnZhYmxlc1xuXG5sZXQgcHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgcHJfYWxnID9wcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgc2lncyA9IHNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYSV0QCwlYSV0JWFALCV0JXQlYUBdXCJcbiAgICAoQ29udGFjdF9tYXAucHJpbnRfa2FwcGEgfm5vQ291bnRlcnMgc2lncylcbiAgICBlbnYuY29udGFjdF9tYXBcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gXyBuIGYgKCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJXRva2VuOiAlc1wiIG4pKVxuICAgIGVudi50b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZW52LnRva2Vucy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChOYW1lZERlY2xzLnByaW50IH5zZXA6UHAuc3BhY2UgKGZ1biBpIG4gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUldmFyOi8qJWkqLyAnJXMnICVhQF1cIiBpIG4gKHByX2FsZyBlbnYpIGUpKVxuICAgIGVudi5hbGdzXG4gICAgKGZ1biBmIC0+IGlmIGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZSAoZnVuIF8gZiAoZSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlcGxvdDogJWFAXVwiIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYub2JzZXJ2YWJsZXNcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHByX3J1bGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIChuYSwgKGUsIF8pKSAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAobmEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcycgXCIgbmEpKVxuICAgICAgICAgICAgICBuYVxuICAgICAgICAgICAgICAoTEthcHBhLnByaW50X3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSBzaWdzIChwcmludF90b2tlbiB+ZW52KVxuICAgICAgICAgICAgICAgICAocHJpbnRfYWxnIH5lbnYpKVxuICAgICAgICAgICAgICBlKVxuICAgICAgICAgIGYgZW52LmFzdF9ydWxlc1xuICAgICAgfCBTb21lIHByX3J1bGUgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgfnRyYWlsaW5nOlBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBfIGYgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Mj4lYUBdXCIgKHByX3J1bGUgZW52KSByKVxuICAgICAgICAgIGYgZW52LnJ1bGVzKVxuICAgIChmdW4gZiAtPiBpZiBlbnYuaW50ZXJ2ZW50aW9ucyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgcCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+LyolaSovJWFAXVwiIGkgKHByX3BlcnQgZW52KSBwKSlcbiAgICBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgcHJfYWxnIHByX3J1bGUgcHJfcGVydCBmIGVudiA9XG4gIGxldCAoKSA9IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyBwcl9wZXJ0IGYgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJALEBbPHY+QFs8diAyPlJ1bGVzOkAsJWFAXUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpIGYgciAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWk6QCAlYUBdXCIgaSAocHJfcnVsZSBlbnYpIHIpKVxuICAgIGVudi5ydWxlc1xuXG5sZXQgY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vdWdoIHggPVxuICBpZlxuICAgIG5vdFxuICAgIEBAIFByaW1pdGl2ZXMuZXhpc3RzX21vZGlmaWNhdGlvblxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TVE9QIF8gLT4gdHJ1ZVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF8gfCBQcmltaXRpdmVzLlVQREFURSBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5DRkxPVyBfIHwgUHJpbWl0aXZlcy5ESU4gX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuUFJJTlQgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBfIC0+XG4gICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICB4LmludGVydmVudGlvbnNcbiAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiVGhlcmUgaXMgbm8gd2F5IGZvciB0aGUgc2ltdWxhdGlvbiB0byBzdG9wLlwiKSlcblxubGV0IG92ZXJ3cml0ZV92YXJzIGFsZ19vdmVyd3JpdGUgZW52ID1cbiAgbGV0IGFsZ3MnID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpXG4gICAgICBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgeyBlbnYgd2l0aCBhbGdzID0gTmFtZWREZWNscy5jcmVhdGUgYWxncycgfVxuXG5sZXQgZm9sZF9hbGdfZXhwciBmX2FsZyBmX2Jvb2wgeCBlbnYgPVxuICBsZXQgeDEgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyAoXywgeSkgLT4gZl9hbGcgYWNjIHkpIHggZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgeDIgPSBBcnJheS5mb2xkX2xlZnQgZl9hbGcgeDEgZW52Lm9ic2VydmFibGVzIGluXG4gIGxldCB4MyA9IEFycmF5LmZvbGRfbGVmdCAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcnVsZSBmX2FsZykgeDIgZW52LnJ1bGVzIGluXG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChQcmltaXRpdmVzLmZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sKVxuICAgIHgzIGVudi5pbnRlcnZlbnRpb25zXG5cbmxldCBmb2xkX21peHR1cmVfaW5fZXhwciBmID1cbiAgZm9sZF9hbGdfZXhwciAoQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGYpIChBbGdfZXhwci5mb2xkX2Jvb2xfb25fbWl4dHVyZSBmKVxuXG5sZXQgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgfmFsZ19vdmVyd3JpdGUgeCA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwIChmdW4gKHgsIHkpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIHkpIHguYWxncy5OYW1lZERlY2xzLmRlY2xzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpLCB2KSAtPiBhbGdzJy4oaSkgPC0gZnN0IGFsZ3MnLihpKSwgTG9jLmFubm90X3dpdGhfZHVtbXkgdilcbiAgICAgIGFsZ19vdmVyd3JpdGVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBBcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIChuYSwgdikgLT5cbiAgICAgICAgYWxncycuKGkpIDwtXG4gICAgICAgICAgKCBuYSxcbiAgICAgICAgICAgIEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJyB2ICkpXG4gICAgICBhbGdzJ1xuICBpblxuICB7XG4gICAgZmlsZW5hbWVzID0geC5maWxlbmFtZXM7XG4gICAgZG9tYWluID0geC5kb21haW47XG4gICAgdG9rZW5zID0geC50b2tlbnM7XG4gICAgYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnO1xuICAgIG9ic2VydmFibGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICB4Lm9ic2VydmFibGVzO1xuICAgIGFzdF9ydWxlcyA9IHguYXN0X3J1bGVzO1xuICAgIHJ1bGVzID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9ydWxlXG4gICAgICAgICAgIChBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LnJ1bGVzO1xuICAgIGludGVydmVudGlvbnMgPVxuICAgICAgQXJyYXkubWFwXG4gICAgICAgIChQcmltaXRpdmVzLm1hcF9leHByX3BlcnR1cmJhdGlvblxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycpKVxuICAgICAgICB4LmludGVydmVudGlvbnM7XG4gICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPSB4LmRlcGVuZGVuY2llc19pbl90aW1lO1xuICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9IHguZGVwZW5kZW5jaWVzX2luX2V2ZW50O1xuICAgIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPSB4LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM7XG4gICAgY29udGFjdF9tYXAgPSB4LmNvbnRhY3RfbWFwO1xuICB9XG5cbmxldCBrYXBwYV9pbnN0YW5jZV90b195b2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbilcblxubGV0IHRvX3lvanNvbiBlbnYgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBlbnYuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInVwZGF0ZVwiLCBQYXR0ZXJuLkVudi50b195b2pzb24gKGRvbWFpbiBlbnYpO1xuICAgICAgXCJ0b2tlbnNcIiwgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIGVudi50b2tlbnM7XG4gICAgICAoIFwiYWxnc1wiLFxuICAgICAgICBOYW1lZERlY2xzLnRvX2pzb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPlxuICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHgpXG4gICAgICAgICAgZW52LmFsZ3MgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAoeCwgXykgbCAtPlxuICAgICAgICAgICAgICAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV90b195b2pzb25cbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50IHhcbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52Lm9ic2VydmFibGVzIFtdKSApO1xuICAgICAgKCBcImFzdF9ydWxlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biAobiwgKHIsIF8pKSBsIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIG4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICAgIHwgU29tZSAobiwgXykgLT4gYFN0cmluZyBuKTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucnVsZV90b19qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgOjogbClcbiAgICAgICAgICAgICBlbnYuYXN0X3J1bGVzIFtdKSApO1xuICAgICAgKCBcImVsZW1lbnRhcnlfcnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgKFByaW1pdGl2ZXMucnVsZV90b195b2pzb24gfmZpbGVuYW1lcykgZW52LnJ1bGVzICk7XG4gICAgICBcImNvbnRhY3RfbWFwXCIsIENvbnRhY3RfbWFwLnRvX3lvanNvbiBlbnYuY29udGFjdF9tYXA7XG4gICAgICAoIFwiaW50ZXJ2ZW50aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheVxuICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBlbnYuaW50ZXJ2ZW50aW9ucyApO1xuICAgICAgXCJkZXBlbmRlbmNpZXNfaW5fdGltZVwiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICAgICggXCJkZXBlbmRlbmNpZXNfaW5fZXZlbnRcIixcbiAgICAgICAgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX2V2ZW50ICk7XG4gICAgICAoIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uXG4gICAgICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICAgICggXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi50b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKTtcbiAgICBdXG5cbmxldCBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbilcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAxMyAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlbmFtZXMgPSBMaXN0LnRsIChBcnJheS50b19saXN0IGZpbGVuYW1lcyk7XG4gICAgICAgICBkb21haW4gPSBQYXR0ZXJuLkVudi5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJ1cGRhdGVcIiBsKTtcbiAgICAgICAgIHRva2VucyA9IE5hbWVkRGVjbHMub2ZfanNvbiAoZnVuIF8gLT4gKCkpIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICBhbGdzID1cbiAgICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHgpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiYWxnc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBrYXBwYV9pbnN0YW5jZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgYXN0X3J1bGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJhc3RfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYE51bGw7IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgIE5vbmUsIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcilcbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBTdHJpbmcgbjsgciBdIC0+XG4gICAgICAgICAgICAgICAgICAgKCBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSxcbiAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEucnVsZV9vZl9qc29uIH5maWxlbmFtZXMgcikgKVxuICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgb1xuICAgICAgICAgICB8IGBOdWxsIC0+IFt8fF1cbiAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyeV9ydWxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoUHJpbWl0aXZlcy5ydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBvXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgaW50ZXJ2ZW50aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICAgKFByaW1pdGl2ZXMucGVydHVyYmF0aW9uX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJpbnRlcnZlbnRpb25zXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiB4KTtcbiAgICAgICAgIGRlcGVuZGVuY2llc19pbl9ldmVudCA9XG4gICAgICAgICAgIE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIgeCk7XG4gICAgICAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIgeCk7XG4gICAgICAgICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheSBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgY29udGFjdF9tYXAgPSBDb250YWN0X21hcC5vZl95b2pzb24gKExpc3QuYXNzb2MgXCJjb250YWN0X21hcFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpXG5cbmxldCB1bmFyeV9wYXR0ZXJucyBlbnYgPVxuICBmb2xkX3J1bGVzXG4gICAgKGZ1biBfIGFjYyByIC0+XG4gICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBQYXR0ZXJuLlNldC5hZGRcbiAgICAgICAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApXG4gICAgICAgICAgKFBhdHRlcm4uU2V0LmFkZCByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGFjYykpXG4gICAgUGF0dGVybi5TZXQuZW1wdHkgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2NfbWl4IH5ub0NvdW50ZXJzID9lbnYgZiBtaXggPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG1peCB3aXRoXG4gIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIjBcIlxuICB8IF8gLT5cbiAgICBQcC5saXN0XG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiArQCBcIilcbiAgICAgIChmdW4gZiBjY3MgLT5cbiAgICAgICAgUHAuYXJyYXlcbiAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIipcIilcbiAgICAgICAgICAoZnVuIF8gZiBjYyAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAoUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgICAgICBjYylcbiAgICAgICAgICBmIGNjcylcbiAgICAgIGYgbWl4XG5cbmxldCBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52ID1cbiAgQWxnX2V4cHIucHJpbnQgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudilcbiAgICAoTW9kZWwucHJpbnRfYWxnID9lbnYpXG5cbmxldCBib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50X2Jvb2wgKGNjX21peCB+bm9Db3VudGVycyA/ZW52KVxuICAgIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpIGkpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgcHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiglYSlcIiAoUHAubGlzdCAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIi5cIikgYXV4KSBlXG5cbmxldCBwcmludF9leHByX3ZhbCBhbGdfdmFsIGYgZSA9XG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBOYnIucHJpbnQgZiAoYWxnX3ZhbCBhbGcpXG4gIGluXG4gIFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9jdXQgZiAoKSkgYXV4IGYgZVxuXG5sZXQgZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIGVudiBmIHIgPVxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIGxldCByX21peCwgcl9jcmVhdGVkID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSB0b2tcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWEldCVhJXRcIlxuICAgIChMS2FwcGEucHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlczpmYWxzZSByX2NyZWF0ZWQpXG4gICAgcl9taXhcbiAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQ6dHJ1ZSB+aW5pdGlhbF9jb21tYToocl9taXggPD4gW10pXG4gICAgICAgfnNpZ3MpXG4gICAgcl9jcmVhdGVkXG4gICAgKGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlblxuICAgICAgIGZ1biBmIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8QCBcIlxuICAgICBlbHNlXG4gICAgICAgUHAuZW1wdHkpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdG9rKSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgKGZ1biBmIC0+XG4gICAgICBpZiBmdWxsIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkAgQEAgJWEldFwiIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZSAoZnVuIGYgLT5cbiAgICAgICAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbWQpKVxuICAgICAgICAgICAgICAgIGRpc3QpKVxuXG5sZXQgZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiByID1cbiAgbGV0IGRvbWFpbiwgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKSwgU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlKVxuICBpblxuICBsZXQgcHJfYWxnIGYgKGEsIF8pID0gYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiBmIGEgaW5cbiAgbGV0IHByX3RvayBmICh2YSwgdG9rKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgcHJfYWxnIHZhIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSB0b2tcbiAgaW5cbiAgbGV0IHByX3RyYW5zIGYgdCA9IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucHJpbnQgP3NpZ3MgZiB0IGluXG4gIGxldCBib3hlZF9jYyBpIGYgY2MgPVxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX2JveCBmIDIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfaW50IGYgaSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIjogXCIgaW5cbiAgICBsZXQgKCkgPSBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSBmIGNjIGluXG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmICgpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoYXN0OiAlaSlAIEBbQFslYUBdJXRAWyVhQF1AXUAgLS0gQFslYUBdQCArKyBAWyVhQF1AIEBAJWEldFwiXG4gICAgci5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG4gICAgKFBwLmFycmF5IFBwLmNvbW1hIGJveGVkX2NjKVxuICAgIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgcHJfdHJhbnMpXG4gICAgci5QcmltaXRpdmVzLmluc2VydGVkIHByX2FsZyByLlByaW1pdGl2ZXMucmF0ZVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKHJhdGUsIGRpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJWF9XCIgcHJfYWxnIHJhdGVcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiBtZCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KSBtZCkpXG4gICAgICAgICAgZGlzdClcblxubGV0IG1vZGlmaWNhdGlvbiB+bm9Db3VudGVycyA/ZW52IGYgbSA9XG4gIGxldCBkb21haW4gPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSlcbiAgaW5cbiAgbWF0Y2ggbSB3aXRoXG4gIHwgUHJpbWl0aXZlcy5QUklOVCAobm1lLCB2YSkgLT5cbiAgICBpZiBubWUgPD4gW10gdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYgJWEgPiAlYVwiXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIHZhXG4gICAgICAgIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICAgIG5tZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgdmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVEVOVFJZXCJcbiAgfCBQcmltaXRpdmVzLklURVJfUlVMRSAoKG4sIF8pLCBydWxlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkQVBQTFkgJWEgJWFcIlxuICAgICAgKGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgICBuXG4gICAgICAobWF0Y2ggZW52IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbGVtZW50YXJ5X3J1bGUgfm5vQ291bnRlcnMgP2VudlxuICAgICAgfCBTb21lIGVudiAtPiBkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6ZmFsc2UgZW52KVxuICAgICAgcnVsZVxuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpZCwgKHZhLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAlYSAlYVwiIChNb2RlbC5wcmludF9hbGcgP2VudikgaWRcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgdmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QgJWEldFwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUHJpbWl0aXZlcy5TVE9QIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTVE9QICVhXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkRJTiAoa2luZCwgZm4pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4gJWEgJXRbdHJ1ZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJhYnNvbHV0ZVxcXCIgXCJcbiAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInByb2JhYmlsaXR5XFxcIiBcIilcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhIFtmYWxzZV1cIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKF9uYW1lLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSBbdHJ1ZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIChfLCBjYykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICVhIFtmYWxzZV1cIlxuICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICBQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgY2NcbiAgfCBQcmltaXRpdmVzLlNQRUNJRVMgKGZuLCBjYywgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdIFt0cnVlXSA+ICVhXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgZm5cbiAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIGZuIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIFtmYWxzZV0gPiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG5cbmxldCBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIHBlcnQgPVxuICBsZXQgYXV4X2FsYXJtIGYgPVxuICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG4gLT4gRm9ybWF0LmZwcmludGYgZiBcImFsYXJtICVhIFwiIE5ici5wcmludCBuXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlJW1vZDogJXQlYSBkbyAlYXJlcGVhdCAlYVwiIGF1eF9hbGFybVxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uIChtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudikpXG4gICAgcGVydC5QcmltaXRpdmVzLmVmZmVjdFxuICAgIChib29sX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG5cbmxldCBlbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludCB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGVudl9rYXBwYSB+bm9Db3VudGVycyBmIGVudiA9XG4gIE1vZGVsLnByaW50X2thcHBhIH5ub0NvdW50ZXJzXG4gICAgKGZ1biBlbnYgLT4gYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudilcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuXG5sZXQgZGVjb21waWxlZF9lbnYgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgfnByX3J1bGU6KGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbDp0cnVlKVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBlcmlvZCA9IERFIG9mIGludCB8IERUIG9mIGZsb2F0XG5cbnR5cGUgdCA9IHtcbiAgcHJvZ3Jlc3NTaXplOiBpbnQ7XG4gIHByb2dyZXNzQ2hhcjogY2hhcjtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgaW5pdGlhbDogZmxvYXQgb3B0aW9uO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIG91dHB1dEZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBwbG90UGVyaW9kOiBwZXJpb2Qgb3B0aW9uO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICB0cmFjZUZpbGVOYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID1cbiAge1xuICAgIHByb2dyZXNzU2l6ZSA9IDcwO1xuICAgIHByb2dyZXNzQ2hhciA9ICcjJztcbiAgICBkdW1wSWZEZWFkbG9ja2VkID0gdHJ1ZTtcbiAgICBpbml0aWFsID0gTm9uZTtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoID0gMztcbiAgICBzZWVkID0gTm9uZTtcbiAgICB0cmFjZUZpbGVOYW1lID0gTm9uZTtcbiAgICBwbG90UGVyaW9kID0gTm9uZTtcbiAgICBvdXRwdXRGaWxlTmFtZSA9IE5vbmU7XG4gICAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWUgPSBOb25lO1xuICB9XG5cbmxldCBwYXJzZSByZXN1bHQgPVxuICBsZXQgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgZiA9XG4gICAgbWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgfCBbICh2LCBwb3MpIF0gLT4gZiB2IHBvc1xuICAgIHwgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSlcbiAgaW5cbiAgbGV0IGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgPVxuICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdmFsdWUgcG9zX3YgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgICB8IFwidHJ1ZVwiIHwgXCJ5ZXNcIiAtPiB0cnVlXG4gICAgICAgIHwgXCJmYWxzZVwiIHwgXCJub1wiIC0+IGZhbHNlXG4gICAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBlcnJvciBeIFwiIHNob3VsZCBiZSBlaXRoZXIgXFxcInllc1xcXCIgb3IgXFxcIm5vXFxcIlwiLCBwb3NfdikpKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gKGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlKVxuICAgICAgICAgKChwYXJhbSwgcG9zX3ApLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgfCBcImRpc3BsYXlDb21wcmVzc2lvblwiIC0+XG4gICAgICAgIGxldCByZWMgcGFyc2UgKGEsIGIsIGMpIGwgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgKFwic3Ryb25nXCIsIF8pIDo6IHRsIC0+IHBhcnNlIChhLCBiLCB0cnVlKSB0bFxuICAgICAgICAgIHwgKFwid2Vha1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgdHJ1ZSwgYykgdGxcbiAgICAgICAgICB8IChcIm5vbmVcIiwgXykgOjogdGwgLT4gcGFyc2UgKHRydWUsIGIsIGMpIHRsXG4gICAgICAgICAgfCBbXSAtPiBjb25mLCAoYSwgYiwgYyksIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICAgICB8IChlcnJvciwgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJVbmtub3duIHZhbHVlIFwiIF4gZXJyb3IgXiBcIiBmb3IgY29tcHJlc3Npb24gbW9kZVwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBwYXJzZSBzdG9yeV9jb21wcmVzc2lvbiB2YWx1ZV9saXN0XG4gICAgICB8IFwiY2Zsb3dGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4geCBfIC0+XG4gICAgICAgICAgICBjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIFNvbWUgeClcbiAgICAgIHwgXCJzZWVkXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHNlZWQgPSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiVDBcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgcCAtPlxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggaW5pdGlhbCA9IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgfCBcInBsb3RQZXJpb2RcIiAtPlxuICAgICAgICAobWF0Y2ggdmFsdWVfbGlzdCB3aXRoXG4gICAgICAgIHwgWyAocywgcCkgXSAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBwKSkpXG4gICAgICAgIHwgWyAocywgc3ApOyAodSwgdXApIF0gLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgdSA9IFwiZVwiIHx8IHUgPSBcImV2ZW50XCIgfHwgdSA9IFwiZXZlbnRzXCIgfHwgdSA9IFwiRXZlbnRcIlxuICAgICAgICAgICAgfHwgdSA9IFwiRXZlbnRzXCJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChERSAoaW50X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHNwKSlcbiAgICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICAgdSA9IFwidC51LlwiIHx8IHUgPSBcInRpbWUgdW5pdHNcIiB8fCB1ID0gXCJUaW1lIHVuaXRzXCJcbiAgICAgICAgICAgICAgfHwgdSA9IFwidGltZSB1bml0XCIgfHwgdSA9IFwiVGltZSB1bml0XCJcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICggeyBjb25mIHdpdGggcGxvdFBlcmlvZCA9IFNvbWUgKERUIChmbG9hdF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYSBmbG9hdFwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJJbmNvcnJlY3QgdW5pdCBcIiBeIHUsIHVwKSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXIgXCIgXiBwYXJhbSwgcG9zX3ApKSlcbiAgICAgIHwgXCJvdXRwdXRGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIG91dHB1dEZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwidHJhY2VGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIHRyYWNlRmlsZU5hbWUgPSBTb21lIHMgfSxcbiAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICBjZmxvd0ZpbGUgKSlcbiAgICAgIHwgXCJkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBfIC0+XG4gICAgICAgICAgICAoIHsgY29uZiB3aXRoIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTaXplXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzU2l6ZSA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyB2XG4gICAgICAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwicHJvZ3Jlc3NCYXJTeW1ib2xcIiAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGNvbmYgd2l0aFxuICAgICAgICAgICAgcHJvZ3Jlc3NDaGFyID1cbiAgICAgICAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgICAgICAgIHRyeSBTdHJpbmcudW5zYWZlX2dldCB2IDBcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGEgY2hhcmFjdGVyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcImR1bXBJZkRlYWRsb2NrZWRcIiAtPlxuICAgICAgICAoIHsgY29uZiB3aXRoIGR1bXBJZkRlYWRsb2NrZWQgPSBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJtYXhDb25zZWN1dGl2ZUNsYXNoXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIG1heENvbnNlY3V0aXZlQ2xhc2ggPSBpbnRfb2Zfc3RyaW5nIHYgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHYgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBwKSkpXG4gICAgICB8IFwiZG90Q2Zsb3dzXCIgLT5cbiAgICAgICAgbGV0IGZvcm1hdENmbG93ID0gZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biB2IF8gLT4gdikgaW5cbiAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGVcbiAgICAgICgqIGlmIGdldF9ib29sX3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgdGhlblxuICAgICAgICAgKHN0b3J5X2NvbXByZXNzaW9uLCBEb3QpIGVsc2VcbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgSHRtbCkqKVxuICAgICAgfCBfIGFzIGVycm9yIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiVW5rbm93biBwYXJhbWV0ZXIgXCIgXiBlcnJvciwgcG9zX3ApKSlcbiAgICAoZW1wdHksIChmYWxzZSwgZmFsc2UsIGZhbHNlKSwgXCJkb3RcIiwgTm9uZSlcbiAgICByZXN1bHRcblxubGV0IHByaW50IGYgY29uZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZiAwIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwic2VlZFxcXCIgXFxcIiVpXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuc2VlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImR1bXBJZkRlYWRsb2NrZWRcXFwiIFxcXCIlYlxcXCJALFwiXG4gICAgICBjb25mLmR1bXBJZkRlYWRsb2NrZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJtYXhDb25zZWN1dGl2ZUNsYXNoXFxcIiBcXFwiJWlcXFwiQCxcIlxuICAgICAgY29uZi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwicHJvZ3Jlc3NCYXJTaXplXFxcIiBcXFwiJWlcXFwiQCxcIiBjb25mLnByb2dyZXNzU2l6ZVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU3ltYm9sXFxcIiBcXFwiJWNcXFwiQCxcIiBjb25mLnByb2dyZXNzQ2hhclxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcIlQwXFxcIiBcXFwiJWdcXFwiQCxcIilcbiAgICAgIGYgY29uZi5pbml0aWFsXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBERSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlaVxcXCIgXFxcImV2ZW50c1xcXCJALFwiIGlcbiAgICAgICAgfCBEVCB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInBsb3RQZXJpb2RcXFwiIFxcXCIlZ1xcXCIgXFxcInQudS5cXFwiQCxcIiB0KVxuICAgICAgZiBjb25mLnBsb3RQZXJpb2RcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJvdXRwdXRGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYub3V0cHV0RmlsZU5hbWVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJ0cmFjZUZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi50cmFjZUZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLmRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXG4gIGluXG4gIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRpdmlkZV9leHByX2J5X2ludCBlIGkgPVxuICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgIChBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgKE9wZXJhdG9yLkRJViwgZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIChOYnIuSSBpKSkpKVxuXG50eXBlICgnYSwgJ2IpIGNvcnJlY3RlZF9yYXRlX2NvbnN0ID0ge1xuICBudW06IE5ici50O1xuICBkZW46IE5ici50O1xuICB2YXI6ICgnYSwgJ2IpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xufVxuXG5sZXQgcmVjIHNpbXBsaWZ5ID8ocm9vdF9vbmx5ID0gZmFsc2UpIGV4cHIgPVxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID1cbiAgICAgIGlmIHJvb3Rfb25seSB0aGVuXG4gICAgICAgIGEsIGJcbiAgICAgIGVsc2VcbiAgICAgICAgc2ltcGxpZnkgYSwgc2ltcGxpZnkgYlxuICAgIGluXG4gICAgbGV0IHJvb3Rfb25seSA9IHRydWUgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuYWRkIGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIF8gd2hlbiBOYnIuaXNfemVybyBhIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuc3ViIGEgYiksIGxvY1xuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfemVybyBiIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhJywgXyksIF8gd2hlbiBOYnIuaXNfZXF1YWwgYScgTmJyLnplcm8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYicsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGInIE5ici56ZXJvIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF9cbiAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGMsIChBbGdfZXhwci5DT05TVCBiLCBfKSksIF8gKSApXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYipjKSAtPiAoYSpiKSpjIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY19jc3QpLCBjKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCBiLCBfKSwgYyksIF8pIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+IChhKmIpL2MgaWYgYSAmIGIgYXJlIGNvbnN0YW50ICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApXG4gICAgICB8ICggKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpLFxuICAgICAgICAgIChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGIsIChBbGdfZXhwci5DT05TVCBjLCBfKSksIF8pIClcbiAgICAgICAgd2hlbiAobm90IChOYnIuaXNfemVybyBjKSkgJiYgTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiBhKihiL2MpIC0+ICgoYS9jKSpiKSBpZiBhICYgYyBhcmUgY29uc3RhbnQgIGFuZCBjfGEgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYyksIGxvY19jc3QpLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAgICggKCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NVUxUIHwgT3BlcmF0b3IuU1VNIHwgT3BlcmF0b3IuTUlOVVNcbiAgICAgICAgICAgICAgICAgIHwgT3BlcmF0b3IuUE9XIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfLFxuICAgICAgICAgICAgICAgICAgXyApXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgKEFsZ19leHByLkNPTlNUIGIsIF8pXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYikpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYikgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYSBiKSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIGIpLFxuICAgICAgICAgICAgbG9jX2JpbiApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBjLCBfKSApXG4gICAgICAgIHdoZW4gTmJyLmlzX3plcm8gKE5ici5yZW0gYSBjKSAtPlxuICAgICAgICAoKiAoYSpiL2MpICYgY3xhIC0+ICgoYy9hKSpiKSopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBjIGEpLCBsb2NfYmluKSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYiwgKEFsZ19leHByLkNPTlNUIGEsIF8pKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGIqYS9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCBhLFxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIChBbGdfZXhwci5DT05TVCBjLCBfKSksXG4gICAgICAgICAgICBsb2NkaXYgKSApIC0+XG4gICAgICAgICgqIChhL2IvYykgLT4gYS8oYipjKSAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIGEsIEFsZ19leHByLihDT05TVCAoTmJyLm11bHQgYiBjKSwgbG9jZGl2KSksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIE5ici5pc19zbWFsbGVyIGEgKE5ici5JIDExKVxuICAgICAgICAgICAgICYmIE5ici5pc19ncmVhdGVyIGIgTmJyLnplcm9cbiAgICAgICAgICAgICAmJiBOYnIuaXNfc21hbGxlciBiIChOYnIuSSAxMSkgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5wb3cgYSBiKSwgbG9jXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1PRFVMTyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MgLT5cbiAgICBsZXQgYSA9IHNpbXBsaWZ5IGEgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICAobWF0Y2ggYSB3aXRoXG4gICAgICB8IEFsZ19leHByLkNPTlNUIGEsIF8gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5uZWcgYSksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyB8IE9wZXJhdG9yLkVYUCAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBBbGdfZXhwci5DT05TVCBOYnIub25lLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgXyApIC0+XG4gICAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5TSU5VUyB8IE9wZXJhdG9yLlRBTiAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEgTmJyLm9uZSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU1FSVCB8IE9wZXJhdG9yLkxPRyB8IE9wZXJhdG9yLklOVCAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBtaXgpLCBsb2MgLT5cbiAgICBsZXQgZXhwciA9IHNpbXBsaWZ5IGV4cHIgaW5cbiAgICAobWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+IEFsZ19leHByLkNPTlNUIE5ici56ZXJvLCBsb2NcbiAgICB8ICggKCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSwgbG9jKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfLCBfXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXywgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8sIF9cbiAgfCBBbGdfZXhwci5DT05TVCBfLCBfIC0+XG4gICAgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSwgbG9jIC0+XG4gICAgbGV0IGNvbmQsIHllcywgbm8gPSBzaW1wbGlmeV9ib29sIGNvbmQsIHNpbXBsaWZ5IHllcywgc2ltcGxpZnkgbm8gaW5cbiAgICAobWF0Y2ggY29uZCB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IHllc1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gbm9cbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pLCBfIC0+XG4gICAgICBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYylcblxuYW5kIHNpbXBsaWZ5X2Jvb2wgZXhwcl9ib29sID1cbiAgbWF0Y2ggZXhwcl9ib29sIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFLCBfIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gZXhwcl9ib29sXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpLCBsb2MgLT5cbiAgICAobWF0Y2ggc2ltcGxpZnlfYm9vbCBhIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUsIF8gLT4gQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgIHwgQWxnX2V4cHIuRkFMU0UsIF8gLT4gQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgfCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgX1xuICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgXyApIGFzIGEnIC0+XG4gICAgICBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYScpLCBsb2MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeV9ib29sIGEsIHNpbXBsaWZ5X2Jvb2wgYiBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGJcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBhXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYlxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5PUiAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuVFJVRSwgXyksIF8gLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuRkFMU0UsIF8pLCBfIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLlRSVUUsIF8pIC0+IGJcbiAgICAgIHwgXywgKEFsZ19leHByLkZBTFNFLCBfKSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9IHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGIgaW5cbiAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgKG1hdGNoIG9wIHdpdGhcbiAgICAgIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfZ3JlYXRlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgICAgIGlmIE5ici5pc19zbWFsbGVyIGEgYiB0aGVuXG4gICAgICAgICAgQWxnX2V4cHIuVFJVRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICB8IE9wZXJhdG9yLkVRVUFMIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICAgIGlmIE5ici5pc19lcXVhbCBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvYylcbiAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApLFxuICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gKSxcbiAgICAgICAgICBfICkgKSAtPlxuICAgICAgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBsb2MpXG5cbmxldCBzaW1wbGlmeSBleHByID1cbiAgbGV0IHJvb3Rfb25seSA9IGZhbHNlIGluXG4gIHNpbXBsaWZ5IH5yb290X29ubHkgZXhwclxuXG5sZXQgcmVjIGNsZWFuIGV4cHIgPVxuICBsZXQgZXhwciA9IGZzdCBleHByIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgY2xlYW4gYSkpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfVE9LRU4gKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBkdCkgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoY2xlYW4gZXhwciwgZHQpKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgX1xuICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5DT05TVCBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5JRiAoY2xlYW5fYm9vbCBjb25kLCBjbGVhbiB5ZXMsIGNsZWFuIG5vKSlcblxuYW5kIGNsZWFuX2Jvb2wgZXhwcl9ib29sID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwcl9ib29sIGluXG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBleHByXG4gIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEpKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBjbGVhbl9ib29sIGEsIGNsZWFuX2Jvb2wgYikpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBjbGVhbiBhLCBjbGVhbiBiKSlcblxubGV0IHJlYyBnZXRfY29ycmVjdGVkX3JhdGUgZSA9XG4gIG1hdGNoIGUgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pLCBlKSwgX1xuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIG51bSA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5udW0gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUsIChBbGdfZXhwci5DT05TVCBjc3QsIF8pKSwgXyAtPlxuICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUgLT5cbiAgICAgIFNvbWUgeyBjb3JyZWN0ZWRfcmF0ZSB3aXRoIGRlbiA9IE5ici5tdWx0IGNzdCBjb3JyZWN0ZWRfcmF0ZS5kZW4gfSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMiksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUxIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTEgLT5cbiAgICAgIChtYXRjaCBnZXRfY29ycmVjdGVkX3JhdGUgZTIgd2l0aFxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMFxuICAgICAgICAgICAgICYmIE5ici5pc19lcXVhbCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW4gLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvcnJlY3RlZF9yYXRlMSB3aXRoXG4gICAgICAgICAgICBudW0gPSBOYnIuYWRkIGNvcnJlY3RlZF9yYXRlMS5udW0gY29ycmVjdGVkX3JhdGUyLm51bTtcbiAgICAgICAgICB9XG4gICAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUyXG4gICAgICAgIHdoZW4gY29tcGFyZSBjb3JyZWN0ZWRfcmF0ZTEudmFyIGNvcnJlY3RlZF9yYXRlMi52YXIgPSAwIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID1cbiAgICAgICAgICAgICAgTmJyLmFkZFxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTIuZGVuIGNvcnJlY3RlZF9yYXRlMS5udW0pXG4gICAgICAgICAgICAgICAgKE5ici5tdWx0IGNvcnJlY3RlZF9yYXRlMS5kZW4gY29ycmVjdGVkX3JhdGUyLm51bSk7XG4gICAgICAgICAgICBkZW4gPSBOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5kZW47XG4gICAgICAgICAgfVxuICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpKVxuICB8ICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAoICggT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1JTlVTIHwgT3BlcmF0b3IuUE9XXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NQVggfCBPcGVyYXRvci5NSU4gKSxcbiAgICAgICAgICBfLFxuICAgICAgICAgIF8gKSxcbiAgICAgIF8gKVxuICB8ICggKCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfXG4gICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLklGIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIE5vbmVcbiAgfCBBbGdfZXhwci5BTEdfVkFSIF8sIF8gLT4gU29tZSB7IHZhciA9IFNvbWUgZTsgbnVtID0gTmJyLm9uZTsgZGVuID0gTmJyLm9uZSB9XG4gIHwgQWxnX2V4cHIuQ09OU1QgY3N0LCBfIC0+IFNvbWUgeyB2YXIgPSBOb25lOyBudW0gPSBjc3Q7IGRlbiA9IE5ici5vbmUgfVxuXG5sZXQgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPSBnZXRfY29ycmVjdGVkX3JhdGUgKGNsZWFuIGUpXG5cbmxldCBwcmludCBwcl92YXIgZiBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9XG4gIG1hdGNoIGNvcnJlY3RlZF9yYXRlX2NvbnN0IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJOb25lXCJcbiAgfCBTb21lIGEgLT5cbiAgICAobWF0Y2ggYS52YXIgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKS4lYVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4gcHJfdmFyIGEudmFyXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEvJWEpXCIgTmJyLnByaW50IGEubnVtIE5ici5wcmludCBhLmRlbilcblxubGV0IG5lY2Vzc2FyaWx5X2VxdWFsIGFfb3B0IGJfb3B0ID1cbiAgbWF0Y2ggYV9vcHQsIGJfb3B0IHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgT3B0aW9uX3V0aWwuZXF1YWwgQWxnX2V4cHIuZXF1YWwgYS52YXIgYi52YXJcbiAgICAmJiBOYnIuaXNfZXF1YWwgKE5ici5tdWx0IGEubnVtIGIuZGVuKSAoTmJyLm11bHQgYS5kZW4gYi5udW0pXG5cbmxldCBkZXAgZW1wdHkgYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgP3RpbWVfdmFyIGV4cHIgPVxuICBsZXQgcmVjIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGFjY3UgPVxuICAgIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgfCBBbGdfZXhwci5JRiAoXywgZTEsIGUyKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUxXG4gICAgICAgIChhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZTIgYWNjdSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgZSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGUsIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBfKSAtPlxuICAgICAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUgYWNjdVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSIC0+XG4gICAgICAobWF0Y2ggdGltZV92YXIgd2l0aFxuICAgICAgfCBTb21lIGlkIC0+IGFkZF9taXh0dXJlIGlkIGFjY3VcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgKCBcIkEgdmFyaWFibGUgZm9yIHRpbWUgc2hhbGwgYmUgcHJvdmlkZWQgdG8gYW5hbHlzZSB0aGUgXFxcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNlcyBpbiBhIHRpbWUtZGVwZW5kZW50IGV4cHJlc3Npb25cIixcbiAgICAgICAgICAgICAgIHNuZCBleHByICkpKVxuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApIC0+XG4gICAgICBhY2N1XG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIC0+IHVuaW9uIChkZXBfZW52IGlkKSBhY2N1XG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gYWRkX21peHR1cmUgbWl4IGFjY3VcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGFkZF90b2tlbiBpZCBhY2N1XG4gICAgfCBBbGdfZXhwci5DT05TVCBfIC0+IGFjY3VcbiAgaW5cbiAgYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGV4cHIgZW1wdHlcblxubGV0IHJlYyBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwciA9XG4gIG1hdGNoIGZzdCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5JRiAoYiwgZTEsIGUyKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAoQWxnX2V4cHIuSUZcbiAgICAgICAgICggYixcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxLFxuICAgICAgICAgICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIgKSlcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgZTEsIGUyKSAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5TVU0gLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTVVMVCAtPlxuICAgICAgQWxnX2V4cHIuYWRkXG4gICAgICAgIChBbGdfZXhwci5tdWx0IGUxIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpKVxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMiAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKSlcbiAgICB8IE9wZXJhdG9yLk1JTlVTIC0+XG4gICAgICBBbGdfZXhwci5taW51c1xuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxKVxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgIHwgT3BlcmF0b3IuTUlOIHwgT3BlcmF0b3IuTUFYIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT4gZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUxXG4gICAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAgIEFsZ19leHByLmRpdlxuICAgICAgICAoQWxnX2V4cHIubWludXNcbiAgICAgICAgICAgKEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkgZTIpXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpIGUxKSlcbiAgICAgICAgKEFsZ19leHByLnBvdyBlMiAoQWxnX2V4cHIuaW50IDIpKVxuICAgIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgICAoKiAodV52KSoodicqbG4odSkrdip1Jy91KSAqKVxuICAgICAgQWxnX2V4cHIubXVsdCAoQWxnX2V4cHIucG93IGUxIGUyKVxuICAgICAgICAoQWxnX2V4cHIuYWRkXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0XG4gICAgICAgICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTIpXG4gICAgICAgICAgICAgIChBbGdfZXhwci5sbiBlMSkpXG4gICAgICAgICAgIChBbGdfZXhwci5kaXZcbiAgICAgICAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgICAgICAgICAgIGUxKSkpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgZSkgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuVU1JTlVTIC0+XG4gICAgICBBbGdfZXhwci51bWludXMgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci51bWludXMgKEFsZ19leHByLnNpbiBlKSlcbiAgICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgICBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgKEFsZ19leHByLmNvcyBlKVxuICAgIHwgT3BlcmF0b3IuTE9HIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50IDEpIGUpXG4gICAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmRpdiAoQWxnX2V4cHIuaW50ICgtMSkpIChBbGdfZXhwci5zcXJ0IGUpKVxuICAgIHwgT3BlcmF0b3IuRVhQIC0+IEFsZ19leHByLm11bHQgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKSBlXG4gICAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIuYWRkIChBbGdfZXhwci5pbnQgMSkgKEFsZ19leHByLnBvdyBlIChBbGdfZXhwci5pbnQgMikpKVxuICAgIHwgT3BlcmF0b3IuSU5UIC0+IEFsZ19leHByLmludCAwKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPiBmX3RpbWUgKClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgIEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGZfbWl4IG1peFxuICB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGZfdG9rZW4gaWRcbiAgfCBBbGdfZXhwci5DT05TVCBfIC0+IEFsZ19leHByLmludCAwXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgLT5cbiAgICBmX3N5bWIgZXhwclxuXG5sZXQgZGlmZl90b2tlbiBleHByIHRva2VuID1cbiAgbGV0IGZfbWl4IF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBsZXQgZl90b2tlbiBhID1cbiAgICBpZiBhID0gdG9rZW4gdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl9zeW1iIGV4cHIgPSBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lIF8gPSBBbGdfZXhwci5pbnQgMCBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZGlmZl9taXh0dXJlID90aW1lX3ZhciBleHByIG1peHR1cmUgPVxuICBsZXQgZl9taXggYSA9XG4gICAgaWYgYSA9IG1peHR1cmUgdGhlblxuICAgICAgQWxnX2V4cHIuaW50IDFcbiAgICBlbHNlXG4gICAgICBBbGdfZXhwci5pbnQgMFxuICBpblxuICBsZXQgZl90b2tlbiBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSksIExvYy5kdW1teSBpblxuICBsZXQgZl90aW1lICgpID1cbiAgICBtYXRjaCB0aW1lX3ZhciB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBtaXh0dXJlID0gYiAtPiBBbGdfZXhwci5pbnQgMVxuICAgIHwgU29tZSBfIC0+IEFsZ19leHByLmludCAwXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uIGNhbm5vdCBiZSBkaWZmZXJlbnRpYXRlZCB3aXRob3V0IFxcXG4gICAgICAgICAgICAgIHNwZWNpZnlpbmcgYSB2YXJpYWJsZSBmb3IgdGltZSBwcm9ncmVzc1wiLFxuICAgICAgICAgICAgIExvYy5kdW1teSApKVxuICBpblxuICBkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZXhwclxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjdSBhcnJheV9pZCAtPlxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjdSBwaWQgLT4gZiBwaWQgYWNjdSkgYWNjdSBhcnJheV9pZClcbiAgICBhY2N1IG1peFxuXG5sZXQgZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdSA9XG4gIGxldCBsID0gQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyBleHByIGluXG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjdSBtaXggLT4gZm9sZF9vdmVyX21peF9pbl9saXN0IGYgbWl4IGFjY3UpIGFjY3UgbFxuXG5sZXQgZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHBycyBmIG1vZGVsIGFjY3UgPVxuICBsZXQgYWxnc19leHByID0gTW9kZWwuZ2V0X2FsZ3MgbW9kZWwgaW5cbiAgbGV0IG9ic2VydmFibGVzID0gTW9kZWwuZ2V0X29icyBtb2RlbCBpblxuICAoKmFsZ3MqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgKF8sIG1peCkgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIG1peCBhY2N1KVxuICAgICAgYWNjdSBhbGdzX2V4cHJcbiAgaW5cbiAgKCpvYnNlcnZhdGlvbnMqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3Ugb2JzZXJ2YWJsZXNcbiAgaW5cbiAgKCpydWxlcyopXG4gIGxldCBydWxlcyA9IE1vZGVsLmdldF9ydWxlcyBtb2RlbCBpblxuICAoKnJhdGUqKVxuICBsZXQgYWNjdSA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjY3UgZWxlbWVudGFyeV9ydWxlIC0+XG4gICAgICAgIGxldCByYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMucmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiByYXRlIGFjY3UgaW5cbiAgICAgICAgKCp1bmFyeV9yYXRlKilcbiAgICAgICAgbGV0IHVuYXJ5X3JhdGUgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCB1bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciBmIGV4cHIgYWNjdVxuICAgICAgICBpblxuICAgICAgICAoKmRlbHRhIHRva2VucyopXG4gICAgICAgIGxldCBkZWx0YV90b2tlbnMgPSBlbGVtZW50YXJ5X3J1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgaW5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UpXG4gICAgICAgICAgICBhY2N1IGRlbHRhX3Rva2Vuc1xuICAgICAgICBpblxuICAgICAgICBhY2N1KVxuICAgICAgYWNjdSBydWxlc1xuICBpblxuICBhY2N1XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgU2ltdWxhdGlvbl9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBzdG9yeV9pZDogaW50O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X2V2ZW50OiBpbnQ7XG4gICAgcHJvZmlsaW5nX2luZm86ICdhO1xuICB9XG4gICgqIHR5cGUgb2YgZGF0YSB0byBiZSBnaXZlbiB3aXRoIG9ic2VydmFibGVzIGZvciBzdG9yeSBjb21wcmVzc2lvblxuICAgICAoc3VjaCBhcyBkYXRlIHdoZW4gdGhlIG9icyBpcyB0cmlnZ2VyZWQqKVxuXG4gIGxldCB1cGRhdGVfcHJvZmlsaW5nX2luZm8gYSBpbmZvID1cbiAgICB7XG4gICAgICBzdG9yeV9pZCA9IGluZm8uc3RvcnlfaWQ7XG4gICAgICBzdG9yeV90aW1lID0gaW5mby5zdG9yeV90aW1lO1xuICAgICAgc3RvcnlfZXZlbnQgPSBpbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgcHJvZmlsaW5nX2luZm8gPSBhO1xuICAgIH1cblxuICBsZXQgZXZlbnQgYSA9IGEuc3RvcnlfZXZlbnRcbiAgbGV0IHN0b3J5X2lkIGEgPSBhLnN0b3J5X2lkXG4gIGxldCBjb21wYXJlX2J5X3N0b3J5X2lkIHggeSA9IE1vZHMuaW50X2NvbXBhcmUgeC5zdG9yeV9pZCB5LnN0b3J5X2lkXG5cbiAgbGV0IGR1bW15IGEgPVxuICAgIHsgc3RvcnlfaWQgPSAwOyBzdG9yeV90aW1lID0gMC47IHN0b3J5X2V2ZW50ID0gMDsgcHJvZmlsaW5nX2luZm8gPSBhIH1cblxuICBsZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gICAgXCJcXFwic2ltdWxhdGlvbl9pbmZvXFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0aW1lXFxcIjoxLFxcXCJldmVudFxcXCI6MixcXFwicHJvZmlsaW5nXFxcIjozfVwiXG5cbiAgbGV0IHRvX2pzb24gZiB4ID1cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IHguc3RvcnlfaWQ7XG4gICAgICAgIGBGbG9hdCB4LnN0b3J5X3RpbWU7XG4gICAgICAgIGBJbnQgeC5zdG9yeV9ldmVudDtcbiAgICAgICAgZiB4LnByb2ZpbGluZ19pbmZvO1xuICAgICAgXVxuXG4gIGxldCBvZl9qc29uIGYgPSBmdW5jdGlvblxuICAgIHwgYExpc3QgWyBgSW50IHN0b3J5X2lkOyBgRmxvYXQgc3RvcnlfdGltZTsgYEludCBzdG9yeV9ldmVudDsgaW5mbyBdIC0+XG4gICAgICB7IHN0b3J5X2lkOyBzdG9yeV90aW1lOyBzdG9yeV9ldmVudDsgcHJvZmlsaW5nX2luZm8gPSBmIGluZm8gfVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBzaW11bGF0aW9uX2luZm9cIiwgeCkpXG5cbiAgbGV0IHdyaXRlX2pzb24gZiBvYiB4ID1cbiAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHguc3RvcnlfaWQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG8geC5zdG9yeV90aW1lKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2V2ZW50KTtcbiAgICAgICAgKGZ1biBvIC0+IGYgbyB4LnByb2ZpbGluZ19pbmZvKTtcbiAgICAgIF1cblxuICBsZXQgcmVhZF9qc29uIGYgc3QgYiA9XG4gICAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgKGZ1biBzdCBiIHN0b3J5X2lkIC0+XG4gICAgICAgIGxldCBzdG9yeV90aW1lID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RvcnlfZXZlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgcHJvZmlsaW5nX2luZm8gPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvIH0pXG4gICAgICBzdCBiXG5lbmRcblxudHlwZSBldmVudF9raW5kID1cbiAgfCBSVUxFIG9mIGludFxuICB8IElOSVQgb2YgaW50IGxpc3QgKCogdGhlIGFnZW50cyAqKVxuICB8IFBFUlQgb2Ygc3RyaW5nICgqIHRoZSBydWxlICopXG5cbmxldCBwcmludF9ldmVudF9raW5kID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUlVMRSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJSVUxFKCVpKVwiIGlcbiAgICB8IElOSVQgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIklOSVQoJWEpXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X2ludCkgbFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJQRVJUKCVzKVwiIHMpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBQRVJUIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgICB8IFJVTEUgcl9pZCAtPiBNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYgZiByX2lkXG4gICAgfCBJTklUIHMgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIHMpXG5cbmxldCBwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCBlbnYgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSByX2lkIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJWFcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiXG4gICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgcl9pZCBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImxpZ2h0Ymx1ZVwiXG4gIHwgSU5JVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJbbGFiZWw9XFxcIkludHJvIEBbPGg+JWFAXVxcXCIsIHNoYXBlPSVzLCBzdHlsZT0lcywgZmlsbGNvbG9yPWdyZWVuXVwiXG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICBzIFwiaG91c2VcIiBcImZpbGxlZFwiXG4gIHwgUEVSVCBzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvciA9ICVzXVwiIHNcbiAgICAgIFwiaW52aG91c2VcIiBcImZpbGxlZFwiIFwiZ3JlZW5cIlxuXG50eXBlIHN0ZXAgPVxuICB8IFN1YnMgb2YgaW50ICogaW50XG4gIHwgUnVsZSBvZlxuICAgICAgaW50ICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50ICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IFBlcnQgb2ZcbiAgICAgIHN0cmluZ1xuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uZXZlbnRcbiAgICAgICogdW5pdCBTaW11bGF0aW9uX2luZm8udFxuICB8IEluaXQgb2YgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0XG4gIHwgT2JzIG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBEdW1teSBvZiBzdHJpbmdcblxudHlwZSB0ID0gc3RlcCBsaXN0XG5cbmxldCBzdWJzX3N0ZXAgYSBiID0gU3VicyAoYSwgYilcbmxldCBkdW1teV9zdGVwIHggPSBEdW1teSB4XG5sZXQgcHJpbnRfc3VicyBfZiAoX2EsIF9iKSA9ICgpXG5cbmxldCBwcmludF9zaXRlID9lbnYgZiAoKGFnX2lkLCBhZyksIHMpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhXyVpLiVhXCIgKE1vZGVsLnByaW50X2FnZW50ID9lbnYpIGFnIGFnX2lkXG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBTb21lIGVudiAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGFnXG4gICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgc1xuXG5sZXQgcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGxvZyBhY3Rpb25zID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCJJTklUXCJcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZyBcIioqKkBbPDE+SU5JVDolYUBdKioqXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBhY3Rpb25zXG5cbmxldCBwcmludF9zaWRlX2VmZmVjdHMgP2VudiA9XG4gIFBwLmxpc3RcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFwiKVxuICAgIChmdW4gZiAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiU2lkZV9lZmZlY3RzKCVhLCVhKVwiIChwcmludF9zaXRlID9lbnYpIHNpdGVcbiAgICAgICAgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAgICA/c2lnczooT3B0aW9uX3V0aWwubWFwIE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgICAgICAgc3RhdGUpXG5cbmxldCBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGxvZyAoZXZfa2luZCwgZSkgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIHByaW50X2V2ZW50X2tpbmQgP2VudiBsb2cgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgbG9nXG4gICAgICBcIkBbKioqUmVmaW5lZCBldmVudDoqKipALCogS2FwcGFfcnVsZSAlYSBTdG9yeSBlbmNvZGluZzolYSVhJWFAXVwiXG4gICAgICAocHJpbnRfZXZlbnRfa2luZCA/ZW52KSBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgKGUuSW5zdGFudGlhdGlvbi50ZXN0cyBAIFsgZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdKVxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uID9zaWdzKSlcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zIChwcmludF9zaWRlX2VmZmVjdHMgP2VudilcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG5cbmxldCBwcmludF9vYnMgfmNvbXBhY3QgP2VudiBmIChldl9raW5kLCB0ZXN0cywgXykgPVxuICBsZXQgc2lncyA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlbnYgLT4gU29tZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gIGluXG4gIGlmIGNvbXBhY3QgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMgJXNcIiBldl9raW5kXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKioqQFs8MT5PQlMgJXM6JWFAXSoqKlwiIGV2X2tpbmRcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlXG4gICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0ID9zaWdzKSkpXG4gICAgICB0ZXN0c1xuXG5sZXQgcHJpbnRfc3RlcCA/KGNvbXBhY3QgPSBmYWxzZSkgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBTdWJzIChhLCBiKSAtPiBwcmludF9zdWJzIGYgKGEsIGIpXG4gIHwgUnVsZSAoeCwgeSwgX3opIC0+IHByaW50X2V2ZW50IH5jb21wYWN0ID9lbnYgZiAoUlVMRSB4LCB5KVxuICB8IFBlcnQgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFBFUlQgeCwgeSlcbiAgfCBJbml0IGEgLT4gcHJpbnRfaW5pdCB+Y29tcGFjdCA/ZW52IGYgYVxuICB8IE9icyAoYSwgYiwgYykgLT4gcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoYSwgYiwgYylcbiAgfCBEdW1teSBfIC0+ICgpXG5cbmxldCBnZXRfdHlwZXNfZnJvbV9pbml0IGEgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGFjdGlvbiAtPlxuICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChfLCBhdHlwZSksIF8pIC0+IGF0eXBlIDo6IGFjY1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IHByaW50X2xhYmVsX29mX3N0ZXAgP2VudiBmIHggPVxuICBtYXRjaCBlbnYgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgeFxuICAgIHwgRHVtbXkgXyAtPiAoKSlcbiAgfCBTb21lIGVudiAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFN1YnMgXyAtPiAoKVxuICAgIHwgUnVsZSAoeCwgXywgXykgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgeFxuICAgIHwgUGVydCAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IEluaXQgYSAtPlxuICAgICAgbGV0IGwgPSBnZXRfdHlwZXNfZnJvbV9pbml0IGEgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJbnRybyBAWzxoPiVhQF1cIlxuICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikpXG4gICAgICAgIGxcbiAgICB8IE9icyAoeCwgXywgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwic3RlcFxcXCI6W1xcXCJTdWJzXFxcIixcXFwiUnVsZVxcXCIsXFxcIlBlcnRcXFwiLFxcXCJJbml0XFxcIixcXFwiT2JzXFxcIixcXFwiRHVtbXlcXFwiXVwiXG5cbmxldCB3cml0ZV9zdGVwIG9iIHMgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBzIHdpdGhcbiAgICB8IFN1YnMgKGEsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gYik7XG4gICAgICBdXG4gICAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIHgpO1xuICAgICAgICAoZnVuIG8gLT4gSW5zdGFudGlhdGlvbi53cml0ZV9ldmVudCBBZ2VudC53cml0ZV9qc29uIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgUGVydCAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IEluaXQgYSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChJbnN0YW50aWF0aW9uLndyaXRlX2FjdGlvbiBBZ2VudC53cml0ZV9qc29uKSBvIGEpO1xuICAgICAgXVxuICAgIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvIHgpO1xuICAgICAgICAoZnVuIG8gLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV90ZXN0IEFnZW50LndyaXRlX2pzb24pKVxuICAgICAgICAgICAgbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBEdW1teSBfIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA1KSBdKVxuXG5sZXQgcmVhZF9zdGVwIHN0IGIgPVxuICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICB8IDAgLT5cbiAgICAgICAgbGV0IGEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgYiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIFN1YnMgKGEsIGIpXG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFJ1bGUgKHgsIHksIHopXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfZXZlbnQgQWdlbnQucmVhZF9qc29uKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIFBlcnQgKHgsIHksIHopXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGwgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXZcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfYWN0aW9uIEFnZW50LnJlYWRfanNvbikpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIEluaXQgKExpc3QucmV2IGwpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHggPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYiBpblxuICAgICAgICBsZXQgeSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24ucmVhZF90ZXN0IEFnZW50LnJlYWRfanNvbikpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBsZXQgeiA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAgICAgICAgIChTaW11bGF0aW9uX2luZm8ucmVhZF9qc29uIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG4gICAgICAgICAgICBzdCBiXG4gICAgICAgIGluXG4gICAgICAgIE9icyAoeCwgeSwgeilcbiAgICAgIHwgNSAtPiBEdW1teSBcIlwiXG4gICAgICB8IF8gLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIFwiSW52YWxpZCBzdGVwXCIpXG4gICAgICAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBzdGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gYExpc3QgWyBgSW50IDA7IGBJbnQgYTsgYEludCBiIF1cbiAgfCBSdWxlICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMTtcbiAgICAgICAgYEludCB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCAyO1xuICAgICAgICBgU3RyaW5nIHg7XG4gICAgICAgIEluc3RhbnRpYXRpb24uZXZlbnRfdG9fanNvbiBBZ2VudC50b19qc29uIHk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgSW5pdCBhIC0+XG4gICAgbGV0IHJldl9hY3Rpb25zID1cbiAgICAgIExpc3QucmV2X21hcCAoSW5zdGFudGlhdGlvbi5hY3Rpb25fdG9fanNvbiBBZ2VudC50b19qc29uKSBhXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgMzsgYExpc3QgKExpc3QucmV2IHJldl9hY3Rpb25zKSBdXG4gIHwgT2JzICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgNDtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgIChmdW4geiAtPlxuICAgICAgICAgICAgICAgYExpc3QgKExpc3QubWFwIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBBZ2VudC50b19qc29uKSB6KSlcbiAgICAgICAgICAgICB5KTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBEdW1teSBfIC0+IGBMaXN0IFsgYEludCA1IF1cblxubGV0IHdyaXRlX2pzb24gPSBKc29uVXRpbC53cml0ZV9saXN0IHdyaXRlX3N0ZXBcbmxldCByZWFkX2pzb24gc3QgYiA9IExpc3QucmV2IChZb2pzb24uQmFzaWMucmVhZF9saXN0X3JldiByZWFkX3N0ZXAgc3QgYilcblxubGV0IHN0cmluZ19vZl9zdGVwID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3N0ZXAgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCBzdGVwX29mX3N0cmluZyBzID1cbiAgcmVhZF9zdGVwIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBzdGVwX2lzX29icyA9IGZ1bmN0aW9uXG4gIHwgT2JzIF8gLT4gdHJ1ZVxuICB8IFJ1bGUgXyB8IFBlcnQgXyB8IFN1YnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfaW5pdCA9IGZ1bmN0aW9uXG4gIHwgSW5pdCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfc3VicyA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBJbml0IF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcnVsZSA9IGZ1bmN0aW9uXG4gIHwgUnVsZSBfIC0+IHRydWVcbiAgfCBQZXJ0IF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHN0ZXBfaXNfcGVydCA9IGZ1bmN0aW9uXG4gIHwgUGVydCBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBJbml0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgT2JzIF8gLT4gZmFsc2VcblxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBPYnMgKF8sIF8sIGluZm8pIHwgUnVsZSAoXywgXywgaW5mbykgfCBQZXJ0IChfLCBfLCBpbmZvKSAtPiBTb21lIGluZm9cbiAgfCBJbml0IF8gLT4gU29tZSAoU2ltdWxhdGlvbl9pbmZvLmR1bW15ICgpKVxuICB8IFN1YnMgXyB8IER1bW15IF8gLT4gTm9uZVxuXG5sZXQgY3JlYXRpb25fb2ZfYWN0aW9ucyBvcCBhY3Rpb25zID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+IG9wIHggOjogbFxuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF9cbiAgICAgICAgLT5cbiAgICAgICAgbClcbiAgICBbXSBhY3Rpb25zXG5cbmxldCBjcmVhdGlvbl9vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCB7IEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGFjOyBfIH0sIF8pXG4gIHwgUGVydCAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IEluaXQgYWMgLT5cbiAgICBjcmVhdGlvbl9vZl9hY3Rpb25zIGZzdCBhY1xuICB8IE9icyBfIHwgRHVtbXkgXyB8IFN1YnMgXyAtPiBbXVxuXG5sZXQgaGFzX2NyZWF0aW9uX29mX3N0ZXAgeCA9IGNyZWF0aW9uX29mX3N0ZXAgeCA8PiBbXVxuXG5sZXQgdGVzdHNfb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgU3VicyBfIC0+IFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIExpc3QuZm9sZF9yaWdodCBMaXN0LmFwcGVuZCBlLkluc3RhbnRpYXRpb24udGVzdHNcbiAgICAgIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHNcbiAgfCBJbml0IF8gLT4gW11cbiAgfCBPYnMgKF8sIHgsIF8pIC0+IExpc3QuY29uY2F0IHhcbiAgfCBEdW1teSBfIC0+IFtdXG5cbmxldCBhY3Rpb25zX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXSwgW11cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+XG4gICAgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnMsIGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjXG4gIHwgSW5pdCB5IC0+IHksIFtdXG4gIHwgT2JzIChfLCBfLCBfKSAtPiBbXSwgW11cbiAgfCBEdW1teSBfIC0+IFtdLCBbXVxuXG5sZXQgc2lkZV9lZmZlY3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT4gZS5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgfCBTdWJzIF8gfCBPYnMgXyB8IER1bW15IF8gfCBJbml0IF8gLT4gW11cblxubGV0IGluaXRfdHJhY2VfZmlsZSB+dXVpZCBlbnYgZGVzYyA9XG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIntcXG5cXFwidXVpZFxcXCIgOiBcXFwiXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIChzdHJpbmdfb2ZfaW50IHV1aWQpIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIlxcXCIsXFxuXFxcImRpY3RcXFwiOntcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5IGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBcIixcIiBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MganNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ9LFxcblxcXCJtb2RlbFxcXCI6XCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgZGVzYyAoTW9kZWwudG9feW9qc29uIGVudikgaW5cbiAgb3V0cHV0X3N0cmluZyBkZXNjIFwiLFxcblxcXCJ0cmFjZVxcXCI6W1wiXG5cbmxldCBhc3NlcnRfZmllbGQgaWRlbnQgeCA9XG4gIGlmIGlkZW50IDw+IHggdGhlblxuICAgIFlvanNvbi5qc29uX2Vycm9yXG4gICAgICAoXCJ0cmFjZSBsYWNrcyB0aGUgZmllbGQgXFxcIlwiIF4geCBeIFwiXFxcIiAoYXQgdGhlIHJpZ2h0IHBsYWNlKVwiKVxuXG5sZXQgcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmID1cbiAgbGV0IGlkZW50ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCBpZGVudCcsIHV1aWQgPVxuICAgIGlmIGlkZW50ID0gXCJ1dWlkXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICAgICAgbGV0IHV1aWQgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBsZXhfc3QgbGV4X2J1ZlxuICAgICAgaW5cbiAgICAgIGxldCB1dWlkID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgdXVpZCkgd2l0aCBfIC0+IE5vbmUgaW5cbiAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmLCB1dWlkXG4gICAgKSBlbHNlXG4gICAgICBpZGVudCwgTm9uZVxuICBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQnIFwiZGljdFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnNraXBfanNvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICB1dWlkXG5cbmxldCBmb2xkX3RyYWNlIGYgaW5pdCBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xjdXJsIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBfID0gcmVhZF90cmFjZV9oZWFkZXJzIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBpZGVudCA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2lkZW50IGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGFzc2VydF9maWVsZCBpZGVudCBcIm1vZGVsXCIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGVudiA9XG4gICAgTW9kZWwub2ZfeW9qc29uXG4gICAgICAoSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9qc29uIGxleF9zdCBsZXhfYnVmKVxuICBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJ0cmFjZVwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBvdXQgPVxuICAgIEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXNcbiAgICAgIChZb2pzb24uQmFzaWMucmVhZF9zZXF1ZW5jZVxuICAgICAgICAgKGZ1biBhY2MgeCB5IC0+IGYgZW52IGFjYyAocmVhZF9zdGVwIHggeSkpXG4gICAgICAgICAoaW5pdCBlbnYpKVxuICAgICAgbGV4X3N0IGxleF9idWZcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0cnkgWW9qc29uLkJhc2ljLnJlYWRfb2JqZWN0X2VuZCBsZXhfYnVmIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKClcbiAgaW5cbiAgZW52LCBvdXRcblxubGV0IGZvbGRfdHJhY2VfZmlsZSBmIGluaXQgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgb3V0ID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyAoZm9sZF90cmFjZSBmIGluaXQpIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgb3V0XG5cbmxldCBnZXRfaGVhZGVyc19mcm9tX2ZpbGUgZm5hbWUgPVxuICBsZXQgZGVzYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGRlc2MgaW5cbiAgbGV0IGxleF9zdCA9IFlvanNvbi5pbml0X2xleGVyIH5mbmFtZSAoKSBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgdXVpZCA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW4gZGVzYyBpblxuICB1dWlkLCBlbnZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBFZmZpY2llbmN5IDogc2lnXG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIHZhbCBpbml0IDogaW50IC0+IHRcbiAgdmFsIG5iIDogdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiBpbnRcbiAgdmFsIG5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IGludFxuICB2YWwgcHJpbnRfZGV0YWlsIDogY3VycmVudF9ldmVudDppbnQgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0X2NvbnNlY3V0aXZlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfYmluYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX25vX21vcmVfdW5hcnkgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfY2xhc2hpbmdfaW5zdGFuY2UgOiBydWxlX2lkOmludCAtPiB0IC0+IHRcbiAgdmFsIGluY3JfdGltZV9jb3JyZWN0aW9uIDogdCAtPiB0XG4gIHZhbCBpbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgOiB0IC0+IHRcbiAgdmFsIHdyaXRlX3QgOiBCdWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHN0cmluZ19vZl90IDogP2xlbjppbnQgLT4gdCAtPiBzdHJpbmdcbiAgdmFsIHJlYWRfdCA6IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdFxuICB2YWwgdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBjb25zZWN1dGl2ZTogaW50IGFycmF5O1xuICAgIG11dGFibGUgY29uc2VjdXRpdmVfYmxvY2tlZDogaW50O1xuICAgIG11dGFibGUgbm9fbW9yZV9iaW5hcnk6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfdW5hcnk6IGludDtcbiAgICBtdXRhYmxlIGNsYXNoaW5nX2luc3RhbmNlOiBpbnQ7XG4gICAgbXV0YWJsZSB0aW1lX2NvcnJlY3Rpb246IGludDtcbiAgfVxuXG4gIGxldCBpbml0IHNpemUgPVxuICAgIHtcbiAgICAgIGNvbnNlY3V0aXZlID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID0gMDtcbiAgICAgIG5vX21vcmVfYmluYXJ5ID0gMDtcbiAgICAgIG5vX21vcmVfdW5hcnkgPSAwO1xuICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPSAwO1xuICAgICAgdGltZV9jb3JyZWN0aW9uID0gMDtcbiAgICB9XG5cbiAgbGV0IG5iIHQgPVxuICAgIHQubm9fbW9yZV9iaW5hcnkgKyB0Lm5vX21vcmVfdW5hcnkgKyB0LmNsYXNoaW5nX2luc3RhbmNlICsgdC50aW1lX2NvcnJlY3Rpb25cblxuICBsZXQgbmJfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpXG4gIGxldCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gMCBpblxuICAgIHRcblxuICBsZXQgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gMCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmVfYmxvY2tlZCA8LSBzdWNjIHQuY29uc2VjdXRpdmVfYmxvY2tlZCBpblxuICAgIHRcblxuICBsZXQgaW5jcl9ub19tb3JlX2JpbmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfYmluYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX2JpbmFyeSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV91bmFyeSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0Lm5vX21vcmVfdW5hcnkgPC0gc3VjYyB0Lm5vX21vcmVfdW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY2xhc2hpbmdfaW5zdGFuY2UgPC0gc3VjYyB0LmNsYXNoaW5nX2luc3RhbmNlIGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl90aW1lX2NvcnJlY3Rpb24gdCA9XG4gICAgbGV0ICgpID0gdC50aW1lX2NvcnJlY3Rpb24gPC0gc3VjYyB0LnRpbWVfY29ycmVjdGlvbiBpblxuICAgIHRcblxuICBsZXQgcHJpbnRfZGV0YWlsIH5jdXJyZW50X2V2ZW50IGYgdCA9XG4gICAgbGV0IGFsbCA9IGZsb2F0X29mX2ludCAobmIgdCkgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhbGwgPiAwLiB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbJS4yZiUlIG9mIGV2ZW50IGxvb3BzIHdlcmUgcHJvZHVjdGl2ZS5AIE51bGwgZXZlbnQgY2F1c2U6QF1ALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfdW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBubyBsb25nZXIgdW5hcnkgd2hlbiByZXF1aXJlZDogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0Lm5vX21vcmVfdW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiXFx0VmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX2JpbmFyeSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5jbGFzaGluZ19pbnN0YW5jZSA+IDAgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFx0Q2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5jbGFzaGluZ19pbnN0YW5jZSAvLiBhbGwpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdFBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQudGltZV9jb3JyZWN0aW9uIC8uIGFsbClcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXVwiXG5cbiAgbGV0IHRvX3lvanNvbiB0ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJjb25zZWN1dGl2ZVwiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9pbnQgdC5jb25zZWN1dGl2ZTtcbiAgICAgICAgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIsIGBJbnQgdC5jb25zZWN1dGl2ZV9ibG9ja2VkO1xuICAgICAgICBcIm5vX21vcmVfYmluYXJ5XCIsIGBJbnQgdC5ub19tb3JlX2JpbmFyeTtcbiAgICAgICAgXCJub19tb3JlX3VuYXJ5XCIsIGBJbnQgdC5ub19tb3JlX3VuYXJ5O1xuICAgICAgICBcImNsYXNoaW5nX2luc3RhbmNlXCIsIGBJbnQgdC5jbGFzaGluZ19pbnN0YW5jZTtcbiAgICAgICAgXCJ0aW1lX2NvcnJlY3Rpb25cIiwgYEludCB0LnRpbWVfY29ycmVjdGlvbjtcbiAgICAgIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICAge1xuICAgICAgICBjb25zZWN1dGl2ZSA9XG4gICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludClcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZVwiIHgpO1xuICAgICAgICBjb25zZWN1dGl2ZV9ibG9ja2VkID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJjb25zZWN1dGl2ZV9ibG9ja2VkXCIgeCk7XG4gICAgICAgIG5vX21vcmVfYmluYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfYmluYXJ5XCIgeCk7XG4gICAgICAgIG5vX21vcmVfdW5hcnkgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9fbW9yZV91bmFyeVwiIHgpO1xuICAgICAgICBjbGFzaGluZ19pbnN0YW5jZSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY2xhc2hpbmdfaW5zdGFuY2VcIiB4KTtcbiAgICAgICAgdGltZV9jb3JyZWN0aW9uID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnRcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0aW1lX2NvcnJlY3Rpb25cIiB4KTtcbiAgICAgIH1cbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc2ltdWxhdGlvbiBlZmZpY2llbmN5XCIsIHgpKVxuXG4gIGxldCB3cml0ZV90IG9iIGYgPSBZb2pzb24uQmFzaWMudG9fYnVmZmVyIG9iICh0b195b2pzb24gZilcblxuICBsZXQgc3RyaW5nX29mX3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlX3Qgb2IgeDtcbiAgICBCdWZmZXIuY29udGVudHMgb2JcblxuICBsZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbiAgbGV0IHRfb2Zfc3RyaW5nIHMgPSByZWFkX3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmVuZFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGltZTogZmxvYXQ7XG4gIG11dGFibGUgZXZlbnRzOiBpbnQ7XG4gIG11dGFibGUgc3RvcmllczogaW50O1xuICBtdXRhYmxlIGxhc3RfcG9pbnQ6IGludDtcbiAgbXV0YWJsZSBzdGF0X251bGw6IEVmZmljaWVuY3kudDtcbiAgaW5pdF90aW1lOiBmbG9hdDtcbiAgaW5pdF9ldmVudDogaW50O1xuICBtdXRhYmxlIHBsb3RfcGVyaW9kOiBDb25maWd1cmF0aW9uLnBlcmlvZDtcbiAgbXV0YWJsZSBtYXhfdGltZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIG1heF9ldmVudDogaW50IG9wdGlvbjtcbn1cblxubGV0IGN1cnJlbnRfc3RvcnkgYyA9IGMuc3Rvcmllc1xubGV0IGN1cnJlbnRfdGltZSBjID0gYy50aW1lXG5sZXQgY3VycmVudF9ldmVudCBjID0gYy5ldmVudHNcbmxldCBuYl9udWxsX2V2ZW50IGMgPSBFZmZpY2llbmN5Lm5iIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG5cbmxldCBjb25zZWN1dGl2ZV9ibG9ja2VkIGMgPSBFZmZpY2llbmN5Lm5iX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGxcbmxldCBpbmNfc3RvcmllcyBjID0gYy5zdG9yaWVzIDwtIGMuc3RvcmllcyArIDFcbmxldCBpbmNfZXZlbnRzIGMgPSBjLmV2ZW50cyA8LSBjLmV2ZW50cyArIDFcblxubGV0IGNoZWNrX3RpbWUgYyA9XG4gIG1hdGNoIGMubWF4X3RpbWUgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMudGltZSA8PSBtYXhcblxubGV0IGNoZWNrX291dHB1dF90aW1lIGMgb3QgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBvdCA8PSBtYXhcblxubGV0IGNoZWNrX2V2ZW50cyBjID1cbiAgbWF0Y2ggYy5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbWF4IC0+IGMuZXZlbnRzIDwgbWF4XG5cbmxldCBvbmVfdGltZV9hZHZhbmNlIGMgZHQgPVxuICBsZXQgKCkgPSBjLnRpbWUgPC0gYy50aW1lICsuIGR0IGluXG4gIGNoZWNrX3RpbWUgY1xuXG5sZXQgb25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbCBpblxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LnJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gaW5jX2V2ZW50cyBjIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9XG4gICAgYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NsYXNoaW5nX2luc3RhbmNlIH5ydWxlX2lkIGMuc3RhdF9udWxsXG4gIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCA/dGkgYyA9XG4gIG1hdGNoIE9wdGlvbl91dGlsLmJpbmQgTmJyLnRvX2Zsb2F0IHRpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB0aSAtPlxuICAgIGxldCAoKSA9IGMudGltZSA8LSB0aSBpblxuICAgIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl90aW1lX2NvcnJlY3Rpb24gYy5zdGF0X251bGwgaW5cbiAgICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ibG9ja2VkX2V2ZW50IGMgPVxuICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCBjLnN0YXRfbnVsbCBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IGdldF9lZmZpY2llbmN5IGMgPSBjLnN0YXRfbnVsbFxuXG5sZXQgcHJpbnRfZWZmaWNpZW5jeSBmIGMgPVxuICBFZmZpY2llbmN5LnByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudDooY3VycmVudF9ldmVudCBjKSBmIGMuc3RhdF9udWxsXG5cbmxldCBpbml0X3RpbWUgYyA9IGMuaW5pdF90aW1lXG5sZXQgbWF4X3RpbWUgYyA9IGMubWF4X3RpbWVcbmxldCBtYXhfZXZlbnRzIGMgPSBjLm1heF9ldmVudFxubGV0IHBsb3RfcGVyaW9kIGMgPSBjLnBsb3RfcGVyaW9kXG5cbmxldCB0aW1lX3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHRtYXggLT5cbiAgICBpZiB0bWF4ID4gdC5pbml0X3RpbWUgdGhlblxuICAgICAgU29tZSAoKHQudGltZSAtLiB0LmluaXRfdGltZSkgLy4gKHRtYXggLS4gdC5pbml0X3RpbWUpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxubGV0IGV2ZW50X3JhdGlvIHQgPVxuICBtYXRjaCB0Lm1heF9ldmVudCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbWF4IC0+XG4gICAgaWYgZW1heCA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWVcbiAgICAgICAgKGZsb2F0X29mX2ludCAodC5ldmVudHMgLSB0LmluaXRfZXZlbnQpXG4gICAgICAgIC8uIGZsb2F0X29mX2ludCAoZW1heCAtIHQuaW5pdF9ldmVudCkpXG5cbmxldCBzZXRfbWF4X3RpbWUgYyB0ID0gYy5tYXhfdGltZSA8LSB0XG5sZXQgc2V0X21heF9ldmVudHMgYyBlID0gYy5tYXhfZXZlbnQgPC0gZVxuXG5sZXQgdHJhY2tlZF9ldmVudHMgKGNvdW50ZXIgOiB0KSA6IGludCBvcHRpb24gPVxuICBpZiBjb3VudGVyLnN0b3JpZXMgPj0gMCB0aGVuXG4gICAgU29tZSBjb3VudGVyLnN0b3JpZXNcbiAgZWxzZVxuICAgIE5vbmVcblxubGV0IHNldF9wbG90X3BlcmlvZCAodCA6IHQpIHBsb3RfcGVyaW9kIDogdW5pdCA9IHQucGxvdF9wZXJpb2QgPC0gcGxvdF9wZXJpb2RcblxubGV0IGNyZWF0ZSA/KGluaXRfdCA9IDAuKSA/KGluaXRfZSA9IDApID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgIH5uYl9ydWxlcyAoKSA9XG4gIHtcbiAgICB0aW1lID0gaW5pdF90O1xuICAgIGV2ZW50cyA9IGluaXRfZTtcbiAgICBzdG9yaWVzID0gLTE7XG4gICAgc3RhdF9udWxsID0gRWZmaWNpZW5jeS5pbml0IG5iX3J1bGVzO1xuICAgIHBsb3RfcGVyaW9kO1xuICAgIGluaXRfdGltZSA9IGluaXRfdDtcbiAgICBpbml0X2V2ZW50ID0gaW5pdF9lO1xuICAgIG1heF90aW1lO1xuICAgIG1heF9ldmVudDtcbiAgICBsYXN0X3BvaW50ID0gMDtcbiAgfVxuXG5sZXQgcmVpbml0aWFsaXplIGNvdW50ZXIgPVxuICBjb3VudGVyLnRpbWUgPC0gY291bnRlci5pbml0X3RpbWU7XG4gIGNvdW50ZXIuZXZlbnRzIDwtIGNvdW50ZXIuaW5pdF9ldmVudDtcbiAgY291bnRlci5zdG9yaWVzIDwtIC0xO1xuICBjb3VudGVyLmxhc3RfcG9pbnQgPC0gMDtcbiAgY291bnRlci5zdGF0X251bGwgPC1cbiAgICBFZmZpY2llbmN5LmluaXQgKEFycmF5Lmxlbmd0aCBjb3VudGVyLnN0YXRfbnVsbC5FZmZpY2llbmN5LmNvbnNlY3V0aXZlKVxuXG5sZXQgbmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYyArIDE7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnByb2ZpbGluZ19pbmZvID0gKCk7XG4gIH1cblxubGV0IGN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGMgPVxuICB7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY3VycmVudF9zdG9yeSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lID0gY3VycmVudF90aW1lIGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50ID0gY3VycmVudF9ldmVudCBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBuZXh0X3N0b3J5IGMgPVxuICBsZXQgKCkgPSBpbmNfc3RvcmllcyBjIGluXG4gIG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gY1xuXG5sZXQgcG9zaXRpdmVfcGxvdF9wZXJpb2QgY291bnRlciA9XG4gIG1hdGNoIHBsb3RfcGVyaW9kIGNvdW50ZXIgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uREUgZSAtPiBlID4gMFxuICB8IENvbmZpZ3VyYXRpb24uRFQgdCAtPiB0ID4gMC5cblxubGV0IG5leHRfcG9pbnQgY291bnRlciBkdCA9XG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICBpZiBkVCA8PSAwLiB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaW50X29mX2Zsb2F0XG4gICAgICAgICgobWluXG4gICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lIGluZmluaXR5IChtYXhfdGltZSBjb3VudGVyKSlcbiAgICAgICAgICAgIChkdCArLiBjdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgIC0uIGNvdW50ZXIuaW5pdF90aW1lKVxuICAgICAgICAvLiBkVClcbiAgfCBDb25maWd1cmF0aW9uLkRFIGRFIC0+XG4gICAgaWYgZEUgPD0gMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgKGN1cnJlbnRfZXZlbnQgY291bnRlciAtIGNvdW50ZXIuaW5pdF9ldmVudCkgLyBkRVxuXG5sZXQgdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCA9XG4gIGxldCBuZXh0ID0gbmV4dF9wb2ludCBjb3VudGVyIGR0IGluXG4gIGxldCBsYXN0ID0gY291bnRlci5sYXN0X3BvaW50IGluXG4gIGxldCAoKSA9IGNvdW50ZXIubGFzdF9wb2ludCA8LSBuZXh0IGluXG4gIGxldCBuID0gbmV4dCAtIGxhc3QgaW5cbiAgbWF0Y2ggY291bnRlci5wbG90X3BlcmlvZCB3aXRoXG4gIHwgQ29uZmlndXJhdGlvbi5EVCBkVCAtPlxuICAgICggc25kXG4gICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAoZnVuICh0aW1lLCBhY2MpIF8gLT5cbiAgICAgICAgICAgICAoIHRpbWUgLS4gZFQsXG4gICAgICAgICAgICAgICBpZiBjaGVja19vdXRwdXRfdGltZSBjb3VudGVyIHRpbWUgdGhlblxuICAgICAgICAgICAgICAgICB0aW1lIDo6IGFjY1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhY2MgKSlcbiAgICAgICAgICAgKGNvdW50ZXIuaW5pdF90aW1lICsuIChmbG9hdF9vZl9pbnQgbmV4dCAqLiBkVCksIFtdKVxuICAgICAgICAgICBuKSxcbiAgICAgIGNvdW50ZXIgKVxuICB8IENvbmZpZ3VyYXRpb24uREUgXyAtPlxuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIFsgY291bnRlci50aW1lIF0sIGNvdW50ZXJcbiAgICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICAgIFtdLCBjb3VudGVyXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgKFwiQ291bnRlci50b19wbG90X3BvaW50czogaW52YWxpZCBpbmNyZW1lbnQgXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG5cbmxldCBmaWxsIH5vdXRwdXRzIGNvdW50ZXIgfmR0ID1cbiAgbGV0IHBvaW50cywgY291bnRlcicgPSB0b19wbG90X3BvaW50cyBjb3VudGVyIGR0IGluXG4gIExpc3QuaXRlciAoZnVuIHRpbWUgLT4gb3V0cHV0cyBjb3VudGVyJyB0aW1lKSBwb2ludHNcblxubGV0IGZha2VfdGltZSB0IHRpbWUgPSB7IHQgd2l0aCB0aW1lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9pbml0aWFsX2lucHV0cyA/dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0ID1cbiAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHV1aWQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB1dWlkIC0+IEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiJWFALiVhQC5cIiBDb25maWd1cmF0aW9uLnByaW50IGNvbmZcbiAgICAgIChLYXBwYV9wcmludGVyLmVudl9rYXBwYSB+bm9Db3VudGVycylcbiAgICAgIGVudlxuICBpblxuICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gIEZvcm1hdC5mcHJpbnRmIGlucHV0c19mb3JtIFwiQC5AWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChuLCByKSAtPlxuICAgICAgICAgbGV0IF8sIGluc19mcmVzaCA9XG4gICAgICAgICAgIFBhdHRlcm5fY29tcGlsZXIubGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIChNb2RlbC5kb21haW4gZW52KSByXG4gICAgICAgICBpblxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgaWYgaW5zX2ZyZXNoIDw+IFtdIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzKVxuICAgICAgICAgICAgICAgICBpbnNfZnJlc2hcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGlmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPD4gW10gdGhlbiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICAgICApXG4gICAgICAgICBpblxuICAgICAgICAgUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgICAoZnVuIGYgKG5iLCB0aykgLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+JSVpbml0OkAgQFslYUBdQCAlYUBdXCJcbiAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLmFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICAgICAgICAgICAoZnN0IChBbGdfZXhwci5tdWx0IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBuKSBuYikpXG4gICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdGspXG4gICAgICAgICAgIGYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucykpXG4gICAgaW5pdFxuXG50eXBlIHNuYXBzaG90ID0ge1xuICBzbmFwc2hvdF9ldmVudDogaW50O1xuICBzbmFwc2hvdF90aW1lOiBmbG9hdDtcbiAgc25hcHNob3RfYWdlbnRzOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0O1xuICBzbmFwc2hvdF90b2tlbnM6IChzdHJpbmcgKiBOYnIudCkgYXJyYXk7XG59XG5cbmxldCBwcmludF9zbmFwc2hvdCA/dXVpZCBmIHMgPVxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pi8vIFNuYXBzaG90IFtFdmVudDogJWRdQCxcIlxuICAgICAgKCpcIiwgVGltZTogJWZcIiopIHMuc25hcHNob3RfZXZlbnRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVzXFxcIkAsQCwlYUAsJWFAXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChKc29uVXRpbC5zdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgcy5zbmFwc2hvdF90aW1lKVxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDogJWkgLyolaSBhZ2VudHMqLyAlYUBdXCIgaVxuICAgICAgICAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gcyBlIC0+IHMgKyBBcnJheS5sZW5ndGggZSkgMCBtaXgpXG4gICAgICAgICAgIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiUlaW5pdDogJWEgJXNcIiBOYnIucHJpbnQgZWwgbmEpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCBwcmludF9kb3Rfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYWRpZ3JhcGggR3tALCVhQCwlYX1AXUAuXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAsXCIgeCkpXG4gICAgdXVpZFxuICAgIChQcC5saXN0aSBQcC5jdXQgKGZ1biBpIGYgKG5iLCBtaXgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPnN1YmdyYXBoIGNsdXN0ZXIlZHtALFwiIGk7XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgIFwiY291bnRlciVkIFtsYWJlbCA9IFxcXCIlZCBpbnN0YW5jZShzKVxcXCIsIHNoYXBlPW5vbmVdO0AsJWF9QF1cIiBpIG5iXG4gICAgICAgICAgIChVc2VyX2dyYXBoLnByaW50X2RvdF9jYyBpKVxuICAgICAgICAgICBtaXgpKVxuICAgIHMuc25hcHNob3RfYWdlbnRzXG4gICAgKFBwLmFycmF5IFBwLmN1dCAoZnVuIGkgZiAobmEsIGVsKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInRva2VuXyVkIFtsYWJlbCA9IFxcXCIlcyAoJWEpXFxcIiAsIHNoYXBlPW5vbmVdXCIgaSBuYVxuICAgICAgICAgICBOYnIucHJpbnQgZWwpKVxuICAgIHMuc25hcHNob3RfdG9rZW5zXG5cbmxldCB3cml0ZV9zbmFwc2hvdCBvYiBzID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfZXZlbnRcIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iXG4gICAgICBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90aW1lXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iXG4gICAgICBzLnNuYXBzaG90X3RpbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2FnZW50c1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnQpKVxuICAgICAgb2Igcy5zbmFwc2hvdF9hZ2VudHNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X3Rva2Vuc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXlcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBOYnIud3JpdGVfdCkpXG4gICAgICBvYiBzLnNuYXBzaG90X3Rva2Vuc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCByZWFkX3NuYXBzaG90IHAgbGIgPVxuICBsZXQgc25hcHNob3RfZXZlbnQsIHNuYXBzaG90X3RpbWUsIHNuYXBzaG90X2FnZW50cywgc25hcHNob3RfdG9rZW5zID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGUsIHRpLCBhLCB0KSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNuYXBzaG90X2V2ZW50XCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiLCB0aSwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfdGltZVwiIHRoZW5cbiAgICAgICAgICBlLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgYSwgdFxuICAgICAgICBlbHNlIGlmIGtleSA9IFwic25hcHNob3RfYWdlbnRzXCIgdGhlblxuICAgICAgICAgICggZSxcbiAgICAgICAgICAgIHRpLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucmVhZF9jb25uZWN0ZWRfY29tcG9uZW50KVxuICAgICAgICAgICAgICBwIGxiLFxuICAgICAgICAgICAgdCApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzbmFwc2hvdF90b2tlbnNcIikgaW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIE5ici5yZWFkX3QpXG4gICAgICAgICAgICAgIHAgbGIgKVxuICAgICAgICApKVxuICAgICAgKC0xLCBuYW4sIFtdLCBbfHxdKSBwIGxiXG4gIGluXG4gIHsgc25hcHNob3RfZXZlbnQ7IHNuYXBzaG90X3RpbWU7IHNuYXBzaG90X2FnZW50czsgc25hcHNob3RfdG9rZW5zIH1cblxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9zbmFwc2hvdFxuXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbnR5cGUgZGluX2RhdGEgPSB7XG4gIGRpbl9raW5kOiBQcmltaXRpdmVzLmRpbl9raW5kO1xuICBkaW5fc3RhcnQ6IGZsb2F0O1xuICBkaW5faGl0czogaW50IGFycmF5O1xuICBkaW5fZmx1eHM6IGZsb2F0IGFycmF5IGFycmF5O1xufVxuXG50eXBlIGRpbiA9IHsgZGluX3J1bGVzOiBzdHJpbmcgYXJyYXk7IGRpbl9kYXRhOiBkaW5fZGF0YTsgZGluX2VuZDogZmxvYXQgfVxuXG5sZXQgd3JpdGVfZGluIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fa2luZFwiIFByaW1pdGl2ZXMud3JpdGVfZGluX2tpbmQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX2tpbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9zdGFydFwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgZi5kaW5fZGF0YS5kaW5fc3RhcnRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9lbmRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2IgZi5kaW5fZW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fcnVsZXNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpXG4gICAgICBvYiBmLmRpbl9ydWxlc1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2hpdHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICBvYiBmLmRpbl9kYXRhLmRpbl9oaXRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZmx1eHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5fZmx1eHNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9kaW4gcCBsYiA9XG4gIGxldCBkaW5fa2luZCwgZGluX3N0YXJ0LCBkaW5faGl0cywgZGluX2ZsdXhzLCBkaW5fcnVsZXMsIGRpbl9lbmQgPVxuICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgKGZ1biAoaywgcywgaCwgZiwgciwgZSkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJkaW5fa2luZFwiIHRoZW5cbiAgICAgICAgICBQcmltaXRpdmVzLnJlYWRfZGluX2tpbmQgcCBsYiwgcywgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX3N0YXJ0XCIgdGhlblxuICAgICAgICAgIGssIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiLCBoLCBmLCByLCBlXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5faGl0c1wiIHRoZW5cbiAgICAgICAgICBrLCBzLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2ZsdXhzXCIgdGhlblxuICAgICAgICAgICggayxcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICBoLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX251bWJlcilcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHIsXG4gICAgICAgICAgICBlIClcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9lbmRcIiB0aGVuXG4gICAgICAgICAgaywgcywgaCwgZiwgciwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImRpbl9ydWxlc1wiKSBpblxuICAgICAgICAgIGssIHMsIGgsIGYsIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBlXG4gICAgICAgICkpXG4gICAgICAoUHJpbWl0aXZlcy5BQlNPTFVURSwgbmFuLCBbfHxdLCBbfHxdLCBbfHxdLCBuYW4pXG4gICAgICBwIGxiXG4gIGluXG4gIHtcbiAgICBkaW5fcnVsZXM7XG4gICAgZGluX2VuZDtcbiAgICBkaW5fZGF0YSA9IHsgZGluX2tpbmQ7IGRpbl9zdGFydDsgZGluX2hpdHM7IGRpbl9mbHV4cyB9O1xuICB9XG5cbmxldCBzdHJpbmdfb2ZfZGluID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX2RpblxuXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X2RvdF9kaW4gP3V1aWQgZGVzYyBmbHV4ID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQFs8dj4lYVwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiLEAsXCIgeCkpXG4gICAgICB1dWlkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgXCJkaWdyYXBoIEd7IGxhYmVsPVxcXCJEeW5hbWljIGluZmx1ZW5jZSBuZXR3b3JrXFxcIiA7IGxhYmVsbG9jPVxcXCJ0XFxcIiA7IFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIm5vZGUgW3NoYXBlPWJveCxzdHlsZT1maWxsZWQsZmlsbGNvbG9yPWxpZ2h0c2t5Ymx1ZV1ALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuYXJyYXlcbiAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGQgZiB2IC0+XG4gICAgICAgICAgICBpZiB2ID0gMC4gdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBjb2xvciwgYXJyb3doZWFkID1cbiAgICAgICAgICAgICAgICBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgXCJyZWQzXCIsIFwidGVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImdyZWVuM1wiLCBcIm5vcm1hbFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICBcIkBbPGg+XFxcIiVzXFxcIiAtPiBcXFwiJXNcXFwiIFxcXG4gICAgICAgICAgICAgICAgIFt3ZWlnaHQ9JWQsbGFiZWw9XFxcIiUuM2ZcXFwiLGNvbG9yPSVzLGFycm93aGVhZD0lc107QF1ALFwiXG4gICAgICAgICAgICAgICAgZmx1eC5kaW5fcnVsZXMuKHMpIGZsdXguZGluX3J1bGVzLihkKVxuICAgICAgICAgICAgICAgIChhYnMgKGludF9vZl9mbG9hdCB2KSlcbiAgICAgICAgICAgICAgICB2IGNvbG9yIGFycm93aGVhZFxuICAgICAgICAgICAgKSkpXG4gICAgICBkZXNjIGZsdXguZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJ9QF1ALlwiXG5cbmxldCBwcmludF9odG1sX2RpbiBkZXNjIGZsdXggPVxuICBQcF9odG1sLmdyYXBoX3BhZ2VcbiAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRHluYW1pYyBpbmZsdWVuY2UgbWFwXCIpXG4gICAgfnN1YnRpdGxlOihmdW4gZiAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIFwiYmV0d2VlbiB0ID0gPHNwYW4gaWQ9XFxcImJlZ2luX3RpbWVcXFwiPjwvc3Bhbj5zIGFuZCB0ID0gPHNwYW4gXFxcbiAgICAgICAgIGlkPVxcXCJlbmRfdGltZVxcXCI+PC9zcGFuPnMgKDxzcGFuIGlkPVxcXCJuYl9ldmVudHNcXFwiPjwvc3Bhbj4gZXZlbnRzKVwiKVxuICAgIFtcbiAgICAgIFwiaHR0cDovL2QzanMub3JnL2QzLnY0Lm1pbi5qc1wiO1xuICAgICAgXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy4zLjEubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCwuY2hvcmQgcGF0aCB7QCBmaWxsLW9wYWNpdHk6IC42NztAIFwiXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInN0cm9rZTogIzAwMDtAIHN0cm9rZS13aWR0aDogLjVweDtAIH1AXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGl2IGlkPVxcXCJmbHV4X2NvbnRhaW5lclxcXCI+PC9kaXY+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGZvcm0+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxhYmVsIGZvcj1cXFwiY29ycmVjdGlvblxcXCI+Q29ycmVjdGlvbjwvbGFiZWw+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxzZWxlY3QgaWQ9XFxcInNlbGVjdF9jb3JyZWN0aW9uXFxcIiBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIiBcXFxuICAgICAgICAgICBpZD1cXFwiY29ycmVjdGlvblxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJub25lXFxcIj5Ob25lPC9vcHRpb24+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxvcHRpb24gdmFsdWU9XFxcImhpdHNcXFwiPlJ1bGUgb2NjdXJlbmNlczwvb3B0aW9uPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8b3B0aW9uIHZhbHVlPVxcXCJ0aW1lXFxcIj5UaW1lPC9vcHRpb24+QF1ALDwvc2VsZWN0PkAsPC9kaXY+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIjxpbnB1dCBpZD1cXFwidG9nZ2xlX3NlbGVjdGVkX3J1bGVzXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiIHZhbHVlPVxcXCJUb2dnbGUgXFxcbiAgICAgICAgICAgc2VsZWN0ZWQgcnVsZXNcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxsYWJlbCBjbGFzcz1cXFwiY2hlY2tib3gtaW5saW5lXFxcIj5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIiB0eXBlPVxcXCJjaGVja2JveFxcXCI+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJSdWxlcyBzZWxmIGluZmx1ZW5jZUBdQCw8L2xhYmVsPkBdQCw8L2Zvcm0+QCxcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Zm9ybSBpZD1cXFwibWVudVxcXCI+PC9mb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmNvbW1vbl9qc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHNjcmlwdD5ALCVzQCw8L3NjcmlwdD5AXUAsXCJcbiAgICAgICAgICBSZXNvdXJjZV9zdHJpbmdzLmZsdXhfanNcbiAgICAgIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIkBbPHYgMj48c2NyaXB0PkAsXFxcInVzZSBzdHJpY3RcXFwiQCxAW3ZhciBmbHV4ID1AICVzO0BdQCxcIlxuICAgICAgICAgIChzdHJpbmdfb2ZfZGluIGZsdXgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBpZHMgPSB7QFtALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImJlZ2luVGltZUlkXFxcIiA6IFxcXCJiZWdpbl90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImVuZFRpbWVJZFxcXCIgOiBcXFwiZW5kX3RpbWVcXFwiLEAgXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwic2VsZWN0Q29ycmVjdGlvbklkXFxcIiA6IFxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwibmJFdmVudHNJZFxcXCIgOiBcXFwibmJfZXZlbnRzXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInJ1bGVzQ2hlY2tib3hlc0lkXFxcIiA6IFxcXCJtZW51XFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInRvZ2dsZVJ1bGVzSWRcXFwiIDogXFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIsQCBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcXCJjaGVja2JveFNlbGZJbmZsdWVuY2VJZFxcXCIgOiBcXFwiY2hlY2tib3hfc2VsZl9pbmZsdWVuY2VcXFwifTtAXUAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7IEBbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInZhciBmbHV4X21hcCA9IG5ldyBmbHV4TWFwKGlkcyk7QCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcImZsdXhfbWFwLnNldEZsdXgoZmx1eCk7IH07IEBdQCxcIiBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3NjcmlwdD5cIilcbiAgICBkZXNjXG5cbnR5cGUgcGxvdCA9IHsgcGxvdF9sZWdlbmQ6IHN0cmluZyBhcnJheTsgcGxvdF9zZXJpZXM6IGZsb2F0IG9wdGlvbiBhcnJheSBsaXN0IH1cblxubGV0IGFkZF9wbG90X2xpbmUgbmV3X29ic2VydmFibGVzIHBsb3QgPVxuICBsZXQgbmV3X3ZhbHVlcyA9IEFycmF5Lm1hcCAoZnVuIG5iciAtPiBOYnIudG9fZmxvYXQgbmJyKSBuZXdfb2JzZXJ2YWJsZXMgaW5cbiAge1xuICAgIHBsb3RfbGVnZW5kID0gcGxvdC5wbG90X2xlZ2VuZDtcbiAgICBwbG90X3NlcmllcyA9IG5ld192YWx1ZXMgOjogcGxvdC5wbG90X3NlcmllcztcbiAgfVxuXG5sZXQgaW5pdF9wbG90IGVudiA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0IHBsb3RfbGVnZW5kID1cbiAgICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXNcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KSBvKVxuICAgICAgZW52XG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzID0gW10gfVxuXG5sZXQgd3JpdGVfcGxvdCBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibGVnZW5kXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5wbG90X2xlZ2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic2VyaWVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQpKSlcbiAgICAgIG9iIGYucGxvdF9zZXJpZXNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9wbG90IHAgbGIgPVxuICBsZXQgcGxvdF9sZWdlbmQsIHBsb3Rfc2VyaWVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGwsIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2VyaWVzXCIgdGhlblxuICAgICAgICAgICggbCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX29wdGlvbiBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcImxlZ2VuZFwiKSBpblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgICkpXG4gICAgICAoW3x8XSwgW10pIHAgbGJcbiAgaW5cbiAgeyBwbG90X2xlZ2VuZDsgcGxvdF9zZXJpZXMgfVxuXG5sZXQgc3RyaW5nX29mX3Bsb3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfcGxvdFxuXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfcGxvdF9zZXAgaXNfdHN2IGYgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaXNfdHN2IHRoZW5cbiAgICAgICBcIlxcdFwiXG4gICAgIGVsc2VcbiAgICAgICBcIixcIilcblxubGV0IHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YgZiBhID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWFAXUAuXCJcbiAgICAoUHAuYXJyYXkgKHByaW50X3Bsb3Rfc2VwIGlzX3RzdikgKGZ1biBfIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGFcblxubGV0IHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IHBwIGYgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyAtPiBwcCkpXG4gICAgbFxuXG5sZXQgZXhwb3J0X3Bsb3QgfmlzX3RzdiBwbG90ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWElYVwiXG4gICAgKHByaW50X3Bsb3RfbGVnZW5kIH5pc190c3YpXG4gICAgcGxvdC5wbG90X2xlZ2VuZFxuICAgIChQcC5saXN0IFBwLmVtcHR5XG4gICAgICAgKHByaW50X3Bsb3RfbGluZSB+aXNfdHN2IChQcC5vcHRpb24gKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZVwiKSkpKVxuICAgIChMaXN0LnJldiBwbG90LnBsb3Rfc2VyaWVzKVxuXG5sZXQgcHJpbnRfd2FybmluZyA/cG9zIGYgbXNnID1cbiAgbGV0IHByIGYgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiV2FybmluZzogQFsldEBdXCIgbXNnIGluXG4gIG1hdGNoIHBvcyB3aXRoXG4gIHwgU29tZSBwb3MgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSAoKCksIHBvcylcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1ALlwiIHByICgpXG5cbnR5cGUgZmlsZV9saW5lID0geyBmaWxlX2xpbmVfbmFtZTogc3RyaW5nIG9wdGlvbjsgZmlsZV9saW5lX3RleHQ6IHN0cmluZyB9XG5cbnR5cGUgdCA9XG4gIHwgRElOIG9mIHN0cmluZyAqIGRpblxuICB8IERlbHRhQWN0aXZpdGllcyBvZiBpbnQgKiAoaW50ICogKGZsb2F0ICogZmxvYXQpKSBsaXN0XG4gIHwgUGxvdCBvZiBOYnIudCBhcnJheSAgKCoqIE11c3QgaGF2ZSBsZW5ndGggPj0gMSAoYXQgbGVhc3QgW1RdIG9yIFtFXSkgKilcbiAgfCBQcmludCBvZiBmaWxlX2xpbmVcbiAgfCBUcmFjZVN0ZXAgb2YgVHJhY2Uuc3RlcFxuICB8IFNuYXBzaG90IG9mIHN0cmluZyAqIHNuYXBzaG90XG4gIHwgTG9nIG9mIHN0cmluZ1xuICB8IFNwZWNpZXMgb2Ygc3RyaW5nICogZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcbiAgfCBXYXJuaW5nIG9mIExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgZGluX2tpbmQgPVxuICBsZXQgc2l6ZSA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgKyAxIGluXG4gIHtcbiAgICBEYXRhLmRpbl9raW5kO1xuICAgIERhdGEuZGluX3N0YXJ0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICBEYXRhLmRpbl9oaXRzID0gQXJyYXkubWFrZSBzaXplIDA7XG4gICAgRGF0YS5kaW5fZmx1eHMgPSBBcnJheS5tYWtlX21hdHJpeCBzaXplIHNpemUgMC47XG4gIH1cblxubGV0IGluY3JfZmx1eF9mbHV4IG9mX3J1bGUgb25fcnVsZSB2IGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgPC1cbiAgICBmbHV4LkRhdGEuZGluX2ZsdXhzLihvZl9ydWxlKS4ob25fcnVsZSkgKy4gdlxuXG5sZXQgaW5jcl9mbHV4X2hpdCBvZl9ydWxlIGZsdXggPVxuICBmbHV4LkRhdGEuZGluX2hpdHMuKG9mX3J1bGUpIDwtIHN1Y2MgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKVxuXG5sZXQgc3RvcF9mbHV4IGVudiBjb3VudGVyIGRpbl9kYXRhID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICBsZXQgZGluX3J1bGVzID1cbiAgICBBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+XG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpIHgpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZGluX2RhdGEuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+ICgpXG4gICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBqIHggLT5cbiAgICAgICAgICAgICAgZGluX2RhdGEuRGF0YS5kaW5fZmx1eHMuKGkpLihqKSA8LVxuICAgICAgICAgICAgICAgIChpZiBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIHggLy4gZmxvYXRfb2ZfaW50IGRpbl9kYXRhLkRhdGEuZGluX2hpdHMuKGkpKSkpXG4gICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzXG4gIGluXG4gIHsgRGF0YS5kaW5fcnVsZXM7IERhdGEuZGluX2RhdGE7IERhdGEuZGluX2VuZCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBwYXQgLT4gc2V0IG9mIHJvb3RzICopXG4gIG9mX3BhdHRlcm5zOiBJbnRDb2xsZWN0aW9uLnQgUGF0dGVybi5PYnNNYXAudDtcbiAgKCogcGF0IC0+IGNjIC0+IHNldCBvZiByb290cyAqKVxuICBvZl91bmFyeV9wYXR0ZXJuczogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50IFBhdHRlcm4uT2JzTWFwLnQ7XG59XG5cbnR5cGUgbW9kX2Njc19jYWNoZSA9IChpbnQsIHVuaXQpIEhhc2h0YmwudFxuXG5sZXQgZW1wdHkgZW52ID1cbiAge1xuICAgIG9mX3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT5cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLmNyZWF0ZSA2NCk7XG4gICAgb2ZfdW5hcnlfcGF0dGVybnMgPVxuICAgICAgUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBNb2RzLkludE1hcC5lbXB0eSk7XG4gIH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBpZiBJbnRDb2xsZWN0aW9uLmlzX2VtcHR5IChQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybikgdGhlblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIG1hdGNoaW5nc1xuXG5sZXQgYWRkX2ludHNldF9pbl9pbnRtYXAgaWQgc2V0IG1hcCA9XG4gIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgTW9kcy5JbnRNYXAucmVtb3ZlIGlkIG1hcFxuICBlbHNlXG4gICAgTW9kcy5JbnRNYXAuYWRkIGlkIHNldCBtYXBcblxuKCogQnJlYWsgYXBhcnQgY29ubmVjdGVkIGNvbXBvbmVudDpcbiAgIFVwZGF0ZSBcInJvb3RzIG9mIHVuYXJ5IHBhdHRlcm5zXCJcbiAgIEVhc3ksIEkgc2hvdWxkIG5vdCBoYXZlIHRvIHJld3JpdGUgdGhpcy5cbiAgIFNob3VsZCBjYWNoZXMgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsID8gSSBkbyBudCB0aGluayBzb1xuICAgYW5kIEkgd2lsbCBwcm9iYWJseSBjbGVhbiB0aGlzLlxuKilcbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKG9yaWdpbl9jYywgbmV3X2NjKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uIC0+XG4gICAgICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBuZXdfY2MgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uIG9yaWdpbl9jYyAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIGxldCBvc2V0ID1cbiAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgb3JpZ2luX2NjIGNjX21hcFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IG9zZXQpIHRoZW4gKFxuICAgICAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgKGZ1biB4IC0+IEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHggZWRnZXMgPSBTb21lIG5ld19jYylcbiAgICAgICAgICAgICAgb3NldFxuICAgICAgICAgIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgbmV3X2NjIG5zZXRcbiAgICAgICAgICAgICAgIChhZGRfaW50c2V0X2luX2ludG1hcCBvcmlnaW5fY2Mgb3NldCcgY2NfbWFwKSlcbiAgICAgICAgKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFNhbWU6IG5vdCB2ZXJ5IHN1YnRsZS4gWW91IGp1c3QgcHJvcGFnYXRlLiAqKVxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgbW9kX2Nvbm5lY3Rpdml0eSAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjYzIgKCkgaW5cbiAgICAgICAgSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MxICgpXG4gICAgaW5cbiAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgKGZ1biBjY19pZCBjY19tYXAgLT5cbiAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGNjMiBjY19tYXAgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gLT4gKClcbiAgICAgICAgfCBTb21lIHNldDIsIGNjX21hcCcgLT5cbiAgICAgICAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYzEgY2NfbWFwIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIGNjX2lkXG4gICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgY2MxIChNb2RzLkludFNldC51bmlvbiBzZXQxIHNldDIpIGNjX21hcCcpKVxuICAgICAgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnNcblxuKCogTW9zdCBvZiB0aGUgY29kZSBpcyB0byBkZWFsIHdpdGggdW5hcnlfaW5zdGFuY2VzLlxuICAgRG9lcyBub3RoaW5nIGZhbmN5LlxuICAgQWxzbyB0YWtlcyB0aGUgY2FjaGUgYXMgYW4gYXJndW1lbnQgKilcbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIGxldCB2YSA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gIGxldCAoKSA9XG4gICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgSW50Q29sbGVjdGlvbi5hZGRcbiAgICAgZWxzZVxuICAgICAgIEludENvbGxlY3Rpb24ucmVtb3ZlKVxuICAgICAgcm9vdCB2YVxuICBpblxuICBpZiBQYXR0ZXJuLlNldC5tZW0gcGF0dGVybiB1bmFyeV9jY3MgdGhlbiAoXG4gICAgbGV0IGNjX21hcCA9IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGluXG4gICAgbGV0IGNjX2lkID1cbiAgICAgICgqIFRoZSBvbmx5IGNhc2Ugd2hlcmUgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgaXMgTm9uZSBpcyB3aGVuXG4gICAgICAgICBbbm90IGlzX2FkZF0gYW5kIFtyb290XSBoYXMganVzdCBiZWVuIGVyYXNlZCEgQnV0LCBqdXN0XG4gICAgICAgICBiZWZvcmUgYmVpbmcgZXJhc2VkLCB3ZSBrbm93IHRoYXQgYW4gYWdlbnQgaXMgaW4gaXRzIG93blxuICAgICAgICAgY29ubmVjdGVkIGNvbXBvbmVudC4uLiAqKVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lIHJvb3QgKEVkZ2VzLmdldF9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QgZWRnZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm5lY3Rpdml0eSBjY19pZCAoKSBpblxuICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2NfaWQgY2NfbWFwIGluXG4gICAgbGV0IHNldCcgPVxuICAgICAgKGlmIGlzX2FkZCB0aGVuXG4gICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICBlbHNlXG4gICAgICAgICBNb2RzLkludFNldC5yZW1vdmUpXG4gICAgICAgIHJvb3Qgc2V0XG4gICAgaW5cbiAgICBsZXQgY2NfbWFwJyA9IGFkZF9pbnRzZXRfaW5faW50bWFwIGNjX2lkIHNldCcgY2NfbWFwIGluXG4gICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdHRlcm4gY2NfbWFwJ1xuICApXG5cbmxldCBudW1iZXIgciBwYXQgPSBJbnRDb2xsZWN0aW9uLnNpemUgKFBhdHRlcm4uT2JzTWFwLmdldCByLm9mX3BhdHRlcm5zIHBhdClcblxubGV0IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RzIC0+XG4gICAgICAgICBpZiBJbnRDb2xsZWN0aW9uLnNpemUgcm9vdHMgPiAwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICAgIHBhdHRlcm4gSW50Q29sbGVjdGlvbi5wcmludCByb290cykpXG4gICAgcm9vdHNfb2ZfcGF0dGVybnNcblxubGV0IHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHJvb3RzX29mX3BhdHRlcm5zID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdj4lYUBdXCJcbiAgICAoUGF0dGVybi5PYnNNYXAucHJpbnQgUHAuc3BhY2UgKGZ1biBwYXR0ZXJuIGYgcm9vdF9tYXBzIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFsjIEBbJWFAXSA9PT5AIEBbJWFAXUBdXCJcbiAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDp0cnVlKVxuICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgIChQcC5zZXQgTW9kcy5JbnRNYXAuYmluZGluZ3MgUHAuc3BhY2UgKGZ1biBmIChfY2NfaWQsIHJvb3RzKSAtPlxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LnByaW50IGYgcm9vdHMpKVxuICAgICAgICAgICByb290X21hcHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgbGV0IG5vQ291bnRlcnMgPSB0cnVlIGluXG4gIGxldCBkb21haW4gPSBOb25lIGluXG4gIGxldCAoKSA9IHByaW50X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3BhdHRlcm5zIGluXG4gIHByaW50X3VuYXJ5X2luamVjdGlvbnMgfm5vQ291bnRlcnMgP2RvbWFpbiBmIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIFVzZWZ1bCBzaG9ydGN1dHMgKilcblxubGV0IG9mX3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gSW50Q29sbGVjdGlvbi5jcmVhdGUgMVxuXG5sZXQgb2ZfdW5hcnlfcGF0dGVybiBwYXRfaWQgc3RhdGUgPVxuICB0cnkgUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zIHBhdF9pZFxuICB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludE1hcC5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICAoKiBGb3IgY291bnRlcmZhY3R1YWwgc2ltdWxhdGlvbiwgdGhlcmUgd291bGQgYmUgdHdvIG9mIHRoZXNlLiAqKVxuICByb290czogUm9vdHMudDtcbn1cblxudHlwZSBtZXNzYWdlID0gdW5pdFxuXG5sZXQgcmVjZWl2ZV9tZXNzYWdlIF8gc3QgPSBzdFxubGV0IGVtcHR5IGVudiA9IHsgcm9vdHMgPSBSb290cy5lbXB0eSBlbnYgfVxuXG5sZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiBzdGF0ZSBwYXR0ZXJuIG1hdGNoaW5ncyA9XG4gIFJvb3RzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUucm9vdHMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGJyZWFrX2FwYXJ0X2NjIHN0YXRlIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLmJyZWFrX2FwYXJ0X2NjIHN0YXRlLnJvb3RzIGVkZ2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgbWVyZ2VfY2Mgc3RhdGUgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzID1cbiAgUm9vdHMubWVyZ2VfY2Mgc3RhdGUucm9vdHMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgY2NzXG5cbmxldCB1cGRhdGVfcm9vdHMgc3RhdGUgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm4gcm9vdCA9XG4gIFJvb3RzLnVwZGF0ZV9yb290cyBzdGF0ZS5yb290cyBpc19hZGQgdW5hcnlfY2NzIGVkZ2VzIG1vZF9jb25uZWN0aXZpdHkgcGF0dGVyblxuICAgIHJvb3RcblxuKCoqIHsyIENoZWNraW5nIGluc3RhbmNlc30gKilcblxubGV0IGlzX3ZhbGlkIHN0YXRlIHBhdCByb290ID1cbiAgSW50Q29sbGVjdGlvbi5tZW0gcm9vdCAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3RhdGUucm9vdHMpXG5cbigqKiB7MiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIH0gKilcblxubGV0IG51bWJlcl9vZl9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCBwYXRzID1cbiAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgcGF0dGVybiAtPiBhY2MgKiBSb290cy5udW1iZXIgc3Qucm9vdHMgcGF0dGVybilcbiAgICAxIHBhdHNcblxubGV0IG51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fY2MgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgc2V0MSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxIGluXG4gICAgbGV0IHNldDIgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMiBpblxuICAgIE1vZHMuSW50U2V0LnNpemUgc2V0MSAqIE1vZHMuSW50U2V0LnNpemUgc2V0MlxuXG4oKiB7NiBQaWNrIGluc3RhbmNlcyB9ICopXG5cbmxldCBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKSA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIGZ1biBjYyAtPlxuICAgIGxldCByb290MSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDEpKVxuICAgIGluXG4gICAgbGV0IHJvb3QyID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoLTEpXG4gICAgICAgIChNb2RzLkludFNldC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMikpXG4gICAgaW5cbiAgICByb290MSwgcm9vdDJcblxuKCogV2UgcHJvdmlkZSBhIGN1c3RvbSBtb25hZGljIGZvbGQgZnVuY3Rpb24gdG8gYmVcbiAgIGxhenkgaW4gZHJhd2luZyByYW5kb20gbnVtYmVycyAqKVxubGV0IGZvbGRfcGlja2VkX2luc3RhbmNlID9ydWxlX2lkOl8gc3QgcmFuZG9tX3N0YXRlIHBhdHMgfmluaXQgZiA9XG4gIGxldCByZWMgYXV4IGkgYWNjID1cbiAgICBpZiBpID49IEFycmF5Lmxlbmd0aCBwYXRzIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgYWNjIC0+XG4gICAgICAgIGxldCBwYXQgPSBwYXRzLihpKSBpblxuICAgICAgICBsZXQgcm9vdF9vcHQgPVxuICAgICAgICAgIEludENvbGxlY3Rpb24ucmFuZG9tIHJhbmRvbV9zdGF0ZSAoUm9vdHMub2ZfcGF0dGVybiBwYXQgc3Qucm9vdHMpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByb290X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSByb290IC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGYgaSBwYXQgcm9vdCBhY2MgaW5cbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgKVxuICBpblxuICBhdXggMCAoU29tZSBpbml0KVxuXG4oKiogezYgRW51bWVyYXRlIGluc3RhbmNlc30gKilcblxubGV0IHByb2Nlc3NfZXhjcCA9XG4gIGxldCBub19ub19ubyBfID0gZmFsc2UgaW5cbiAgZnVuIHBhdHMgLT4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9fbm9fbm8sIC0xXG4gICAgfCBTb21lIChwYXQsIHJvb3QpIC0+XG4gICAgICBsZXQgc2VudF90b19maXhlZF9yb290IGogPSBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgcGF0IHBhdHMuKGopIGluXG4gICAgICBzZW50X3RvX2ZpeGVkX3Jvb3QsIHJvb3RcblxuKCogVGhpcyBpcyB0aGUgbGVnaXRpbWF0ZSBhbmQgZWZmaWNpZW50IHZlcnNpb24uICopXG5sZXQgZm9sZF9pbnN0YW5jZXMgP3J1bGVfaWQ6XyA/ZXhjcCBzdCBwYXRzIH5pbml0IGYgPVxuICBsZXQgc2VudF90b19leGNwX3Jvb3QsIGV4Y3Bfcm9vdCA9IHByb2Nlc3NfZXhjcCBwYXRzIGV4Y3AgaW5cblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwYXRzIGluXG4gIGxldCB0YWIgPSBBcnJheS5tYWtlIG4gKC0xKSBpblxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBuIHRoZW5cbiAgICAgIGYgdGFiIGFjY1xuICAgIGVsc2UgaWYgc2VudF90b19leGNwX3Jvb3QgaSB0aGVuIChcbiAgICAgIHRhYi4oaSkgPC0gZXhjcF9yb290O1xuICAgICAgYXV4IChpICsgMSkgYWNjXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpdGhfcm9vdHMgPSBSb290cy5vZl9wYXR0ZXJuIHBhdHMuKGkpIHN0LnJvb3RzIGluXG4gICAgICBJbnRDb2xsZWN0aW9uLmZvbGRcbiAgICAgICAgKGZ1biByIGFjYyAtPlxuICAgICAgICAgIHRhYi4oaSkgPC0gcjtcbiAgICAgICAgICBhdXggKGkgKyAxKSBhY2MpXG4gICAgICAgIGl0aF9yb290cyBhY2NcbiAgICApXG4gIGluXG4gIGF1eCAwIGluaXRcblxubGV0IG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgZiA9XG4gIE1vZHMuSW50TWFwLm1vbmFkaWNfZm9sZDJfc3BhcnNlICgpICgpXG4gICAgKGZ1biAoKSAoKSBrZXkgeDEgeDIgYWNjIC0+ICgpLCBmIGtleSB4MSB4MiBhY2MpXG4gICAgbWFwMSBtYXAyIGluaXRcbiAgfD4gc25kXG5cbmxldCBmb2xkX3VuYXJ5X2luc3RhbmNlcyA/cnVsZV9pZDpfIHN0IChwYXQxLCBwYXQyKSB+aW5pdCBmID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgbWFwX2ZvbGQyIG1hcDEgbWFwMiB+aW5pdCAoZnVuIF8gc2V0MSBzZXQyIGFjYyAtPlxuICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAoZnVuIHJvb3QxIGFjYyAtPlxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGQgKGZ1biByb290MiBhY2MgLT4gZiAocm9vdDEsIHJvb3QyKSBhY2MpIHNldDIgYWNjKVxuICAgICAgICBzZXQxIGFjYylcblxuKCoqIHs2IERlYnVnIGZ1bmN0aW9uc30gKilcblxubGV0IGRlYnVnX3ByaW50IGYgc3RhdGUgPSBSb290cy5kZWJ1Z19wcmludCBmIHN0YXRlLnJvb3RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdmFsdWVfc3RhdGVfYWxnX29wIGNvdW50ZXIgPyh0aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkNQVVRJTUUgLT4gTmJyLkYgKFN5cy50aW1lICgpKVxuICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE5ici5GIHRpbWVcbiAgfCBPcGVyYXRvci5FVkVOVF9WQVIgLT4gTmJyLkkgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLm5iX251bGxfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5FTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF9ldmVudHMgY291bnRlciB3aXRoXG4gICAgfCBTb21lIG4gLT4gTmJyLkkgblxuICAgIHwgTm9uZSAtPiBOYnIuRiBpbmZpbml0eSlcbiAgfCBPcGVyYXRvci5UTUFYX1ZBUiAtPlxuICAgIChtYXRjaCBDb3VudGVyLm1heF90aW1lIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG5cbnR5cGUgKF8sIF8pIHN0YWNrID1cbiAgfCBSRVRVUk4gOiAoJ2EsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQUxHIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBQcmltaXRpdmVzLmFsZ19leHByICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0lGIDpcbiAgICAgIFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmFsZ19leHByICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0JPT0wgOlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sXG4gICAgICAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChib29sLCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogTmJyLnQgKiAoTmJyLnQsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0NPTVAgOlxuICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcCAqIE5ici50ICogKGJvb2wsICdhKSBzdGFja1xuICAgICAgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX1VOIDogT3BlcmF0b3IudW5fYWxnX29wICogKE5ici50LCAnYSkgc3RhY2sgLT4gKE5ici50LCAnYSkgc3RhY2tcbiAgfCBUT19DT01QVVRFX0JPT0wgOiBPcGVyYXRvci51bl9ib29sX29wICogKGJvb2wsICdhKSBzdGFjayAtPiAoYm9vbCwgJ2EpIHN0YWNrXG5cbmxldCByZWMgZXhlY19hbGcgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5lIC0+XG4gICAgKE5ici50LCBhKSBzdGFjayAtPlxuICAgIGEgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBzayAtPlxuICBtYXRjaCBhbGcgd2l0aFxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0FMRyAob3AsIGIsIHNrKSlcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhIChUT19DT01QVVRFX1VOIChvcCwgc2spKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID90aW1lIG9wKVxuICAgICAgc2tcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfYWxnIGkpIHNrXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgY2NzIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfbWl4IGNjcykgc2tcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIChnZXRfdG9rIGkpIHNrXG4gIHwgQWxnX2V4cHIuQ09OU1QgbiAtPiB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiBza1xuICB8IEFsZ19leHByLklGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGNvbmRcbiAgICAgIChUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykpXG4gIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZXZhbHV0YXRlIGRlcml2YXRpdmVzIGluIGV4cHJlc3Npb25cIiwgTG9jLmR1bW15KSlcblxuYW5kIGV4ZWNfYm9vbCA6XG4gICAgdHlwZSBhLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgLT5cbiAgICAoYm9vbCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrIC0+XG4gIG1hdGNoIGV4cHIgd2l0aFxuICB8IEFsZ19leHByLlRSVUUgLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIHRydWUgc2tcbiAgfCBBbGdfZXhwci5GQUxTRSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0NPTVBVVEVfQk9PTCAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0JPT0wgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYVxuICAgICAgKFRPX0VYRUNfQ09NUCAob3AsIGIsIHNrKSlcblxuYW5kIHdpdGhfdmFsdWUgOlxuICAgIHR5cGUgYSBiLlxuICAgIENvdW50ZXIudCAtPlxuICAgID90aW1lOmZsb2F0IC0+XG4gICAgZ2V0X2FsZzooaW50IC0+IFByaW1pdGl2ZXMuYWxnX2V4cHIpIC0+XG4gICAgZ2V0X21peDooUGF0dGVybi5pZCBhcnJheSBsaXN0IC0+IE5ici50KSAtPlxuICAgIGdldF90b2s6KGludCAtPiBOYnIudCkgLT5cbiAgICBhIC0+XG4gICAgKGEsIGIpIHN0YWNrIC0+XG4gICAgYiA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgbiAtPiBmdW5jdGlvblxuICB8IFJFVFVSTiAtPiBuXG4gIHwgVE9fRVhFQ19BTEcgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9BTEcgKG9wLCBuLCBzaykpXG4gIHwgVE9fQ09NUFVURV9BTEcgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2Jpbl9hbGdfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fQ09NUFVURV9VTiAob3AsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoTmJyLm9mX3VuX2FsZ19vcCBvcCBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0NPTVAgKG9wLCBhbGcsIHNrKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnXG4gICAgICAoVE9fQ09NUFVURV9DT01QIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQ09NUCAob3AsIG4xLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgIChOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuKVxuICAgICAgc2tcbiAgfCBUT19FWEVDX0lGICh5ZXMsIG5vLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoaWYgbiB0aGVuXG4gICAgICAgICB5ZXNcbiAgICAgICBlbHNlXG4gICAgICAgICBubylcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5PUiwgXywgc2spIHdoZW4gbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgVE9fRVhFQ19CT09MIChPcGVyYXRvci5BTkQsIF8sIHNrKSB3aGVuIG5vdCBuIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGZhbHNlIHNrXG4gIHwgVE9fRVhFQ19CT09MICgoT3BlcmF0b3IuT1IgfCBPcGVyYXRvci5BTkQpLCBleHByLCBzaykgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIHNrXG4gIHwgVE9fQ09NUFVURV9CT09MIChPcGVyYXRvci5OT1QsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAobm90IG4pIHNrXG5cbmxldCB2YWx1ZV9ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciA9XG4gIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgUkVUVVJOXG5cbmxldCB2YWx1ZV9hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgPVxuICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZyBSRVRVUk5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlY29tcHV0ZWQgPSB7XG4gIHVuYXJ5X3BhdHRlcm5zOiBQYXR0ZXJuLlNldC50O1xuICBhbHdheXNfb3V0ZGF0ZWQ6IE9wZXJhdG9yLkRlcFNldC50O1xufVxuXG5tb2R1bGUgTWFrZSAoSW5zdGFuY2VzIDogSW5zdGFuY2VzX3NpZy5TKSA9IHN0cnVjdFxuICB0eXBlIGV2ZW50X3ByZWRpY2F0ZSA9XG4gICAgaW50IG9wdGlvbiAtPlxuICAgIE1hdGNoaW5nLnQgLT5cbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0IC0+XG4gICAgYm9vbFxuXG4gIHR5cGUgaW1wZXJhdGl2ZV9maWVsZHMgPSB7XG4gICAgcHJlY29tcHV0ZWQ6IHByZWNvbXB1dGVkO1xuICAgIGluc3RhbmNlczogSW5zdGFuY2VzLnQ7XG4gICAgdmFyaWFibGVzX2NhY2hlOiBOYnIudCBhcnJheTtcbiAgICB2YXJpYWJsZXNfb3ZlcndyaXRlOiBQcmltaXRpdmVzLmFsZ19leHByIG9wdGlvbiBhcnJheTtcbiAgICB0b2tlbnM6IE5ici50IGFycmF5O1xuICAgIGFjdGl2aXRpZXM6IFJhbmRvbV90cmVlLnRyZWU7XG4gICAgICAgICgqIHBhaXIgbnVtYmVycyBhcmUgcmVndWxhciBydWxlLCBvZGQgdW5hcnkgaW5zdGFuY2VzICopXG4gICAgcmFuZG9tX3N0YXRlOiBSYW5kb20uU3RhdGUudDtcbiAgICBzdG9yeV9tYWNoaW5lcnk6XG4gICAgICAoc3RyaW5nICgqb2JzIG5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5XG4gICAgICAqIEluc3RhbnRpYXRpb24uYWJzdHJhY3QgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdClcbiAgICAgIGxpc3RcbiAgICAgIFBhdHRlcm4uT2JzTWFwLnRcbiAgICAgICgqY3VycmVudGx5IHRyYWNrZWQgY2NzICopXG4gICAgICBvcHRpb247XG4gICAgc3BlY2llczpcbiAgICAgIChzdHJpbmcgKCpmaWxlbmFtZSopXG4gICAgICAqIFBhdHRlcm4uaWQgYXJyYXkgKCp3aXRoIG9ubHkgb25lIHBhdHRlcm4qKVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50O1xuICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5OiAoaW50LCB1bml0KSBIYXNodGJsLnQ7XG4gICAgICAgICgqIHNldCBvZiBjY3MgdGhhdCBoYXZlIGNoYW5nZWQgKilcbiAgfVxuXG4gIHR5cGUgaW5zdGFuY2UgPVxuICAgIGJvb2xcbiAgICAqIGludFxuICAgICogKEthcHBhX3Rlcm1zLk1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEthcHBhX21peHR1cmVzLkVkZ2VzLnBhdGggb3B0aW9uKVxuICAgICAgb3B0aW9uXG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgb3V0ZGF0ZWQ6IGJvb2w7XG4gICAgKCogV2l0aG91dCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gICAgbWF0Y2hpbmdzX29mX3J1bGU6IChNYXRjaGluZy50ICogaW50IGxpc3QpIGxpc3QgTW9kcy5JbnRNYXAudDtcbiAgICB1bmFyeV9jYW5kaWRhdGVzOlxuICAgICAgKCogcnVsZV9pZCAtPiBsaXN0IG9mIG1hdGNoaW5ncyAqKVxuICAgICAgKE1hdGNoaW5nLnQgKiBpbnQgbGlzdCAqIEVkZ2VzLnBhdGggb3B0aW9uKSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgKCogcnVsZSAtPiBjYyAtPiBudW1iZXJfaW5zdGFuY2VzIChhY3Rpdml0eSBwZXIgY2MpICopXG4gICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjOiBWYWxNYXAudCBNb2RzLkludE1hcC50O1xuICAgIGVkZ2VzOiBFZGdlcy50O1xuICAgIGltcDogaW1wZXJhdGl2ZV9maWVsZHM7XG4gICAgb3V0ZGF0ZWRfZWxlbWVudHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIGV2ZW50c190b19ibG9jazogZXZlbnRfcHJlZGljYXRlIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBnZXRfZWRnZXMgc3QgPSBzdC5lZGdlc1xuXG4gIGxldCBzdW1faW5zdGFuY2VzX251bWJlcnMgP3J1bGVfaWQgaW5zdHMgbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWMgeCAtPiBhYyArIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkIGluc3RzIHgpXG4gICAgICAwIGxcblxuICB0eXBlIHJlc3VsdCA9IENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCB8IFN1Y2Nlc3Mgb2YgdFxuXG4gIGxldCByYXdfZ2V0X2FsZyBlbnYgb3ZlcndyIGkgPVxuICAgIG1hdGNoIG92ZXJ3ci4oaSkgd2l0aFxuICAgIHwgTm9uZSAtPiBNb2RlbC5nZXRfYWxnIGVudiBpXG4gICAgfCBTb21lIGV4cHIgLT4gZXhwclxuXG4gIGxldCB2YWx1ZV9ib29sIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXJcbiAgICAgIH5nZXRfYWxnOihmdW4gaSAtPiBBbGdfZXhwci5DT05TVCBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSlcbiAgICAgIH5nZXRfbWl4OihmdW4gcGF0dGVybnMgLT5cbiAgICAgICAgTmJyLkkgKHN1bV9pbnN0YW5jZXNfbnVtYmVycyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHBhdHRlcm5zKSlcbiAgICAgIH5nZXRfdG9rOihmdW4gaSAtPiBzdGF0ZS5pbXAudG9rZW5zLihpKSlcbiAgICAgIGV4cHJcblxuICBsZXQgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgYWxnID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBFeHByX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBhbGdcblxuICBsZXQgcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGkgPVxuICAgIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpIDwtXG4gICAgICB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSAocmF3X2dldF9hbGcgZW52IHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlIGkpXG5cbiAgbGV0IGFjdGl2aXR5IHN0YXRlID0gUmFuZG9tX3RyZWUudG90YWwgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IGdldF9hY3Rpdml0eSBydWxlIHN0YXRlID0gUmFuZG9tX3RyZWUuZmluZCBydWxlIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBzZXRfYWN0aXZpdHkgcnVsZSB2IHN0YXRlID0gUmFuZG9tX3RyZWUuYWRkIHJ1bGUgdiBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgcGlja19ydWxlIHJ0IHN0YXRlID0gZnN0IChSYW5kb21fdHJlZS5yYW5kb20gcnQgc3RhdGUuaW1wLmFjdGl2aXRpZXMpXG5cbiAgbGV0IGluaXRpYWxfYWN0aXZpdHkgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgIChmdW4gaSAoKSBydWxlIC0+XG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgPSAwIHRoZW4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgKCBTb21lIChzbmQgcnVsZS5QcmltaXRpdmVzLnJhdGUpLFxuICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG5cbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJQcm9ibGVtYXRpYyBydWxlIHJhdGUgcmVwbGFjZWQgYnkgMFwiO1xuICAgICAgICAgICAgICAgICAgICAgS2FwcGFfcHJpbnRlci5lbGVtZW50YXJ5X3J1bGUgfmVudiB+bm9Db3VudGVycyBmIHJ1bGUgKSlcbiAgICAgICAgICB8IFNvbWUgcmF0ZSAtPiBzZXRfYWN0aXZpdHkgKDIgKiBpKSByYXRlIHN0YXRlXG4gICAgICAgICkpXG4gICAgICAoKSBlbnZcblxuICBsZXQgZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudiBjb3VudGVyID1cbiAgICBsZXQgYWN0aXZpdHlfdHJlZSA9IFJhbmRvbV90cmVlLmNyZWF0ZSAoMiAqIE1vZGVsLm5iX3J1bGVzIGVudikgaW5cbiAgICBsZXQgdW5hcnlfcGF0dGVybnMgPSBNb2RlbC51bmFyeV9wYXR0ZXJucyBlbnYgaW5cbiAgICBsZXQgYWx3YXlzX291dGRhdGVkID1cbiAgICAgIGxldCBkZXBzX2luX3QsIGRlcHNfaW5fZSwgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gZGVwc19pbl90IGRlcHNfaW5fZVxuICAgIGluXG4gICAgbGV0IHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgPSBub3QgKFBhdHRlcm4uU2V0LmlzX2VtcHR5IHVuYXJ5X3BhdHRlcm5zKSBpblxuICAgIGxldCB2YXJpYWJsZXNfb3ZlcndyaXRlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5vbmUgaW5cbiAgICBsZXQgdmFyaWFibGVzX2NhY2hlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfYWxncyBlbnYpIE5ici56ZXJvIGluXG4gICAgbGV0IGNhbmQgPVxuICAgICAge1xuICAgICAgICBpbXAgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0eV90cmVlO1xuICAgICAgICAgICAgcHJlY29tcHV0ZWQgPSB7IHVuYXJ5X3BhdHRlcm5zOyBhbHdheXNfb3V0ZGF0ZWQgfTtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnY7XG4gICAgICAgICAgICB2YXJpYWJsZXNfb3ZlcndyaXRlO1xuICAgICAgICAgICAgdmFyaWFibGVzX2NhY2hlO1xuICAgICAgICAgICAgdG9rZW5zID0gQXJyYXkubWFrZSAoTW9kZWwubmJfdG9rZW5zIGVudikgTmJyLnplcm87XG4gICAgICAgICAgICByYW5kb21fc3RhdGU7XG4gICAgICAgICAgICBzdG9yeV9tYWNoaW5lcnkgPVxuICAgICAgICAgICAgICAoaWYgd2l0aF90cmFjZSB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgKFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICAgIHNwZWNpZXMgPSBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKTtcbiAgICAgICAgICAgIGNoYW5nZWRfY29ubmVjdGl2aXR5ID0gSGFzaHRibC5jcmVhdGUgMzI7XG4gICAgICAgICAgfTtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgZWRnZXMgPSBFZGdlcy5lbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBhbHdheXNfb3V0ZGF0ZWQ7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IE5vbmU7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBUb29scy5pdGVyaSAocmVjb21wdXRlIGVudiBjb3VudGVyIGNhbmQpIChNb2RlbC5uYl9hbGdzIGVudikgaW5cbiAgICBsZXQgKCkgPSBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIGNhbmQgaW5cbiAgICBjYW5kXG5cbiAgbGV0IGNvbmNyZXRlX2FjdGlvbnNfZm9yX2luY29tcGxldGVfaW5qIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF9hY3Rpb25zID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBpbmogPSBtYXRjaGluZywgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgKEluc3RhbnRpYXRpb24udHJ5X2NvbmNyZXRpemVfYWN0aW9uIH5kZWJ1Z19tb2RlIGluailcbiAgICAgIGFic3RyYWN0X2FjdGlvbnNcblxuICBsZXQgY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyA9XG4gICAgbGV0IGFic3RyYWN0X3Rlc3RzID1cbiAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLnRlc3RzIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdC5tYXAgKEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluaikgYWJzdHJhY3RfdGVzdHNcblxuICBsZXQgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIG1hdGNoaW5nID1cbiAgICBtYXRjaCBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSB0b19ibG9jayAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nXG4gICAgICBpblxuICAgICAgbGV0IHRlc3RzID0gY29uY3JldGVfdGVzdHMgfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZyBpblxuICAgICAgdG9fYmxvY2sgcnVsZV9pZCBtYXRjaGluZyB0ZXN0cyBhY3Rpb25zXG5cbiAgbGV0IHNldF9ldmVudHNfdG9fYmxvY2sgcHJlZGljYXRlIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBwcmVkaWNhdGU7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIH1cblxuICBsZXQgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5zID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWF0Y2hpbmcgcm9vdCAtPlxuICAgICAgICBtYXRjaCBtYXRjaGluZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBtYXRjaGluZyBpIHBhdHRlcm5zLihpKVxuICAgICAgICAgICAgcm9vdClcbiAgICAgIChTb21lIE1hdGNoaW5nLmVtcHR5KSBpbnN0YW5jZVxuXG4gIGxldCBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/ZXhjcCA/dW5hcnlfcmF0ZSA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBkb21haW5cbiAgICAgIGVkZ2VzIHBhdHRlcm5hID1cbiAgICBsZXQgb3V0ID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX2luc3RhbmNlcyA/ZXhjcCA/cnVsZV9pZCBzdGF0ZV9pbnN0cyBwYXR0ZXJuYSB+aW5pdDpbXVxuICAgICAgICAoZnVuIGluc3RhbmNlIGFjYyAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBpbnN0YW5jZV90b19tYXRjaGluZyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2UgcGF0dGVybmFcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSBtYXRjaGluZyAtPlxuICAgICAgICAgICAgbGV0IHJldl9yb290cyA9IEFycmF5LmZvbGRfbGVmdCAoZnVuIHQgaCAtPiBoIDo6IHQpIFtdIGluc3RhbmNlIGluXG4gICAgICAgICAgICAobWF0Y2hpbmcsIHJldl9yb290cykgOjogYWNjKVxuICAgIGluXG4gICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IG91dFxuICAgIHwgU29tZSAoXywgTm9uZSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgXywgWyByMTsgcjIgXSAtPiBub3QgKEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCByMSByMiBlZGdlcylcbiAgICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICAgIG91dFxuICAgIHwgU29tZSAoXywgKFNvbWUgXyBhcyBtYXhfZGlzdGFuY2UpKSAtPlxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biAoaW5qLCBfKSAtPlxuICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHRlcm5hIGluaiBpblxuICAgICAgICAgIE5vbmUgPSBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZWRnZXMgbm9kZXMuKDApIG5vZGVzLigxKSlcbiAgICAgICAgb3V0XG5cbiAgbGV0IHBvcF9leGFjdF9tYXRjaGluZ3MgbWF0Y2hpbmdzX29mX3J1bGUgcnVsZSA9XG4gICAgc25kIChNb2RzLkludE1hcC5wb3AgcnVsZSBtYXRjaGluZ3Nfb2ZfcnVsZSlcblxuICBsZXQgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgcmFuZG9tX3N0YXRlIGRvbWFpbiBlZGdlcyA/cnVsZV9pZFxuICAgICAgcnVsZSA9XG4gICAgbGV0IGZyb21fcGF0dGVybnMgKCkgPVxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIEluc3RhbmNlcy5mb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzIHJhbmRvbV9zdGF0ZVxuICAgICAgICBwYXRzIH5pbml0OihNYXRjaGluZy5lbXB0eSwgW10sIE5vbmUpXG4gICAgICAgIChmdW4gaWQgcGF0dGVybiByb290IChpbmosIHJldl9yb290cywgXykgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiBpZCBwYXR0ZXJuIHJvb3RcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCByb290IDo6IHJldl9yb290cywgTm9uZSkpXG4gICAgaW5cbiAgICBtYXRjaCBydWxlX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKVxuICAgIHwgU29tZSBpZCAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlIHdpdGhcbiAgICAgIHwgU29tZSBbXSAtPiBOb25lXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBsZXQgYSwgYiA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgICAgU29tZSAoYSwgYiwgTm9uZSlcbiAgICAgIHwgTm9uZSAtPiBmcm9tX3BhdHRlcm5zICgpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICBjY3MgcnVsZSA9XG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP3VuYXJ5X3JhdGUgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyBkb21haW5cbiAgICAgICAgZWRnZXMgY2NzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBpZiBzdGF0ZS5ldmVudHNfdG9fYmxvY2sgPSBOb25lIHRoZW5cbiAgICAgICAgbWF0Y2hlc1xuICAgICAgZWxzZVxuICAgICAgICBtYXRjaGVzXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKG1hdGNoaW5nLCBfKSAtPlxuICAgICAgICAgICAgICAgbm90IChpc19ibG9ja2VkIH5kZWJ1Z19tb2RlIHN0YXRlIH5ydWxlX2lkIHJ1bGUgbWF0Y2hpbmcpKVxuICAgIGluXG4gICAgKCBMaXN0Lmxlbmd0aCBtYXRjaGVzLFxuICAgICAge1xuICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBtYXRjaGVzIHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgfSApXG5cbiAgKCogV2l0aCByZWN0YW5ndWxhciBhcHByb3hpbWF0aW9uICopXG4gIGxldCBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXNcbiAgICAgIChuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHVuYXJ5X2NhbmRpZGF0ZXMpIG1vZGlmaWVkX2NjcyBydWxlXG4gICAgICBydWxlX2lkID1cbiAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICBsZXQgcGF0MiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cblxuICAgIGxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID1cbiAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIH5ydWxlX2lkIGluc3RhbmNlcyAocGF0MSwgcGF0MilcbiAgICBpblxuXG4gICAgbGV0IG9sZF9wYWNrID1cbiAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBuZXdfcGFjayA9XG4gICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgKGZ1biBjYyAoKSBpX2luc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X3YgPSBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjIGNjIGluXG4gICAgICAgICAgaWYgbmV3X3YgPSAwIHRoZW5cbiAgICAgICAgICAgIFZhbE1hcC5yZW1vdmUgY2MgaV9pbnN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgVmFsTWFwLmFkZCBjYyBuZXdfdiBpX2luc3QpXG4gICAgICAgIG1vZGlmaWVkX2NjcyBvbGRfcGFja1xuICAgIGluXG4gICAgbGV0IHZhID0gVmFsTWFwLnRvdGFsIG5ld19wYWNrIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycgPVxuICAgICAgaWYgdmEgPSAwTCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jY1xuICAgICAgZWxzZVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcnVsZV9pZCBuZXdfcGFjayBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICBpblxuICAgIGxldCBfLCB1bmFyeV9jYW5kaWRhdGVzJyA9XG4gICAgICAoKiBJbnZhbGlkYXRlcyB0aGUgY2FjaGUgKilcbiAgICAgIE1vZHMuSW50TWFwLnBvcCBydWxlX2lkIHVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIHZhLCAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJywgdW5hcnlfY2FuZGlkYXRlcycpXG5cbiAgbGV0IHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXNcbiAgICAgIH5ydWxlX2lkIHJ1bGUgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHJ1bGVfaWQgc3RhdGUudW5hcnlfY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBpbmosIHJvb3RzLCBwYXRoID0gTGlzdF91dGlsLnJhbmRvbSByYW5kb21fc3RhdGUgbCBpblxuICAgICAgU29tZSAoaW5qLCByb290cywgcGF0aClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwYXQxID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKSBpblxuICAgICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA9XG4gICAgICAgIEluc3RhbmNlcy5waWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICByYW5kb21fc3RhdGUgKHBhdDEsIHBhdDIpXG4gICAgICBpblxuICAgICAgbGV0IGNjX2lkID1cbiAgICAgICAgVmFsTWFwLnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFZhbE1hcC5lbXB0eSBydWxlX2lkXG4gICAgICAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjKVxuICAgICAgaW5cbiAgICAgIGxldCByb290MSwgcm9vdDIgPSBwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIGNjX2lkIGluXG5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAICVpQCAlaUBdQC5cIiByb290MSByb290MlxuICAgICAgaW5cbiAgICAgIGxldCBwYXR0ZXJuMSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXR0ZXJuMiA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMSkgaW5cbiAgICAgIGxldCBpbmoxID1cbiAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIE1hdGNoaW5nLmVtcHR5IDAgcGF0dGVybjFcbiAgICAgICAgICByb290MVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBpbmoxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5qIDEgcGF0dGVybjIgcm9vdDJcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGlual9vdXQgLT4gU29tZSAoaW5qX291dCwgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkpKVxuXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgZG9tYWluIGdyYXBoIHBhdHMgcnVsZSA9XG4gICAgbGV0IHBhdHRlcm4xID0gcGF0cy4oMCkgaW5cbiAgICBsZXQgcGF0dGVybjIgPSBwYXRzLigxKSBpblxuICAgIGxldCBjYW5kcywgbGVuID1cbiAgICAgIEluc3RhbmNlcy5mb2xkX3VuYXJ5X2luc3RhbmNlcyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgIChwYXR0ZXJuMSwgcGF0dGVybjIpIH5pbml0OihbXSwgMClcbiAgICAgICAgKGZ1biAocm9vdDEsIHJvb3QyKSAoKGxpc3QsIGxlbikgYXMgb3V0KSAtPlxuICAgICAgICAgIGxldCBpbmoxID1cbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBNYXRjaGluZy5lbXB0eSAwXG4gICAgICAgICAgICAgIHBhdHRlcm4xIHJvb3QxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBpbmoxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggaW5qIDEgcGF0dGVybjJcbiAgICAgICAgICAgICAgICAgcm9vdDJcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IChpbmonLCBbIHJvb3QyOyByb290MSBdLCBOb25lKSA6OiBsaXN0LCBzdWNjIGxlblxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluIHBhdHMgaW5qJyBpblxuICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBncmFwaCBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgcCAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIGluaicgdGhlblxuICAgICAgICAgICAgICAgICAgICBvdXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKGluaicsIFsgcm9vdDI7IHJvb3QxIF0sIHApIDo6IGxpc3QsIHN1Y2MgbGVuKSkpKVxuICAgIGluXG4gICAgbGV0IHVuYXJ5X2NhbmRpZGF0ZXMgPVxuICAgICAgaWYgbGVuID0gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50TWFwLnJlbW92ZSBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgY2FuZHMgc3RhdGUudW5hcnlfY2FuZGlkYXRlc1xuICAgIGluXG4gICAgbGVuLCB7IHN0YXRlIHdpdGggdW5hcnlfY2FuZGlkYXRlcyB9XG5cbiAgbGV0IHByaW50IGVudiBmIHN0YXRlID1cbiAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChpLCBtaXgpIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVpIEBbPGg+JWFAXVwiIGkgVXNlcl9ncmFwaC5wcmludF9jYyBtaXgpKVxuICAgICAgKEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGU6ZmFsc2UgfnJhdzpmYWxzZSBzaWdzIHN0YXRlLmVkZ2VzKVxuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVhXCIgTmJyLnByaW50IGVsXG4gICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGkpKVxuICAgICAgc3RhdGUuaW1wLnRva2Vuc1xuXG4gIGxldCBkZWJ1Z19wcmludCBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWFALCVhQF1cIiBFZGdlcy5kZWJ1Z19wcmludCBzdGF0ZS5lZGdlc1xuICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIGVsIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSB0b2tlbl8laVwiIE5ici5wcmludCBlbCBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnMgSW5zdGFuY2VzLmRlYnVnX3ByaW50IHN0YXRlLmltcC5pbnN0YW5jZXNcblxuICB0eXBlIHN0YXRzID0geyBtaXh0dXJlX3N0YXRzOiBFZGdlcy5zdGF0cyB9XG5cbiAgbGV0IHN0YXRzIHN0YXRlID0geyBtaXh0dXJlX3N0YXRzID0gRWRnZXMuc3RhdHMgc3RhdGUuZWRnZXMgfVxuXG4gIGxldCBwcmludF9zdGF0cyBmIHN0YXRlID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkgYWdlbnRzXCIgKHN0YXRzIHN0YXRlKS5taXh0dXJlX3N0YXRzLkVkZ2VzLm5iX2FnZW50c1xuXG4gIGxldCBuZXdfcGxhY2UgZnJlZV9pZCAoaW5qX25vZGVzLCBpbmpfZnJlc2gpID0gZnVuY3Rpb25cbiAgICB8IE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8gLT4gZmFpbHdpdGggXCJSdWxlX2ludGVycHJldGVyLm5ld19wbGFjZVwiXG4gICAgfCBNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpIC0+XG4gICAgICBpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmFkZCBpZCBmcmVlX2lkIGlual9mcmVzaFxuXG4gIGxldCBhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBpbnN0YW5jZXNcbiAgICAgIChzaWRlX2VmZmVjdHMsIGVkZ2VzKSA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgXykgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIHNpZGVfZWZmZWN0cywgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKChpZCwgXyksIHMpLCAoKGlkJywgXyksIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIGNjX21vZGlmID0gRWRnZXMucmVtb3ZlX2xpbmsgaWQgcyBpZCcgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgY2NfbW9kaWZcbiAgICAgIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSwgcykgYXMgbikgLT5cbiAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIHggLT4geCA9IG4pIHNpZGVfZWZmZWN0cyB3aXRoXG4gICAgICB8IF8gOjogXywgc2lkZV9lZmZlY3RzJyAtPiBzaWRlX2VmZmVjdHMnLCBlZGdlc1xuICAgICAgfCBbXSwgXyAtPlxuICAgICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNpZGVfZWZmZWN0cywgRWRnZXMucmVtb3ZlX2ZyZWUgaWQgcyBlZGdlc1xuICAgICAgICB8IFNvbWUgKCgoaWQnLCBfKSBhcyBuYycpLCBzJykgLT5cbiAgICAgICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEluc3RhbmNlcy5icmVha19hcGFydF9jYyBpbnN0YW5jZXMgZWRnZXMnID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICAgIGNjX21vZGlmXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobmMnLCBzJykgOjogc2lkZV9lZmZlY3RzLCBlZGdlcycpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJQb3NpdGl2ZUludGVybmFsaXplZCBpbiBuZWdhdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLnJlbW92ZV9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuXG4gIGxldCBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuIC0+XG4gICAgICBsZXQgbmMsIGluajJncmFwaCcsIGVkZ2VzJyA9XG4gICAgICAgIGxldCB0eSA9IE1hdGNoaW5nLkFnZW50LmdldF90eXBlIG4gaW5cbiAgICAgICAgbGV0IGlkLCBlZGdlcycgPSBFZGdlcy5hZGRfYWdlbnQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgICAoaWQsIHR5KSwgbmV3X3BsYWNlIGlkIGluajJncmFwaCBuLCBlZGdlcydcbiAgICAgIGluXG4gICAgICAoaW5qMmdyYXBoJywgc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgICgqKEEsMjMpKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzJyA9XG4gICAgICAgIExpc3RfdXRpbC5zbWFydF9maWx0ZXIgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSkgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCwgc2lkZV9lZmZlY3RzJywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG4sIHMpLCAobicsIHMnKSkgLT5cbiAgICAgIGxldCBuYyA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBuYycgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJyBpblxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyXG4gICAgICAgICAgKGZ1biB4IC0+IHggPD4gKG5jLCBzKSAmJiB4IDw+IChuYycsIHMnKSlcbiAgICAgICAgICBzaWRlX2VmZmVjdHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBJbnN0YW5jZXMubWVyZ2VfY2MgaW5zdGFuY2VzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIG1vZGlmX2NjIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZVdoYXRFdmVyIGluIHBvc2l0aXZlIHVwZGF0ZVwiKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBsZXQgKChpZCwgXykgYXMgbmMpID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiBpblxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgICggKGluajJncmFwaCwgc2lkZV9lZmZlY3RzLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuYywgcywgaSkgKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHNpZ3MgP21vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgIGluc3RhbmNlcyBlZGdlcyA9IGZ1bmN0aW9uXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChpZCwgdHkpIC0+XG4gICAgICBsZXQgXywgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IH5pZCBzaWdzIHR5IGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKChpZCwgXyksIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgbGV0IGVkZ2VzJywgbW9kaWZfY2MgPSBFZGdlcy5hZGRfbGluayBuYyBzIG5jJyBzJyBlZGdlcyBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkICgoaWQsIF8pLCBzLCBpKSAtPlxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9pbnRlcm5hbCBpZCBzIGkgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJOZWdhdGl2ZUludGVybmFsaXplZCBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuYyAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCBkb21haW4gZWRnZXMgYWNjIG5jXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgobmMsIHMpLCAobmMnLCBzJykpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzIG5jJyBzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIC0+XG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICBsZXQgaSA9IEVkZ2VzLmdldF9pbnRlcm5hbCBpZCBzIGVkZ2VzIGluXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgKCgoaWQsIF8pIGFzIG5jKSwgcykgLT5cbiAgICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGlkIHMgZWRnZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fZnJlZSB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHNcbiAgICAgIHwgU29tZSAobmMnLCBzJykgLT5cbiAgICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcycpXG5cbiAgbGV0IG9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgdHJhbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzKVxuICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICB0cmFuc1xuICAgIHw+IGZzdFxuXG4gIGxldCBwYXRoX3Rlc3RzIHBhdGggdGVzdHMgPVxuICAgIGxldCBrbm93bl9hZ2VudHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIChpZCwgXykgLT4gTW9kcy5JbnRTZXQuYWRkIGlkIGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIC0+XG4gICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgdGVzdHNcbiAgICBpblxuICAgIGxldCBwcmV0ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgICAgICAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICB4IDw+IGEgJiYgeCA8PiBiICYmIHkgPD4gYSAmJiB5IDw+IGJcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgX1xuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICB0cnVlKSlcbiAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTb21lIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvICh4LCB5KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgICBwYXRoXG4gICAgaW5cbiAgICBsZXQgXywgcGF0aF90ZXN0cyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChhZywgdGUpICgoKChpZCwgXykgYXMgYSksIF8pLCAoKChpZCcsIF8pIGFzIGEnKSwgXykpIC0+XG4gICAgICAgICAgbGV0IGFnJywgdGUnID1cbiAgICAgICAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBhZyB0aGVuXG4gICAgICAgICAgICAgIGFnLCB0ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQgYWcsIEluc3RhbnRpYXRpb24uSXNfSGVyZSBhIDo6IHRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQnIGFnJyB0aGVuXG4gICAgICAgICAgICBhZycsIHRlJ1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmFkZCBpZCcgYWcnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYScgOjogdGUnKVxuICAgICAgICAoa25vd25fYWdlbnRzLCBwcmV0ZXN0cykgcGF0aFxuICAgIGluXG4gICAgcGF0aF90ZXN0c1xuXG4gIGxldCBzdGVwX29mX2V2ZW50IGNvdW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuSU5JVCBfLCBlIC0+IFRyYWNlLkluaXQgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICB8IFRyYWNlLlJVTEUgciwgeCAtPlxuICAgICAgVHJhY2UuUnVsZSAociwgeCwgQ291bnRlci5uZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG4gICAgfCBUcmFjZS5QRVJUIHAsIHggLT5cbiAgICAgIFRyYWNlLlBlcnQgKHAsIHgsIENvdW50ZXIuY3VycmVudF9zaW11bGF0aW9uX2luZm8gY291bnRlcilcblxuICBsZXQgc3RvcmVfZXZlbnQgfmRlYnVnX21vZGUgY291bnRlciBpbmoyZ3JhcGggbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlc1xuICAgICAgZXZlbnRfa2luZCA/cGF0aCBleHRyYV9zaWRlX2VmZmVjdHMgcnVsZSBvdXRwdXRzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgbGV0IGNldmVudCA9XG4gICAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGl6ZV9ldmVudCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGhcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgZnVsbF9jb25jcmV0ZV9ldmVudCA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgZXh0cmFfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGNldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoU29tZSBwYXRoKSAtPiBwYXRoX3Rlc3RzIHBhdGggY2V2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMpO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLlRyYWNlU3RlcFxuICAgICAgICAgICAgIChzdGVwX29mX2V2ZW50IGNvdW50ZXIgKGV2ZW50X2tpbmQsIGZ1bGxfY29uY3JldGVfZXZlbnQpKSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoaSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXAgKFRyYWNlLk9icyAoaSwgeCwgQ291bnRlci5uZXh0X3N0b3J5IGNvdW50ZXIpKSkpXG4gICAgICAgIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcblxuICBsZXQgZ2V0X3NwZWNpZXNfb2JzIH5kZWJ1Z19tb2RlIHNpZ3MgZWRnZXMgb2JzIGFjYyB0cmFja2VkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjIChmbiwgcGF0dGVybnMsIF8pIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIG9rIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuLmNvbXBhcmVfY2Fub25pY2FscyBwaWQgcGF0dGVybiA9IDAgfHwgb2spXG4gICAgICAgICAgICAgICAgICBmYWxzZSBwYXR0ZXJuc1xuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgc3BlYyA9IEVkZ2VzLnNwZWNpZXMgfmRlYnVnX21vZGUgc2lncyByb290IGVkZ2VzIGluXG4gICAgICAgICAgICAgICAgKGZuLCBwYXR0ZXJucywgc3BlYykgOjogYWNjXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgIGFjYyBvYnNcblxuICBsZXQgc3RvcmVfb2JzIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZXMgb2JzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSB0cmFja2VkIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGFjYyAocGF0dGVybiwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgKGV2LCBwYXR0ZXJucywgdGVzdHMpIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChpbmosIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0cycgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluaiwgTW9kcy5JbnRNYXAuZW1wdHkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIChldiwgdGVzdHMnKSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgIChhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSBpbnN0YW5jZXMgfmV4Y3A6KHBhdHRlcm4sIHJvb3QpXG4gICAgICAgICAgICAgICAgICAgICBkb21haW4gZWRnZXMgcGF0dGVybnMpKVxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgKFBhdHRlcm4uT2JzTWFwLmdldCB0cmFja2VkIHBhdHRlcm4pXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gYWNjKVxuICAgICAgICBhY2Mgb2JzXG5cbiAgbGV0IHVwZGF0ZV9lZGdlcyB+ZGVidWdfbW9kZSBvdXRwdXRzIGNvdW50ZXIgZG9tYWluIGlual9ub2RlcyBzdGF0ZSBldmVudF9raW5kXG4gICAgICA/cGF0aCBydWxlIHNpZ3MgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgY29uY3JldGVfcmVtb3ZlZCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5jb25jcmV0aXplIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgIChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLnJlbW92ZWRcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IChmaW5hbF9pbmoyZ3JhcGgsIHJlbWFpbmluZ19zaWRlX2VmZmVjdHMsIGVkZ2VzJyksIGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHgsIHApIGggLT5cbiAgICAgICAgICBsZXQgeCcsIGgnID1cbiAgICAgICAgICAgIGFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlXG4gICAgICAgICAgICAgIChQYXR0ZXJuLkVudi5zaWduYXR1cmVzIGRvbWFpbilcbiAgICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGhcbiAgICAgICAgICBpblxuICAgICAgICAgIHgnLCBoJyA6OiBwKVxuICAgICAgICAoKChpbmpfbm9kZXMsIE1vZHMuSW50TWFwLmVtcHR5KSwgc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcpLCBbXSlcbiAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc2VydGVkXG4gICAgaW5cbiAgICBsZXQgZWRnZXMnJywgY29uY3JldGVfaW5zZXJ0ZWQnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGUsIGkpICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAgICAgRWRnZXMuYWRkX2ZyZWUgaWQgcyBlLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChuYywgcykgOjogaSlcbiAgICAgICAgKGVkZ2VzJywgY29uY3JldGVfaW5zZXJ0ZWQpXG4gICAgICAgIHJlbWFpbmluZ19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCAobmV3X29icywgbmV3X2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkJ1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJycgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgcGF0IHJvb3QpXG4gICAgICAgIG5ld19vYnNcbiAgICBpblxuICAgICgqU3RvcmUgZXZlbnQqKVxuICAgIGxldCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzID1cbiAgICAgIHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMnJyBzdGF0ZS5pbXAuaW5zdGFuY2VzIG5ld19vYnMgW11cbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgZmluYWxfaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgICAgZXZlbnRfa2luZCA/cGF0aCByZW1haW5pbmdfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0c1xuICAgICAgICBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5XG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgZWRnZXMgPSBlZGdlcycnO1xuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSByZXZfZGVwcztcbiAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgc2lncyBjb3VudGVyIGRvbWFpbiBzdGF0ZVxuICAgICAgKGFjdGlvbnMsIHNpZGVfZWZmZWN0X2RzdCkgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICgqTmVnYXRpdmUgdXBkYXRlKilcbiAgICBsZXQgbG5rX2RzdCAoKGEsIF8pLCBzKSA9IEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYSBzIHN0YXRlLmVkZ2VzIGluXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIGxua19kc3RcbiAgICAgICAgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IChkZWxfb2JzLCBkZWxfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZS5lZGdlcylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCBfc2lkZV9lZmZlY3RzLCBlZGdlc19hZnRlcl9uZWcgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgIHN0YXRlLmltcC5pbnN0YW5jZXMpXG4gICAgICAgIChbXSwgc3RhdGUuZWRnZXMpIGNvbmNyZXRlX3JlbW92ZWRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIGZhbHNlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXNfYWZ0ZXJfbmVnXG4gICAgICAgICAgICBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHBhdCByb290KVxuICAgICAgICBkZWxfb2JzXG4gICAgaW5cbiAgICAoKlBvc2l0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX2luc2VydGVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lnc1xuICAgICAgICBzaWRlX2VmZmVjdF9kc3QgYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGVkZ2VzJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHggaCAtPlxuICAgICAgICAgIGFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBzdGF0ZS5pbXAuaW5zdGFuY2VzIHggaClcbiAgICAgICAgZWRnZXNfYWZ0ZXJfbmVnIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJylcbiAgICAgICAgKChbXSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5KSwgTWF0Y2hpbmcuZW1wdHlfY2FjaGUpXG4gICAgICAgIGNvbmNyZXRlX2luc2VydGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyB0cnVlXG4gICAgICAgICAgICBzdGF0ZS5pbXAucHJlY29tcHV0ZWQudW5hcnlfcGF0dGVybnMgZWRnZXMnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlByaW50IHNwZWNpZXMqKVxuICAgIGxldCBzcGVjaWVzID1cbiAgICAgIGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzJyBuZXdfb2JzIFtdIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGZpbGUsIF8sIG1peHR1cmUpIC0+XG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5TcGVjaWVzIChmaWxlLCBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyLCBtaXh0dXJlKSkpXG4gICAgICAgIHNwZWNpZXNcbiAgICBpblxuICAgIGxldCByZXZfZGVwcyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICAgICAgKE9wZXJhdG9yLkRlcFNldC51bmlvbiBkZWxfZGVwcyBuZXdfZGVwcylcbiAgICBpblxuICAgIHtcbiAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9IHN0YXRlLm1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjO1xuICAgICAgdW5hcnlfY2FuZGlkYXRlcyA9IHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICBlZGdlcyA9IGVkZ2VzJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCBtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkID0gTmJyLnRvX2ludCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZClcblxuICAoKiBjY192YSBpcyB0aGUgbnVtYmVyIG9mIGVtYmVkZGluZ3MuIEl0IG9ubHkgaGFzXG4gICAgIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIHJhdGUgY29uc3RhbnQgb2YgdGhlIHJ1bGUgKilcbiAgbGV0IHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGlkIHN5bnRheF9pZCByYXRlIGNjX3ZhXG4gICAgICA9XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFslc3VsZSAlYSBoYXMgbm93ICVpIGluc3RhbmNlcy5AXUAuXCJcbiAgICAgICAgICAoaWYgaWQgbW9kIDIgPSAxIHRoZW5cbiAgICAgICAgICAgICBcIlVuYXJ5IHJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJSXCIpXG4gICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZW52KVxuICAgICAgICAgIChpZCAvIDIpIGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgYWN0ID1cbiAgICAgIG1hdGNoIE5ici50b19mbG9hdCBAQCB2YWx1ZV9hbGcgY291bnRlciBzdGF0ZSByYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBjY192YSA9IDAgdGhlblxuICAgICAgICAgIDAuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmZpbml0eVxuICAgICAgfCBTb21lIHJhdGUgLT4gcmF0ZSAqLiBmbG9hdF9vZl9pbnQgY2NfdmFcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBhY3QgPCAwLiB0aGVuIChcbiAgICAgICAgbGV0IHVuYXJ5ID0gaWQgbW9kIDIgPSAxIGluXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkF0IHQ9JS4yZiAlc2N0aXZpdHkgb2YgcnVsZSAlYSBoYXMgYmVjb21lIG5lZ2F0aXZlICglZilcIlxuICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgKGlmIHVuYXJ5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgXCJVbmFyeSBcIlxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlwiKVxuICAgICAgICAgICAgICAgICAoTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5lbnYpXG4gICAgICAgICAgICAgICAgIGlkIGFjdCxcbiAgICAgICAgICAgICAgIE1vZGVsLmdldF9hc3RfcnVsZV9yYXRlX3BvcyB+dW5hcnkgZW52IHN5bnRheF9pZCApKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IG9sZF9hY3QgPSBnZXRfYWN0aXZpdHkgaWQgc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBzZXRfYWN0aXZpdHkgaWQgYWN0IHN0YXRlIGluXG4gICAgc3RvcmUgc3ludGF4X2lkIG9sZF9hY3QgYWN0XG5cbiAgbGV0IHVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlIGtub3duX3BlcnRzXG4gICAgICA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IHVuYXJ5X3J1bGVfdXBkYXRlIG1vZGlmaWVkX2NjIGluc3RhbmNlcyBpIHBhY2sgcnVsZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcGFja1xuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIGxldCB2YSwgcGFjaycgPVxuICAgICAgICAgIGNvbXB1dGVfdW5hcnlfbnVtYmVyIGluc3RhbmNlcyBwYWNrIG1vZGlmaWVkX2NjIHJ1bGUgaVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAoKDIgKiBpKSArIDEpXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIChJbnQ2NC50b19pbnQgdmEpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2snXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwICgoZXhhY3RfbWF0Y2hpbmdzLCBwZXJ0cykgYXMgYWNjKSAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID0gcmVjb21wdXRlIGVudiBjb3VudGVyIHN0YXRlIGogaW5cbiAgICAgICAgICAgIGF1eCAoTW9kZWwuZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaikgYWNjXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+IGV4YWN0X21hdGNoaW5ncywgcCA6OiBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBpIC0+XG4gICAgICAgICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBpIGluXG4gICAgICAgICAgICBsZXQgcGF0dGVybl92YSA9XG4gICAgICAgICAgICAgIEluc3RhbmNlcy5udW1iZXJfb2ZfaW5zdGFuY2VzIH5ydWxlX2lkOmkgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlIHN0b3JlIGVudiBjb3VudGVyIHN0YXRlICgyICogaSlcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSlcbiAgICAgICAgICAgICAgICBwYXR0ZXJuX3ZhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcG9wX2V4YWN0X21hdGNoaW5ncyBleGFjdF9tYXRjaGluZ3MgaSwgcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGxldCBtYXRjaGluZ3Nfb2ZfcnVsZSwgcGVydHMgPVxuICAgICAgYXV4IHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIChzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSwga25vd25fcGVydHMpXG4gICAgaW5cbiAgICBsZXQgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIEhhc2h0YmwubGVuZ3RoIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IDAgdGhlblxuICAgICAgICBzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAgICAgICAodW5hcnlfcnVsZV91cGRhdGUgc3RhdGUuaW1wLmNoYW5nZWRfY29ubmVjdGl2aXR5XG4gICAgICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAgICAgKHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgc3RhdGUudW5hcnlfY2FuZGlkYXRlcylcbiAgICAgICAgICAgIGVudlxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eSBpblxuICAgICAgICBvdXRcbiAgICAgIClcbiAgICBpblxuICAgICgge1xuICAgICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgICBpbXAgPSBzdGF0ZS5pbXA7XG4gICAgICAgIGVkZ2VzID0gc3RhdGUuZWRnZXM7XG4gICAgICAgIGV2ZW50c190b19ibG9jayA9IHN0YXRlLmV2ZW50c190b19ibG9jaztcbiAgICAgICAgbWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgICAgdW5hcnlfY2FuZGlkYXRlcztcbiAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPSBzdGF0ZS5pbXAucHJlY29tcHV0ZWQuYWx3YXlzX291dGRhdGVkO1xuICAgICAgfSxcbiAgICAgIHBlcnRzIClcblxuICBsZXQgb3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgc3RhdGUgZXhwciA9XG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmltcC52YXJpYWJsZXNfb3ZlcndyaXRlLihpKSA8LVxuICAgICAgICBTb21lIChBbGdfZXhwci5DT05TVCAodmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwcikpXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIE9wZXJhdG9yLkRlcFNldC5hZGQgKE9wZXJhdG9yLkFMRyBpKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICB9XG5cbiAgbGV0IHVwZGF0ZV90b2tlbnMgZW52IGNvdW50ZXIgc3RhdGUgaW5qZWN0ZWQgPVxuICAgIGxldCBpbmplY3RlZCcgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKChleHByLCBfKSwgaSkgLT4gdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgZXhwciwgaSlcbiAgICAgICAgaW5qZWN0ZWRcbiAgICBpblxuICAgIHtcbiAgICAgIHN0YXRlIHdpdGhcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHJkZXBzICh2YSwgaSkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlLmltcC50b2tlbnMuKGkpIDwtIE5ici5hZGQgc3RhdGUuaW1wLnRva2Vucy4oaSkgdmEgaW5cbiAgICAgICAgICAgIGxldCBkZXBzJyA9IE1vZGVsLmdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyBlbnYgaSBpblxuICAgICAgICAgICAgaWYgT3BlcmF0b3IuRGVwU2V0LmlzX2VtcHR5IGRlcHMnIHRoZW5cbiAgICAgICAgICAgICAgcmRlcHNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHJkZXBzIGRlcHMnKVxuICAgICAgICAgIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzIGluamVjdGVkJztcbiAgICB9XG5cbiAgbGV0IHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kID9wYXRoXG4gICAgICBydWxlID9ydWxlX2lkIGluaiA9XG4gICAgaWYgaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSA/cnVsZV9pZCBydWxlIGluaiB0aGVuXG4gICAgICBCbG9ja2VkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAgIGluXG4gICAgICBsZXQgc3RhdGUgPVxuICAgICAgICB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIChNb2RlbC5kb21haW4gZW52KSBpbmogc3RhdGVcbiAgICAgICAgICBldmVudF9raW5kID9wYXRoIHJ1bGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICAgICAgaW5cbiAgICAgIFN1Y2Nlc3Mgc3RhdGVcbiAgICApXG5cbiAgbGV0IGFwcGx5X2dpdmVuX3VuYXJ5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBDbGFzaFxuICAgIHwgU29tZSAoaW5qLCBfcmV2X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgc3RhdGUnID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlIHdpdGhcbiAgICAgICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5SVUxFIHJ1bGVfaWQpIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJyBldmVudF9raW5kXG4gICAgICAgICAgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZScgZCkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgTWF0Y2hpbmcuZWxlbWVudHNfd2l0aF90eXBlcyBkb21haW5cbiAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbWF4X2Rpc3RhbmNlID0gTm9uZSAmJiBzdGF0ZS5pbXAuc3RvcnlfbWFjaGluZXJ5ID0gTm9uZSB0aGVuXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIEVkZ2VzLmluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigwKSkpXG4gICAgICAgICAgICAgIChmc3QgKExpc3QuaGQgbm9kZXMuKDEpKSlcbiAgICAgICAgICAgICAgc3RhdGUuZWRnZXNcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGg6Tm9uZSBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIENvcnJlY3RlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIHN0YXRlLmVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IENvcnJlY3RlZFxuICAgICAgICAgIHwgU29tZSBfIGFzIHBhdGggLT5cbiAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSdcbiAgICAgICAgICAgICAgZXZlbnRfa2luZCB+cGF0aCBydWxlIH5ydWxlX2lkIGlualxuICAgICAgICApKVxuXG4gIGxldCBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgcmV2X3Jvb3RzLCBfcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgcm9vdHMgPSBUb29scy5hcnJheV9yZXZfb2ZfbGlzdCByZXZfcm9vdHMgaW5cbiAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFtPbiByb290czpAIEBbJWFAXUBdQC5cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gXyAtPiBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgICAgICAgIHJvb3RzXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgIHwgU29tZSAoXywgbWF4X2Rpc3RhbmNlKSAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHJldl9yb290cyB3aXRoXG4gICAgICAgICAgfCBbIHJvb3QxOyByb290MCBdIC0+XG4gICAgICAgICAgICBpZiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcm9vdDAgcm9vdDEgc3RhdGUuZWRnZXMgdGhlblxuICAgICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgICAgICAgZXZlbnRfa2luZCBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcImFwcGx5X2dpdmVuX3J1bGUgdW5hcnkgcnVsZSB3aXRob3V0IDIgcGF0dGVybnNcIilcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICAgIGxldCBkaXN0JyA9IFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGRpc3QpIGluXG4gICAgICAgICAgbGV0IG5vZGVzID1cbiAgICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpbmpcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZTpkaXN0JyBzdGF0ZS5lZGdlcyBub2Rlcy4oMClcbiAgICAgICAgICAgICAgIG5vZGVzLigxKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgICBydWxlID9ydWxlX2lkIGlualxuICAgICAgICAgIHwgU29tZSBfIC0+IENvcnJlY3RlZCkpKVxuXG4gIGxldCBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgPVxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IGluc3QgPVxuICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgP3J1bGVfaWQgcnVsZVxuICAgIGluXG4gICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSBpbnN0XG5cbiAgbGV0IGZvcmNlX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cnVsZV9pZCBydWxlXG4gICAgICA9XG4gICAgbWF0Y2hcbiAgICAgIGFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgICAgZXZlbnRfa2luZCBydWxlXG4gICAgd2l0aFxuICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBDbGFzaCAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICAgIG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICAgIGluXG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID9ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgKE1vZGVsLmRvbWFpbiBlbnYpIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50c1xuICAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkF0IHQ9JWYsICVhIGRvZXMgbm90IGFwcGx5IChhbnltb3JlKVwiXG4gICAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9ldmVudF9raW5kIH5lbnYpXG4gICAgICAgICAgICAgICAgICAgICBldmVudF9raW5kICkpXG4gICAgICAgIGluXG4gICAgICAgIE5vbmVcbiAgICAgIHwgbCAtPlxuICAgICAgICBsZXQgaCwgXyA9IExpc3RfdXRpbC5yYW5kb20gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZSBldmVudF9raW5kXG4gICAgICAgICAgICBydWxlID9ydWxlX2lkIGhcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgU3VjY2VzcyBvdXQgLT4gU29tZSBvdXRcbiAgICAgICAgfCBCbG9ja2VkIC0+IE5vbmVcbiAgICAgICAgfCBDbGFzaCB8IENvcnJlY3RlZCAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgdW5hcnlfcmF0ZSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChsb2MsIGRpc3Rfb3B0KSAtPlxuICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAobG9jLCBOb25lKVxuICAgICAgICB8IFNvbWUgZCAtPiBTb21lIChsb2MsIFNvbWUgKG1heF9kaXN0X3RvX2ludCBjb3VudGVyIHN0YXRlIGQpKSlcbiAgICBpblxuICAgIGxldCBhY3QsIHN0YXRlID1cbiAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZSBkb21haW5cbiAgICAgICAgc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBzdGF0ZSAoMiAqIHJ1bGVfaWQpIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgICAgICAoZnN0IHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSBhY3RcbiAgICBpblxuICAgIHN0YXRlXG5cbiAgKCogUmVkZWZpbmVzIGBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXNgICopXG4gIGxldCBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGUgcnVsZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICBsZXQgbWF4X2Rpc3RhbmNlID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoXywgZGlzdF9vcHQpIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSkgZGlzdF9vcHQpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP21heF9kaXN0YW5jZSBzdGF0ZVxuICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIHJ1bGVcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKHVucmF0ZSwgXykgLT5cbiAgICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgICAgKCgyICogcnVsZV9pZCkgKyAxKVxuICAgICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSAoZnN0IHVucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gIGxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGRvbWFpbiBzdGF0ZSBwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgSW5zdGFuY2VzLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJuXG4gICAgICAgIChNYXRjaGluZy5yb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMgcGF0dGVybilcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBzdGF0ZSA9XG4gICAge1xuICAgICAgRGF0YS5zbmFwc2hvdF9ldmVudCA9IENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyO1xuICAgICAgRGF0YS5zbmFwc2hvdF90aW1lID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfYWdlbnRzID1cbiAgICAgICAgRWRnZXMuYnVpbGRfdXNlcl9zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgICAgICBzdGF0ZS5lZGdlcztcbiAgICAgIERhdGEuc25hcHNob3RfdG9rZW5zID1cbiAgICAgICAgQXJyYXkubWFwaVxuICAgICAgICAgIChmdW4gaSB4IC0+IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIGksIHgpXG4gICAgICAgICAgc3RhdGUuaW1wLnRva2VucztcbiAgICB9XG5cbiAgbGV0IHBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IHN0YXRlID1cbiAgICBsZXQgY2hvaWNlID0gcGlja19ydWxlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgc3RhdGUgaW5cbiAgICBsZXQgcnVsZV9pZCA9IGNob2ljZSAvIDIgaW5cbiAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAoIGNob2ljZSBtb2QgMiA9IDEsXG4gICAgICBydWxlX2lkLFxuICAgICAgaWYgY2hvaWNlIG1vZCAyID0gMSB0aGVuXG4gICAgICAgIHBpY2tfYV91bmFyeV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGVcbiAgICAgICAgICBkb21haW4gc3RhdGUuZWRnZXMgfnJ1bGVfaWQgcnVsZVxuICAgICAgZWxzZVxuICAgICAgICBwaWNrX2FfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIGRvbWFpblxuICAgICAgICAgIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGUgKVxuXG4gIGxldCBpc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbWF0Y2ggaW5zdGFuY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIChfaW5qLCBpbnZfcm9vdHMsIHBhdGgpIC0+XG4gICAgICBsZXQgcnVsZSA9IE1vZGVsLmdldF9ydWxlIGVudiBydWxlX2lkIGluXG4gICAgICBsZXQgcGF0cyA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgKGZ1biBfIGIgY2MgciAtPiBiICYmIEluc3RhbmNlcy5pc192YWxpZCBncmFwaC5pbXAuaW5zdGFuY2VzIGNjIHIpXG4gICAgICAgIHRydWUgcGF0c1xuICAgICAgICAoVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgaW52X3Jvb3RzKVxuICAgICAgJiYgKChub3QgaXNfdW5hcnkpXG4gICAgICAgICB8fFxuICAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgICB8IFNvbWUgcCAtPiBFZGdlcy5pc192YWxpZF9wYXRoIHAgZ3JhcGguZWRnZXNcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggaW52X3Jvb3RzIHdpdGhcbiAgICAgICAgICAgfCBbIHg7IHkgXSAtPiBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgeCB5IGdyYXBoLmVkZ2VzXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG4gIGxldCBhcHBseV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/bWF4Q29uc2VjdXRpdmVCbG9ja2VkXG4gICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCAoaXNfdW5hcnksIHJ1bGVfaWQsIGluc3RhbmNlKSA9XG4gICAgbGV0IGNhdXNlID0gVHJhY2UuUlVMRSBydWxlX2lkIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbPHY+QFtBcHBsaWVkQCAldCVpOkBdQCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAoZnVuIGYgLT4gaWYgaXNfdW5hcnkgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwidW5hcnlAIFwiKVxuICAgICAgICAgIHJ1bGVfaWRcbiAgICAgICAgICAoS2FwcGFfcHJpbnRlci5kZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnM6dHJ1ZSB+ZnVsbDp0cnVlIGVudilcbiAgICAgICAgICBydWxlXG4gICAgICAoKlJ1bGVfaW50ZXJwcmV0ZXIucHJpbnRfZGlzdCBlbnYgZ3JhcGggcnVsZV9pZCopXG4gICAgaW5cbiAgICBsZXQgYXBwbHlfZ2l2ZW4gPVxuICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgICAgZWxzZVxuICAgICAgICBhcHBseV9naXZlbl9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZFxuICAgIGluXG4gICAgbWF0Y2ggYXBwbHlfZ2l2ZW4gZW52IGNvdW50ZXIgZ3JhcGggY2F1c2UgcnVsZSBpbnN0YW5jZSB3aXRoXG4gICAgfCBTdWNjZXNzIGdyYXBoJyAtPlxuICAgICAgbGV0IGZpbmFsX3N0ZXAgPSBub3QgKENvdW50ZXIub25lX2NvbnN0cnVjdGl2ZV9ldmVudCB+cnVsZV9pZCBjb3VudGVyKSBpblxuICAgICAgU29tZSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUsIGZpbmFsX3N0ZXAsIGdyYXBoJ1xuICAgIHwgKENsYXNoIHwgQ29ycmVjdGVkIHwgQmxvY2tlZCkgYXMgb3V0IC0+XG4gICAgICBsZXQgY29udGludWUgPVxuICAgICAgICBpZiBvdXQgPSBDbGFzaCB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQgfnJ1bGVfaWQgY291bnRlclxuICAgICAgICBlbHNlIGlmIG91dCA9IEJsb2NrZWQgdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2Jsb2NrZWRfZXZlbnQgY291bnRlclxuICAgICAgICBlbHNlIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZVxuICAgICAgICAgIENvdW50ZXIub25lX25vX21vcmVfYmluYXJ5X2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgIGluXG4gICAgICBpZlxuICAgICAgICBDb3VudGVyLmNvbnNlY3V0aXZlX251bGxfZXZlbnQgfnJ1bGVfaWQgY291bnRlciA8IG1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgJiZcbiAgICAgICAgbWF0Y2ggbWF4Q29uc2VjdXRpdmVCbG9ja2VkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIG4gLT4gQ291bnRlci5jb25zZWN1dGl2ZV9ibG9ja2VkIGNvdW50ZXIgPCBuXG4gICAgICB0aGVuXG4gICAgICAgIE5vbmUsIG5vdCBjb250aW51ZSwgZ3JhcGhcbiAgICAgIGVsc2VcbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIG5vdCBjb250aW51ZSxcbiAgICAgICAgICBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgICBhZGp1c3RfdW5hcnlfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgcnVsZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkanVzdF9ydWxlX2luc3RhbmNlcyB+ZGVidWdfbW9kZSB+cnVsZV9pZCBlbnYgY291bnRlciBncmFwaCBydWxlIClcblxuICBsZXQgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm4gPVxuICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIHBhdHRlcm4gLT5cbiAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoKG5hbWUsIHBhdHRlcm5zLCB0ZXN0cykgOjogYWNjKSlcbiAgICAgICAgcGF0dGVybnNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH1cblxuICBsZXQgYWRkX3RyYWNrZWQgfm91dHB1dHMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICBcIk9ic2VydmFibGUgJXMgc2hvdWxkIGJlIHRyYWNrZWQgYnV0IHRoZSB0cmFjZSBpcyBub3Qgc3RvcmVkXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgc3RhdGVcbiAgICB8IFNvbWUgdHBhdHRlcm4gLT4gYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgdHBhdHRlcm5cblxuICBsZXQgcmVtb3ZlX3RyYWNrZWQgcGF0dGVybnMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbWF0Y2ggc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+XG4gICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChfLCBlbCwgXykgPVxuICAgICAgICAgIG5vdFxuICAgICAgICAgIEBAIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgIChmdW4gaSBiIHggLT4gYiAmJiBQYXR0ZXJuLmlzX2VxdWFsX2Nhbm9uaWNhbHMgeCBlbC4oaSkpXG4gICAgICAgICAgICAgICB0cnVlIHBhdHRlcm5zXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQXJyYXkuaXRlclxuICAgICAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBQYXR0ZXJuLk9ic01hcC5nZXQgdHBhdHRlcm4gcGF0dGVybiBpblxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gcGF0dGVybiAoTGlzdC5maWx0ZXIgdGVzdGVyIGFjYykpXG4gICAgICAgICAgICBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG4gICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCB0cGF0dGVybiBjY19pZCAoTGlzdC5maWx0ZXIgdGVzdGVyIHBsaXN0KSlcbiAgICAgICAgICAgIHRwYXR0ZXJuXG4gICAgICAgIGluXG4gICAgICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZCA9IGZhbHNlIH0pXG5cbiAgbGV0IGFkZF90cmFja2VkX3NwZWNpZXMgcGF0dGVybnMgbmFtZSB0ZXN0cyBzdGF0ZSA9XG4gICAgYXV4X2FkZF90cmFja2VkIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgc3RhdGUuaW1wLnNwZWNpZXNcblxuICBsZXQgcmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBuYW1lIHN0YXRlID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IHRlc3RlciAobiwgXywgXykgPSBub3QgKFN0cmluZy5jb21wYXJlIG5hbWUgbiA9IDApIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAgIChmdW4gY2NfaWQgcGxpc3QgLT5cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUuaW1wLnNwZWNpZXMgY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgIHN0YXRlLmltcC5zcGVjaWVzXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGdldF9yYW5kb21fc3RhdGUgc3RhdGUgPSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG5cbiAgbGV0IHNlbmRfaW5zdGFuY2VzX21lc3NhZ2UgbXNnIHN0YXRlID1cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBpbXAgPVxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGUuaW1wIHdpdGhcbiAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMucmVjZWl2ZV9tZXNzYWdlIG1zZyBzdGF0ZS5pbXAuaW5zdGFuY2VzO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyBuZXdfZGVwcyBzdGF0ZSA9XG4gICAgbGV0IG91dGRhdGVkX2VsZW1lbnRzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBuZXdfZGVwcyBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkX2VsZW1lbnRzIH1cblxuICBsZXQgZGVidWdfcHJpbnRfaW5zdGFuY2VzIGYgc3QgPSBJbnN0YW5jZXMuZGVidWdfcHJpbnQgZiBzdC5pbXAuaW5zdGFuY2VzXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgaW5pdF9zdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBtdXRhYmxlIHN0b3BwaW5nX3RpbWVzOiAoTmJyLnQgKiBpbnQpIGxpc3Q7XG4gIHBlcnR1cmJhdGlvbnNfYWxpdmU6IGJvb2wgYXJyYXk7XG4gIHRpbWVfZGVwZW5kZW50X3BlcnRzOiBpbnQgbGlzdDtcbiAgbXV0YWJsZSBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnM6IGludCBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldDogYm9vbCBhcnJheTtcbiAgKCogaW50ZXJuYWwgYXJyYXkgZm9yIHBlcnR1cmJhdGUgZnVuY3Rpb24gKGdsb2JhbCB0byBhdm9pZCB1c2VsZXNzIGFsbG9jKSAqKVxuICBtdXRhYmxlIGZsdXg6IChzdHJpbmcgKiBEYXRhLmRpbl9kYXRhKSBsaXN0O1xuICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM6IGJvb2w7XG59XG5cbmxldCBjb21wYXJlX3N0b3BzICh0MSwgcDEpICh0MiwgcDIpID1cbiAgbGV0IHQgPSBOYnIuY29tcGFyZSB0MSB0MiBpblxuICBpZiB0ID0gMCB0aGVuXG4gICAgY29tcGFyZSBwMSBwMlxuICBlbHNlXG4gICAgdFxuXG5sZXQgZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiA9XG4gIGxldCB0MCA9IENvdW50ZXIuaW5pdF90aW1lIGNvdW50ZXIgaW5cbiAgbGV0IHN0b3BwaW5nX3RpbWVzID1cbiAgICBsZXQgYWxnc19kZXBzID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICBNb2RlbC5mb2xkX3BlcnR1cmJhdGlvbnNcbiAgICAgIChmdW4gaSBhY2MgeCAtPlxuICAgICAgICBtYXRjaCB4LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgIGxldCBrID0gMS4gKy4gZmxvb3IgKHQwIC8uIE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IG4pKSBpblxuICAgICAgICAgIChOYnIubXVsdCAoTmJyLkYgaykgbiwgaSkgOjogYWNjXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzXG4gICAgICAgICAgICAgICAgKGZzdCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBcIkVxdWFsaXR5IHRlc3Qgb24gdGltZSByZXF1aXJlcyBhbiBhbGFybVwiLFxuICAgICAgICAgICAgICAgICAgICAgc25kIHguUHJpbWl0aXZlcy5wcmVjb25kaXRpb24gKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBBbGdfZXhwci5pc19lcXVhbGl0eV90ZXN0X3RpbWUgYWxnc19kZXBzIChmc3QgeC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucmVwZWF0ICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MpXG4gICAgICBbXSBlbnZcbiAgaW5cbiAgbGV0IHN0b3BzID0gTGlzdC5zb3J0IGNvbXBhcmVfc3RvcHMgc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0IHRpbWVfZGVwZW5kZW50X3BlcnRzID1cbiAgICBsZXQgcmVjIGF1eCBkZXAgYWNjID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5mb2xkXG4gICAgICAgIChmdW4gZGVwIHBlcnRzIC0+XG4gICAgICAgICAgbWF0Y2ggZGVwIHdpdGhcbiAgICAgICAgICB8IE9wZXJhdG9yLkFMRyBqIC0+XG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5NT0RJRiBwIC0+XG4gICAgICAgICAgICBMaXN0X3V0aWwubWVyZ2VfdW5pcSBNb2RzLmludF9jb21wYXJlIFsgcCBdIHBlcnRzXG4gICAgICAgICAgfCBPcGVyYXRvci5SVUxFIF8gLT4gcGVydHMpXG4gICAgICAgIGRlcCBhY2NcbiAgICBpblxuICAgIGF1eFxuICAgICAgKGxldCB4LCBfLCBfLCBfID0gTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYgaW5cbiAgICAgICB4KVxuICAgICAgW11cbiAgaW5cbiAge1xuICAgIGluaXRfc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBzdG9wcGluZ190aW1lcyA9IHN0b3BzO1xuICAgIHBlcnR1cmJhdGlvbnNfYWxpdmUgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPSBbXTtcbiAgICB0aW1lX2RlcGVuZGVudF9wZXJ0cztcbiAgICBwZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldCA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3BlcnR1cmJhdGlvbnMgZW52KSB0cnVlO1xuICAgIGZsdXggPSBbXTtcbiAgICB3aXRoX2RlbHRhX2FjdGl2aXRpZXM7XG4gIH1cblxubGV0IG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlciA9XG4gIE1vZGVsLm1hcF9vYnNlcnZhYmxlcyAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCkgZW52XG5cbmxldCBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICBtb2RpZmljYXRpb24gPVxuICBsZXQgcHJpbnRfZXhwcl92YWwgPVxuICAgIEthcHBhX3ByaW50ZXIucHJpbnRfZXhwcl92YWwgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpXG4gIGluXG4gIG1hdGNoIG1vZGlmaWNhdGlvbiB3aXRoXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKCh2LCBfKSwgcikgLT5cbiAgICBsZXQgdGV4dCA9XG4gICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICBtb2RpZmljYXRpb25cbiAgICBpblxuICAgIGxldCBncmFwaCcgPVxuICAgICAgTmJyLm1heWJlX2l0ZXJpXG4gICAgICAgIChmdW4gXyBnIC0+XG4gICAgICAgICAgUnVsZV9pbnRlcnByZXRlci5mb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdcbiAgICAgICAgICAgIChUcmFjZS5QRVJUIHRleHQpIHIpXG4gICAgICAgIGdyYXBoXG4gICAgICAgIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoIHYpXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuVVBEQVRFIChpLCAoZXhwciwgXykpIC0+XG4gICAgbGV0IGdyYXBoJyA9IFJ1bGVfaW50ZXJwcmV0ZXIub3ZlcndyaXRlX3ZhciBpIGNvdW50ZXIgZ3JhcGggZXhwciBpblxuICAgIGxldCBncmFwaCcnLCBleHRyYScgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICBlbnYgY291bnRlciBncmFwaCcgZXh0cmFcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCcnLCBzdGF0ZSwgZXh0cmEnXG4gIHwgUHJpbWl0aXZlcy5TVE9QIHBleHByIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBleHByIDw+IFtdIHRoZW4gKFxuICAgICAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByIGluXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICggZmlsZSxcbiAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICBncmFwaCApKVxuICAgICAgKVxuICAgIGluXG4gICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKHBlX2ZpbGUsIHBlX2V4cHIpIC0+XG4gICAgbGV0IGZpbGVfb3B0ID1cbiAgICAgIG1hdGNoIHBlX2ZpbGUgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gLT4gU29tZSAoRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZmlsZSlcbiAgICBpblxuICAgIGxldCBsaW5lID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcGVfZXhwciBpblxuICAgIGxldCAoKSA9XG4gICAgICBvdXRwdXRzXG4gICAgICAgIChEYXRhLlByaW50XG4gICAgICAgICAgIHsgRGF0YS5maWxlX2xpbmVfbmFtZSA9IGZpbGVfb3B0OyBEYXRhLmZpbGVfbGluZV90ZXh0ID0gbGluZSB9KVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSAtPlxuICAgIGxldCAoKSA9IG91dHB1dHMgKERhdGEuUGxvdCAob2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCBjb3VudGVyKSkgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGZpbGUgPVxuICAgICAgaWYgcGV4cHIgPSBbXSB0aGVuXG4gICAgICAgIFwic25hcC5rYVwiXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBleHByXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAoZmlsZSwgUnVsZV9pbnRlcnByZXRlci5zbmFwc2hvdCB+ZGVidWdfbW9kZSB+cmF3IGVudiBjb3VudGVyIGdyYXBoKSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5DRkxPVyAobmFtZSwgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBuYW1lID1cbiAgICAgIG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBTb21lIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiXG4gICAgICAgICAgKFBwLmFycmF5IFBwLmNvbW1hIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5kb21haW4gfndpdGhfaWQ6ZmFsc2UpKVxuICAgICAgICAgIGNjXG4gICAgaW5cbiAgICAoIGZhbHNlLFxuICAgICAgUnVsZV9pbnRlcnByZXRlci5hZGRfdHJhY2tlZCB+b3V0cHV0cyBjYyBuYW1lIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAobmFtZSwgY2MpIC0+XG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWQgY2MgbmFtZSBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgZm4gaW5cbiAgICBmYWxzZSwgUnVsZV9pbnRlcnByZXRlci5yZW1vdmVfdHJhY2tlZF9zcGVjaWVzIGZpbGUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOIChyZWwsIHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAobmFtZSwgeCkgLT4gZmlsZSA9IG5hbWUgJiYgeC5EYXRhLmRpbl9raW5kID0gcmVsKVxuICAgICAgICAgIHN0YXRlLmZsdXhcbiAgICAgIHRoZW5cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJBdCB0PSVmLCBlPSVpOiB0cmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBhbHJlYWR5IG9uXCJcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgZmlsZSApKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHN0YXRlLmZsdXggPC0gKGZpbGUsIEZsdXhtYXAuY3JlYXRlX2ZsdXggZW52IGNvdW50ZXIgcmVsKSA6OiBzdGF0ZS5mbHV4XG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuRElOT0ZGIHMgLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHMgaW5cbiAgICBsZXQgdGhlc2UsIG90aGVycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIChuYW1lLCBfKSAtPiBuYW1lID0gZmlsZSkgc3RhdGUuZmx1eFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChuYW1lLCB4KSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRElOIChuYW1lLCBGbHV4bWFwLnN0b3BfZmx1eCBlbnYgY291bnRlciB4KSkpXG4gICAgICAgIHRoZXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mbHV4IDwtIG90aGVycyBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChzLCBjYywgdGVzdHMpIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWRfc3BlY2llcyBjYyBmaWxlIHRlc3RzIGdyYXBoLFxuICAgICAgc3RhdGUsXG4gICAgICBleHRyYSApXG5cbmxldCByZWMgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm0gZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBtaXhfY2hhbmdlZCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWRcbiAgfCBpIDo6IHRhaWwgLT5cbiAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IGkgaW5cbiAgICBsZXQgbW9kX2FsYXJtID1cbiAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIF8gLT4gaXNfYWxhcm1cbiAgICBpblxuICAgIGlmXG4gICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKVxuICAgICAgJiYgc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpXG4gICAgICAmJiBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaFxuICAgICAgICAgICAoZnN0IHBlcnQuUHJpbWl0aXZlcy5wcmVjb25kaXRpb24pXG4gICAgICAmJiBtb2RfYWxhcm1cbiAgICB0aGVuIChcbiAgICAgIGxldCBtaXhfY2hhbmdlZCA9IG1peF9jaGFuZ2VkICYmIHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIHRhaWwnID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICAgICAgZWZmZWN0KVxuICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCB0YWlsKVxuICAgICAgICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gZmFsc2UgaW5cbiAgICAgIGxldCBhbGl2ZSA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyIGdyYXBoIChmc3QgcGVydC5QcmltaXRpdmVzLnJlcGVhdClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBhbGl2ZSAmJiBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gPSBOb25lIHRoZW5cbiAgICAgICAgICBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gaSA6OiBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzdGF0ZS5wZXJ0dXJiYXRpb25zX2FsaXZlLihpKSA8LSBhbGl2ZSBpblxuICAgICAgbGV0IG1peF9jaGFuZ2VkJyA9IG1peF9jaGFuZ2VkIHx8IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkJ1xuICAgICAgZWxzZVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgICAgIG1peF9jaGFuZ2VkJyB0YWlsJ1xuICAgICkgZWxzZVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgbWl4X2NoYW5nZWQgdGFpbFxuXG5sZXQgZG9fbW9kaWZpY2F0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBsaXN0ID1cbiAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICgoc3RvcCwgZ3JhcGgsIHN0YXRlLCBleHRyYSkgYXMgYWNjKSBlZmZlY3QgLT5cbiAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBkb19tb2RpZmljYXRpb24gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZXh0cmFcbiAgICAgICAgICAgIGVmZmVjdClcbiAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBbXSkgbGlzdFxuICBpblxuICBpZiBzdG9wIHRoZW5cbiAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGZhbHNlXG4gIGVsc2VcbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2UgZXh0cmFcblxubGV0IGluaXRpYWxpemUgfmJpbmQgfnJldHVybiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaDAgc3RhdGUwXG4gICAgaW5pdF9sID1cbiAgbGV0IG1ncmFwaCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gbXN0YXRlIChhbGcsIGNvbXBpbGVkX3J1bGUpIC0+XG4gICAgICAgIGJpbmQgbXN0YXRlIChmdW4gKHN0b3AsIHN0YXRlLCBzdGF0ZTApIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyBpblxuICAgICAgICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICAgICAgICBjb21waWxlZF9ydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGNyZWF0aW9uc19zb3J0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGwgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKHgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIHggOjogbFxuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLkZyZWUgX1xuICAgICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgICAgW10gYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAoIHN0b3AsXG4gICAgICAgICAgICAgICAgTmJyLml0ZXJpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgcyAoVHJhY2UuSU5JVCBjcmVhdGlvbnNfc29ydCkgY29tcGlsZWRfcnVsZVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUnVsZV9pbnRlcnByZXRlci5TdWNjZXNzIHMgLT4gc1xuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQ2xhc2ggfCBSdWxlX2ludGVycHJldGVyLkNvcnJlY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuQmxvY2tlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQnVnZ2VkIGluaXRpYWwgcnVsZVwiKSkpXG4gICAgICAgICAgICAgICAgICBzdGF0ZSB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTAgKSkpXG4gICAgICAocmV0dXJuIChmYWxzZSwgZ3JhcGgwLCBzdGF0ZTApKVxuICAgICAgaW5pdF9sXG4gIGluXG4gIGJpbmQgbWdyYXBoIChmdW4gKF8sIGdyYXBoLCBzdGF0ZTApIC0+XG4gICAgICBsZXQgbWlkX2dyYXBoLCBfID1cbiAgICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGggW11cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCBfID1cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgIChmdW4gaSAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgbWl4X2NoYW5nZWQpIGFzIGFjYykgXyAtPlxuICAgICAgICAgICAgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgc3RhdGUgbWl4X2NoYW5nZWQgWyBpIF0pXG4gICAgICAgICAgKGZhbHNlLCBtaWRfZ3JhcGgsIHN0YXRlMCwgZmFsc2UpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfYWxpdmVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlMC5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICByZXR1cm4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkpXG5cbmxldCBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgIGluc3RhbmNlID1cbiAgbGV0IHByZXZfYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCBhY3Rfc3RhY2sgPSByZWYgW10gaW5cbiAgbGV0IGZpbmFsaXplX3JlZ2lzdHJhdGlvbiBteV9zeW50YXhfcmRfaWQgPVxuICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICB8IGwsIF8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB0aGVuXG4gICAgICAgICAgb3V0cHV0cyAoRGF0YS5EZWx0YUFjdGl2aXRpZXMgKG15X3N5bnRheF9yZF9pZCwgIWFjdF9zdGFjaykpXG4gICAgICBpblxuICAgICAgbGV0IG5fYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEZsdXhtYXAuaW5jcl9mbHV4X2hpdCBteV9zeW50YXhfcmRfaWQgZmwgaW5cbiAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gKHN5bnRheF9yZF9pZCwgKF8sIG5ld19hY3QpKSAtPlxuICAgICAgICAgICAgICAgICAgRmx1eG1hcC5pbmNyX2ZsdXhfZmx1eCBteV9zeW50YXhfcmRfaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgICAgICAgIChsZXQgY2FuZCA9IG5ld19hY3QgLy4gbl9hY3Rpdml0eSBpblxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgICAgICAgIGZsKVxuICAgICAgICAgICAgICAgICFhY3Rfc3RhY2spXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGFjdF9zdGFjayA6PSBbXVxuICBpblxuICAoKiBsZXQgKCkgPSAqKVxuICAoKiAgIEZvcm1hdC5lcHJpbnRmIFwiJWFALlwiIChSdWxlX2ludGVycHJldGVyLnByaW50X2luamVjdGlvbnMgZW52KSBncmFwaCBpbiAqKVxuICBsZXQgYXBwbGllZF9yaWRfc3ludGF4LCBmaW5hbF9zdGVwLCBncmFwaCcgPVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgIGVudiBjb3VudGVyIGdyYXBoIGluc3RhbmNlXG4gIGluXG4gIG1hdGNoIGFwcGxpZWRfcmlkX3N5bnRheCB3aXRoXG4gIHwgTm9uZSAtPiBmaW5hbF9zdGVwLCBncmFwaCcsIHN0YXRlXG4gIHwgU29tZSBzeW50YXhfcmlkIC0+XG4gICAgbGV0IHJlZ2lzdGVyX25ld19hY3Rpdml0eSBzeW50YXhfcmRfaWQgb2xkX2FjdCBuZXdfYWN0ID1cbiAgICAgIG1hdGNoIHN0YXRlLmZsdXgsIHN0YXRlLndpdGhfZGVsdGFfYWN0aXZpdGllcyB3aXRoXG4gICAgICB8IFtdLCBmYWxzZSAtPiAoKVxuICAgICAgfCBsLCBfIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgYWN0X3N0YWNrIDo9IChzeW50YXhfcmRfaWQsIChvbGRfYWN0LCBuZXdfYWN0KSkgOjogIWFjdF9zdGFja1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChfLCBmbCkgLT5cbiAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggc3ludGF4X3JpZCBzeW50YXhfcmRfaWRcbiAgICAgICAgICAgICAgKGxldCBjYW5kID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggZmwuRGF0YS5kaW5fa2luZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBuZXdfYWN0IC0uIG9sZF9hY3RcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IC0uKG9sZF9hY3QgLy4gcHJldl9hY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+XG4gICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IG9sZF9hY3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfaW5maW5pdGUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAobmV3X2FjdCAtLiBvbGRfYWN0KSAvLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgY2FuZCB3aXRoXG4gICAgICAgICAgICAgICB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgbGV0IGN0ID0gQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciBpblxuICAgICAgICAgICAgICAgICAgIG91dHB1dHNcbiAgICAgICAgICAgICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICggTm9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFuIGluZmluaXRlIChvciBOYU4pIGFjdGl2aXR5IHZhcmlhdGlvbiBoYXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGlnbm9yZWQgYXQgdD0lZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdCApKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICAgfCBGUF96ZXJvIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIC0+IGNhbmQpXG4gICAgICAgICAgICAgIGZsKVxuICAgICAgICAgIGxcbiAgICBpblxuICAgIGxldCBmb3JjZV90ZXN0ZWQgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5mb3JjZV90ZXN0X3BlcnR1cmJhdGlvbnMgPC0gW10gaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmFfcGVydCA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIHJlZ2lzdGVyX25ld19hY3Rpdml0eSBlbnYgY291bnRlciBncmFwaCcgZm9yY2VfdGVzdGVkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gc3ludGF4X3JpZCBpblxuICAgIGxldCBzdG9wLCBncmFwaCcnJywgc3RhdGUnLCBfbWl4X2NoYW5nZWQgPVxuICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGgnJyBzdGF0ZVxuICAgICAgICBmYWxzZSBleHRyYV9wZXJ0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIF8gLT4gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2Pk9idGFpbmVkQCAlYUBdQC5cIlxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLnByaW50IGVudilcbiAgICAgICAgICBncmFwaCcnJ1xuICAgIGluXG4gICAgZmluYWxfc3RlcCB8fCBzdG9wLCBncmFwaCcnJywgc3RhdGUnXG5cbmxldCByZWMgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAoc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCkgPVxuICBtYXRjaCBzdGF0ZS5zdG9wcGluZ190aW1lcyB3aXRoXG4gIHwgW10gLT4gc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcbiAgfCAodGksIHBlKSA6OiB0YWlsIC0+XG4gICAgaWYgTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgdGhlbiAoXG4gICAgICBsZXQgcGVydCA9IE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlIGluXG4gICAgICBpZiBub3QgcGVydC5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjayB0aGVuIChcbiAgICAgICAgbGV0IHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IChOYnIuc3ViIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlcikpKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZHRcbiAgICAgICAgICB8IFNvbWUgZHRpIC0+XG4gICAgICAgICAgICBsZXQgZHQnID0gZHQgLS4gZHRpIGluXG4gICAgICAgICAgICAoKnNldCB0aW1lIGZvciBwZXJ0dXJiYXRlICopXG4gICAgICAgICAgICBpZiBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICAgICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgICAgICAgIHN0YXRlIGZhbHNlIFsgcGUgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGFpbCcgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHBlcnQuUHJpbWl0aXZlcy5hbGFybSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgICAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgICAgICAgaWYgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4ocGUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgY29tcGFyZV9zdG9wcyBbIE5ici5hZGQgdGkgbiwgcGUgXSB0YWlsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRhaWxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc3RhdGUnLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4ocGUpIDwtIHRydWUgaW5cbiAgICAgICAgICAgICAgKCogQXJndW1lbnQgdG8gcmVzZXQgb25seSBwZSBhbmQgbm90IGFsbCBwZXJ0cyBpcyBcImlmXG4gICAgICAgICAgICAgICAgIHlvdSdyZSBub3QgYmFja3RyYWNraW5nLCBub3RoaW5nIGRlcGVuZHMgdXBvblxuICAgICAgICAgICAgICAgICB5b3VcIi4uLiBXZSdkIGJldHRlciBnZXQgc3VyZSBvZiB0aGF0IDotKSAqKVxuICAgICAgICAgICAgICBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0J1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZHQnXG4gICAgICAgIGluXG5cbiAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAoc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCcpXG4gICAgICAgICgqIGlmIHNvbWUgcGVydHVyYmF0aW9uIG5lZWRzIGJhY2t0cmFjaywgcmV0dXJuIHRoZSBwZXJ0dXJiYXRpb24gKilcbiAgICAgICkgZWxzZVxuICAgICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCB0cnVlXG4gICAgKSBlbHNlXG4gICAgICBzdG9wLCBncmFwaCwgc3RhdGUsIGR0LCBmYWxzZVxuXG5sZXQgcGVydHVyYmF0ZV93aXRoX2JhY2t0cmFjayB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGxldCB0YWlsJyA9XG4gICAgICBtYXRjaCAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRhaWxcbiAgICAgIHwgU29tZSBuIC0+IExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuc3RvcHBpbmdfdGltZXMgPC0gdGFpbCcgaW5cbiAgICBpZiBDb3VudGVyLm9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgfnRpIGNvdW50ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgICAgICBsZXQgY2FuZCA9XG4gICAgICAgICAgICBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIChDb3VudGVyLmZha2VfdGltZSBjb3VudGVyJyB0aW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgICAgIGluXG4gICAgICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICAgICAgaW5cbiAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgXyA9XG4gICAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOnRydWUgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBmYWxzZSBbIHBlIF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBBcnJheS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBfIC0+IHN0YXRlJy5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXRcbiAgICAgIGluXG4gICAgICBzdG9wLCBncmFwaCcsIHN0YXRlJ1xuICAgICkgZWxzZVxuICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG5cbmxldCByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgIGdyYXBoIHN0YXRlIGR0ID1cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdFxuICBpblxuICBsZXQgY29udGludWUgPSBDb3VudGVyLm9uZV90aW1lX2FkdmFuY2UgY291bnRlciBkdCBpblxuICBsZXQgcGlja2VkX2luc3RhbmNlID1cbiAgICBSdWxlX2ludGVycHJldGVyLnBpY2tfYW5faW5zdGFuY2UgfmRlYnVnX21vZGUgZW52IGdyYXBoXG4gIGluXG4gIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJywgbWl4X2NoYW5nZWQgPVxuICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICBmYWxzZSBzdGF0ZS50aW1lX2RlcGVuZGVudF9wZXJ0c1xuICBpblxuICBpZiAobm90IGNvbnRpbnVlKSB8fCBzdG9wIHRoZW5cbiAgICB0cnVlLCBncmFwaCcsIHN0YXRlJ1xuICBlbHNlIGlmXG4gICAgKG5vdCBtaXhfY2hhbmdlZClcbiAgICB8fCBSdWxlX2ludGVycHJldGVyLmlzX2NvcnJlY3RfaW5zdGFuY2UgZW52IGdyYXBoJyBwaWNrZWRfaW5zdGFuY2VcbiAgdGhlblxuICAgIG9uZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyIGdyYXBoJyBzdGF0ZSdcbiAgICAgIHBpY2tlZF9pbnN0YW5jZVxuICBlbHNlXG4gICAgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IGNvdW50ZXIsIGdyYXBoJywgc3RhdGUnXG5cbmxldCBhX2xvb3AgfmRlYnVnX21vZGUgfm91dHB1dHMgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52XG4gICAgY291bnRlciBncmFwaCBzdGF0ZSA9XG4gIGxldCBhY3Rpdml0eSA9IFJ1bGVfaW50ZXJwcmV0ZXIuYWN0aXZpdHkgZ3JhcGggaW5cbiAgbGV0IHJkID0gUmFuZG9tLlN0YXRlLmZsb2F0IChSdWxlX2ludGVycHJldGVyLmdldF9yYW5kb21fc3RhdGUgZ3JhcGgpIDEuMCBpblxuICBsZXQgZHQgPSBhYnNfZmxvYXQgKGxvZyByZCAvLiBhY3Rpdml0eSkgaW5cblxuICBsZXQgb3V0ID1cbiAgICAoKkFjdGl2aXR5IGlzIG51bGwgb3IgZHQgaXMgaW5maW5pdGUqKVxuICAgIGlmIChub3QgKGFjdGl2aXR5ID4gMC4pKSB8fCBjbGFzc2lmeV9mbG9hdCBkdCA9IEZQX2luZmluaXRlIHRoZW5cbiAgICAgIGlmXG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoXywgcGUpIC0+XG4gICAgICAgICAgICAoTW9kZWwuZ2V0X3BlcnR1cmJhdGlvbiBlbnYgcGUpLlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrKVxuICAgICAgICAgIHN0YXRlLnN0b3BwaW5nX3RpbWVzXG4gICAgICB0aGVuXG4gICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZHVtcElmRGVhZGxvY2tlZCB0aGVuXG4gICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgIChEYXRhLlNuYXBzaG90XG4gICAgICAgICAgICAgICAgICggXCJkZWFkbG9jay5rYVwiLFxuICAgICAgICAgICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdzpmYWxzZSBlbnYgY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgXCJBIGRlYWRsb2NrIHdhcyByZWFjaGVkIGFmdGVyICVkIGV2ZW50cyBhbmQgJUVzIChBY3Rpdml0eSBcXFxuICAgICAgICAgICAgICAgICAgICAgID0gJS41ZilcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eSApKVxuICAgICAgICBpblxuICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGVcbiAgICAgIClcbiAgICBlbHNlIChcbiAgICAgICgqYWN0aXZpdHkgaXMgcG9zaXRpdmUqKVxuICAgICAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICAgICAgfCAodGksIF8pIDo6IF9cbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgKy4gZHQpKSAtPlxuICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIGR0JywgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBwZXJ0dXJiYXRlX3VudGlsX2ZpcnN0X2JhY2t0cmFjayB+ZGVidWdfbW9kZSBlbnYgY291bnRlciB+b3V0cHV0c1xuICAgICAgICAgICAgKGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0KVxuICAgICAgICBpblxuICAgICAgICBpZiBuZWVkc19iYWNrdHJhY2sgdGhlblxuICAgICAgICAgIHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICBzdGF0ZScgc3RhdGUnLnN0b3BwaW5nX3RpbWVzXG4gICAgICAgIGVsc2UgaWYgc3RvcCB0aGVuXG4gICAgICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgICAgICAgICAgY291bnRlciBncmFwaCcgc3RhdGUnIGR0J1xuICAgICAgfCBfIC0+XG4gICAgICAgIHJlZ3VsYXJfbG9vcF9ib2R5IH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudiBjb3VudGVyXG4gICAgICAgICAgZ3JhcGggc3RhdGUgZHRcbiAgICApXG4gIGluXG4gIG91dFxuXG5sZXQgZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgXyA9IHN0YXRlLmluaXRfc3RvcHBpbmdfdGltZXMgaW5cbiAgbGV0ICgpID1cbiAgICBsZXQgb3V0cHV0cyBjb3VudGVyJyB0aW1lID1cbiAgICAgIGxldCBjYW5kID1cbiAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggY2FuZCA+IDEgdGhlbiBvdXRwdXRzIChEYXRhLlBsb3QgY2FuZClcbiAgICBpblxuICAgIENvdW50ZXIuZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdDowLlxuICBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChuYW1lLCBlKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJUcmFja2luZyBESU4gaW50byBcXFwiJXNcXFwiIHdhcyBub3Qgc3RvcHBlZCBiZWZvcmUgZW5kIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgIG5hbWUgKSlcbiAgICAgIGluXG4gICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgZSkpKVxuICAgIHN0YXRlLmZsdXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdGUgPSB7XG4gIGdyYXBoOiBFZGdlcy50O1xuICB0aW1lOiBmbG9hdDtcbiAgZXZlbnQ6IGludDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IEFnZW50LlNldE1hcC5TZXQudCBNb2RzLkludE1hcC50IG9wdGlvbjtcbn1cblxudHlwZSBzdW1tYXJ5ID0geyB1bmFyeV9kaXN0YW5jZXM6IChpbnQgKiBpbnQpIG9wdGlvbiB9XG5cbmxldCBpbml0X3N0YXRlIH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIGdyYXBoID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgdGltZSA9IDAuO1xuICAgIGV2ZW50ID0gMDtcbiAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICBTb21lIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAgZWxzZVxuICAgICAgICAgTm9uZSk7XG4gIH1cblxubGV0IGNjX29mX2FnZW50IGFnIGUgd29yayA9XG4gIGxldCByZWMgZm9sZF9hcml0eV9saXN0IGYgeCBhcml0eSBhY2MgPVxuICAgIGlmIHggPSBhcml0eSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBmb2xkX2FyaXR5X2xpc3QgZiAoc3VjYyB4KSBhcml0eSAoZiBhY2MgeClcbiAgaW5cblxuICBsZXQgYWRkX2FnZW50IGEgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKSA9XG4gICAgbGV0IGFpZCA9IEFnZW50LmlkIGEgaW5cbiAgICBsZXQgYXR5cGUgPSBBZ2VudC5zb3J0IGEgaW5cbiAgICBsZXQgYXJpdHkgPSBFZGdlcy5nZXRfc2l0ZXMgYWlkIGUgaW5cbiAgICBsZXQgd19hZ2VudCwgd29yaycgPSBQYXR0ZXJuLm5ld19ub2RlIHdvcmsgYXR5cGUgaW5cbiAgICBsZXQgdG9kb3MnID0gZm9sZF9hcml0eV9saXN0IChmdW4gYWNjIHggLT4gKGFpZCwgeCkgOjogYWNjKSAwIGFyaXR5IHRvZG9zIGluXG4gICAgbGV0IHdvcmsnJyA9XG4gICAgICBmb2xkX2FyaXR5X2xpc3RcbiAgICAgICAgKGZ1biB3IHggLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBpbnRlcm5hbCA9IEVkZ2VzLmdldF9pbnRlcm5hbCBhaWQgeCBlIGluXG4gICAgICAgICAgICBQYXR0ZXJuLm5ld19pbnRlcm5hbF9zdGF0ZSB3ICh3X2FnZW50LCB4KSBpbnRlcm5hbFxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IHcpXG4gICAgICAgIDAgYXJpdHkgd29yaydcbiAgICBpblxuICAgIHdfYWdlbnQsIHdvcmsnJywgKGFpZCwgd19hZ2VudCkgOjogbW9ycGhpc20sIHRvZG9zJ1xuICBpblxuXG4gIGxldCBhZGRfbGlua3MgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgKGFpZCwgeCkgZSA9XG4gICAgbGV0IF8sIHdfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYWlkKSBtb3JwaGlzbSBpblxuICAgIGxldCBub3RfYWdlbnQgKGlkLCBzKSA9IG5vdCAoaWQgPSBhaWQgJiYgeCA9IHMpIGluXG4gICAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhaWQgeCBlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2ZyZWUgd29yayAod19hZ2VudCwgeCkgaW5cbiAgICAgIGxldCB0b2RvcycgPSBMaXN0LmZpbHRlciBub3RfYWdlbnQgdG9kb3MgaW5cbiAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgfCBTb21lIChiLCB5KSAtPlxuICAgICAgbGV0IGJpZCA9IEFnZW50LmlkIGIgaW5cbiAgICAgIGxldCBub3RfYWdlbnRzIChpZCwgcykgPVxuICAgICAgICBub3RfYWdlbnQgKGlkLCBzKSAmJiBub3QgKGlkID0gQWdlbnQuaWQgYiAmJiBzID0geSlcbiAgICAgIGluXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgXywgd2JfYWdlbnQgPSBMaXN0LmZpbmQgKGZ1biAoaWQsIF8pIC0+IGlkID0gYmlkKSBtb3JwaGlzbSBpblxuICAgICAgICAgbGV0IHdvcmsnID0gUGF0dGVybi5uZXdfbGluayB3b3JrICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcyBpblxuICAgICAgICAgd29yaycsIG1vcnBoaXNtLCB0b2RvcydcbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgbGV0IHdiX2FnZW50LCB3b3JrJywgbW9ycGhpc20nLCB0b2RvcycgPVxuICAgICAgICAgICBhZGRfYWdlbnQgYiBlICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHdvcmsnJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yaycgKHdfYWdlbnQsIHgpICh3Yl9hZ2VudCwgeSkgaW5cbiAgICAgICAgIGxldCB0b2RvcycnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50cyB0b2RvcycgaW5cbiAgICAgICAgIHdvcmsnJywgbW9ycGhpc20nLCB0b2RvcycnKVxuICBpblxuXG4gIGxldCByZWMgd29ya2luZ190b2RvICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgPVxuICAgIG1hdGNoIHRvZG8gd2l0aFxuICAgIHwgW10gLT4gbW9ycGhpc20sIHdvcmtcbiAgICB8IHBvcnQgOjogXyAtPlxuICAgICAgbGV0IHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nID0gYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kbykgcG9ydCBlIGluXG4gICAgICB3b3JraW5nX3RvZG8gKHdvcmsnLCBtb3JwaGlzbScsIHRvZG8nKVxuICBpblxuXG4gIGxldCBfLCB3LCBtLCB0ID0gYWRkX2FnZW50IGFnIGUgKHdvcmssIFtdLCBbXSkgaW5cbiAgd29ya2luZ190b2RvICh3LCBtLCB0KVxuXG5sZXQgY2Nfb2Zfc3RhdGUgfmRlYnVnX21vZGUgcyBlbnYgPVxuICBsZXQgY2Nfb2Zfcm9vdCBhZ2VudCBlJyA9XG4gICAgbGV0IHdvcmsgPSBQYXR0ZXJuLmJlZ2luX25ldyBlJyBpblxuICAgIGxldCBtb3JwaGlzbSwgd29yaycgPSBjY19vZl9hZ2VudCBhZ2VudCBzLmdyYXBoIHdvcmsgaW5cbiAgICBsZXQgZW4sIF8sIGMsIGkgPSBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgd29yaycgaW5cbiAgICBlbiwgTGlzdC5tYXAgKGZ1biAoY2lkLCAoYWlkLCBfKSkgLT4gY2lkLCBhaWQpIG1vcnBoaXNtLCBjLCBpXG4gIGluXG4gIG1hdGNoIHMuY29ubmVjdGVkX2NvbXBvbmVudHMgd2l0aFxuICB8IFNvbWUgY2NfbWFwcyAtPlxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gcm9vdCBjY19tYXAgKGUsIGFjYykgLT5cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5mb2xkXG4gICAgICAgICAgKGZ1biBhZ2VudCAoZScsIGFjYycpIC0+XG4gICAgICAgICAgICBpZiBBZ2VudC5pZCBhZ2VudCA9IHJvb3QgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlbiwgciwgYywgaSA9IGNjX29mX3Jvb3QgYWdlbnQgZScgaW5cbiAgICAgICAgICAgICAgZW4sIChyLCBjLCBpKSA6OiBhY2MnXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZScsIGFjYycpXG4gICAgICAgICAgY2NfbWFwIChlLCBhY2MpKVxuICAgICAgY2NfbWFwcyAoZW52LCBbXSlcbiAgfCBOb25lIC0+IGVudiwgW11cblxubGV0IGJyZWFrX2FwYXJ0X2NjIGdyYXBoIGNjcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBjY3NcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgb3JpZ2luX2NjIGNjcyBpblxuICAgIGlmIEFnZW50LlNldE1hcC5TZXQuaXNfZW1wdHkgc2V0IHRoZW5cbiAgICAgIGNjc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zZXQsIG9zZXQnID1cbiAgICAgICAgQWdlbnQuU2V0TWFwLlNldC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuICh4LCBfKSAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGdyYXBoID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgc2V0XG4gICAgICBpblxuICAgICAgTW9kcy5JbnRNYXAuYWRkIG5ld19jYyBuc2V0IChNb2RzLkludE1hcC5hZGQgb3JpZ2luX2NjIG9zZXQnIGNjcylcbiAgICApXG5cbmxldCBtZXJnZV9jYyBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAoY2MxLCBjYzIpIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgQWdlbnQuU2V0TWFwLlNldC5lbXB0eSBjYzEgY2NzIGluXG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NzIHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gY2NzXG4gICAgfCBTb21lIHNldDIsIGNjcycgLT5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBjYzEgKEFnZW50LlNldE1hcC5TZXQudW5pb24gc2V0MSBzZXQyKSBjY3MnKVxuXG5sZXQgZG9fbmVnYXRpdmVfcGFydCAoKGEsIF8pLCBzKSAoZ3JhcGgsIGNjcykgPVxuICBtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBncmFwaCB3aXRoXG4gIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfZnJlZSBhIHMgZ3JhcGgsIGNjc1xuICB8IFNvbWUgKChhJywgXyksIHMnKSAtPlxuICAgIGxldCBncmFwaCcsIGNjX2NoYW5nZSA9IEVkZ2VzLnJlbW92ZV9saW5rIGEgcyBhJyBzJyBncmFwaCBpblxuICAgICggZ3JhcGgnLFxuICAgICAgKG1hdGNoIGNjcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPiBTb21lIChicmVha19hcGFydF9jYyBncmFwaCcgY2NzIGNjX2NoYW5nZSkpIClcblxubGV0IGRvX2FjdGlvbiBzaWdzICgoZ3JhcGgsIGNjcykgYXMgcGFjaykgPSBmdW5jdGlvblxuICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKGlkLCB0eSkgYXMgYWcpLCBfZ3JhcGhzKSAtPlxuICAgICggc25kIEBAIEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBncmFwaCxcbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoTW9kcy5JbnRNYXAuYWRkIGlkIChBZ2VudC5TZXRNYXAuU2V0LnNpbmdsZXRvbiBhZykpIGNjcyApXG4gIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKCgoYSwgXyksIHMpLCBpKSAtPlxuICAgIEVkZ2VzLmFkZF9pbnRlcm5hbCBhIHMgaSBncmFwaCwgY2NzXG4gIHwgSW5zdGFudGlhdGlvbi5CaW5kICgoKGExLCBzMSkgYXMgeDEpLCAoKGEyLCBzMikgYXMgeDIpKVxuICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4MiAoZG9fbmVnYXRpdmVfcGFydCB4MSBwYWNrKSBpblxuICAgIGxldCBncmFwaCcnLCBjY19jaGFuZ2UgPSBFZGdlcy5hZGRfbGluayBhMSBzMSBhMiBzMiBncmFwaCcgaW5cbiAgICAoIGdyYXBoJycsXG4gICAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcycgLT4gU29tZSAobWVyZ2VfY2MgY2NzJyBjY19jaGFuZ2UpKSApXG4gIHwgSW5zdGFudGlhdGlvbi5GcmVlICgoKGEsIF8pLCBzKSBhcyB4KSAtPlxuICAgIGxldCBncmFwaCcsIGNjcycgPSBkb19uZWdhdGl2ZV9wYXJ0IHggcGFjayBpblxuICAgIEVkZ2VzLmFkZF9mcmVlIGEgcyBncmFwaCcsIGNjcydcbiAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKGlkLCB0eSkgYXMgYSkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID1cbiAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgIChmdW4gc3QgcyAtPiBkb19uZWdhdGl2ZV9wYXJ0IChhLCBzKSBzdClcbiAgICAgICAgcGFjayAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkpXG4gICAgaW5cbiAgICAobWF0Y2ggY2NzJyB3aXRoXG4gICAgfCBOb25lIC0+IEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIE5vbmVcbiAgICB8IFNvbWUgY2NzJyAtPlxuICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBjY3MnIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSB4LCBjY3MnJyAtPlxuICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKEFnZW50LlNldE1hcC5TZXQuaXNfc2luZ2xldG9uIHgpIGluXG4gICAgICAgIEVkZ2VzLnJlbW92ZV9hZ2VudCBpZCBncmFwaCcsIFNvbWUgY2NzJycpKVxuXG5sZXQgaW52b2x2ZWRfYWdlbnRzIGwgPVxuICBMaXN0X3V0aWwubWFwX29wdGlvblxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSAtPiBTb21lIGFcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgXyAtPlxuICAgICAgICBOb25lKVxuICAgIGxcblxubGV0IHN0b3JlX2Rpc3RhbmNlcyByIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgXyBdIHwgXyA6OiBfIDo6IF8gOjogXyAtPiBOb25lXG4gIHwgWyBjYzE7IGNjMiBdIC0+XG4gICAgbGV0IGNjMV9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MxIGluXG4gICAgbGV0IGNjMl9hZ3MgPSBpbnZvbHZlZF9hZ2VudHMgY2MyIGluXG4gICAgKG1hdGNoIEVkZ2VzLmFyZV9jb25uZWN0ZWQgZ3JhcGggY2MxX2FncyBjYzJfYWdzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXRoIC0+IFNvbWUgKHIsIExpc3QubGVuZ3RoIHBhdGgpKVxuXG5sZXQgdGVzdF9wYXNzX29uIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT4gRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoKGFnLCBzKSwgc3QpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfaW50ZXJuYWwgc3QgKEFnZW50LmlkIGFnKSBzIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19mcmVlIChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgKGFnLCBzKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIG5vdCAoRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGgpXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKGFnLCBzKSwgKGFnJywgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2FnZW50IGFnJyBncmFwaFxuICAgICYmIEVkZ2VzLmxpbmtfZXhpc3RzIChBZ2VudC5pZCBhZykgcyAoQWdlbnQuaWQgYWcnKSBzJyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoKGFnLCBzKSwgKGFnX3R5LCBzJykpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGhcbiAgICAmJlxuICAgIChtYXRjaCBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIChBZ2VudC5pZCBhZykgcyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lICgoXywgZHN0X2FnX3R5KSwgZHN0X3MpIC0+IGRzdF9hZ190eSA9IGFnX3R5ICYmIGRzdF9zID0gcycpXG5cbmxldCB0ZXN0c19wYXNzX29uIGdyYXBoIHRlc3RzID1cbiAgTGlzdC5mb3JfYWxsICh0ZXN0X3Bhc3Nfb24gZ3JhcGgpIChMaXN0LmNvbmNhdCB0ZXN0cylcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgZ3JhcGggPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLkR1bW15IF8gLT4gdHJ1ZVxuICB8IFRyYWNlLlJ1bGUgKF9yLCBldmVudCwgX2luZm8pIC0+XG4gICAgdGVzdHNfcGFzc19vbiBncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT4gdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0c1xuXG5sZXQgaXNfc3RlcF90cmlnZ2VyYWJsZSBzdGF0ZSA9IGlzX3N0ZXBfdHJpZ2dlcmFibGVfb25fZWRnZXMgc3RhdGUuZ3JhcGhcblxuKCogVGhlcmUgaXMgYSBzdWJ0ZWx0eSB3aGVuIGV4ZWN1dGluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMuIEluZGVlZCxcbiAgIHdoZW5ldmVyIGEgcnVsZSBib3RoIGNyZWF0ZXMgYW5kIHJlbW92ZXMgYWdlbnRzLCB0aGVyZSBpcyBjdXJyZW50bHlcbiAgIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBjcmVhdGlvbiBhY3Rpb25zIGFyZSBwbGFjZWQgYmVmb3JlIHRoZSByZW1vdmFsXG4gICBhY3Rpb25zIGluIFtldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNdLiBUaGlzIGNhbiBiZSBhbiBpc3N1ZSBpbiBhXG4gICBjYXNlIHdoZXJlIGFuIGV2ZW50IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdHdvIGFjdGlvbnMgZm9yIGV4YW1wbGU6XG4gICBbXCJjcmVhdGUgYWdlbnQgd2l0aCBpZCA4XCIsIFwicmVtb3ZlIGFnZW50IHdpdGggaWQgOFwiXS4gSW4gdGhpcyBjYXNlLFxuICAgYWdlbnQgaWQgOCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gdGhlIGNyZWF0aW9uIGFjdGlvbiBpcyBwZXJmb3JtZWQgYW5kXG4gICBzbyB0aGUgW0VkZ2VzXSBtb2R1bGUgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblxuICAgQXMgYSB0ZW1wb3JhcnkgZml4LCB3ZSBtYWtlIHN1cmUgdGhhdCBhbGwgZGVsZXRpb24gYWN0aW9ucyBhcmVcbiAgIGV4ZWN1dGVkIGZpcnN0LiBUaGlzIGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IGEgc3RlcCBkZWxldGluZyBhbiBhZ2VudFxuICAgY2Fubm90IHBlcmZvcm0gYW55IG90aGVyIGFjdGlvbiBpbnZvbHZpbmcgdGhpcyBhZ2VudC5cblxuICAgVE9ETzogU2hvdWxkbid0IHdlIHJhdGhlciBlbnN1cmUgdGhhdCBhY3Rpb25zIGFyZSBwcm9wZXJseSBzb3J0ZWQgaW5cbiAgIHRoZSB0cmFjZSBmaWxlIGluIHRoZSBmaXJzdCBwbGFjZT8gKilcbmxldCBkb19hY3Rpb25zIHNpZ3Mgc3QgYWN0aW9ucyA9XG4gIGxldCBpc19yZW1vdmFsID1cbiAgICBsZXQgb3BlbiBJbnN0YW50aWF0aW9uIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFJlbW92ZSBfIC0+IHRydWVcbiAgICB8IENyZWF0ZSBfIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IHJlbW92YWxzLCBvdGhlcnMgPSBMaXN0LnBhcnRpdGlvbiBpc19yZW1vdmFsIGFjdGlvbnMgaW5cbiAgbGV0IGRvX2luX29yZGVyIGFjdGlvbnMgc3QgPSBMaXN0LmZvbGRfbGVmdCAoZG9fYWN0aW9uIHNpZ3MpIHN0IGFjdGlvbnMgaW5cbiAgc3QgfD4gZG9faW5fb3JkZXIgcmVtb3ZhbHMgfD4gZG9faW5fb3JkZXIgb3RoZXJzXG5cbmxldCBkb19zdGVwIHNpZ3Mgc3RhdGUgPSBmdW5jdGlvblxuICB8IFRyYWNlLlN1YnMgXyAtPiBzdGF0ZSwgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH1cbiAgfCBUcmFjZS5SdWxlIChraW5kLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgdW5hcnlfZGlzdGFuY2VzID1cbiAgICAgIGlmIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzID0gTm9uZSB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgc3RvcmVfZGlzdGFuY2VzIGtpbmQgc3RhdGUuZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICAgIGluXG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyB9IClcbiAgfCBUcmFjZS5QZXJ0IChfLCBldmVudCwgaW5mbykgLT5cbiAgICBsZXQgcHJlZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lnc1xuICAgICAgICAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICBpblxuICAgIGxldCBncmFwaCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGdyYXBoICgoaWQsIF8pLCBzKSAtPiBFZGdlcy5hZGRfZnJlZSBpZCBzIGdyYXBoKVxuICAgICAgICBwcmVncmFwaCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICBpblxuICAgICgge1xuICAgICAgICBncmFwaDtcbiAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICBsZXQgZ3JhcGgsIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgIGRvX2FjdGlvbnMgc2lncyAoc3RhdGUuZ3JhcGgsIHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzKSBhY3Rpb25zXG4gICAgaW5cbiAgICAoIHsgZ3JhcGg7IGNvbm5lY3RlZF9jb21wb25lbnRzOyB0aW1lID0gc3RhdGUudGltZTsgZXZlbnQgPSBzdGF0ZS5ldmVudCB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLk9icyAoXywgXywgaW5mbykgLT5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGggPSBzdGF0ZS5ncmFwaDtcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0gc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgPSBOb25lIH0gKVxuICB8IFRyYWNlLkR1bW15IF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN5bnRheF92ZXJzaW9uID0gVjMgfCBWNFxuXG5sZXQgbWVyZ2VfdmVyc2lvbiBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBWNCwgXyB8IF8sIFY0IC0+IFY0XG4gIHwgVjMsIFYzIC0+IFYzXG5cbnR5cGUgaW50ZXJuYWwgPSBzdHJpbmcgb3B0aW9uIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSBwb3J0ID0ge1xuICBwb3J0X25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgcG9ydF9pbnQ6IGludGVybmFsO1xuICBwb3J0X2ludF9tb2Q6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb247XG4gIHBvcnRfbGluazogKHN0cmluZyBMb2MuYW5ub3RlZCwgdW5pdCkgTEthcHBhLmxpbmsgTG9jLmFubm90ZWQgbGlzdDtcbiAgcG9ydF9saW5rX21vZDogaW50IExvYy5hbm5vdGVkIG9wdGlvbiBvcHRpb247XG59XG5cbigqIFRPRE8gY2hhbmdlIG5hbWUsIENWQVIgaXMgbm90IGEgdGVzdD8gKilcbigqIFRPRE8gZGlzY3JpbWluYXRlIGJldHdlZW4gY291bnRlciBkZWZpbml0aW9uIGFuZCBjb3VudGVyIHRlc3QgPyAqKVxuKCogVE9ETzogY2hhbmdlIHRoaXMgdG8gQ1RZUEUgPSBDVEVTVCAoQ1RFU1RUWVBFICogaW50KSB8IENWQVIgc3RyaW5nPyAqKVxuXG50eXBlIGNvdW50ZXJfdGVzdCA9IENFUSBvZiBpbnQgfCBDR1RFIG9mIGludCB8IENMVEUgb2YgaW50IHwgQ1ZBUiBvZiBzdHJpbmdcblxudHlwZSBjb3VudGVyID0ge1xuICBjb3VudGVyX25hbWU6IHN0cmluZyBMb2MuYW5ub3RlZDtcbiAgY291bnRlcl90ZXN0OiBjb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgb3B0aW9uO1xuICAgICAgKCoqIEluIGEgcnVsZTogd2hhdCB0ZXN0IGlzIGRvbmUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiB0aGUgbWluIHZhbHVlLCBpbiBhbiBpbml0IGRlY2xhcmF0aW9uOiB0aGUgaW5pdCB2YWx1ZSwgTm9uZSBpZiBhYnNlbnQgKilcbiAgY291bnRlcl9kZWx0YTogaW50IExvYy5hbm5vdGVkO1xuICAgICAgKCoqIEluIGEgcnVsZTogY2hhbmdlIGluIGNvdW50ZXIgdmFsdWUsIGluIGFuIGFnZW50IGRlY2xhcmF0aW9uOiBtYXggdmFsdWUgb2YgdGhlIGNvdW50ZXIsIDAgaWYgYWJzZW50ICopXG59XG4oKiogQ291bnRlciBzeW50YXggZnJvbSBBU1QsIHByZXNlbnQgaW4gMyBjb250ZXh0cyB3aXRoIGRpZmZlcmVudCBtZWFuaW5nczogYWdlbnQgZGVmaW5pdGlvbiwgc3BlY2llcyBpbml0IGRlY2xhcmF0aW9uLCBydWxlICopXG5cbnR5cGUgc2l0ZSA9IFBvcnQgb2YgcG9ydCB8IENvdW50ZXIgb2YgY291bnRlclxudHlwZSBhZ2VudF9tb2QgPSBOb01vZCB8IEVyYXNlIHwgQ3JlYXRlXG5cbnR5cGUgYWdlbnQgPVxuICB8IFByZXNlbnQgb2Ygc3RyaW5nIExvYy5hbm5vdGVkICogc2l0ZSBsaXN0ICogYWdlbnRfbW9kXG4gIHwgQWJzZW50IG9mIExvYy50XG5cbigqIFRPRE86IGRvY3VtZW50IHdoeSBsaXN0IGxpc3QgKilcbnR5cGUgbWl4dHVyZSA9IGFnZW50IGxpc3QgbGlzdFxuXG50eXBlIGVkaXRfbm90YXRpb24gPSB7XG4gIG1peDogbWl4dHVyZTtcbiAgZGVsdGFfdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG59XG5cbnR5cGUgYXJyb3dfbm90YXRpb24gPSB7XG4gIGxoczogbWl4dHVyZTtcbiAgcm1fdG9rZW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3Q7XG4gIHJoczogbWl4dHVyZTtcbiAgYWRkX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIHJ1bGVfY29udGVudCA9IEVkaXQgb2YgZWRpdF9ub3RhdGlvbiB8IEFycm93IG9mIGFycm93X25vdGF0aW9uXG5cbnR5cGUgcnVsZSA9IHtcbiAgcmV3cml0ZTogcnVsZV9jb250ZW50O1xuICBiaWRpcmVjdGlvbmFsOiBib29sO1xuICBrX2RlZjogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZDtcbiAga191bjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICAgICogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgb3B0aW9uO1xuICAoKmtfMTpyYWRpdXNfb3B0KilcbiAga19vcDogKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb247XG4gIGtfb3BfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgICAgICgqcmF0ZSBmb3IgYmFja3dhcmQgcnVsZSopXG59XG5cbmxldCBmbGlwX2xhYmVsIHN0ciA9IHN0ciBeIFwiX29wXCJcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByID1cbiAgfCBBUFBMWSBvZiAoKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAncnVsZSBMb2MuYW5ub3RlZClcbiAgfCBVUERBVEUgb2YgKCdpZCBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKVxuICB8IFNUT1Agb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBTTkFQU0hPVCBvZiBib29sICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQUklOVCBvZlxuICAgICAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgfCBQTE9URU5UUllcbiAgfCBDRkxPV0xBQkVMIG9mIChib29sICogc3RyaW5nIExvYy5hbm5vdGVkKVxuICB8IENGTE9XTUlYIG9mIChib29sICogJ3BhdHRlcm4gTG9jLmFubm90ZWQpXG4gIHwgRElOIG9mXG4gICAgICBQcmltaXRpdmVzLmRpbl9raW5kXG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgRElOT0ZGIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU1BFQ0lFU19PRiBvZlxuICAgICAgYm9vbFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICAgICAgKiAncGF0dGVybiBMb2MuYW5ub3RlZFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvbiA9XG4gIChOYnIudCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb25cbiAgKiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByIGxpc3RcbiAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCBvcHRpb24pXG4gIExvYy5hbm5vdGVkXG5cbnR5cGUgY29uZmlndXJhdGlvbiA9IHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiA9XG4gIHN0cmluZyBMb2MuYW5ub3RlZCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG5cbnR5cGUgKCdtaXh0dXJlLCAnaWQpIGluaXRfdCA9XG4gIHwgSU5JVF9NSVggb2YgJ21peHR1cmUgTG9jLmFubm90ZWRcbiAgfCBJTklUX1RPSyBvZiAnaWQgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnQgPVxuICAoKiAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICgqdm9sdW1lKikqKVxuICAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqICgnbWl4dHVyZSwgJ2lkKSBpbml0X3RcblxudHlwZSAoJ2FnZW50LCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGluc3RydWN0aW9uID1cbiAgfCBTSUcgb2YgJ2FnZW50XG4gIHwgVE9LRU5TSUcgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgVk9MU0lHIG9mIHN0cmluZyAqIGZsb2F0ICogc3RyaW5nICgqIHR5cGUsIHZvbHVtZSwgcGFyYW1ldGVyKilcbiAgfCBJTklUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnRcbiAgKCp2b2x1bWUsIGluaXQsIHBvc2l0aW9uICopXG4gIHwgREVDTEFSRSBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmXG4gIHwgT0JTIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSopXG4gIHwgUExPVCBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICB8IFBFUlQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uXG4gIHwgQ09ORklHIG9mIGNvbmZpZ3VyYXRpb25cbiAgfCBSVUxFIG9mIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tbWFuZCA9XG4gIHwgUlVOIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkXG4gIHwgTU9ESUZZIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgbGlzdFxuICB8IFFVSVRcblxudHlwZSAoJ2FnZW50LCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbXBpbCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgdmFyaWFibGVzOiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmIGxpc3Q7XG4gICAgICAoKiogcGF0dGVybiBkZWNsYXJhdGlvbiBmb3IgcmV1c2luZyBhcyB2YXJpYWJsZSBpbiBwZXJ0dXJiYXRpb25zXG4gICAgb3Iga2luZXRpYyByYXRlICopXG4gIHNpZ25hdHVyZXM6ICdhZ2VudCBsaXN0OyAgKCoqIGFnZW50IHNpZ25hdHVyZSBkZWNsYXJhdGlvbiAqKVxuICBydWxlczogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAncnVsZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgICAgICgqKiBydWxlcyAocG9zc2libHkgbmFtZWQpOiBbbmFtZV9vcHRpb24gKiBydWxlX2RlZmluaXRpb25dICopXG4gIG9ic2VydmFibGVzOiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBsaXN0O1xuICAgICAgKCoqIGxpc3Qgb2YgcGF0dGVybnMgdG8gcGxvdCAqKVxuICBpbml0OiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50IGxpc3Q7XG4gICAgICAoKiogaW5pdGlhbCBncmFwaCBkZWNsYXJhdGlvbiAqKVxuICBwZXJ0dXJiYXRpb25zOiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gbGlzdDtcbiAgY29uZmlndXJhdGlvbnM6IGNvbmZpZ3VyYXRpb24gbGlzdDtcbiAgdG9rZW5zOiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdDtcbiAgdm9sdW1lczogKHN0cmluZyAqIGZsb2F0ICogc3RyaW5nKSBsaXN0O1xufVxuXG50eXBlIHBhcnNpbmdfY29tcGlsID0gKGFnZW50LCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGNvbXBpbFxudHlwZSBwYXJzaW5nX2luc3RydWN0aW9uID0gKGFnZW50LCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGluc3RydWN0aW9uXG5cbmxldCBub19tb3JlX3NpdGVfb25fcmlnaHQgZXJyb3IgbGVmdCByaWdodCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgfCBQb3J0IHAgLT5cbiAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQ291bnRlciBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFBvcnQgcCcgLT4gZnN0IHAucG9ydF9uYW1lID0gZnN0IHAnLnBvcnRfbmFtZSlcbiAgICAgICAgICBsZWZ0XG4gICAgICAgIHx8XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgZXJyb3IgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNpdGUgJ1wiIF4gZnN0IHAucG9ydF9uYW1lXG4gICAgICAgICAgICAgICAgICAgXiBcIicgd2FzIG5vdCBtZW50aW9ubmVkIGluIHRoZSBsZWZ0LWhhbmQgc2lkZS5cIixcbiAgICAgICAgICAgICAgICAgICBzbmQgcC5wb3J0X25hbWUgKSlcbiAgICAgICAgaW5cbiAgICAgICAgZmFsc2UpXG4gICAgcmlnaHRcblxubGV0IGVtcHR5X2NvbXBpbCA9XG4gIHtcbiAgICBmaWxlbmFtZXMgPSBbXTtcbiAgICB2YXJpYWJsZXMgPSBbXTtcbiAgICBzaWduYXR1cmVzID0gW107XG4gICAgcnVsZXMgPSBbXTtcbiAgICBpbml0ID0gW107XG4gICAgb2JzZXJ2YWJsZXMgPSBbXTtcbiAgICBwZXJ0dXJiYXRpb25zID0gW107XG4gICAgY29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICB0b2tlbnMgPSBbXTtcbiAgICB2b2x1bWVzID0gW107XG4gIH1cblxuKCpcbiAgbGV0IHJldmVyc2UgcmVzID1cbiAgbGV0IGxfcGF0ID0gTGlzdC5yZXYgIXJlcy5wYXR0ZXJuc1xuICBhbmQgbF9zaWcgPSBMaXN0LnJldiAhcmVzLnNpZ25hdHVyZXNcbiAgYW5kIGxfcnVsID0gTGlzdC5yZXYgIXJlcy5ydWxlc1xuICBhbmQgbF9pbmkgPSBMaXN0LnJldiAhcmVzLmluaXRcbiAgYW5kIGxfb2JzID0gTGlzdC5yZXYgIXJlcy5vYnNlcnZhYmxlc1xuICBpblxuICByZXM6PXtwYXR0ZXJucz1sX3BhdCA7IHNpZ25hdHVyZXM9bF9zaWcgO1xuICAgICAgICBydWxlcz1sX3J1bCA7IGluaXQgPSBsX2luaSA7IG9ic2VydmFibGVzID0gbF9vYnN9XG4qKVxuXG5sZXQgcHJpbnRfYXN0X2xpbmsgbW9kX2wgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfbCA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVhJWFdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT5cbiAgICAgICAgICAgTEthcHBhLnByaW50X2xpbmtcbiAgICAgICAgICAgICAoZnVuIF8gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeClcbiAgICAgICAgICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICAgICAgICAgZiB4KSlcbiAgICAgIGxcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIHggLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8lYVwiXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBsXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiKVxuICAgICAgICAgICAgIHgpKVxuICAgICAgbW9kX2xcblxubGV0IHByaW50X2FzdF9pbnRlcm5hbCBtb2RfaSBmIGwgPVxuICBpZiBsIDw+IFtdIHx8IG1vZF9pIDw+IE5vbmUgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWElYX1cIlxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IFNvbWUgeCwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeFxuICAgICAgICAgfCBOb25lLCBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiNcIikpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAoaSwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8lc1wiIGkpKVxuICAgICAgbW9kX2lcblxubGV0IHByaW50X2FzdF9wb3J0IGYgcCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVhJWFcIiAoZnN0IHAucG9ydF9uYW1lKVxuICAgIChwcmludF9hc3RfaW50ZXJuYWwgcC5wb3J0X2ludF9tb2QpXG4gICAgcC5wb3J0X2ludFxuICAgIChwcmludF9hc3RfbGluayBwLnBvcnRfbGlua19tb2QpXG4gICAgcC5wb3J0X2xpbmtcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBDRVEgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVpXCIgeFxuICB8IENHVEUgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPj0laVwiIHhcbiAgfCBDTFRFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIjw9JWlcIiB4XG4gIHwgQ1ZBUiB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JXNcIiB4XG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIHRlc3QgZiAoZGVsdGEsIF8pID1cbiAgaWYgZGVsdGEgPD4gMCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKz0lZFwiXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi9cIikpXG4gICAgICB0ZXN0IGRlbHRhXG5cbmxldCBwcmludF9jb3VudGVyIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slYSVhfVwiIChmc3QgYy5jb3VudGVyX25hbWUpXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX3Rlc3QpXG4gICAgYy5jb3VudGVyX3Rlc3RcbiAgICAocHJpbnRfY291bnRlcl9kZWx0YSBjLmNvdW50ZXJfdGVzdClcbiAgICBjLmNvdW50ZXJfZGVsdGFcblxubGV0IHByaW50X2FzdF9zaXRlIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwcmludF9hc3RfcG9ydCBmIHBcbiAgfCBDb3VudGVyIGMgLT4gcHJpbnRfY291bnRlciBmIGNcblxubGV0IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyA9XG4gIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZ1xuXG5sZXQgc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcblxubGV0IHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyA9XG4gIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpXG5cbmxldCBjb3VudGVyX3Rlc3RfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENHVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENMVEUgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiOyBcInZhbFwiLCBgSW50IHggXVxuICB8IENWQVIgeCAtPiBgQXNzb2MgWyBcInRlc3RcIiwgYFN0cmluZyBcImVxXCI7IFwidmFsXCIsIGBTdHJpbmcgeCBdXG5cbmxldCBjb3VudGVyX3Rlc3Rfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgSW50IHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYEludCB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENFUSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZ3RlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0dURSB4XG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImdsZVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZ2xlXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdIC0+XG4gICAgQ0xURSB4XG4gIHwgYEFzc29jIFsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIik7IChcInZhbFwiLCBgU3RyaW5nIHgpIF1cbiAgfCBgQXNzb2MgWyAoXCJ2YWxcIiwgYFN0cmluZyB4KTsgKFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIikgXSAtPlxuICAgIENWQVIgeFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGNvdW50ZXIgdGVzdFwiLCB4KSlcblxubGV0IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcCA9XG4gIGxldCBtb2RfbCA9XG4gICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgICAgIHwgU29tZSB4IC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCB4KVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicG9ydF9uYW1lXCIsIHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBwLnBvcnRfbmFtZTtcbiAgICAgICggXCJwb3J0X2ludFwiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKHN0cmluZ19vcHRpb25fYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgcC5wb3J0X2ludCApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2kgcC5wb3J0X2ludF9tb2Q7XG4gICAgICAgICAgXSApO1xuICAgICAgKCBcInBvcnRfbGlua1wiLFxuICAgICAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgICAgIFtcbiAgICAgICAgICAgICggXCJzdGF0ZVwiLFxuICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKExLYXBwYS5saW5rX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSkpKVxuICAgICAgICAgICAgICAgIHAucG9ydF9saW5rICk7XG4gICAgICAgICAgICBcIm1vZFwiLCBtb2RfbCBwLnBvcnRfbGlua19tb2Q7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGwgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgYFN0cmluZyBcIkZSRUVcIiAtPiBOb25lXG4gICAgICB8IHggLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkgeCkpXG4gIGluXG4gIGxldCBtb2RfaSA9XG4gICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuICBpblxuICBsZXQgcG9ydF9pbnQsIHBvcnRfaW50X21vZCA9XG4gICAgbWF0Y2ggaSB3aXRoXG4gICAgfCBgQXNzb2MgW10gfCBgTnVsbCAtPiBbXSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSkgXSAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2kgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgaSk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBpKSBdXG4gICAgICAtPlxuICAgICAgSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSBpLCBtb2RfaSBtXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBpbnRlcm5hbCBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIGxldCBwb3J0X2xpbmssIHBvcnRfbGlua19tb2QgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGwpIF0gLT5cbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChMS2FwcGEubGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpKSlcbiAgICAgICAgICBsLFxuICAgICAgICBOb25lIClcbiAgICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKSBdIC0+IFtdLCBtb2RfbCBtXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKTsgKFwibW9kXCIsIG0pIF0gfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInN0YXRlXCIsIGwpIF1cbiAgICAgIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgbW9kX2wgbSApXG4gICAgfCBfIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBsaW5rIHN0YXRlc1wiLCBpKSlcbiAgaW5cbiAgUG9ydFxuICAgIHtcbiAgICAgIHBvcnRfbmFtZSA9IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIG47XG4gICAgICBwb3J0X2ludDtcbiAgICAgIHBvcnRfaW50X21vZDtcbiAgICAgIHBvcnRfbGluaztcbiAgICAgIHBvcnRfbGlua19tb2Q7XG4gICAgfVxuXG5sZXQgc2l0ZV9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9uYW1lXCIsIG4pOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX3Rlc3RcIiwgdCk7IChcImNvdW50ZXJfbmFtZVwiLCBuKSBdIC0+XG4gICAgQ291bnRlclxuICAgICAge1xuICAgICAgICBjb3VudGVyX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3Rlc3QgPVxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF9vZl9qc29uKVxuICAgICAgICAgICAgdDtcbiAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IGQ7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IHNpdGVfdG9fanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IFBvcnQgcCAtPiBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHBcbiAgfCBDb3VudGVyIGMgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcImNvdW50ZXJfbmFtZVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBjLmNvdW50ZXJfbmFtZSApO1xuICAgICAgICAoIFwiY291bnRlcl90ZXN0XCIsXG4gICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgY291bnRlcl90ZXN0X3RvX2pzb24pXG4gICAgICAgICAgICBjLmNvdW50ZXJfdGVzdCApO1xuICAgICAgICAoIFwiY291bnRlcl9kZWx0YVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX2ludCBjLmNvdW50ZXJfZGVsdGEgKTtcbiAgICAgIF1cblxubGV0IHByaW50X2FnZW50X21vZCBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiK1wiXG4gIHwgRXJhc2UgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiXG4gIHwgTm9Nb2QgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXCJcblxubGV0IHByaW50X2FzdF9hZ2VudCBmID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBQcmVzZW50ICgoYWdlbnRfbmFtZSwgXyksIGwsIG0pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzKCVhKSVhXCIgYWdlbnRfbmFtZVxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXCIpIHByaW50X2FzdF9zaXRlKVxuICAgICAgbCBwcmludF9hZ2VudF9tb2QgbVxuXG5sZXQgYWdlbnRfbW9kX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IGBTdHJpbmcgXCJjcmVhdGVkXCJcbiAgfCBFcmFzZSAtPiBgU3RyaW5nIFwiZXJhc2VcIlxuICB8IE5vTW9kIC0+IGBTdHJpbmcgXCJub19tb2RcIlxuXG5sZXQgYWdlbnRfbW9kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImNyZWF0ZWRcIiAtPiBDcmVhdGVcbiAgfCBgU3RyaW5nIFwiZXJhc2VcIiAtPiBFcmFzZVxuICB8IGBTdHJpbmcgXCJub19tb2RcIiAtPiBOb01vZFxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYWdlbnQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IGBOdWxsXG4gIHwgUHJlc2VudCAobmEsIGwsIG0pIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJuYW1lXCIsIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZyBuYTtcbiAgICAgICAgXCJzaWdcIiwgSnNvblV0aWwub2ZfbGlzdCAoc2l0ZV90b19qc29uIGZpbGVuYW1lcykgbDtcbiAgICAgICAgXCJtb2RcIiwgYWdlbnRfbW9kX3RvX3lvanNvbiBtO1xuICAgICAgXVxuXG5sZXQgYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEFic2VudCBMb2MuZHVtbXlcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic2lnXCIsIHMpOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBKc29uVXRpbC50b19saXN0IChzaXRlX29mX2pzb24gZmlsZW5hbWVzKSBzLFxuICAgICAgICBhZ2VudF9tb2Rfb2ZfeW9qc29uIG0gKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbik7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJzaWdcIiwgcykgXSB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgTm9Nb2QgKVxuICB8IGBBc3NvYyBbIChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIFtdLFxuICAgICAgICBOb01vZCApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gQVNUIGFnZW50XCIsIHgpKVxuXG5sZXQgcHJpbnRfYXN0X21peCA9XG4gIFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFxcQCBcIikgKFBwLmxpc3QgUHAuY29tbWEgcHJpbnRfYXN0X2FnZW50KVxuXG5sZXQgdG9fZXJhc2VkX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgIHwgQWJzZW50IHBvcyAtPiBBYnNlbnQgcG9zXG4gICAgICB8IFByZXNlbnQgKG4sIHMsIF8pIC0+IFByZXNlbnQgKG4sIHMsIEVyYXNlKSkpXG5cbmxldCB0b19jcmVhdGVkX21peHR1cmUgPVxuICBMaXN0Lm1hcFxuICAgIChMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgIHwgQWJzZW50IHBvcyAtPiBBYnNlbnQgcG9zXG4gICAgICB8IFByZXNlbnQgKG4sIHMsIF8pIC0+IFByZXNlbnQgKG4sIHMsIENyZWF0ZSkpKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9saW5rID0gZnVuY3Rpb25cbiAgfCBbXSB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+IFVzZXJfZ3JhcGguV0hBVEVWRVJcbiAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbXVxuICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKHgsIF8pLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgWyAoLTEsIC0xKSwgeCBdXG4gIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgW11cbiAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5TT01FXG4gIHwgWyAoTEthcHBhLkxOS19UWVBFICgodHksIF8pLCAoc2ksIF8pKSwgXykgXSAtPiBVc2VyX2dyYXBoLlRZUEUgKHR5LCBzaSlcbiAgfCBfIDo6IF8gOjogXyAtPiBhc3NlcnQgZmFsc2UgKCogVE9ETyAqKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9pbnRlcm5hbCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU29tZSBbXVxuICB8IFsgKE5vbmUsIF8pIF0gLT4gTm9uZVxuICB8IFsgKFNvbWUgc3QsIF8pIF0gLT4gU29tZSBbIHN0IF1cbiAgfCBfIDo6IF8gOjogXyBhcyBsIC0+IFNvbWUgKExpc3RfdXRpbC5tYXBfb3B0aW9uIGZzdCBsKVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9zaXRlID0gZnVuY3Rpb25cbiAgfCBQb3J0IHsgcG9ydF9uYW1lOyBwb3J0X2ludDsgcG9ydF9pbnRfbW9kID0gXzsgcG9ydF9saW5rOyBwb3J0X2xpbmtfbW9kID0gXyB9XG4gICAgLT5cbiAgICB7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IGZzdCBwb3J0X25hbWU7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IHRvX2R1bW15X3VzZXJfbGluayBwb3J0X2xpbms7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzID0gdG9fZHVtbXlfdXNlcl9pbnRlcm5hbCBwb3J0X2ludDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgfCBDb3VudGVyIHsgY291bnRlcl9uYW1lOyBjb3VudGVyX3Rlc3QgPSBfOyBjb3VudGVyX2RlbHRhID0gXyB9IC0+XG4gICAge1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBmc3QgY291bnRlcl9uYW1lO1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPSBVc2VyX2dyYXBoLkNvdW50ZXIgKC0xKTtcbiAgICAgICgqIFRPRE8gKilcbiAgICB9XG5cbmxldCB0b19kdW1teV91c2VyX2FnZW50ID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBOb25lXG4gIHwgUHJlc2VudCAoKG5hLCBfKSwgcywgX21vZHMpIC0+XG4gICAgU29tZVxuICAgICAge1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfdHlwZSA9IG5hO1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfaWQgPSBOb25lO1xuICAgICAgICBVc2VyX2dyYXBoLm5vZGVfc2l0ZXMgPSBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCB0b19kdW1teV91c2VyX3NpdGUgcztcbiAgICAgIH1cblxubGV0IHNldHVwX2xpbmsgbSAoKGxpbmUsIHJvdyksIHNpdGUpIHZhID1cbiAgbWF0Y2ggbS4obGluZSkuKHJvdykgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzOyBfIH0gLT5cbiAgICBsZXQgcyA9IG5vZGVfc2l0ZXMuKHNpdGUpIGluXG4gICAgKG1hdGNoIHMuVXNlcl9ncmFwaC5zaXRlX3R5cGUgd2l0aFxuICAgIHwgVXNlcl9ncmFwaC5Db3VudGVyIF8gLT4gKClcbiAgICB8IFVzZXJfZ3JhcGguUG9ydCBwIC0+XG4gICAgICBub2RlX3NpdGVzLihzaXRlKSA8LVxuICAgICAgICB7XG4gICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBzLlVzZXJfZ3JhcGguc2l0ZV9uYW1lO1xuICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbIHZhIF07XG4gICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyA9IHAuVXNlcl9ncmFwaC5wb3J0X3N0YXRlcztcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcblxubGV0IG1peHR1cmVfdG9fdXNlcl9ncmFwaCBtID1cbiAgbGV0IG91dCA9XG4gICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHRvX2R1bW15X3VzZXJfYWdlbnQpIG1cbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBsaW5lIC0+XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biByb3cgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgIHwgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV9zaXRlczsgXyB9IC0+XG4gICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgIChmdW4gc2l0ZSBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFtdOyBfIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIChfIDo6IF8gOjogXyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFVzZXJfZ3JhcGguV0hBVEVWRVIgfCBVc2VyX2dyYXBoLlNPTUVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguVFlQRSAoXywgXykgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IHsgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPSBVc2VyX2dyYXBoLkNvdW50ZXIgXzsgXyB9IC0+IGFjY1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgWyAoXywgaWQpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpZCBhY2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lLCBhY2MnIC0+IE1vZHMuSW50TWFwLmFkZCBpZCAoKGxpbmUsIHJvdyksIHNpdGUpIGFjYydcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2YSwgYWNjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdmEnID0gKGxpbmUsIHJvdyksIHNpdGUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0dXBfbGluayBvdXQgdmEgdmEnIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHNldHVwX2xpbmsgb3V0IHZhJyB2YSBpblxuICAgICAgICAgICAgICAgICAgICBhY2MnKSlcbiAgICAgICAgICAgICAgYWNjIG5vZGVfc2l0ZXMpKVxuICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgb3V0XG4gIGluXG4gIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnRNYXAuaXNfZW1wdHkgYWNjKSBpblxuICBvdXRcblxubGV0IGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBJTklUX01JWCBtIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwibWl4dHVyZVwiOyBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtIF1cbiAgfCBJTklUX1RPSyB0IC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcInRva2VuXCI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfdmFyKSB0O1xuICAgICAgXVxuXG5sZXQgaW5pdF9vZl9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIm1peHR1cmVcIjsgbSBdIC0+XG4gICAgSU5JVF9NSVggKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0pXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwidG9rZW5cIjsgdCBdIC0+XG4gICAgSU5JVF9UT0tcbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJJTklUX1RPS1wiKVxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfdmFyKVxuICAgICAgICAgdClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgQXN0IGluaXQgc3RhdGVtZW50XCIsIHgpKVxuXG5sZXQgcHJpbnRfdG9rIHByX21peCBwcl90b2sgcHJfdmFyIGYgKChuYiwgXyksIChuLCBfKSkgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgJWFcIiAoQWxnX2V4cHIucHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIG5iIHByX3RvayBuXG5cbmxldCBwcmludF9vbmVfc2l6ZSB0ayBmIG1peCA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0JWFcIiBwcmludF9hc3RfbWl4IG1peFxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggdGsgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBfIDo6IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIHwgXCIpXG4gICAgKFBwLmxpc3RcbiAgICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiICsgXCIpXG4gICAgICAgKHByaW50X3Rva1xuICAgICAgICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJpbnRfYXN0X21peCBtKVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAgICAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpKSlcbiAgICB0a1xuXG5sZXQgcHJpbnRfYXJyb3cgZiBiaWRpciA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBiaWRpciB0aGVuXG4gICAgICAgXCI8LT5cIlxuICAgICBlbHNlXG4gICAgICAgXCItPlwiKVxuXG5sZXQgcHJpbnRfcmF3X3JhdGUgcHJfbWl4IHByX3RvayBwcl92YXIgb3AgZiAoZGVmLCBfKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkZWYgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBvcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoZCwgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwgJWFcIiAoQWxnX2V4cHIucHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIGQpXG5cbmxldCBwcmludF9hc3RfYWxnX2V4cHIgPVxuICBBbGdfZXhwci5wcmludFxuICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJpbnRfYXN0X21peCBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9yYXRlc19vbmVfZGlyIHVuIGYgZGVmID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIlxuICAgIChwcmludF9yYXdfcmF0ZVxuICAgICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJpbnRfYXN0X21peCBtKVxuICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG4gICAgICAgTm9uZSlcbiAgICBkZWZcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lICgoZCwgXyksIG1heF9kaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSV0fVwiIHByaW50X2FzdF9hbGdfZXhwciBkIChmdW4gZiAtPlxuICAgICAgICAgICAgUHAub3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gZiAobWQsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiBwcmludF9hc3RfYWxnX2V4cHIgbWQpXG4gICAgICAgICAgICAgIGYgbWF4X2Rpc3QpKVxuXG5sZXQgcHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsIGYgPSBmdW5jdGlvblxuICB8IEVkaXQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSBAXVwiIChwcmludF9vbmVfc2l6ZSByLmRlbHRhX3Rva2VuKSByLm1peFxuICB8IEFycm93IHIgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSAlYUAgJWFAXVwiXG4gICAgICAocHJpbnRfb25lX3NpemUgci5ybV90b2tlbilcbiAgICAgIHIubGhzIHByaW50X2Fycm93IGJpZGlyZWN0aW9uYWxcbiAgICAgIChwcmludF9vbmVfc2l6ZSByLmFkZF90b2tlbilcbiAgICAgIHIucmhzXG5cbmxldCBwcmludF9hc3RfcnVsZSBmIHIgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSBAQCAlYSV0QF1cIlxuICAgIChwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWw6ci5iaWRpcmVjdGlvbmFsKSByLnJld3JpdGVcbiAgICAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfdW4pIHIua19kZWYgKGZ1biBmIC0+XG4gICAgICBtYXRjaCByLmtfb3AsIHIua19vcF91biB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gKClcbiAgICAgIHwgTm9uZSwgXyAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICwgJWFcIlxuICAgICAgICAgIChwcmludF9yYXRlc19vbmVfZGlyIHIua19vcF91bilcbiAgICAgICAgICAoQWxnX2V4cHIuY29uc3QgTmJyLnplcm8pXG4gICAgICB8IFNvbWUgYSwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICwgJWFcIiAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfb3BfdW4pIGEpXG5cbmxldCBwcmludF9jb25maWd1cmF0aW9uIGYgKChuLCBfKSwgbCkgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWRlZjogXFxcIiVzXFxcIiBAWyVhQF1AXVwiIG5cbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgeCkpXG4gICAgbFxuXG5sZXQgcHJpbnRfaW5pdCBmID0gZnVuY3Rpb25cbiAgfCAobiwgXyksIElOSVRfTUlYIChtLCBfKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlaW5pdDogQFslYUBdQCBAWyVhQF1AXVwiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICBwcmludF9hc3RfbWl4IG1cbiAgfCAobiwgXyksIElOSVRfVE9LIHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWluaXQ6ICVhICVhQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgblxuICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgeCkpXG4gICAgICB0XG5cbmxldCBwcmludF9hc3RfYm9vbF9leHByID1cbiAgQWxnX2V4cHIucHJpbnRfYm9vbFxuICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgcHJpbnRfYXN0X21peCBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9wcmludF9leHByIGYgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIChhbGcsIF8pIC0+IHByaW50X2FzdF9hbGdfZXhwciBmIGFsZ1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgWyBQcmltaXRpdmVzLlN0cl9wZXhwciAoc3RyLCBfKSBdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgXFxcIiVzXFxcIlwiIHN0clxuICB8IChbIFByaW1pdGl2ZXMuQWxnX3BleHByIF8gXSB8IF8gOjogXyA6OiBfKSBhcyBlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkAgKEBbJWFAXSlcIlxuICAgICAgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eClcbiAgICAgIGVcblxubGV0IHByaW50X21vZGlmIGYgPSBmdW5jdGlvblxuICB8IEFQUExZICgobiwgXyksIChyLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZIEBbJWFAXSBAWyVhQF07XCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWw6ZmFsc2UpXG4gICAgICByLnJld3JpdGVcbiAgfCBVUERBVEUgKChzLCBfKSwgKG4sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkVVBEQVRFICclc0AnIEBbJWFAXTtcIiBzIHByaW50X2FzdF9hbGdfZXhwciBuXG4gIHwgU1RPUCBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCVhO1wiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTTkFQU0hPVCVhJXQ7XCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBpZiByYXcgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgW3RydWVdXCIpXG4gIHwgUFJJTlQgKFtdLCB4KSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4XG4gIHwgUFJJTlQgKGZpbGUsIHgpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYSA+JWFcIiBwcmludF9wcmludF9leHByIHggcHJpbnRfcHJpbnRfZXhwciBmaWxlXG4gIHwgUExPVEVOVFJZIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiRQTE9UTk9XO1wiXG4gIHwgQ0ZMT1dMQUJFTCAob24sIChzLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLICclcycgJXM7XCIgc1xuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBDRkxPV01JWCAob24sIChwLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFRSQUNLIEBbJWFAXSAlcztcIiBwcmludF9hc3RfbWl4IHBcbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gIHwgRElOIChrLCBwKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOJWEgJXRbdHJ1ZV1cIiBwcmludF9wcmludF9leHByIHAgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJhYnNvbHV0ZVxcXCIgXCJcbiAgICAgICAgfCBQcmltaXRpdmVzLlJFTEFUSVZFIC0+ICgpXG4gICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInByb2JhYmlsaXR5XFxcIiBcIilcbiAgfCBESU5PRkYgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiVhIFtmYWxzZV1cIiBwcmludF9wcmludF9leHByIHBcbiAgfCBTUEVDSUVTX09GIChvbiwgcCwgKG0sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1BFQ0lFU19PRiBAWyVhQF0gJXMgPiVhO1wiIHByaW50X2FzdF9taXggbVxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgICAgIHByaW50X3ByaW50X2V4cHIgcFxuXG5sZXQgcHJpbnRfcGVydHVyYmF0aW9uIGYgKChhbGFybSwgY29uZCwgbW9kaWYsIHJlcCksIF8pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVtb2Q6JWElYSBkb0AgQFslYUBdJWFAXVwiXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxhcm0gJWFcIiBOYnIucHJpbnQgaSkpXG4gICAgYWxhcm1cbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgY29uZFxuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X21vZGlmKVxuICAgIG1vZGlmXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgKHIsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwicmVwZWF0IEBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgcmVwXG5cbmxldCBwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsQCwlYUAsJWFALEAsJWFALEAsJWFALCVhQCxALCVhQCxALCVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfY29uZmlndXJhdGlvbilcbiAgICBjLmNvbmZpZ3VyYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGEgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlYWdlbnQ6QCBAWyVhQF1AXVwiIHByaW50X2FzdF9hZ2VudCBhKSlcbiAgICBjLnNpZ25hdHVyZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHMsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJXRva2VuOiAlc1wiIHMpKVxuICAgIGMudG9rZW5zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICgocywgXyksIChhLCBfKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUldmFyOiAnJXMnQCBAWyVhQF1AXVwiIHMgcHJpbnRfYXN0X2FsZ19leHByIGEpKVxuICAgIGMudmFyaWFibGVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChhLCBfKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVwbG90OkAgQFslYUBdQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgYSkpXG4gICAgYy5vYnNlcnZhYmxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAocywgKHIsIF8pKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbQFslYSVhQF1AXVwiXG4gICAgICAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIChzLCBfKSAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnQCBcIiBzKSlcbiAgICAgICAgICAgcyBwcmludF9hc3RfcnVsZSByKSlcbiAgICBjLnJ1bGVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfcGVydHVyYmF0aW9uKVxuICAgIGMucGVydHVyYmF0aW9uc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X2luaXQpXG4gICAgYy5pbml0XG5cbmxldCBhcnJvd19ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwibGhzXCIsIGZfbWl4IHIubGhzO1xuICAgICAgKCBcInJtX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLnJtX3Rva2VuICk7XG4gICAgICBcInJoc1wiLCBmX21peCByLnJocztcbiAgICAgICggXCJhZGRfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIHIuYWRkX3Rva2VuICk7XG4gICAgXVxuXG5sZXQgYXJyb3dfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNCAtPlxuICAgIHtcbiAgICAgIGxocyA9IGZfbWl4IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJsaHNcIiB4KTtcbiAgICAgIHJtX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJtX3Rva2VuXCIgeCk7XG4gICAgICByaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmhzXCIgeCk7XG4gICAgICBhZGRfdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWRkX3Rva2VuXCIgeCk7XG4gICAgfVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGFycm93X25vdGF0aW9uXCIsIHgpKVxuXG5sZXQgZWRpdF9ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIHIgPVxuICBsZXQgbWl4X3RvX2pzb24gPVxuICAgIEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcIm1peFwiLCBtaXhfdG9fanNvbiByLm1peDtcbiAgICAgICggXCJkZWx0YV90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiBKc29uVXRpbC5vZl9zdHJpbmcpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIHIuZGVsdGFfdG9rZW4gKTtcbiAgICBdXG5cbmxldCBlZGl0X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgciA9XG4gIGxldCBtaXhfb2ZfanNvbiA9XG4gICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBtYXRjaCByIHdpdGhcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8IDMgLT5cbiAgICB7XG4gICAgICBtaXggPSBtaXhfb2ZfanNvbiAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibWl4XCIgeCk7XG4gICAgICBkZWx0YV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJkZWx0YV90b2tlblwiIHgpO1xuICAgIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgZWRpdF9ub3RhdGlvblwiLCB4KSlcblxubGV0IHJ1bGVfY29udGVudF90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBFZGl0IHIgLT4gYExpc3QgWyBgU3RyaW5nIFwiZWRpdFwiOyBlZGl0X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgciBdXG4gIHwgQXJyb3cgciAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcImFycm93XCI7IGFycm93X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciBdXG5cbmxldCBydWxlX2NvbnRlbnRfb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiZWRpdFwiOyByIF0gLT4gRWRpdCAoZWRpdF9ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIHIpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiYXJyb3dcIjsgciBdIC0+XG4gICAgQXJyb3cgKGFycm93X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgcilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgcnVsZSBjb250ZW50XCIsIHgpKVxuXG5sZXQgcnVsZV90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcInJld3JpdGVcIiwgcnVsZV9jb250ZW50X3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgci5yZXdyaXRlO1xuICAgICAgXCJiaWRpcmVjdGlvbmFsXCIsIGBCb29sIHIuYmlkaXJlY3Rpb25hbDtcbiAgICAgICggXCJrX2RlZlwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIHIua19kZWYgKTtcbiAgICAgICggXCJrX3VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICByLmtfdW4gKTtcbiAgICAgICggXCJrX29wXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICByLmtfb3AgKTtcbiAgICAgICggXCJrX29wX3VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICByLmtfb3BfdW4gKTtcbiAgICBdXG5cbmxldCBydWxlX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA2IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJld3JpdGUgPVxuICAgICAgICAgICBydWxlX2NvbnRlbnRfb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhclxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyZXdyaXRlXCIgeCk7XG4gICAgICAgICBiaWRpcmVjdGlvbmFsID1cbiAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbFxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJiaWRpcmVjdGlvbmFsXCIgeCk7XG4gICAgICAgICBrX2RlZiA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfZGVmXCIgeCk7XG4gICAgICAgICBrX3VuID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX3VuXCIgeCk7XG4gICAgICAgICBrX29wID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX29wXCIgeCk7XG4gICAgICAgICBrX29wX3VuID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX29wX3VuXCIgeCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGVcIiwgeCkpXG5cbmxldCBtb2RpZl90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgQVBQTFkgKGFsZywgcikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiQVBQTFlcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGc7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChydWxlX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSByO1xuICAgICAgXVxuICB8IFVQREFURSAoaWQsIGFsZykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiVVBEQVRFXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfdmFyIGlkO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZztcbiAgICAgIF1cbiAgfCBTVE9QIGwgLT5cbiAgICBgTGlzdFxuICAgICAgKGBTdHJpbmcgXCJTVE9QXCJcbiAgICAgIDo6IExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgU05BUFNIT1QgKHJhdywgbCkgLT5cbiAgICBgTGlzdFxuICAgICAgKGBTdHJpbmdcbiAgICAgICAgIChpZiByYXcgdGhlblxuICAgICAgICAgICAgXCJSQVdfU05BUFNIT1RcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFwiU05BUFNIT1RcIilcbiAgICAgIDo6IExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgUFJJTlQgKGZpbGUsIGV4cHIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlBSSU5UXCI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGU7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGV4cHI7XG4gICAgICBdXG4gIHwgUExPVEVOVFJZIC0+IGBTdHJpbmcgXCJQTE9URU5UUllcIlxuICB8IENGTE9XTEFCRUwgKGIsIGlkKSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XTEFCRUxcIjsgYEJvb2wgYjsgc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzIGlkIF1cbiAgfCBDRkxPV01JWCAoYiwgbSkgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV1wiOyBgQm9vbCBiOyBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtIF1cbiAgfCBESU4gKGIsIGZpbGUpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJTlwiO1xuICAgICAgICBQcmltaXRpdmVzLmRpbl9raW5kX3RvX3lvanNvbiBiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgXVxuICB8IERJTk9GRiBmaWxlIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiRElOT0ZGXCJcbiAgICAgIDo6IExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGVcbiAgICAgIClcbiAgfCBTUEVDSUVTX09GIChiLCBsLCBtKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJTUEVDSUVTX09GXCI7XG4gICAgICAgIGBCb29sIGI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGw7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG07XG4gICAgICBdXG5cbmxldCBtb2RpZl9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQVBQTFlcIjsgYWxnOyBtaXggXSAtPlxuICAgIEFQUExZXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChydWxlX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIG1peCApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiVVBEQVRFXCI7IGlkOyBhbGcgXSAtPlxuICAgIFVQREFURVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhciBpZCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGcgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiU1RPUFwiIDo6IGwpIC0+XG4gICAgU1RPUCAoTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlNOQVBTSE9UXCIgOjogbCkgLT5cbiAgICBTTkFQU0hPVFxuICAgICAgKCBmYWxzZSxcbiAgICAgICAgTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbCApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJSQVdfU05BUFNIT1RcIiA6OiBsKSAtPlxuICAgIFNOQVBTSE9UXG4gICAgICAodHJ1ZSwgTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUklOVFwiOyBmaWxlOyBleHByIF0gLT5cbiAgICBQUklOVFxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByIClcbiAgfCBgU3RyaW5nIFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dMQUJFTFwiOyBgQm9vbCBiOyBpZCBdIC0+XG4gICAgQ0ZMT1dMQUJFTCAoYiwgc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgaWQpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dcIjsgYEJvb2wgYjsgbSBdIC0+XG4gICAgQ0ZMT1dNSVggKGIsIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0pXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiRElOXCI7IGI7IGZpbGUgXSAtPlxuICAgIERJTlxuICAgICAgKCBQcmltaXRpdmVzLmRpbl9raW5kX29mX3lvanNvbiBiLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIkRJTk9GRlwiIDo6IGZpbGUpIC0+XG4gICAgRElOT0ZGXG4gICAgICAoTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgZmlsZSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJTUEVDSUVTX09GXCI7IGBCb29sIGI7IGZpbGU7IG0gXSAtPlxuICAgIFNQRUNJRVNfT0ZcbiAgICAgICggYixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSApXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG1vZGlmaWNhdGlvblwiLCB4KSlcblxubGV0IG1lcmdlX2ludGVybmFsX21vZCBhY2MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYWNjXG4gIHwgU29tZSAoeCwgcG9zKSAtPlxuICAgIGxldCB4X29wID0gU29tZSB4IGluXG4gICAgaWYgTGlzdC5leGlzdHMgKGZ1biAoeCcsIF8pIC0+IHhfb3AgPSB4JykgYWNjIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgICh4X29wLCBwb3MpIDo6IGFjY1xuXG5sZXQgbWVyZ2VfaW50ZXJuYWxzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKCh4LCBfKSBhcyB5KSAtPlxuICAgICAgaWZcbiAgICAgICAgeCA9IE5vbmVcbiAgICAgICAgfHwgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAoZnVuICh4JywgXykgLT5cbiAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLmVxdWFsIChmdW4geCB4JyAtPiBTdHJpbmcuY29tcGFyZSB4IHgnID0gMCkgeCB4JylcbiAgICAgICAgICAgICBhY2NcbiAgICAgIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIHkgOjogYWNjKVxuXG5sZXQgcmVjIG1lcmdlX3NpdGVzX2NvdW50ZXIgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gWyBDb3VudGVyIGMgXVxuICB8IENvdW50ZXIgYycgOjogXyBhcyBsIHdoZW4gZnN0IGMuY291bnRlcl9uYW1lID0gZnN0IGMnLmNvdW50ZXJfbmFtZSAtPiBsXG4gIHwgKChQb3J0IF8gfCBDb3VudGVyIF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBtZXJnZV9zaXRlc19jb3VudGVyIGMgdFxuXG5sZXQgcmVjIG1lcmdlX3NpdGVzX3BvcnQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gWyBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH0gXVxuICB8IFBvcnQgaCA6OiB0IHdoZW4gZnN0IHAucG9ydF9uYW1lID0gZnN0IGgucG9ydF9uYW1lIC0+XG4gICAgUG9ydFxuICAgICAge1xuICAgICAgICBoIHdpdGhcbiAgICAgICAgcG9ydF9pbnQgPVxuICAgICAgICAgIG1lcmdlX2ludGVybmFsX21vZFxuICAgICAgICAgICAgKG1lcmdlX2ludGVybmFscyBoLnBvcnRfaW50IHAucG9ydF9pbnQpXG4gICAgICAgICAgICBwLnBvcnRfaW50X21vZDtcbiAgICAgIH1cbiAgICA6OiB0XG4gIHwgKChQb3J0IF8gfCBDb3VudGVyIF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBtZXJnZV9zaXRlc19wb3J0IHAgdFxuXG5sZXQgbWVyZ2Vfc2l0ZXMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgIHwgUG9ydCBwIC0+IG1lcmdlX3NpdGVzX3BvcnQgcCBhY2NcbiAgICB8IENvdW50ZXIgYyAtPiBtZXJnZV9zaXRlc19jb3VudGVyIGMgYWNjKVxuXG5sZXQgbWVyZ2VfYWdlbnRzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFic2VudCBfIC0+IGFjY1xuICAgICAgIHwgUHJlc2VudCAoKChuYSwgXykgYXMgeCksIHMsIF8pIC0+XG4gICAgICAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBQcmVzZW50XG4gICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+IFBvcnQgeyBwIHdpdGggcG9ydF9saW5rID0gW10gfVxuICAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgXyBhcyB4IC0+IHgpXG4gICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgIE5vTW9kICk7XG4gICAgICAgICAgICAgXVxuICAgICAgICAgICB8IFByZXNlbnQgKChuYScsIF8pLCBzJywgXykgOjogdCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT5cbiAgICAgICAgICAgICBQcmVzZW50ICh4LCBtZXJnZV9zaXRlcyBzJyBzLCBOb01vZCkgOjogdFxuICAgICAgICAgICB8ICgoUHJlc2VudCBfIHwgQWJzZW50IF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBhdXggdFxuICAgICAgICAgaW5cbiAgICAgICAgIGF1eCBhY2MpKVxuXG5sZXQgbWVyZ2VfdG9rZW5zID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sICgobmEsIF8pIGFzIHRvaykpIC0+XG4gICAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gWyB0b2sgXVxuICAgICAgICB8IChuYScsIF8pIDo6IF8gYXMgbCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT4gbFxuICAgICAgICB8IGggOjogdCBhcyBsIC0+XG4gICAgICAgICAgbGV0IG8gPSBhdXggdCBpblxuICAgICAgICAgIGlmIHQgPT0gbyB0aGVuXG4gICAgICAgICAgICBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaCA6OiBvXG4gICAgICBpblxuICAgICAgYXV4IGFjYylcblxubGV0IHNpZ19mcm9tX2luaXRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWdzLCB0b2tzKSAtPiBmdW5jdGlvblxuICAgIHwgXywgSU5JVF9NSVggKG0sIF8pIC0+IG1lcmdlX2FnZW50cyBhZ3MgbSwgdG9rc1xuICAgIHwgbmEsIElOSVRfVE9LIGwgLT4gYWdzLCBtZXJnZV90b2tlbnMgdG9rcyAoTGlzdC5tYXAgKGZ1biB4IC0+IG5hLCB4KSBsKSlcblxubGV0IHNpZ19mcm9tX3J1bGUgKGFncywgdG9rcykgciA9XG4gIG1hdGNoIHIucmV3cml0ZSB3aXRoXG4gIHwgRWRpdCBlIC0+IG1lcmdlX2FnZW50cyBhZ3MgZS5taXgsIG1lcmdlX3Rva2VucyB0b2tzIGUuZGVsdGFfdG9rZW5cbiAgfCBBcnJvdyBhIC0+XG4gICAgbGV0IGFncycsIHRva3MnID1cbiAgICAgIGlmIHIuYmlkaXJlY3Rpb25hbCB0aGVuXG4gICAgICAgIG1lcmdlX2FnZW50cyBhZ3MgYS5yaHMsIG1lcmdlX3Rva2VucyB0b2tzIGEuYWRkX3Rva2VuXG4gICAgICBlbHNlXG4gICAgICAgIGFncywgdG9rc1xuICAgIGluXG4gICAgbWVyZ2VfYWdlbnRzIGFncycgYS5saHMsIG1lcmdlX3Rva2VucyB0b2tzJyBhLnJtX3Rva2VuXG5cbmxldCBzaWdfZnJvbV9ydWxlcyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gcCAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgcilcblxubGV0IHNpZ19mcm9tX3BlcnRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKChfLCBfLCBwLCBfKSwgXykgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcCAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgQVBQTFkgKF8sIChyLCBfKSkgLT4gc2lnX2Zyb21fcnVsZSBwIHJcbiAgICAgICAgICB8IFVQREFURSBfIHwgU1RPUCBfIHwgU05BUFNIT1QgXyB8IFBSSU5UIF8gfCBQTE9URU5UUlkgfCBDRkxPV0xBQkVMIF9cbiAgICAgICAgICB8IENGTE9XTUlYIF8gfCBESU4gXyB8IERJTk9GRiBfIHwgU1BFQ0lFU19PRiBfIC0+XG4gICAgICAgICAgICBwKVxuICAgICAgICBhY2MgcClcblxubGV0IGluZmVyX2FnZW50X3NpZ25hdHVyZXMgciA9XG4gIGxldCBhY2MgPSBzaWdfZnJvbV9pbml0cyAoci5zaWduYXR1cmVzLCByLnRva2Vucykgci5pbml0IGluXG4gIGxldCBhY2MnID0gc2lnX2Zyb21fcnVsZXMgYWNjIHIucnVsZXMgaW5cbiAgbGV0IGFncywgdG9rcyA9IHNpZ19mcm9tX3BlcnRzIGFjYycgci5wZXJ0dXJiYXRpb25zIGluXG4gIHsgciB3aXRoIHNpZ25hdHVyZXMgPSBhZ3M7IHRva2VucyA9IHRva3MgfVxuXG5sZXQgc3BsaXRfbWl4dHVyZSBtID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIChsaHMsIHJocykgLT5cbiAgICAgIGxldCBsbCwgcnIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIGFnICgobGhzLCByaHMpIGFzIHBhY2spIC0+XG4gICAgICAgICAgICBtYXRjaCBhZyB3aXRoXG4gICAgICAgICAgICB8IEFic2VudCBfIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUHJlc2VudCAoKChfLCBwb3MpIGFzIG5hKSwgaW50ZiwgbW9kaWYpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgICAgIHwgQ3JlYXRlIC0+IEFic2VudCBwb3MgOjogbGhzLCBQcmVzZW50IChuYSwgaW50ZiwgTm9Nb2QpIDo6IHJoc1xuICAgICAgICAgICAgICB8IEVyYXNlIC0+IFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogbGhzLCBBYnNlbnQgcG9zIDo6IHJoc1xuICAgICAgICAgICAgICB8IE5vTW9kIC0+XG4gICAgICAgICAgICAgICAgbGV0IGludGZsLCBpbnRmciA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCByKSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIFBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwLnBvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50ID0gcC5wb3J0X2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPSBwLnBvcnRfbGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2ludF9tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKHgsIHBvcykgLT4gWyBTb21lIHgsIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2xpbmtfbW9kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHAucG9ydF9saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgKGksIHBvcykpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogciApXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYyB3aXRoIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBOb25lIH0gOjogciApKVxuICAgICAgICAgICAgICAgICAgICAoW10sIFtdKSBpbnRmXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIFByZXNlbnQgKG5hLCBpbnRmbCwgTm9Nb2QpIDo6IGxocyxcbiAgICAgICAgICAgICAgICAgIFByZXNlbnQgKG5hLCBpbnRmciwgTm9Nb2QpIDo6IHJocyApKSlcbiAgICAgICAgICBsIChbXSwgW10pXG4gICAgICBpblxuICAgICAgbGwgOjogbGhzLCByciA6OiByaHMpXG4gICAgbSAoW10sIFtdKVxuXG5sZXQgY29tcGlsX3RvX2pzb24gYyA9XG4gIGxldCBmaWxlcyA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lIDo6IGMuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBsZXQgbWl4X3RvX2pzb24gPVxuICAgIEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbGV0IHZhcl90b19qc29uID0gSnNvblV0aWwub2Zfc3RyaW5nIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiZmlsZW5hbWVzXCIsIEpzb25VdGlsLm9mX2FycmF5IEpzb25VdGlsLm9mX3N0cmluZyBmaWxlcztcbiAgICAgIFwic2lnbmF0dXJlc1wiLCBKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykgYy5zaWduYXR1cmVzO1xuICAgICAgXCJ0b2tlbnNcIiwgSnNvblV0aWwub2ZfbGlzdCAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSBjLnRva2VucztcbiAgICAgICggXCJ2YXJpYWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMudmFyaWFibGVzICk7XG4gICAgICAoIFwicnVsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAocnVsZV90b19qc29uIGZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpKVxuICAgICAgICAgIGMucnVsZXMgKTtcbiAgICAgICggXCJvYnNlcnZhYmxlc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMub2JzZXJ2YWJsZXMgKTtcbiAgICAgICggXCJpbml0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAoaW5pdF90b19qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKVxuICAgICAgICAgIGMuaW5pdCApO1xuICAgICAgKCBcInBlcnR1cmJhdGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZnVuIChhbGFybSwgcHJlLCBtb2RpZiwgcG9zdCkgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gTmJyLnRvX3lvanNvbiBhbGFybTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZTtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZjtcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b19qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3Q7XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIGMucGVydHVyYmF0aW9ucyApO1xuICAgICAgKCBcImNvbmZpZ3VyYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpKVxuICAgICAgICAgIGMuY29uZmlndXJhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBjb21waWxfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA5IC0+XG4gICAgbGV0IHZhcl9vZl9qc29uID0gSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSBpblxuICAgICh0cnlcbiAgICAgICBsZXQgZmlsZW5hbWVzID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAoTGlzdC5hc3NvYyBcImZpbGVuYW1lc1wiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgbWl4X29mX2pzb24gPVxuICAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fbGlzdCAoYWdlbnRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgc2lnbmF0dXJlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1Qgc2lnbmF0dXJlXCIpXG4gICAgICAgICAgICAgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwic2lnbmF0dXJlc1wiIGwpO1xuICAgICAgICAgdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCB0b2tlbiBzaWdcIilcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ0b2tlbnNcIiBsKTtcbiAgICAgICAgIHZhcmlhYmxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgdmFyaWFibGVzXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInZhcmlhYmxlc1wiIGwpO1xuICAgICAgICAgcnVsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHJ1bGVzXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJ1bGVzXCIgbCk7XG4gICAgICAgICBvYnNlcnZhYmxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1Qgb2JzZXJ2YWJsZXNcIilcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJvYnNlcnZhYmxlc1wiIGwpO1xuICAgICAgICAgaW5pdCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgaW5pdFwiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgIChpbml0X29mX2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJpbml0XCIgbCk7XG4gICAgICAgICBwZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBwZXJ0dXJiYXRpb25zXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIGFsYXJtOyBwcmU7IG1vZGlmOyBwb3N0IF0gLT5cbiAgICAgICAgICAgICAgICAgKCBKc29uVXRpbC50b19vcHRpb24gTmJyLm9mX3lvanNvbiBhbGFybSxcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHByZSxcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgICAgICAgICAobW9kaWZfb2ZfanNvbiBmaWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICAgICBtb2RpZixcbiAgICAgICAgICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgIHBvc3QgKVxuICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHBlcnR1cmJhdGlvblwiLCB4KSkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicGVydHVyYmF0aW9uc1wiIGwpO1xuICAgICAgICAgY29uZmlndXJhdGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIGNvbmZpZ3VyYXRpb25cIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdCAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNvbmZpZ3VyYXRpb25zXCIgbCk7XG4gICAgICAgICB2b2x1bWVzID0gW107XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1RcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVFwiLCB4KSlcblxubGV0IHdyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0ID0gWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYiAoY29tcGlsX3RvX2pzb24gYXN0KVxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgcCBsYiA9IGNvbXBpbF9vZl9qc29uIChZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHdpdGhfYWdlbnRfY291bnRlcnMgPSB7XG4gIGFnZW50OiAnYTtcbiAgY291bnRlcnM6IChBc3QuY291bnRlciAqIExLYXBwYS5zd2l0Y2hpbmcpIG9wdGlvbiBhcnJheTtcbn1cblxudHlwZSBydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gIExLYXBwYS5ydWxlX2FnZW50IHdpdGhfYWdlbnRfY291bnRlcnMgbGlzdFxuXG50eXBlIHJhd19taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBSYXdfbWl4dHVyZS5hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxuKCoqIFtjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIGxzMSBsczJdXG4gKiBFYWNoIGVsZW1lbnQgb2YgW2xzMV0gZGVzY3JpYmVzIGEgc2V0dXAgb2YgY291bnRlciB2YXJpYWJsZXMsIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGJlaW5nIHRoZSBsaXN0IG9mIGVudGl0aWVzIHRvIGJlIHVzZWQgaW4gdGhlIG1vZGVsLCB3aGVyZSB2YXJpYWJsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBjb3VudGVycywgYW5kIHRoZSBzZWNvbmQgb25lIHRoZSBtYXBwaW5nIG9mIHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMsIHRoYXQgYWxsb3dzIHRvIGtub3cgd2hpY2ggaW5zdGFuY2Ugb2YgbW9kZWwgZW50aXRpZXMgd291bGQgYmUgY2hvc2VuIGluIHRoaXMgZ2l2ZW4gc2V0dXAuXG4gKiBbbHMyXSBhZGRzIGEgbmV3IGVudGl0eSB3aXRoIGRpZmZlcmVudCBraW5kcyBhY2NvcmRpbmcgdG8gdGhlIHZhcmlhYmxlIHZhbHVlcyBnaXZlbiBpbiB0aGUgbGlzdCBhcyBzZWNvbmQgbWVtYmVyIG9mIHRoZSB0dXBsZSwgd2hpY2ggaXMgdGhlbiBjb21iaW5lZCBpbiB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG90aGVyIHNldHVwcywgY29tYmluaW5nIHRoZSBkaWZmZXJlbnQgdmFyaWFibGUgdmFsdWVzIHdoaWNoIHRob3NlIGFscmVhZHkgZGVmaW5lZC5cbiAqIE5vIGNoZWNrIGlzIGRvbmUgb24gdGhlIHVuaWNpdHkgb2YgdGhlIGRlc2NyaWJlZCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcyAqKVxubGV0IGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgKGxzMSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdClcbiAgICAobHMyIDogKCdhICogJ2IgbGlzdCkgbGlzdCkgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QgPVxuICBpZiBsczEgPSBbXSB0aGVuXG4gICAgcmFpc2UgRXhpdCAoKkxpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChiLCBkcykgLT4gKFsgYiBdLCBkcykgOjogYWNjKSBbXSBsczIqKVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBjcykgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MnIChiLCBkcykgLT4gKGIgOjogYSwgZHMgQCBjcykgOjogYWNjJykgYWNjIGxzMilcbiAgICAgIFtdIGxzMVxuXG5sZXQgdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIChrLCBhKSA9XG4gIGxldCB1cGRhdGVfaWQgcyBrID1cbiAgICBsZXQgY291bnRlcnNfbWF0Y2hpbmdfcywgXyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIChzJywgXykgLT4gU3RyaW5nLmNvbXBhcmUgcyBzJyA9IDApIGNvdW50ZXJfdmFyX3ZhbHVlc1xuICAgIGluXG4gICAgbWF0Y2ggY291bnRlcnNfbWF0Y2hpbmdfcyB3aXRoXG4gICAgfCBbIChfLCB4KSBdIC0+IEFsZ19leHByLkNPTlNUIChOYnIuSSB4KVxuICAgIHwgW10gLT4ga1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJDb3VudGVyIHZhcmlhYmxlIFwiIF4gcyBeIFwiIGFwcGVhcnMgdHdpY2UgaW4gcnVsZVwiLCBMb2MuZHVtbXkpKVxuICBpblxuICBsZXQgcmVjIHVwZGF0ZV9ib29sX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4ga1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUFxuICAgICAgICAob3AsICh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfYm9vbF9leHByIGsyLCBhMikpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGssIGEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsICh1cGRhdGVfYm9vbF9leHByIGssIGEpKVxuICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIChrMSwgYTEpLCAoazIsIGEyKSkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSwgKHVwZGF0ZV9leHByIGsyLCBhMikpXG4gIGFuZCB1cGRhdGVfZXhwciBrID1cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGsxLCBhMSkpIC0+XG4gICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCAodXBkYXRlX2V4cHIgazEsIGExKSlcbiAgICB8IEFsZ19leHByLklGICgoazEsIGExKSwgKGsyLCBhMiksIChrMywgYTMpKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCh1cGRhdGVfYm9vbF9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpLCAodXBkYXRlX2V4cHIgazMsIGEzKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgYTEpLCBrMikgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU4gKCh1cGRhdGVfZXhwciBrMSwgYTEpLCBrMilcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrLCBhKSwgbSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKCh1cGRhdGVfZXhwciBrLCBhKSwgbSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiB1cGRhdGVfaWQgaWQga1xuICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgICAga1xuICBpblxuICB1cGRhdGVfZXhwciBrLCBhXG5cbmxldCBjb2xsZWN0X2lkcyBleHByX2xpc3QgOiBNb2RzLlN0cmluZ1NldC50ID1cbiAgbGV0IHJlYyBhdXhfZXhwciBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChfLCAoazEsIF8pKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoKGsxLCBfKSwgXylcbiAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKChrMSwgXyksIF8pIC0+XG4gICAgICBhdXhfZXhwciBrMSBhY2NcbiAgICB8IEFsZ19leHByLklGICgoazEsIF8pLCAoazIsIF8pLCAoazMsIF8pKSAtPlxuICAgICAgYXV4X2V4cHIgazMgKGF1eF9leHByIGsyIChhdXhfYm9vbCBrMSBhY2MpKVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCB8IEFsZ19leHByLlRPS0VOX0lEIGlkIC0+IGF1eF9pZCBpZCBhY2NcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGFjY1xuICBhbmQgYXV4X2lkIGlkIGFjYyA9IE1vZHMuU3RyaW5nU2V0LmFkZCBpZCBhY2NcbiAgYW5kIGF1eF9ib29sIGV4cHIgYWNjID1cbiAgICBtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSAtPiBhY2NcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPlxuICAgICAgYXV4X2Jvb2wgazIgKGF1eF9ib29sIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIChrLCBfKSkgLT4gYXV4X2Jvb2wgayBhY2NcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIChrMSwgXyksIChrMiwgXykpIC0+IGF1eF9leHByIGsyIChhdXhfZXhwciBrMSBhY2MpXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgZXhwcl9vcHQgLT5cbiAgICAgIG1hdGNoIGV4cHJfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSAoZXhwciwgXykgLT4gYXV4X2V4cHIgZXhwciBhY2MpXG4gICAgTW9kcy5TdHJpbmdTZXQuZW1wdHkgZXhwcl9saXN0XG5cbmxldCBuYW1lX21hdGNoIChzLCBfKSAocycsIF8pID0gU3RyaW5nLmNvbXBhcmUgcyBzJyA9IDBcblxubGV0IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyA9XG4gIGxldCByZWMgcHJlcGFyZV9zaXRlIHNpdGVzIGMgPVxuICAgIG1hdGNoIHNpdGVzIHdpdGhcbiAgICB8IFtdIC0+IFsgQXN0LkNvdW50ZXIgYyBdXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGhkIHdpdGhcbiAgICAgIHwgQXN0LkNvdW50ZXIgYycgd2hlbiBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjJy5Bc3QuY291bnRlcl9uYW1lIC0+XG4gICAgICAgIEFzdC5Db3VudGVyIHsgYycgd2l0aCBBc3QuY291bnRlcl9kZWx0YSA9IGMuQXN0LmNvdW50ZXJfZGVsdGEgfSA6OiB0bFxuICAgICAgfCBBc3QuQ291bnRlciBfIHwgQXN0LlBvcnQgXyAtPiBoZCA6OiBwcmVwYXJlX3NpdGUgdGwgYylcbiAgaW5cbiAgbGV0IGNvdW50ZXJzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MnIHJzaXRlIC0+XG4gICAgICAgIG1hdGNoIHJzaXRlIHdpdGhcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYydcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+IGMgOjogYWNjJylcbiAgICAgIFtdIHJzaXRlc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdCBwcmVwYXJlX3NpdGUgbHNpdGVzIGNvdW50ZXJzXG5cbigqIC0gYWRkIGluIHRoZSBsaHMgOiAoaSkgY291bnRlcnMgb25seSBtZW50aW9uZWQgaW4gdGhlIHJocyBhbmQgKGlpKSB0aGUgZGVsdGFzXG4gICAtIHN5bnRhY3RpYyBjaGVja3Mgb2Ygbm8gdGVzdCBpbiByaHM7IG5vIG1vZGlmIGluIGxocyAqKVxubGV0IHByZXBhcmVfY291bnRlcnMgcnVsZXMgPVxuICBsZXQgY2hlY2tfc3ludGF4IHNpdGVzIGYgZXJyb3IgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiAoKVxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgICAgICBpZiBmIGMgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLkFzdC5jb3VudGVyX25hbWUgXiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuQXN0LmNvdW50ZXJfbmFtZSApKSlcbiAgICAgIHNpdGVzXG4gIGluXG5cbiAgbGV0IHJlYyBwcmVwYXJlX2xoc19ydWxlIHJocyBsaHMgPVxuICAgIG1hdGNoIHJocywgbGhzIHdpdGhcbiAgICB8IEFzdC5QcmVzZW50IChybmEsIHJzaXRlcywgXykgOjogciwgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzLCBiKSA6OiBsIC0+XG4gICAgICBjaGVja19zeW50YXggbHNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKExvYy52IGMuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBjaGVja19zeW50YXggcnNpdGVzXG4gICAgICAgIChmdW4gYyAtPiBub3QgKGMuY291bnRlcl90ZXN0ID0gTm9uZSkpXG4gICAgICAgIFwiIGhhcyBhIHRlc3QgaW4gdGhlIHJoc1wiO1xuICAgICAgaWYgU3RyaW5nLmNvbXBhcmUgKExvYy52IHJuYSkgKExvYy52IGxuYSkgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgbHNpdGVzJyA9IHByZXBhcmVfYWdlbnQgcnNpdGVzIGxzaXRlcyBpblxuICAgICAgICBBc3QuUHJlc2VudCAobG5hLCBsc2l0ZXMnLCBiKSA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgICAgKSBlbHNlXG4gICAgICAgIGxoc1xuICAgICAgKCpUT0RPIHdlIHN0b3Agb3VyIGpvYiBoZXJlLiBMS2FwcGFfY29tcGlsZXIgd2lsbCBkZXRlY3RcbiAgICAgICAgbGF0ZXIgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gKilcbiAgICB8IF8gOjogciwgKEFzdC5BYnNlbnQgXyBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqY3JlYXRlZCBhZ2VudCopXG4gICAgICAoKiBUT0RPIE1heWJlIHNvbWUgc3ludGF4IGNoZWNrIG9uIHJocyBhcmUgbmVjZXNzYXJ5IGhlcmUgKilcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgQXN0LkFic2VudCBfIDo6IHIsIChBc3QuUHJlc2VudCAoXywgbHNpdGVzLCBfKSBhcyBsYWdlbnQpIDo6IGwgLT5cbiAgICAgICgqZGVsZXRlZCAgYWdlbnQqKVxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhID0gMCkpXG4gICAgICAgIFwiIGhhcyBhIG1vZGlmIGluIHRoZSBsaHNcIjtcbiAgICAgIGxhZ2VudCA6OiBwcmVwYXJlX2xoc19ydWxlIHIgbFxuICAgIHwgW10sIHggLT5cbiAgICAgIHhcbiAgICAgICgqIFRPRE8geCBtdXN0IGJlIFtdIGJ1dCBpdCBpcyBmb3Igbm93IExLYXBwYV9jb21waWxlclxuICAgICAgICAgZHV0eSB0byBjb21wbGFpbiAqKVxuICAgIHwgX3gsIFtdIC0+ICgqVE9ETyBsZXQgKCkgPSBhc3NlcnQgKF94ID0gW10pIGluKikgW11cbiAgaW5cblxuICBsZXQgYXV4IChydWxlIDogQXN0LnJ1bGUpIDogQXN0LnJ1bGUgPVxuICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgfCBBc3QuRWRpdCBfIC0+IHJ1bGVcbiAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+XG4gICAgICB7XG4gICAgICAgIHJ1bGUgd2l0aFxuICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICBBc3QuQXJyb3dcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICAgIEFzdC5saHMgPVxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIHByZXBhcmVfbGhzX3J1bGUgKExpc3QuZmxhdHRlbiBjb250ZW50LnJocylcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZmxhdHRlbiBjb250ZW50Lmxocyk7XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH07XG4gICAgICB9XG4gIGluXG4gIExpc3QubWFwIChmdW4gKHMsIChyLCBhKSkgLT4gcywgKGF1eCByLCBhKSkgcnVsZXNcblxubGV0IGNvdW50ZXJzX3NpZ25hdHVyZSBzIGFnZW50cyA9XG4gIG1hdGNoXG4gICAgTGlzdC5maW5kXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgfCBBc3QuUHJlc2VudCAocycsIF8sIF8pIC0+IG5hbWVfbWF0Y2ggcyBzJylcbiAgICAgIGFnZW50c1xuICB3aXRoXG4gIHwgQXN0LkFic2VudCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IEFzdC5QcmVzZW50IChfLCBzaXRlcycsIF8pIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHMgLT5cbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjY1xuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjKVxuICAgICAgW10gc2l0ZXMnXG5cbigqKiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjb3VudGVyX2RlbHRhIGNvdW50ZXJfZGVmXSB0cmFuc2xhdGVzIGEgY291bnRlciBDVkFSIHdob3NlIHZhbHVlIGFjdHMgdXBvbiB0aGUgcmF0ZSBleHByZXNzaW9uIGludG8gYSBydWxlIHBlciBwb3NzaWJsZSB2YWx1ZSwgdGhhdCBhcmUgc2VsZWN0ZWQgYnkgYSBDRVHCoGV4cHJlc3Npb24uXG4gKiAqKVxubGV0IHNwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgKHZhcl9uYW1lIDogc3RyaW5nKSAoYW5ub3QgOiBMb2MudClcbiAgICAoY291bnRlcl9kZWx0YSA6IGludCBMb2MuYW5ub3RlZCkgKGNvdW50ZXJfZGVmIDogQXN0LmNvdW50ZXIpIDpcbiAgICAoQXN0LnNpdGUgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID1cbiAgbGV0IG1heF92YWx1ZSA6IGludCA9IExvYy52IGNvdW50ZXJfZGVmLmNvdW50ZXJfZGVsdGEgaW5cbiAgbGV0IG1pbl92YWx1ZSA6IGludCA9XG4gICAgbWF0Y2ggY291bnRlcl9kZWYuY291bnRlcl90ZXN0IHdpdGhcbiAgICB8IE5vbmUgfCBTb21lIChBc3QuQ0dURSBfLCBfKSB8IFNvbWUgKEFzdC5DTFRFIF8sIF8pIHwgU29tZSAoQXN0LkNWQVIgXywgXylcbiAgICAgIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoIFwiSW52YWxpZCBjb3VudGVyIHNpZ25hdHVyZSAtIGhhdmUgdG8gc3BlY2lmeSBtaW4gYm91bmRcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfZGVmLmNvdW50ZXJfbmFtZSApKVxuICAgIHwgU29tZSAoQXN0LkNFUSBtaW5fdmFsdWUsIF8pIC0+IG1pbl92YWx1ZVxuICBpblxuXG4gICgqIE1ha2UgQ0VRIGNvdW50ZXJzIHdpdGggYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiB2YXJpYWJsZSAqKVxuICBsZXQgcmVjIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyAodmFsdWUgOiBpbnQpIDpcbiAgICAgIChBc3Quc2l0ZSAqIChzdHJpbmcgKiBpbnQpIGxpc3QpIGxpc3QgPVxuICAgIGlmIHZhbHVlID4gbWF4X3ZhbHVlIHRoZW5cbiAgICAgIFtdXG4gICAgZWxzZSBpZlxuICAgICAgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhIDw9IG1heF92YWx1ZVxuICAgICAgJiYgdmFsdWUgKyBMb2MudiBjb3VudGVyX2RlbHRhID49IDBcbiAgICB0aGVuXG4gICAgICAoIEFzdC5Db3VudGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGNvdW50ZXJfZGVmLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgIGNvdW50ZXJfdGVzdCA9IFNvbWUgKEFzdC5DRVEgdmFsdWUsIGFubm90KTtcbiAgICAgICAgICAgIGNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgfSxcbiAgICAgICAgWyB2YXJfbmFtZSwgdmFsdWUgXSApXG4gICAgICA6OiBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgICBlbHNlXG4gICAgICBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlICsgMSlcbiAgaW5cbiAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzIG1pbl92YWx1ZVxuXG5sZXQgaGFzX2NvdW50ZXJzIGNvbXBpbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEFzdC5BYnNlbnQgXyAtPiBmYWxzZVxuICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHNpdGVzKVxuICAgIGNvbXBpbC5Bc3Quc2lnbmF0dXJlc1xuXG4oKiogW3NwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXNdIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXNdIHJlcGxhY2VzIGNvdW50ZXJzIHdpdGggQ1ZBUiBjb250cmFpbnRzIHdpdGggY291bnRlcnMgd2l0aCBDRVEgY29udHJhaW50cyBpbiBbcnVsZXNdLCBpbiBsaXN0cyB3aXRoIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYXNzb2NpYXRlZCwgc28gdGhhdCBpbiBzaW11bGF0aW9uLCBjb3JyZWN0IGNvdW50ZXIgY29uZGl0aW9ucyBhcmUgYmVpbmcgc2VsZWN0ZWQuIFRoZSBtYWluIG9wZXJhdGlvbiBoYXBwZW5zIGluIFtzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlXSAqKVxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgcnVsZXMgc2lnbmF0dXJlcyA9XG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgPSBmdW5jdGlvblxuICAgIHwgQXN0LlBvcnQgcCAtPiBbIEFzdC5Qb3J0IHAsIFtdIF1cbiAgICB8IEFzdC5Db3VudGVyIGMgLT5cbiAgICAgIGxldCBkZWx0YSA9IExvYy52IGMuY291bnRlcl9kZWx0YSBpblxuICAgICAgKG1hdGNoIGMuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgIHwgU29tZSAoQXN0LkNFUSB2YWx1ZSwgXykgLT5cbiAgICAgICAgaWYgZGVsdGEgPiAwIHx8IGFicyBkZWx0YSA8PSB2YWx1ZSB0aGVuXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjLCBbXSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIiBiZWNvbWVzIG5lZ2F0aXZlXCIsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSlcbiAgICAgIHwgU29tZSAoQXN0LkNMVEUgX3ZhbHVlLCBfYW5ub3QpIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibm90IGltcGxlbWVudGVkXCIgKCogVE9ET8KgTk9XICopXG4gICAgICB8IFNvbWUgKEFzdC5DR1RFIHZhbHVlLCBhbm5vdCkgLT5cbiAgICAgICAgaWYgdmFsdWUgKyBkZWx0YSA8IDAgdGhlblxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiIGJlY29tZXMgbmVnYXRpdmVcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLmNvdW50ZXJfbmFtZSApKTtcbiAgICAgICAgaWYgdmFsdWUgPSAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciA9IFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCI6PjAgYWx3YXlzIGhvbGRzXCIgaW5cbiAgICAgICAgICB3YXJuaW5nIH5wb3M6YW5ub3QgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBlcnJvcilcbiAgICAgICAgKTtcbiAgICAgICAgWyBBc3QuQ291bnRlciBjLCBbXSBdXG4gICAgICB8IFNvbWUgKEFzdC5DVkFSIHZhcl9uYW1lLCBhbm5vdCkgd2hlbiBNb2RzLlN0cmluZ1NldC5tZW0gdmFyX25hbWUgaWRzIC0+XG4gICAgICAgICgqIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50IGluIGFuIHJhdGUgZGVmaW5pdGlvbiBleHByZXNzaW9uICopXG4gICAgICAgIGxldCBjb3VudGVyX2RlZiA6IEFzdC5jb3VudGVyID1cbiAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgIChmdW4gY291bnRlciAtPlxuICAgICAgICAgICAgICBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpXG4gICAgICAgICAgICBjb3VudGVyX2RlZnNcbiAgICAgICAgaW5cblxuICAgICAgICBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlIHZhcl9uYW1lIGFubm90IGMuY291bnRlcl9kZWx0YVxuICAgICAgICAgIGNvdW50ZXJfZGVmXG4gICAgICB8IE5vbmUgfCBTb21lIChBc3QuQ1ZBUiBfLCBfKSAtPlxuICAgICAgICBpZiBkZWx0YSA8IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGNvdW50ZXJfZGVsdGEgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAoYWJzIGRlbHRhKSwgTG9jLmR1bW15KSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGNvdW50ZXJfZGVsdGEsIFtdIF1cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBBc3QuQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0dURSAwLCBMb2MuZHVtbXkpIH0sXG4gICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgXSlcbiAgaW5cblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KVxuICAgICAgKGNvdW50ZXJfZGVmcyA6IEFzdC5jb3VudGVyIGxpc3QpIDpcbiAgICAgIEFzdC5zaXRlIGxpc3QgLT4gKEFzdC5zaXRlIGxpc3QgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtbXSxbXV1cbiAgICB8IHMgOjogdCAtPlxuICAgICAgY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cFxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyB0KVxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzIHMpXG4gIGluXG4gIGxldCBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9hZ2VudCAoaWRzIDogTW9kcy5TdHJpbmdTZXQudCkgOlxuICAgICAgQXN0LmFnZW50IC0+IChBc3QuYWdlbnQgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IEFzdC5BYnNlbnQgbCAtPiBbIEFzdC5BYnNlbnQgbCwgW10gXVxuICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgIGxldCBjb3VudGVyX2RlZnMgPSBjb3VudGVyc19zaWduYXR1cmUgYWdlbnRfbmFtZSBzaWduYXR1cmVzIGluXG4gICAgICBsZXQgc2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVzID1cbiAgICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZXMgaWRzIGNvdW50ZXJfZGVmcyBzaXRlc1xuICAgICAgaW5cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHNpdGVzJywgdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMnLCBtb2RpZiksIHZhcl92YWx1ZXMpXG4gICAgICAgIHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlc1xuICBpblxuICBsZXQgcmVjIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCBsaXN0IC0+IChBc3QuYWdlbnQgbGlzdCAqIChzdHJpbmcgKiBpbnQpIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW1tdLFtdXVxuICAgIHwgYXN0X2FnZW50IDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIHQpXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9hZ2VudCBpZHMgYXN0X2FnZW50KVxuICBpblxuXG4gIGxldCB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSByIC0+IFNvbWUgKHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByKVxuICBpblxuICBsZXQgdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChyMSwgcjIpIC0+XG4gICAgICBTb21lXG4gICAgICAgICggdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIxLFxuICAgICAgICAgIHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjIgKVxuICBpblxuXG4gICgqIFRPRE8gW3NwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGVdIHJ1bGUgZXZhbHVlcyB0byBhIGxpc3Qgb2YgcnVsZXMgd2l0aCB0aGVpciBuYW1lcyAqKVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZVxuICAgICAgKHJ1bGVfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgICAoKHJ1bGUsIGFubm90KSA6IEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6XG4gICAgICAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSBsaXN0ID1cbiAgICBsZXQgbWl4X2xocyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBjb250ZW50IC0+IGNvbnRlbnQubWl4XG4gICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IGNvbnRlbnQubGhzXG4gICAgaW5cblxuICAgICgqIEZldGNoIGlkcyBmcm9tIHJ1bGUgcmF0ZXMgKilcbiAgICBsZXQgZXhwcnNfZnJvbV9yYXRlcyA6XG4gICAgICAgIChBc3QubWl4dHVyZSwgc3RyaW5nKSBLYXBwYV90ZXJtcy5BbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbiBsaXN0ID1cbiAgICAgIFsgU29tZSBydWxlLmtfZGVmOyBydWxlLmtfb3AgXVxuICAgICAgQCAobWF0Y2ggcnVsZS5rX3VuIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSByX2t1bl9yYXRlcyAtPiBbIFNvbWUgKGZzdCByX2t1bl9yYXRlcyk7IHNuZCByX2t1bl9yYXRlcyBdKVxuICAgICAgQFxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHJfa19vcF91bl9yYXRlcyAtPlxuICAgICAgICBbIFNvbWUgKGZzdCByX2tfb3BfdW5fcmF0ZXMpOyBzbmQgcl9rX29wX3VuX3JhdGVzIF1cbiAgICBpblxuICAgIGxldCBpZHMgPSBjb2xsZWN0X2lkcyBleHByc19mcm9tX3JhdGVzIGluXG5cbiAgICBsZXQgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZSA6XG4gICAgICAgIChBc3QuYWdlbnQgbGlzdCAqIChzdHJpbmcgKiBpbnQpIGxpc3QpIGxpc3QgPVxuICAgICAgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfbWl4dHVyZSBpZHMgKExpc3QuZmxhdHRlbiBtaXhfbGhzKVxuICAgIGluXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKGxocywgY291bnRlcl92YXJfdmFsdWVzKSAtPlxuICAgICAgICAoKiBBcHBseSBjb3VudGVyIHZhciB2YWx1ZXMgdG8gcmF0ZXMgKilcbiAgICAgICAgbGV0IGtfZGVmID0gdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19kZWYgaW5cbiAgICAgICAgbGV0IGtfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfdW4gaW5cbiAgICAgICAgbGV0IGtfb3AgPSB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19vcCBpblxuICAgICAgICBsZXQga19vcF91biA9IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua19vcF91biBpblxuICAgICAgICBsZXQgbGhzID0gWyBsaHMgXSBpblxuICAgICAgICBsZXQgbmV3X3J1bGVfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gPVxuICAgICAgICAgIGlmIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IFtdIHRoZW5cbiAgICAgICAgICAgIHJ1bGVfbmFtZVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogQnVpbGQgY291bnRlcnNfaWRzX2FzX3N0cmluZywgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgbmV3IHJ1bGUgbmFtZXMgKilcbiAgICAgICAgICAgIGxldCBjb3VudGVyc19pZHNfYXNfc3RyaW5nID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoKiBUT0RPIHNob3VsZCB3ZSBhZGQgYSBzZXBhcmF0b3IuIG1heWJlIGFsc28gYWRkIG5hbWUgb2YgdmFyaWFibGU/ICopXG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyAoXywgaSkgLT4gc3RyaW5nX29mX2ludCBpIF4gYWNjKVxuICAgICAgICAgICAgICAgIFwiXCIgY291bnRlcl92YXJfdmFsdWVzXG4gICAgICAgICAgICBpblxuXG4gICAgICAgICAgICBtYXRjaCBydWxlX25hbWUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUgKCogTm8gcnVsZSBuYW1lLCBuZXcgcnVsZXMgd2lsbCBoYXZlIG5vIG5hbWUgdG9vICopXG4gICAgICAgICAgICB8IFNvbWUgKHJ1bGVfbmFtZV9zdHJpbmcsIGxvY2FsaXR5KSAtPlxuICAgICAgICAgICAgICAoKiBNYWtlIGEgbmV3IG5hbWUgZm9yIG5ldyBydWxlIGluY2x1ZGluZyBjb3VudGVyX3Zhcl92YWx1ZXMgaW5mbyAqKVxuICAgICAgICAgICAgICBTb21lIChydWxlX25hbWVfc3RyaW5nIF4gXCJfX1wiIF4gY291bnRlcnNfaWRzX2FzX3N0cmluZywgbG9jYWxpdHkpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuXG4gICAgICAgICggbmV3X3J1bGVfbmFtZSxcbiAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgQXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBBc3QuRWRpdCB7IGNvbnRlbnQgd2l0aCBBc3QubWl4ID0gbGhzIH1cbiAgICAgICAgICAgICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IEFzdC5BcnJvdyB7IGNvbnRlbnQgd2l0aCBBc3QubGhzIH0pO1xuICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgICAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICAgICAga191bjtcbiAgICAgICAgICAgICAga19vcDtcbiAgICAgICAgICAgICAga19vcF91bjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbm5vdCApICkpXG4gICAgICBtaXh0dXJlX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlXG4gIGluXG5cbiAgbGV0IHJ1bGVzID0gcHJlcGFyZV9jb3VudGVycyBydWxlcyBpblxuXG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgKHJ1bGVfbmFtZSwgcnVsZV9hbm5vdGVkKSAtPlxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZSBydWxlX25hbWUgcnVsZV9hbm5vdGVkKVxuIEAgYWNjKVxuICAgIFtdIHJ1bGVzXG4gICgqIFRPRE86IGlzIHJldiByZWxldmFudCBoZXJlPyAqKVxuICB8PiBMaXN0LnJldlxuXG5sZXQgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgIChjb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIGNvbXBpbC5ydWxlc1xuICAgICAgY29tcGlsLnNpZ25hdHVyZXNcbiAgaW5cbiAgKCogRGVidWcgcHJpbnRpbmcgKilcbiAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiQC5hc3QgcnVsZXNALlwiO1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAocywgKHIsIF8pKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPVxuICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBsXG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJALiVzID0gJWFcIiBsYWJlbCBBc3QucHJpbnRfYXN0X3J1bGUgcilcbiAgICAgIHJ1bGVzXG4gICk7XG4gIHsgY29tcGlsIHdpdGggQXN0LnJ1bGVzIH1cblxubGV0IG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgKGRzdCwgcmFfZXJhc2VkKSkgKGlzX2xhc3QsIGVxdWFsKSBpIGpcbiAgICBsb2MgKGNyZWF0ZWQgOiBib29sKSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCByYV90eXBlID0gY291bnRlcl9hZ2VudF9pbmZvLmlkIGluXG5cbiAgbGV0IHJhX3BvcnRzID1cbiAgICBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eVxuICAgICAgKChMS2FwcGEuTE5LX0ZSRUUsIGxvYyksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgYmVmb3JlX3N3aXRjaCA9XG4gICAgaWYgaXNfZmlyc3QgJiYgY3JlYXRlZCB0aGVuXG4gICAgICBMS2FwcGEuTGlua2VkIGlcbiAgICBlbHNlXG4gICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpc19maXJzdCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX1ZBTFVFIChpLCBkc3QpLCBsb2NcbiAgICBlbHNlXG4gICAgICBMS2FwcGEuTE5LX1ZBTFVFIChpLCAocmFfdHlwZSwgcG9ydF9hKSksIGxvY1xuICBpblxuICBsZXQgKCkgPSByYV9wb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUsIGJlZm9yZV9zd2l0Y2ggaW5cbiAgbGV0IGFmdGVyID1cbiAgICBpZiBpc19sYXN0ICYmIGVxdWFsIHRoZW5cbiAgICAgIExLYXBwYS5MTktfRlJFRSwgbG9jXG4gICAgZWxzZSBpZiBpc19sYXN0IHRoZW5cbiAgICAgIExLYXBwYS5MTktfQU5ZLCBsb2NcbiAgICBlbHNlXG4gICAgICBMS2FwcGEuTE5LX1ZBTFVFIChqLCAocmFfdHlwZSwgcG9ydF9iKSksIGxvY1xuICBpblxuICBsZXQgKCkgPSByYV9wb3J0cy4ocG9ydF9hKSA8LSBhZnRlciwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAge1xuICAgIExLYXBwYS5yYV90eXBlO1xuICAgIHJhX2VyYXNlZDtcbiAgICByYV9wb3J0cztcbiAgICByYV9pbnRzO1xuICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcmFfcG9ydHMsIEFycmF5LmNvcHkgcmFfaW50cyk7XG4gIH1cblxubGV0IHJhd19jb3VudGVyX2FnZW50IChpc19maXJzdCwgZmlyc3RfbGluaykgKGlzX2xhc3QsIGxhc3RfbGluaykgaSBqIHNpZ3MgZXF1YWxcbiAgICA6IFJhd19taXh0dXJlLmFnZW50ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCBwb3J0cyA9IEFycmF5Lm1ha2UgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IFJhd19taXh0dXJlLkZSRUUgaW5cbiAgbGV0IGludGVybmFscyA9XG4gICAgQXJyYXkuaW5pdCBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgKGZ1biBpIC0+XG4gICAgICAgIFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBpIHNpZ3MpXG4gIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIFJhd19taXh0dXJlLlZBTCBmaXJzdF9saW5rXG4gICAgZWxzZVxuICAgICAgUmF3X21peHR1cmUuVkFMIGlcbiAgaW5cbiAgbGV0ICgpID0gcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlIGluXG4gIGxldCBhZnRlciA9XG4gICAgaWYgaXNfbGFzdCAmJiBlcXVhbCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5GUkVFXG4gICAgZWxzZSBpZiBpc19sYXN0IHRoZW5cbiAgICAgIFJhd19taXh0dXJlLlZBTCBsYXN0X2xpbmtcbiAgICBlbHNlXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgalxuICBpblxuICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9hKSA8LSBhZnRlciBpblxuICB7XG4gICAgUmF3X21peHR1cmUuYV90eXBlID0gY291bnRlcl9hZ2VudF9pbmZvLmlkO1xuICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gIH1cblxubGV0IHJlYyBhZGRfaW5jciAoaSA6IGludCkgKGZpcnN0X2xpbmsgOiBpbnQpIChsYXN0X2xpbmsgOiBpbnQpIChkZWx0YSA6IGludClcbiAgICAoZXF1YWwgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSA6IFJhd19taXh0dXJlLmFnZW50IGxpc3QgPVxuICBpZiBpID0gZGVsdGEgdGhlblxuICAgIFtdXG4gIGVsc2UgKFxuICAgIGxldCBpc19maXJzdCA9IGkgPSAwIGluXG4gICAgbGV0IGlzX2xhc3QgPSBpID0gZGVsdGEgLSAxIGluXG4gICAgbGV0IHJhd19pbmNyID1cbiAgICAgIHJhd19jb3VudGVyX2FnZW50IChpc19maXJzdCwgZmlyc3RfbGluaykgKGlzX2xhc3QsIGxhc3RfbGluaylcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpKVxuICAgICAgICAoZmlyc3RfbGluayArIGkgKyAxKVxuICAgICAgICBzaWdzIGVxdWFsXG4gICAgaW5cbiAgICByYXdfaW5jciA6OiBhZGRfaW5jciAoaSArIDEpIGZpcnN0X2xpbmsgbGFzdF9saW5rIGRlbHRhIGVxdWFsIHNpZ3NcbiAgKVxuXG5sZXQgcmVjIGxpbmtfaW5jciAoc2lncyA6IFNpZ25hdHVyZS5zKSAoaSA6IGludCkgKG5iIDogaW50KVxuICAgIChhZ19pbmZvIDogKGludCAqIGludCkgKiBib29sKSAoZXF1YWwgOiBib29sKSAobGluayA6IGludCkgKGxvYyA6IExvYy50KVxuICAgIChkZWx0YSA6IGludCkgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgaWYgaSA9IG5iIHRoZW5cbiAgICBbXVxuICBlbHNlIChcbiAgICBsZXQgaXNfZmlyc3QgPSBpID0gMCBpblxuICAgIGxldCBpc19sYXN0ID0gaSA9IG5iIC0gMSBpblxuICAgIGxldCByYV9hZ2VudCA9XG4gICAgICBtYWtlX2NvdW50ZXJfYWdlbnQgc2lncyAoaXNfZmlyc3QsIGFnX2luZm8pIChpc19sYXN0LCBlcXVhbCkgKGxpbmsgKyBpKVxuICAgICAgICAobGluayArIGkgKyAxKVxuICAgICAgICBsb2MgKGRlbHRhID4gMClcbiAgICBpblxuICAgIHJhX2FnZW50IDo6IGxpbmtfaW5jciBzaWdzIChpICsgMSkgbmIgYWdfaW5mbyBlcXVhbCBsaW5rIGxvYyBkZWx0YVxuICApXG5cbmxldCByZWMgZXJhc2VfaW5jciAoc2lncyA6IFNpZ25hdHVyZS5zKSAoaSA6IGludCkgKGluY3JzIDogTEthcHBhLnJ1bGVfbWl4dHVyZSlcbiAgICAoZGVsdGEgOiBpbnQpIChsaW5rIDogaW50KSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBtYXRjaCBpbmNycyB3aXRoXG4gIHwgaW5jciA6OiBpbmNyX3MgLT5cbiAgICBpZiBpID0gYWJzIGRlbHRhIHRoZW4gKFxuICAgICAgbGV0IGJlZm9yZSwgXyA9IGluY3IuTEthcHBhLnJhX3BvcnRzLihwb3J0X2IpIGluXG4gICAgICBpbmNyLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUsIExLYXBwYS5MaW5rZWQgbGluaztcbiAgICAgIGluY3IgOjogaW5jcl9zXG4gICAgKSBlbHNlIChcbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAoYSwgXykgLT4gaW5jci5MS2FwcGEucmFfcG9ydHMuKGkpIDwtIGEsIExLYXBwYS5FcmFzZWQpXG4gICAgICAgIGluY3IuTEthcHBhLnJhX3BvcnRzO1xuICAgICAgbGV0IHJ1bGVfYWdlbnQgPSB7IGluY3Igd2l0aCBMS2FwcGEucmFfZXJhc2VkID0gdHJ1ZSB9IGluXG4gICAgICBydWxlX2FnZW50IDo6IGVyYXNlX2luY3Igc2lncyAoaSArIDEpIGluY3JfcyBkZWx0YSBsaW5rXG4gICAgKVxuICB8IFtdIC0+IFtdXG5cbigqKiBSZXR1cm5zIG1peHR1cmVzIGZvciBhZ2VudCB3aXRoIHNpdGUgY2hhbmdlZCBmcm9tIGNvdW50ZXIgdG8gcG9ydCwgYXMgd2VsbCBhcyBuZXcgW2xpbmtfbmJdIGFmdGVyIHByZXZpb3VzIGFkZGl0aW9uc1xuICogVXNlZCBieSBbY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnRdKilcbmxldCBjb3VudGVyX2JlY29tZXNfcG9ydCAoc2lncyA6IFNpZ25hdHVyZS5zKSAocmEgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAocF9pZCA6IGludCkgKGNvdW50ZXIgOiBBc3QuY291bnRlcikgKHN0YXJ0X2xpbmtfbmIgOiBpbnQpIDpcbiAgICAoTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQpICogaW50ID1cbiAgKCogUmV0dXJucyBwb3NpdGl2ZSBwYXJ0IG9mIHZhbHVlICopXG4gIGxldCBwb3NpdGl2ZV9wYXJ0IChpIDogaW50KSA6IGludCA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGlcbiAgaW5cblxuICBsZXQgbG9jIDogTG9jLnQgPSBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZSBpblxuICBsZXQgKGRlbHRhLCBsb2NfZGVsdGEpIDogaW50ICogTG9jLnQgPSBjb3VudGVyLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gIGxldCBjb3VudGVyX3Rlc3QgOiBBc3QuY291bnRlcl90ZXN0IExvYy5hbm5vdGVkID1cbiAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgIH5leGNlcDpcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCJcbiAgICAgICAgICAgICBeIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgIF4gXCIgc2hvdWxkIGhhdmUgYSB0ZXN0IGJ5IG5vd1wiLFxuICAgICAgICAgICAgIGxvYyApKVxuICAgICAgY291bnRlci5Bc3QuY291bnRlcl90ZXN0XG4gIGluXG4gIGxldCAodGVzdCwgZXF1YWwpIDogaW50ICogYm9vbCA9XG4gICAgbWF0Y2ggTG9jLnYgY291bnRlcl90ZXN0IHdpdGhcbiAgICB8IEFzdC5DVkFSIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiXG4gICAgICAgICAgICAgXiBMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICBeIFwiIGRlZmluZXMgYSB2YXJpYWJsZSwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiByZXBsYWNlZCBieSBDRVEgXFxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zIGFmdGVyIHJ1bGUgc3BsaXR0aW5nXCIsXG4gICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX3Rlc3QgKSlcbiAgICB8IEFzdC5DRVEgaiAtPiBqLCB0cnVlXG4gICAgfCBBc3QuQ0dURSBqIC0+IGosIGZhbHNlXG4gICAgfCBBc3QuQ0xURSBfaiAtPiBmYWlsd2l0aCBcIm5vdCBpbXBsZW1lbnRlZFwiICgqIFRPRE/CoG5vdyAqKVxuICBpblxuICBsZXQgc3RhcnRfbGlua19mb3JfY3JlYXRlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyB0ZXN0ICsgMSBpblxuICBsZXQgbGlua19mb3JfZXJhc2VkIDogaW50ID0gc3RhcnRfbGlua19uYiArIGFicyBkZWx0YSBpblxuICBsZXQgYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCA9XG4gICAgKHBfaWQsIHJhLkxLYXBwYS5yYV90eXBlKSwgcmEuTEthcHBhLnJhX2VyYXNlZFxuICBpblxuXG4gIGxldCB0ZXN0X2luY3IgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICBsaW5rX2luY3Igc2lncyAwICh0ZXN0ICsgMSkgYWdfaW5mbyBlcXVhbCBzdGFydF9saW5rX25iIGxvYyBkZWx0YVxuICBpblxuICBsZXQgYWRqdXN0X2RlbHRhIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgaWYgZGVsdGEgPCAwIHRoZW5cbiAgICAgIGVyYXNlX2luY3Igc2lncyAwIHRlc3RfaW5jciBkZWx0YSBsaW5rX2Zvcl9lcmFzZWRcbiAgICBlbHNlXG4gICAgICB0ZXN0X2luY3JcbiAgaW5cbiAgbGV0IGNyZWF0ZWQgOiBSYXdfbWl4dHVyZS50ID1cbiAgICBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgYWRkX2luY3IgMCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkIHN0YXJ0X2xpbmtfbmIgZGVsdGEgZmFsc2Ugc2lnc1xuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG5cbiAgaWYgdGVzdCArIGRlbHRhIDwgMCB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVyIHRlc3Qgc2hvdWxkIGJlIGdyZWF0ZXIgdGhlbiBhYnMoZGVsdGEpXCIsIGxvY19kZWx0YSkpO1xuXG4gIGxldCBzd2l0Y2ggOiBMS2FwcGEuc3dpdGNoaW5nID1cbiAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICBlbHNlIGlmIGRlbHRhID4gMCB0aGVuXG4gICAgICBMS2FwcGEuTGlua2VkIHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWRcbiAgICBlbHNlXG4gICAgICBMS2FwcGEuTGlua2VkIGxpbmtfZm9yX2VyYXNlZFxuICBpblxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iIDogaW50ID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICByYS5MS2FwcGEucmFfcG9ydHMuKHBfaWQpIDwtXG4gICAgKCAoTEthcHBhLkxOS19WQUxVRSAoc3RhcnRfbGlua19uYiwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyksXG4gICAgICBzd2l0Y2ggKTtcbiAgbGV0IG5ld19saW5rX25iIDogaW50ID0gc3RhcnRfbGlua19uYiArIDEgKyB0ZXN0ICsgcG9zaXRpdmVfcGFydCBkZWx0YSBpblxuXG4gIChhZGp1c3RfZGVsdGEsIGNyZWF0ZWQpLCBuZXdfbGlua19uYlxuXG4oKiogQ29tcGlsZXMgdGhlIGNvdW50ZXIgcHJlY29uZGl0aW9uIGluIGEgbGVmdCBoYW5kIHNpZGUgbWl4dHVyZSBvZiBhIHJ1bGUgaW50byBhIG1peHR1cmUgd2hpY2ggdGVzdHMgZHVtbXkgcG9zaXRpb25zXG4gKiBydWxlX2FnZW50XyAtIGFnZW50IHdpdGggY291bnRlcnMgaW4gYSBydWxlXG4gICBsbmtfbmIgLSB0aGUgbWF4IGxpbmsgbnVtYmVyIHVzZWQgaW4gdGhlIHJ1bGU7XG4gICBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyAtIGluZm8gb24gdGhlIGNvdW50ZXIgYWdlbnRcbiAgIHJldHVybnM6IGFnZW50IHdpdGggZXhwbGljaXQgY291bnRlcnM7IGNyZWF0ZWQgaW5jciBhZ2VudHM7XG4gICAgICAgICAgICB0aGUgbmV4dCBsaW5rIG51bWJlciB0byB1c2UgKilcbmxldCBjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChydWxlX2FnZW50XyA6IExLYXBwYS5ydWxlX2FnZW50IHdpdGhfYWdlbnRfY291bnRlcnMpIChsbmtfbmIgOiBpbnQpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCAqIGludCA9XG4gIGxldCAoaW5jcnMsIGxua19uYicpIDogKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSBsaXN0ICogaW50ID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGlkIChhY2NfaW5jcnMsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGFjY19pbmNycywgbG5rX25iXG4gICAgICAgIHwgU29tZSAoY291bnRlciwgXykgLT5cbiAgICAgICAgICBsZXQgbmV3X2luY3JzLCBuZXdfbG5rX25iID1cbiAgICAgICAgICAgIGNvdW50ZXJfYmVjb21lc19wb3J0IHNpZ3MgcnVsZV9hZ2VudF8uYWdlbnQgaWQgY291bnRlciBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19pbmNycyA6OiBhY2NfaW5jcnMsIG5ld19sbmtfbmJcbiAgICAgICAgKCogSkY6IGxpbmsgaWRzIHdlcmUgY29sbGlkaW5nIGFmdGVyIGNvdW50ZXIgZGVjcmVtZW50YXRpb25zIC0+IEkgZG8gbm90IHRoaW5rIHRoYXQgd2Ugc2hvdWxkIGFkZCBkZWx0YSB3aGVuIG5lZ2F0aXZlICopKVxuICAgICAgKFtdLCBsbmtfbmIpIHJ1bGVfYWdlbnRfLmNvdW50ZXJzXG4gIGluXG4gIGxldCAoYWxzLCBibHMpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gKGFscywgYmxzKSAoYSwgYikgLT4gYSBAIGFscywgYiBAIGJscykgKFtdLCBbXSkgaW5jcnNcbiAgaW5cbiAgYWxzLCBibHMsIGxua19uYidcblxuKCoqIENvbXBpbGVzIHRoZSBjb3VudGVyIHZhbHVlIGNoYW5nZSBpbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIGEgcnVsZSBpbnRvIGR1bW15IGNoYWluIGNoYW5nZXMgKilcbmxldCBjb21waWxlX2NvdW50ZXJfaW5fcmF3X2FnZW50IChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKHJhd19hZ2VudF8gOiBSYXdfbWl4dHVyZS5hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgbGlzdCAqIGludCA9XG4gIGxldCByYXdfYWdlbnQgOiBSYXdfbWl4dHVyZS5hZ2VudCA9IHJhd19hZ2VudF8uYWdlbnQgaW5cbiAgbGV0IHBvcnRzIDogUmF3X21peHR1cmUubGluayBhcnJheSA9IHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3BvcnRzIGluXG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHBfaWQgKGFjYywgbG5rX25iKSAtPiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFjYywgbG5rX25iXG4gICAgICB8IFNvbWUgKGMsIF8pIC0+XG4gICAgICAgIChtYXRjaCBjLkFzdC5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgIHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3R5cGVcbiAgICAgICAgICBpblxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiY291bnRlclwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICB8IFNvbWUgKHRlc3QsIF8pIC0+XG4gICAgICAgICAgKG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgQXN0LkNHVEUgXyB8IEFzdC5DTFRFIF8gfCBBc3QuQ1ZBUiBfIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgIHJhd19hZ2VudC5SYXdfbWl4dHVyZS5hX3R5cGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImNvdW50ZXJcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgICBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgIHwgQXN0LkNFUSBqIC0+XG4gICAgICAgICAgICBsZXQgcCA9IFJhd19taXh0dXJlLlZBTCBsbmtfbmIgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBwIGluXG4gICAgICAgICAgICBsZXQgaW5jcnMgPSBhZGRfaW5jciAwIGxua19uYiAobG5rX25iICsgaikgKGogKyAxKSB0cnVlIHNpZ3MgaW5cbiAgICAgICAgICAgIGFjYyBAIGluY3JzLCBsbmtfbmIgKyBqICsgMSkpKVxuICAgIChbXSwgbG5rX25iKSByYXdfYWdlbnRfLmNvdW50ZXJzXG5cbmxldCByYXdfYWdlbnRfaGFzX2NvdW50ZXJzIChhZ18gOiAnYSB3aXRoX2FnZW50X2NvdW50ZXJzKSA6IGJvb2wgPVxuICBBcnJheS5mb2xkX2xlZnQgKGZ1biBvayB4IC0+IHggPD4gTm9uZSB8fCBvaykgZmFsc2UgYWdfLmNvdW50ZXJzXG5cbmxldCBydWxlX2FnZW50X2hhc19jb3VudGVycyAocnVsZV9hZ2VudCA6IExLYXBwYS5ydWxlX2FnZW50KVxuICAgIChzaWdzIDogU2lnbmF0dXJlLnMpIDogYm9vbCA9XG4gIFNpZ25hdHVyZS5oYXNfY291bnRlciAoU2lnbmF0dXJlLmdldCBzaWdzIHJ1bGVfYWdlbnQucmFfdHlwZSlcblxuKCoqIFtjb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIG1peCBjcmVhdGVkXSB0YWtlcyB0aGUgaW50aWFsIG1peHR1cmUgZnJvbSBhIHJ1bGUgW21peF0sXG4gKiBhbmQgdGhlIG1peHR1cmUgb2J0YWluZWQgZnJvbSB0aGUgYXBwbGljYXRpb24gb2YgdGhlIHJ1bGUgW2NyZWF0ZWRdLFxuICogYm90aCB3aXRoIGNvdW50ZXIgaW5mb3JtYXRpb24sIGFuZCByZXR1cm5zIHR3byBtaXh0dXJlcyBmb3IgYSBuZXcgcnVsZSB3aXRob3V0IGNvdW50ZXJzLCBoYXZpbmcgY29tcGlsZWQgdGhlIGNvdW50ZXIgbG9naWMgaW5zaWRlIHRoZSBydWxlLlxuICpcbiAqIC0gYWRkcyBpbmNyZW1lbnQgYWdlbnRzIHRvIHRoZSBydWxlX2FnZW50IG1peHR1cmVcbiAgIC0gYWRkcyBpbmNyZW1lbnQgYWdlbnRzIHRvIHRoZSByYXcgbWl4dHVyZVxuICAgLSBsaW5rcyB0aGUgYWdlbnRzIGluIHRoZSBtaXh0dXJlKGxocyxyaHMsbWl4KSBvciBpbiB0aGUgcmF3IG1peHR1cmUoY3JlYXRlZClcbiAgICAgdG8gdGhlIGluY3JlbWVudHMgKilcbmxldCBjb21waWxlX2NvdW50ZXJfaW5fcnVsZSAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChtaXggOiBydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycylcbiAgICAoY3JlYXRlZCA6IHJhd19taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gIGxldCBoYXNfY291bnRlcnMgOiBib29sID1cbiAgICBMaXN0LmV4aXN0c1xuICAgICAgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50X2hhc19jb3VudGVycyBydWxlX2FnZW50Xy5hZ2VudCBzaWdzKVxuICAgICAgbWl4XG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF9oYXNfY291bnRlcnMgcmF3X2FnZW50XykgY3JlYXRlZFxuICBpblxuICBpZiBoYXNfY291bnRlcnMgdGhlbiAoXG4gICAgbGV0IGxua19uYiA6IGludCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtIDogaW50KSBydWxlX2FnZW50XyAtPlxuICAgICAgICAgIG1heCBtIChMS2FwcGEubWF4X2xpbmtfaWQgWyBydWxlX2FnZW50Xy5hZ2VudCBdKSlcbiAgICAgICAgMCBtaXhcbiAgICBpblxuXG4gICAgbGV0IChpbmNycywgaW5jcnNfY3JlYXRlZCwgbG5rX25iJykgOlxuICAgICAgICBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCAqIGludCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtaXhfaW5jciwgY3JlYXRlZF9pbmNyLCBsbmtfbmIpIHJ1bGVfYWdlbnRfIC0+XG4gICAgICAgICAgbGV0IG1peF9pbmNyX25ldywgY3JlYXRlZF9pbmNyX25ldywgbG5rX25iJyA9XG4gICAgICAgICAgICBjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudCBzaWdzIHJ1bGVfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgbWl4X2luY3JfbmV3IEAgbWl4X2luY3IsIGNyZWF0ZWRfaW5jcl9uZXcgQCBjcmVhdGVkX2luY3IsIGxua19uYicgKyAxKVxuICAgICAgICAoW10sIFtdLCBsbmtfbmIgKyAxKVxuICAgICAgICBtaXhcbiAgICBpblxuICAgIGxldCBpbmNyc19jcmVhdGVkJyA6IFJhd19taXh0dXJlLnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoY3JlYXRlZF9pbmNyLCBsbmtfbmIpIHJhd19hZ2VudF8gLT5cbiAgICAgICAgICBsZXQgY3JlYXRlZF9pbmNyX25ldywgbG5rX25iJycgPVxuICAgICAgICAgICAgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCBzaWdzIHJhd19hZ2VudF8gbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjcmVhdGVkX2luY3JfbmV3IEAgY3JlYXRlZF9pbmNyLCBsbmtfbmInJylcbiAgICAgICAgKFtdLCBsbmtfbmInICsgMSlcbiAgICAgICAgY3JlYXRlZFxuICAgICAgfD4gZnN0XG4gICAgICAoKiBXZSBkcm9wIHRoZSBsbmtfbmIgYXMgd2UgZG9uJ3QgbmVlZCBpbiB0aGUgZm9sbG93aW5nICopXG4gICAgaW5cblxuICAgICgqIFJldHVybiBpbml0aWFsIG1peHR1cmVzIHdpdGggbmV3IGFnZW50cyBpbiBydWxlIGZyb20gY291bnRlciBjb21waWxhdGlvbiAqKVxuICAgIGxldCBydWxlX2FnZW50X21peCA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF8uYWdlbnQpIG1peCBpbmNyc1xuICAgIGluXG4gICAgbGV0IHJhd19taXggOiBSYXdfbWl4dHVyZS50ID1cbiAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50Xy5hZ2VudClcbiAgICAgICAgY3JlYXRlZFxuICAgICAgICAoaW5jcnNfY3JlYXRlZCBAIGluY3JzX2NyZWF0ZWQnKVxuICAgIGluXG4gICAgcnVsZV9hZ2VudF9taXgsIHJhd19taXhcbiAgKSBlbHNlXG4gICAgKCBMaXN0LnJldl9tYXAgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50Xy5hZ2VudCkgKExpc3QucmV2IG1peCksXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF8uYWdlbnQpIChMaXN0LnJldiBjcmVhdGVkKSApXG5cbmxldCBydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IGNfbmEgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgbGV0IGNfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgY19uYSBzaWduIGluXG4gIGxldCBtYXhfdmFsLCBsb2MgPSBjLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gIGxldCBtYXhfdmFsJyA9IG1heF92YWwgKyAxIGluXG4gIGxldCBpbmNycyA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAobWF4X3ZhbCcgKyAxKSAoKGNfaWQsIGFnX2lkKSwgZmFsc2UpIGZhbHNlIDEgbG9jICgtMSlcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHAgPSBMS2FwcGEuTE5LX1ZBTFVFICgxLCAocG9ydF9iLCBjb3VudGVyX2FnZW50X2luZm8uaWQpKSwgbG9jIGluXG4gIHBvcnRzLihjX2lkKSA8LSBwLCBMS2FwcGEuTWFpbnRhaW5lZDtcbiAgbGV0IHJhIDogTEthcHBhLnJ1bGVfYWdlbnQgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgcmEgOjogaW5jcnNcblxubGV0IGNvdW50ZXJfcGVydHVyYmF0aW9uIHNpZ3MgYyBhZ190eSA9XG4gIGxldCBhbm5vdCA9IExvYy5nZXRfYW5ub3QgYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gIGxldCBmaWxlbmFtZSA9IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiY291bnRlcl9wZXJ0dXJiYXRpb24ua2FcIiwgYW5ub3QpIF0gaW5cbiAgbGV0IHN0b3BfbWVzc2FnZSA9XG4gICAgXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9uYW1lIF4gXCIgb2YgYWdlbnQgXCIgXiBMb2MudiBhZ190eVxuICAgIF4gXCIgcmVhY2hlZCBtYXhpbXVtXCJcbiAgaW5cbiAgbGV0IG1vZHMgPVxuICAgIFtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiXCIsIGFubm90KSBdKTtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0b3BfbWVzc2FnZSwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlNUT1AgZmlsZW5hbWU7XG4gICAgXVxuICBpblxuICBsZXQgdmFsX29mX2NvdW50ZXIgPVxuICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjIGFnX3R5KVxuICBpblxuICBsZXQgcHJlID1cbiAgICBBbGdfZXhwci5DT01QQVJFX09QXG4gICAgICAoIE9wZXJhdG9yLkVRVUFMLFxuICAgICAgICAodmFsX29mX2NvdW50ZXIsIGFubm90KSxcbiAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuSSAxKSwgYW5ub3QpIClcbiAgaW5cbiAgKCBOb25lLFxuICAgIFNvbWUgKHByZSwgTG9jLmdldF9hbm5vdCBhZ190eSksXG4gICAgbW9kcyxcbiAgICBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuXG5sZXQgY291bnRlcnNfcGVydHVyYmF0aW9ucyBzaWdzIGFzdF9zaWdzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IEFzdC5QcmVzZW50IChhZ190eSwgc2l0ZXMsIF8pIC0+XG4gICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGFjYycgc2l0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAoY291bnRlcl9wZXJ0dXJiYXRpb24gc2lncyBjIGFnX3R5LCBMb2MuZ2V0X2Fubm90IGFnX3R5KSA6OiBhY2MnKVxuICAgICAgICAgICBhY2Mgc2l0ZXMpKVxuICAgIFtdIGFzdF9zaWdzXG5cbmxldCBtYWtlX2NvdW50ZXIgaSBuYW1lID1cbiAge1xuICAgIEFzdC5jb3VudGVyX25hbWUgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBuYW1lO1xuICAgIGNvdW50ZXJfdGVzdCA9IFNvbWUgKExvYy5hbm5vdF93aXRoX2R1bW15IChBc3QuQ0VRIGkpKTtcbiAgICBjb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMDtcbiAgfVxuXG5sZXQgYWRkX2NvdW50ZXJfdG9fY29udGFjdF9tYXAgc2lncyBhZGRfbGlua19jb250YWN0X21hcCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBhZGRfbGlua19jb250YWN0X21hcCBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9hIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcblxubGV0IHJhaXNlX2lmX21vZGlmaWNhdGlvbiAoZGVsdGEsIGxvYykgPVxuICBpZiBkZWx0YSAhPSAwIHRoZW4gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBsb2MgKFNvbWUgZGVsdGEpXG5cbmxldCBhbm5vdGF0ZV9kcm9wcGVkX2NvdW50ZXJzIHNpZ24gYXN0X2NvdW50ZXJzIHJhIGFyaXR5IGFnZW50X25hbWUgYXV4ID1cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBwc2V0IGMgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHJhaXNlX2lmX21vZGlmaWNhdGlvbiBjLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXV4IHdpdGhcbiAgICAgICAgICB8IFNvbWUgZiAtPiBmIHBfaWRcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcmFfY291bnRlcnMuKHBfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5FcmFzZWQpO1xuICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGFzdF9jb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfZWRpdF9jb3VudGVycyBzaWdzICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGNvdW50ZXJzIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBwX2lkIGluXG4gICAgICAgIGxldCAoKSA9IHJhX2NvdW50ZXJzLihwX2lkKSA8LSBTb21lIChjLCBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBjb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgKChhZ2VudF9uYW1lLCBsb2MpIGFzIGFnX3R5KSBsYyByYyByYVxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYiBpblxuICAgIGMsIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgcmNfciwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKHJjLCBjc2V0KSBjIC0+XG4gICAgICAgIGxldCAoKG5hLCBfKSBhcyBjb3VudGVyX25hbWUpID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNvdW50ZXJfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCBjc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBjX2lkIGNzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBjc2V0ID09IGNzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJywgcmMnID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgICAgKGZ1biBwIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBwLkFzdC5jb3VudGVyX25hbWUpIG5hID0gMClcbiAgICAgICAgICAgIHJjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjJycgPVxuICAgICAgICAgIG1hdGNoIGMnIHdpdGhcbiAgICAgICAgICB8IF8gOjogW10gfCBbXSAtPiByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGMgY19pZFxuICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYV9jb3VudGVycy4oY19pZCkgPC0gU29tZSBjJycgaW5cbiAgICAgICAgcmMnLCBjc2V0JylcbiAgICAgIChyYywgTW9kcy5JbnRTZXQuZW1wdHkpIGxjXG4gIGluXG4gIGxldCBfID1cbiAgICAoKiB0ZXN0IGlmIGNvdW50ZXIgb2YgcmhzIGlzIGluIHRoZSBzaWduYXR1cmUgKilcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBjIC0+IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWUgc2lnbilcbiAgICAgIHJjX3JcbiAgaW5cbiAgaWYgKG5vdCAocmMgPSBbXSkpICYmIG5vdCAocmNfciA9IFtdKSB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDb3VudGVycyBpbiBcIiBeIGFnZW50X25hbWUgXiBcIiBzaG91bGQgaGF2ZSB0ZXN0cyBieSBub3dcIiwgbG9jKSk7XG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgY291bnRlcnNcbiAgICBhZGRfbGlua19jb250YWN0X21hcCByYSA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cblxuICAoKiByZWdpc3RlciBhbGwgY291bnRlcnMgKHNwZWNpZmllZCBvciBub3QpIHdpdGggbWluIHZhbHVlICopXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBwX2lkIF8gLT5cbiAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgIHwgU29tZSAobWluLCBfKSAtPlxuICAgICAgICBsZXQgY19uYW1lID0gU2lnbmF0dXJlLnNpdGVfb2ZfbnVtIHBfaWQgc2lnbiBpblxuICAgICAgICAodHJ5XG4gICAgICAgICAgIGxldCBjID1cbiAgICAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgICAgIChmdW4gYycgLT4gU3RyaW5nLmNvbXBhcmUgKExvYy52IGMnLkFzdC5jb3VudGVyX25hbWUpIGNfbmFtZSA9IDApXG4gICAgICAgICAgICAgICBjb3VudGVyc1xuICAgICAgICAgICBpblxuICAgICAgICAgICByYV9jb3VudGVycy4ocF9pZCkgPC1cbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBjLkFzdC5jb3VudGVyX3Rlc3Q7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwX2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjX25hbWUsIExvYy5kdW1teTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNFUSBtaW4sIExvYy5kdW1teSk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkICkpXG4gICAgICB8IE5vbmUgLT4gKCkpXG4gICAgcmFfY291bnRlcnM7XG5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnX2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA6IE1vZHMuSW50U2V0LnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAoKTtcbiAgICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBfaWQ7XG4gICAgICAgICAgcmFfY291bnRlcnMuKHBfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKTtcbiAgICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUT0RPIG9yaWdpbmFsbHlfZnJvbSB0ZXJtL2xLYXBwYS5tbCwgc2VlIGlmIGl0IG1ha2VzIHNlbnNlIGhlcmUgKilcbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgKHBvcyA6IExvYy50KSA9IGZ1bmN0aW9uXG4gIHwgQXN0Lk5vTW9kIC0+ICgpXG4gIHwgQXN0LkVyYXNlIHwgQXN0LkNyZWF0ZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoXCJBIG1vZGlmaWNhdGlvbiBpcyBmb3JiaWRkZW4gaGVyZS5cIiwgcG9zKSlcblxubGV0IGJ1aWxkX2xfdHlwZSBzaWdzIHBvcyBkc3RfdHkgZHN0X3Agc3dpdGNoID1cbiAgbGV0IHR5X2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBkc3RfdHkgc2lncyBpblxuICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5pZF9vZl9zaXRlIGRzdF90eSBkc3RfcCBzaWdzIGluXG4gIChMS2FwcGEuTE5LX1RZUEUgKHBfaWQsIHR5X2lkKSwgcG9zKSwgc3dpdGNoXG5cbmxldCBhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXAgc3R5IHNwIGR0eSBkcCA9XG4gIG1hdGNoIGNvbnRhY3RfbWFwIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb250YWN0X21hcCAtPlxuICAgIGxldCBzaSwgc2wgPSBjb250YWN0X21hcC4oc3R5KS4oc3ApIGluXG4gICAgbGV0IGRpLCBkbCA9IGNvbnRhY3RfbWFwLihkdHkpLihkcCkgaW5cbiAgICBsZXQgKCkgPSBjb250YWN0X21hcC4oc3R5KS4oc3ApIDwtIHNpLCBNb2RzLkludDJTZXQuYWRkIChkdHksIGRwKSBzbCBpblxuICAgIGNvbnRhY3RfbWFwLihkdHkpLihkcCkgPC0gZGksIE1vZHMuSW50MlNldC5hZGQgKHN0eSwgc3ApIGRsXG5cbmxldCBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zID9kc3RfdHkgc2lncyBzb3J0IHNpdGUgPVxuICBsZXQgd2FybmluZ19mb3JfY291bnRlcnMgPVxuICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3Mgc29ydCB0aGVuXG4gICAgICB0cnVlXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBkc3RfdHkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgcyAtPiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIHNcbiAgICApXG4gIGluXG5cbiAgaWYgbm90IHdhcm5pbmdfZm9yX2NvdW50ZXJzIHRoZW5cbiAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcInJ1bGUgaW5kdWNlcyBhIGxpbmsgcGVybXV0YXRpb24gb24gc2l0ZSAnJWEnIG9mIGFnZW50ICclYSdcIlxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHNvcnQpXG4gICAgICAgICAgc2l0ZVxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICBzb3J0KVxuXG5sZXQgc2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIGkgc2lncyBhZ190eSBwX2lkIHBvcyA9XG4gIExLYXBwYS5yYWlzZV9saW5rX3Nob3VsZF9iZV9yZW1vdmVkIGlcbiAgICAobGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RyX2Zvcm1hdHRlciBcIiVhXCJcbiAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgIGFnX3R5XG4gICAgIGluXG4gICAgIEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKVxuICAgICggKGxldCAoKSA9XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RyX2Zvcm1hdHRlciBcIiVhXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgIHBfaWRcbiAgICAgICBpblxuICAgICAgIEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSxcbiAgICAgIHBvcyApXG5cbmxldCBidWlsZF9saW5rID93YXJuX29uX3N3YXAgc2lncyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfdHkgcF9pZCBzd2l0Y2hcbiAgICAobGlua3Nfb25lLCBsaW5rc190d28pID1cbiAgaWYgTW9kcy5JbnRNYXAubWVtIGkgbGlua3NfdHdvIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICggXCJUaGlzIGlzIHRoZSB0aGlyZCBvY2N1cmVuY2Ugb2YgbGluayAnXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgXiBcIicgaW4gdGhlIHNhbWUgbWl4dHVyZS5cIixcbiAgICAgICAgICAgcG9zICkpXG4gIGVsc2UgKFxuICAgIG1hdGNoIE1vZHMuSW50TWFwLnBvcCBpIGxpbmtzX29uZSB3aXRoXG4gICAgfCBOb25lLCBvbmUnIC0+XG4gICAgICBsZXQgbmV3X2xpbmsgPVxuICAgICAgICBtYXRjaCBzd2l0Y2ggd2l0aFxuICAgICAgICB8IExLYXBwYS5MaW5rZWQgaiAtPiBTb21lIGpcbiAgICAgICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLk1haW50YWluZWQgLT4gTm9uZVxuICAgICAgaW5cbiAgICAgICggKChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoLTEsIC0xKSksIHBvcyksIHN3aXRjaCksXG4gICAgICAgIChNb2RzLkludE1hcC5hZGQgaSAoYWdfdHksIHBfaWQsIG5ld19saW5rLCBwb3MsIHN3aXRjaCkgb25lJywgbGlua3NfdHdvKVxuICAgICAgKVxuICAgIHwgU29tZSAoZHN0X3R5LCBkc3RfcCwgZHN0X2lkLCBwb3MnLCBzd2l0Y2gnKSwgb25lJyAtPlxuICAgICAgaWYgU2lnbmF0dXJlLmFsbG93ZWRfbGluayBhZ190eSBwX2lkIGRzdF90eSBkc3RfcCBzaWdzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXAgYWdfdHkgcF9pZCBkc3RfdHkgZHN0X3AgaW5cbiAgICAgICAgbGV0IG1haW50YWluZWQgPVxuICAgICAgICAgIG1hdGNoIHN3aXRjaCB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuTGlua2VkIGogLT5cbiAgICAgICAgICAgIGxldCBsaW5rX3N3YXAgPSBTb21lIGogPD4gZHN0X2lkIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsaW5rX3N3YXAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggd2Fybl9vbl9zd2FwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgICB8IFNvbWUgd2FybmluZyAtPlxuICAgICAgICAgICAgICAgICAgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyB+ZHN0X3R5IHNpZ3MgYWdfdHlcbiAgICAgICAgICAgICAgICAgICAgcF9pZFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbm90IGxpbmtfc3dhcFxuICAgICAgICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfY2hlY2tfY29tcGF0aWJpbHR5ID1cbiAgICAgICAgICBtYXRjaCBzd2l0Y2gsIHN3aXRjaCcgd2l0aFxuICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQsIExLYXBwYS5NYWludGFpbmVkIC0+ICgpXG4gICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCwgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgc2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIGkgc2lncyBhZ190eSBwX2lkIHBvc1xuICAgICAgICAgIHwgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgIHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgZHN0X3R5IGRzdF9wIHBvcydcbiAgICAgICAgICB8ICggKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pLFxuICAgICAgICAgICAgICAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXykgKSAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgKCAoIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoZHN0X3AsIGRzdF90eSkpLCBwb3MpLFxuICAgICAgICAgICAgaWYgbWFpbnRhaW5lZCB0aGVuXG4gICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHN3aXRjaCApLFxuICAgICAgICAgIChvbmUnLCBNb2RzLkludE1hcC5hZGQgaSAoYWdfdHksIHBfaWQsIG1haW50YWluZWQpIGxpbmtzX3R3bykgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkZvcmJpZGRlbiBsaW5rIHRvIGEgJWEuJWEgZnJvbSBzaWduYXR1cmUgZGVjbGFyYXRpb25cIlxuICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBkc3RfdHkpXG4gICAgICAgICAgICAgICAgIGRzdF9wXG4gICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgZHN0X3R5LFxuICAgICAgICAgICAgICAgcG9zICkpXG4gIClcblxubGV0IGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGUgc2lnc1xuICAgIGxpbmtzX2Fubm90ICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGludGYgY291bnRzID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5FcmFzZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgYXJpdHkgKGZ1biBpIC0+XG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5kZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnX2lkIGkgc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBMS2FwcGEuSV9BTllcbiAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLklfQU5ZX0VSQVNFRClcbiAgaW5cbiAgbGV0IGxhbm5vdCwgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGxhbm5vdCwgcHNldCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rX21vZCwgcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIF8gLT4gKClcbiAgICAgICAgICB8IFNvbWUgTm9uZSwgWyAoTEthcHBhLkxOS19WQUxVRSAoXywgKCkpLCBfKSBdXG4gICAgICAgICAgKCogW2kvLl0gaXMgYWxsb3dlZCBpbiBkZWdyYWRlZCBhZ2VudC5cbiAgICAgICAgICAgICBJdCB3aWxsIGJlIGNoZWNrZWQgbGF0ZXIgdGhhdCB0aGUgb3RoZXIgc2l0ZSB3aXRoIGxpbmsgaWQgaSBpcyBhbHNvIGZyZWVkIGluIHRoZSBydWxlICopXG4gICAgICAgICAgKCogUGxlYXNlIG5vdGUgdGhhdCBhIHJ1bGUgd3JpdHRlbiBhcyBBKHhbMV0pLSxCKHhbMS8uXSktIGlzIGFsbG93ZWQgKilcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgKCBTb21lIChOb25lIHwgU29tZSBfKSxcbiAgICAgICAgICAgICAgKCBbXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKF8sICgpKSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChfLCBfKSwgXykgXVxuICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfICkgKSAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9pbnRfbW9kIGluXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFsgKE5vbmUsIF8pIF0gLT4gKClcbiAgICAgICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSAtPlxuICAgICAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgICAgICBMS2FwcGEuSV9WQUxfRVJBU0VEXG4gICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbilcbiAgICAgICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSAtPlxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkFOWV9GUkVFLCBwb3MpLCBMS2FwcGEuRXJhc2VkIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0gLT5cbiAgICAgICAgICBsZXQgbmEsIHBvcyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICBuYSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0gLT5cbiAgICAgICAgICBsZXQgbmEsIHBvcyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICBuYSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCAoWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuQU5ZX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0IHZhLCBsYW5ub3QnID1cbiAgICAgICAgICAgIGxldCB3YXJuX29uX3N3YXAgPVxuICAgICAgICAgICAgICBpZiByX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgd2FybmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkVyYXNlZCBsYW5ub3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICAgIGxhbm5vdCcsIHBzZXQnXG4gICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSkpXG4gICAgICAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgaW50ZlxuICBpblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBjb3VudHMgcmEgYXJpdHkgYWdlbnRfbmFtZVxuICAgICAgTm9uZSxcbiAgICBsYW5ub3QgKVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgP2NvbnRhY3RfbWFwIHJhbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBpbnRmID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9IEFycmF5Lm1ha2UgYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPiBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3MpXG4gIGluXG4gIGxldCBfLCByYW5ub3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwc2V0LCByYW5ub3QpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgWyAoTm9uZSwgXykgXSAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgU29tZSAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSBfLCBfKSBdXG4gICAgICAgIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIFJhd19taXh0dXJlLlZBTCBpIGluXG4gICAgICAgICAgbGV0IF8sIHJhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAgICAgTEthcHBhLkZyZWVkIHJhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHNldCcsIHJhbm5vdCdcbiAgICAgICAgfCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFKSwgXykgXSB8IFtdIC0+IHBzZXQnLCByYW5ub3QpXG4gICAgICAoTW9kcy5JbnRTZXQuZW1wdHksIHJhbm5vdClcbiAgICAgIGludGZcbiAgaW5cbiAgKCByYW5ub3QsXG4gICAge1xuICAgICAgUmF3X21peHR1cmUuYV90eXBlID0gYWdfaWQ7XG4gICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgfSApXG5cbmxldCB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgP3dhcm5cbiAgICAoKGxoc19saW5rcywgcmhzX2xpbmtzKSBhcyBsaW5rc19hbm5vdCkgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTEthcHBhLk1haW50YWluZWQsIGxpbmtzX2Fubm90XG4gIHwgU29tZSB4IC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHdhcm4gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKG5hLCBwb3MpIC0+XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgIGluXG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBMS2FwcGEuRnJlZWQsIGxpbmtzX2Fubm90XG4gICAgfCBTb21lIChqLCBwb3NfaikgLT5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgcG9zX2ogaiBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIExLYXBwYS5MaW5rZWQgaiwgKGxoc19saW5rcywgcmhzX2xpbmtzJykpXG5cbmxldCBhbm5vdGF0ZV9lZGl0X2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IGludGYgY291bnRzID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIHBzZXQpIHAgPVxuICAgIGxldCBwb3J0X25hbWUsIF8gPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWUgc2lnbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgaW5cbiAgICBsZXQgbGlua3NfYW5ub3QnID1cbiAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICB8IFsgKChMS2FwcGEuTE5LX1NPTUUsIHBvcykgYXMgeCkgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2FybjoocG9ydF9uYW1lLCBwb3MpIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcCBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHgsIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IChbXSB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSkgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyA/d2FybjpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwIGFnX2lkXG4gICAgICAgICAgICBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFtdIHdoZW4gcC5Bc3QucG9ydF9saW5rX21vZCA9IE5vbmUgLT4gbGlua3NfYW5ub3RcbiAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm46Tm9uZSBzaWdzID9jb250YWN0X21hcCBhZ19pZFxuICAgICAgICAgICAgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgfndhcm46KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIChsaHNfbGlua3MsIHJoc19saW5rcykgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm46Tm9uZSBzaWdzID9jb250YWN0X21hcCBhZ19pZFxuICAgICAgICAgICAgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgICAgYnVpbGRfbGluayBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXA6XG4gICAgICAgICAgICAgIChpZiBpc19ydWxlIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjb250YWN0X21hcClcbiAgICAgICAgICAgID93YXJuX29uX3N3YXA6Tm9uZSBwb3MgaSBhZ19pZCBwX2lkIG1vZGlmIGxoc19saW5rc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQsIHAuQXN0LnBvcnRfaW50X21vZCB3aXRoXG4gICAgICB8IChbIChOb25lLCBfKSBdIHwgW10pLCBOb25lIC0+ICgpXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgU29tZSB2YScgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX1ZBTF9DSEFOR0VEXG4gICAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhJyBzaWduIClcbiAgICAgIHwgW10sIFNvbWUgKChfLCBwb3MpIGFzIHZhKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIHRoZW5cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIFxcXG4gICAgICAgICAgICAgICAgICAgYWx0aG91Z2ggaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUgYWdlbnRfbmFtZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJNb2RpZmllZCBpbnRlcm5hbCBzdGF0ZSBtdXN0IGFwcGVhciBvbiB0aGUgbGVmdFwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRUQgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YSBzaWduKVxuICAgICAgfCBbIChOb25lLCBfKSBdLCBTb21lIHZhIC0+XG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgTm9uZSAtPlxuICAgICAgICBsZXQgaV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbiBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpX2lkLCBpX2lkKVxuICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgIGluXG4gICAgbGlua3NfYW5ub3QnLCBwc2V0J1xuICBpblxuICBsZXQgYW5ub3RlZCcsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KSBpbnRmXG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyBhZ190eSBjb3VudHMgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBsaW5rc19hbm5vdCBscCBycCBsYyByYyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgbG5rMSBwJyAoKGxoc19saW5rcywgcmhzX2xpbmtzKSBhcyBsaW5rc19hbm5vdCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uXG4gICAgICAgIChMb2MuZ2V0X2Fubm90IHAnLkFzdC5wb3J0X25hbWUpXG4gICAgICAgIHAnLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBsbmsxLCBwJy5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvcykgXSwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFtcbiAgICAgICAgICAoIExLYXBwYS5MTktfVFlQRSAoKChkc3RfcCcnLCBfKSBhcyBkc3RfcCksICgoZHN0X3R5JycsIF8pIGFzIGRzdF90eSkpLFxuICAgICAgICAgICAgcG9zICk7XG4gICAgICAgIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVFlQRSAoKGRzdF9wJywgXyksIChkc3RfdHknLCBfKSksIF8pIF0gKVxuICAgICAgd2hlbiBkc3RfcCcnID0gZHN0X3AnICYmIGRzdF90eScnID0gZHN0X3R5JyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvcyBkc3RfdHkgZHN0X3AgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBfLFxuICAgICAgICAoIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF0gKSApIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSwgW11cbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCAoWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gfCBbXSksXG4gICAgICAgIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSApXG4gICAgICB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zX2xpbmspIF0sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zJykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCAoTEthcHBhLkxpbmtlZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zJyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkxpbmtlZCBpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvc19pKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoKSksIHBvc19qKSBdICkgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zX2kgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgKExLYXBwYS5MaW5rZWQgaikgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3MnXG4gICAgfCAoIFtcbiAgICAgICAgICAoICggTEthcHBhLkxOS19WQUxVRSAoXywgKCkpXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfQU5ZICksXG4gICAgICAgICAgICBfICk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFtdLCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19WQUxVRSAoXywgXykpLCBfKSBdXG4gICAgICAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICAgIHwgXywgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgaW50MSBwJyA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfaW50X21vZFxuICAgIGluXG4gICAgbWF0Y2ggaW50MSwgcCcuQXN0LnBvcnRfaW50IHdpdGhcbiAgICB8IFtdLCBbXSB8IFsgKE5vbmUsIF8pIF0sIFsgKE5vbmUsIF8pIF0gLT4gKClcbiAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgWyAoU29tZSB2YScsIHBvcycpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEnLCBwb3MnKSBzaWduIClcbiAgICB8IFtdLCBbIChTb21lIHZhLCB2YXBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJpbnRlcm5hbCBzdGF0ZSBvZiBzaXRlICclcycgb2YgYWdlbnQgJyVzJyBpcyBtb2RpZmllZCBhbHRob3VnaCBcXFxuICAgICAgICAgICAgICAgaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgIG5hIGFnZW50X25hbWUpXG4gICAgICBpblxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRFxuICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCB2YXBvcykgc2lnbilcbiAgICB8IFsgKE5vbmUsIF8pIF0sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIC0+XG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgW10sIFsgXyBdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIF8gXSwgKFsgKE5vbmUsIF8pIF0gfCBbXSkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgaW5cbiAgbGV0IGZpbmRfaW5fciAobmEsIHBvcykgcnAgPVxuICAgIGxldCBwJywgciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIHAgLT4gU3RyaW5nLmNvbXBhcmUgKExvYy52IHAuQXN0LnBvcnRfbmFtZSkgbmEgPSAwKSBycFxuICAgIGluXG4gICAgbWF0Y2ggcCcgd2l0aFxuICAgIHwgWyBwJyBdIC0+IHAnLCByXG4gICAgfCBbXSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgKG5hLCBwb3MpXG4gICAgfCBfIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgaW5cbiAgbGV0IHJwX3IsIGFubm90ZWQsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChycCwgYW5ub3RlZCwgcHNldCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgcCcsIHJwJyA9IGZpbmRfaW5fciBwb3J0X25hbWUgcnAgaW5cbiAgICAgICAgbGV0IGFubm90ZWQnID0gcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkIHAuQXN0LnBvcnRfbGluayBwJyBhbm5vdGVkIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgcC5Bc3QucG9ydF9pbnQgcCcgaW5cbiAgICAgICAgcnAnLCBhbm5vdGVkJywgcHNldCcpXG4gICAgICAocnAsIGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSlcbiAgICAgIGxwXG4gIGluXG4gIGxldCBhbm5vdGVkJyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYW5ub3RlZCBwIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBbXSBwIGluXG4gICAgICAgIHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZFxuICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlkgXVxuICAgICAgICAgIHAgYW5ub3RlZClcbiAgICAgIGFubm90ZWQgcnBfclxuICBpblxuXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiBzaWdzIGFnX3R5IGxjIHJjIHJhXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKSxcbiAgICBhbm5vdGVkJyApXG5cbmxldCByZWZlcl9saW5rc19hbm5vdCA/d2FybmluZyBzaWdzIGxpbmtzX2Fubm90IG1peCA9XG4gIExpc3QuaXRlclxuICAgIChmdW4gKHJhXyA6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMpIC0+XG4gICAgICBsZXQgcmEgPSByYV8uYWdlbnQgaW5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGosICgtMSwgLTEpKSwgcG9zKSwgbW9kcyAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogbGlua3NfYW5ub3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIG1haW50YWluZWQpIC0+XG4gICAgICAgICAgICAgIGxldCBtb2RzJyA9XG4gICAgICAgICAgICAgICAgaWYgbWFpbnRhaW5lZCB0aGVuXG4gICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1vZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBtYXRjaCBtb2RzJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHdhcm5pbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgd2FybmluZyAtPlxuICAgICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV90eXBlIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC1cbiAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoaiwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSwgbW9kcycpXG4gICAgICAgICAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgICAgICAgICBfICksXG4gICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgKCkpXG4gICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cylcbiAgICBtaXhcblxubGV0IHNlcGFyYXRlX3NpdGVzIGxzID1cbiAgbGV0IGEsIGIgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwcywgY3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPiBwIDo6IHBzLCBjc1xuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gcHMsIGMgOjogY3MpXG4gICAgICAoW10sIFtdKSBsc1xuICBpblxuICBMaXN0LnJldiBhLCBiXG5cbmxldCBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZyBzaWdzXG4gICAgKChsaHNfbGlua3Nfb25lLCBsaHNfbGlua3NfdHdvKSwgKHJoc19saW5rc19vbmUsIF8pKSBtaXggPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGhzX2xpbmtzX29uZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG4gIGluXG4gIGxldCAoKSA9IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGhzX2xpbmtzX3R3byBtaXggaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuXG4oKlxuSXMgcmVzcG9uc2libGUgZm9yIHRoZSBjaGVjayB0aGF0OlxuLSBhZ2VudCBleGlzdHNcbi0gc2l0ZXMgZXhpc3Rcbi0gdW5pcXVlIHNpdGUgb2NjdXJlbmNlIC8gYWdlbnRcbi0gaW50ZXJuYWxfc3RhdGVzIGV4aXN0XG4tIHVuaXF1ZSBpbnRlcm5hbF9zdGF0ZSAvIHNpdGVcbi0gbGlua3MgYXBwZWFyIGV4YWN0bHkgdHdpY2VcbiopXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IGFjYyBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBBc3QuQWJzZW50IHBvcyA6OiBfLCBfIHwgKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSwgQXN0LkFic2VudCBwb3MgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKGxhZ2VudF9uYW1lLCBscG9zKSBhcyBhZ190eSksIGxhZ19zLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKChyYWdlbnRfbmFtZSwgcnBvcyksIHJhZ19zLCBybW9kKSA6OiBydCApXG4gICAgICB3aGVuIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3MgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgbGV0IGxhZ19wLCBsYWdfYyA9IHNlcGFyYXRlX3NpdGVzIGxhZ19zIGluXG4gICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2l0ZXMgcmFnX3MgaW5cbiAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICBpblxuICAgICAgYXV4IGxpbmtzX2Fubm90JyAocmEgOjogYWNjKSBsdCBydFxuICAgIHwgKChBc3QuUHJlc2VudCBfIDo6IF8gfCBbXSkgYXMgZXJhc2VkKSwgYWRkZWQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGFkZGVkIDw+IFtdIHRoZW5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiAoKVxuICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgobGFnLCBwb3MpLCBsYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgocmFnLCBfKSwgcmFnX3AsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSBsYWcgcmFnID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgQXN0Lm5vX21vcmVfc2l0ZV9vbl9yaWdodCBmYWxzZSBsYWdfcCByYWdfcClcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlIGluZHVjZWQgZGVsZXRpb24gQU5EIGNyZWF0aW9uIG9mIHRoZSBhZ2VudCAlc1wiIGxhZykpXG4gICAgICAgICAgICBlcmFzZWRcbiAgICAgIGluXG4gICAgICBsZXQgbWl4LCBsbGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgbGFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgbmEpLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICAgICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3MgbW9kaWY7XG4gICAgICAgICAgICAgIGxldCBpbnRmLCBjb3VudHMgPSBzZXBhcmF0ZV9zaXRlcyBzaXRlcyBpblxuICAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgbGFubm90IG5hIGludGYgY291bnRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhIDo6IGFjYywgbGFubm90JylcbiAgICAgICAgICAoYWNjLCBmc3QgbGlua3NfYW5ub3QpXG4gICAgICAgICAgZXJhc2VkXG4gICAgICBpblxuICAgICAgbGV0IGNtaXgsIHJsaW5rcyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoYWNjLCByYW5ub3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIEthU2ltID4gMyBzeW50YXhcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyBuYSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IGludGYsIGNvdW50cyA9IHNlcGFyYXRlX3NpdGVzIHNpdGVzIGluXG4gICAgICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lncyA/Y29udGFjdF9tYXAgcmFubm90IG5hIGludGZcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIG5hIGNvdW50c1xuICAgICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHgnJyA6OiBhY2MsIHJhbm5vdCcpXG4gICAgICAgICAgKFtdLCBzbmQgbGlua3NfYW5ub3QpXG4gICAgICAgICAgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBmaW5hbF9ydWxlX3Nhbml0eSB+d2FybmluZyBzaWdzIChsbGlua3MsIHJsaW5rcykgbWl4IGluXG4gICAgICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcbiAgaW5cbiAgYXV4XG4gICAgKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpIClcbiAgICBbXSAoTGlzdC5mbGF0dGVuIGxocykgKExpc3QuZmxhdHRlbiByaHMpXG5cbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3Y0IH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHMgPVxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBBc3QuVjQgaW5cbiAgbGV0IHJlYyBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggbGhzIHJocyA9XG4gICAgbWF0Y2ggbGhzLCByaHMgd2l0aFxuICAgIHwgW10sIFtdIC0+IGxpbmtzX2Fubm90LCBtaXgsIGNtaXhcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiBsdCwgQXN0LkFic2VudCBfIDo6IHJ0IC0+IGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBsdCBydFxuICAgIHwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyB0eSksIHNpdGVzLCBsbW9kKSA6OiBsdCwgQXN0LkFic2VudCBfIDo6IHJ0IC0+XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIGxtb2Q7XG4gICAgICBsZXQgaW50ZiwgY291bnRzID0gc2VwYXJhdGVfc2l0ZXMgc2l0ZXMgaW5cbiAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgIChmc3QgbGlua3NfYW5ub3QpIHR5IGludGYgY291bnRzXG4gICAgICBpblxuICAgICAgYXV4IChsYW5ub3QnLCBzbmQgbGlua3NfYW5ub3QpIChyYSA6OiBtaXgpIGNtaXggbHQgcnRcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiBsdCwgQXN0LlByZXNlbnQgKCgoXywgcG9zKSBhcyB0eSksIHNpdGVzLCBybW9kKSA6OiBydCAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBybW9kO1xuICAgICAgbGV0IGludGYsIGNvdW50cyA9IHNlcGFyYXRlX3NpdGVzIHNpdGVzIGluXG4gICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3NcbiAgICAgICAgICA/Y29udGFjdF9tYXAgKHNuZCBsaW5rc19hbm5vdCkgdHkgaW50ZlxuICAgICAgaW5cbiAgICAgIGxldCB4JycgPVxuICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgdHkgY291bnRzXG4gICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICB4J1xuICAgICAgaW5cbiAgICAgIGF1eCAoZnN0IGxpbmtzX2Fubm90LCByYW5ub3QnKSBtaXggKHgnJyA6OiBjbWl4KSBsdCBydFxuICAgIHwgKCBBc3QuUHJlc2VudCAoKChsYWdlbnRfbmFtZSwgbHBvcykgYXMgYWdfdHkpLCBsYWdfcywgbG1vZCkgOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgocmFnZW50X25hbWUsIHJwb3MpLCByYWdfcywgcm1vZCkgOjogcnQgKSAtPlxuICAgICAgaWZcbiAgICAgICAgU3RyaW5nLmNvbXBhcmUgbGFnZW50X25hbWUgcmFnZW50X25hbWUgPSAwXG4gICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgdHJ1ZSBsYWdfcyByYWdfc1xuICAgICAgdGhlbiAoXG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBycG9zIHJtb2Q7XG4gICAgICAgIGxldCBsYWdfcCwgbGFnX2MgPSBzZXBhcmF0ZV9zaXRlcyBsYWdfcyBpblxuICAgICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2l0ZXMgcmFnX3MgaW5cbiAgICAgICAgbGV0IHJhLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBsaW5rc19hbm5vdCcgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgICAgKSBlbHNlXG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcnBvcykpXG4gICAgfCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfLCBbXVxuICAgIHwgW10sIChBc3QuUHJlc2VudCAoKF8sIHBvcyksIF8sIF8pIHwgQXN0LkFic2VudCBwb3MpIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkxlZnQgaGFuZCBzaWRlL3JpZ2h0IGhhbmQgc2lkZSBhZ2VudCBtaXNtYXRjaFwiLCBwb3MpKVxuICBpblxuICBsZXQgcmVjIGF1eF9saW5lIGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyBsaW5rc19hbm5vdCBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICAgIHwgaGwgOjogdGwsIGhyIDo6IHRyIC0+XG4gICAgICBsZXQgbGlua3NfYW5ub3QnLCBtaXgnLCBjbWl4JyA9IGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBobCBociBpblxuICAgICAgYXV4X2xpbmUgbGlua3NfYW5ub3QnIG1peCcgY21peCcgdGwgdHJcbiAgICB8ICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfLCBbXVxuICAgIHwgW10sICgoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgICB8IFtdIDo6IF8sIFtdIHwgW10sIFtdIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkludmFyaWFudCB2aW9sYXRpb24gaW4gYW5ub3RhdGVfbGhzX3dpdGguLi5cIikpXG4gIGluXG4gIGF1eF9saW5lXG4gICAgKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpIClcbiAgICBbXSBbXSBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IEFzdC5WMyAtPiBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmX3YzIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGxocyByaHNcbiAgfCBBc3QuVjQgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG5cbmxldCBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIENvdW50ZXJzX2NvbXBpbGVyLnJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzXG4gICAgKiBDb3VudGVyc19jb21waWxlci5yYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgKCogbWl4IGlzIHRoZSBtaXh0dXJlIGZyb20gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcnVsZSwgY21peCBpcyB0aGUgbWl4dHVyZSBhZnRlciB0aGUgcnVsZSB3YXMgYXBwbGllZCAqKVxuICBsZXQgbGlua3NfYW5ub3QsIG1peCwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChsYW5ub3QsIGFjYywgbmV3cykgLT4gZnVuY3Rpb25cbiAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGxhbm5vdCwgYWNjLCBuZXdzXG4gICAgICAgICB8IEFzdC5QcmVzZW50ICh0eSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICBsZXQgaW50ZiwgY291bnRzID0gc2VwYXJhdGVfc2l0ZXMgc2l0ZXMgaW5cbiAgICAgICAgICAgKG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgICAgICAgfCBBc3QuTm9Nb2QgLT5cbiAgICAgICAgICAgICBsZXQgYSwgbGFubm90JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9lZGl0X2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzXG4gICAgICAgICAgICAgICAgID9jb250YWN0X21hcCB0eSBsYW5ub3QgaW50ZiBjb3VudHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxhbm5vdCcsIGEgOjogYWNjLCBuZXdzXG4gICAgICAgICAgIHwgQXN0LkNyZWF0ZSAtPlxuICAgICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyA/Y29udGFjdF9tYXAgKHNuZCBsYW5ub3QpIHR5IGludGZcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIHR5IGNvdW50c1xuICAgICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgICB4J1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKGZzdCBsYW5ub3QsIHJhbm5vdCcpLCBhY2MsIHgnJyA6OiBuZXdzXG4gICAgICAgICAgIHwgQXN0LkVyYXNlIC0+XG4gICAgICAgICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgIH5yX2VkaXRfc3R5bGU6dHJ1ZSBzaWdzIChmc3QgbGFubm90KSB0eSBpbnRmIGNvdW50c1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKGxhbm5vdCcsIHNuZCBsYW5ub3QpLCByYSA6OiBhY2MsIG5ld3MpKSlcbiAgICAgICggKCAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSxcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApLFxuICAgICAgICBbXSxcbiAgICAgICAgW10gKVxuICAgICAgbVxuICBpblxuICBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZzpOb25lIHNpZ3MgbGlua3NfYW5ub3QgbWl4O1xuICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcblxubGV0IGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobSA6IEFzdC5taXh0dXJlKSA6XG4gICAgUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0ID1cbiAgbGV0IChyaHNfbGlua3Nfb25lLCBfKSwgY21peCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIChyYW5ub3QsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgY2Fubm90IG9jY3VycyBpbiBjcmVhdGVkIG1peHR1cmVzXCIsIHBvcykpXG4gICAgICAgICB8IEFzdC5QcmVzZW50ICh0eSwgc2l0ZXMsIF9tb2RpZikgLT5cbiAgICAgICAgICAgbGV0IGludGYsIGNvdW50cyA9IHNlcGFyYXRlX3NpdGVzIHNpdGVzIGluXG4gICAgICAgICAgIGxldCByYW5ub3QnLCB4JyA9XG4gICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZTp0cnVlXG4gICAgICAgICAgICAgICBzaWdzID9jb250YWN0X21hcCByYW5ub3QgdHkgaW50ZlxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgdHkgY291bnRzXG4gICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcmFubm90JywgeCcnIDo6IG5ld3MpKVxuICAgICAgKChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLCBbXSlcbiAgICAgIG1cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5yb290IHJoc19saW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuICBpblxuICBMaXN0LnJldiBjbWl4XG5cbmxldCBnaXZlX3J1bGVfbGFiZWwgYmlkaXJlY3Rpb25hbCAoaWQsIHNldCkgcHJpbnRlciByID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IChzdWNjIGlkLCBzZXQpLCBGb3JtYXQuYXNwcmludGYgXCJyJWk6ICVhXCIgaWQgcHJpbnRlciByXG4gIHwgU29tZSAobGFiLCBwb3MpIC0+XG4gICAgbGV0IHNldCcgPSBNb2RzLlN0cmluZ1NldC5hZGQgbGFiIHNldCBpblxuICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgZWxzZSBpZiBiaWRpcmVjdGlvbmFsIHRoZW4gKFxuICAgICAgbGV0IHNldCcnID0gTW9kcy5TdHJpbmdTZXQuYWRkIChBc3QuZmxpcF9sYWJlbCBsYWIpIHNldCcgaW5cbiAgICAgIGlmIHNldCcgPT0gc2V0JycgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiQSBydWxlIG5hbWVkICdcIiBeIEFzdC5mbGlwX2xhYmVsIGxhYiBeIFwiJyBhbHJlYWR5IGV4aXN0cy5cIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgKGlkLCBzZXQnJyksIGxhYlxuICAgICkgZWxzZVxuICAgICAgKGlkLCBzZXQnKSwgbGFiXG5cbmxldCBtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgKHBvcyA6IExvYy50KVxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBtYXRjaFxuICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6ZmFsc2Ugc2lnc1xuICAgICAgP2NvbnRhY3RfbWFwIG1peFxuICB3aXRoXG4gIHwgciwgW10gLT4gZnN0IChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHIgW10pXG4gIHwgXywgXyAtPlxuICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChcIkEgbWl4dHVyZSBjYW5ub3QgY3JlYXRlIGFnZW50c1wiLCBwb3MpKVxuXG5sZXQgcmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgIChtaXggOiBBc3QubWl4dHVyZSkgPVxuICBsZXQgYiA9XG4gICAgYW5ub3RhdGVfY3JlYXRlZF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcCBtaXhcbiAgaW5cbiAgc25kIChDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIFtdIGIpXG5cbmxldCBjb252ZXJ0X2FsZ192YXIgP21heF9hbGxvd2VkX3ZhciBhbGdzIGxhYiBwb3MgPVxuICBsZXQgaSA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3Mgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChsYWIgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB2YXJpYWJsZVwiLCBwb3MpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG1heF9hbGxvd2VkX3ZhciB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiUmVmZXJlbmNlIHRvIG5vdCB5ZXQgZGVmaW5lZCAnXCIgXiBsYWIgXiBcIicgaXMgZm9yYmlkZGVuLlwiLCBwb3MpKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiAoKVxuICBpblxuICBpXG5cbmxldCBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gdGtfbmFtZSB0b2sgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAodGtfbmFtZSBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpXG5cbmxldCByZWMgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzID9tYXhfYWxsb3dlZF92YXJcbiAgICAoYWxnLCBwb3MpID1cbiAgKCAobWF0Y2ggYWxnIHdpdGhcbiAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGFzdCAtPlxuICAgICAgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0VcbiAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QpXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGxhYiAtPlxuICAgICAgQWxnX2V4cHIuQUxHX1ZBUiAoY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zKVxuICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgdGtfbmFtZSAtPlxuICAgICAgQWxnX2V4cHIuVE9LRU5fSUQgKGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIChleHByLCBhc3QpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGV4cHIsXG4gICAgICAgICAgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIGFzdCApXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0a19uYW1lKSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9UT0tFTlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0a19uYW1lIHRvayBwb3MgKVxuICAgIHwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXykgYXMgeCAtPiB4XG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICAgIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYSxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgYiApXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEgKVxuICAgIHwgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgICBBbGdfZXhwci5JRlxuICAgICAgICAoIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgY29uZCxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeWVzLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBubyApKSxcbiAgICBwb3MgKVxuXG5hbmQgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyID1cbiAgZnVuY3Rpb25cbiAgfCAoKEFsZ19leHByLlRSVUUgfCBBbGdfZXhwci5GQUxTRSksIF8pIGFzIHggLT4geFxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKCBvcCxcbiAgICAgICAgICBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCB4KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5VTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4ICksXG4gICAgICBwb3MgKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCB4LCB5KSwgcG9zIC0+XG4gICAgKCBBbGdfZXhwci5DT01QQVJFX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHgsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHkgKSxcbiAgICAgIHBvcyApXG5cbmxldCBwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA9IGZ1bmN0aW9uXG4gIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgXyBhcyB4IC0+IHhcbiAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciB4IC0+XG4gICAgUHJpbWl0aXZlcy5BbGdfcGV4cHJcbiAgICAgIChhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgeClcblxudHlwZSBydWxlX2ludGVyX3JlcCA9IHtcbiAgbGFiZWxfb3B0OiAoc3RyaW5nICogTG9jLnQpIG9wdGlvbjtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDsgKCogVE9ETyBjaGVjayAqKVxuICBtaXh0dXJlOiBMS2FwcGEucnVsZV9hZ2VudCBDb3VudGVyc19jb21waWxlci53aXRoX2FnZW50X2NvdW50ZXJzIGxpc3Q7XG4gIGNyZWF0ZWRfbWl4OiBSYXdfbWl4dHVyZS5hZ2VudCBDb3VudGVyc19jb21waWxlci53aXRoX2FnZW50X2NvdW50ZXJzIGxpc3Q7XG4gIHJtX3Rva2VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0O1xuICBhZGRfdG9rZW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3Q7XG4gIGtfZGVmOiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50O1xuICBrX3VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudClcbiAgICAqICgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSBvcHRpb24pXG4gICAgb3B0aW9uO1xuICBwb3M6IExvYy50O1xufVxuKCoqIEludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBmb3IgcnVsZSB0eXBlICopXG5cbigqKiBbYXNzZW1ibGVfcnVsZV0gdHJhbnNsYXRlcyBhIHJ1bGVfaW50ZXJfcmVwIGludG8gYSBMS2FwcGEucnVsZSAqKVxubGV0IGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIChydWxlIDogcnVsZV9pbnRlcl9yZXApXG4gICAgKHNpZ3MgOiBTaWduYXR1cmUucykgKHRvayA6IGludCBNb2RzLlN0cmluZ01hcC50KVxuICAgIChhbGdzIDogaW50IE1vZHMuU3RyaW5nTWFwLnQpIDogTEthcHBhLnJ1bGUgPVxuICBsZXQgKHJfbWl4LCByX2NyZWF0ZWQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICAgIENvdW50ZXJzX2NvbXBpbGVyLmNvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgcnVsZS5taXh0dXJlIHJ1bGUuY3JlYXRlZF9taXhcbiAgaW5cbiAgbGV0IHJfZGVsdGFfdG9rZW5zID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKGFsLCAodGssIHBvcykpIC0+XG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0FMR19PUCAoT3BlcmF0b3IuVU1JTlVTLCBhbCkpKSxcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGsgdG9rIHBvcyApKVxuICAgICAgcnVsZS5ybV90b2tlblxuICAgIHw+IExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgICAgKGZ1biAoYWwsICh0aywgcG9zKSkgLT5cbiAgICAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgYWwsXG4gICAgICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrIHRvayBwb3MgKSlcbiAgICAgICAgIHJ1bGUuYWRkX3Rva2VuXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgbGV0IHJfcmF0ZSA9XG4gICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIHJ1bGUua19kZWZcbiAgaW5cbiAgbGV0IHJfdW5fcmF0ZSA9XG4gICAgbGV0IHJfZGlzdCBkID1cbiAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICA/bWF4X2FsbG93ZWRfdmFyOk5vbmUgZFxuICAgIGluXG4gICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAoZnVuICh1bl9yYXRlJywgZGlzdCkgLT5cbiAgICAgICAgbGV0IHVuX3JhdGUnJyA9XG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyOk5vbmUgdW5fcmF0ZSdcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBkIC0+IHVuX3JhdGUnJywgU29tZSAocl9kaXN0IGQpXG4gICAgICAgIHwgTm9uZSAtPiB1bl9yYXRlJycsIE5vbmUpXG4gICAgICBydWxlLmtfdW5cbiAgaW5cbiAge1xuICAgIExLYXBwYS5yX21peDtcbiAgICByX2NyZWF0ZWQ7XG4gICAgcl9lZGl0X3N0eWxlID0gcnVsZS5iaWRpcmVjdGlvbmFsO1xuICAgIHJfZGVsdGFfdG9rZW5zO1xuICAgIHJfcmF0ZTtcbiAgICByX3VuX3JhdGU7XG4gIH1cblxubGV0IG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGNvbnRhY3RfbWFwIG1vZGlmXG4gICAgYWNjID1cbiAgbWF0Y2ggbW9kaWYgd2l0aFxuICB8IEFzdC5BUFBMWSAobmIsIChhc3RfcnVsZSwgcG9zKSkgLT5cbiAgICBsZXQgcnVsZSA6IHJ1bGVfaW50ZXJfcmVwID1cbiAgICAgIG1hdGNoIGFzdF9ydWxlLkFzdC5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgcnVsZV9jb250ZW50IC0+XG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfmlzX3J1bGU6dHJ1ZVxuICAgICAgICAgICAgc2lncyB+Y29udGFjdF9tYXAgcnVsZV9jb250ZW50Lm1peFxuICAgICAgICBpblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0ID0gTm9uZTtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gdHJ1ZTtcbiAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgIHJtX3Rva2VuID0gW107XG4gICAgICAgICAgYWRkX3Rva2VuID0gcnVsZV9jb250ZW50LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmID0gYXN0X3J1bGUua19kZWY7XG4gICAgICAgICAga191biA9IGFzdF9ydWxlLmtfdW47XG4gICAgICAgICAgcG9zO1xuICAgICAgICB9XG4gICAgICB8IEFzdC5BcnJvdyBydWxlX2NvbnRlbnQgLT5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgcnVsZV9jb250ZW50LmxocyBydWxlX2NvbnRlbnQucmhzXG4gICAgICAgIGluXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQgPSBOb25lO1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgIHJtX3Rva2VuID0gcnVsZV9jb250ZW50LnJtX3Rva2VuO1xuICAgICAgICAgIGFkZF90b2tlbiA9IHJ1bGVfY29udGVudC5hZGRfdG9rZW47XG4gICAgICAgICAga19kZWYgPSBhc3RfcnVsZS5rX2RlZjtcbiAgICAgICAgICBrX3VuID0gYXN0X3J1bGUua191bjtcbiAgICAgICAgICBwb3M7XG4gICAgICAgIH1cbiAgICBpblxuICAgICggQXN0LkFQUExZXG4gICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIG5iLFxuICAgICAgICAgIChhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBydWxlIHNpZ3MgdG9rIGFsZ3MsIHBvcykgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlVQREFURSAoKGxhYiwgcG9zKSwgaG93KSAtPlxuICAgIGxldCBpID1cbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgICB+ZXhjZXA6XG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJWYXJpYWJsZSBcIiBeIGxhYiBeIFwiIGlzIG5vdCBkZWZpbmVkXCIsIHBvcykpXG4gICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsYWIgYWxncylcbiAgICBpblxuICAgICggQXN0LlVQREFURVxuICAgICAgICAoKGksIHBvcyksIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBob3cpLFxuICAgICAgaSA6OiBhY2MgKVxuICB8IEFzdC5TVE9QIHAgLT5cbiAgICAoIEFzdC5TVE9QXG4gICAgICAgIChMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuU05BUFNIT1QgKHJhdywgcCkgLT5cbiAgICAoIEFzdC5TTkFQU0hPVFxuICAgICAgICAoIHJhdyxcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHBcbiAgICAgICAgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LkRJTiAocmVsLCBwKSAtPlxuICAgICggQXN0LkRJTlxuICAgICAgICAoIHJlbCxcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHBcbiAgICAgICAgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LkRJTk9GRiBwIC0+XG4gICAgKCBBc3QuRElOT0ZGXG4gICAgICAgIChMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHApLFxuICAgICAgYWNjIClcbiAgfCAoQXN0LlBMT1RFTlRSWSB8IEFzdC5DRkxPV0xBQkVMIChfLCBfKSkgYXMgeCAtPiB4LCBhY2NcbiAgfCBBc3QuUFJJTlQgKHAsIHAnKSAtPlxuICAgICggQXN0LlBSSU5UXG4gICAgICAgICggTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwLFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCdcbiAgICAgICAgKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LkNGTE9XTUlYIChiLCAobSwgcG9zKSkgLT5cbiAgICAoIEFzdC5DRkxPV01JWCAoYiwgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBtLCBwb3MpKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlNQRUNJRVNfT0YgKGIsIHAsIChtLCBwb3MpKSAtPlxuICAgICggQXN0LlNQRUNJRVNfT0ZcbiAgICAgICAgKCBiLFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCxcbiAgICAgICAgICAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIG0sIHBvcykgKSxcbiAgICAgIGFjYyApXG5cbmxldCBwZXJ0dXJiYXRpb25fb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGNvbnRhY3RfbWFwXG4gICAgKChhbGFybSwgcHJlLCBtb2RzLCBwb3N0KSwgcG9zKSB1cF92YXJzIDpcbiAgICAoXywgXywgXywgXykgQXN0LnBlcnR1cmJhdGlvbiAqIGludCBsaXN0ID1cbiAgbGV0IG1vZHMnLCB1cF92YXJzJyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAobW9kaWZfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgY29udGFjdF9tYXApXG4gICAgICBtb2RzIHVwX3ZhcnNcbiAgaW5cbiAgbGV0IG1heF9hbGxvd2VkX3ZhciA9IE5vbmUgaW5cbiAgKCAoICggYWxhcm0sXG4gICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgIChib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcilcbiAgICAgICAgICBwcmUsXG4gICAgICAgIG1vZHMnLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcG9zdCApLFxuICAgICAgcG9zICksXG4gICAgdXBfdmFycycgKVxuXG5sZXQgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGNvbnRhY3RfbWFwID0gZnVuY3Rpb25cbiAgfCBBc3QuSU5JVF9NSVggKHdobywgcG9zKSAtPlxuICAgIEFzdC5JTklUX01JWFxuICAgICAgKHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXAgd2hvLCBwb3MpXG4gIHwgQXN0LklOSVRfVE9LIGxhYiAtPlxuICAgIEFzdC5JTklUX1RPS1xuICAgICAgKExpc3QubWFwXG4gICAgICAgICAoZnVuIChsYWIsIHBvcykgLT5cbiAgICAgICAgICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIHRvayB3aXRoXG4gICAgICAgICAgIHwgU29tZSB4IC0+IHgsIHBvc1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgIChsYWIgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB0b2tlblwiLCBwb3MpKSlcbiAgICAgICAgIGxhYilcblxubGV0IGFkZF91bl92YXJpYWJsZSBrX3VuIGFjYyByYXRlX3ZhciA9XG4gIG1hdGNoIGtfdW4gd2l0aFxuICB8IE5vbmUgLT4gYWNjLCBOb25lXG4gIHwgU29tZSAoaywgZGlzdCkgLT5cbiAgICBsZXQgYWNjX3VuLCBrJyA9XG4gICAgICBpZiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBrKSB0aGVuXG4gICAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBrKSA6OiBhY2MsXG4gICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkFMR19WQVIgcmF0ZV92YXIpIClcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjLCBrXG4gICAgaW5cbiAgICBhY2NfdW4sIFNvbWUgKGsnLCBkaXN0KVxuXG50eXBlIGFjY19mdW5jdGlvbl9ydWxlcyA9IHtcbiAgcnVsZV9uYW1lczogaW50ICogTW9kcy5TdHJpbmdTZXQudDtcbiAgZXh0cmFfdmFyczpcbiAgICAoc3RyaW5nIExvYy5hbm5vdGVkICogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQpIGxpc3Q7XG4gIGNsZWFuZWRfcnVsZXM6IHJ1bGVfaW50ZXJfcmVwIGxpc3Q7XG59XG5cbigqKiBbbmFtZV9hbmRfcHVyaWZ5XSBpcyBjYWxsZWQgaW4gYSBmb2xkIHdoaWxlIGNvbXBpbGluZyB0aGUgcnVsZXMgZnJvbSBBc3QucnVsZXMgaW50byBydWxlX2ludGVyX3JlcCAqKVxubGV0IG5hbWVfYW5kX3B1cmlmeV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgIChhY2MgOiBhY2NfZnVuY3Rpb25fcnVsZXMpXG4gICAgKChsYWJlbF9vcHQsIChhc3RfcnVsZSwgcl9wb3MpKSA6XG4gICAgICBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIDogYWNjX2Z1bmN0aW9uX3J1bGVzID1cbiAgbGV0IHJ1bGVfbmFtZXMnLCBydWxlX2xhYmVsID1cbiAgICBnaXZlX3J1bGVfbGFiZWwgYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCBhY2MucnVsZV9uYW1lcyBBc3QucHJpbnRfYXN0X3J1bGVcbiAgICAgIGFzdF9ydWxlIGxhYmVsX29wdFxuICBpblxuICBsZXQgYWNjJywga19kZWYgPVxuICAgIGlmIEFsZ19leHByLmhhc19taXggKExvYy52IGFzdF9ydWxlLmtfZGVmKSB0aGVuIChcbiAgICAgIGxldCByYXRlX3ZhciA9IHJ1bGVfbGFiZWwgXiBcIl9yYXRlXCIgaW5cbiAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBhc3RfcnVsZS5rX2RlZikgOjogYWNjLmV4dHJhX3ZhcnMsXG4gICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKSApXG4gICAgKSBlbHNlXG4gICAgICBhY2MuZXh0cmFfdmFycywgYXN0X3J1bGUuQXN0LmtfZGVmXG4gIGluXG4gIGxldCBhY2MnJywga191biA9XG4gICAgYWRkX3VuX3ZhcmlhYmxlIGFzdF9ydWxlLmtfdW4gYWNjJyAocnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIilcbiAgaW5cbiAgbWF0Y2ggYXN0X3J1bGUucmV3cml0ZSB3aXRoXG4gIHwgQXN0LkVkaXQgZSAtPlxuICAgIGlmXG4gICAgICBhc3RfcnVsZS5iaWRpcmVjdGlvbmFsIHx8IGFzdF9ydWxlLmtfb3AgPD4gTm9uZVxuICAgICAgfHwgYXN0X3J1bGUua19vcF91biA8PiBOb25lXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiUnVsZXMgaW4gZWRpdCBub3RhdGlvbiBjYW5ub3QgYmUgYmlkaXJlY3Rpb25hbFwiLCByX3BvcykpO1xuICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlOnRydWUgc2lnc1xuICAgICAgICB+Y29udGFjdF9tYXAgZS5Bc3QubWl4XG4gICAgaW5cbiAgICB7XG4gICAgICBydWxlX25hbWVzID0gcnVsZV9uYW1lcyc7XG4gICAgICBleHRyYV92YXJzID0gYWNjJyc7XG4gICAgICBjbGVhbmVkX3J1bGVzID1cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdDtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gdHJ1ZTtcbiAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgIHJtX3Rva2VuID0gW107XG4gICAgICAgICAgYWRkX3Rva2VuID0gZS5Bc3QuZGVsdGFfdG9rZW47XG4gICAgICAgICAga19kZWY7XG4gICAgICAgICAga191bjtcbiAgICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgICAgfVxuICAgICAgICA6OiBhY2MuY2xlYW5lZF9ydWxlcztcbiAgICB9XG4gIHwgQXN0LkFycm93IGEgLT5cbiAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgYS5Bc3QubGhzIGEuQXN0LnJoc1xuICAgIGluXG4gICAgbGV0IHJ1bGVzJyA9XG4gICAgICB7XG4gICAgICAgIGxhYmVsX29wdDtcbiAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICBtaXh0dXJlO1xuICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgcm1fdG9rZW4gPSBhLkFzdC5ybV90b2tlbjtcbiAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICBrX2RlZjtcbiAgICAgICAga191bjtcbiAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICB9XG4gICAgICA6OiBhY2MuY2xlYW5lZF9ydWxlc1xuICAgIGluXG4gICAgbGV0IGFjYycnJywgcnVsZXMnJyA9XG4gICAgICBtYXRjaCBhc3RfcnVsZS5iaWRpcmVjdGlvbmFsLCBhc3RfcnVsZS5rX29wIHdpdGhcbiAgICAgIHwgdHJ1ZSwgU29tZSBrIHdoZW4gQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgaykgLT5cbiAgICAgICAgbGV0IHJhdGVfdmFyID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3JhdGVcIiBpblxuICAgICAgICBsZXQgcmF0ZV92YXJfdW4gPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiIGluXG4gICAgICAgIGxldCBhY2NfdW4sIGtfb3BfdW4gPVxuICAgICAgICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX29wX3VuIGFjYycnIHJhdGVfdmFyX3VuXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGEuQXN0LnJocyBhLkFzdC5saHNcbiAgICAgICAgaW5cbiAgICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGspIDo6IGFjY191bixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbF9vcHQgPVxuICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biAobCwgcCkgLT4gQXN0LmZsaXBfbGFiZWwgbCwgcCkgbGFiZWxfb3B0O1xuICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgICAgcm1fdG9rZW4gPSBhLkFzdC5hZGRfdG9rZW47XG4gICAgICAgICAgICBhZGRfdG9rZW4gPSBhLkFzdC5ybV90b2tlbjtcbiAgICAgICAgICAgIGtfZGVmID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkFMR19WQVIgcmF0ZV92YXIpO1xuICAgICAgICAgICAga191biA9IGtfb3BfdW47XG4gICAgICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgICAgICB9XG4gICAgICAgICAgOjogcnVsZXMnIClcbiAgICAgIHwgdHJ1ZSwgU29tZSByYXRlIC0+XG4gICAgICAgIGxldCByYXRlX3Zhcl91biA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IGFjY191biwga19vcF91biA9XG4gICAgICAgICAgYWRkX3VuX3ZhcmlhYmxlIGFzdF9ydWxlLmtfb3BfdW4gYWNjJycgcmF0ZV92YXJfdW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgYS5Bc3QucmhzIGEuQXN0Lmxoc1xuICAgICAgICBpblxuICAgICAgICAoIGFjY191bixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbF9vcHQgPVxuICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biAobCwgcCkgLT4gQXN0LmZsaXBfbGFiZWwgbCwgcCkgbGFiZWxfb3B0O1xuICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICAgICAgcm1fdG9rZW4gPSBhLkFzdC5hZGRfdG9rZW47XG4gICAgICAgICAgICBhZGRfdG9rZW4gPSBhLkFzdC5ybV90b2tlbjtcbiAgICAgICAgICAgIGtfZGVmID0gcmF0ZTtcbiAgICAgICAgICAgIGtfdW4gPSBrX29wX3VuO1xuICAgICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIDo6IHJ1bGVzJyApXG4gICAgICB8IGZhbHNlLCBOb25lIC0+IGFjYycnLCBydWxlcydcbiAgICAgIHwgZmFsc2UsIFNvbWUgXyB8IHRydWUsIE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICggXCJJbmNvbXBhdGlibGUgYXJyb3cgYW5kIGtpbmVjdGljIHJhdGUgZm9yIGludmVyc2UgZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgcl9wb3MgKSlcbiAgICBpblxuICAgIHsgcnVsZV9uYW1lcyA9IHJ1bGVfbmFtZXMnOyBleHRyYV92YXJzID0gYWNjJycnOyBjbGVhbmVkX3J1bGVzID0gcnVsZXMnJyB9XG5cbnR5cGUgc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyA9XG4gIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQpIGxpc3QgU2lnbmF0dXJlLnNpdGVfc2lnXG4oKiogVGVtcG9yYXJ5IHR5cGUgdG8gc3RvcmUgc2l0ZSBzaWduYXR1cmUgd2l0aCBsaXN0IGxpbmtzIGluc3RlYWQgb2YgYXJyYXkgYXJyYXkgbGlua3MgKilcblxuKCoqIFtwcmVwYXJlX2FnZW50X3NpZyB+c2l0ZXMgZXZhbHVhdGVzIHRvIChzaXRlX3NpZ3MsIGNvdW50ZXJfbGlzdCkgd2hpY2ggZGVzY3JpYmUgZGF0YSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIFNpZ25hdHVyZS50IGZvciBhIHNpbmdsZSBhZ2VudCopXG5sZXQgcHJlcGFyZV9hZ2VudF9zaWcgfihzaXRlcyA6IEFzdC5zaXRlIGxpc3QpIDpcbiAgICBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0ID1cbiAgbGV0ICggKHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMpIGxpc3QpLFxuICAgICAgICAoY291bnRlcl9uYW1lcyA6IHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gc2l0ZSAoYWNjX3NpdGVfc2lncywgYWNjX2NvdW50ZXJfbmFtZXMpIC0+XG4gICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAoKiBUT0RPIHNlZSBpZiBjYW4gcmVtb3ZlIEFzdCBoZXJlICopXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPlxuICAgICAgICAgICggKCBwLnBvcnRfbmFtZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICBOYW1lZERlY2xzLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHgsIHBvcyAtPiAoeCwgcG9zKSwgKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUsIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBpbnRlcm5hbCBzdGF0ZSBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHAucG9ydF9pbnQpO1xuICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjX2xpbmtzJyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCAoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19BTlkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19saW5rcydcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1ZBTFVFIF8pLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gbGluayBzdGF0dXMgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKGEsIGIpLCBfIC0+IChhLCBiKSA6OiBhY2NfbGlua3MnKVxuICAgICAgICAgICAgICAgICAgICAgICBbXSBwLnBvcnRfbGluayk7XG4gICAgICAgICAgICAgICAgY291bnRlcnNfaW5mbyA9IE5vbmU7XG4gICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgIGFjY19jb3VudGVyX25hbWVzIClcbiAgICAgICAgfCBDb3VudGVyIGMgLT5cbiAgICAgICAgICAoKiBXZSBhcmUgcmVhZGluZyBoZXJlIGEgc2lnbmF0dXJlLCBvbmx5IENFUSB0ZXN0cyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgICAgICAobWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IG4sIHBvcyA9IGMuY291bnRlcl9uYW1lIGluXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAoXCJDb3VudGVyIFwiIF4gbiBeIFwiIHNob3VsZCBoYXZlIGEgdGVzdCBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgICB8IFNvbWUgKHRlc3QsIHBvcykgLT5cbiAgICAgICAgICAgIChtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICAgIHwgQ1ZBUiBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoXCJDb3VudGVyIHNob3VsZCBub3QgaGF2ZSBhIHZhciBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQ0dURSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoXCJDb3VudGVyIHNob3VsZCBub3QgaGF2ZSA+PSBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQ0xURSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoXCJDb3VudGVyIHNob3VsZCBub3QgaGF2ZSA8PSBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgICAgIHwgQ0VRIGogLT5cbiAgICAgICAgICAgICAgKCAoIGMuY291bnRlcl9uYW1lLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICAgICAgICAgICAgICAgICgqIEFnZW50IHdpdGggY291bnRlciBjYW4gbGluayB0byBwb3J0IFtiXSBvbiBjb3VudGVyIGFnZW50IFtfX2NvdW50ZXJfYWdlbnRdICopXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXkgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgXCJfX2NvdW50ZXJfYWdlbnRcIiApO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcnNfaW5mbyA9IFNvbWUgKGosIExvYy52IGMuY291bnRlcl9kZWx0YSk7XG4gICAgICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgICAgICA6OiBhY2Nfc2l0ZV9zaWdzLFxuICAgICAgICAgICAgICAgIGMuY291bnRlcl9uYW1lIDo6IGFjY19jb3VudGVyX25hbWVzICkpKSlcbiAgICAgIHNpdGVzIChbXSwgW10pXG4gIGluXG4gIE5hbWVkRGVjbHMuY3JlYXRlX2Zyb21fbGlzdCBzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMsIGNvdW50ZXJfbmFtZXNcblxuKCoqIFttYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudF0gZXZhbHVhdGVzIHRvXG4gIChjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50KSB3aGljaCBkZXNjcmliZSB0aGUgY291bnRlclxuICAgICAgYWdlbnQgYW5kIGl0cyBzaXRlIHNpZ25hdHVyZXMgd2l0aCBwb3NzaWJsZSBsaW5rcyB0byBvdGhlciBhZ2VudHMuXG4gICAgICBbY291bnRlcl9pbmZvXSBhc3NvY2lhdGVzIGVhY2ggYWdlbnQgdG8gYSBsaXN0IG9mIGNvdW50ZXIgcG9ydHMsIG9uZSBmb3IgZWFjaCBkZWZpbmVkIGNvdW50ZXIgKilcbmxldCBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzXG4gICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6ICgoc3RyaW5nICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSBsaXN0KSBsaXN0KSA6XG4gICAgKHN0cmluZyAqIExvYy50KVxuICAgICogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZyBOYW1lZERlY2xzLnRcbiAgICA9XG4gIGxldCBjb3VudGVyX2FnZW50X25hbWUgPSBcIl9fY291bnRlcl9hZ2VudFwiLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGFfcG9ydF9uYW1lID0gXCJhXCIsIExvYy5kdW1teSBpblxuICAoKiBhZnRlciBwb3J0ICopXG4gIGxldCBiX3BvcnRfbmFtZSA9IFwiYlwiLCBMb2MuZHVtbXkgaW5cblxuICAoKiBiZWZvcmUgcG9ydCAqKVxuXG4gICgqIFBvcnQgW2FdIGNhbiBsaW5rIHRvIHBvcnQgYiBvZiBhZ2VudCBvZiB0eXBlIGNvdW50ZXIgYWdlbnQgKilcbiAgbGV0IGFfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgWyBiX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF07XG4gICAgICBjb3VudGVyc19pbmZvID0gTm9uZTtcbiAgICB9XG4gIGluXG4gICgqIFBvcnQgW2JdIGNhbiBsaW5rIHRvIHBvcnQgYSBvZiBhZ2VudCBvZiB0eXBlIGNvdW50ZXIgYWdlbnRcbiAgICogT1IgZm9yIGVhY2ggYWdlbnQgW2FnZW50X25hbWVdIHdpdGggY291bnRlcnMsIHRvIHRoZWlyIHBvcnRzXG4gICAqIFthZ2VudF9jb3VudGVyX3BvcnRfbmFtZV0gKilcbiAgbGV0IGJfbGlua3MgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAoYWdlbnRfbmFtZSwgY291bnRlcnNfZnJvbV9hZ2VudCkgYWNjIC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBhZ2VudF9jb3VudGVyX3BvcnRfbmFtZSAtPiBhZ2VudF9jb3VudGVyX3BvcnRfbmFtZSwgYWdlbnRfbmFtZSlcbiAgICAgICAgICBjb3VudGVyc19mcm9tX2FnZW50XG4gICAgICAgIEAgYWNjKVxuICAgICAgY291bnRlcnNfcGVyX2FnZW50XG4gICAgICBbIGFfcG9ydF9uYW1lLCBjb3VudGVyX2FnZW50X25hbWUgXVxuICBpblxuICBsZXQgYl9wb3J0X3NpZyA9XG4gICAge1xuICAgICAgU2lnbmF0dXJlLmludGVybmFsX3N0YXRlID0gTmFtZWREZWNscy5jcmVhdGUgW3x8XTtcbiAgICAgIGxpbmtzID0gU29tZSBiX2xpbmtzO1xuICAgICAgY291bnRlcnNfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICBsZXQgc2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQgPVxuICAgIE5hbWVkRGVjbHMuY3JlYXRlIFt8IGFfcG9ydF9uYW1lLCBhX3BvcnRfc2lnOyBiX3BvcnRfbmFtZSwgYl9wb3J0X3NpZyB8XVxuICBpblxuICBjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50XG5cbmxldCBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+KGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbClcbiAgICAoYWdlbnRfc2lnc19wcmUgOiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCBOYW1lZERlY2xzLnQpIDpcbiAgICBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICBsZXQgc2l6ZV9zaWdzID0gTmFtZWREZWNscy5zaXplIGFnZW50X3NpZ3NfcHJlIGluXG4gIE5hbWVkRGVjbHMubWFwaVxuICAgIChmdW4gYWdfaWQgYWdfbmFtZSAtPlxuICAgICAgTmFtZWREZWNscy5tYXAgKGZ1biBzaXRlX25hbWVfYWcxIHNpdGVfc2lnIC0+XG4gICAgICAgICAgaWYgbm90IGJ1aWxkX2NvbnRhY3RfbWFwIHRoZW5cbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBOb25lIH1cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFVwZGF0ZSBsaW5rcyAqKVxuICAgICAgICAgICAgKCogVE9ETyBpbXByb3ZlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgICAgICAgIGxldCBzaXRlX2xpbmtzID1cbiAgICAgICAgICAgICAgQXJyYXkuaW5pdCAoc2l6ZV9zaWdzIC0gYWdfaWQpIChmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5zaXplXG4gICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgKGkgKyBhZ19pZCkpKVxuICAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoKChzaXRlX25hbWVfYWcyLCBwb3MpIGFzIHNpdGVfbmFtZSksICgoYWcyX25hbWUsIF8pIGFzIGFnKSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWcyX2lkID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ1wiIGFnZW50X3NpZ3NfcHJlIGFnIGluXG4gICAgICAgICAgICAgICAgbGV0IHNpdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJzaXRlIG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIGFnMl9pZClcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBhZzJfaWQgPj0gYWdfaWQgdGhlblxuICAgICAgICAgICAgICAgICAgc2l0ZV9saW5rcy4oYWcyX2lkIC0gYWdfaWQpLihzaXRlX2lkKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayA9XG4gICAgICAgICAgICAgICAgICBub3RcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCh4LCBfKSwgKHksIF8pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzaXRlX25hbWVfYWcxICYmIHkgPSBhZ19uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAoKE5hbWVkRGVjbHMuZWx0X3ZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGlua3MgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmIFwiTm8gbGluayB0byAlcy4lcyBmcm9tICVzLiVzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlX25hbWVfYWcxIGFnX25hbWUgc2l0ZV9uYW1lX2FnMiBhZzJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2Ugc2l0ZV9zaWcubGlua3MpO1xuICAgICAgICAgICAgeyBzaXRlX3NpZyB3aXRoIFNpZ25hdHVyZS5saW5rcyA9IFNvbWUgc2l0ZV9saW5rcyB9XG4gICAgICAgICAgKSkpXG4gICAgYWdlbnRfc2lnc19wcmVcblxubGV0IGNyZWF0ZV9zaWdzIChsIDogQXN0LmFnZW50IGxpc3QpIDogU2lnbmF0dXJlLnMgPVxuICAoKiBDb250YWN0IG1hcCBzaG91bGQgYmUgYnVpbHQgb25seSBpZiBhIHNwZWNpZmljIGxpbmsgaXMgZGVzY3JpYmVkIGluIHRoZSBkZWZpbml0aW9uIG9mIHNpZ25hdHVyZSAqKVxuICBsZXQgYnVpbGRfY29udGFjdF9tYXAgOiBib29sID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MwIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LkFic2VudCBwb3MgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIkFic2VudCBhZ2VudCBhcmUgZm9yYmlkZGVuIGluIHNpZ25hdHVyZVwiLCBwb3MpKVxuICAgICAgICB8IEFzdC5QcmVzZW50IChfLCBzaXRlcywgXykgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2MxIHNpdGUgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0LkNvdW50ZXIgXyAtPiBhY2MxXG4gICAgICAgICAgICAgIHwgQXN0LlBvcnQgcCAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYzIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19BTlkpLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYWNjMlxuICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1ZBTFVFIF8pLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gbGluayBzdGF0dXMgaW5zaWRlIGEgZGVmaW5pdGlvbiBvZiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyApKVxuICAgICAgICAgICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSAoXywgXyksIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgIGFjYzEgcC5Bc3QucG9ydF9saW5rKVxuICAgICAgICAgICAgYWNjMCBzaXRlcylcbiAgICAgIGZhbHNlIGxcbiAgaW5cblxuICBsZXQgKCAoc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzIDpcbiAgICAgICAgICAoc3RyaW5nIExvYy5hbm5vdGVkICogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQpIGxpc3QpLFxuICAgICAgICAoY291bnRlcnNfcGVyX2FnZW50IDpcbiAgICAgICAgICAoc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3QpIGxpc3QpICkgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBhZ2VudCAoYWNjX3NpZ3MsIGFjY19jb3VudGVyc19wZXJfYWdlbnQpIC0+XG4gICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjX3NpZ3MsIGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZSwgc2l0ZXMsIF8pIC0+XG4gICAgICAgICAgbGV0IHNpdGVfc2lnc19uZCwgY291bnRlcnNfYWdlbnQgPSBwcmVwYXJlX2FnZW50X3NpZyB+c2l0ZXMgaW5cbiAgICAgICAgICBsZXQgY291bnRlcnMnID1cbiAgICAgICAgICAgIGlmIGNvdW50ZXJzX2FnZW50ID0gW10gdGhlblxuICAgICAgICAgICAgICBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIChhZ2VudF9uYW1lLCBjb3VudGVyc19hZ2VudCkgOjogYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgKGFnZW50X25hbWUsIHNpdGVfc2lnc19uZCkgOjogYWNjX3NpZ3MsIGNvdW50ZXJzJylcbiAgICAgIGwgKFtdLCBbXSlcbiAgaW5cblxuICBsZXQgYWdlbnRfc2lncyA6IFNpZ25hdHVyZS50IE5hbWVkRGVjbHMudCA9XG4gICAgKGlmIGNvdW50ZXJzX3Blcl9hZ2VudCA9IFtdIHRoZW5cbiAgICAgICBzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHNcbiAgICAgZWxzZVxuICAgICAgIG1ha2VfY291bnRlcl9hZ2VudF9zaXRlX3NpZ3MgY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgOjogc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzKVxuICAgIHw+IE5hbWVkRGVjbHMuY3JlYXRlX2Zyb21fbGlzdFxuICAgIHw+IGFnZW50X3NpZ3Nfb2ZfYWdlbnRfc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzIH5idWlsZF9jb250YWN0X21hcFxuICBpblxuXG4gICgqIFRPRE8gc2VlIGFnZW50X3NpZ3MgbmFtaW5ncyAqKVxuICBTaWduYXR1cmUuY3JlYXRlIH5jb3VudGVyc19wZXJfYWdlbnQgYWdlbnRfc2lnc1xuXG5sZXQgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgY29udGFjdF9tYXAgdG9rIGFsZ3MgaW5pdHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGV4cHIsIGluaSkgLT5cbiAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGV4cHIsXG4gICAgICAgIGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBjb250YWN0X21hcCBpbmkgKSlcbiAgICBpbml0c1xuXG50eXBlIGFzdF9jb21waWxlZF9kYXRhID0ge1xuICBhZ2VudHNfc2lnOiBTaWduYXR1cmUucztcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIHRva2VuX25hbWVzOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgYWxnX3ZhcnNfZmluZGVyOiBpbnQgTW9kcy5TdHJpbmdNYXAudDtcbiAgdXBkYXRlZF9hbGdfdmFyczogaW50IGxpc3Q7XG4gIHJlc3VsdDpcbiAgICAoQXN0LmFnZW50LCBMS2FwcGEucnVsZV9taXh0dXJlLCBSYXdfbWl4dHVyZS50LCBpbnQsIExLYXBwYS5ydWxlKSBBc3QuY29tcGlsO1xuICAgICAgKCoqIENvbXBpbGVkIGRhdGEgd2hlcmUgaWRlbnRpZmllcnMgYXJlIGkgQXN0LmNvbXBpbCB3aGVyZSBpZGVudGlmaWVyc1xuICAgICAqIGFyZSBpbnRlZ2VycyBhbmQgbm90IHN0cmluZywgc3ludGFjdGljIHN1Z2FyIG9uIHJ1bGVzIGFyZSBleHBhbnNlZFxuICAgICAqIChzeW50YWN0aWMgc3VnYXIgb24gbWl4dHVyZSBhcmUgbm90KSAqKVxufVxuXG4oKiogRXZhbHVhdGVzIHRvIGEgYXN0X2NvbXBpbCB3aGVyZSBjbHRlIHRlc3RzIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGNndGUgdGVzdHMuXG4gKiBGb3IgdGhpcywgZm9yIGVhY2ggY291bnRlciB3aGVyZSBhIENMVEUgdGVzdCBpcyBwcmVzZW50LCB3aG9zZSB2YWx1ZXMgYXJlIGluIFtcXFthLCBiXFxdXSwgaW5pdGlhbGl6ZWQgYXQgW2ldIGFuZCBhZGQgYSBuZXcgY291bnRlciBiZWxvbmdpbmcgaW4gW2EsIGJdIGluaXRpYWxpemVkIGF0IFthK2ItaV0uXG4gKiBFYWNoIHRlc3QgWz4gdmFsdWVdIGlzIHRoZW4gdHJhbnNsYXRlZCBpbnRvIGEgdGVzdCB0byB0aGUgXCJpbnZlcnRlZFwiIGNvdW50ZXIgYXMgWzwgYStiLXZhbHVlXS5cbiAqIEVhY2ggZGVsdGEgWysgZGVsdGFdIGlzIHRyYW5zbGF0ZWQgaW50byBhIFstIGRlbHRhXSAqKVxubGV0IHRyYW5zbGF0ZV9jbHRlX2ludG9fY2d0ZSAoYXN0X2NvbXBpbCA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgPVxuICBsZXQgY291bnRlcl9mb2xkIChmIDogJ2EgbGlzdCAtPiBzdHJpbmcgLT4gQXN0LmNvdW50ZXIgLT4gJ2EgbGlzdCkgOiAnYSBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MxIHJ1bGVfZGVmIC0+XG4gICAgICAgIGxldCBydWxlIDogQXN0LnJ1bGUgPSBydWxlX2RlZiB8PiBzbmQgfD4gTG9jLnYgaW5cbiAgICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgICAgfCBBc3QuRWRpdCBfIC0+IGFjYzEgKCogbm8gY291bnRlciB0ZXN0IGFsbG93ZWQgaW4gZWRpdCBydWxlICopXG4gICAgICAgIHwgQXN0LkFycm93IGNvbnRlbnQgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2MyIGFnZW50X2xpc3QgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYzMgYWdlbnQgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjYzNcbiAgICAgICAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVfbGlzdCwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYzQgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjNFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT4gZiBhY2M0IChMb2MudiBhZ2VudF9uYW1lKSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGFjYzMgc2l0ZV9saXN0KVxuICAgICAgICAgICAgICAgIGFjYzIgYWdlbnRfbGlzdClcbiAgICAgICAgICAgIGFjYzEgY29udGVudC5saHMpXG4gICAgICBbXSBhc3RfY29tcGlsLnJ1bGVzXG4gIGluXG5cbiAgbGV0IGludmVydGVkX2NvdW50ZXJfc3VmZml4ID0gXCJfX2ludmVydGVkXCIgaW5cbiAgbGV0IGludmVydGVkX2NvdW50ZXJfbmFtZSAobmFtZSA6IHN0cmluZykgOiBzdHJpbmcgPVxuICAgIG5hbWUgXiBpbnZlcnRlZF9jb3VudGVyX3N1ZmZpeFxuICBpblxuXG4gICgqIEZpbmQgY291bnRlcnMgdGhhdCBoYXZlIENMVEUgdGVzdHMsIGFuZCBidWlsZCBsaXN0OiBhZ2VudF9uYW1lLCBjb3VudGVyX25hbWUsIHN1bV9ib3VuZHNfcmVmIGxpc3QuXG4gICAqIHN1bV9ib3VuZHNfcmVmIGlzIHRoZW4gZmlsbGVkIHdoZW4gcmVhZGluZyB0aGUgc2lnbmF0dXJlIGFuZCB1c2VkIHRvIHNwZWNpZnkgZm9yIGludmVydGVkIGNvdW50ZXIgaW5pdCB2YWx1ZSBvciB0ZXN0IHZhbHVlIGFzIFtzdW1fYm91bmRzX3JlZiAtIHZhbHVlXSAqKVxuICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIDogKHN0cmluZyAqIHN0cmluZyAqIGludCByZWYpIGxpc3QgPVxuICAgIGNvdW50ZXJfZm9sZCAoZnVuIGFjYyBhZ2VudF9uYW1lIGNvdW50ZXIgLT5cbiAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA9IExvYy52IGNvdW50ZXIuY291bnRlcl9uYW1lIGluXG4gICAgICAgICgqIEZvcmJpZCBwcmVmaXggdG8gYXZvaWQgbm9uc2Vuc2UgaW4gY291bnRlciBkZWZpbml0aW9uICopXG4gICAgICAgIGlmIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDppbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBjb3VudGVyX25hbWUgdGhlblxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcImNhbm5vdCBlbmQgY291bnRlciBuYW1lIGJ5IFxcXCJcIiBeIGludmVydGVkX2NvdW50ZXJfc3VmZml4IF4gXCJcXFwiXCIsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlci5jb3VudGVyX25hbWUgKSk7XG4gICAgICAgICgqIFJldHVybiBjb3VudGVyIG5hbWUgYWxvbmcgd2l0aCBtYXRjaGluZyBhZ2VudF9uYW1lICopXG4gICAgICAgIG1hdGNoIE9wdGlvbl91dGlsLm1hcCBMb2MudiBjb3VudGVyLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgIHwgU29tZSAoQXN0LkNMVEUgXykgLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZTIsIGNvdW50ZXJfbmFtZTIsIF8pIC0+XG4gICAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGFnZW50X25hbWUgYWdlbnRfbmFtZTJcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgY291bnRlcl9uYW1lIGNvdW50ZXJfbmFtZTIpXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhZ2VudF9uYW1lLCBjb3VudGVyX25hbWUsIHJlZiAwKSA6OiBhY2NcbiAgICAgICAgfCBTb21lIChBc3QuQ0VRIF8pIHwgU29tZSAoQXN0LkNHVEUgXykgfCBTb21lIChBc3QuQ1ZBUiBfKSB8IE5vbmUgLT4gYWNjKVxuICBpblxuXG4gICgqIENyZWF0ZSBvcHBvc2l0ZSBjb3VudGVycyB0aGF0IGhhdmUgdGhlIHNhbWUgdGVzdHMgKilcbiAgbGV0IHNpZ25hdHVyZXMgOiBBc3QuYWdlbnQgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgKHN0cmluZyAqIHN0cmluZyAqIGludCByZWYpIGxpc3QgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZV9jb3VudGVyLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgIGFnZW50X25hbWUgPSBhZ2VudF9uYW1lX2NvdW50ZXIpXG4gICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld19jb3VudGVyX3NpdGVzIDogQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIGFjYyAoXywgY291bnRlcl9uYW1lLCBzdW1fYm91bmRzX3JlZikgLT5cbiAgICAgICAgICAgICAgICAoKiBGaW5kIGNvdW50ZXIgdG8gaW52ZXJ0ICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfb3JpZyA6IEFzdC5jb3VudGVyID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUgPSBjb3VudGVyX25hbWUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAgICAgc2l0ZV9saXN0XG4gICAgICAgICAgICAgICAgICB8PiBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICBpblxuXG4gICAgICAgICAgICAgICAgKCogTWFrZSBpbnZlcnRlZCBjb3VudGVyIGRlY2xhcmF0aW9uICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCA9XG4gICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgIChmdW4gbmFtZSAtPiBpbnZlcnRlZF9jb3VudGVyX25hbWUgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcl9vcmlnLmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfdGVzdCA9IGNvdW50ZXJfb3JpZy5jb3VudGVyX3Rlc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcl9kZWx0YSA9IGNvdW50ZXJfb3JpZy5jb3VudGVyX2RlbHRhIGluXG5cbiAgICAgICAgICAgICAgICAoKiBXcml0ZSBpbiBzdW1fYm91bmRzX3JlZiB0aGUgc3VtIG9mIHRoZSBjb3VudGVyIGJvdW5kcyBhYm92ZSAqKVxuICAgICAgICAgICAgICAgIGxldCBpbmZfYm91bmQgPVxuICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcl90ZXN0IHw+IE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZSB8PiBMb2MudlxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDR1RFIF8gfCBDTFRFIF8gfCBDVkFSIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIHNob3VsZCBoYXZlIENFUSB0ZXN0IHZhbHVlIGluIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX25hbWUgKSlcbiAgICAgICAgICAgICAgICAgIHwgQ0VRIHZhbHVlIC0+IHZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3VwX2JvdW5kID0gTG9jLnYgY291bnRlcl9kZWx0YSBpblxuICAgICAgICAgICAgICAgIHN1bV9ib3VuZHNfcmVmIDo9IGluZl9ib3VuZCArIHN1cF9ib3VuZDtcblxuICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyIHsgY291bnRlcl9uYW1lOyBjb3VudGVyX3Rlc3Q7IGNvdW50ZXJfZGVsdGEgfSA6OiBhY2MpXG4gICAgICAgICAgICAgIFtdIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgaW5cblxuICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0IEAgbmV3X2NvdW50ZXJfc2l0ZXMsIGFnZW50X21vZCkpXG4gICAgICBhc3RfY29tcGlsLnNpZ25hdHVyZXNcbiAgaW5cblxuICAoKiBJbiBydWxlcywgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBjb3VudGVyIHRlc3RzIGFuZCB0aGUgY291bnRlciBtb2RpZmljYXRpb25zICopXG4gIGxldCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgICAgKHN0cmluZyAqIHN0cmluZyAqIGludCByZWYpIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIChhZ2VudF9uYW1lX2NvdW50ZXIsIF8sIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIGFnZW50X25hbWUgPSBhZ2VudF9uYW1lX2NvdW50ZXIpXG4gICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogQWRkIGRlbHRhIHRvIGNvdW50ZXIgYXMgb3Bwb3NpdGUgZGVsdGFzIHRvIGNvdW50ZXJfZGVsdGEgKilcbiAgICAgICAgICAgICAgbGV0IChhZGRlZF9zaXRlcywgc2l0ZV9saXN0X3dpdGhfb3Bwb3NpdGVfZGVsdGFzKSA6XG4gICAgICAgICAgICAgICAgICBBc3Quc2l0ZSBsaXN0ICogQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRfbWFwXG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXywgbmFtZSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsIChMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSkgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChfLCBfLCBzdW1fYm91bmRzX3JlZikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBbY2x0ZV92YWx1ZV9vcl9ub25lXSBkaXNjcmltaW5hdGVzIHRoZSBjYXNlIHdoZXJlIHRoaXMgc2l0ZSBpbiB0aGlzIGV4cHJlc3Npb24gaGFzIGEgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2x0ZV92YWx1ZV9vcl9ub25lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgXyB8IENHVEUgXyB8IENWQVIgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0xURSB2YWx1ZSAtPiBTb21lIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjbHRlX3ZhbHVlX29yX25vbmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgdGVzdCwgaXQgZG9lc24ndCBuZWVkIGludmVyc2lvbjogd2UgYWRkIGludmVydGVkIGNvdW50ZXIgd2l0aG91dCB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGludmVydGVkX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfdGVzdCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZGVsdGEgLT4gLWRlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRoZSB0ZXN0IGlzIENMVEUsIHdlIGludmVydCBpdCAqKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFNpdGUgd2l0aCBpbnZlcnRlZCBjb3VudGVyIHdpdGggQ0dURSB0ZXN0IGluc3RlYWQgb2YgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DR1RFICghc3VtX2JvdW5kc19yZWYgLSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExvYy5jb3B5X2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX3Rlc3QpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBkZWx0YSAtPiAtZGVsdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIG5ld19zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZSBjb3VudGVyIHZhbHVlIGlzIGNoYW5naW5nLCB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgb3JpZ2luYWwgY291bnRlciB0b28gKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxfY291bnRlcl9zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyIHsgY291bnRlciB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfY291bnRlcl9zaXRlIDo6IGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpKVxuICAgICAgICAgICAgICAgICAgW10gc2l0ZV9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZXdfc2l0ZV9saXN0IDogQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgc2l0ZV9saXN0X3dpdGhfb3Bwb3NpdGVfZGVsdGFzIEAgYWRkZWRfc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBuZXdfc2l0ZV9saXN0LCBhZ2VudF9tb2QpKVxuICAgICAgICAgIGFnZW50X2xpc3QpXG4gICAgICBtaXhcbiAgaW5cbiAgbGV0IHJ1bGVzIDogKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gcnVsZV9kZWYgLT5cbiAgICAgICAgKCBmc3QgcnVsZV9kZWYsXG4gICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgKGZ1biAocnVsZSA6IEFzdC5ydWxlKSAtPlxuICAgICAgICAgICAgICBsZXQgcmV3cml0ZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVkaXQgY29udGVudCAtPlxuICAgICAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgICAgeyBjb250ZW50IHdpdGggbWl4ID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50Lm1peCB9XG4gICAgICAgICAgICAgICAgfCBBcnJvdyBjb250ZW50IC0+XG4gICAgICAgICAgICAgICAgICBBcnJvd1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgbGhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LmxocztcbiAgICAgICAgICAgICAgICAgICAgICByaHMgPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQucmhzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHsgcnVsZSB3aXRoIHJld3JpdGUgfSlcbiAgICAgICAgICAgIChzbmQgcnVsZV9kZWYpICkpXG4gICAgICBhc3RfY29tcGlsLnJ1bGVzXG4gIGluXG5cbiAgbGV0IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSAobWl4IDogQXN0Lm1peHR1cmUpIDogQXN0Lm1peHR1cmUgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lIDogc3RyaW5nID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlclxuICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZV9jb3VudGVyLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZ2VudF9uYW1lID0gYWdlbnRfbmFtZV9jb3VudGVyKVxuICAgICAgICAgICAgICAgICAgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCBhZGRlZF9zaXRlcyA6IEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoXywgbmFtZSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsIChMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSkgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChfLCBfLCBzdW1fYm91bmRzX3JlZikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNHVEUgXyB8IENMVEUgXyB8IENWQVIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPD4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBkZWx0YSBzaG91bGQgYmUgMCBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5jb3B5X2Fubm90IHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgKCFzdW1fYm91bmRzX3JlZiAtIHZhbHVlKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX2RlbHRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwIHdpdGggYW5ub3QgYXMgdGVzdGVkIGFib3ZlICopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3Quc2l0ZSBsaXN0ID0gc2l0ZV9saXN0IEAgYWRkZWRfc2l0ZXMgaW5cbiAgICAgICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBuZXdfc2l0ZV9saXN0LCBhZ2VudF9tb2QpKVxuICAgICAgICAgIGFnZW50X2xpc3QpXG4gICAgICBtaXhcbiAgaW5cbiAgbGV0IGluaXQgOiAoQXN0Lm1peHR1cmUsIEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocXVhbnRpdHlfYWxnX2V4cHIsIGluaXRfa2luZCkgLT5cbiAgICAgICAgKCBxdWFudGl0eV9hbGdfZXhwcixcbiAgICAgICAgICBtYXRjaCBpbml0X2tpbmQgd2l0aFxuICAgICAgICAgIHwgQXN0LklOSVRfVE9LIF8gLT4gaW5pdF9raW5kXG4gICAgICAgICAgfCBJTklUX01JWCBtaXhfIC0+XG4gICAgICAgICAgICBJTklUX01JWCAoTG9jLm1hcF9hbm5vdCBhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X21peHR1cmUgbWl4XykgKSlcbiAgICAgIGFzdF9jb21waWwuaW5pdFxuICBpblxuXG4gIHsgYXN0X2NvbXBpbCB3aXRoIHNpZ25hdHVyZXM7IHJ1bGVzOyBpbml0IH1cblxubGV0IGNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgfnN5bnRheF92ZXJzaW9uIH52YXJfb3ZlcndyaXRlIGFzdF9jb21waWxcbiAgICA9XG4gICgqIFRPRE8gdGVzdCB0aGlzICopXG4gICgqIFRyYW5zbGF0ZSBDTFRFIHRlc3RzIGluIGFzdF9jb21waWwgaW50byBDR1RFIHRlc3RzICopXG4gIGxldCBhc3RfY29tcGlsID0gdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIGFzdF9jb21waWwgaW5cblxuICBsZXQgaGFzX2NvdW50ZXJzID0gQ291bnRlcnNfY29tcGlsZXIuaGFzX2NvdW50ZXJzIGFzdF9jb21waWwgaW5cbiAgbGV0IGFnZW50X3NpZ19pc19pbXBsaWNpdCA9XG4gICAgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyA9IFtdICYmIGFzdF9jb21waWwuQXN0LnRva2VucyA9IFtdXG4gIGluXG4gICgqIEluZmVyIGFnZW50IHNpZ25hdHVyZXMgaWYgdGhlIHNpZ25hdHVyZSBpcyBpbXBsaWNpdCAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgYWdlbnRfc2lnX2lzX2ltcGxpY2l0ICYmIGhhc19jb3VudGVycyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJpbXBsaWNpdCBzaWduYXR1cmUgaXMgaW5jb21wYXRpYmxlIHdpdGggY291bnRlcnNcIiwgTG9jLmR1bW15KSlcbiAgICBlbHNlIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCB0aGVuXG4gICAgICBBc3QuaW5mZXJfYWdlbnRfc2lnbmF0dXJlcyBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuICAoKiBSZW1vdmUgY291bnRlciB2YXJpYWJsZSBkZWZpbml0aW9uIGJ5IHNwbGl0dGluZyBpbiBzZXZlcmFsIHJ1bGVzICopXG4gIGxldCBhc3RfY29tcGlsID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZ1xuICAgICAgICB+ZGVidWdfbW9kZSBhc3RfY29tcGlsXG4gICAgZWxzZVxuICAgICAgYXN0X2NvbXBpbFxuICBpblxuXG4gIGxldCBhZ2VudHNfc2lnIDogU2lnbmF0dXJlLnMgPSBjcmVhdGVfc2lncyBhc3RfY29tcGlsLkFzdC5zaWduYXR1cmVzIGluXG4gICgqIFNldCBhbiBlbXB0eSBjb250YWN0IG1hcCAqKVxuICBsZXQgY29udGFjdF9tYXAgOiAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheSA9XG4gICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgYWdlbnRzX3NpZykgKGZ1biBpIC0+XG4gICAgICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5hcml0eSBhZ2VudHNfc2lnIGkpIChmdW4gcyAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gYSBrIC0+IE1vZHMuSW50U2V0LmFkZCBrIGEpXG4gICAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLmludGVybmFsX3N0YXRlc19udW1iZXIgaSBzIGFnZW50c19zaWcpLFxuICAgICAgICAgICAgICBNb2RzLkludDJTZXQuZW1wdHkgKSkpXG4gIGluXG4gIGxldCBydWxlX25hbWVzLCBleHRyYV92YXJzLCBjbGVhbmVkX3J1bGVzID1cbiAgICBsZXQgYWNjID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB+Y29udGFjdF9tYXApXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlX25hbWVzID0gMCwgTW9kcy5TdHJpbmdTZXQuZW1wdHk7XG4gICAgICAgICAgZXh0cmFfdmFycyA9IFtdO1xuICAgICAgICAgIGNsZWFuZWRfcnVsZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBhc3RfY29tcGlsLkFzdC5ydWxlc1xuICAgIGluXG4gICAgc25kIGFjYy5ydWxlX25hbWVzLCBhY2MuZXh0cmFfdmFycywgYWNjLmNsZWFuZWRfcnVsZXNcbiAgaW5cbiAgbGV0IG92ZXJ3cml0ZV92YXJzICh2YXJfb3ZlcndyaXRlIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgKHZhcnMgOiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0KSA6XG4gICAgICAoc3RyaW5nICogTmJyLnQpIGxpc3QgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQXN0LnZhcmlhYmxlX2RlZiBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAob3ZlcndyaXRlX3ZhcnNfcmVtYWluaW5nLCBhY2NfdmFycykgKCgoeCwgXyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgbGV0IG1hdGNocywgb3RoZXJfb3ZlcndyaXRlX3ZhcnMgPVxuICAgICAgICAgIExpc3QucGFydGl0aW9uIChmdW4gKHgnLCBfKSAtPiB4ID0geCcpIG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50ID1cbiAgICAgICAgICBtYXRjaCBtYXRjaHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gdmFyIDo6IGFjY192YXJzXG4gICAgICAgICAgfCBbICh4LCB2KSBdIC0+IChMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBBbGdfZXhwci5jb25zdCB2KSA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgKHgsIF8pIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcInZhcmlhYmxlICdcIiBeIHggXiBcIicgaXMgb3ZlcndyaXR0ZW4gbW9yZSB0aGFuIG9uY2VcIixcbiAgICAgICAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgICAgICAgaW5cblxuICAgICAgICBvdGhlcl9vdmVyd3JpdGVfdmFycywgYWNjX3ZhcnNfd2l0aF94X3Jld3JpdHRlbl9pZl9wcmVzZW50KVxuICAgICAgKHZhcl9vdmVyd3JpdGUsIFtdKSB2YXJzXG4gICAgfD4gZnVuICh2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCByZXZfYWxnX3ZhcnMpIC0+XG4gICAgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgTGlzdC5yZXYgcmV2X2FsZ192YXJzXG4gIGluXG4gIGxldCB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkLCBhbGdfdmFyc193aXRoX3Jld3JpdHRlbl92YXJzID1cbiAgICBvdmVyd3JpdGVfdmFycyB2YXJfb3ZlcndyaXRlIChhc3RfY29tcGlsLkFzdC52YXJpYWJsZXMgQCBleHRyYV92YXJzKVxuICBpblxuICBsZXQgYWxnX3ZhcnNfYXJyYXkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biAoeCwgdikgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdilcbiAgICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFyc1xuICAgIHw+IEFycmF5Lm9mX2xpc3RcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2ZpbmRlciA9XG4gICAgYWxnX3ZhcnNfYXJyYXkgfD4gTmFtZWREZWNscy5jcmVhdGUgfmZvcmJpZGRlbjpydWxlX25hbWVzIHw+IGZ1biBuZCAtPlxuICAgIG5kLk5hbWVkRGVjbHMuZmluZGVyXG4gIGluXG4gIGxldCB0b2tlbl9uYW1lcyA9XG4gICAgYXN0X2NvbXBpbC5Bc3QudG9rZW5zXG4gICAgfD4gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKGZ1biB4IC0+IHgsICgpKVxuICAgIHw+IE5hbWVkRGVjbHMuY3JlYXRlXG4gIGluXG4gIGxldCB0b2tlbnNfZmluZGVyID0gdG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXIgaW5cblxuICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgIENvdW50ZXJzX2NvbXBpbGVyLmFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIGFnZW50c19zaWdcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCB+Y29udGFjdF9tYXApO1xuXG4gIGxldCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycywgdXBkYXRlZF9hbGdfdmFycyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAocGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICBhbGdfdmFyc19maW5kZXIgY29udGFjdF9tYXApXG4gICAgICBhc3RfY29tcGlsLkFzdC5wZXJ0dXJiYXRpb25zIFtdXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBpZiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgQ291bnRlcnNfY29tcGlsZXIuY291bnRlcnNfcGVydHVyYmF0aW9ucyBhZ2VudHNfc2lnXG4gICAgICAgIFsgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBdXG4gICAgICBAIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gICAgZWxzZVxuICAgICAgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnNcbiAgaW5cblxuICBsZXQgcnVsZXMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKSAtPlxuICAgICAgICAoIHJ1bGUubGFiZWxfb3B0LFxuICAgICAgICAgICggYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICAgICAgYWxnX3ZhcnNfZmluZGVyLFxuICAgICAgICAgICAgcnVsZS5wb3MgKSApKVxuICAgICAgY2xlYW5lZF9ydWxlc1xuICBpblxuXG4gIGxldCB2YXJpYWJsZXMgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAoZnVuIGkgKGxhYiwgZXhwcikgYWNjIC0+XG4gICAgICAgICggbGFiLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfm1heF9hbGxvd2VkX3ZhcjoocHJlZCBpKVxuICAgICAgICAgICAgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyIGFsZ192YXJzX2ZpbmRlciBleHByIClcbiAgICAgICAgOjogYWNjKVxuICAgICAgYWxnX3ZhcnNfYXJyYXkgW11cbiAgaW5cbiAgbGV0IG9ic2VydmFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gZXhwciAtPlxuICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgIGFsZ192YXJzX2ZpbmRlciBleHByKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwub2JzZXJ2YWJsZXMpXG4gIGluXG4gIGxldCBpbml0ID1cbiAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gYWdlbnRzX3NpZyBjb250YWN0X21hcCB0b2tlbnNfZmluZGVyXG4gICAgICBhbGdfdmFyc19maW5kZXIgYXN0X2NvbXBpbC5pbml0XG4gIGluXG5cbiAge1xuICAgIGFnZW50c19zaWc7XG4gICAgY29udGFjdF9tYXA7XG4gICAgdG9rZW5fbmFtZXM7XG4gICAgYWxnX3ZhcnNfZmluZGVyO1xuICAgIHVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgZmlsZW5hbWVzID0gYXN0X2NvbXBpbC5maWxlbmFtZXM7XG4gICAgICAgIHZhcmlhYmxlcztcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIG9ic2VydmFibGVzO1xuICAgICAgICBpbml0O1xuICAgICAgICBwZXJ0dXJiYXRpb25zO1xuICAgICAgICB2b2x1bWVzID0gYXN0X2NvbXBpbC52b2x1bWVzO1xuICAgICAgICB0b2tlbnMgPSBhc3RfY29tcGlsLnRva2VucztcbiAgICAgICAgc2lnbmF0dXJlcyA9IGFzdF9jb21waWwuc2lnbmF0dXJlcztcbiAgICAgICAgY29uZmlndXJhdGlvbnMgPSBhc3RfY29tcGlsLmNvbmZpZ3VyYXRpb25zO1xuICAgICAgfTtcbiAgfVxuIiwidHlwZSB0b2tlbiA9XG4gIHwgRU9GXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBPUF9CUkFcbiAgfCBDTF9CUkFcbiAgfCBBVFxuICB8IFNFTUlDT0xPTlxuICB8IFBMVVNcbiAgfCBNSU5VU1xuICB8IE1VTFRcbiAgfCBESVZcbiAgfCBNT0RcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBMT0dcbiAgfCBPUlxuICB8IEFORFxuICB8IE5PVFxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgRElGRlxuICB8IEVRVUFMXG4gIHwgU01BTExFUlxuICB8IEdSRUFURVJcbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBJTkZJTklUWVxuICB8IFNIQVJQXG4gIHwgVU5ERVJTQ09SRVxuICB8IFBJUEVcbiAgfCBSQVJcbiAgfCBMUkFSXG4gIHwgTEFSXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBDUFVUSU1FXG4gIHwgVElNRVxuICB8IEVWRU5UXG4gIHwgTlVMTF9FVkVOVFxuICB8IENPTE9OXG4gIHwgTkVXTElORVxuICB8IEJBQ0tTTEFTSFxuICB8IFNJR05BVFVSRVxuICB8IFRPS0VOXG4gIHwgSU5JVFxuICB8IE9CU1xuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgQ09ORklHXG4gIHwgQVBQTFlcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFNOQVBTSE9UXG4gIHwgU1RPUFxuICB8IEZMVVhcbiAgfCBUUkFDS1xuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFBMT1RFTlRSWVxuICB8IFNQRUNJRVNfT0ZcbiAgfCBET1xuICB8IFJFUEVBVFxuICB8IEFMQVJNXG4gIHwgUlVOXG4gIHwgTEVUXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgRkxPQVQgb2YgKGZsb2F0KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcbiAgfCBTUEFDRSBvZiAoc3RyaW5nKVxuICB8IENPTU1FTlQgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICBsZXQgYWRkX3BvcyBlIHggPVxuICAgICh4LFxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgZSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICAgIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuICBsZXQgZW5kX3BvcyA9IFBhcnNpbmcucmhzX2VuZF9wb3NcbiAgbGV0IHN0YXJ0X3BvcyA9IFBhcnNpbmcucmhzX3N0YXJ0X3Bvc1xuXG4gIGxldCBpbnRlcm5hbF9tZW1vcnkgPSByZWYgW11cbiAgbGV0IGFkZCB4ID0gaW50ZXJuYWxfbWVtb3J5IDo9IHggOjogIWludGVybmFsX21lbW9yeVxuICBsZXQgb3V0cHV0ICgpID1cbiAgICBsZXQgbyA9IExpc3QucmV2ICFpbnRlcm5hbF9tZW1vcnkgaW4gbGV0ICgpID0gaW50ZXJuYWxfbWVtb3J5IDo9IFtdIGluIG9cbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gICAgMCAoKiBFT0YgKik7XG4gIDI1NyAoKiBDT01NQSAqKTtcbiAgMjU4ICgqIERPVCAqKTtcbiAgMjU5ICgqIE9QX1BBUiAqKTtcbiAgMjYwICgqIENMX1BBUiAqKTtcbiAgMjYxICgqIE9QX0NVUiAqKTtcbiAgMjYyICgqIENMX0NVUiAqKTtcbiAgMjYzICgqIE9QX0JSQSAqKTtcbiAgMjY0ICgqIENMX0JSQSAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogU0VNSUNPTE9OICopO1xuICAyNjcgKCogUExVUyAqKTtcbiAgMjY4ICgqIE1JTlVTICopO1xuICAyNjkgKCogTVVMVCAqKTtcbiAgMjcwICgqIERJViAqKTtcbiAgMjcxICgqIE1PRCAqKTtcbiAgMjcyICgqIE1BWCAqKTtcbiAgMjczICgqIE1JTiAqKTtcbiAgMjc0ICgqIFNJTlVTICopO1xuICAyNzUgKCogQ09TSU5VUyAqKTtcbiAgMjc2ICgqIFRBTiAqKTtcbiAgMjc3ICgqIFBPVyAqKTtcbiAgMjc4ICgqIEFCUyAqKTtcbiAgMjc5ICgqIFNRUlQgKik7XG4gIDI4MCAoKiBFWFBPTkVOVCAqKTtcbiAgMjgxICgqIExPRyAqKTtcbiAgMjgyICgqIE9SICopO1xuICAyODMgKCogQU5EICopO1xuICAyODQgKCogTk9UICopO1xuICAyODUgKCogVEhFTiAqKTtcbiAgMjg2ICgqIEVMU0UgKik7XG4gIDI4NyAoKiBESUZGICopO1xuICAyODggKCogRVFVQUwgKik7XG4gIDI4OSAoKiBTTUFMTEVSICopO1xuICAyOTAgKCogR1JFQVRFUiAqKTtcbiAgMjkxICgqIFRSVUUgKik7XG4gIDI5MiAoKiBGQUxTRSAqKTtcbiAgMjkzICgqIElORklOSVRZICopO1xuICAyOTQgKCogU0hBUlAgKik7XG4gIDI5NSAoKiBVTkRFUlNDT1JFICopO1xuICAyOTYgKCogUElQRSAqKTtcbiAgMjk3ICgqIFJBUiAqKTtcbiAgMjk4ICgqIExSQVIgKik7XG4gIDI5OSAoKiBMQVIgKik7XG4gIDMwMCAoKiBFTUFYICopO1xuICAzMDEgKCogVE1BWCAqKTtcbiAgMzAyICgqIENQVVRJTUUgKik7XG4gIDMwMyAoKiBUSU1FICopO1xuICAzMDQgKCogRVZFTlQgKik7XG4gIDMwNSAoKiBOVUxMX0VWRU5UICopO1xuICAzMDYgKCogQ09MT04gKik7XG4gIDMwNyAoKiBORVdMSU5FICopO1xuICAzMDggKCogQkFDS1NMQVNIICopO1xuICAzMDkgKCogU0lHTkFUVVJFICopO1xuICAzMTAgKCogVE9LRU4gKik7XG4gIDMxMSAoKiBJTklUICopO1xuICAzMTIgKCogT0JTICopO1xuICAzMTMgKCogUExPVCAqKTtcbiAgMzE0ICgqIFBFUlQgKik7XG4gIDMxNSAoKiBDT05GSUcgKik7XG4gIDMxNiAoKiBBUFBMWSAqKTtcbiAgMzE3ICgqIERFTEVURSAqKTtcbiAgMzE4ICgqIElOVFJPICopO1xuICAzMTkgKCogU05BUFNIT1QgKik7XG4gIDMyMCAoKiBTVE9QICopO1xuICAzMjEgKCogRkxVWCAqKTtcbiAgMzIyICgqIFRSQUNLICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogUExPVEVOVFJZICopO1xuICAzMjYgKCogU1BFQ0lFU19PRiAqKTtcbiAgMzI3ICgqIERPICopO1xuICAzMjggKCogUkVQRUFUICopO1xuICAzMjkgKCogQUxBUk0gKik7XG4gIDMzMCAoKiBSVU4gKik7XG4gIDMzMSAoKiBMRVQgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBGTE9BVCAqKTtcbiAgMzM0ICgqIElEICopO1xuICAzMzUgKCogTEFCRUwgKik7XG4gIDMzNiAoKiBTVFJJTkcgKik7XG4gIDMzNyAoKiBTUEFDRSAqKTtcbiAgMzM4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcXG5cXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG5cXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcXG5cXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzhcXDAwMFxcXG5cXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG5cXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcXG5cXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcXG5cXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcXG5cXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcXG5cXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG5cXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG5cXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG5cXDA1NlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcXG5cXDA1OVxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAwXFwyMjdcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwxOTVcXDAwMFxcMjMwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyMjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTE2XFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDAwXFwwMDBcXDAwMFxcMjIxXFwwMDBcXDIyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMFxcMTAzXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDYzXFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAwXFwyMTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDAwMFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMjJcXDAwMFxcMjEwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjE2XFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNVxcMDAwXFwyMTNcXDAwMFxcMjEyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTcwXFwwMDBcXDAwMFxcMDAwXFwxNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTlcXDAwMFxcMTU0XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXFxuXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwNzlcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxOThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDEyM1xcMDAwXFwxMjFcXDAwMFxcMTI1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNjZcXDAwMFxcMTY5XFwwMDBcXDE2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NFxcMDAwXFwwMDBcXDAwMFxcMjI0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc5XFwwMDBcXDAwMFxcMDAwXFwxODZcXDAwMFxcMDc0XFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDEwOFxcMDAwXFwxMDdcXDAwMFxcMTA2XFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDBcXDEzOVxcMDAwXFwxNDBcXDAwMFxcMTM4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMThcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAwXFwxNjBcXDAwMFxcMTYxXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTc4XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA1XFwwMDBcXFxuXFwyMDFcXDAwMFxcMjAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAwXFwyMDJcXDAwMFxcMTUxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTY1XFwwMDBcXDE3N1xcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFwxOTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMzBcXDAwMFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMyXFwwMDBcXDA5OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI5XFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDIwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDM3XFwwMDBcXDAyNVxcMDAwXFwwMjdcXDAwMFxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE5XFwwMDBcXDA0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDQyXFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMTNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwxMzFcXDAwMFxcMDkzXFwwMDBcXDIxOFxcMDAxXFwyMTlcXDAwMVxcXG5cXDI0M1xcMDAxXFwyMDZcXDAwMVxcMjA3XFwwMDFcXDIzNlxcMDAxXFwxODZcXDAwMVxcMjA4XFwwMDFcXDIwOVxcMDAxXFwyMTBcXDAwMVxcXG5cXDIxMVxcMDAxXFwwOTJcXDAwMVxcMDkzXFwwMDFcXDE2NVxcMDAxXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDA5NFxcMDAwXFwwOTVcXDAwMFxcXG5cXDA5NlxcMDAwXFwyMzRcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFwwOTlcXDAwMFxcMTg0XFwwMDBcXDE4NVxcMDAwXFwyMjFcXDAwMFxcXG5cXDEwMlxcMDAwXFwxMDNcXDAwMFxcMTA0XFwwMDBcXDA0MFxcMDAwXFwxNzdcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwxNDBcXDAwMVxcXG5cXDAzMlxcMDAxXFwxMjZcXDAwMFxcMDQzXFwwMDBcXDE5MFxcMDAwXFwwMTNcXDAwMVxcMTg2XFwwMDBcXDA4OVxcMDAxXFwyMTdcXDAwMFxcXG5cXDIxOFxcMDAwXFwxMzJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA4NVxcMDAxXFwwODZcXDAwMVxcXG5cXDExM1xcMDAwXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDExNFxcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMTc3XFwwMDJcXFxuXFwwNDVcXDI1NVxcMDU0XFwyNTVcXDA4OFxcMjU1XFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMjFcXDAwOFxcMDAwXFwwMDBcXDE2MlxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAzOVxcMjU1XFwwNjNcXDI1NVxcMjA5XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ5XFwyNTVcXDAwMFxcMDAwXFwxNjNcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDA1MVxcMjU1XFwyMDlcXDAwMFxcMTAyXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc1XFwyNTVcXFxuXFwxMzBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTE4XFwyNTVcXDEyN1xcMDAwXFwxNDNcXDAwMVxcMTQxXFwwMDBcXDIwOVxcMDAwXFwxMzFcXDI1NVxcMjA5XFwyNTVcXFxuXFwwMDBcXDAwMFxcMTc2XFwwMTBcXDE0OFxcMjU1XFwxNzhcXDI1NVxcMjMwXFwwMDhcXDAxNVxcMjU1XFwwNDJcXDAwOVxcMTk0XFwyNTVcXFxuXFwwNjhcXDAxMlxcMDAwXFwwMDBcXDE5M1xcMjU1XFwwMTVcXDI1NVxcMTI4XFwwMDBcXDIzOFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMDI2XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMTNcXFxuXFwxMTBcXDAwOVxcMTc4XFwwMDlcXDE2MVxcMDExXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDExXFwxNzVcXDI1NVxcMTE2XFwwMDFcXFxuXFwwMTZcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMjU1XFwxMzhcXDAxMlxcMDAwXFwwMDBcXDIyMVxcMDA4XFwwMDBcXDAwMFxcMjQ3XFwyNTVcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDEzXFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXFxuXFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDExNFxcMDAxXFwwMjlcXDAwMFxcMDU3XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNjdcXDAwMFxcMTQzXFwwMDFcXFxuXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMjVcXDI1NVxcMjA5XFwwMDBcXDA1MlxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMjU1XFwxODRcXDI1NVxcMjI2XFwwMTBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMTg1XFwwMTJcXFxuXFwwNzNcXDAwMVxcMDAwXFwwMDBcXDE4NFxcMjU1XFwwMDBcXDAwMFxcMTg0XFwyNTVcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDQ3XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIyNVxcMjU1XFwyMDlcXDAwMFxcMTM5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDEyMFxcMDAwXFwwNThcXDAwMFxcMTI5XFwyNTVcXFxuXFwyMjFcXDAwOFxcMTQzXFwwMDBcXDExN1xcMjU1XFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwxMTNcXDAwMFxcMjA5XFwwMDBcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMjA4XFwwMTNcXFxuXFwyMDhcXDAxM1xcMjA4XFwwMTNcXDIwOFxcMDEzXFwyMDhcXDAxM1xcMjA4XFwwMTNcXDIwOFxcMDEzXFwwODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyNDZcXDAwOVxcMDU4XFwwMTBcXFxuXFwwMDBcXDAwMFxcMTQ0XFwwMDBcXDAzM1xcMDA5XFwyMDlcXDAwMFxcMTE2XFwwMDBcXDEwMFxcMjU1XFwxMzNcXDAwMFxcMjA4XFwwMTNcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMjFcXDAwMFxcMDE1XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAxMVxcMDI5XFwwMDFcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMTM5XFwwMDBcXDIwOVxcMDAwXFwyMDhcXDAxM1xcMjA4XFwwMTNcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAxNFxcMDQ2XFwwMTRcXFxuXFwyMDhcXDAxM1xcMDc5XFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAxNFxcMDAwXFwwMDBcXDExOFxcMjU1XFwxMThcXDI1NVxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDhcXDAxM1xcMTg0XFwyNTVcXDIwMlxcMjU1XFwyMDhcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAxMVxcMDAxXFwwMjZcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwwMzNcXDAwOVxcMjA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwNjRcXDI1NVxcMDUxXFwwMDFcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMTNcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwOTdcXDAwMlxcMDY0XFwwMDFcXDIwOVxcMDAwXFwxNjFcXDAxMVxcMTM5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAxXFwwMDBcXDAwMFxcMTA3XFwwMDFcXFxuXFwyMDlcXDAwMFxcMDg5XFwwMDFcXDAwMFxcMDAwXFwyMjFcXDAwOFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTE2XFwwMDBcXDAwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMTI1XFwwMDFcXDA4NVxcMDAxXFwxMzVcXDAwMVxcMjA4XFwwMTNcXDE4NVxcMDEyXFwwMjlcXDAwMVxcMjA5XFwwMDBcXFxuXFwxNjFcXDAxMVxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDc4XFwwMDFcXFxuXFwyMDlcXDAwMFxcMTY5XFwwMDFcXDExM1xcMDAzXFwyMjFcXDAwOFxcMjA4XFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDEwMFxcMjU1XFwwNDBcXDAwMVxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwxNzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAxNFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDE0XFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg1XFwyNTVcXFxuXFwyMzlcXDI1NVxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDEwMFxcMjU1XFwyMDhcXDAxM1xcMjA4XFwwMTNcXFxuXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDE4NFxcMDAxXFwyMDlcXDAwMFxcMTg2XFwwMDFcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMTBcXDAwMVxcMjA5XFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIxM1xcMDAxXFwyMzNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjE0XFwwMDFcXDIxNVxcMDAxXFwxNzdcXDAwMFxcMjE2XFwwMDFcXFxuXFwyMTdcXDAwMVxcMjQzXFwyNTVcXDIwOVxcMDAwXFwyNDRcXDAwMVxcMDQyXFwwMDJcXDA3NFxcMDAyXFwyMzRcXDI1NVxcMjM1XFwwMDBcXFxuXFwxMzRcXDAwMlxcMjA5XFwwMDBcXDA3M1xcMDAyXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwxMjNcXDI1NVxcMDAwXFwwMDBcXFxuXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMTNcXDI1NVxcMDAwXFwwMDBcXDA3OVxcMjU1XFwwMDBcXDAwMFxcMDE0XFwyNTVcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDEzXFwwMDJcXFxuXFwxOTBcXDAwMlxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMlxcMDg3XFwwMDJcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwxOTBcXDAwN1xcMDY5XFwwMDhcXDEwMVxcMDA5XFwxMjZcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTRcXDAwMVxcMjU0XFwwMDFcXFxuXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM4XFwwMDVcXFxuXFwwMjBcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDlcXDI1NVxcMDIyXFwwMDJcXDEyNlxcMDEwXFwwMjBcXDI1NVxcMTI2XFwwMTBcXFxuXFwyNTVcXDAxMVxcMDIxXFwwMDJcXDAyMFxcMjU1XFwwNDFcXDAwMVxcMTQ3XFwwMDJcXDA3MVxcMDA2XFwxNzNcXDAwMFxcMDkzXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMTI2XFwwMTBcXFxuXFwxMjZcXDAxMFxcMDU3XFwwMDRcXDE5OVxcMDA0XFwyMDhcXDAxMVxcMTI1XFwwMDBcXDEzMFxcMDAxXFwxMjhcXDAwNFxcMTEyXFwwMDBcXFxuXFwwMzNcXDAwMFxcMjMyXFwwMTJcXDAwMFxcMDAwXFwxMDFcXDAwOVxcMDU5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDEzXFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXFxuXFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDg0XFwwMDJcXDA3OVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDA2XFwxNzFcXDAwNlxcMjI5XFwwMDZcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMTNcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMjBcXDAxMVxcMDAwXFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAzXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMThcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXFxuXFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDI1NVxcMDEzXFwyNTVcXDAxM1xcMjU1XFwwMTNcXFxuXFwyNTVcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMjU1XFwwMTNcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMDIyXFwwMDJcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwN1xcMDAwXFwwMDBcXDEzOFxcMDA4XFwwMDBcXDAwMFxcMjU0XFwwMDRcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAxMFxcMTI2XFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTNcXDAwMVxcMTAxXFwwMDlcXDAwMFxcMDAwXFwwMjFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDI1NVxcMDIyXFwwMDJcXFxuXFwyNTVcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNFxcMDExXFwwMjJcXDAwMFxcMDQxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMDAwXFwwMDBcXFxuXFwyNTVcXDAxM1xcMjU1XFwwMTNcXDE5OVxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwwMTNcXFxuXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDEzXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyNTVcXDAxM1xcMDMzXFwwMDBcXDAwNVxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwOVxcMDAwXFwwMDBcXDA5OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDEzXFwxNjRcXDAwMVxcMjIyXFwwMDdcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI5XFwwMDBcXDIwOFxcMDExXFwwMDBcXDAwMFxcMTkwXFwwMDFcXFxuXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NFxcMDAyXFwyNDRcXDAwMlxcMTYwXFwwMDNcXFxuXFwyNDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzlcXDAxM1xcMTAxXFwwMDlcXDAwMFxcMDAwXFwwMzNcXDAwMlxcMDAwXFwwMDBcXDAyNFxcMDA4XFwwMDBcXDAwMFxcMjUxXFwwMDJcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAwXFwwOTlcXDAwMlxcMDAwXFwwMDBcXDEwM1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyNTVcXDAxM1xcMDkyXFwwMTNcXDEwNVxcMDAyXFwxMDhcXDAwMlxcMDAwXFwwMDBcXDIwOFxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ0XFwwMDVcXDA3NlxcMDA1XFwyNTVcXDAxM1xcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwOFxcMDM0XFwwMDhcXDE5MFxcMjU1XFwxNDNcXDI1NVxcMDAwXFwwMDBcXFxuXFwyMTBcXDAwNVxcMDAwXFwwMDBcXDExNVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMTk5XFwwMDRcXDA5M1xcMDE0XFwxOTBcXDAwN1xcMDAwXFwwMDBcXFxuXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDE2MlxcMDA2XFwwNTBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTRcXDAwMVxcMjEwXFwwMDBcXDA5OVxcMDAyXFwwNDJcXDAwNlxcMDAwXFwwMDBcXDE0M1xcMjU1XFwyNTVcXDAxM1xcMjU1XFwwMTNcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwyMzhcXDAwNVxcMjM4XFwwMDVcXDA5OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwN1xcMDAwXFwwMDBcXDIzMlxcMDA3XFwxMjNcXDAwNVxcMTA1XFwwMDdcXDAwMFxcMDAwXFwwOTFcXDAwMlxcMDkxXFwwMDJcXFxuXFwwNTVcXDAwMVxcMDkxXFwwMDJcXDA5MVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAzXFwxMjFcXDAwMlxcMjA4XFwyNTVcXFxuXFwxMjZcXDAwMlxcMjI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzZcXDAwMVxcMTE2XFwwMDRcXDEyNVxcMDAyXFwyNDJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTVcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDE5XFwwMDFcXDE1NlxcMjU1XFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzZcXDI1NVxcMTM3XFwwMDBcXDAwMFxcMDAwXFwyMzhcXDI1NVxcMjEwXFwwMDVcXDAwMFxcMDAwXFwxMjhcXDI1NVxcMDY5XFwwMDJcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAyXFwwNjlcXDAwMlxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyMTBcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMTlcXDAwMVxcMDAwXFwwMDBcXDAyMlxcMDAyXFwwMjNcXDAwM1xcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAyXFwyMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzOFxcMDAyXFwxMzhcXDAwMlxcMjI4XFwwMDBcXDA2OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDEyOVxcMDAyXFwwMDBcXDAwMFxcMTA3XFwyNTRcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMVxcMjU1XFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDE0MFxcMDAxXFwxMjlcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMjU0XFwxNjhcXDAwMVxcMDUxXFwwMDNcXDE1OVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyNDhcXDAwM1xcMDYxXFwwMDFcXDAyM1xcMjU1XFwyMzdcXDAwMVxcMjQyXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMTEyXFwyNTVcXFxuXFwwMDNcXDAwM1xcMDAwXFwwMDBcXDE2N1xcMDAyXFwxMzlcXDAwM1xcMDU1XFwyNTVcXDE0NlxcMjU1XFwyMjhcXDAwMlxcMDQxXFwwMDJcXFxuXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDA2NVxcMDAzXFwwNjhcXDAwM1xcMDQ5XFwwMDJcXDAwMFxcMDAwXFwwNzVcXDAwMlxcMTQ3XFwyNTVcXFxuXFwxNzFcXDAwMlxcMjEwXFwyNTVcXDI1MlxcMjU1XFwwMDJcXDI1NVxcMDAwXFwwMDBcXDEyN1xcMjU1XFwxMTZcXDAwMlxcMDAwXFwyNTVcXFxuXFwwMDBcXDAwMFxcMDk3XFwyNTVcXDA3N1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2N1xcMDAzXCJcblxubGV0IHl5dGFibGVzaXplID0gNDAxMlxubGV0IHl5dGFibGUgPSBcIlxcMDExXFwwMDBcXFxuXFwwMTRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjhcXDAwMVxcMTMzXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDIyXFwwMDBcXFxuXFwxMzdcXDAwMFxcMDU5XFwwMDBcXDEzNlxcMDAxXFwyMDZcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwxODdcXDAwMFxcMTAwXFwwMDBcXFxuXFwxMDFcXDAwMFxcMDYxXFwwMDFcXDE4NFxcMDAwXFwwMDFcXDAwMFxcMDg0XFwwMDFcXDAwMVxcMDAwXFwxMDVcXDAwMFxcMTA2XFwwMDBcXFxuXFwyMjJcXDAwMFxcMDMwXFwwMDJcXDEwN1xcMDAwXFwxMDhcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwxMTFcXDAwMFxcMTEyXFwwMDBcXFxuXFwxMTVcXDAwMFxcMTE2XFwwMDBcXDExN1xcMDAwXFwxMThcXDAwMFxcMDAxXFwwMDBcXDIyNFxcMDAwXFwxMjJcXDAwMFxcMTE5XFwwMDBcXFxuXFwxNTNcXDAwMFxcMjI4XFwwMDBcXDAwMVxcMDAwXFwwMTRcXDAwMFxcMDA2XFwwMDBcXDEyOFxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMjRcXDAwMFxcMDE0XFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTM2XFwwMDBcXDAxMlxcMDAwXFwxMzhcXDAwMFxcMTM5XFwwMDBcXFxuXFwxNDBcXDAwMFxcMTI1XFwwMDBcXDE0MlxcMDAwXFwxNDRcXDAwMFxcMTQxXFwwMDBcXDI0OVxcMDAwXFwxMjhcXDAwMFxcMDkwXFwwMDFcXFxuXFwxMzVcXDAwMVxcMTQ3XFwwMDBcXDE0OFxcMDAwXFwxNDlcXDAwMFxcMTUwXFwwMDBcXDE1MVxcMDAwXFwxNTJcXDAwMFxcMTUzXFwwMDBcXFxuXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTU4XFwwMDBcXDA0MVxcMDAxXFwxOThcXDAwMVxcMDQzXFwwMDFcXFxuXFwxNTlcXDAwMFxcMTg3XFwwMDFcXDExN1xcMDAxXFwwNDdcXDAwMVxcMTQ1XFwwMDBcXDAxMlxcMDAxXFwxMzJcXDAwMVxcMDE1XFwwMDBcXFxuXFwwODRcXDAwMVxcMDMxXFwwMDJcXDEyMFxcMDAwXFwwMDhcXDAwMlxcMTg4XFwwMDBcXDE4OVxcMDAwXFwxNjBcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMjlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTBcXDAwMVxcMTcxXFwwMDBcXDE0M1xcMDAwXFwxMjFcXDAwMFxcMDUyXFwwMDFcXFxuXFwwMDdcXDAwMFxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMDFcXDAwMFxcMjIzXFwwMDFcXDEwMFxcMDAwXFwxOTVcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMjZcXDAwMlxcMDM0XFwwMDFcXDAyN1xcMDAyXFwwMzVcXDAwMVxcMjA0XFwwMDFcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA1XFwwMDBcXFxuXFwwNTRcXDAwMVxcMjA3XFwwMDBcXDAxOFxcMDAyXFwyMDhcXDAwMFxcMDE3XFwwMDFcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMjE2XFwwMDBcXFxuXFwwNTBcXDAwMVxcMTQ2XFwwMDBcXDIxNlxcMDAwXFwwNDBcXDAwMlxcMTYxXFwwMDBcXDE3MVxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuXFwxMDBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMTcwXFwwMDBcXDA5MVxcMDAxXFwwMDFcXDAwMFxcMjMzXFwwMDBcXFxuXFwyMzVcXDAwMFxcMDE0XFwwMDFcXDAwMVxcMDAwXFwxNzhcXDAwMFxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMTc1XFwwMDBcXFxuXFwwMDdcXDAwMFxcMTA2XFwwMDFcXDE4MVxcMDAxXFwwMDFcXDAwMFxcMjA1XFwwMDFcXDE3MlxcMDAwXFwxMjZcXDAwMFxcMjUxXFwwMDBcXFxuXFwyNTJcXDAwMFxcMjUzXFwwMDBcXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMTIwXFwwMDBcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA3XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDkxXFwwMDFcXDAwOFxcMDAxXFwwMDdcXDAwMFxcMDQ2XFwwMDFcXDEyOFxcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuXFwxOThcXDAwMVxcMDI0XFwwMDBcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDI4XFwwMDJcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE4XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDQ4XFwwMDBcXDAyMVxcMDAxXFwxOTlcXDAwMVxcMjAwXFwwMDFcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMTlcXDAwMlxcMTk4XFwwMDBcXDEyMVxcMDAxXFwwMDFcXDAwMFxcMTk5XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDFcXDAwMFxcMDM2XFwwMDFcXDAzN1xcMDAxXFwwMDFcXDAwMFxcMTQ3XFwwMDFcXFxuXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwM1xcMDAxXFwwMzlcXDAwMVxcMDAxXFwwMDBcXDA0MlxcMDAxXFwyMDRcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDM2XFwwMDBcXDAwMVxcMDAwXFwxNThcXDAwMVxcMTUyXFwwMDBcXDE5NFxcMDAxXFwwNTFcXDAwMVxcMDAxXFwwMDBcXFxuXFwxMjBcXDAwMVxcMDAxXFwwMDBcXDE3M1xcMDAwXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDAwMVxcMDAwXFwyMTJcXDAwMVxcMDAzXFwwMDJcXFxuXFwyMTNcXDAwMVxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwyNTNcXDAwMVxcMDU3XFwwMDFcXDA0NVxcMDAwXFwwNThcXDAwMVxcMDA0XFwwMDJcXFxuXFwwNjBcXDAwMVxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwyMDBcXDAwMFxcMDM2XFwwMDBcXDIyM1xcMDAwXFwyNTRcXDAwMVxcMTgwXFwwMDBcXFxuXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDA3MVxcMDAxXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDAzNlxcMDAwXFwyMDVcXDAwMVxcMDczXFwwMDFcXFxuXFwwNzRcXDAwMVxcMDc1XFwwMDFcXDE5M1xcMDAwXFwwNDhcXDAwMFxcMDc2XFwwMDFcXDE2MVxcMDAxXFwwODNcXDAwMVxcMTYyXFwwMDFcXFxuXFwxOTZcXDAwMFxcMTg1XFwwMDBcXDA4N1xcMDAxXFwwMDFcXDAwMFxcMjE0XFwwMDFcXDIxNVxcMDAxXFwxODRcXDAwMFxcMDAxXFwwMDBcXFxuXFwyMDRcXDAwMVxcMDAxXFwwMDBcXDE4MlxcMDAxXFwwMjRcXDAwMFxcMDk2XFwwMDFcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMDAxXFwwMDBcXFxuXFwxMDBcXDAwMVxcMjMyXFwwMDBcXDAwMVxcMDAwXFwxNzJcXDAwMVxcMTAzXFwwMDFcXDAzNVxcMDAyXFwxMDRcXDAwMVxcMTA1XFwwMDFcXFxuXFwwMDFcXDAwMFxcMTA3XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTUzXFwwMDBcXDExMFxcMDAxXFwwMDFcXDAwMFxcMTExXFwwMDFcXFxuXFwwNDBcXDAwMVxcMjI3XFwwMDBcXDE1M1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwMFxcMDAwXFwxMTVcXDAwMVxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxNlxcMDAxXFwwMDFcXDAwMFxcMjE3XFwwMDFcXDA0OVxcMDAxXFwxMjhcXDAwMFxcMDQ1XFwwMDBcXFxuXFwyMDVcXDAwMVxcMDI1XFwwMDBcXDEyOFxcMDAwXFwwMDFcXDAwMFxcMDI0XFwwMDBcXDAxMFxcMDAxXFwxMThcXDAwMVxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMjA0XFwwMDFcXDE1M1xcMDAwXFwxNTNcXDAwMFxcMTUzXFwwMDBcXDI1MFxcMDAwXFwxOThcXDAwMFxcMTIzXFwwMDFcXFxuXFwxMjRcXDAwMVxcMTk5XFwwMDBcXDA4M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE4NVxcMDAwXFwxMzNcXDAwMVxcMDI2XFwwMDBcXFxuXFwwMjdcXDAwMFxcMTM0XFwwMDFcXDE4NFxcMDAwXFwwMDFcXDAwMFxcMTM4XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTQxXFwwMDFcXFxuXFwxNDJcXDAwMVxcMTQzXFwwMDFcXDAwOVxcMDAxXFwyMTZcXDAwMFxcMTQ1XFwwMDFcXDAwMVxcMDAwXFwxNzRcXDAwMVxcMDM2XFwwMDBcXFxuXFwxNDhcXDAwMVxcMDE0XFwwMDFcXDI0OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwxNTNcXDAwMFxcMjA1XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTZcXDAwMVxcMTUyXFwwMDFcXFxuXFwxNTNcXDAwMFxcMDAxXFwwMDBcXDAyMFxcMDAxXFwxNTVcXDAwMVxcMTU2XFwwMDFcXDE1N1xcMDAxXFwwMDFcXDAwMFxcMTk4XFwwMDBcXFxuXFwyMDBcXDAwMFxcMDQ4XFwwMDFcXDE5OVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2M1xcMDAxXFwxMjhcXDAwMFxcMTY0XFwwMDFcXFxuXFwwMDFcXDAwMFxcMTcxXFwwMDBcXDAwMVxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDIxNlxcMDAwXFwxNzFcXDAwMVxcMTcxXFwwMDBcXFxuXFwwMTFcXDAwMVxcMTczXFwwMDFcXDA1M1xcMDAxXFwwMDFcXDAwMFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwwODNcXDAwMVxcMTc5XFwwMDFcXFxuXFwwNTlcXDAwMVxcMTAwXFwwMDBcXDE4M1xcMDAxXFwxNzVcXDAwMFxcMDg3XFwwMDBcXDA3MlxcMDAxXFwxMjZcXDAwMFxcMTg0XFwwMDFcXFxuXFwxODVcXDAwMVxcMTc1XFwwMDBcXDEyNlxcMDAwXFwxMzNcXDAwMFxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTJcXDAwMVxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTgzXFwwMDBcXDAwMVxcMDAwXFwxOTJcXDAwMFxcMTIwXFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTk1XFwwMDFcXFxuXFwxMjBcXDAwMFxcMjAwXFwwMDBcXDE5N1xcMDAxXFwwMDFcXDAwMFxcMDgxXFwwMDBcXDEyMFxcMDAwXFwxMjBcXDAwMFxcMDAxXFwwMDBcXFxuXFwyMjBcXDAwMVxcMDAxXFwwMDBcXDIyMVxcMDAxXFwyMjJcXDAwMVxcMjA5XFwwMDBcXDIxMVxcMDAwXFwyMTNcXDAwMFxcMjI2XFwwMDFcXFxuXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDIyN1xcMDAxXFwwODhcXDAwMVxcMDQ2XFwwMDBcXDIyOVxcMDAxXFwyMzBcXDAwMVxcMjMxXFwwMDFcXFxuXFwyMzJcXDAwMVxcMjMzXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjM0XFwwMDFcXDE3MVxcMDAwXFwyMzdcXDAwMVxcMjM4XFwwMDFcXFxuXFwyMzlcXDAwMVxcMDAxXFwwMDBcXDA5NFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEyMFxcMDAwXFwxMjBcXDAwMFxcMjQwXFwwMDFcXFxuXFwyNDFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc1XFwwMDBcXFxuXFwwMDFcXDAwMFxcMDk3XFwwMDFcXDI0NlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjZcXDAwMFxcMDAxXFwwMDBcXFxuXFwxNTJcXDAwMFxcMjU1XFwwMDFcXDAwNVxcMDAyXFwwMDFcXDAwMFxcMDA2XFwwMDJcXDAwMVxcMDAwXFwxNTJcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMDlcXDAwMlxcMDAxXFwwMDBcXDAxMVxcMDAyXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDE1XFwwMDJcXDAxNlxcMDAyXFwwMTdcXDAwMlxcMjQ5XFwwMDFcXDAwMVxcMDAwXFwyNTBcXDAwMVxcMTg1XFwwMDFcXFxuXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMDdcXDAwMFxcMDI0XFwwMDJcXDAyNVxcMDAyXFwxNTJcXDAwMFxcMTUyXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDMxXFwwMDFcXDIwMVxcMDAwXFwwNDZcXDAwMFxcMDk4XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDM2XFwwMDJcXDAzN1xcMDAyXFwwMDFcXDAwMFxcMTI1XFwwMDFcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjNcXDAwMFxcMDQxXFwwMDJcXDA0MlxcMDAyXFwwNDNcXDAwMlxcMDQ0XFwwMDJcXDAwMVxcMDAwXFwxMDJcXDAwMVxcMDAxXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwxMjZcXDAwMVxcMDQ1XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTUyXFwwMDBcXDA0OFxcMDAyXFwxMjdcXDAwMVxcMDAxXFwwMDBcXFxuXFwwMzhcXDAwMVxcMDAxXFwwMDBcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTUyXFwwMDBcXDAwMVxcMDAwXFwxMzdcXDAwMVxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwMzZcXDAwMFxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNDRcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwNzhcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTFcXDAwMFxcMDk1XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTQ5XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDU0XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDE1MFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNTFcXDAwMVxcMTEyXFwwMDFcXFxuXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMDFcXDAwMFxcMjQ2XFwwMDBcXDAwMVxcMDAwXFwxNTNcXDAwMVxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY2XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDExOVxcMDAxXFwxNjdcXDAwMVxcMDAxXFwwMDBcXFxuXFwxMjJcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY4XFwwMDFcXDA3OFxcMDAwXFwwMDFcXDAwMFxcMTE4XFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwMzZcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwxNzdcXDAwMVxcMTM5XFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwOTJcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMTgwXFwwMDFcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNjlcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDE5M1xcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuXFwxMjFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuXFwwODdcXDAwMFxcMjI1XFwwMDBcXDIyNlxcMDAwXFwyMjhcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMTk5XFwwMDFcXFxuXFwyMDBcXDAwMVxcMTM5XFwwMDFcXDAzMVxcMDAxXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwwODdcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMjM1XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI0MlxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDg3XFwwMDBcXFxuXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI0NFxcMDAxXFwxMzNcXDAwMFxcMDY0XFwwMDFcXFxuXFwwNjVcXDAwMVxcMTMzXFwwMDBcXDEzM1xcMDAwXFwwOTNcXDAwMFxcMjQ1XFwwMDFcXDI0N1xcMDAxXFwyNDhcXDAwMVxcMjUxXFwwMDFcXFxuXFwyNTJcXDAwMVxcMDAwXFwwMDJcXDAwMVxcMDAwXFwyMjRcXDAwMVxcMjI1XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTRcXDAwMFxcMDAyXFwwMDJcXFxuXFwwMTBcXDAwMlxcMDMyXFwwMDJcXDAzM1xcMDAyXFwwMzRcXDAwMlxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDAzOVxcMDAyXFwwNDZcXDAwMlxcMDQ3XFwwMDJcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDAzOFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNDlcXDAwMFxcMDAxXFwwMDBcXFxuXFwxODhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDk3XFwwMDBcXFxuXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTg3XFwwMDBcXDAwMVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwMjZcXDAwMFxcMTY2XFwwMDBcXFxuXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwwMDFcXDAwMFxcMDE3XFwwMDBcXDA5MVxcMDAwXFwwMDdcXDAwMlxcMjEzXFwwMDFcXFxuXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMTE4XFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMFxcMDAxXFwwMDBcXDAyMFxcMDAyXFwwMjlcXDAwMlxcMDM4XFwwMDJcXFxuXFwxMThcXDAwMFxcMTE4XFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDEyXFwwMDJcXDE3OVxcMDAwXFwwOTFcXDAwMFxcMDk1XFwwMDBcXFxuXFwyNDdcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA3MFxcMDAxXFwyMTRcXDAwMVxcMjE1XFwwMDFcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDAwMVxcMDAwXFwxMjNcXDAwMFxcMDMzXFwwMDFcXDE2OVxcMDAxXFwyMDJcXDAwMFxcMTk3XFwwMDBcXFxuXFwxMThcXDAwMFxcMTE4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMjEzXFwwMDFcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXFxuXFwxNzhcXDAwMVxcMTcwXFwwMDFcXDEzMVxcMDAxXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwxMDFcXDAwMVxcMTYwXFwwMDFcXFxuXFwxNTlcXDAwMVxcMjE2XFwwMDFcXDEyN1xcMDAwXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMTE4XFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTRcXDAwMVxcMjE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDk2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMFxcMDAxXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjE2XFwwMDFcXDAwMFxcMDAwXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk0XFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXFxuXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwyMzZcXDAwMFxcMjM3XFwwMDBcXDIzOFxcMDAwXFwyMzlcXDAwMFxcMjQwXFwwMDBcXFxuXFwyNDFcXDAwMFxcMjQyXFwwMDBcXDI0M1xcMDAwXFwyNDRcXDAwMFxcMjQ1XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXFxuXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXFxuXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDk1XFwwMDBcXFxuXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXFxuXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAwXFwxNThcXDAwMFxcMTU4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMVxcMTE0XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxNThcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDk3XFwwMDBcXFxuXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDk3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxOTBcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDUzXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDAwXFwxOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXFxuXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTJcXDAwMFxcMTQzXFwwMDBcXFxuXFwxMTJcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTkyXFwwMDBcXFxuXFwxOTJcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTEyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDBcXFxuXFwxNDNcXDAwMFxcMTQzXFwwMDBcXDEzNFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXDEzNFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXFxuXFwxMzRcXDAwMFxcMjAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwwMDBcXDE0M1xcMDAwXFwxNDNcXDAwMFxcMTQzXFwwMDBcXFxuXFwxNDNcXDAwMFxcMTQzXFwwMDBcXDE0M1xcMDAwXFwxNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFwxNDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDBcXFxuXFwyMDBcXDAwMFxcMjAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMjAwXFwwMDBcXDIwMFxcMDAwXFwyMDBcXDAwMFxcMjAwXFwwMDBcXFxuXFwyMDBcXDAwMFxcMjAwXFwwMDBcXDIwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXFxuXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFwyMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXFxuXFwxNTBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwxODJcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXFxuXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXFxuXFwwODhcXDAwMFxcMDI3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXFxuXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA5OVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXFxuXFwyMTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXFxuXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXFxuXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXFxuXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXFxuXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXFxuXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjA1XFwwMDBcXDA1MVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcblxcMDU1XFwwMDBcXDAxNFxcMDAwXFwwOTJcXDAwMVxcMTIyXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAxOVxcMDAwXFxcblxcMDE5XFwwMDBcXDI1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAxOVxcMDAxXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMTM0XFwwMDBcXDAxMlxcMDAxXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFxcblxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAwMFxcMDAwXFwxMzVcXDAwMFxcMDQwXFwwMDBcXDAwMVxcMDAxXFxcblxcMDAwXFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAxXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFxcblxcMDAwXFwwMDFcXDAxNFxcMDAxXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMVxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMDU4XFwwMDBcXDAwOVxcMDAxXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDAxMFxcMDAxXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwyMjJcXDAwMFxcMDAwXFwwMDFcXDIyNFxcMDAwXFxcblxcMDgyXFwwMDBcXDE2M1xcMDAxXFwwNjBcXDAwMVxcMjI4XFwwMDBcXDAxMFxcMDAxXFwxODNcXDAwMFxcMDg3XFwwMDFcXDAwMFxcMDAxXFxcblxcMDg3XFwwMDFcXDA3NlxcMDAxXFwwNTJcXDAwMVxcMjQxXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDk2XFwwMDBcXDA1MVxcMDAxXFxcblxcMjA3XFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDFcXDEwMlxcMDAwXFwwMDBcXDAwMVxcMDQwXFwwMDFcXDIzM1xcMDAwXFxcblxcMDUxXFwwMDFcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDFcXDIxMVxcMDAwXFwwMDJcXDAwMVxcMjEzXFwwMDBcXDAzOFxcMDAxXFwxMTlcXDAwMFxcMTIwXFwwMDBcXDEyMVxcMDAwXFxcblxcMDA0XFwwMDFcXDEyM1xcMDAwXFwwMDBcXDAwMVxcMTI1XFwwMDBcXDAwMFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDEzMVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDI1XFwwMDJcXDAxNVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFxcblxcMTQwXFwwMDBcXDE0MFxcMDAwXFwwNTFcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDE0NVxcMDAwXFxcblxcMTQ3XFwwMDBcXDAyOVxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAwXFxcblxcMDUxXFwwMDFcXDA0MlxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDFcXDA3OFxcMDAxXFwwMjdcXDAwMVxcMDAwXFwwMDBcXDE2MVxcMDAwXFxcblxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjRcXDAwMFxcMTY1XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFxcblxcMDgxXFwwMDFcXDA4MlxcMDAxXFwxNzJcXDAwMFxcMTczXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMTc2XFwwMDBcXDA1MVxcMDAxXFxcblxcMDAyXFwwMDFcXDA3OFxcMDAxXFwxODBcXDAwMFxcMDUxXFwwMDFcXDIyN1xcMDAwXFwwODVcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMlxcMDAxXFwxODhcXDAwMFxcMTg5XFwwMDBcXDA3NlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDE5M1xcMDAwXFxcblxcMTk0XFwwMDBcXDAwNFxcMDAxXFwxOTZcXDAwMFxcMDExXFwwMDFcXDAxMlxcMDAxXFwxOTlcXDAwMFxcMjAwXFwwMDBcXDIwMVxcMDAwXFxcblxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc2XFwwMDFcXDAwM1xcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDA0XFwwMDFcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMDA3XFwwMDFcXDEwNFxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMjIxXFwwMDBcXDA3OFxcMDAxXFwyMjNcXDAwMFxcMDM4XFwwMDFcXDIyNVxcMDAwXFxcblxcMjI2XFwwMDBcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwxNzVcXDAwMVxcMjMyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDFcXDA3OFxcMDAxXFwwMjZcXDAwMVxcMjM3XFwwMDBcXDIzOFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwNlxcMDAxXFxcblxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDI0NlxcMDAwXFwwMDRcXDAwMVxcMjQ4XFwwMDBcXDAxNFxcMDAxXFxcblxcMjUwXFwwMDBcXDEwM1xcMDAxXFwxMjRcXDAwMVxcMDUwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjM0XFwwMDFcXDA3OFxcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDVcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwNzNcXDAwMVxcMDc4XFwwMDFcXDAxNFxcMDAxXFwwMDVcXDAwMVxcMDE5XFwwMDFcXDAwN1xcMDAxXFxcblxcMDgwXFwwMDFcXDAwNFxcMDAxXFwwMjBcXDAwMVxcMDM4XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFxcblxcMDM4XFwwMDFcXDAwNFxcMDAxXFwxNTZcXDAwMVxcMDAyXFwwMDFcXDAzMFxcMDAxXFwwNzhcXDAwMVxcMDAyXFwwMDFcXDAxMFxcMDAxXFxcblxcMDM2XFwwMDFcXDA0M1xcMDAxXFwwMDJcXDAwMVxcMTQ1XFwwMDFcXDAzOFxcMDAxXFwwMTdcXDAwMlxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDA0XFwwMDFcXDA0M1xcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwNFxcMDAxXFwwNDdcXDAwMVxcMDA0XFwwMDFcXDA0OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAzNFxcMDAxXFwwMTBcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNTdcXDAwMVxcMDU3XFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNzZcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDA3OFxcMDAxXFxcblxcMDc4XFwwMDFcXDA0MFxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDcyXFwwMDFcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzOFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMjFcXDAwMVxcMDAwXFwwMDFcXDA4MVxcMDAxXFxcblxcMDgyXFwwMDFcXDAwM1xcMDAxXFwwODdcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzJcXDAwMVxcMDg4XFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA5MVxcMDAxXFwwNzJcXDAwMVxcMDM4XFwwMDFcXDA5NFxcMDAxXFwwNzJcXDAwMVxcMDAyXFwwMDFcXDA5N1xcMDAxXFxcblxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDNcXDAwMVxcMTAzXFwwMDFcXDEwMlxcMDAxXFwwODBcXDAwMVxcMTQ5XFwwMDFcXDA3OFxcMDAxXFxcblxcMTA2XFwwMDFcXDAyOVxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDA3MlxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFxcblxcMDcyXFwwMDFcXDA3OFxcMDAxXFwwNzJcXDAwMVxcMDA0XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDEyMVxcMDAxXFxcblxcMDgwXFwwMDFcXDAxMFxcMDAxXFwwNzFcXDAwMVxcMTI1XFwwMDFcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFxcblxcMDUwXFwwMDFcXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDc4XFwwMDFcXDA0MFxcMDAxXFwxMzVcXDAwMVxcMDcyXFwwMDFcXDEzN1xcMDAxXFxcblxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwxNDVcXDAwMVxcMTQ0XFwwMDFcXDAxMFxcMDAxXFxcblxcMDc4XFwwMDFcXDE0N1xcMDAxXFwwMDRcXDAwMVxcMDQwXFwwMDFcXDE1MFxcMDAxXFwxNTFcXDAwMVxcMTU1XFwwMDFcXDE1M1xcMDAxXFxcblxcMDQwXFwwMDFcXDE1N1xcMDAxXFwxNTdcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDFcXDE2MVxcMDAxXFxcblxcMTYyXFwwMDFcXDAxMFxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDBcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDEwOVxcMDAwXFwwNzhcXDAwMVxcMTExXFwwMDBcXDAwMFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDE3N1xcMDAxXFxcblxcMDA0XFwwMDFcXDA1MFxcMDAxXFwxODBcXDAwMVxcMDcyXFwwMDFcXDAzN1xcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3MlxcMDAxXFxcblxcMTg2XFwwMDFcXDA3OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDEyOFxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDE5M1xcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwxOTZcXDAwMVxcMDgwXFwwMDFcXDAwNFxcMDAxXFwxOTlcXDAwMVxcMjAwXFwwMDFcXDIwMVxcMDAxXFxcblxcMjAyXFwwMDFcXDIwM1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDIwNlxcMDAxXFwwNzJcXDAwMVxcMjA4XFwwMDFcXDIwOVxcMDAxXFxcblxcMjEwXFwwMDFcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMDAyXFwwMDFcXDA3NlxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDIxN1xcMDAxXFxcblxcMjE4XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDA3MlxcMDAxXFxcblxcMDA3XFwwMDFcXDAwNVxcMDAxXFwyMjhcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA0XFwwMDFcXDIzNVxcMDAxXFwwMDBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwMTRcXDAwMVxcMDEwXFwwMDFcXDAwMlxcMDAxXFxcblxcMjQyXFwwMDFcXDAxMFxcMDAxXFwyNDRcXDAwMVxcMjQ1XFwwMDFcXDA3MlxcMDAxXFwyNDdcXDAwMVxcMjQ4XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDI1MVxcMDAxXFwyNTJcXDAwMVxcMjUzXFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMVxcMDAyXFxcblxcMDAyXFwwMDJcXDAwM1xcMDAyXFwwMDRcXDAwMlxcMDUxXFwwMDFcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDM0XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDIwOFxcMDAwXFwwMzJcXDAwMVxcMDc4XFwwMDFcXDAwMVxcMDAxXFxcblxcMDAwXFwwMDFcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDAzXFwwMDFcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDA2XFwwMDFcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwNzZcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFxcblxcMDE0XFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcMDEwXFwwMDFcXDAzOFxcMDAyXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA3OFxcMDAxXFxcblxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDAzXFwwMDFcXDA3MlxcMDAxXFwwNDdcXDAwMlxcMDcyXFwwMDFcXDA3MlxcMDAxXFxcblxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMVxcMDA0XFwwMDFcXDA4MFxcMDAxXFxcblxcMDQwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNTBcXDAwMVxcMDA0XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDJcXDAwMVxcMDE1XFwwMDFcXDAxNlxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMTVcXDAwMVxcMDAwXFwwMDBcXDAyNFxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDIxXFwwMDFcXDAzN1xcMDAxXFwwNTBcXDAwMVxcMDM4XFwwMDFcXDAzNFxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAwNFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDA0XFwwMDFcXDA1MVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDc4XFwwMDFcXDAwM1xcMDAxXFwwNTBcXDAwMVxcMDMwXFwwMDFcXDAwM1xcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwM1xcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzZcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwNzNcXDAwMVxcMDUwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDc2XFwwMDFcXDAwMlxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwNlxcMDAxXFwwMjhcXDAwMVxcMDc1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI4XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc4XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDc4XFwwMDFcXDA5NlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwNFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMDAxXFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFxcblxcMDM2XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEwXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAxMVxcMDAxXFxcblxcMDEyXFwwMDFcXDE0MVxcMDAxXFwxNDJcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUwXFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAxNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMTRcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA3NVxcMDAxXFxcblxcMjUyXFwwMDBcXDI1M1xcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDVcXDAwMVxcMDc1XFwwMDFcXDI1NFxcMDAwXFxcblxcMjU1XFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwMzJcXDAwMVxcMDMyXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMyXFwwMDFcXDAwNlxcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDFcXDE5MlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFxcblxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFxcblxcMDA3XFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3NFxcMDAxXFxcblxcMDc1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFxcblxcMDA4XFwwMDFcXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDAwNlxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDA4MFxcMDAxXFwwNDNcXDAwMVxcMDA0XFwwMDFcXDAzNFxcMDAxXFxcblxcMDcyXFwwMDFcXDAwM1xcMDAxXFwwMDJcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAwNFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwMzJcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDA2XFwwMDFcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDA2XFwwMDFcXDAwOFxcMDAxXFwwNTBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFxcblxcMDc2XFwwMDFcXDAwOFxcMDAxXFwwMThcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwMDFcXDAwMlxcMDExXFwwMDJcXDAyM1xcMDAyXFxcblxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI0NVxcMDAxXFwxMDdcXDAwMFxcMDc1XFwwMDFcXDAwMFxcMDAwXFxcblxcMTU4XFwwMDBcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDRcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMzJcXDAwMVxcMDQxXFwwMDBcXDIwOVxcMDAwXFwxNDFcXDAwMVxcMTE4XFwwMDBcXDExNlxcMDAwXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAwMlxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMTUyXFwwMDFcXDE0MlxcMDAxXFwwODdcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDM2XFwwMDFcXDEzM1xcMDAxXFxcblxcMTMyXFwwMDFcXDA3NlxcMDAxXFwwNDRcXDAwMFxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNTBcXDAwMVxcMjU1XFwyNTVcXDAxNFxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDc1XFwwMDFcXDAzOFxcMDAxXFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDEwNlxcMDAwXFwwNzZcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcblxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcMTUxXFwwMDBcXDE1MlxcMDAwXFxcblxcMTUzXFwwMDBcXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFxcblxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDcyXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMTc1XFwwMDFcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNzlcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDEwXFwwMDFcXDAwMFxcMDAwXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyNlxcMDAxXFxcblxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMDAzXFwwMDFcXDA1MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFxcblxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFxcblxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAxXFxcblxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFxcblxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDAyXFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDAwOVxcMDAxXFxcblxcMDEwXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOVxcMDAxXFxcblxcMDcxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA3MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA3NVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDUwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDEwXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFxcblxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFxcblxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFxcblxcMDU5XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFxcblxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDc0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMDE1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDA1MVxcMDAxXFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODFcXDAwMVxcMDgyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFxcblxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDc4XFwwMDFcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFxcblxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDAzXFwwMDFcXDA3M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFxcblxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFxcblxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBDT01NQVxcMDAwXFxcbiAgRE9UXFwwMDBcXFxuICBPUF9QQVJcXDAwMFxcXG4gIENMX1BBUlxcMDAwXFxcbiAgT1BfQ1VSXFwwMDBcXFxuICBDTF9DVVJcXDAwMFxcXG4gIE9QX0JSQVxcMDAwXFxcbiAgQ0xfQlJBXFwwMDBcXFxuICBBVFxcMDAwXFxcbiAgU0VNSUNPTE9OXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTVVMVFxcMDAwXFxcbiAgRElWXFwwMDBcXFxuICBNT0RcXDAwMFxcXG4gIE1BWFxcMDAwXFxcbiAgTUlOXFwwMDBcXFxuICBTSU5VU1xcMDAwXFxcbiAgQ09TSU5VU1xcMDAwXFxcbiAgVEFOXFwwMDBcXFxuICBQT1dcXDAwMFxcXG4gIEFCU1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIExPR1xcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgTk9UXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBESUZGXFwwMDBcXFxuICBFUVVBTFxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBTSEFSUFxcMDAwXFxcbiAgVU5ERVJTQ09SRVxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgUkFSXFwwMDBcXFxuICBMUkFSXFwwMDBcXFxuICBMQVJcXDAwMFxcXG4gIEVNQVhcXDAwMFxcXG4gIFRNQVhcXDAwMFxcXG4gIENQVVRJTUVcXDAwMFxcXG4gIFRJTUVcXDAwMFxcXG4gIEVWRU5UXFwwMDBcXFxuICBOVUxMX0VWRU5UXFwwMDBcXFxuICBDT0xPTlxcMDAwXFxcbiAgTkVXTElORVxcMDAwXFxcbiAgQkFDS1NMQVNIXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIFRPS0VOXFwwMDBcXFxuICBJTklUXFwwMDBcXFxuICBPQlNcXDAwMFxcXG4gIFBMT1RcXDAwMFxcXG4gIFBFUlRcXDAwMFxcXG4gIENPTkZJR1xcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIERFTEVURVxcMDAwXFxcbiAgSU5UUk9cXDAwMFxcXG4gIFNOQVBTSE9UXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBGTFVYXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgQVNTSUdOXFwwMDBcXFxuICBQUklOVEZcXDAwMFxcXG4gIFBMT1RFTlRSWVxcMDAwXFxcbiAgU1BFQ0lFU19PRlxcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFJFUEVBVFxcMDAwXFxcbiAgQUxBUk1cXDAwMFxcXG4gIFJVTlxcMDAwXFxcbiAgTEVUXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgSU5UXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgSURcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFNQQUNFXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggW10gKVxuIyAxNTk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIFwiXFxuXCI6Ol8yIClcbiMgMTYwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBfMTo6XzIgKVxuIyAxNjA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzE6Ol8yIClcbiMgMTYxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxNjIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE2MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggTmJyLkkgXzEgKVxuIyAxNjM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19GUkVFIClcbiMgMTY0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIChMS2FwcGEuTE5LX1ZBTFVFIChfMSwoKSkpIClcbiMgMTY1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19TT01FIClcbiMgMTY1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChMS2FwcGEuTE5LX1RZUEUgKChfMSxyaHNfcG9zIDEpLChfNSxyaHNfcG9zIDUpKSkgKVxuIyAxNjY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgTEthcHBhLkxOS19BTlkgKVxuIyAxNjcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBzdGF0ZVwiKSkgKVxuIyAxNjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMTY4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzMgKVxuIyAxNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNSApXG4jIDE3MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBOb25lIClcbiMgMTcxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIE5vbmUgKVxuIyAxNzIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoU29tZSAoXzMsIHJoc19wb3MgMykpIClcbiMgMTczMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIClcbiMgMTczOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKFNvbWUgXzEpIClcbiMgMTc0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBOb25lIClcbiMgMTc1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDE3NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzMgKVxuIyAxNzY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF81IClcbiMgMTc3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggTm9uZSApXG4jIDE3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoXzMsIHJoc19wb3MgMykgKVxuIyAxNzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSApXG4jIDE4MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbGlua19zdGF0ZXMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8yLCBfMykgKVxuIyAxODEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfbGluaykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGxpbmtpbmcgc3RhdGUgb3IgbWlzc2luZyAnXSdcIixyaHNfcG9zIDIpKSApXG4jIDE4MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9saW5rKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsIF8yKSApXG4jIDE4MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9pbnRlcm5hbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgaW50ZXJuYWwgc3RhdGUgb3IgbWlzc2luZyAnfSdcIixyaHNfcG9zIDMpKSApXG4jIDE4MzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9pbnRlcm5hbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfNSwgcmhzX3BvcyA1KSApXG4jIDE4NDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgtIF83LCByaHNfcG9zIDcpIClcbiMgMTg1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgtIF81LCByaHNfcG9zIDUpIClcbiMgMTg2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0VRIF8zLHJoc19wb3MgMykgKVxuIyAxODY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0dURSBfNSxyaHNfcG9zIDUpIClcbiMgMTg3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNMVEUgXzUscmhzX3BvcyA1KSApXG4jIDE4ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DVkFSIF8zLHJoc19wb3MgMykgKVxuIyAxODk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKE5vbmUsIF8xKSApXG4jIDE5MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKFNvbWUgXzEsIExvYy5hbm5vdF93aXRoX2R1bW15IDApIClcbiMgMTkxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfbW9kaWYpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoU29tZSBfMSxfNSkgKVxuIyAxOTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAxOTQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSBfNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMTk1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDE5NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDE5ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzaXRlX2NvdW50ZXIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSBfNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IClcbiMgMTk5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IClcbiMgMjAwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMjAxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDE3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSApXG4jIDIwMjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIwMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc2l0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNCApXG4jIDIwMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIEFzdC5Ob01vZCxzdGFydF9wb3MgMSxfMSApXG4jIDIwNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuQ3JlYXRlLGVuZF9wb3MgMixfMyApXG4jIDIwNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkVyYXNlLGVuZF9wb3MgMixfMyApXG4jIDIwNjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAoIChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSxfMikgKVxuIyAyMDY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzcgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF81LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMDgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEwIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDkgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlKSBpblxuICAgIGxldCBfMTEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCBtb2RpZixwZW5kLGFuID0gXzExIGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfNSxyaHNfcG9zIDUpLCBfOSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjA5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSApXG4jIDIxMDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhZ2VudCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyMDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiggbGV0ICh4LF8sXykgPSBfMSBpblxuICBtYXRjaCBfNCB3aXRoXG4gIHwgKHk6OnoscGVuZCxwKSAtPiAoKHg6OnkpOjp6LHBlbmQscClcbiAgfCAoW10sXyxfKSAtPlxuICAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAoYWRkX3BvcyA0IChcImFzc2VydGlvbiBmYWlsdXJlIGluIHBhdHRlcm4gcGFyc2luZ1wiKSkpIClcbiMgMjExOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LHBlbmQscCkgPSBfNCBpbiAoW3hdOjp5LHBlbmQscCkgKVxuIyAyMTI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBsZXQgKHgscGVuZCxwKSA9IF8xIGluIChbW3hdXSxwZW5kLHApIClcbiMgMjEzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmJyKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUIF8xKSApXG4jIDIxNDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKSApXG4jIDIxNDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSApXG4jIDIxNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIClcbiMgMjE1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEIChfMykpIClcbiMgMjE2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzMgaW4gYWRkX3BvcyA0IChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBwKSApXG4jIDIxNzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKF8xKSkgKVxuIyAyMTgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjE5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIClcbiMgMjE5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgKVxuIyAyMjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIClcbiMgMjIwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjIxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjIyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIF8xIClcbiMgMjIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8zLF81KSkgKVxuIyAyMjQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzMsXzUpKSApXG4jIDIyNTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLF8zKSkgKVxuIyAyMjU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8zKSkgKVxuIyAyMjY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsXzMpKSApXG4jIDIyNzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLF8zKSkgKVxuIyAyMjgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCxfMykpIClcbiMgMjI5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8zKSkgKVxuIyAyMjk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMykpIClcbiMgMjMwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzMpKSApXG4jIDIzMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEsZW5kX3BvcyAxLF8yKSApXG4jIDIzMjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgseSx6KSA9IF81IGluXG4gICAgICAoYWRkX3BvcyA0IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVyxfMSx4KSkseSx6KSApXG4jIDIzMzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDIzNDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1PRFVMTyx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyMzUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAyODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyMzYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAyODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDIzNzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjM4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjM5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNDA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX2lmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjQxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjQyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChpLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSBfNCBpblxuICAoKEFsZ19leHByLklGKGksdCxfNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsXzgpIClcbiMgMjQ0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzIwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAoIHRydWUgKVxuIyAyNDQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggZmFsc2UgKVxuIyAyNDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xlYW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMyBpbiB4IClcbiMgMjQ2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSApXG4jIDI0NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSApXG4jIDI0NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8zKSkgKVxuIyAyNDgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSwgXzIpIClcbiMgMjQ4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI1MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI1MjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjU0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9jb21wKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjU0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfbm9fb3IpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfbm9fb3IpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI1NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI1NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNTgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzIgaW4geCApXG4jIDI1ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIClcbiMgMjU5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoZmFsc2UpXG4jIDI2MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKHRydWUpXG4jIDI2MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFsoXzEsKF8zLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsXzQgKVxuIyAyNjE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsLHBlbmQsYW4pID0gXzcgaW4gKF8xLChfMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gKVxuIyAyNjMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBsZXQgKHAscGVuZCxhbikgPSBfMSBpbiAocCxbXSxwZW5kLGFuKSApXG4jIDI2MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gXzQgaW4gKHAsIHQsIHBlbmQsIGFuKSApXG4jIDI2NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodCxwZW5kLGFuKSA9IF8zIGluIChbXSwgdCwgcGVuZCwgYW4pIClcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgNCBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjY2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgKVxuIyAyNjc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGxocyxybV90b2tlbixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9IF80IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LF8yLHBlbmQsYW4pIClcbiMgMjY4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LF8yLGVuZF9wb3MgMixfMykgKVxuIyAyNjk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMSxwZW5kLGFuKSApXG4jIDI3MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZV9zaWRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobWl4LGRlbHRhX3Rva2VuLHBlbmQsYW4pID0gXzEgaW5cbiAgICAgIChBc3QuRWRpdCB7QXN0Lm1peDsgQXN0LmRlbHRhX3Rva2VufSxmYWxzZSxwZW5kLGFuKSApXG4jIDI3MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiAoeCxOb25lKSApXG4jIDI3MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LF8sXykgPSBfMSBpbiBsZXQgKHksXyxfKSA9IF80IGluICh4LCBTb21lIHkpIClcbiMgMjczMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYixwZW5kLGFuKSA9IF82IGluIChiLFNvbWUgXzMscGVuZCxhbikgKVxuIyAyNzQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfd2l0aF9yYWRpdXMpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsU29tZSBfNCxlbmRfcG9zIDUsXzYpIClcbiMgMjc1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChhLHBlbmQsYW4pID0gXzEgaW4gKGEsTm9uZSxwZW5kLGFuKSApXG4jIDI3NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGsyLGsxLHBlbmQsYW4pID0gXzMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSApXG4jIDI3NjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3JhdGUpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGsyLGsxLF8sXykgPSBfMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSBfNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIClcbiMgMjc3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdiaXJhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrX2RlZixrX3VuLGtfb3Asa19vcF91bixwb3NfZW5kLF9hbm5vdCkgPSBfMiBpblxuICAgICAgbGV0IChyZXdyaXRlLGJpZGlyZWN0aW9uYWwsXyxfKSA9IF8xIGluXG4gICAgICAoe1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcG9zX2VuZCkgKVxuIyAyNzkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDIgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpIClcbiMgMjc5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDI4MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAodixwZW5kLGFuKSA9IF8zIGluICgoXzEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIClcbiMgMjgxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKSApXG4jIDI4MjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAyODM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgKVxuIyAyODQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggWyBfMSxyaHNfcG9zIDEgXSApXG4jIDI4NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA0NzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxyaHNfcG9zIDEpIDo6IF81IClcbiMgMjg1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIClcbiMgMjg2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSBfNCBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSkgKVxuIyAyODgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfMSBpbiAodixBc3QuSU5JVF9UT0sgXzIpIClcbiMgMjg4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh2LF8sXykgPSBfNCBpbiAodixBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAyODk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSApXG4jIDI5MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMjkxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8zKVxuIyAyOTIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFtQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAxIF8xKV0sZW5kX3BvcyAxLF8yKSApXG4jIDI5MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzEgaW4gKFtQcmltaXRpdmVzLkFsZ19wZXhwciBhXSxwZW5kLHApIClcbiMgMjkzNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByX2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLGFuKSA9IF8zIGluICh2LGVuZF9wb3MgNCxhbiBAIF81KSApXG4jIDI5NTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIClcbiMgMjk2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLHApID0gXzQgaW5cbiAgICAgIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgKVxuIyAyOTczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHJfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCAoW10sc3RhcnRfcG9zIDEsXzEpIClcbiMgMjk4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMjk4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYSxwZW5kLHApID0gXzUgaW4gKEFzdC5VUERBVEUgKChfMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgKVxuIyAyOTk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzAwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKEFzdC5DRkxPV0xBQkVMIChfNSwoXzMscmhzX3BvcyAzKSksZW5kX3BvcyA1LF82KSApXG4jIDMwMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBhdCxlcGF0LF8pID0gXzMgaW5cbiAgICAgIChBc3QuQ0ZMT1dNSVggKF80LChwYXQsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIGVwYXQpKSxlbmRfcG9zIDQsIF81KSApXG4jIDMwMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICAoKGlmIF80IHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSBlbHNlIEFzdC5ESU5PRkYgcCksXG4gICAgICAgZW5kX3BvcyA0LF81KSApXG4jIDMwNDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sZWFuKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluXG4gICAgICBpZiBfNiAmJiBfNCA9IFwiYWJzb2x1dGVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgaWYgXzYgJiYgXzQgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5QUk9CQUJJTElUWSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJyZWxhdGl2ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyA0KSkgKVxuIyAzMDYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHJld3JpdGUsXyxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICBBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAoeyBBc3QucmV3cml0ZTsgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmQpKSxcbiAgICAgIHBlbmQsYW5cbiAgICApXG4jIDMwNzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNTY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgIEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19jcmVhdGVkX21peHR1cmUgbTtcbiAgICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMwOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMxMDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNTg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG0scGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8zIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMxMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIClcbiMgMzEzNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIClcbiMgMzE0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChzLF8sXykgPSBfMiBpbiAoQXN0LlNOQVBTSE9UIChfMyxzKSxlbmRfcG9zIDMsXzQpIClcbiMgMzE1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHMscGVuZCxwKSA9IF8yIGluIChBc3QuU1RPUCBzLHBlbmQscCkgKVxuIyAzMTU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZixwZW5kLHApID0gXzQgaW4gbGV0IChjLF8sXykgPSBfMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgKVxuIyAzMTY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggbGV0IChjLHBlbmQscCkgPSBfMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIClcbiMgMzE3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSxfMikgKVxuIyAzMTgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoXG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9IF83IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9IF8zIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKF80LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSApXG4jIDMxOTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICBsZXQgKHYscGVuZCxwKSA9IF81IGluXG4gICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCBfMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIClcbiMgMzIxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDMyMjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA2MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSApXG4jIDMyMzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgIChfMSlcbiMgMzI0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKF8xKVxuIyAzMjUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9vcl9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzMjYwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzMjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBPYmoucmVwcihcbiMgNjQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBsZXQgKGUscCxhKSA9IF8xIGluIChbZV0scCxhKSApXG4jIDMyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2VmZmVjdF9vcl9pZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzMjg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDMyOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzMjk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdpZGluKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzMzA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMyApXG4jIDMzMTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGFydGlhbF9lZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGUsXyxfKSA9ICBfMyBpbiBlLGVuZF9wb3MgNixfNyApXG4jIDMzMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8xIGluIChbZV0sZW5kX3BvcyAyLF8zKSApXG4jIDMzMzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfMSBpbiBsZXQgKGwscGVuZCxhKSA9IF80IGluIChlOjpsLHBlbmQsYSkgKVxuIyAzMzQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF8yIGluIGUgKVxuIyAzMzUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSApXG4jIDMzNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAoIE5vbmUgKVxuIyAzMzY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbmJyKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfNCApXG4jIDMzNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSApXG4jIDMzODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2FsYXJtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChiLHBlbmQscCkgPSBfMyBpbiAoU29tZSBiLHBlbmQscCkgKVxuIyAzMzkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjgxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSApXG4jIDMzOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDM0MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHByZSxfLF8pID0gXzIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gXzUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gXzYgaW5cbiAgICAgIChfMSxTb21lIHByZSxlLHBvc3QpIClcbiMgMzQxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGUsXyxfKSA9IF80IGluIGxldCAocG9zdCxfLF8pID0gXzUgaW4gKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM0MjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM0NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGxldCAoZSxfLF8pID0gXzQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9IF81IGluXG4gICAgICAgICAgKF8xLE5vbmUsZSxwb3N0KSApXG4jIDM0NTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncnVsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGQgKEFzdC5SVUxFKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8zKSkgKVxuIyAzNDYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzUgaW4gYWRkIChBc3QuREVDTEFSRSAoKF8xLHJoc19wb3MgMSksdikpIClcbiMgMzQ3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGQgKEFzdC5SVUxFIChOb25lLF8xKSkgKVxuIyAzNDc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA3MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYSxfLF8pID0gXzMgaW4gYWRkIChBc3QuU0lHIGEpIClcbiMgMzQ4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlXCIpKSApXG4jIDM0OTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5UT0tFTlNJRyAoXzMscmhzX3BvcyAzKSkgKVxuIyAzNTA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LlBMT1QgdikgKVxuIyAzNTEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgKVxuIyAzNTIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSx2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSApXG4jIDM1MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgKVxuIyAzNTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2luaXRfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhbGcsaW5pdCkgPSBfMyBpbiBhZGQgKEFzdC5JTklUIChhbGcsaW5pdCkpIClcbiMgMzU0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5QRVJUIChfMiwgcmhzX3BvcyAyKSkgKVxuIyAzNTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuQ09ORklHICgoXzMscmhzX3BvcyAzKSxfNSkpIClcbiMgMzU2MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NlbnRlbmNlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzU3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RlbF9ib2R5KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBvdXRwdXQgKCkgKVxuIyAzNTc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgNzM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzNTg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgKVxuIyAzNTkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSApXG4jIDM2MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHBhdXNlLF8sXykgPSBfNCBpbiBBc3QuUlVOIHBhdXNlIClcbiMgMzYwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlZmYsXyxfKSA9IF8yIGluIEFzdC5NT0RJRlkgW2VmZl0gKVxuIyAzNjE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAoIEFzdC5RVUlUIClcbiMgMzYyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIClcbiMgMzYzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IG1vZGVsICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IGludGVyYWN0aXZlX2NvbW1hbmQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2Jvb2xfZXhwciAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBtb2RlbCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdClcbmxldCBpbnRlcmFjdGl2ZV9jb21tYW5kIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZClcbmxldCBzdGFuZGFsb25lX2VmZmVjdF9saXN0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KVxubGV0IHN0YW5kYWxvbmVfYm9vbF9leHByIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqL1xuLyogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqL1xuLyogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJXtcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4lfVxuXG4ldG9rZW4gRU9GIENPTU1BIERPVCBPUF9QQVIgQ0xfUEFSIE9QX0NVUiBDTF9DVVIgT1BfQlJBIENMX0JSQSBBVCBTRU1JQ09MT05cbiV0b2tlbiBQTFVTIE1JTlVTIE1VTFQgRElWIE1PRCBNQVggTUlOIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgU1FSVCBFWFBPTkVOVFxuJXRva2VuIExPRyBPUiBBTkQgTk9UIFRIRU4gRUxTRSBESUZGIEVRVUFMIFNNQUxMRVIgR1JFQVRFUiBUUlVFIEZBTFNFIElORklOSVRZXG4ldG9rZW4gU0hBUlAgVU5ERVJTQ09SRSBQSVBFIFJBUiBMUkFSIExBUiBFTUFYIFRNQVggQ1BVVElNRSBUSU1FIEVWRU5UIE5VTExfRVZFTlRcbiV0b2tlbiBDT0xPTiBORVdMSU5FIEJBQ0tTTEFTSCBTSUdOQVRVUkUgVE9LRU4gSU5JVCBPQlMgUExPVCBQRVJUIENPTkZJRyBBUFBMWVxuJXRva2VuIERFTEVURSBJTlRSTyBTTkFQU0hPVCBTVE9QIEZMVVggVFJBQ0sgQVNTSUdOIFBSSU5URiBQTE9URU5UUlkgU1BFQ0lFU19PRlxuJXRva2VuIERPIFJFUEVBVCBBTEFSTSBSVU4gTEVUXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPGZsb2F0PiBGTE9BVFxuJXRva2VuIDxzdHJpbmc+IElEIExBQkVMIFNUUklOR1xuJXRva2VuIDxzdHJpbmc+IFNQQUNFIENPTU1FTlRcblxuJXN0YXJ0IG1vZGVsXG4ldHlwZSA8QXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdD4gbW9kZWxcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGVcbiAgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSVcblxuYW5ub3RlZDpcbiAgfCB7IFtdIH1cbiAgfCBORVdMSU5FIGFubm90ZWQgeyBcIlxcblwiOjokMiB9XG4gIHwgU1BBQ0UgYW5ub3RlZCB7ICQxOjokMiB9XG4gIHwgQ09NTUVOVCBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgO1xuXG5uYnI6XG4gIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gIHwgRkxPQVQgeyBOYnIuRiAkMSB9XG4gIHwgSU5UIHsgTmJyLkkgJDEgfVxuICA7XG5cbmxpbmtfc3RhdGU6XG4gIHwgRE9UIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSB9XG4gIHwgSU5UIHsgYWRkX3BvcyAxIChMS2FwcGEuTE5LX1ZBTFVFICgkMSwoKSkpIH1cbiAgfCBVTkRFUlNDT1JFIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSB9XG4gIHwgSUQgYW5ub3RlZCBET1QgYW5ub3RlZCBJRFxuICAgIHsgYWRkX3BvcyA1IChMS2FwcGEuTE5LX1RZUEUgKCgkMSxyaHNfcG9zIDEpLCgkNSxyaHNfcG9zIDUpKSkgfVxuICB8IFNIQVJQIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBzdGF0ZVwiKSkgfVxuICA7XG5cbmxpbmtfc3RhdGVzOlxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQ1IH1cbiAgO1xuXG5saW5rX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgRE9UIGFubm90ZWQgeyBTb21lIE5vbmUgfVxuICB8IERJViBhbm5vdGVkIElOVCBhbm5vdGVkIHsgU29tZSAoU29tZSAoJDMsIHJoc19wb3MgMykpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbmludGVybmFsX3N0YXRlOlxuICB8IElEIHsgYWRkX3BvcyAxIChTb21lICQxKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTm9uZSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGVzOlxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgeyBbJDFdIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIGludGVybmFsX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIENPTU1BIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmludGVybmFsX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSUQgYW5ub3RlZCB7IFNvbWUgKCQzLCByaHNfcG9zIDMpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbnNpdGVfbGluazpcbiAgfCBhbm5vdGVkIGxpbmtfc3RhdGVzIGxpbmtfbW9kaWYgQ0xfQlJBIHsgKCQyLCAkMykgfVxuICB8IGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgfVxuICA7XG5cbnNpdGVfaW50ZXJuYWw6XG4gIHwgaW50ZXJuYWxfc3RhdGVzIGludGVybmFsX21vZGlmIENMX0NVUiB7ICgkMSwgJDIpIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgfVxuICA7XG5cbmNvdW50ZXJfbW9kaWY6XG4gIHwgUExVUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKCQ1LCByaHNfcG9zIDUpIH1cbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBNSU5VUyBhbm5vdGVkIElOVCB7ICgtICQ3LCByaHNfcG9zIDcpIH1cbiAgfCBNSU5VUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKC0gJDUsIHJoc19wb3MgNSkgfVxuICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgfCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0VRICQzLHJoc19wb3MgMykgfVxuICB8IEdSRUFURVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0dURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBTTUFMTEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoQXN0LkNMVEUgJDUscmhzX3BvcyA1KSB9XG4gIHwgRVFVQUwgYW5ub3RlZCBJRCB7IChBc3QuQ1ZBUiAkMyxyaHNfcG9zIDMpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXI6XG4gIHwgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkIHsgKE5vbmUsICQxKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoU29tZSAkMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgfVxuICB8IGNvdW50ZXJfdGVzdCBhbm5vdGVkIERJViBhbm5vdGVkIGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgIHsgKFNvbWUgJDEsJDUpIH1cbiAgO1xuXG5zaXRlOlxuICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkOCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ7XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50OyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfY291bnRlclxuICAgIHsgbGV0IChjb3VudGVyX3Rlc3QsY291bnRlcl9kZWx0YSkgPSAkNSBpblxuICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgeyBBc3QuY291bnRlcl9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QuY291bnRlcl90ZXN0OyBBc3QuY291bnRlcl9kZWx0YSB9IH1cbiAgfCBJRCBhbm5vdGVkXG4gICAgeyBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gIDtcblxuaW50ZXJmYWNlOlxuICB8IHsgW10gfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIH1cbiAgfCBzaXRlIGludGVyZmFjZSB7ICQxIDo6ICQyIH1cbiAgfCBzaXRlIENPTU1BIGFubm90ZWQgaW50ZXJmYWNlIHsgJDEgOjogJDQgfVxuICA7XG5cbmFnZW50X21vZGlmOlxuICB8IGFubm90ZWQgeyBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsJDEgfVxuICB8IGFubm90ZWQgUExVUyBhbm5vdGVkIHsgQXN0LkNyZWF0ZSxlbmRfcG9zIDIsJDMgfVxuICB8IGFubm90ZWQgTUlOVVMgYW5ub3RlZCB7IEFzdC5FcmFzZSxlbmRfcG9zIDIsJDMgfVxuICA7XG5cbmFnZW50OlxuICB8IERPVCBhbm5vdGVkIHsgKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLCQyKSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAoQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkNSwgbW9kaWYpLHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIENPTE9OIGFubm90ZWQgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2UgQ0xfUEFSIGFnZW50X21vZGlmXG4gICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQxMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICA7XG5cbnBhdHRlcm46XG4gIHwgYWdlbnQgQ09NTUEgYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW5cbiAgbWF0Y2ggJDQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSB9XG4gIHwgYWdlbnQgQkFDS1NMQVNIIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxwZW5kLHApID0gJDQgaW4gKFt4XTo6eSxwZW5kLHApIH1cbiAgfCBhZ2VudCB7IGxldCAoeCxwZW5kLHApID0gJDEgaW4gKFtbeF1dLHBlbmQscCkgfVxuICA7XG5cbmNvbnN0YW50OlxuICB8IG5iciB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQ09OU1QgJDEpIH1cbiAgfCBFTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgfVxuICB8IFRNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSB9XG4gIHwgQ1BVVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkgfVxuICA7XG5cbnZhcmlhYmxlOlxuICB8IFBJUEUgYW5ub3RlZCBJRCBhbm5vdGVkIFBJUEUgeyBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEICgkMykpIH1cbiAgfCBQSVBFIGFubm90ZWQgcGF0dGVybiBQSVBFXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgfVxuICB8IElEIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBMQUJFTCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIH1cbiAgfCBFVkVOVCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSB9XG4gIHwgTlVMTF9FVkVOVFxuICAgIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkgfVxuICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGFsZ19leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgY29uc3RhbnQgeyAkMSB9XG4gIHwgdmFyaWFibGUgeyAkMSB9XG4gIHwgTUFYIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMywkNSkpIH1cbiAgfCBNSU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQzLCQ1KSkgfVxuICB8IEVYUE9ORU5UIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCwkMykpIH1cbiAgfCBTSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMykpIH1cbiAgfCBDT1NJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDMpKSB9XG4gIHwgVEFOIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTiwkMykpIH1cbiAgfCBBQlMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQzKSkgfVxuICB8IFNRUlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMykpIH1cbiAgfCBMT0cgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLCQzKSkgfVxuICB8IE1JTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMykpIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19tb2Q6XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIFBPVyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh4LHkseikgPSAkNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csJDEseCkpLHkseikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3Byb2Q6XG4gIHwgYWxnX2V4cHJfdXBfdG9fbW9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgTU9EIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19zdW06XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gTVVMVCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIERJViBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9faWY6XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFBMVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgTUlOVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cblxuYWxnX2V4cHI6XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgeyAkMSB9XG4gIHwgYm9vbF9leHByIFRIRU4gYW5ub3RlZCBhbGdfZXhwciBFTFNFIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZFxuICAgIHsgbGV0IChpLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSAkNCBpblxuICAoKEFsZ19leHByLklGKGksdCwkNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsJDgpIH1cbiAgO1xuXG5ib29sZWFuOlxuICB8IFRSVUUgeyB0cnVlIH1cbiAgfCBGQUxTRSB7IGZhbHNlIH1cbiAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYm9vbF9leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgVFJVRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5UUlVFIH1cbiAgfCBGQUxTRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSB9XG4gIHwgTk9UIGFubm90ZWQgc21hbGxfYm9vbF9leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULCQzKSkgfVxuICA7XG5cbmJvb2xfZXhwcl9jb21wOlxuICB8IHNtYWxsX2Jvb2xfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwgJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBHUkVBVEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFNNQUxMRVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERJRkYgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByX25vX29yOlxuICB8IGJvb2xfZXhwcl9jb21wIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9jb21wIEFORCBhbm5vdGVkIGJvb2xfZXhwcl9ub19vclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByOlxuICB8IGJvb2xfZXhwcl9ub19vciB7ICQxIH1cbiAgfCBib29sX2V4cHJfbm9fb3IgT1IgYW5ub3RlZCBib29sX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6XG4gIHwgYW5ub3RlZCBib29sX2V4cHIgRU9GIHsgbGV0ICh4LF8sXykgPSAkMiBpbiB4IH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIH1cbiAgO1xuXG5hcnJvdzpcbiAgfCBSQVIge2ZhbHNlfVxuICB8IExSQVIge3RydWV9XG4gIDtcblxuc3VtX3Rva2VuOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCB7IFsoJDEsKCQzLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsJDQgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChsLHBlbmQsYW4pID0gJDcgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gfVxuICA7XG5cbnJ1bGVfc2lkZTpcbiAgfCBwYXR0ZXJuIHsgbGV0IChwLHBlbmQsYW4pID0gJDEgaW4gKHAsW10scGVuZCxhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChwLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gJDQgaW4gKHAsIHQsIHBlbmQsIGFuKSB9XG4gIHwgUElQRSBhbm5vdGVkIHN1bV90b2tlbiB7IGxldCAodCxwZW5kLGFuKSA9ICQzIGluIChbXSwgdCwgcGVuZCwgYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIHwgUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgO1xuXG5ydWxlX2NvbnRlbnQ6XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQ0IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQyLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZFxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LCQyLGVuZF9wb3MgMiwkMykgfVxuICB8IGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMSxwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlXG4gICAgeyBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9ICQxIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgfVxuICA7XG5cbmFsZ193aXRoX3JhZGl1czpcbiAgfCBhbGdfZXhwciB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsTm9uZSkgfVxuICB8IGFsZ19leHByIENPTE9OIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LF8sXykgPSAkNCBpbiAoeCwgU29tZSB5KSB9XG4gIDtcblxucmF0ZTpcbiAgfCBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYixwZW5kLGFuKSA9ICQ2IGluIChiLFNvbWUgJDMscGVuZCxhbikgfVxuICB8IGFsZ19leHByIE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxTb21lICQ0LGVuZF9wb3MgNSwkNikgfVxuICB8IGFsZ19leHByIHsgbGV0IChhLHBlbmQsYW4pID0gJDEgaW4gKGEsTm9uZSxwZW5kLGFuKSB9XG4gIDtcblxuYmlyYXRlOlxuICB8IEFUIGFubm90ZWQgcmF0ZSB7IGxldCAoazIsazEscGVuZCxhbikgPSAkMyBpbiAoazIsazEsTm9uZSxOb25lLHBlbmQsYW4pIH1cbiAgfCBBVCBhbm5vdGVkIHJhdGUgQ09NTUEgYW5ub3RlZCByYXRlXG4gICAgeyBsZXQgKGsyLGsxLF8sXykgPSAkMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSAkNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIH1cbiAgO1xuXG5ydWxlOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gJDIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSAkMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIH1cbiAgfCBydWxlX2NvbnRlbnQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSB9XG4gIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gIHwgTEFCRUwgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IExBQkVMIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgfVxuICA7XG5cbmlkX2xpc3Q6XG4gIHwgSUQgYW5ub3RlZCB7IFsgJDEscmhzX3BvcyAxIF0gfVxuICB8IElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpZF9saXN0IHsgKCQxLHJoc19wb3MgMSkgOjogJDUgfVxuICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gIHwgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkMiBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAyKSBwZW5kKSkgfVxuICB8IGFsZ19leHByIE9QX1BBUiBhbm5vdGVkIHBhdHRlcm4gQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBpZF9saXN0XG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluICh2LEFzdC5JTklUX1RPSyAkMikgfVxuLypcbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb24gQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoXyxhbGcsaW5pdCkgPSAkNSBpbiAoU29tZSAoJDEscmhzX3BvcyAxKSxhbGcsaW5pdCkgfVxuKi9cbiAgfCBJRCBMQVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNCBpbiAodixBc3QuSU5JVF9UT0sgWyQxLHJoc19wb3MgMV0pfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpIH1cbiAgO1xuXG52YWx1ZV9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIHtbJDEsIHJoc19wb3MgMV19XG4gIHwgU1RSSU5HIGFubm90ZWQgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQzfVxuICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gIHwgU1RSSU5HIGFubm90ZWRcbiAgICB7IChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSAkMSldLGVuZF9wb3MgMSwkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQxIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSB9XG4gIHwgcHJpbnRfZXhwcl9saXN0IHsgJDEgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHByaW50X2V4cHJfbGlzdCBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sYW4pID0gJDMgaW4gKHYsZW5kX3BvcyA0LGFuIEAgJDUpIH1cbiAgO1xuXG5wcmludF9leHByX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNSBpbiAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKCQxLCByaHNfcG9zIDEpOjpsLHBlbmQscCkgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgfVxuICA7XG5cbnByaW50X2V4cHI6XG4gIHwgYW5ub3RlZCB7IChbXSxzdGFydF9wb3MgMSwkMSkgfVxuICB8IGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciB7ICQyIH1cbiAgO1xuXG5lZmZlY3Q6XG4gIHwgQVNTSUdOIGFubm90ZWQgSUQgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgQVNTSUdOIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgKEFzdC5DRkxPV0xBQkVMICgkNSwoJDMscmhzX3BvcyAzKSksZW5kX3BvcyA1LCQ2KSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwYXQsZXBhdCxfKSA9ICQzIGluXG4gICAgICAoQXN0LkNGTE9XTUlYICgkNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCAkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgKChpZiAkNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCwkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgaWYgJDYgJiYgJDQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIH1cbiAgfCBBUFBMWSBhbm5vdGVkIGFsZ19leHByIHJ1bGVfY29udGVudFxuICAgIHsgbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgfVxuICB8IElOVFJPIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IElOVFJPIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyBcXFxuJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgZXJyb3JcbiAgICAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKGZhbHNlLHMpLHBlbmQscCkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkIHsgbGV0IChzLF8sXykgPSAkMiBpbiAoQXN0LlNOQVBTSE9UICgkMyxzKSxlbmRfcG9zIDMsJDQpIH1cbiAgfCBTVE9QIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU1RPUCBzLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHsgbGV0IChmLHBlbmQscCkgPSAkNCBpbiBsZXQgKGMsXyxfKSA9ICQyIGluIChBc3QuUFJJTlQgKGYsYykscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgeyBsZXQgKGMscGVuZCxwKSA9ICQyIGluIChBc3QuUFJJTlQgKFtdLGMpLHBlbmQscCkgfVxuICB8IFBMT1RFTlRSWSBhbm5vdGVkIHsgKEFzdC5QTE9URU5UUlksZW5kX3BvcyAxLCQyKSB9XG4gIHwgU1BFQ0lFU19PRiBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHtcbiAgICAgIGxldCAoZmlsZSxwZW5kLHApID0gJDcgaW5cbiAgICAgIGxldCAocGF0LHBlbmRwLF8pID0gJDMgaW5cbiAgICAgIChBc3QuU1BFQ0lFU19PRiAoJDQsZmlsZSwocGF0LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZHApKSxcbiAgICAgICBwZW5kLHApIH1cbiAgO1xuXG5pZGluOlxufCBJRCBhbm5vdGVkIExBUiBhbm5vdGVkIGFsZ19leHByIHtcbiAgIGxldCAodixwZW5kLHApID0gJDUgaW5cbiAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgKEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAoe0FzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgIHtBc3QubWl4PVtdO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHYsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zICA0KSBwZW5kKSkscGVuZCxwKVxuICAgfVxufCBJRCBhbm5vdGVkIExBUiBlcnJvclxuICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH1cbnwgSUQgZXJyb3JcbiAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9O1xuO1xuXG5lZmZlY3Rfb3JfaWRpbjpcbiAgfCBlZmZlY3QgeyQxfVxuICB8IGlkaW4geyQxfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluOlxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICAgICAgfCBpZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICAgICAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxuZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIFNFTUlDT0xPTiBhbm5vdGVkIHtsZXQgKGUsXyxfKSA9ICAkMyBpbiBlLGVuZF9wb3MgNiwkNyB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCBlZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6XG4gIHwgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IEVPRiB7IGxldCAoZSxfLF8pID0gJDIgaW4gZSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiUHJvYmxlbWF0aWMgZWZmZWN0IGxpc3RcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHwgYW5ub3RlZCB7IE5vbmUgfVxuICB8IGFubm90ZWQgQUxBUk0gYW5ub3RlZCBuYnIgYW5ub3RlZCB7IFNvbWUgJDQgfVxuICB8IGFubm90ZWQgQUxBUk0gZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiYWxhcm0gdGFrZXMgYSBudW1iZXIgYXMgYXJndW1lbnRcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQ6XG4gIHwgUkVQRUFUIGFubm90ZWQgYm9vbF9leHByIHsgbGV0IChiLHBlbmQscCkgPSAkMyBpbiAoU29tZSBiLHBlbmQscCkgfVxuXG5wZXJ0dXJiYXRpb25fcG9zdDpcbiAgfCB7IChOb25lLCBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCksW10pIH1cbiAgfCBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQgeyQxfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbjpcbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluIGxldCAocG9zdCxfLF8pID0gJDUgaW4gKCQxLE5vbmUsZSxwb3N0KSB9XG5cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgICAgIHsgbGV0IChlLF8sXykgPSAkNCBpblxuICAgICAgICAgIGxldCAocG9zdCxfLF8pID0gJDUgaW5cbiAgICAgICAgICAoJDEsTm9uZSxlLHBvc3QpIH1cbiAgO1xuXG5zZW50ZW5jZTpcbiAgfCBMQUJFTCBhbm5vdGVkIHJ1bGVcbiAgICB7IGFkZCAoQXN0LlJVTEUoU29tZSAoJDEsIHJoc19wb3MgMSksJDMpKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ1IGluIGFkZCAoQXN0LkRFQ0xBUkUgKCgkMSxyaHNfcG9zIDEpLHYpKSB9XG4gIHwgcnVsZSB7IGFkZCAoQXN0LlJVTEUgKE5vbmUsJDEpKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgYWdlbnQgeyBsZXQgKGEsXyxfKSA9ICQzIGluIGFkZCAoQXN0LlNJRyBhKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZVwiKSkgfVxuICB8IFRPS0VOIGFubm90ZWQgSUQgYW5ub3RlZCB7IGFkZCAoQXN0LlRPS0VOU0lHICgkMyxyaHNfcG9zIDMpKSB9XG4gIHwgUExPVCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5QTE9UIHYpIH1cbiAgfCBQTE9UIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgM1xuICAgICAgICAgICAgICAgICAgXCJNYWxmb3JtZWQgcGxvdCBpbnN0cnVjdGlvbiwgXFxcbmFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSB9XG4gIHwgTEVUIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoaSx2LF8sXykgPSAkMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSB9XG4gIHwgT0JTIGFubm90ZWQgdmFyaWFibGVfZGVjbGFyYXRpb24geyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuT0JTIChpLHYpKSB9XG4gIHwgSU5JVCBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb25cbiAgICB7IGxldCAoYWxnLGluaXQpID0gJDMgaW4gYWRkIChBc3QuSU5JVCAoYWxnLGluaXQpKSB9XG4gIHwgUEVSVCBwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24geyBhZGQgKEFzdC5QRVJUICgkMiwgcmhzX3BvcyAyKSkgfVxuICB8IENPTkZJRyBhbm5vdGVkIFNUUklORyBhbm5vdGVkIHZhbHVlX2xpc3RcbiAgICB7IGFkZCAoQXN0LkNPTkZJRyAoKCQzLHJoc19wb3MgMyksJDUpKSB9XG4gIDtcblxubW9kZWxfYm9keTpcbiAgfCBzZW50ZW5jZSBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IEVPRiB7IG91dHB1dCAoKSB9XG4gIDtcblxubW9kZWw6XG4gIHwgYW5ub3RlZCBtb2RlbF9ib2R5IHsgJDIgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgfVxuICA7XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG4gIHwgYW5ub3RlZCBSVU4gYW5ub3RlZCBTRU1JQ09MT04geyBBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgfVxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgYm9vbF9leHByIFNFTUlDT0xPTiB7IGxldCAocGF1c2UsXyxfKSA9ICQ0IGluIEFzdC5SVU4gcGF1c2UgfVxuICB8IGFubm90ZWQgZWZmZWN0IFNFTUlDT0xPTiB7IGxldCAoZWZmLF8sXykgPSAkMiBpbiBBc3QuTU9ESUZZIFtlZmZdIH1cbiAgfCBhbm5vdGVkIEVPRiB7IEFzdC5RVUlUIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkgfVxuICA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgYXBwZW5kX3RvX2FzdF9jb21waWwgcmV2X2luc3RyIGNvbXBpbCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biByIC0+IGZ1bmN0aW9uXG4gICAgICB8IEFzdC5SVUxFIHJ1IC0+IHsgciB3aXRoIEFzdC5ydWxlcyA9IHJ1IDo6IHIuQXN0LnJ1bGVzIH1cbiAgICAgIHwgQXN0LlNJRyBhZyAtPiB7IHIgd2l0aCBBc3Quc2lnbmF0dXJlcyA9IGFnIDo6IHIuQXN0LnNpZ25hdHVyZXMgfVxuICAgICAgfCBBc3QuVE9LRU5TSUcgc3RyX3BvcyAtPiB7IHIgd2l0aCBBc3QudG9rZW5zID0gc3RyX3BvcyA6OiByLkFzdC50b2tlbnMgfVxuICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC52b2x1bWVzID0gKHZvbF90eXBlLCB2b2wsIHZvbF9wYXJhbSkgOjogci5Bc3Qudm9sdW1lcyB9XG4gICAgICB8IEFzdC5JTklUIChhbGcsIGluaXRfdCkgLT5cbiAgICAgICAgeyByIHdpdGggQXN0LmluaXQgPSAoYWxnLCBpbml0X3QpIDo6IHIuQXN0LmluaXQgfVxuICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT4geyByIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhciA6OiByLkFzdC52YXJpYWJsZXMgfVxuICAgICAgfCBBc3QuT0JTICgoKGxibCwgcG9zKSwgXykgYXMgdmFyKSAtPlxuICAgICAgICAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90KilcbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzO1xuICAgICAgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCwgcG9zKSA6OiByLkFzdC5vYnNlcnZhYmxlcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuUExPVCBleHByIC0+IHsgciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHIgOjogci5Bc3Qub2JzZXJ2YWJsZXMgfVxuICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLCBwcmUsIGVmZmVjdCwgb3B0KSwgcG9zKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICAgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgOjogci5Bc3QucGVydHVyYmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgciB3aXRoXG4gICAgICAgICAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsIHZhbHVlX2xpc3QpIDo6IHIuQXN0LmNvbmZpZ3VyYXRpb25zO1xuICAgICAgICB9KVxuICAgIGNvbXBpbCAoTGlzdC5yZXYgcmV2X2luc3RyKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSBbJzAnLSc5J10rXG5sZXQgcmVhbCA9XG4gIChbJzAnLSc5J10rIFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspIHxcbiAgKCgoWycwJy0nOSddKyAnLicgWycwJy0nOSddKikgfCAoJy4nIFsnMCctJzknXSspKVxuICAgIChbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKT8pXG5sZXQgaWQgPSBbJ18nICd+J10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnficgJy0nICcrJ10rIHxcbiAgICAgICAgIFsnYSctJ3onICdBJy0nWiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKlxuXG5ydWxlIHRva2VuID0gcGFyc2VcbiAgfCAnLycgJy8nIChbXidcXHInJ1xcbiddKiBhcyBzKSAoZW9sIHwgZW9mKSB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzfVxuICB8ICcvJyAnKicge0NPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1Zil9XG4gIHwgZW9sIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgTkVXTElORSB9XG4gIHwgYmxhbmsgKyBhcyB4IHsgU1BBQ0UgeCB9XG4gIHwgJyMnIHsgU0hBUlAgfVxuICB8IFwiJiZcIiB7IEFORCB9XG4gIHwgXCJ8fFwiIHsgT1IgfVxuICB8IFwiPC0+XCIgeyBMUkFSIH1cbiAgfCBcIjwtXCIge0xBUn1cbiAgfCBcIi0+XCIgeyBSQVIgfVxuICB8IFwiPD5cIiB7IERJRkYgfVxuICB8ICc6JyB7IENPTE9OIH1cbiAgfCAnOycgeyBTRU1JQ09MT04gfVxuICB8ICdAJyB7IEFUIH1cbiAgfCAnLCcgeyBDT01NQSB9XG4gIHwgJ1xcXFwnIHtCQUNLU0xBU0h9XG4gIHwgJygnIHsgT1BfUEFSIH1cbiAgfCAnKScgeyBDTF9QQVIgfVxuICB8ICdbJyB7IE9QX0JSQSB9XG4gIHwgJ10nIHsgQ0xfQlJBIH1cbiAgfCAneycgeyBPUF9DVVIgfVxuICB8ICd9JyB7IENMX0NVUiB9XG4gIHwgJ3wnIHsgUElQRSB9XG4gIHwgJy4nIHsgRE9UIH1cbiAgfCAnXycgeyBVTkRFUlNDT1JFIH1cbiAgfCAnKycgeyBQTFVTIH1cbiAgfCAnKicgeyBNVUxUIH1cbiAgfCAnLScgeyBNSU5VUyB9XG4gIHwgJ14nIHsgUE9XIH1cbiAgfCAnLycgeyBESVYgfVxuICB8ICc8JyB7IFNNQUxMRVIgfVxuICB8ICc+JyB7IEdSRUFURVIgfVxuICB8ICc9JyB7IEVRVUFMIH1cbiAgfCBpbnRlZ2VyIGFzIG4geyBJTlQgKGludF9vZl9zdHJpbmcgbikgfVxuICB8IHJlYWwgYXMgZiB7IEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgeCkgJ1xcJyd7IExBQkVMKHgpIH1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSogYXMgeCkgJ1xcXCIneyBTVFJJTkcoeCkgfVxuICB8ICdcXCcnIChbXidcXG4nICdcXCcnXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgbGFiZWw6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cbiAgfCAnXFxcIicgKFteJ1xcbicgJ1xcXCInXSsgYXMgcykgKGVvZiB8ICdcXG4nKVxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgaWQgYXMgc3RyIHsga2V5d29yZF9vcl9pZCBzdHIgfVxuICB8ICclJyAoaWQgYXMgbGFiKSAnOicge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG4gICAgfCBcImluaXRcIiAtPiBJTklUXG4gICAgfCBcInZhclwiIC0+IExFVFxuICAgIHwgXCJwbG90XCIgLT4gUExPVFxuICAgIHwgXCJtb2RcIiAtPiBQRVJUXG4gICAgfCBcIm9ic1wiIC0+IE9CU1xuICAgIHwgXCJkZWZcIiAtPiBDT05GSUdcbiAgICB8IFwidG9rZW5cIiAtPiBUT0tFTlxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBkaXJlY3RpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnWycgYmxhbmsqICc/JyBibGFuayogJ10nIHsgVEhFTiB9XG4gIHwgJ1snIGJsYW5rKiAnOicgYmxhbmsqICddJyB7IEVMU0UgfVxuICB8ICdbJyBibGFuayogKGlkIGFzIGxhYikgYmxhbmsqICddJyB7XG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8ICckJyAoaWQgYXMgcykge1xuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgfVxuICB8IGVvZiB7IGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiB9XG4gIHwgXyBhcyBjIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGNoYXJhY3RlcjogXCJeU3RyaW5nLm1ha2UgMSBjLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkgfVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjID0gcGFyc2VcbiAgfCAoW14nXFxuJyAnKicgJ1xcXCInICcvJ10gKikgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcvJyAnLycgW14nXFxyJydcXG4nXSogYXMgeCkgZW9sXG4gICAgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8IGVvbCBhcyB4IHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJyonIFteJy8nICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgW14nKicgJ1xcbicgJ1xcXCInXSkgYXMgeCB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgJyonICcvJyB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgZW9mIHsgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIH1cbiAgfCAnKicgJ1xcbicgeyBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rICdcXFwiJykgYXMgeFxuICAgIHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoKCcqJyB8ICcvJyk/ICdcXFwiJyBbXidcXG4nICdcXFwiJ10rIChlb2YgfCAnXFxuJykpIGFzIHhcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZyBpbiBjb21tZW50OiBcIl54LFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJy8nICcqJ1xuICAgIHsgaW5saW5lX2NvbW1lbnQgKFwiKi9cIjo6KGlubGluZV9jb21tZW50IFtcIi8qXCJdIGxleGJ1Zik6OiBhY2MpIGxleGJ1ZiB9XG4gIHwgJy8nICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiL1xcblwiOjphY2MpIGxleGJ1ZiB9XG5cbmFuZCByZWNvdmVyeSA9IHBhcnNlXG4gIHwgW14nXFxyJydcXG4nXSogKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWZ9XG5cbntcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxub3BlbiBLcGFyc2VyNFxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxuXG4jIDE3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjA5XFwyNTVcXDIxMFxcMjU1XFwwNjJcXDAwMFxcMTI0XFwwMDBcXDIwOVxcMDAwXFwwMzNcXDAwMVxcMjM3XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDExMlxcMDAxXFwyMjNcXDI1NVxcMjI0XFwyNTVcXDIyN1xcMjU1XFwyMjlcXDI1NVxcMjMwXFwyNTVcXDE3M1xcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwyMzRcXDI1NVxcMjM1XFwyNTVcXDIzNlxcMjU1XFwwMzFcXDAwMlxcMjM4XFwyNTVcXDIzOVxcMjU1XFwyNDBcXDI1NVxcXG4gICAgXFwyNDFcXDI1NVxcMjQyXFwyNTVcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwwMjlcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMjUxXFwyNTVcXDI0MFxcMDAwXFwyNTNcXDI1NVxcMDAxXFwwMDBcXDIwNlxcMDAwXFwyNTRcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwyNTBcXDI1NVxcMjQ5XFwyNTVcXDI0NVxcMjU1XFwwOTJcXDAwMFxcMjQ4XFwyNTVcXDI0NlxcMjU1XFwxNDVcXDAwMlxcXG4gICAgXFwyMjVcXDAwMlxcMTcxXFwwMDFcXDAzMlxcMDAyXFwwODNcXDAwM1xcMjE0XFwyNTVcXDIxM1xcMjU1XFwxOTdcXDAwM1xcMjEyXFwyNTVcXFxuICAgIFxcMDYzXFwwMDJcXDA3M1xcMDAzXFwyNTVcXDAwMVxcMTQ0XFwwMDFcXDAyNVxcMDAyXFwwMjFcXDAwNFxcMTAwXFwwMDRcXDExNVxcMDAyXFxcbiAgICBcXDEzMFxcMDAyXFwwNDhcXDAwM1xcMTc3XFwwMDBcXDIxOFxcMjU1XFwyMjBcXDI1NVxcMjE5XFwyNTVcXDA4M1xcMDAzXFwyMTdcXDI1NVxcXG4gICAgXFwxMzdcXDAwNFxcMjE3XFwwMDRcXDA0MVxcMDA1XFwyMTVcXDI1NVxcMTIxXFwwMDVcXDIwMVxcMDA1XFwwMjVcXDAwNlxcMTk3XFwwMDNcXFxuICAgIFxcMDg0XFwwMDNcXDI0OVxcMjU1XFwxMzRcXDAwNFxcMjUzXFwyNTVcXDEzOFxcMDA2XFwxMzlcXDAwNlxcMTQwXFwwMDZcXDI0NFxcMjU1XFxcbiAgICBcXDI0NVxcMjU1XFwyNTFcXDI1NVxcMDEzXFwwMDBcXDI1NFxcMjU1XFwwMDRcXDAwMFxcMDE3XFwwMDBcXDI0OFxcMjU1XFwyNTBcXDI1NVxcXG4gICAgXFwyNTJcXDI1NVxcMTk4XFwwMDNcXDI0NlxcMjU1XFwyNDdcXDI1NVxcMjA3XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDM5XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAyMlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzOVxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzlcXDAwMFxcMDM1XFwwMDBcXDA5MVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAzMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMVxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDIxXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAyOFxcMDAwXFwwMTZcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDI3XFwwMDBcXDAyNlxcMDAwXFwwMjlcXDAwMFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAxOVxcMDAwXFwwMTJcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDE4XFwwMDBcXDAzMFxcMDAwXFwwMTdcXDAwMFxcMDA2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNDJcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDc3XFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY4XFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDEwMlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzN1xcMDAwXFwwMzNcXDAwMFxcMDczXFwwMDBcXDA0NFxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM5XFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNjNcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA0OFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDUxXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1NlxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwwOThcXDAwMFxcMDQ4XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwOTVcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwOThcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgzXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAzMFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDA2NlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMTAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDM2XFwwMDBcXDAzM1xcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXDAwNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMzhcXDAwMFxcMDI5XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDMzXFwwMDBcXDA5M1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDAwOVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDUwXFwwMDBcXDA1OFxcMDAwXFwwMTVcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDU2XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFxcbiAgICBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDIwXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNTFcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwNTFcXDAwMFxcMDc5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMDgwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA4MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA4MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDc5XFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMVxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwMzhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA5MFxcMDAwXFwwOTNcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDg0XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAzOFxcMDAwXFwwNDhcXDAwMFxcMDY2XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA5M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDcwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlxcMjU1XFwwMDJcXDI1NVxcMjU1XFwwMDZcXDI1NVxcMjU1XFwwMDVcXDI1NVxcMjU1XFwwMDRcXDI1NVxcMjU1XFwwMDNcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAzXFwyNTVcXDAwMFxcMDAyXFwwMDFcXDAwNFxcMjU1XFwwMDBcXDAwNVxcMjU1XFwwMDBcXDAwNlxcMjU1XFwwMDFcXDI1NVxcXG4gICAgXFwyNTVcXDAwMFxcMDAxXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA3ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDM1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA3NTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBDT01NRU5UIHMpXG4jIDc2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbiMgMzYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKENPTU1FTlQgKGlubGluZV9jb21tZW50IFtdIGxleGJ1ZikpXG4jIDc2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbiMgMzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgKVxuIyA3NzMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgeFxuIyA3NzkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIFNQQUNFIHggKVxuIyA3ODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTSEFSUCApXG4jIDc4OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgNDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBBTkQgKVxuIyA3OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA2IC0+XG4jIDQxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggT1IgKVxuIyA3OTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDQyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAoIExSQVIgKVxuIyA4MDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG4jIDQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDgwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbiMgNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBSQVIgKVxuIyA4MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA0NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIERJRkYgKVxuIyA4MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA0NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ09MT04gKVxuIyA4MjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA0NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0VNSUNPTE9OIClcbiMgODI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTMgLT5cbiMgNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEFUIClcbiMgODMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTQgLT5cbiMgNDkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTU1BIClcbiMgODM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTUgLT5cbiMgNTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKEJBQ0tTTEFTSClcbiMgODQzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTYgLT5cbiMgNTEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX1BBUiApXG4jIDg0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE3IC0+XG4jIDUyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9QQVIgKVxuIyA4NTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA1MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQlJBIClcbiMgODU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTkgLT5cbiMgNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0JSQSApXG4jIDg2MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIwIC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9DVVIgKVxuIyA4NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMSAtPlxuIyA1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfQ1VSIClcbiMgODczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjIgLT5cbiMgNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBJUEUgKVxuIyA4NzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMyAtPlxuIyA1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRE9UIClcbiMgODgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjQgLT5cbiMgNTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFVOREVSU0NPUkUgKVxuIyA4ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNSAtPlxuIyA2MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggUExVUyApXG4jIDg5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI2IC0+XG4jIDYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNVUxUIClcbiMgODk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjcgLT5cbiMgNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE1JTlVTIClcbiMgOTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjggLT5cbiMgNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBPVyApXG4jIDkwOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI5IC0+XG4jIDY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBESVYgKVxuIyA5MTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMCAtPlxuIyA2NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU01BTExFUiApXG4jIDkxOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMxIC0+XG4jIDY2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBHUkVBVEVSIClcbiMgOTIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzIgLT5cbiMgNjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIEVRVUFMIClcbiMgOTI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzMgLT5cbmxldFxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICBuXG4jIDkzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICggSU5UIChpbnRfb2Zfc3RyaW5nIG4pIClcbiMgOTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzQgLT5cbmxldFxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICBmXG4jIDk0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA2OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICggRkxPQVQgKGZsb2F0X29mX3N0cmluZyBmKSApXG4jIDk0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgNzAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExBQkVMKHgpIClcbiMgOTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzYgLT5cbmxldFxuIyA3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSAobGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgKyAtMSkgaW5cbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU1RSSU5HKHgpIClcbiMgOTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzcgLT5cbmxldFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzXG4jIDk3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk4MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM4IC0+XG5sZXRcbiMgNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5ODcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmc6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgOTk0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzkgLT5cbmxldFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgc3RyXG4jIDEwMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIGtleXdvcmRfb3JfaWQgc3RyIClcbiMgMTAwNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQwIC0+XG5sZXRcbiMgODMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgbGFiXG4jIDEwMTAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDEwMjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MSAtPlxuIyA5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRIRU4gKVxuIyAxMDMzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDIgLT5cbiMgOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBFTFNFIClcbiMgMTAzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQzIC0+XG5sZXRcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJcbiMgMTA0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigxKSBpblxuIyAxMDAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiRVwiIC0+IEVWRU5UXG4gICAgfCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuICAgIHwgXCJUXCIgLT4gVElNRVxuICAgIHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuICAgIHwgXCJsb2dcIiAtPiBMT0dcbiAgICB8IFwic2luXCIgLT4gU0lOVVNcbiAgICB8IFwiY29zXCIgLT4gQ09TSU5VU1xuICAgIHwgXCJ0YW5cIiAtPiBUQU5cbiAgICB8IFwiZXhwXCIgLT4gRVhQT05FTlRcbiAgICB8IFwiaW50XCIgLT4gQUJTXG4gICAgfCBcIm1vZFwiIC0+IE1PRFxuICAgIHwgXCJzcXJ0XCIgLT4gU1FSVFxuICAgIHwgXCJ0cnVlXCIgLT4gVFJVRVxuICAgIHwgXCJmYWxzZVwiIC0+IEZBTFNFXG4gICAgfCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG4gICAgfCBcIm1heFwiIC0+IE1BWFxuICAgIHwgXCJtaW5cIiAtPiBNSU5cbiAgICB8IFwiRW1heFwiIC0+IEVNQVhcbiAgICB8IFwiVG1heFwiIC0+IFRNQVhcbiAgICB8IFwibm90XCIgLT4gTk9UXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIHByaW1pdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDc0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDQgLT5cbmxldFxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgc1xuIyAxMDgwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBcIkFQUExZXCIgLT4gQVBQTFlcbiAgICB8IFwiREVMXCIgLT4gREVMRVRFXG4gICAgfCBcIkFERFwiIC0+IElOVFJPXG4gICAgfCBcIlNOQVBTSE9UXCIgLT4gU05BUFNIT1RcbiAgICB8IFwiU1RPUFwiIC0+IFNUT1BcbiAgICB8IFwiRElOXCIgLT4gRkxVWFxuICAgIHwgXCJUUkFDS1wiIC0+IFRSQUNLXG4gICAgfCBcIlVQREFURVwiIC0+IEFTU0lHTlxuICAgIHwgXCJQUklOVFwiIC0+IFBSSU5URlxuICAgIHwgXCJQUklOVEZcIiAtPiBQUklOVEZcbiAgICB8IFwiUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG4gICAgfCBcIlJVTlwiIC0+IFJVTlxuICAgIHwgXCJTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuICAgIHwgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gaW50ZXJ2ZW50aW9uOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICApXG4jIDExMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NSAtPlxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIGxleGJ1Zi5MZXhpbmcubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IEVPRiApXG4jIDExMDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0NiAtPlxubGV0XG4jIDE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICBjXG4jIDExMTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIClcbiMgMTEyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgaW5saW5lX2NvbW1lbnQgYWNjIGxleGJ1ZiA9XG4gIGxleGJ1Zi5MZXhpbmcubGV4X21lbSA8LSBBcnJheS5tYWtlIDIgKC0xKTsgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgNzlcbmFuZCBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5uZXdfZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTM0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDE1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE0NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGluXG4jIDE1NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgIHhcbiMgMTE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKSBpblxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNSAtPlxuIyAxNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyAxNjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSApXG4jIDExODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA3IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIqXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTE5MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDggLT5cbmxldFxuIyAxNjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE5OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTIwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDkgLT5cbmxldFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyAxMjA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyAxMjE2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgKVxuIyAxMjIxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgKVxuIyAxMjI2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgYWNjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVjb3ZlcnkgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgMTAwXG5hbmQgX19vY2FtbF9sZXhfcmVjb3ZlcnlfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTc1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYpXG4jIDEyMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuIFxuICBsZXQgcmVjIGF1eF9tb2RlbCBlcnIgbGV4ID1cbiAgdHJ5IGxldCBvdXQgPSBLcGFyc2VyNC5tb2RlbCB0b2tlbiBsZXggaW4gKG91dCwgTGlzdC5yZXYgZXJyKVxuICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIGUgLT5cbiAgICBsZXQgKCkgPSByZWNvdmVyeSBsZXggaW5cbiAgICBhdXhfbW9kZWwgKGU6OmVycikgbGV4XG5cbiAgbGV0IG1vZGVsIGxleCA9IGF1eF9tb2RlbCBbXSBsZXhcblxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpYyA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpYyBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgIHtsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0gZmljfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWMgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpYyBpblxuICAgIGxldCAob3V0LGVycikgPSBtb2RlbCBsZXhidWYgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgIGxldCAoKSA9IG1hdGNoIGVyciB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IChtc2cscG9zKTo6XyAtPlxuICAgICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgICBleGl0IDMgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIG91dCBjb21waWxcblxuIyAxMjcyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBpdGVtID0geyByYW5rOiBpbnQ7IGNvbnRlbnQ6IHN0cmluZyB9XG5cbnR5cGUgY2F0YWxvZyA9IHtcbiAgZWxlbWVudHM6IChzdHJpbmcsIGl0ZW0pIEhhc2h0YmwudDtcbiAgaW5kZXg6IHN0cmluZyBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICBhc3Q6IEFzdC5wYXJzaW5nX2NvbXBpbCBvcHRpb24gcmVmO1xufVxuXG50eXBlIGNhdGFsb2dfaXRlbSA9IHsgcG9zaXRpb246IGludDsgaWQ6IHN0cmluZyB9XG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW0gb2IgeyBwb3NpdGlvbjsgaWQgfSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJpZFwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgaWQgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3NpdGlvblwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2IgcG9zaXRpb24gaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9jYXRhbG9nX2l0ZW0gcCBsYiA9XG4gIGxldCBwb3NpdGlvbiwgaWQsIGNvdW50ID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHBvcywgaSwgYykga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJwb3NpdGlvblwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgaSwgc3VjYyBjXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJpZFwiKSBpblxuICAgICAgICAgIHBvcywgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIsIHN1Y2MgY1xuICAgICAgICApKVxuICAgICAgKC0xLCBcIlwiLCAwKSBwIGxiXG4gIGluXG4gIGxldCAoKSA9IGFzc2VydCAoY291bnQgPSAyKSBpblxuICB7IHBvc2l0aW9uOyBpZCB9XG5cbmxldCBjcmVhdGUgKCkgPVxuICB7XG4gICAgZWxlbWVudHMgPSBIYXNodGJsLmNyZWF0ZSAxO1xuICAgIGluZGV4ID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMSBOb25lO1xuICAgIGFzdCA9IHJlZiBOb25lO1xuICB9XG5cbmxldCBwdXQgfnBvc2l0aW9uOnJhbmsgfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCBjYXRhbG9nLmluZGV4IHJhbmsgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgKFNvbWUgaWQpIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuICB8IFNvbWUgYWllIC0+XG4gICAgUmVzdWx0LkVycm9yXG4gICAgICAoXCJTbG90IFwiIF4gc3RyaW5nX29mX2ludCByYW5rIF4gXCIgaXMgbm90IGF2YWlsYWJsZS4gVGhlcmUgaXMgYWxyZWFkeSBcIlxuICAgICBeIGFpZSlcblxubGV0IGZpbGVfY3JlYXRlIH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZyA9XG4gIGlmIEhhc2h0YmwubWVtIGNhdGFsb2cuZWxlbWVudHMgaWQgdGhlblxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiQSBmaWxlIGNhbGxlZCBcXFwiXCIgXiBpZCBeIFwiXFxcIiBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNhdGFsb2dcIilcbiAgZWxzZVxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJNaXNzaW5nIGZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaW4gdGhlIGNhdGFsb2dcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJGaWxlIGNhdGFsb2cgaGFzIHNlcmlvdXMgcHJvYmxlbXNcIlxuICB8IFsgeyByYW5rOyBjb250ZW50IH0gXSAtPlxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggcmFuayBOb25lIGluXG4gICAgcHV0IH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuXG5sZXQgZmlsZV9wYXRjaCB+aWQgY29udGVudCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiVW5rbm93biBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiU2VyaW91cyBwcm9ibGVtcyBpbiBmaWxlIGNhdGFsb2dcIlxuICB8IFsgeyByYW5rOyBfIH0gXSAtPlxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBjYXRhbG9nLmVsZW1lbnRzIGlkIHsgcmFuazsgY29udGVudCB9IGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9kZWxldGUgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJObyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gZmFpbHdpdGggXCJCaWcgdHJvdWJsZXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIGNhdGFsb2cuZWxlbWVudHMgaWQgaW5cbiAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBOb25lIGluXG4gICAgUmVzdWx0Lk9rICgpXG5cbmxldCBmaWxlX2dldCB+aWQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIkZpbGUgXFxcIlwiIF4gaWQgXiBcIlxcXCIgZG9lcyBub3QgZXhpc3RcIilcbiAgfCBfIDo6IF8gOjogXyAtPiBSZXN1bHQuRXJyb3IgXCJDb3JydXB0ZWQgZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT4gUmVzdWx0Lk9rIChjb250ZW50LCByYW5rKVxuXG5sZXQgY2F0YWxvZyBjYXRhbG9nID1cbiAgTW9kcy5EeW5BcnJheS5mb2xkX3JpZ2h0aVxuICAgIChmdW4gcG9zaXRpb24geCBhY2MgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIGlkIC0+IHsgcG9zaXRpb247IGlkIH0gOjogYWNjKVxuICAgIGNhdGFsb2cuaW5kZXggW11cblxubGV0IHBhcnNlIHlpZWxkIGNhdGFsb2cgPVxuICBtYXRjaCAhKGNhdGFsb2cuYXN0KSB3aXRoXG4gIHwgU29tZSBjb21waWxlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gIHwgTm9uZSAtPlxuICAgIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAgIChmdW4gXyB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBmaWxlID0gSGFzaHRibC5maW5kIGNhdGFsb2cuZWxlbWVudHMgeCBpblxuICAgICAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgZmlsZS5jb250ZW50IGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICAgICAgICB7IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSB4IH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGFjYyA+Pj0gZnVuIChjb21waWxlLCBlcnIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBpbGUgPVxuICAgICAgICAgICAgeyBjb21waWxlIHdpdGggQXN0LmZpbGVuYW1lcyA9IHggOjogY29tcGlsZS5Bc3QuZmlsZW5hbWVzIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5jYXRjaFxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3Qud3JhcDEgS2xleGVyNC5tb2RlbCBsZXhidWYgPj49IGZ1biAoaW5zdHMsIGVycicpIC0+XG4gICAgICAgICAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQ3N0LmFwcGVuZF90b19hc3RfY29tcGlsIGluc3RzIGNvbXBpbGUsIGVycicgQCBlcnIpKVxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKG1lc3NhZ2UsIHJhbmdlKVxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKGNvbXBpbGUsIChtZXNzYWdlLCByYW5nZSkgOjogZXJyKVxuICAgICAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAoIGNvbXBpbGUsXG4gICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChcIlJ1bnRpbWUgZXJyb3IgXCIgXiBlcnJvcikgOjogZXJyIClcbiAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9IFByaW50ZXhjLnRvX3N0cmluZyBleG4gaW5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSBtZXNzYWdlIDo6IGVycikpKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICAgICAgKEx3dC5yZXR1cm4gKEFzdC5lbXB0eV9jb21waWwsIFtdKSlcbiAgICA+Pj0gKCBmdW5jdGlvblxuICAgIHwgY29tcGlsZSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IFNvbWUgY29tcGlsZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgY29tcGlsZSlcbiAgICB8IF8sIGVyciAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biAoKHRleHQsIHApIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgICAgICBpZiBMb2MuaXNfYW5ub3RlZF93aXRoX2R1bW15IHggdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yOyByYW5nZTsgdGV4dCB9KVxuICAgICAgICAgIGVyclxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIGVycikgKVxuXG5sZXQgb3ZlcndyaXRlIGZpbGVuYW1lIGFzdCBjYXRhbG9nID1cbiAgbGV0IGNvbnRlbnQgPSBGb3JtYXQuYXNwcmludGYgXCIlYVwiIEFzdC5wcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBhc3QgaW5cbiAgbGV0IGl0ID0geyByYW5rID0gMDsgY29udGVudCB9IGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVzZXQgY2F0YWxvZy5lbGVtZW50cyBpblxuICBsZXQgKCkgPSBIYXNodGJsLmFkZCBjYXRhbG9nLmVsZW1lbnRzIGZpbGVuYW1lIGl0IGluXG4gIGxldCAoKSA9XG4gICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgKGZ1biBpIF8gLT4gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCBpIE5vbmUpXG4gICAgICBjYXRhbG9nLmluZGV4XG4gIGluXG4gIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggMCAoU29tZSBmaWxlbmFtZSkgaW5cbiAgY2F0YWxvZy5hc3QgOj0gU29tZSBhc3RcbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IE5FV0xJTkVcbiAgfCBTRU1JQ09MT05cbiAgfCBDT01NQVxuICB8IERPVFxuICB8IE9QX1BBUlxuICB8IENMX1BBUlxuICB8IE9QX0NVUlxuICB8IENMX0NVUlxuICB8IEFUXG4gIHwgVFlQRVxuICB8IExBUlxuICB8IENQVVRJTUVcbiAgfCBFTUFYXG4gIHwgVE1BWFxuICB8IFBMT1RFTlRSWVxuICB8IERFTEVURVxuICB8IElOVFJPXG4gIHwgVFJBQ0tcbiAgfCBET1xuICB8IFNFVFxuICB8IFJFUEVBVFxuICB8IFNQRUNJRVNfT0ZcbiAgfCBVTlRJTFxuICB8IExPR1xuICB8IFBMVVNcbiAgfCBNVUxUXG4gIHwgTUlOVVNcbiAgfCBNQVhcbiAgfCBNSU5cbiAgfCBESVZcbiAgfCBTSU5VU1xuICB8IENPU0lOVVNcbiAgfCBUQU5cbiAgfCBQT1dcbiAgfCBBQlNcbiAgfCBNT0RVTE9cbiAgfCBTUVJUXG4gIHwgRVhQT05FTlRcbiAgfCBJTkZJTklUWVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBQSVBFXG4gIHwgRVFVQUxcbiAgfCBBTkRcbiAgfCBPUlxuICB8IE5PVFxuICB8IEdSRUFURVJcbiAgfCBTTUFMTEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgRElGRlxuICB8IEtBUFBBX1JBUlxuICB8IEtBUFBBX0xSQVJcbiAgfCBLQVBQQV9MTktcbiAgfCBTSUdOQVRVUkVcbiAgfCBJTklUXG4gIHwgTEVUXG4gIHwgUExPVFxuICB8IFBFUlRcbiAgfCBPQlNcbiAgfCBUT0tFTlxuICB8IENPTkZJR1xuICB8IEtBUFBBX1dMRFxuICB8IEtBUFBBX1NFTUlcbiAgfCBGTFVYXG4gIHwgQVNTSUdOXG4gIHwgUFJJTlRGXG4gIHwgU1RPUFxuICB8IFNOQVBTSE9UXG4gIHwgUlVOXG4gIHwgVEhFTlxuICB8IEVMU0VcbiAgfCBBTEFSTVxuICB8IEFQUExZXG4gIHwgSU5UIG9mIChpbnQpXG4gIHwgSUQgb2YgKHN0cmluZylcbiAgfCBLQVBQQV9NUksgb2YgKHN0cmluZylcbiAgfCBMQUJFTCBvZiAoc3RyaW5nKVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBTVFJJTkcgb2YgKHN0cmluZylcblxub3BlbiBQYXJzaW5nOztcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuIyA5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogTkVXTElORSAqKTtcbiAgMjU4ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjU5ICgqIENPTU1BICopO1xuICAyNjAgKCogRE9UICopO1xuICAyNjEgKCogT1BfUEFSICopO1xuICAyNjIgKCogQ0xfUEFSICopO1xuICAyNjMgKCogT1BfQ1VSICopO1xuICAyNjQgKCogQ0xfQ1VSICopO1xuICAyNjUgKCogQVQgKik7XG4gIDI2NiAoKiBUWVBFICopO1xuICAyNjcgKCogTEFSICopO1xuICAyNjggKCogQ1BVVElNRSAqKTtcbiAgMjY5ICgqIEVNQVggKik7XG4gIDI3MCAoKiBUTUFYICopO1xuICAyNzEgKCogUExPVEVOVFJZICopO1xuICAyNzIgKCogREVMRVRFICopO1xuICAyNzMgKCogSU5UUk8gKik7XG4gIDI3NCAoKiBUUkFDSyAqKTtcbiAgMjc1ICgqIERPICopO1xuICAyNzYgKCogU0VUICopO1xuICAyNzcgKCogUkVQRUFUICopO1xuICAyNzggKCogU1BFQ0lFU19PRiAqKTtcbiAgMjc5ICgqIFVOVElMICopO1xuICAyODAgKCogTE9HICopO1xuICAyODEgKCogUExVUyAqKTtcbiAgMjgyICgqIE1VTFQgKik7XG4gIDI4MyAoKiBNSU5VUyAqKTtcbiAgMjg0ICgqIE1BWCAqKTtcbiAgMjg1ICgqIE1JTiAqKTtcbiAgMjg2ICgqIERJViAqKTtcbiAgMjg3ICgqIFNJTlVTICopO1xuICAyODggKCogQ09TSU5VUyAqKTtcbiAgMjg5ICgqIFRBTiAqKTtcbiAgMjkwICgqIFBPVyAqKTtcbiAgMjkxICgqIEFCUyAqKTtcbiAgMjkyICgqIE1PRFVMTyAqKTtcbiAgMjkzICgqIFNRUlQgKik7XG4gIDI5NCAoKiBFWFBPTkVOVCAqKTtcbiAgMjk1ICgqIElORklOSVRZICopO1xuICAyOTYgKCogVElNRSAqKTtcbiAgMjk3ICgqIEVWRU5UICopO1xuICAyOTggKCogTlVMTF9FVkVOVCAqKTtcbiAgMjk5ICgqIFBJUEUgKik7XG4gIDMwMCAoKiBFUVVBTCAqKTtcbiAgMzAxICgqIEFORCAqKTtcbiAgMzAyICgqIE9SICopO1xuICAzMDMgKCogTk9UICopO1xuICAzMDQgKCogR1JFQVRFUiAqKTtcbiAgMzA1ICgqIFNNQUxMRVIgKik7XG4gIDMwNiAoKiBUUlVFICopO1xuICAzMDcgKCogRkFMU0UgKik7XG4gIDMwOCAoKiBESUZGICopO1xuICAzMDkgKCogS0FQUEFfUkFSICopO1xuICAzMTAgKCogS0FQUEFfTFJBUiAqKTtcbiAgMzExICgqIEtBUFBBX0xOSyAqKTtcbiAgMzEyICgqIFNJR05BVFVSRSAqKTtcbiAgMzEzICgqIElOSVQgKik7XG4gIDMxNCAoKiBMRVQgKik7XG4gIDMxNSAoKiBQTE9UICopO1xuICAzMTYgKCogUEVSVCAqKTtcbiAgMzE3ICgqIE9CUyAqKTtcbiAgMzE4ICgqIFRPS0VOICopO1xuICAzMTkgKCogQ09ORklHICopO1xuICAzMjAgKCogS0FQUEFfV0xEICopO1xuICAzMjEgKCogS0FQUEFfU0VNSSAqKTtcbiAgMzIyICgqIEZMVVggKik7XG4gIDMyMyAoKiBBU1NJR04gKik7XG4gIDMyNCAoKiBQUklOVEYgKik7XG4gIDMyNSAoKiBTVE9QICopO1xuICAzMjYgKCogU05BUFNIT1QgKik7XG4gIDMyNyAoKiBSVU4gKik7XG4gIDMyOCAoKiBUSEVOICopO1xuICAzMjkgKCogRUxTRSAqKTtcbiAgMzMwICgqIEFMQVJNICopO1xuICAzMzEgKCogQVBQTFkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDMzMiAoKiBJTlQgKik7XG4gIDMzMyAoKiBJRCAqKTtcbiAgMzM0ICgqIEtBUFBBX01SSyAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogRkxPQVQgKik7XG4gIDMzNyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTNcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcXG5cXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAwNFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcXG5cXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzVcXDAwMFxcXG5cXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzNlxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDE0XFwwMDBcXDAxNFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG5cXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG5cXDAzOVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcXG5cXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFxcblxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcblxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFxcblxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFxcblxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMFxcMTg4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAzXFwwMDBcXDEwMVxcMDAwXFwxMDJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDk5XFwwMDBcXDEwNlxcMDAwXFwxMDdcXDAwMFxcMDk4XFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMTAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI0XFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMTEyXFwwMDBcXDExM1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFwwMTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTFcXDAwMFxcMTg1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDExOFxcMDAwXFwxMTlcXDAwMFxcMTIwXFwwMDBcXFxuXFwxMjFcXDAwMFxcMTE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDE0NVxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDE1M1xcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMDQ2XFwwMDBcXFxuXFwwNjJcXDAwMFxcMDYzXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXFxuXFwxMTFcXDAwMFxcMDY4XFwwMDBcXDExNFxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDA0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzRcXDAwMFxcMTcyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwxMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMTYwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMTY1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgyXFwwMDBcXDE3N1xcMDAwXFwxNzlcXDAwMFxcMTc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MlxcMDAwXFwxODNcXDAwMFxcMTQ4XFwwMDBcXDE2NlxcMDAwXFwwMDBcXDAwMFxcMTY3XFwwMDBcXFxuXFwxNzRcXDAwMFxcMTc1XFwwMDBcXDE2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2OFxcMDAwXFwxNjRcXDAwMFxcMTgwXFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAyMlxcMDAwXFwwNDdcXDAwMFxcMDUwXFwwMDBcXDA3OFxcMDAwXFwwMjNcXDAwMFxcMDI0XFwwMDBcXDA3OVxcMDAwXFwwMjVcXDAwMFxcXG5cXDAyNlxcMDAwXFwwOTlcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwyMDBcXDAwMFxcMTY0XFwwMDBcXDEwOFxcMDAwXFwwODBcXDAwMFxcXG5cXDAzMlxcMDAxXFwwOTJcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwyMTlcXDAwMFxcMDI3XFwwMDBcXDE0MFxcMDAwXFwwODJcXDAwMFxcXG5cXDAyOFxcMDAwXFwxNDFcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwMjlcXDAwMFxcMDkzXFwwMDBcXDEyNFxcMDAwXFwxMjFcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMjA4XFwwMDBcXDAxMVxcMDAxXFwwMTdcXDAwMVxcMDMwXFwwMDBcXDAxOFxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDEzNlxcMDAxXFxcblxcMDg0XFwwMDJcXDE1OVxcMDAyXFwyMjJcXDAwM1xcMTMwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAyXFxcblxcMDI3XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwyNTVcXDE5OVxcMDAwXFwwNzNcXDAwNFxcMDYwXFwyNTVcXDE1NlxcMDA0XFxcblxcMDIwXFwyNTVcXDA2MFxcMjU1XFwyMTZcXDI1NFxcMjE4XFwyNTRcXDExNVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAwXFxcblxcMDE3XFwwMDBcXDA1MFxcMjU1XFwwNDVcXDI1NVxcMTM0XFwyNTVcXDIwN1xcMDAwXFwyNDJcXDI1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjIyXFwwMDNcXDAwMFxcMDAwXFwyMTBcXDAwNFxcMDA4XFwwMDVcXDAwNlxcMjU1XFwxOTFcXDAwM1xcMTkxXFwwMDNcXDE1OFxcMjU1XFxcblxcMTkxXFwwMDNcXDE5MVxcMDAzXFwxOTFcXDAwM1xcMTE2XFwwMDVcXDAzNlxcMDA3XFwxMTNcXDI1NVxcMDAwXFwwMDBcXDEzMFxcMjU1XFxcblxcMTU0XFwyNTVcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMTMwXFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDA2XFxcblxcMjM4XFwwMDZcXDAzNlxcMDA3XFwwMzZcXDAwN1xcMjM4XFwwMDZcXDIzOFxcMDA2XFwyMzhcXDAwNlxcMjM4XFwwMDZcXDIzOFxcMDA2XFxcblxcMjM4XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDI1NVxcMTQ4XFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwyNTVcXDAwMFxcMDAwXFxcblxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMjU1XFxcblxcMDAwXFwwMDBcXDE4NFxcMDA2XFwwMjhcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTkxXFwyNTVcXDA3NFxcMjU1XFwwMDBcXDAwMFxcMTMwXFwwMDZcXDA2MlxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMjU1XFxcblxcMTMwXFwwMDZcXDE1M1xcMjU1XFwwMDBcXDAwMFxcMTcwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI1XFwyNTVcXDEzMFxcMDA2XFxcblxcMDE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwyNTVcXDEzM1xcMjU1XFwyMDdcXDAwMFxcMDAwXFwwMDBcXDIyNFxcMDA1XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM1XFwyNTVcXDA1MVxcMjU1XFwyMDlcXDI1NVxcMDAwXFwwMDBcXDEwNFxcMDAwXFxcblxcMDAwXFwwMDBcXDEwNFxcMDAwXFwyNTNcXDAwMFxcMjUzXFwwMDBcXDEzMFxcMDA2XFwyMzJcXDI1NVxcMTY5XFwyNTVcXDE5M1xcMDAwXFxcblxcMDkzXFwwMDBcXDEzMFxcMDA2XFwxMzBcXDAwNlxcMDAwXFwwMDBcXDE3NlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQ3XFwyNTVcXDIxM1xcMjU1XFwxMzBcXDAwNlxcMDAwXFwwMDBcXDIyMlxcMDAzXFwwMDBcXDAwMFxcMTc1XFwyNTVcXDA2M1xcMjU1XFxcblxcMDAwXFwwMDBcXDA5OVxcMDAxXFwwMzZcXDAwN1xcMDM2XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDFcXDI1NVxcMjE0XFwyNTVcXDEzMFxcMDA2XFwwMDBcXDAwMFxcMTMwXFwwMDZcXDEzMFxcMDA2XFxcblxcMTMwXFwwMDZcXDEzMFxcMDA2XFwwMDBcXDAwMFxcMTMwXFwwMDZcXDEzMFxcMDA2XFwxMzBcXDAwNlxcMjM4XFwwMDZcXDIzOFxcMDA2XFxcblxcMjM4XFwwMDZcXDIzOFxcMDA2XFwyMzhcXDAwNlxcMjM4XFwwMDZcXDAwMFxcMDAwXFwxMDBcXDI1NVxcMTEwXFwwMDBcXDAyN1xcMDAwXFxcblxcMTE3XFwwMDBcXDEzMFxcMDA2XFwxNjlcXDI1NVxcMTU1XFwwMDBcXDAwMFxcMDAwXFwyMDNcXDI1NVxcMDAwXFwwMDBcXDE1NVxcMDAwXFxcblxcMjAzXFwyNTVcXDAwMFxcMDAwXFwwODNcXDI1NVxcMDAwXFwwMDBcXDIyMlxcMDAzXFwxNzFcXDI1NVxcMTI1XFwyNTVcXDAwMFxcMDAwXFxcblxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMjU1XFwxMzBcXDAwNlxcMTgyXFwyNTVcXDE3NlxcMDAwXFxcblxcMDQ1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MVxcMDAzXFwyNTNcXDAwMFxcMTkxXFwwMDNcXDI1M1xcMDAwXFxcblxcMDAwXFwwMDBcXDIwM1xcMjU1XFwyMDNcXDI1NVxcMTkxXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwyNTVcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMjU1XFxcblxcMjAzXFwyNTVcXDIwM1xcMjU1XFwyMDNcXDI1NVxcMTM4XFwwMDBcXDI0MVxcMjU0XFwwODhcXDAwMVxcMDk5XFwwMDFcXDExNVxcMDAwXFxcblxcMDk5XFwwMDFcXDExNVxcMDAwXFwxODdcXDAwMFxcMTg3XFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcMTg0XFwwMDZcXDIwM1xcMjU1XFxcblxcMDA0XFwwMDFcXDIyMlxcMDAzXFwxNTdcXDAwMFxcMjIyXFwwMDNcXDIyMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMjU1XFxcblxcMDAwXFwwMDBcXDE1OVxcMjU1XFwwMjdcXDAwMVxcMTMwXFwwMDZcXDAyMlxcMDA2XFwyMjRcXDAwNVxcMDAwXFwwMDBcXDAyNVxcMjU1XFxcblxcMDQ2XFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDA1NlxcMDAxXFxcblxcMDM2XFwwMDdcXDE4NFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwxMzBcXDAwNlxcMTMwXFwwMDZcXDAwMFxcMDAwXFxcblxcMTU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDZcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzNcXDI1NVxcMDQ3XFwwMDFcXDAwNVxcMjU1XFwwNjJcXDAwMVxcMTg0XFwyNTVcXDAwMFxcMDAwXFxcblxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwOTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwNlxcMjU1XFwyNTRcXDI1NVxcMjU0XFxcblxcMDAwXFwwMDBcXDIwM1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAxXFwwNDhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE1XFwyNTVcXDAwMFxcMDAwXFwwNTlcXDAwMVxcMDAzXFwyNTVcXDAxMFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAxXFxcblxcMDg2XFwyNTVcXDAwMFxcMDAwXFwwMjdcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDFcXDAwMFxcMDAwXFxcblxcMDM4XFwyNTVcXDAwMFxcMDAwXFwwMTRcXDI1NVxcMTkwXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTI0XFwwMDFcXDA0OVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDFcXDA2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDkwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAxXFxcblxcMDg5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc2XFwwMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0N1xcMDAyXFwwNTlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDFcXDA5NVxcMDAyXFwwOTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDFcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMlxcMDAwXFwwMDBcXDA1NlxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY3XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAzXFxcblxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDA2NFxcMDAwXFxcblxcMTM0XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4NFxcMDAyXFwwMzdcXDAwM1xcMDkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcyXFwwMDNcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExNlxcMDAyXFxcblxcMTk3XFwwMDJcXDIxMlxcMDAyXFwyNDBcXDAwMlxcMTMxXFwwMDNcXDA3M1xcMDAzXFwwMDBcXDAwMFxcMTUwXFwwMDFcXDE2M1xcMDAwXFxcblxcMjMxXFwwMDFcXDI0NFxcMDAwXFwwMDFcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwOTVcXDAwM1xcMDAwXFwwMDBcXDA2N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAzXFxcblxcMDAwXFwwMDBcXDIyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMjU1XFxcblxcMDAwXFwwMDBcXDE1OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMjU1XFwyMTlcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFxcblxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjFcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMTk4XFwyNTVcXDAwMFxcMDAwXFwwODlcXDAwMVxcMDk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTYwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwxNTFcXDAwMlxcMTQ2XFwwMDRcXDAwMFxcMDAwXFxcblxcMTYzXFwwMDJcXDAwMFxcMDAwXFwxNjJcXDAwMlxcMDAwXFwwMDBcXDI0M1xcMDAxXFwxOTRcXDI1NVxcMDAwXFwwMDBcXDA5OVxcMDAyXFxcblxcMTczXFwwMDFcXDIyOVxcMDAzXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMjU1XFwyNDdcXDI1NVxcMjMwXFwyNTVcXDIxN1xcMjU1XFxcblxcMDYxXFwwMDJcXDIyMVxcMjU1XFwxMjdcXDAwNFxcMTM3XFwwMDJcXDIzM1xcMjU1XFwxNjhcXDI1NVxcMDkxXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDM4XFwwMDFcXDA0NlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDFcXDA1N1xcMDAwXFwwNDhcXDI1NVxcMDAwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyMTgzXG5sZXQgeXl0YWJsZSA9IFwiXFwwODhcXDAwMFxcXG5cXDEyOVxcMDAwXFwxODNcXDAwMFxcMDgyXFwwMDFcXDExOFxcMDAwXFwwNDJcXDAwMVxcMTQ2XFwwMDBcXDE0MlxcMDAwXFwxNDNcXDAwMFxcXG5cXDE0MVxcMDAwXFwwODVcXDAwMVxcMDA5XFwwMDBcXDEzNVxcMDAwXFwxMzdcXDAwMFxcMDg2XFwwMDFcXDAwN1xcMDAwXFwxMzhcXDAwMFxcXG5cXDAwN1xcMDAwXFwwOTdcXDAwMVxcMTU1XFwwMDBcXDE1NlxcMDAwXFwyMjBcXDAwMFxcMDE2XFwwMDBcXDExNFxcMDAwXFwxMTVcXDAwMFxcXG5cXDA0MlxcMDAxXFwyMjVcXDAwMFxcMDI0XFwwMDFcXDEzMlxcMDAwXFwyMDRcXDAwMFxcMTcyXFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjNcXDAwMFxcMDQzXFwwMDFcXDE4OVxcMDAwXFwxMTBcXDAwMFxcMTg0XFwwMDBcXDE5NFxcMDAwXFwwMDlcXDAwMFxcXG5cXDEwNVxcMDAwXFwwNzlcXDAwMVxcMTExXFwwMDBcXDE3MlxcMDAwXFwxNzNcXDAwMFxcMjM3XFwwMDBcXDA2NlxcMDAwXFwyMjlcXDAwMFxcXG5cXDA4MlxcMDAxXFwwNDRcXDAwMVxcMjExXFwwMDBcXDAxMFxcMDAwXFwxMTZcXDAwMFxcMDExXFwwMDBcXDA2NVxcMDAwXFwyMTJcXDAwMFxcXG5cXDE3NFxcMDAwXFwwODNcXDAwMVxcMDUxXFwwMDBcXDAxMFxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDEyNVxcMDAwXFwxMzNcXDAwMFxcXG5cXDA5NVxcMDAxXFwyMTVcXDAwMFxcMDIyXFwwMDBcXDIxNlxcMDAwXFwyMzRcXDAwMFxcMDgwXFwwMDBcXDE3NFxcMDAwXFwxNjdcXDAwMFxcXG5cXDIyMlxcMDAwXFwwMjhcXDAwMFxcMDg3XFwwMDFcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTE3XFwwMDBcXDE4N1xcMDAwXFwxNzBcXDAwMFxcXG5cXDA4NFxcMDAxXFwxMzBcXDAwMFxcMDQ1XFwwMDFcXDIzOFxcMDAwXFwxMzFcXDAwMFxcMDg4XFwwMDFcXDA4OVxcMDAxXFwxMTdcXDAwMFxcXG5cXDEyNlxcMDAwXFwwOThcXDAwMVxcMDgwXFwwMDFcXDE3MlxcMDAwXFwxNzNcXDAwMFxcMTA2XFwwMDBcXDA3NFxcMDAxXFwxNDFcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMzXFwwMDBcXDE3MVxcMDAwXFwyMTBcXDAwMFxcMDAyXFwwMDFcXDA0NVxcMDAxXFwwODNcXDAwMVxcXG5cXDE4NVxcMDAwXFwyMzNcXDAwMFxcMjAzXFwwMDBcXDE3MlxcMDAwXFwxNzNcXDAwMFxcMTg0XFwwMDBcXDAyMFxcMDAxXFwyMDJcXDAwMFxcXG5cXDAyMlxcMDAxXFwwOTZcXDAwMVxcMjA5XFwwMDBcXDIzNVxcMDAwXFwyMzZcXDAwMFxcMTY3XFwwMDBcXDE3NFxcMDAwXFwwMDlcXDAwMFxcXG5cXDA5MlxcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE0N1xcMDAwXFwwMDFcXDAwMVxcMTcwXFwwMDBcXDE3MFxcMDAwXFwxNzJcXDAwMFxcXG5cXDE3M1xcMDAwXFwxNzBcXDAwMFxcMTQ4XFwwMDBcXDEwMFxcMDAxXFwwODlcXDAwMFxcMTE5XFwwMDBcXDE3NFxcMDAwXFwxNTBcXDAwMFxcXG5cXDEwMFxcMDAwXFwwOTBcXDAwMFxcMTAxXFwwMDBcXDAxMFxcMDAwXFwwNjlcXDAwMVxcMDExXFwwMDBcXDEyMFxcMDAwXFwxNjdcXDAwMFxcXG5cXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDcwXFwwMDFcXDE4OFxcMDAwXFwxNzBcXDAwMFxcXG5cXDE2NVxcMDAwXFwxNzBcXDAwMFxcMTc0XFwwMDBcXDE0OVxcMDAwXFwwNTZcXDAwMFxcMDEyXFwwMDBcXDExMlxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNTlcXDAwMFxcMTI1XFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAyN1xcMDAxXFwwNjNcXDAwMFxcXG5cXDAzNlxcMDAxXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDE4NVxcMDAwXFwxNjNcXDAwMFxcMTcwXFwwMDBcXDA3MVxcMDAwXFwyMzNcXDAwMFxcMDA5XFwwMDFcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDE4MVxcMDAwXFwwMTVcXDAwMVxcMDEyXFwwMDFcXDE3MFxcMDAwXFwwMTNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwNjZcXDAwMFxcXG5cXDAyM1xcMDAxXFwwNTNcXDAwMVxcMDE5XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDdcXDAwMVxcXG5cXDE4NFxcMDAwXFwxODZcXDAwMFxcMTY3XFwwMDBcXDE4NFxcMDAwXFwyMzJcXDAwMFxcMTk5XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMTcwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDY4XFwwMDFcXDIxM1xcMDAwXFwxNzJcXDAwMFxcXG5cXDE3M1xcMDAwXFwwMDlcXDAwMFxcMTY3XFwwMDBcXDA5MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDIyOFxcMDAwXFwxNjdcXDAwMFxcMTcwXFwwMDBcXDE4NFxcMDAwXFwwNzRcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwwOTJcXDAwMFxcXG5cXDA3N1xcMDAwXFwxNzBcXDAwMFxcMTM4XFwwMDBcXDIyMVxcMDAwXFwxMzlcXDAwMFxcMDEwXFwwMDBcXDA2OVxcMDAxXFwwMTFcXDAwMFxcXG5cXDAzNVxcMDAxXFwwNTJcXDAwMVxcMTc0XFwwMDBcXDEyN1xcMDAwXFwwNjlcXDAwMVxcMjE0XFwwMDBcXDE2N1xcMDAwXFwwNzBcXDAwMVxcXG5cXDA2M1xcMDAxXFwwNjRcXDAwMVxcMTY4XFwwMDBcXDE2OVxcMDAwXFwwMDNcXDAwMVxcMDcwXFwwMDFcXDE3MFxcMDAwXFwwMTJcXDAwMFxcXG5cXDIzOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDE0MVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMDhcXDAwMFxcXG5cXDEzOFxcMDAwXFwwMDhcXDAwMFxcMTM4XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAxNlxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDIzXFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNjZcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwNjVcXDAwMFxcXG5cXDAzN1xcMDAwXFwwMjlcXDAwMVxcMTY3XFwwMDBcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDI0XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDEzM1xcMDAwXFwwOTNcXDAwMVxcMTcwXFwwMDBcXDAyMlxcMDAwXFwxMjNcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDI4XFwwMDBcXDA4MFxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDA4MFxcMDAwXFwxMjlcXDAwMFxcXG5cXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDgwXFwwMDBcXDEzMFxcMDAwXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDE0MVxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzM1xcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwyNTRcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDI1M1xcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDA5MVxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwOTlcXDAwMVxcMjU1XFwwMDBcXDIxN1xcMDAwXFwyMThcXDAwMFxcXG5cXDE3MlxcMDAwXFwxNzNcXDAwMFxcMTQ5XFwwMDBcXDE2N1xcMDAwXFwxNzlcXDAwMFxcMTI2XFwwMDBcXDE4MFxcMDAwXFwxNjhcXDAwMFxcXG5cXDE2OVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDE3MFxcMDAwXFwxMDNcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwyMzdcXDAwMFxcXG5cXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE3NFxcMDAwXFwxMjVcXDAwMFxcMjI0XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwwMzBcXDAwMVxcMDE0XFwwMDFcXDAzMVxcMDAxXFwyMTRcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDAxNlxcMDAxXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwyMjNcXDAwMFxcMTI1XFwwMDBcXDA5NFxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxNzRcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDEyNVxcMDAwXFwxNzVcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzlcXDAwMFxcMTY5XFwwMDBcXDE3OFxcMDAwXFwwMTBcXDAwMFxcXG5cXDE2OVxcMDAwXFwwMTFcXDAwMFxcMTc5XFwwMDBcXDE0MlxcMDAwXFwxODBcXDAwMFxcMTQyXFwwMDBcXDEyOFxcMDAwXFwwOTJcXDAwMFxcXG5cXDA5MlxcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwwMjZcXDAwMVxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcXG5cXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwOTJcXDAwMFxcMTI3XFwwMDBcXDA5MlxcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTczXFwwMDBcXDEyMlxcMDAwXFwxMjNcXDAwMFxcMTczXFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwwMjhcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTQzXFwwMDBcXDEyN1xcMDAwXFwxNDNcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDM3XFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDU2XFwwMDBcXDE3NVxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXDIxN1xcMDAwXFwyMThcXDAwMFxcXG5cXDE3OFxcMDAwXFwwMzhcXDAwMVxcMDQwXFwwMDFcXDA0OFxcMDAxXFwxNzlcXDAwMFxcMDQ5XFwwMDFcXDE4MFxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1MFxcMDAxXFwwMzdcXDAwMFxcMDgwXFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDUxXFwwMDFcXDAzN1xcMDAwXFwxMjdcXDAwMFxcXG5cXDEyN1xcMDAwXFwwNTRcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDM3XFwwMDBcXDEyM1xcMDAwXFwwMzdcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDAwN1xcMDAwXFwwNTlcXDAwMVxcMDYwXFwwMDFcXDA2N1xcMDAxXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDY1XFwwMDFcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2MFxcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDc1XFwwMDFcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA4MVxcMDAxXFwxMjNcXDAwMFxcXG5cXDA3N1xcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3N1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3OFxcMDAxXFwxNzZcXDAwMFxcMDk0XFwwMDFcXDA5MFxcMDAxXFwxMDFcXDAwMVxcXG5cXDE3OFxcMDAwXFwxMDJcXDAwMVxcMDYwXFwwMDBcXDE2N1xcMDAwXFwxNzlcXDAwMFxcMTU0XFwwMDBcXDE4MFxcMDAwXFwxNjhcXDAwMFxcXG5cXDE2OVxcMDAwXFwxMDRcXDAwMVxcMDYwXFwwMDBcXDE3MFxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG5cXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTMxXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDAzMlxcMDAwXFwxMjZcXDAwMFxcXG5cXDAyNVxcMDAxXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxNTZcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwwODdcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDExM1xcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwOTVcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEwOVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMzlcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDZcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwNzVcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxOTZcXDAwMFxcMDU3XFwwMDFcXDIzMFxcMDAwXFwxNjZcXDAwMFxcXG5cXDIwNVxcMDAwXFwwNDFcXDAwMVxcMDY2XFwwMDFcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwNzhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcXG5cXDA4MFxcMDAwXFwwNTZcXDAwMFxcMDg0XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwODBcXDAwMFxcXG5cXDEwNlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA4NlxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwODBcXDAwMFxcXG5cXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNzdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcXG5cXDE0N1xcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDgwXFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDIxXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcXG5cXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNzZcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcXG5cXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG5cXDA4MVxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwNzVcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDE0NlxcMDAwXFwxNDZcXDAwMFxcXG5cXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFwwNzVcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcXG5cXDA5M1xcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwOTNcXDAwMFxcXG5cXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDQwXFwwMDBcXDE0NlxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDA4NFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE5OFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG5cXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDA4NlxcMDAwXFwxMDZcXDAwMFxcMDg2XFwwMDBcXDA3NFxcMDAwXFwwODRcXDAwMFxcXG5cXDA4NFxcMDAwXFwxNDdcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxMDZcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG5cXDA3M1xcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDA4MFxcMDAwXFwxNDdcXDAwMFxcXG5cXDI0NFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwOThcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwxMzZcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcXG5cXDEzNlxcMDAwXFwxMzZcXDAwMFxcMTQ3XFwwMDBcXDE0N1xcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcXG5cXDA3M1xcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTMwXFwwMDBcXDE1M1xcMDAwXFwxNTRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDE1OFxcMDAwXFwxNTlcXDAwMFxcMTYwXFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcXG5cXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDEzM1xcMDAwXFwwMDBcXDAwMFxcMTUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDMzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDE4MlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDFcXDAwMFxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDdcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMzRcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDFcXDIyNlxcMDAwXFwyMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG5cXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ3XFwwMDBcXDI0OFxcMDAwXFwyNDlcXDAwMFxcXG5cXDI1MFxcMDAwXFwyNTFcXDAwMFxcMjUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDI0MFxcMDAwXFwyNDFcXDAwMFxcMjQyXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcXG5cXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcXG5cXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcXG5cXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwM1xcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDAxMFxcMDAxXFwyMDdcXDAwMFxcXG5cXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDFcXDA1N1xcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMTkyXFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDAyNlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAyNlxcMDAwXFwwNTZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcXG5cXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcXG5cXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDEwNlxcMDAwXFwwNThcXDAwMFxcXG5cXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcXG5cXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDA5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAxXFwwMjdcXDAwMFxcMDAwXFwwMDFcXDA0NVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwNVxcMDAxXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMTMyXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMVxcMTM3XFwwMDBcXDIzN1xcMDAwXFwwMzdcXDAwMFxcMTE3XFwwMDBcXDA0NVxcMDAxXFwwMjVcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMjdcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwOThcXDAwMFxcMDc3XFwwMDFcXDAxMFxcMDAxXFwxMDFcXDAwMFxcMDA1XFwwMDFcXFxuXFwwMjFcXDAwMVxcMDI3XFwwMDFcXDA4MVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAxXFwwMjVcXDAwMVxcMDAzXFwwMDFcXDAyN1xcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXFxuXFwwNzJcXDAwMVxcMDU1XFwwMDFcXDAwM1xcMDAwXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAyN1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMjdcXDAwMVxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMFxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDQ0XFwwMDFcXFxuXFwxMzVcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0M1xcMDAxXFwwMDVcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwNDNcXDAwMVxcMDc5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDQzXFwwMDFcXFxuXFwwMzNcXDAwMFxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA3NFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDBcXDAxOVxcMDAxXFwwNzhcXDAwMVxcMDU1XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDExNlxcMDAwXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAxMFxcMDAxXFwyMjJcXDAwMFxcMTEzXFwwMDBcXFxuXFwyMjRcXDAwMFxcMDc2XFwwMDFcXDEyNFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDA0NFxcMDAxXFwwNzJcXDAwMVxcMDA1XFwwMDFcXFxuXFwwNzNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMTFcXDAwMVxcMTg3XFwwMDBcXDA1MlxcMDAxXFwwMDNcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwODRcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNzdcXDAwMVxcMDA1XFwwMDFcXDA3OVxcMDAxXFwwMjVcXDAwMVxcMDU1XFwwMDFcXDAyN1xcMDAxXFwwMDlcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA2NFxcMDAxXFwwNzdcXDAwMVxcMDUyXFwwMDFcXFxuXFwwMDVcXDAwMVxcMDMwXFwwMDFcXDA3MlxcMDAxXFwwMDJcXDAwMVxcMDI0XFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwMFxcMDAwXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDAwMFxcMDM1XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA1NVxcMDAxXFwwNDdcXDAwMVxcMDA2XFwwMDFcXDIwNVxcMDAwXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwMDZcXDAwMVxcMjA5XFwwMDBcXDAwNVxcMDAxXFwwNjRcXDAwMVxcMDA3XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDM5XFwwMDFcXFxuXFwyMjhcXDAwMFxcMDI2XFwwMDFcXDIyMVxcMDAwXFwyMDVcXDAwMFxcMjIzXFwwMDBcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjAxXFwwMDBcXFxuXFwwMDNcXDAwMVxcMDExXFwwMDFcXDA0NFxcMDAxXFwwMDZcXDAwMVxcMTQ5XFwwMDBcXDA4MVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAzMFxcMDAxXFwwMDZcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDA1XFwwMDFcXDA0NFxcMDAxXFwwMzBcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDQ0XFwwMDFcXDA1MlxcMDAxXFwwMzBcXDAwMVxcMDc2XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDBcXFxuXFwwODBcXDAwMVxcMDUyXFwwMDFcXDA3N1xcMDAxXFwwMDRcXDAwMVxcMDc5XFwwMDFcXDAyNVxcMDAxXFwwNTVcXDAwMVxcMDI3XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDI1XFwwMDFcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDU1XFwwMDFcXDA3N1xcMDAxXFwwNDRcXDAwMVxcMDY0XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMTk3XFwwMDBcXDA2NFxcMDAxXFwwNTJcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNDNcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMDNcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwM1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMDFcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwMVxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAxXFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDAyXFwwMDFcXDA0NFxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDFcXDAwMVxcMDc1XFwwMDFcXDA1MlxcMDAxXFwwMDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwNzJcXDAwMVxcMDczXFwwMDFcXDAwMVxcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDlcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDZcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNzJcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDg0XFwwMDFcXDAyNVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA3N1xcMDAxXFwwNDRcXDAwMVxcMDM0XFwwMDFcXDAwMFxcMDAwXFwwMzZcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNTJcXDAwMVxcMTAwXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA1XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwNzJcXDAwMVxcMDEwXFwwMDFcXDA4MVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMDIxXFwwMDFcXDAwM1xcMDAxXFwwMjNcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXFxuXFwwNzdcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDA0XFwwMDFcXDAzNVxcMDAxXFwwMDBcXDAwMVxcMDM3XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDcyXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDM0XFwwMDFcXDAwM1xcMDAxXFwwMzBcXDAwMVxcMDI1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDI3XFwwMDFcXDAzNFxcMDAxXFwwMDZcXDAwMVxcMDM2XFwwMDFcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDI1XFwwMDFcXDAwNlxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDIxXFwwMDFcXDAxMFxcMDAxXFwwMjNcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwM1xcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwNlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDA2XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwNlxcMDAxXFwwMzVcXDAwMVxcMDA4XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwOFxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMFxcMDAwXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwMzBcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMDZcXDAwMVxcMDM0XFwwMDFcXDAwM1xcMDAxXFwwMzZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNDhcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDczXFwwMDFcXDAwNlxcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDIzXFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDAwOFxcMDAxXFwwMjVcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMDBcXDAwMFxcMDI3XFwwMDFcXFxuXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwM1xcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNDRcXDAwMVxcMDM1XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMFxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXFxuXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNzZcXDAwMVxcMDI2XFwwMDFcXDA3NlxcMDAxXFwwMzBcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDc2XFwwMDFcXDA0OVxcMDAxXFwwNDRcXDAwMVxcMDM0XFwwMDFcXDAwNlxcMDAxXFwwMzZcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDc3XFwwMDFcXDA0OFxcMDAxXFwwNTJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDFcXFxuXFwwNzNcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDA4XFwwMDBcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMjFcXDAwMFxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDEzXFwwMDBcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMThcXDAwMFxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMzVcXDAwMVxcMTk5XFwwMDBcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDBcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMTA2XFwwMDBcXDAzM1xcMDAxXFwxNDZcXDAwMFxcMDcxXFwwMDBcXFxuXFwxMThcXDAwMFxcMDE0XFwwMDFcXDA0NVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDczXFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXFxuXFwwMDZcXDAwMVxcMDIzXFwwMDFcXDAwMFxcMDAwXFwwMDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMDIxXFwwMDFcXFxuXFwwMDBcXDAwMFxcMDIzXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwwMjdcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMDAxXFwwMDFcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuXFwwMDBcXDAwMFxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwODFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwODFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA3OVxcMDAxXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3MVxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMDRcXDAwMFxcMDc1XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMDcyXFwwMDFcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA5XFwwMDFcXFxuXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwNlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwwMDlcXDAwMVxcMjU1XFwyNTVcXDEwNVxcMDAwXFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwxMDhcXDAwMFxcMDAxXFwwMDFcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwwMjFcXDAwMVxcMDM2XFwwMDFcXDAyM1xcMDAxXFwwNDZcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDUyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDZcXDAwMVxcMTY1XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwwMDlcXDAwMVxcMDIzXFwwMDFcXFxuXFwxNzJcXDAwMFxcMTczXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE0XFwwMDBcXFxuXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwNDNcXDAwMVxcMDM4XFwwMDBcXDAzOVxcMDAwXFwyNTVcXDI1NVxcMDQxXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDA1MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDE1XFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMTEyXFwwMDBcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTdcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMTIwXFwwMDBcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzNcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NFxcMDAxXFwxMzhcXDAwMFxcMTM5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMTQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE3NVxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXFxuXFwxNzhcXDAwMFxcMTc5XFwwMDBcXDE4MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTc0XFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODZcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjFcXDAwMFxcMjU1XFwyNTVcXDIyM1xcMDAwXFwyNTVcXDI1NVxcMjA2XFwwMDBcXFxuXFwwMjRcXDAwMVxcMjU1XFwyNTVcXDIyOFxcMDAwXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXFxuXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDAzNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXFxuXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDVcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjU1XFwyNTVcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MlxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBBVFxcMDAwXFxcbiAgVFlQRVxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIERFTEVURVxcMDAwXFxcbiAgSU5UUk9cXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgU0VUXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIFVOVElMXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgRElWXFwwMDBcXFxuICBTSU5VU1xcMDAwXFxcbiAgQ09TSU5VU1xcMDAwXFxcbiAgVEFOXFwwMDBcXFxuICBQT1dcXDAwMFxcXG4gIEFCU1xcMDAwXFxcbiAgTU9EVUxPXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFRJTUVcXDAwMFxcXG4gIEVWRU5UXFwwMDBcXFxuICBOVUxMX0VWRU5UXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBFUVVBTFxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgTk9UXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgS0FQUEFfUkFSXFwwMDBcXFxuICBLQVBQQV9MUkFSXFwwMDBcXFxuICBLQVBQQV9MTktcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgTEVUXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBPQlNcXDAwMFxcXG4gIFRPS0VOXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEtBUFBBX1dMRFxcMDAwXFxcbiAgS0FQUEFfU0VNSVxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgQVNTSUdOXFwwMDBcXFxuICBQUklOVEZcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIFNOQVBTSE9UXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgSURcXDAwMFxcXG4gIEtBUFBBX01SS1xcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMDM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGZ1biBjIC0+IGMpXG4jIDEwNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmV3bGluZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChfMSlcbiMgMTA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKFNvbWUgKF8xLCByaHNfcG9zIDEpLF8yKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF8zIGMgaW4ge3Igd2l0aCBBc3QucnVsZXMgPSBvdXQ6OnIuQXN0LnJ1bGVzfSlcbiMgMTA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAoZnVuIGMgLT4gbGV0IHIgPSBfMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsXzEpOjpyLkFzdC5ydWxlc30pXG4jIDEwNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChsZXQgb3V0ID0gKChfMSxyaHNfcG9zIDEpLF8zKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9IF80IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9KVxuIyAxMDgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2luc3RydWN0aW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGZ1biBjIC0+IGxldCByID0gXzIgYyBpblxuXHRcdCAgICAgIG1hdGNoIF8xIHdpdGhcblx0XHQgICAgICB8IEFzdC5SVUxFIHJ1IC0+XG5cdFx0XHQge3Igd2l0aCBBc3QucnVsZXMgPSBydTo6ci5Bc3QucnVsZXN9XG5cdFx0ICAgICAgfCBBc3QuU0lHIGFnIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Quc2lnbmF0dXJlcz1hZzo6ci5Bc3Quc2lnbmF0dXJlc31cblx0XHQgICAgICB8IEFzdC5UT0tFTlNJRyAoc3RyX3BvcykgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC50b2tlbnM9c3RyX3Bvczo6ci5Bc3QudG9rZW5zfVxuXHRcdCAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsdm9sLHZvbF9wYXJhbSkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52b2x1bWVzPSh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKTo6ci5Bc3Qudm9sdW1lc31cblx0XHQgICAgICB8IEFzdC5JTklUIChhbGcsaW5pdF90KSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LmluaXQ9KGFsZyxpbml0X3QpOjpyLkFzdC5pbml0fVxuXHRcdCAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuT0JTICgobGJsLHBvcyksXyBhcyB2YXIpIC0+XG5cdFx0XHQgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG5cdFx0XHQgICB7ciB3aXRoXG5cdFx0XHQgICAgIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlcztcblx0XHRcdCAgICAgQXN0Lm9ic2VydmFibGVzID0gKEFsZ19leHByLkFMR19WQVIgbGJsLHBvcylcblx0XHRcdFx0XHRcdCA6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBMT1QgZXhwciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0Lm9ic2VydmFibGVzID0gZXhwcjo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUEVSVCAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QucGVydHVyYmF0aW9ucyA9XG5cdFx0XHQgICAoKGFsYXJtLHByZSxlZmZlY3Qsb3B0KSxwb3MpOjpyLkFzdC5wZXJ0dXJiYXRpb25zfVxuXHRcdCAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LmNvbmZpZ3VyYXRpb25zID0gKHBhcmFtX25hbWUsdmFsdWVfbGlzdCk6OnIuQXN0LmNvbmZpZ3VyYXRpb25zfVxuXHRcdCAgKVxuIyAxMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlN5bnRheCBlcnJvclwiKSkpXG4jIDExMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTA0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNJRyBfMilcbiMgMTEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuVE9LRU5TSUcgKF8yLHJoc19wb3MgMikpXG4jIDExMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpKVxuIyAxMTQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5JTklUIF8yKVxuIyAxMTUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSlcbiMgMTE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkRFQ0xBUkUgXzIpXG4jIDExNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5PQlMgXzIpXG4jIDExNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgIChBc3QuUExPVCBfMilcbiMgMTE3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSlcbiMgMTE4NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlBFUlQgKGFkZF9wb3MgXzIpKVxuIyAxMTkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChBc3QuQ09ORklHICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEyMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8yLHJoc19wb3MgMikpIClcbiMgMTIwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxMjE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoKF8zLEFzdC5JTklUX1RPSyBbXzEscmhzX3BvcyAxXSkpXG4jIDEyMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKChfMSxBc3QuSU5JVF9UT0sgW18yLHJoc19wb3MgMl0pKVxuIyAxMjMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMTI0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICgoXzEscmhzX3BvcyAxKTo6XzIpXG4jIDEyNDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMjU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMjY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMjc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzIpKSkpXG4jIDEyODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxTb21lIF8yLF80LF81KSApXG4jIDEyOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsTm9uZSxfMyxfNCkgKVxuIyAxMzAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggKE5vbmUsU29tZSBfMixfNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzYpKSkpKVxuIyAxMzA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCAoXzEsU29tZSBfMixfNCxOb25lKSlcbiMgMTMxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxMzI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMzMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xXSlcbiMgMTMzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMTM0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV0xBQkVMIChfMywoXzIscmhzX3BvcyAyKSkpXG4jIDEzNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTUlYIChfMywoW18yXSxyaHNfcG9zIDIpKSlcbiMgMTM3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF8zIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMikgZWxzZSBBc3QuRElOT0ZGIF8yKVxuIyAxMzg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfNCAmJiBfMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKSlcbiMgMTQwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5BUFBMWShcblx0XHQgICBfMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCBfMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IClcbiMgMTQxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICBBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgQXN0LnJocz1fMzsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0ICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgIClcbiMgMTQzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz1fMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIClcbiMgMTQ1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChcbiAgICAgICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgICAgICBBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgICAgYWRkX3Bvc1xuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0XG5cdFx0IHtBc3QubWl4PVtdO1xuXHRcdCAgQXN0LmRlbHRhX3Rva2VuID1cblx0XHQgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMywoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSkpXG4gICAgICAgKVxuIyAxNDgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNOQVBTSE9UIChmYWxzZSxfMikpXG4jIDE0ODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEFzdC5TVE9QIF8yKVxuIyAxNDk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlBSSU5UIChfMixfNCkgKVxuIyAxNTAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUExPVEVOVFJZIClcbiMgMTUwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlNQRUNJRVNfT0YgKF80LF8yLChfMywgcmhzX3BvcyAzKSkpXG4jIDE1MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgXzEpXSlcbiMgMTUyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIF8xXSlcbiMgMTUzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKF8xLCByaHNfcG9zIDEpOjpfMylcbiMgMTUzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIF8xOjpfMylcbiMgMTU0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFtdKVxuIyAxNTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAodHJ1ZSlcbiMgMTU2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChmYWxzZSlcbiMgMTU3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoKF8xLHJoc19wb3MgMSksKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yLHJoc19wb3MgMikpKVxuIyAxNTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTU4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE1OTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpXG5cdCAgICApXG4jIDE2MDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNjEzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLlRSVUUpXG4jIDE2MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLkZBTFNFKVxuIyAxNjI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE2MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8yKSkpXG4jIDE2MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsXzEsXzMpKSlcbiMgMTY0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsXzEsXzMpKSlcbiMgMTY1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsXzEsXzMpKSlcbiMgMTY2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsXzEsXzMpKSlcbiMgMTY3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLF8xLF8zKSkpXG4jIDE2NzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLF8xLF8zKSkpXG4jIDE2ODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTY5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAxNzAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zICBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCArIC4uLiArIGFfbiB0X24sIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSlcbiMgMTcxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTcyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgIChbKF8xLChfMixyaHNfcG9zIDIpKV0pXG4jIDE3MjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNCBpbiAoXzEsKF8yLHJoc19wb3MgMikpOjpsKVxuIyAxNzM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoWyhfMSwoXzMscmhzX3BvcyAzKSldKVxuIyAxNzQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNSBpbiAoXzEsKF8zLHJoc19wb3MgMykpOjpsKVxuIyAxNzU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXzRdOyBBc3QuYWRkX3Rva2VuID0gXzV9LFxuICAgICBfMylcbiMgMTc2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzMpXG4jIDE3NzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtfM107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8yKVxuIyAxNzg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzN9LFxuICAgICBfMilcbiMgMTc5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtfMV07IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW107IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gXzIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSBfMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IClcbiMgMTgyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChmYWxzZSlcbiMgMTgzMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICh0cnVlKVxuIyAxODM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxODQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE4NTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICggTmJyLkkgXzEgKVxuIyAxODU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTlNUIF8xKSlcbiMgMTg2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkpXG4jIDE4NzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpKVxuIyAxODc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpKVxuIyAxODg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5UT0tFTl9JRCAoXzIpKSlcbiMgMTg5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yKSApXG4jIDE4OTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTkwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSlcbiMgMTkxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSlcbiMgMTkyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkpXG4jIDE5MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTkzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8yLF8zKSkpXG4jIDE5NTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTixfMixfMykpKVxuIyAxOTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMikpKVxuIyAxOTc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8yKSkpXG4jIDE5ODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8yKSkpXG4jIDE5ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMikpKVxuIyAxOTk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzIpKSlcbiMgMjAwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsXzIpKSlcbiMgMjAwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLF8yKSkpXG4jIDIwMTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUyxfMikpIClcbiMgMjAyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjAzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsXzEsXzMpKSlcbiMgMjAzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSxfMSxfMykpKVxuIyAyMDQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsXzEsXzMpKSlcbiMgMjA1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMSxfMykpKVxuIyAyMDYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEsXzMpKSlcbiMgMjA3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLF8xLF8zKSkpXG4jIDIwNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDIwODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLklGKF8xLF8zLF81KSkpXG4jIDIwOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW4gKGsyLGsxLE5vbmUsTm9uZSkpXG4jIDIxMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncmF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluXG5cdFx0XHQgIGxldCAoa2JhY2ssa2JhY2sxKSA9IF80IGluXG5cdFx0XHQgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSkpXG4jIDIxMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpKVxuIyAyMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsU29tZSBfMykpXG4jIDIxMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLFNvbWUgXzMpIClcbiMgMjEzMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lIF8yKSlcbiMgMjE0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChfMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKSlcbiMgMjE1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSkpXG4jIDIxNjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIxNjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsIFNvbWUgXzMpKVxuIyAyMTc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMjE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSA6OiBfMylcbiMgMjE5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMTk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKV1dIClcbiMgMjIwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpIDo6IF82XSlcbiMgMjIxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5Ob01vZCApXG4jIDIyMjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQ3JlYXRlIClcbiMgMjIyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuRXJhc2UgKVxuIyAyMjMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ21vZF9hZ2VudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoQXN0LlByZXNlbnQgKChfMixyaHNfcG9zIDIpLCBfNCwgXzEpKVxuIyAyMjQxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzJeXCInXCIpKSkpXG4jIDIyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoW10pXG4jIDIyNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMjI2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKFtfMV0pXG4jIDIyNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICggU29tZSAoQXN0LkNFUSBfMixyaHNfcG9zIDIpKVxuIyAyMjc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DR1RFIF8zLHJoc19wb3MgMykpXG4jIDIyODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggU29tZSAoQXN0LkNMVEUgXzMscmhzX3BvcyAzKSlcbiMgMjI5MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBTb21lIChBc3QuQ1ZBUiBfMixyaHNfcG9zIDIpKVxuIyAyMjk5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF8zOyB9IClcbiMgMjMxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV8zO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyMzIyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNTsgfSApXG4jIDIzMzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPV81O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoXzQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSBfNjsgfSApXG4jIDIzNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoXzQscmhzX3BvcyA0KX0gKVxuIyAyMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC1fNSxyaHNfcG9zIDUpfSApXG4jIDIzNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF81LHJoc19wb3MgNSl9IClcbiMgMjM4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0ODcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSBfNixyaHNfcG9zIDYpfSApXG4jIDIzOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDB9IClcbiMgMjQwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyNDEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTb21lIF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAyNDE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSkpXG4jIDI0MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKE5vbmUpXG4jIDI0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgTm9uZSlcbiMgMjQzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIChTb21lIChfMyxyaHNfcG9zIDMpKSlcbiMgMjQ0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKSlcbiMgMjQ1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMikpXG4jIDI0NTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfVkFMVUUgKF8yLCgpKSxyaHNfcG9zIDIpKVxuIyAyNDY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTE4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpKVxuIyAyNDcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoXzIscmhzX3BvcyAyKSwoXzQscmhzX3BvcyA0KSkpKVxuIyAyNDc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgTEthcHBhLkxOS19BTlkpXG4jIDI0ODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSkpXG4jIDI0OTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTI4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8yKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyNTA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSlcbiMgMjUxMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlJVTiBfMilcbiMgMjUyMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk1PRElGWSBfMSlcbiMgMjUyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoQXN0LlFVSVQpXG4jIDI1MzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSlcbiMgMjUzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IHN0YXJ0X3J1bGUgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHN0YXJ0X3J1bGUgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbjs7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuJX1cblxuJXRva2VuIEVPRiBORVdMSU5FIFNFTUlDT0xPTiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIEFUIFRZUEUgTEFSXG4ldG9rZW4gQ1BVVElNRSBFTUFYIFRNQVggUExPVEVOVFJZIERFTEVURSBJTlRSTyBUUkFDSyBETyBTRVQgUkVQRUFUIFNQRUNJRVNfT0ZcbiV0b2tlbiBVTlRJTCBMT0cgUExVUyBNVUxUIE1JTlVTIE1BWCBNSU4gRElWIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgTU9EVUxPXG4ldG9rZW4gU1FSVCBFWFBPTkVOVCBJTkZJTklUWSBUSU1FIEVWRU5UIE5VTExfRVZFTlQgUElQRSBFUVVBTCBBTkQgT1IgTk9UXG4ldG9rZW4gR1JFQVRFUiBTTUFMTEVSIFRSVUUgRkFMU0UgRElGRiBLQVBQQV9SQVIgS0FQUEFfTFJBUiBLQVBQQV9MTktcbiV0b2tlbiBTSUdOQVRVUkUgSU5JVCBMRVQgUExPVCBQRVJUIE9CUyBUT0tFTiBDT05GSUcgS0FQUEFfV0xEIEtBUFBBX1NFTUlcbiV0b2tlbiBGTFVYIEFTU0lHTiBQUklOVEYgU1RPUCBTTkFQU0hPVCBSVU4gVEhFTiBFTFNFIEFMQVJNIEFQUExZXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPHN0cmluZz4gSURcbiV0b2tlbiA8c3RyaW5nPiBLQVBQQV9NUksgTEFCRUxcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gU1RSSU5HXG5cbiVsZWZ0IE1JTlVTIFBMVVNcbiVsZWZ0IE1VTFQgRElWXG4lbGVmdCBNT0RVTE9cbiVyaWdodCBQT1dcbiVub25hc3NvYyBMT0cgU1FSVCBFWFBPTkVOVCBTSU5VUyBDT1NJTlVTIEFCUyBUQU5cblxuJWxlZnQgT1JcbiVsZWZ0IEFORFxuXG4lbm9uYXNzb2MgVEhFTlxuXG4lc3RhcnQgc3RhcnRfcnVsZVxuJXR5cGUgPEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWw+IHN0YXJ0X3J1bGVcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSUgLypHcmFtbWFyIHJ1bGVzKi9cblxubmV3bGluZTpcbiAgICB8IE5FV0xJTkUgc3RhcnRfcnVsZSB7JDJ9XG4gICAgfCBFT0Yge2Z1biBjIC0+IGN9O1xuXG5zdGFydF9ydWxlOlxuICAgIHwgbmV3bGluZSB7JDF9XG4gICAgfCBMQUJFTCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9IChTb21lICgkMSwgcmhzX3BvcyAxKSwkMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc319XG4gICAgfCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7ZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsJDEpOjpyLkFzdC5ydWxlc319XG4gICAgfCBMQUJFTCBFUVVBTCBhbGdfZXhwciBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKCgkMSxyaHNfcG9zIDEpLCQzKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQ0IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9fVxuICAgIHwgaW5zdHJ1Y3Rpb24gbmV3bGluZVxuXHRcdCAgeyBmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW5cblx0XHQgICAgICBtYXRjaCAkMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIH1cbiAgICB8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpfVxuICAgIDtcblxuaW5zdHJ1Y3Rpb246XG4gICAgfCBTSUdOQVRVUkUgYWdlbnRfZXhwcmVzc2lvbiB7QXN0LlNJRyAkMn1cbiAgICB8IFRPS0VOIElEIHtBc3QuVE9LRU5TSUcgKCQyLHJoc19wb3MgMil9XG4gICAgfCBTSUdOQVRVUkUgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0XHQoYWRkX3BvcyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmUsIEkgd2FzIGV4cGVjdGluZyBzb21ldGhpbmcgb2YgdGhlIGZvcm0gJyVhZ2VudDogQSh4LHl+dX52LHopJ1wiKSl9XG5cbiAgICB8IElOSVQgaW5pdF9kZWNsYXJhdGlvbiB7QXN0LklOSVQgJDJ9XG4gICAgfCBJTklUIGVycm9yXG5cdHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpfVxuXG4gICAgfCBMRVQgdmFyaWFibGVfZGVjbGFyYXRpb24ge0FzdC5ERUNMQVJFICQyfVxuICAgIHwgT0JTIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuT0JTICQyfVxuICAgIHwgUExPVCBhbGdfZXhwciB7QXN0LlBMT1QgJDJ9XG4gICAgfCBQTE9UIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKX1cbiAgICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHtBc3QuUEVSVCAoYWRkX3BvcyAkMil9XG4gICAgfCBDT05GSUcgU1RSSU5HIHZhbHVlX2xpc3Rcblx0ICAgICB7QXN0LkNPTkZJRyAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIDtcblxuaW5pdF9kZWNsYXJhdGlvbjpcbiAgICB8IGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMixyaHNfcG9zIDIpKSB9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgbm9uX2VtcHR5X21peHR1cmUgQ0xfUEFSXG4gICAgeyAoJDEsQXN0LklOSVRfTUlYICgkMywgcmhzX3BvcyAzKSkgfVxuICAgIHwgSUQgTEFSIGFsZ19leHByIHsoJDMsQXN0LklOSVRfVE9LIFskMSxyaHNfcG9zIDFdKX1cbiAgICB8IGFsZ19leHByIElEIHsoJDEsQXN0LklOSVRfVE9LIFskMixyaHNfcG9zIDJdKX1cbiAgICA7XG5cbnZhbHVlX2xpc3Q6XG4gICAgfCBTVFJJTkcge1skMSwgcmhzX3BvcyAxXX1cbiAgICB8IFNUUklORyB2YWx1ZV9saXN0IHsoJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHtOb25lfVxuICB8IEFMQVJNIG5iciB7U29tZSAkMn1cblxucGVydHVyYmF0aW9uX3Bvc3Q6XG4gIHtOb25lfVxuICB8IFJFUEVBVCBib29sX2V4cHIge1NvbWUgJDJ9XG4gIHwgVU5USUwgYm9vbF9leHByXG4gICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCB7IFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkMikpKX1cblxuXG5wZXJ0dXJiYXRpb25fZGVjbGFyYXRpb246XG4gICAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsU29tZSAkMiwkNCwkNSkgfVxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIERPIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyAoJDEsTm9uZSwkMywkNCkgfVxuICAgIHwgUkVQRUFUIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBVTlRJTCBib29sX2V4cHJcbiAgICAgICAvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovXG5cdCAgeyAoTm9uZSxTb21lICQyLCQ0LFNvbWUgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwkNikpKSl9XG4gICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBTRVQgZWZmZWN0X2xpc3Rcblx0XHR7ICgkMSxTb21lICQyLCQ0LE5vbmUpfSAvKkZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ki9cbiAgICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6IGVmZmVjdF9saXN0IEVPRiB7JDF9XG5cbmVmZmVjdF9saXN0OlxuICAgIHwgT1BfUEFSIGVmZmVjdF9saXN0IENMX1BBUiB7JDJ9XG4gICAgfCBlZmZlY3Qge1skMV19XG4gICAgfCBlZmZlY3QgU0VNSUNPTE9OIGVmZmVjdF9saXN0IHskMTo6JDN9XG4gICAgO1xuXG5lZmZlY3Q6XG4gICAgfCBBU1NJR04gSUQgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IEFTU0lHTiBMQUJFTCBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSByYXRlIG9mIGEgcnVsZSovXG5cdFx0XHRcdFx0XHQgICAgICB7QXN0LlVQREFURSAoKCQyLHJoc19wb3MgMiksJDMpfVxuICAgIHwgVFJBQ0sgTEFCRUwgYm9vbGVhblxuXHQgICAge0FzdC5DRkxPV0xBQkVMICgkMywoJDIscmhzX3BvcyAyKSl9XG4gICAgfCBUUkFDSyBwYXR0ZXJuIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dNSVggKCQzLChbJDJdLHJoc19wb3MgMikpfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW5cblx0ICAge2lmICQzIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMikgZWxzZSBBc3QuRElOT0ZGICQyfVxuICAgIHwgRkxVWCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBib29sZWFuXG5cdCAgIHtpZiAkNCAmJiAkMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksJDIpXG5cdCAgIGVsc2UgaWYgJDQgJiYgJDMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLCQyKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKX1cbiAgICB8IEFQUExZIHNtYWxsX2FsZ19leHByIHJ1bGVfY29udGVudFxuXHRcdCB7IEFzdC5BUFBMWShcblx0XHQgICAkMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCAkMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IH1cbiAgICB8IElOVFJPIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgIEFzdC5yaHM9JDM7IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgICB9XG4gICAgfCBJTlRSTyBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpfVxuICAgIHwgREVMRVRFIGFsZ19leHByIG5vbl9lbXB0eV9taXh0dXJlXG4gICAgICAgeyBBc3QuQVBQTFkoJDIsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkFycm93IHtBc3QubGhzPSQzOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgfVxuXG4gICAgfCBERUxFVEUgZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IElEIExBUiBhbGdfZXhwciAvKnVwZGF0aW5nIHRoZSB2YWx1ZSBvZiBhIHRva2VuKi9cbiAgICAgICB7XG4gICAgICAgbGV0IHRrID0gKCQxLHJoc19wb3MgMSkgaW5cbiAgICAgICAgQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICAgIGFkZF9wb3NcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdFxuXHRcdCB7QXN0Lm1peD1bXTtcblx0XHQgIEFzdC5kZWx0YV90b2tlbiA9XG5cdFx0ICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDMsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0pKVxuICAgICAgIH1cbiAgICB8IFNOQVBTSE9UIHByaW50X2V4cHIge0FzdC5TTkFQU0hPVCAoZmFsc2UsJDIpfVxuICAgIHwgU1RPUCBwcmludF9leHByIHtBc3QuU1RPUCAkMn1cbiAgICB8IFBSSU5URiBwcmludF9leHByIFNNQUxMRVIgcHJpbnRfZXhwciBHUkVBVEVSIHsgQXN0LlBSSU5UICgkMiwkNCkgfVxuICAgIHwgUExPVEVOVFJZIHsgQXN0LlBMT1RFTlRSWSB9XG4gICAgfCBTUEVDSUVTX09GIG5vbmVtcHR5X3ByaW50X2V4cHIgbm9uX2VtcHR5X21peHR1cmUgYm9vbGVhbiB7IEFzdC5TUEVDSUVTX09GICgkNCwkMiwoJDMsIHJoc19wb3MgMykpfVxuICAgIDtcblxubm9uZW1wdHlfcHJpbnRfZXhwcjpcbiAgICB8IFNUUklORyB7W1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zICQxKV19XG4gICAgfCBtaWRfYWxnX2V4cHIge1tQcmltaXRpdmVzLkFsZ19wZXhwciAkMV19XG4gICAgfCBTVFJJTkcgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuU3RyX3BleHByICgkMSwgcmhzX3BvcyAxKTo6JDN9XG4gICAgfCBtaWRfYWxnX2V4cHIgRE9UIG5vbmVtcHR5X3ByaW50X2V4cHIge1ByaW1pdGl2ZXMuQWxnX3BleHByICQxOjokM31cbiAgICA7XG5wcmludF9leHByOlxuICAgIC8qZW1wdHkqLyB7W119XG4gICAgfCBub25lbXB0eV9wcmludF9leHByIHskMX1cblxuYm9vbGVhbjpcbiAgICB8IFRSVUUge3RydWV9XG4gICAgfCBGQUxTRSB7ZmFsc2V9XG4gICAgO1xuXG52YXJpYWJsZV9kZWNsYXJhdGlvbjpcbiAgICB8IExBQkVMIG5vbl9lbXB0eV9taXh0dXJlXG5cdCAgIHsgKCgkMSxyaHNfcG9zIDEpLChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMixyaHNfcG9zIDIpKX1cbiAgICB8IExBQkVMIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgSUQgYWxnX2V4cHIgeygoJDEscmhzX3BvcyAxKSwkMil9XG4gICAgfCBMQUJFTCBlcnJvclxuXHQgICAge3JhaXNlXG5cdCAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSlcblx0ICAgIH1cbiAgICA7XG5cbnNtYWxsX2Jvb2xfZXhwcjpcbiAgICB8IE9QX1BBUiBib29sX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IFRSVUUge2FkZF9wb3MgQWxnX2V4cHIuVFJVRX1cbiAgICB8IEZBTFNFIHthZGRfcG9zIEFsZ19leHByLkZBTFNFfVxuXG5ib29sX2V4cHI6XG4gICAgfCBzbWFsbF9ib29sX2V4cHIgeyAkMSB9XG4gICAgfCBOT1Qgc21hbGxfYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCwkMikpfVxuICAgIHwgYm9vbF9leHByIEFORCBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCwkMSwkMykpfVxuICAgIHwgYm9vbF9leHByIE9SIGJvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEdSRUFURVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIFNNQUxMRVIgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIEVRVUFMIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCwkMSwkMykpfVxuICAgIHwgYWxnX2V4cHIgRElGRiBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRiwkMSwkMykpfVxuICAgIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6IGJvb2xfZXhwciBFT0YgeyQxfVxuXG50b2tlbl9leHByOlxuICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgUElQRSBzdW1fdG9rZW4geyQyfVxuICAgIHwgUElQRSBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAgKyAuLi4gKyBhX24gdF9uLCB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSl9XG4gICAgO1xuXG5zdW1fdG9rZW46XG4gICAgfCBPUF9QQVIgc3VtX3Rva2VuIENMX1BBUiB7JDJ9XG4gICAgfCBhbGdfZXhwciBJRCB7WygkMSwoJDIscmhzX3BvcyAyKSldfVxuICAgIHwgYWxnX2V4cHIgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDQgaW4gKCQxLCgkMixyaHNfcG9zIDIpKTo6bH1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQge1soJDEsKCQzLHJoc19wb3MgMykpXX1cbiAgICB8IGFsZ19leHByIFRZUEUgSUQgUExVUyBzdW1fdG9rZW4ge2xldCBsID0gJDUgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKTo6bH1cblxucnVsZV9jb250ZW50OlxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVskMV07IEFzdC5ybV90b2tlbiA9ICQyOyBBc3QucmhzPVskNF07IEFzdC5hZGRfdG9rZW4gPSAkNX0sXG4gICAgICQzfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDN9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyBwYXR0ZXJuIHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bJDNdOyBBc3QuYWRkX3Rva2VuID0gJDR9LFxuICAgICAkMn1cbiAgfCB0b2tlbl9leHByIGFycm93IHRva2VuX2V4cHJcbiAgICB7QXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSAkMTsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9ICQzfSxcbiAgICAgJDJ9XG4gIHwgcGF0dGVybiB0b2tlbl9leHByXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFskMV07IEFzdC5kZWx0YV90b2tlbiA9ICQyfSxmYWxzZSB9O1xuICB8IFBJUEUgc3VtX3Rva2VuXG4gICAgeyBBc3QuRWRpdCB7QXN0Lm1peCA9IFtdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcblxucnVsZV9leHByZXNzaW9uOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gJDIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSAkMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IH07XG5cbmFycm93OlxuICAgIHwgS0FQUEFfUkFSIHtmYWxzZX1cbiAgICB8IEtBUFBBX0xSQVIge3RydWV9XG4gICAgO1xuXG5uYnI6XG4gICAgfCBJTkZJTklUWSB7IE5ici5GIGluZmluaXR5IH1cbiAgICB8IEZMT0FUIHsgTmJyLkYgJDEgfVxuICAgIHwgSU5UIHsgTmJyLkkgJDEgfVxuXG5jb25zdGFudDpcbiAgICB8IG5iciB7YWRkX3BvcyAoQWxnX2V4cHIuQ09OU1QgJDEpfVxuICAgIHwgRU1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpfVxuICAgIHwgVE1BWCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpfVxuICAgIHwgQ1BVVElNRSB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSl9XG4gICAgO1xuXG52YXJpYWJsZTpcbiAgICB8IFBJUEUgSUQgUElQRSB7YWRkX3BvcyAoQWxnX2V4cHIuVE9LRU5fSUQgKCQyKSl9XG4gICAgfCBQSVBFIG5vbl9lbXB0eV9taXh0dXJlIFBJUEUgeyBhZGRfcG9zIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAkMikgfVxuICAgIHwgSUQge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBMQUJFTCB7YWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKX1cbiAgICB8IFRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKX1cbiAgICB8IEVWRU5UIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpfVxuICAgIHwgTlVMTF9FVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpfVxuICAgIDtcblxuc21hbGxfYWxnX2V4cHI6XG4gICAgfCBPUF9QQVIgYWxnX2V4cHIgQ0xfUEFSIHskMn1cbiAgICB8IGNvbnN0YW50IHskMX1cbiAgICB8IHZhcmlhYmxlIHskMX1cbiAgICB8IE1BWCBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMiwkMykpfVxuICAgIHwgTUlOIHNtYWxsX2FsZ19leHByIHNtYWxsX2FsZ19leHByXG5cdCAge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQyLCQzKSl9XG4gICAgfCBFWFBPTkVOVCBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsJDIpKX1cbiAgICB8IFNJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLCQyKSl9XG4gICAgfCBDT1NJTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDIpKX1cbiAgICB8IFRBTiBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sJDIpKX1cbiAgICB8IEFCUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsJDIpKX1cbiAgICB8IFNRUlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMikpfVxuICAgIHwgTE9HIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRywkMikpfVxuICAgIDtcblxubWlkX2FsZ19leHByOlxuICAgIHwgTUlOVVMgbWlkX2FsZ19leHByIHsgYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMikpIH1cbiAgICB8IHNtYWxsX2FsZ19leHByIHsgJDEgfVxuICAgIHwgbWlkX2FsZ19leHByIE1VTFQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQTFVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0sJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBESVYgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJViwkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1JTlVTIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIFBPVyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgTU9EVUxPIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NT0RVTE8sJDEsJDMpKX1cblxuYWxnX2V4cHI6XG4gICAgfCBtaWRfYWxnX2V4cHIgeyQxfVxuICAgIHwgYm9vbF9leHByIFRIRU4gYWxnX2V4cHIgRUxTRSBzbWFsbF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuSUYoJDEsJDMsJDUpKX1cblxuYmlyYXRlOlxuICAgIHwgQVQgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpbiAoazIsazEsTm9uZSxOb25lKX1cbiAgICB8IEFUIHJhdGUgQ09NTUEgcmF0ZSB7bGV0IChrMixrMSkgPSAkMiBpblxuXHRcdFx0ICBsZXQgKGtiYWNrLGtiYWNrMSkgPSAkNCBpblxuXHRcdFx0ICAoazIsazEsU29tZSBrYmFjayxrYmFjazEpfVxuICAgIHwgZXJyb3Ige3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSl9XG4gICAgO1xuXG5yYXRlOlxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgeygkMSxTb21lICQzKX1cbiAgICB8IGFsZ19leHByIE9QX1BBUiBhbGdfd2l0aF9yYWRpdXMgQ0xfUEFSIHsgKCQxLFNvbWUgJDMpIH1cbiAgICB8IGFsZ19leHByIHsoJDEsTm9uZSl9XG4gICAgfCBPUF9DVVIgYWxnX3dpdGhfcmFkaXVzIENMX0NVUlxuICAgICAgeyhMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLFNvbWUgJDIpfVxuICAgIHwgYWxnX2V4cHIgT1BfQ1VSIENMX0NVUlxuICAgICAgeygkMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKX1cbiAgICB8IHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSl9XG4gICAgO1xuXG5hbGdfd2l0aF9yYWRpdXM6XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgYWxnX2V4cHIgVFlQRSBhbGdfZXhwciB7KCQxLCBTb21lICQzKX1cbiAgICA7XG5cbnBhdHRlcm46XG4gICAgfCBPUF9QQVIgcGF0dGVybiBDTF9QQVIgeyQyfVxuICAgIHwgYWdlbnRfZXhwcmVzc2lvbiBDT01NQSBwYXR0ZXJuIHskMSA6OiAkM31cbiAgICB8IGFnZW50X2V4cHJlc3Npb24ge1skMV19XG47XG5cbm5vbl9lbXB0eV9taXh0dXJlOlxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUlxuICAgIHsgW1tBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQzLCBBc3QuTm9Nb2QpXV0gfVxuICAgIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uIENMX1BBUiBDT01NQSBwYXR0ZXJuXG4gICAgeyBbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKSA6OiAkNl19XG4gICAgO1xuXG5tb2RfYWdlbnQ6XG5cdHwgeyBBc3QuTm9Nb2QgfVxuXHR8IFBMVVMgeyBBc3QuQ3JlYXRlIH1cblx0fCBNSU5VUyB7IEFzdC5FcmFzZSB9O1xuXG5hZ2VudF9leHByZXNzaW9uOlxuICAgIHwgbW9kX2FnZW50IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcblx0IHtBc3QuUHJlc2VudCAoKCQyLHJoc19wb3MgMiksICQ0LCAkMSl9XG4gICAgfCBtb2RfYWdlbnQgSUQgZXJyb3Jcblx0IHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDJeXCInXCIpKSl9XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiBDT01NQSBpbnRlcmZhY2VfZXhwcmVzc2lvbiB7JDE6OiQzfVxuICAgIHwgcG9ydF9leHByZXNzaW9uIHtbJDFdfVxuICAgIDtcblxuY291bnRlcl90ZXN0OlxuICAgfCBUWVBFIElOVCB7IFNvbWUgKEFzdC5DRVEgJDIscmhzX3BvcyAyKX1cbiAgIHwgVFlQRSBHUkVBVEVSIElOVCB7IFNvbWUgKEFzdC5DR1RFICQzLHJoc19wb3MgMyl9XG4gICB8IFRZUEUgU01BTExFUiBJTlQgeyBTb21lIChBc3QuQ0xURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIElEIHsgU29tZSAoQXN0LkNWQVIgJDIscmhzX3BvcyAyKX1cblxucG9ydF9leHByZXNzaW9uOlxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGUgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQ0OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZV9tb2Rcblx0IHsgQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKCQ0LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gJDU7IH0gfVxuICAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDU7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoJDQscmhzX3BvcyA0KX0gfVxuICAgIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtJDUscmhzX3BvcyA1KX0gfVxuICAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ1LHJoc19wb3MgNSl9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gJDYscmhzX3BvcyA2KX0gfVxuICAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgICAgIHsgQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKCQxLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSAkMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSB9XG4gICAgO1xuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IEtBUFBBX01SSyBpbnRlcm5hbF9zdGF0ZSB7KFNvbWUgJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgfCBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKX1cbiAgICA7XG5cbmxpbmtfc3RhdGVfbW9kOlxuXHR8IHtOb25lfVxuXHR8IERJViBLQVBQQV9MTksgRE9UIHtTb21lIE5vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBJTlQge1NvbWUgKFNvbWUgKCQzLHJoc19wb3MgMykpfVxuXHR8IERJViBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpfTtcblxuXG5hX2xpbmtfc3RhdGU6XG4gICAgfCBLQVBQQV9MTksgRE9UIHsoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSU5UIHsoTEthcHBhLkxOS19WQUxVRSAoJDIsKCkpLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgS0FQUEFfU0VNSSB7KExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElEIERPVCBJRCB7YWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoJDIscmhzX3BvcyAyKSwoJDQscmhzX3BvcyA0KSkpfVxuICAgIHwgS0FQUEFfV0xEIHthZGRfcG9zIExLYXBwYS5MTktfQU5ZfVxuICAgIHwgS0FQUEFfTE5LIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKX1cbjtcblxubGlua19zdGF0ZTpcblx0fCBhX2xpbmtfc3RhdGUgbGlua19zdGF0ZSB7JDE6OiQyfVxuXHR8IGFfbGlua19zdGF0ZSB7WyQxXX07XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG5cdHwgUlVOIE5FV0xJTkUge0FzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKX1cblx0fCBSVU4gYm9vbF9leHByIE5FV0xJTkUge0FzdC5SVU4gJDJ9XG5cdHwgZWZmZWN0X2xpc3QgTkVXTElORSB7QXN0Lk1PRElGWSAkMX1cblx0fCBFT0Yge0FzdC5RVUlUfVxuXHR8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSl9XG4lJVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSAoWycwJy0nOSddKylcbmxldCByZWFsID1cbiAgICAgKCgoKFsnMCctJzknXSsgKCcuJyBbJzAnLSc5J10qKT8pIHwgKCcuJyBbJzAnLSc5J10rKSlcblx0WydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKylcbiAgfCAoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSogKSB8IChbJzAnLSc5J10qICcuJyBbJzAnLSc5J10rKSkpXG5sZXQgaWQgPSAoJ18nKiBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICctJyAnKyddKiApXG5sZXQgaW50ZXJuYWxfc3RhdGUgPSAnficgKFsnMCctJzknICdhJy0neicgJ0EnLSdaJyAnXycgJy0nICcrJ10rKVxubGV0IHBlcnQgPSAnJCcgaWRcblxucnVsZSB0b2tlbiA9IHBhcnNlXG5cdCB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmfVxuXHQgfCBcIiYmXCIge0FORH1cblx0IHwgXCJ8fFwiIHtPUn1cblx0IHwgXCI8LT5cIiB7S0FQUEFfTFJBUn1cblx0IHwgXCItPlwiIHtLQVBQQV9SQVJ9XG5cdCB8IFwiPC1cIiB7TEFSfVxuXHQgfCBcIjw+XCIge0RJRkZ9XG5cdCB8IHBlcnQgYXMgcyB7bWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIH1cblx0IHwgJ1snIGJsYW5rKiAoaWQgYXMgbGFiKSBibGFuayogJ10nIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnOicge1RZUEV9XG5cdCB8ICc7JyB7U0VNSUNPTE9OfVxuXHQgfCAnXFxcIicge2xldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyfVxuXHQgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgfCAnIycge2NvbW1lbnQgbGV4YnVmfVxuXHQgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0IHwgaW50ZWdlciBhcyBuIHt0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cblxuXHQgfCByZWFsIGFzIGYge0ZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZil9XG5cdCB8ICdcXCcnIChbXidcXG4nJ1xcJyddKyBhcyB4KSAnXFwnJ3tMQUJFTCh4KX1cblx0IHwgaWQgYXMgc3RyIHtrZXl3b3JkX29yX2lkIHN0cn1cblx0IHwgJ0AnIHtBVH1cblx0IHwgJywnIHtDT01NQX1cblx0IHwgJygnIHtPUF9QQVJ9XG5cdCB8ICcpJyB7Q0xfUEFSfVxuXHQgfCAneycge09QX0NVUn1cblx0IHwgJ30nIHtDTF9DVVJ9XG5cdCB8ICd8JyB7UElQRX1cblx0IHwgJy4nIHtET1R9XG5cdCB8ICcrJyB7UExVU31cblx0IHwgJyonIHtNVUxUfVxuXHQgfCAnLScge01JTlVTfVxuXHQgfCAnXicge1BPV31cblx0IHwgJy8nIHtESVZ9XG5cdCB8ICc8JyB7U01BTExFUn1cblx0IHwgJz4nIHtHUkVBVEVSfVxuXHQgfCAnPScge0VRVUFMfVxuXHQgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICchJyB7S0FQUEFfTE5LfVxuXHQgfCBpbnRlcm5hbF9zdGF0ZSBhcyBzIHtsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICB9XG5cdCB8ICc/JyB7S0FQUEFfV0xEfVxuXHQgfCAnXycge0tBUFBBX1NFTUl9XG5cdCB8IGJsYW5rICB7dG9rZW4gbGV4YnVmfVxuXHQgfCBlb2Yge3JlYWNoX2VvZiBsZXhidWY7IEVPRn1cblx0IHwgXyBhcyBjIHtcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIH1cblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCA9XG4gIHBhcnNlXG4gIHwgZW9mIHtTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpfVxuICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1Zn1cbiAgfCBfIGFzIGMge2lmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmfVxuXG5hbmQgY29tbWVudCA9IHBhcnNlXG5cdCAgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCAgICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCAgICB8IGVvZiB7RU9GfVxuXHQgICAgfCBfIHtjb21tZW50IGxleGJ1Zn1cblxuYW5kIGlubGluZV9jb21tZW50ID0gcGFyc2Vcblx0XHQgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJyonICcvJyB7ICgpIH1cblx0XHQgICB8ICdcXFwiJ1xuXHRcdCAgICAgICB7aWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8IF8ge2lubGluZV9jb21tZW50IGxleGJ1Zn1cbntcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxuXG4jIDMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjEzXFwyNTVcXDIxNFxcMjU1XFwyMTVcXDI1NVxcMjE3XFwyNTVcXDA4NFxcMDAwXFwyMTlcXDI1NVxcMTYwXFwwMDBcXFxuICAgIFxcMjIxXFwyNTVcXDIyMlxcMjU1XFwyMjVcXDI1NVxcMjI3XFwyNTVcXDIyOFxcMjU1XFwyMzFcXDI1NVxcMjMyXFwyNTVcXDIzM1xcMjU1XFxcbiAgICBcXDIzNFxcMjU1XFwyMzVcXDI1NVxcMjM2XFwyNTVcXDI0MFxcMDAwXFwwNDJcXDAwMVxcMTM2XFwwMDBcXDE1OVxcMDAwXFwxMTlcXDAwMVxcXG4gICAgXFwwNTFcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFwwMDFcXDAwMFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMTU3XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDAzNFxcMDAwXFwwODNcXDAwMFxcMDA2XFwwMDBcXDA5M1xcMDAwXFwxNjhcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDE3MFxcMDAxXFwyNTRcXDI1NVxcMjUzXFwyNTVcXDI0OVxcMjU1XFwwODBcXDAwMFxcMjUyXFwyNTVcXDI1MVxcMjU1XFwwMzlcXDAwMlxcXG4gICAgXFwwOTdcXDAwMlxcMjExXFwwMDJcXDAxM1xcMDAzXFwxMjdcXDAwM1xcMjQ3XFwyNTVcXDIxMlxcMDAyXFwyNDFcXDI1NVxcMTQyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDNcXDE1NVxcMDAxXFwxNzRcXDAwMlxcMTE3XFwwMDNcXDEzOFxcMDAwXFwyMzhcXDI1NVxcMTg1XFwwMDNcXDAwOVxcMDA0XFxcbiAgICBcXDA2N1xcMDA0XFwyMjBcXDI1NVxcMTQ3XFwwMDRcXDI0N1xcMDAxXFwyNTNcXDI1NVxcMjIzXFwwMDJcXDI1NVxcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjI1XFwwMDJcXDE3OFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzOVxcMDAyXFwyNTVcXDI1NVxcMDA1XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDAwNlxcMDAwXFwxNDNcXDAwM1xcMDA0XFwwMDVcXDI1MVxcMjU1XFwxMDFcXDAwMFxcMjUzXFwyNTVcXDA5N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMjU0XFwyNTVcXDI1MlxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDM5XFwwMDBcXDA0MlxcMDAwXFwwMjZcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMjlcXDAwMFxcMDMyXFwwMDBcXDAyNVxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMzhcXDAwMFxcMDI3XFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDZcXDAwMFxcMDI4XFwwMDBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDA3XFwwMDBcXDAzNlxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAzM1xcMDAwXFwwMjJcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDMwXFwwMDBcXDAyOVxcMDAwXFwwMzRcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMzFcXDAwMFxcMDM3XFwwMDBcXDA1NFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE0XFwwMDBcXDAzNVxcMDAwXFwwMTNcXDAwMFxcMDA1XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNjZcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNDVcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDU2XFwwMDBcXDA1MVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNjlcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMzRcXDAwMFxcMDA1XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDQ0XFwwMDBcXDA4NVxcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwMzRcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjFcXDAwMFxcMDIwXFwwMDBcXDA2MFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwNDdcXDAwMFxcMDY3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgyXFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwxMzhcXDAwMFxcMjUyXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcMDAwXFwwMDJcXDAwMVxcMDAzXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA0ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmKVxuIyA2NDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChBTkQpXG4jIDY0NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKE9SKVxuIyA2NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAoS0FQUEFfTFJBUilcbiMgNjU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyA1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoS0FQUEFfUkFSKVxuIyA2NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKERJRkYpXG4jIDY3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDcgLT5cbmxldFxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBzXG4jIDY3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChtYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgKVxuIyA3MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYlxuIyA3MDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgNzM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoVFlQRSlcbiMgNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNFTUlDT0xPTilcbiMgNzQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cilcbiMgNzU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTIgLT5cbiMgMTEyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyA3NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMyAtPlxuIyAxMTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE0IC0+XG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDc3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE1IC0+XG5sZXRcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIG5cbiMgNzc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICh0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgNzg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTYgLT5cbmxldFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgZlxuIyA3OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikpXG4jIDc5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE3IC0+XG5sZXRcbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA4MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTEFCRUwoeCkpXG4jIDgwNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE4IC0+XG5sZXRcbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICBzdHJcbiMgODEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChrZXl3b3JkX29yX2lkIHN0cilcbiMgODE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTkgLT5cbiMgMTI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEFUKVxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMCAtPlxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ09NTUEpXG4jIDgyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIxIC0+XG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9QQVIpXG4jIDgyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIyIC0+XG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9QQVIpXG4jIDgzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIzIC0+XG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9DVVIpXG4jIDgzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI0IC0+XG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9DVVIpXG4jIDg0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI1IC0+XG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQSVBFKVxuIyA4NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNiAtPlxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRE9UKVxuIyA4NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNyAtPlxuIyAxMzIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUExVUylcbiMgODU5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjggLT5cbiMgMTMzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1VTFQpXG4jIDg2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI5IC0+XG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNSU5VUylcbiMgODY5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzAgLT5cbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBPVylcbiMgODc0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzEgLT5cbiMgMTM2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERJVilcbiMgODc5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzIgLT5cbiMgMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNNQUxMRVIpXG4jIDg4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMzIC0+XG4jIDEzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChHUkVBVEVSKVxuIyA4ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNCAtPlxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRVFVQUwpXG4jIDg5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyA5MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNiAtPlxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfTE5LKVxuIyA5MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNyAtPlxubGV0XG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgc1xuIyA5MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM4IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9XTEQpXG4jIDk0MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM5IC0+XG4jIDE2MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9TRU1JKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MCAtPlxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAodG9rZW4gbGV4YnVmKVxuIyA5NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MSAtPlxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAocmVhY2hfZW9mIGxleGJ1ZjsgRU9GKVxuIyA5NTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MiAtPlxubGV0XG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIClcbiMgOTczIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIDY3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpKVxuIyA5ODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZilcbiMgOTkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk5NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1ZilcbiMgMTAwMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGNvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiA3NFxuYW5kIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyAxMDE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyAxMDE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoRU9GKVxuIyAxMDI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyAxMDI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIDgzXG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTg4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA0MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICggKCkgKVxuIyAxMDQ2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDE5NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xuXG4jIDEwODYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2F0YWxvZyA9IEtmaWxlcy5jcmVhdGUgKClcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqIGludCAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IC0+IGJveFxuXG5sZXQgcmVwbHkgcG9zdCB3cml0ZV92IGlkIHYgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpO1xuICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfdlxuICAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9saXN0IFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgYiB2KTtcbiAgICAgICAgICBdKVxuICAgICAgKClcbiAgaW5cbiAgcG9zdCBtZXNzYWdlXG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW1zID0gSnNvblV0aWwud3JpdGVfbGlzdCBLZmlsZXMud3JpdGVfY2F0YWxvZ19pdGVtXG5cbmxldCBsaWZ0X2Fuc3dlciA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciB0ZXh0IC0+XG4gICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgIFsgeyBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7IHNldmVyaXR5ID0gTG9ncy5FcnJvcjsgdGV4dCB9IF1cblxubGV0IG9uX21lc3NhZ2UgeWllbGQgcG9zdCA9XG4gIGxldCBjdXJyZW50X2lkID0gcmVmIE5vbmUgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEx3dC5iaW5kXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHN0IGIgbXNnX2lkIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBTb21lIG1zZ19pZCBpblxuICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyAoZnVuIHN0IGIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuY2F0YWxvZyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKENhdGFsb2csIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBLZmlsZXMuZmlsZV9jcmVhdGUgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlR2V0XCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZ2V0IH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEluZm8sIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlTW92ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVVcGRhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZURlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2RlbGV0ZSB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdFBhcnNlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LmJpbmQgKEtmaWxlcy5wYXJzZSB5aWVsZCBjYXRhbG9nKSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQXN0LCBtc2dfaWQsIG91dCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RPdmVyd3JpdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IEtmaWxlcy5vdmVyd3JpdGUgaWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoQlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm90aGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJJbnZhbGlkIGRpcmVjdGl2ZTogXCIgXiB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKSkpKVxuICAgICAgICAgICAgICAgICAgc3QgYikpXG4gICAgICAgICAgIHRleHQpXG4gICAgICAgIChmdW4gYW5zd2VyIC0+XG4gICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBOb25lIGluXG4gICAgICAgICAgbWF0Y2ggYW5zd2VyIHdpdGhcbiAgICAgICAgICB8IEIgKENhdGFsb2csIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCB3cml0ZV9jYXRhbG9nX2l0ZW1zIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChOb3RoaW5nLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChBc3QsIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEluZm8sIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICAgIG1zZ19pZCB4KVxuICAgIHdpdGggZSAtPlxuICAgICAgKG1hdGNoICFjdXJyZW50X2lkIHdpdGhcbiAgICAgIHwgU29tZSBtc2dfaWQgLT5cbiAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWRcbiAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJFeGNlcHRpb24gcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlO1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBdKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgfCBZb2pzb24uSnNvbl9lcnJvciB4IC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgICh4IF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKFwidW5leHBlY3RlZCBleGNlcHRpb246IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGVcbiAgICAgICAgICAgICAgICBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBBc3RcblxubGV0IHJlYyBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiAoYWxnLCBwb3MpID1cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAobWF0Y2ggZG9tYWluIHdpdGhcbiAgICB8IFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikgLT5cbiAgICAgIGxldCBkb21haW4nLCBjY3MgPVxuICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluID9vcmlnaW4gYXN0XG4gICAgICBpblxuICAgICAgbGV0IG91dF9jY3MgPSBMaXN0Lm1hcCAoZnVuICh4LCBfKSAtPiBBcnJheS5tYXAgZnN0IHgpIGNjcyBpblxuICAgICAgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluJyksIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBvdXRfY2NzLCBwb3MpXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoXCJUaGVvcml0aWNhbGx5IHB1cmUgYWxnX2V4cHIgaGFzIGEgbWl4dHVyZVwiLCBwb3MpKSlcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuQUxHX1ZBUiBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPiBkb21haW4sIChBbGdfZXhwci5UT0tFTl9JRCBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wIC0+IGRvbWFpbiwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCwgcG9zKVxuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gZG9tYWluLCAoQWxnX2V4cHIuQ09OU1QgbiwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGxldCBkb21haW4nLCBjb25kJyA9XG4gICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gY29uZFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCB5ZXMnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIHllcyBpblxuICAgIGxldCBkb21haW4nJycsIG5vJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJycgbm8gaW5cbiAgICBkb21haW4nJycsIChBbGdfZXhwci5JRiAoY29uZCcsIHllcycsIG5vJyksIHBvcylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNhbm5vdCBkZWFsIHdpdGggZGVyaXZhdGl2ZSBpbiBleHByZXNzaW9uc1wiLCBwb3MpKVxuXG5hbmQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluID0gZnVuY3Rpb25cbiAgfCBBbGdfZXhwci5UUlVFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuVFJVRSwgcG9zKVxuICB8IEFsZ19leHByLkZBTFNFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuRkFMU0UsIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiAoYWxnLCBwb3MpID1cbiAgc25kIEBAIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gTm9uZSAoYWxnLCBwb3MpXG5cbmxldCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIChhbGdfZXhwciwgaWQpIChkb21haW4sIG91dCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChhbGcsIGlkKSA6OiBvdXQpXG4gICAgbCAoZG9tYWluLCBbXSlcblxuKCogdHJhbnNmb3JtIGFuIExLYXBwYSBydWxlIGludG8gYSBQcmltaXRpdmVzIHJ1bGUgKilcbmxldCBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgKHJ1bGUsIF8pID1cbiAgbGV0IGRvbWFpbicsIGRlbHRhX3Rva3MgPVxuICAgIHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICBydWxlLkxLYXBwYS5yX2RlbHRhX3Rva2Vuc1xuICBpblxuICAoKiBsZXQgb25lX3NpZGUgc3ludGF4X3JlZiBsYWJlbCAoZG9tYWluLGRlcHNfbWFjaGluZXJ5LHVuYXJ5X2NjcyxhY2MpXG4gICAgICAgcmF0ZSB1bmFyeV9yYXRlIGxocyByaHMgcm0gYWRkID0qKVxuICBsZXQgb3JpZ2luLCBkZXBzID1cbiAgICBtYXRjaCBkZXBzX21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgKG8sIGQpIC0+IFNvbWUgbywgU29tZSBkXG4gIGluXG4gIGxldCB1bmFyeV9pbmZvcyA9XG4gICAgbGV0IGNycCA9XG4gICAgICBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcnVsZS5MS2FwcGEucl9yYXRlXG4gICAgaW5cbiAgICBtYXRjaCBydWxlLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyAtPiBjcnAsIE5vbmVcbiAgICB8IFNvbWUgKCgoXywgcG9zKSBhcyByYXRlKSwgZGlzdCkgLT5cbiAgICAgIGxldCBkaXN0JyA9XG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgIGxldCBkJywgXyA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkIGluXG4gICAgICAgICAgU29tZSBkJ1xuICAgICAgaW5cbiAgICAgIGxldCB1bnJhdGUgPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcmF0ZSBpblxuICAgICAgZnVuIGNjcyAtPlxuICAgICAgICAobWF0Y2ggQXJyYXkubGVuZ3RoIGNjcyB3aXRoXG4gICAgICAgIHwgMCB8IDEgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF90ZXh0IGZcbiAgICAgICAgICAgICAgICAgIFwiVXNlbGVzcyBtb2xlY3VsYXIgYW1iaWd1aXR5LCB0aGUgcnVsZXMgaXMgYWx3YXlzIGNvbnNpZGVyZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhcyB1bmFyeS5cIilcbiAgICAgICAgICBpblxuICAgICAgICAgIHVucmF0ZSwgTm9uZVxuICAgICAgICB8IDIgLT4gY3JwLCBTb21lICh1bnJhdGUsIGRpc3QnKVxuICAgICAgICB8IG4gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJVbmFyeSBydWxlIGRvZXMgbm90IGRlYWwgd2l0aCBcIiBeIHN0cmluZ19vZl9pbnQgblxuICAgICAgICAgICAgICAgICBeIFwiIGNvbm5lY3RlZCBjb21wb25lbnRzLlwiLFxuICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBidWlsZCBkZXBzIChvcmlnaW4sIGNjcywgc3ludGF4LCAobmVnLCBwb3MpKSA9XG4gICAgbGV0IGNjcycgPSBBcnJheS5tYXAgZnN0IGNjcyBpblxuICAgIGxldCByYXRlLCB1bnJhdGUgPSB1bmFyeV9pbmZvcyBjY3MnIGluXG4gICAgKCBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICBtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG8gLT4gb1xuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB4JyA9XG4gICAgICAgICAgICBtYXRjaCB1bnJhdGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHhcbiAgICAgICAgICAgIHwgU29tZSAodXIsIF8pIC0+IEFsZ19leHByLmFkZF9kZXAgeCBvcmlnaW4gdXJcbiAgICAgICAgICBpblxuICAgICAgICAgIEFsZ19leHByLmFkZF9kZXAgeCcgb3JpZ2luIHJhdGUpXG4gICAgICAgIGRlcHMsXG4gICAgICB7XG4gICAgICAgIFByaW1pdGl2ZXMudW5hcnlfcmF0ZSA9IHVucmF0ZTtcbiAgICAgICAgUHJpbWl0aXZlcy5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gY2NzJztcbiAgICAgICAgUHJpbWl0aXZlcy5yZW1vdmVkID0gbmVnO1xuICAgICAgICBQcmltaXRpdmVzLmluc2VydGVkID0gcG9zO1xuICAgICAgICBQcmltaXRpdmVzLmRlbHRhX3Rva2VucyA9IGRlbHRhX3Rva3M7XG4gICAgICAgIFByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgPSBzeW50YXhfcmVmO1xuICAgICAgICBQcmltaXRpdmVzLmluc3RhbnRpYXRpb25zID0gc3ludGF4O1xuICAgICAgfSApXG4gIGluXG4gIGxldCBydWxlX21peHR1cmVzLCAoZG9tYWluJywgb3JpZ2luJykgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgP29yaWdpbiBydWxlLkxLYXBwYS5yX21peFxuICAgICAgcnVsZS5MS2FwcGEucl9jcmVhdGVkXG4gIGluXG4gIGxldCBkZXBzX2FsZ3MnLCBydWxlc19sID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gciAoZGVwc19hbGdzLCBvdXQpIC0+XG4gICAgICAgIGxldCBkZXBzX2FsZ3MnLCByJycgPSBidWlsZCBkZXBzX2FsZ3MgciBpblxuICAgICAgICBkZXBzX2FsZ3MnLCByJycgOjogb3V0KVxuICAgICAgcnVsZV9taXh0dXJlcyAoZGVwcywgW10pXG4gIGluXG4gICggZG9tYWluJyxcbiAgICAobWF0Y2ggb3JpZ2luJyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbyAtPlxuICAgICAgU29tZVxuICAgICAgICAoIG8sXG4gICAgICAgICAgbWF0Y2ggZGVwc19hbGdzJyB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcInVnbHkgRXZhbC5ydWxlX29mX2FzdFwiICkpLFxuICAgIHJ1bGVzX2wgKVxuXG5sZXQgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZGVwcyByZXMgPVxuICBsZXQgZG9tYWluLCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGNvbnQpIGFsZ19leHByIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBhbGdfcG9zIDo6IGNvbnQpXG4gICAgICAoZG9tYWluLCBbXSkgcmVzLm9ic2VydmFibGVzXG4gIGluXG4gIGlmIExpc3QuZXhpc3RzIChBbGdfZXhwci5oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWU6ZmFsc2UgYWxnX2RlcHMpIG91dCB0aGVuXG4gICAgZG9tYWluLCBMaXN0LnJldiBvdXRcbiAgZWxzZVxuICAgICggZG9tYWluLFxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICAgIDo6IExpc3QucmV2IG91dCApXG5cbmxldCBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gZXggPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGVsIChkb21haW4sIG91dCkgLT5cbiAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyAtPiBkb21haW4sIFByaW1pdGl2ZXMuU3RyX3BleHByIHMgOjogb3V0XG4gICAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIGFzdF9hbGcgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYXN0X2FsZ1xuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBQcmltaXRpdmVzLkFsZ19wZXhwciBhbGcgOjogb3V0KVxuICAgIGV4IChkb21haW4sIFtdKVxuXG5sZXQgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgIGFsZ3MgcnVsZXMgKGxhYmVsLCBwb3MpIHJldl9lZmZlY3RzID1cbiAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICBpZiBvbiB0aGVuXG4gICAgICBQcmltaXRpdmVzLkNGTE9XIChTb21lIGxhYmVsLCB4LCB0ZXN0cykgOjogbFxuICAgIGVsc2VcbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKFNvbWUgbGFiZWwsIHgpIDo6IGxcbiAgaW5cbiAgbGV0IG1peCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXywgKHJ1bGUsIF8pID1cbiAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUsIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAobCwgXyksIF8gLT4gbCA9IGxhYmVsKVxuICAgICAgICAgIHJ1bGVzXG4gICAgICBpblxuICAgICAgTEthcHBhLnRvX21haW50YWluZWQgcnVsZS5MS2FwcGEucl9taXhcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sICh2YXIsIF8pID0gTGlzdC5maW5kIChmdW4gKChsLCBfKSwgXykgLT4gbCA9IGxhYmVsKSBhbGdzIGluXG4gICAgICAgICBtYXRjaCB2YXIgd2l0aFxuICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gbWl4XG4gICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgX1xuICAgICAgICAgfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICggXCJMYWJlbCAnXCIgXiBsYWJlbFxuICAgICAgICAgICAgICAgIF4gXCInIGRvZXMgbm90IHJlZmVyIHRvIGEgbm9uIGFtYmlndW91cyBLYXBwYSBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgZG9tYWluJywgY2NzID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gfm9yaWdpbiBtaXhcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpIHJldl9lZmZlY3RzIGNjc1xuICApXG5cbmxldCBlZmZlY3RzX29mX21vZGlmIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIChkb21haW4sIHJldl9lZmZlY3RzKSA9IGZ1bmN0aW9uXG4gIHwgQVBQTFkgKGFsZ19leHByLCAoKF8sIHBvcykgYXMgcGFjaykpIC0+XG4gICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgXywgZWxlbV9ydWxlcyA9XG4gICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nXG4gICAgICAgIH5zeW50YXhfcmVmOjAgcGFja1xuICAgIGluXG4gICAgbGV0IGVsZW1fcnVsZSA9XG4gICAgICBtYXRjaCBlbGVtX3J1bGVzIHdpdGhcbiAgICAgIHwgWyByIF0gLT4gclxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJBbWJpZ3VvdXMgcnVsZSBpbiBtb2RpZml0aW9uIGlzIGltcG9zc2libGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLklURVJfUlVMRSAoYWxnX3BvcywgZWxlbV9ydWxlKSA6OiByZXZfZWZmZWN0c1xuICB8IFVQREFURSAoKGksIF8pLCBhbGdfZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5VUERBVEUgKGksIGFsZ19wb3MpIDo6IHJldl9lZmZlY3RzXG4gIHwgU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgICgqd2hlbiBzcGVjaWFsaXppbmcgc25hcHNob3RzIHRvIHBhcnRpY3VsYXIgbWl4dHVyZXMsIGFkZCB2YXJpYWJsZXMgYmVsb3cqKVxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IFNUT1AgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TVE9QIHBleHByJyA6OiByZXZfZWZmZWN0c1xuICB8IENGTE9XTEFCRUwgKG9uLCBsYWIpIC0+XG4gICAgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgICAgYXN0X2FsZ3MgYXN0X3J1bGVzIGxhYiByZXZfZWZmZWN0c1xuICB8IENGTE9XTUlYIChvbiwgKGFzdCwgXykpIC0+XG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPVyAoTm9uZSwgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoTm9uZSwgeCkgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgKCBkb21haW4nLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcbiAgfCBESU4gKHJlbCwgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuRElOIChyZWwsIHBleHByJykgOjogcmV2X2VmZmVjdHNcbiAgfCBESU5PRkYgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU5PRkYgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQXN0LlBSSU5UIChwZXhwciwgcHJpbnQpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgcHJpbnQnID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgcHJpbnRcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLlBSSU5UIChwZXhwcicsIHByaW50JykgOjogcmV2X2VmZmVjdHNcbiAgfCBQTE9URU5UUlkgLT4gZG9tYWluLCBQcmltaXRpdmVzLlBMT1RFTlRSWSA6OiByZXZfZWZmZWN0c1xuICB8IFNQRUNJRVNfT0YgKG9uLCBwZXhwciwgKGFzdCwgcG9zKSkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTIChwZXhwcicsIHgsIHRlc3RzKSA6OiBsXG4gICAgICBlbHNlXG4gICAgICAgIFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgcGV4cHInIDo6IGxcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChhcnIsIF8pIC0+XG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGFyciA+IDEgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNQRUNJRVNfT0YgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBvbmUgY29ubmVjdGVkIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgY2NzXG4gICAgaW5cbiAgICAoIGRvbWFpbicnLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgbGV0IGRvbWFpbicsIHJldl9lZmZlY3RzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcClcbiAgICAgIChkb21haW4sIFtdKSBsXG4gIGluXG4gIGRvbWFpbicsIExpc3QucmV2IHJldl9lZmZlY3RzXG5cbmxldCBjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgPVxuICBlZmZlY3RzX29mX21vZGlmcyBbXSBbXSAoT3BlcmF0b3IuTU9ESUYgKC0xKSlcblxuKCogaW50ZXJ2ZW50aW9ucyB3aXRob3V0IHByZSBhbmQgcG9zdCwgYnV0IHdpdGggYWxhcm0gYXJlIG5vdCBhcHBsaWVkXG4gICBhdCBpbml0aWFsaXNhdGlvbiAqKVxubGV0IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIHggeSB6ID1cbiAgbWF0Y2ggeCwgeSwgeiB3aXRoXG4gIHwgXywgU29tZSBwLCBfIC0+IHBcbiAgfCBTb21lIF8sIE5vbmUsIE5vbmUgLT5cbiAgICBsZXQgdF92YXIgPVxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICBpblxuICAgIGxldCB0MCA9IE9wdGlvbl91dGlsLmZvbGQgKGZ1biBfIHggLT4gTmJyLkYgeCkgTmJyLnplcm8gb3ZlcndyaXRlX3QwIGluXG4gICAgbGV0IGluaXRfdCA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCB0MCkgaW5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09NUEFSRV9PUCAoT3BlcmF0b3IuR1JFQVRFUiwgdF92YXIsIGluaXRfdCkpXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSB8IFNvbWUgXywgTm9uZSwgU29tZSBfIHwgTm9uZSwgTm9uZSwgU29tZSBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuVFJVRVxuXG5sZXQgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCBhc3RfYWxncyBhc3RfcnVsZXNcbiAgICBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiByZXMgPVxuICBsZXQgZG9tYWluLCBvdXRfYWxnX2RlcHMsIF8sIGxwZXJ0LCB0cmFja2luZ19lbmFibGVkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBhbGdfZGVwcywgcF9pZCwgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQpXG4gICAgICAgICAgICgoYWxhcm0sIHByZV9leHByLCBtb2RpZl9leHByX2xpc3QsIG9wdF9wb3N0KSwgcG9zKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgaWYgTmJyLmNvbXBhcmUgbiBOYnIuemVybyA8PSAwIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcImFsYXJtIGhhcyB0byBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4wXCIsIHBvcykpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcmlnaW4gPSBPcGVyYXRvci5NT0RJRiBwX2lkIGluXG4gICAgICAgIGxldCBwcmVfZXhwcicgPSBwZXJ0X25vdF9pbml0IG92ZXJ3cml0ZV90MCBhbGFybSBwcmVfZXhwciBvcHRfcG9zdCBpblxuICAgICAgICBsZXQgZG9tYWluJywgcHJlID1cbiAgICAgICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiB+b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgcHJlX2V4cHInXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhbGdfZGVwcycgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBhbGdfZGVwc1xuICAgICAgICAgIHwgTm9uZSAtPiBBbGdfZXhwci5hZGRfZGVwX2Jvb2wgYWxnX2RlcHMgb3JpZ2luIHByZVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluLCBlZmZlY3RzID1cbiAgICAgICAgICBlZmZlY3RzX29mX21vZGlmcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgbW9kaWZfZXhwcl9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIG9wdCA9XG4gICAgICAgICAgbWF0Y2ggb3B0X3Bvc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkb21haW4sIE5vbmVcbiAgICAgICAgICB8IFNvbWUgcG9zdF9leHByIC0+XG4gICAgICAgICAgICBsZXQgZG9tYWluJywgKHBvc3QsIHBvc3RfcG9zKSA9XG4gICAgICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgICAgIHBvc3RfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGRvbWFpbicsIFNvbWUgKHBvc3QsIHBvc3RfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzX3RyYWNraW5nID1cbiAgICAgICAgICB0cmFja2luZ19lbmFibGVkXG4gICAgICAgICAgfHwgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5VUERBVEUgXyB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QUklOVCBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgcmVwZWF0ID1cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRVxuICAgICAgICAgIHwgU29tZSBwIC0+IHBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBlcnQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuYWxhcm07XG4gICAgICAgICAgICBQcmltaXRpdmVzLnByZWNvbmRpdGlvbiA9IHByZTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuZWZmZWN0ID0gZWZmZWN0cztcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucmVwZWF0O1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2s7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBkb21haW4sIGFsZ19kZXBzJywgc3VjYyBwX2lkLCBwZXJ0IDo6IGxwZXJ0LCBoYXNfdHJhY2tpbmcpXG4gICAgICAoZG9tYWluLCBhbGdfZGVwcywgMCwgW10sIGZhbHNlKVxuICAgICAgcmVzLnBlcnR1cmJhdGlvbnNcbiAgaW5cbiAgZG9tYWluLCBvdXRfYWxnX2RlcHMsIExpc3QucmV2IGxwZXJ0LCB0cmFja2luZ19lbmFibGVkXG5cbmxldCBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZW52XG4gICAgaW5pdHMgPVxuICBsZXQgaW5pdF9sLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChmdW4gKGFsZywgaW5pdF90KSBwcmVlbnYgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBBbGdfZXhwci5oYXNfbWl4IH52YXJfZGVjbHM6KE1vZGVsLmdldF9hbGcgZW52KSAoZnN0IGFsZykgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkluaXRpYWwgcXVhbnRpdGllcyBjYW5ub3QgZGVwZW5kIG9uIGEgbnVtYmVyIG9mIG9jY3VyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgIHNuZCBhbGcgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZyA9XG4gICAgICAgICAgbWF0Y2ggcmVzY2FsZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFsZ1xuICAgICAgICAgIHwgU29tZSByIC0+IEFsZ19leHByLm11bHQgYWxnIChBbGdfZXhwci5mbG9hdCByKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBpbml0X3Qgd2l0aFxuICAgICAgICB8IElOSVRfTUlYIChyYXdfbWl4LCBtaXhfcG9zKSAtPlxuICAgICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JywgYWxnJyA9XG4gICAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IHJhd19taXg7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVlbnYnJywgc3RhdGUnID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICAgcHJlZW52JyB+c3ludGF4X3JlZjowIChmYWtlX3J1bGUsIG1peF9wb3MpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgICAoZnN0IGFsZycsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgICAgfCBfLCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcImluaXRpYWwgbWl4dHVyZSAlYSBpcyBwYXJ0aWFsbHkgZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6ZmFsc2UgfnNpZ3MpXG4gICAgICAgICAgICAgICAgICAgICAgIHJhd19taXgsXG4gICAgICAgICAgICAgICAgICAgICBtaXhfcG9zICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmVlbnYnJywgc3RhdGUnXG4gICAgICAgIHwgSU5JVF9UT0sgdGtfbCAtPlxuICAgICAgICAgIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICh0a19pZCwgX3Bvc190aykgLT4gYWxnLCB0a19pZCkgdGtfbFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucztcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgIHByZWVudiB+c3ludGF4X3JlZjowXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgZmFrZV9ydWxlKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCBOYnIub25lLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICB8IF8sIF8sIF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIGluaXRzXG4gICAgICAoUGF0dGVybi5QcmVFbnYuZW1wdHkgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgaW5cbiAgaW5pdF9sXG5cbmxldCBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHZhcnMgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRfbWFwaVxuICAgIChmdW4gaSBkb21haW4gKGxibF9wb3MsIGFzdCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW46KE9wZXJhdG9yLkFMRyBpKVxuICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAobGJsX3BvcywgYWxnKSlcbiAgICBkb21haW4gKEFycmF5Lm9mX2xpc3QgdmFycylcblxubGV0IGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgIGRvbWFpbiBydWxlcyA9XG4gIG1hdGNoXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgc3ludGF4X3JlZiwgZGVwc19tYWNoaW5lcnksIGFjYykgKF8sIHJ1bGUpIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBvcmlnaW4nLCBjciA9XG4gICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgICAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgcnVsZVxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBzdWNjIHN5bnRheF9yZWYsIG9yaWdpbicsIExpc3QuYXBwZW5kIGNyIGFjYylcbiAgICAgIChkb21haW4sIDEsIFNvbWUgKE9wZXJhdG9yLlJVTEUgMCwgYWxnX2RlcHMpLCBbXSlcbiAgICAgIHJ1bGVzXG4gIHdpdGhcbiAgfCBmZG9tYWluLCBfLCBTb21lIChfLCBmYWxnX2RlcHMpLCBmcnVsZXMgLT5cbiAgICBmZG9tYWluLCBmYWxnX2RlcHMsIExpc3QucmV2IGZydWxlc1xuICB8IF8sIF8sIE5vbmUsIF8gLT4gZmFpbHdpdGggXCJUaGUgb3JpZ2luIG9mIEV2YWwuY29tcGlsZV9ydWxlcyBoYXMgYmVlbiBsb3N0XCJcblxuKCpsZXQgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3Mga2FzYV9jb250YWN0X21hcCA9XG4gICAgbGV0IHdkbCA9IExvYy5hbm5vdF93aXRoX2R1bW15IGluXG4gICAgbGV0IHNvbCA9IEFycmF5LmluaXRcbiAgICAgICAgKFNpZ25hdHVyZS5zaXplIHNpZ3MpXG4gICAgICAgIChmdW4gaSAtPiBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSAoW10sW10pKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgIChmdW4gYWdlbnRfbmFtZSBzaXRlcyAtPlxuICAgICAgICAgICBsZXQgaWRfYSA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAoZnVuIHNpdGVfbmFtZSAoc3RhdGVzLGxpbmtzKSAtPlxuICAgICAgICAgICAgICAgIGxldCBpZF9zID1cbiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIHNpdGVfbmFtZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgIHNvbC4oaWRfYSkuKGlkX3MpIDwtXG4gICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gc3RhdGUgLT4gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlkX3MgKHdkbCBzdGF0ZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSlcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcyxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZSxiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2EgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2FnZW50ICh3ZGwgYWdlbnRfbmFtZSkgc2lncyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIGIpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChpZF9hLGlkX2IpKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MpKSBzaXRlcykga2FzYV9jb250YWN0X21hcCBpblxuICAgIHNvbFxuXG4gIGxldCBpbml0X2thc2EgY2FsbGVkX2Zyb20gc2lncyByZXN1bHQgPVxuICAgIGxldCBwcmVfa2FzYV9zdGF0ZSA9IEV4cG9ydF90b19LYVNpbS5pbml0IH5jb21waWw6cmVzdWx0IH5jYWxsZWRfZnJvbSAoKSBpblxuICAgIGxldCBrYXNhX3N0YXRlLGNvbnRhY3RfbWFwID0gRXhwb3J0X3RvX0thU2ltLmdldF9jb250YWN0X21hcCBwcmVfa2FzYV9zdGF0ZSBpblxuICAgIGxldCAoKSA9IEV4cG9ydF90b19LYVNpbS5kdW1wX2Vycm9yc19saWdodCBrYXNhX3N0YXRlIGluXG4gICAgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3MgY29udGFjdF9tYXAsXG4gICAgRXhwb3J0X3RvX0thU2ltLmZsdXNoX2Vycm9ycyBrYXNhX3N0YXRlXG4qKVxubGV0IGNvbXBpbGUgfm91dHB1dHMgfnBhdXNlIH5yZXR1cm4gfnNoYXJpbmcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgID9vdmVyd3JpdGVfaW5pdCA/b3ZlcndyaXRlX3QwID9yZXNjYWxlX2luaXQgc2lnc19uZCB0a19uZCBjb250YWN0X21hcCByZXN1bHRcbiAgICA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCIrIEJ1aWxkaW5nIGluaXRpYWwgc2ltdWxhdGlvbiBjb25kaXRpb25zLi4uXCIpO1xuICBsZXQgcHJlZW52ID0gUGF0dGVybi5QcmVFbnYuZW1wdHkgc2lnc19uZCBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdmFyaWFibGUgZGVjbGFyYXRpb25zXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2EgPVxuICAgIGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnZcbiAgICAgIHJlc3VsdC5Bc3QudmFyaWFibGVzXG4gIGluXG4gIGxldCBhbGdfbmQgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdfYSBpblxuICBsZXQgYWxnX2RlcHMgPSBBbGdfZXhwci5zZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRrX25kIGFsZ19hIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1ydWxlc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19kZXBzJywgY29tcGlsZWRfcnVsZXMgPVxuICAgIGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgcHJlZW52JyByZXN1bHQuQXN0LnJ1bGVzXG4gIGluXG4gIGxldCBydWxlX25kID0gQXJyYXkub2ZfbGlzdCBjb21waWxlZF9ydWxlcyBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtaW50ZXJ2ZW50aW9uc1wiKTtcbiAgbGV0IHByZWVudiwgYWxnX2RlcHMnJywgcGVydCwgaGFzX3RyYWNraW5nID1cbiAgICBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIHJlc3VsdC52YXJpYWJsZXNcbiAgICAgIHJlc3VsdC5ydWxlcyBhbGdfZGVwcycgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYnIHJlc3VsdFxuICBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtb2JzZXJ2YWJsZXNcIik7XG4gIGxldCBwcmVlbnYsIG9icyA9XG4gICAgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdfZGVwc1xuICAgICAgcmVzdWx0XG4gIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC11cGRhdGVfZG9tYWluIGNvbnN0cnVjdGlvblwiKTtcbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIGxldCBkb21haW4sIGRvbV9zdGF0cyA9XG4gICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBwcmVlbnYgY29udGFjdF9tYXBcbiAgaW5cbiAgb3V0cHV0c1xuICAgIChEYXRhLkxvZ1xuICAgICAgIChcIlxcdCBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9ub2Rlc1xuICAgICAgIF4gXCIgKHN1YilvYnNlcnZhYmxlcyBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9uYXZfc3RlcHNcbiAgICAgICBeIFwiIG5hdmlnYXRpb24gc3RlcHNcIikpO1xuXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLmluaXQgfmZpbGVuYW1lczpyZXN1bHQuZmlsZW5hbWVzIGRvbWFpbiB0a19uZCBhbGdfbmQgYWxnX2RlcHMnJ1xuICAgICAgKEFycmF5Lm9mX2xpc3QgcmVzdWx0LnJ1bGVzLCBydWxlX25kKVxuICAgICAgKEFycmF5Lm9mX2xpc3Qgb2JzKSAoQXJyYXkub2ZfbGlzdCBwZXJ0KSBjb250YWN0X21hcFxuICBpblxuXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbml0aWFsIGNvbmRpdGlvbnNcIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgaW5pdF9sID1cbiAgICBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlOnJlc2NhbGVfaW5pdCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBjb250YWN0X21hcCBlbnZcbiAgICAgIChPcHRpb25fdXRpbC51bnNvbWUgcmVzdWx0LkFzdC5pbml0IG92ZXJ3cml0ZV9pbml0KVxuICBpblxuICByZXR1cm4gKGVudiwgaGFzX3RyYWNraW5nLCBpbml0X2wpXG5cbmxldCBidWlsZF9pbml0aWFsX3N0YXRlIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgY291bnRlciBlbnZcbiAgICB+d2l0aF90cmFjZSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIHJhbmRvbV9zdGF0ZSBpbml0X2wgPVxuICBsZXQgZ3JhcGgwID1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlclxuICBpblxuICBsZXQgc3RhdGUwID0gU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiBpblxuICBTdGF0ZV9pbnRlcnByZXRlci5pbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXJcbiAgICBncmFwaDAgc3RhdGUwIGluaXRfbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGUgfm91dHB1dHMgfnNoYXJpbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgY29udGFjdF9tYXAgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZSA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGNvbnRhY3RfbWFwJyA9IEFycmF5Lm1hcCBBcnJheS5jb3B5IGNvbnRhY3RfbWFwIGluXG4gIGxldCBlJywgXyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAoTEthcHBhX2NvbXBpbGVyLm1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpXG4gICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBjb250YWN0X21hcCcpXG4gICAgICBlIFtdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWZcbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBuIC0+XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHMgYiB4IC0+IGIgfHwgeCAhPSBjb250YWN0X21hcC4obikuKHMpKSlcbiAgICAgICAgZmFsc2UgY29udGFjdF9tYXAnXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ3JlYXRpbmcgbmV3IGxpbmsgdHlwZSBpcyBmb3JiaWRkZW5cIikpXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCBlJycgPVxuICAgIEV2YWwuY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIH5kZWJ1Z19tb2RlIH53YXJuaW5nXG4gICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudiBlJ1xuICBpblxuICBsZXQgZW52JywgZ3JhcGgnID1cbiAgICBpZiBjY19wcmVlbnYgPT0gY2NfcHJlZW52JyB0aGVuXG4gICAgICBlbnYsIGdyYXBoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZmVudiwgXyA9XG4gICAgICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgY2NfcHJlZW52JyBjb250YWN0X21hcFxuICAgICAgaW5cbiAgICAgICggTW9kZWwubmV3X2RvbWFpbiBmZW52IGVudixcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGZlbnYpXG4gICAgICAgICAgZ3JhcGhcbiAgICAgICAgICAoUHJpbWl0aXZlcy5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgZScnKSApXG4gICAgKVxuICBpblxuICBsZXQgb3N0b3AsIG9ncmFwaCwgb3N0YXRlLCBfID1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5kb19tb2RpZmljYXRpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudicgY291bnRlciBncmFwaCdcbiAgICAgIHN0YXRlIGUnJ1xuICBpblxuICBlJycsIChlbnYnLCAob3N0b3AsIG9ncmFwaCwgb3N0YXRlKSlcblxubGV0IGdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb24gY29udGFjdF9tYXBcbiAgICBlbnYgZ3JhcGggYiA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGInID1cbiAgICBMS2FwcGFfY29tcGlsZXIuYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLnRva2Vuc19maW5kZXIgZW52KSAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBiXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCAoKGInJywgcG9zX2InJykgYXMgYnBvcycnKSA9XG4gICAgRXZhbC5jb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19wcmVlbnZcbiAgICAgIGInXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBicG9zJycpIClcbiAgICApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIChNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudikgYicnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIltUXSBjYW4gb25seSBiZSB1c2VkIGluIGluZXF1YWxpdGllc1wiLCBwb3NfYicnKSlcbiAgaW5cbiAgZW52JywgZ3JhcGgnLCBiJydcblxubGV0IGZpbmRfYWxsX2VtYmVkZGluZ3MgfmRlYnVnX21vZGUgZW52IHRyID1cbiAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgbGV0IGR1bW15X2luc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnYgaW5cbiAgbGV0IGdyYXBoID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgP21vZF9jb25uZWN0aXZpdHlfc3RvcmU6Tm9uZSBkdW1teV9pbnN0YW5jZXMpXG4gICAgICAoRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM6ZmFsc2UpXG4gICAgICB0clxuICBpblxuICBsZXQgb3V0LCBfID1cbiAgICBSdWxlX2ludGVycHJldGVyLm9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggdHJcbiAgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChwLCAocm9vdCwgXykpIC0+XG4gICAgICBwLCBNYXRjaGluZy5yZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggcCByb290KVxuICAgIG91dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogSlNvbiBsYWJlbHMqKVxuKCoqKioqKioqKioqKioqKVxuXG5sZXQgYWdlbnQgPSBcImFnZW50IG5hbWVcIlxubGV0IGNvbnRhY3RtYXAgPSBcImNvbnRhY3QgbWFwXCJcbmxldCBhY2N1cmFjeV9zdHJpbmcgPSBcImFjY3VyYWN5XCJcbmxldCBkZWFkX3J1bGVzID0gXCJkZWFkIHJ1bGVzXCJcbmxldCBkZWFkX2FnZW50cyA9IFwiZGVhZCBhZ2VudHNcIlxubGV0IG1hcCA9IFwibWFwXCJcbmxldCBpbnRlcmZhY2UgPSBcImludGVyZmFjZVwiXG5sZXQgc2l0ZSA9IFwic2l0ZSBuYW1lXCJcbmxldCBzdGF0ZXNsaXN0ID0gXCJzdGF0ZXMgbGlzdFwiXG5sZXQgc2l0ZW5hbWUgPSBcInNpdGVfbmFtZVwiXG5sZXQgc2l0ZXR5cGUgPSBcInNpdGVfdHlwZVwiXG5sZXQgc2l0ZWxpbmtzID0gXCJwb3J0X2xpbmtzXCJcbmxldCBzaXRlc3RhdGVzID0gXCJwb3J0X3N0YXRlc1wiXG5sZXQgc2l0ZW5vZGVuYW1lID0gXCJub2RlX3R5cGVcIlxubGV0IHNpdGVub2RlaWQgPSBcIm5vZGVfaWRcIlxubGV0IHNpdGVub2Rlc2l0ZXMgPSBcIm5vZGVfc2l0ZXNcIlxubGV0IGh5cCA9IFwic2l0ZSBncmFwaFwiXG5sZXQgcmVmaW5lbWVudCA9IFwic2l0ZSBncmFwaCBsaXN0XCJcbmxldCBkb21haW5fbmFtZSA9IFwiZG9tYWluIG5hbWVcIlxubGV0IHJlZmluZW1lbnRzX2xpc3QgPSBcInJlZmluZW1lbnRzIGxpc3RcIlxubGV0IHJlZmluZW1lbnRfbGVtbWFzID0gXCJyZWZpbmVtZW50IGxlbW1hc1wiXG5sZXQgcnVsZV9pZCA9IFwiaWRcIlxubGV0IGFnZW50X2lkID0gXCJpZFwiXG5sZXQgbGFiZWwgPSBcImxhYmVsXCJcbmxldCBhc3QgPSBcImFzdFwiXG5sZXQgcG9zaXRpb24gPSBcImxvY2F0aW9uXCJcbmxldCBwb3NpdGlvbl9saXN0ID0gXCJsb2NhdGlvbiBsaXN0XCJcbmxldCB2YXJpYWJsZSA9IFwidmFyaWFibGVcIlxubGV0IHJ1bGUgPSBcInJ1bGVcIlxubGV0IGRpcmVjdCA9IFwiZGlyZWN0XCJcbmxldCBzaWRlX2VmZmVjdCA9IFwic2lkZSBlZmZlY3RcIlxubGV0IHNvdXJjZSA9IFwic291cmNlXCJcbmxldCB0YXJnZXRfbWFwID0gXCJ0YXJnZXQgbWFwXCJcbmxldCB0YXJnZXQgPSBcInRhcmdldFwiXG5sZXQgbG9jYXRpb25fcGFpcl9saXN0ID0gXCJsb2NhdGlvbiBwYWlyIGxpc3RcIlxubGV0IHJocyA9IFwiUkhTXCJcbmxldCBsaHMgPSBcIkxIU1wiXG5sZXQgaW5mbHVlbmNlbWFwID0gXCJpbmZsdWVuY2UgbWFwXCJcbmxldCBub2Rlc29maW5mbHVlbmNlbWFwID0gXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCJcbmxldCB3YWtldXAgPSBcIndha2UtdXAgbWFwXCJcbmxldCBpbmhpYml0aW9uID0gXCJpbmhpYml0aW9uIG1hcFwiXG5sZXQgbm9kZXMgPSBcIm5vZGVzXCJcbmxldCB0b3RhbF9zdHJpbmcgPSBcInRvdGFsXCJcbmxldCBmd2Rfc3RyaW5nID0gXCJmd2RcIlxubGV0IGJ3ZF9zdHJpbmcgPSBcImJ3ZFwiXG5sZXQgb3JpZ2luID0gXCJvcmlnaW5cIlxubGV0IGRpcmVjdGlvbiA9IFwiZGlyZWN0aW9uXCJcbmxldCBydWxlX2hpZGRlbiA9IFwiaGlkZGVuXCJcbmxldCBzY2MgPSBcInNjY1wiXG5sZXQgYWNjdXJhY3lfY20gPSBcImFjY3VyYWN5X2NtXCJcbmxldCBhY2N1cmFjeV9zY2MgPSBcImFjY3VyYWN5X3NjY1wiXG5sZXQgY29udGFjdG1hcHNjYyA9IFwiY29udGFjdCBtYXAgc2NjXCJcbmxldCBjb3VudGVyID0gXCJjb3VudGVyXCJcbmxldCBpbmYgPSBcIm1pblwiXG5sZXQgc3VwID0gXCJtYXhcIlxubGV0IGtleSA9IFwia2V5XCJcbmxldCBsb2NhbGl0eSA9IFwibG9jYWxpdHlcIlxuXG4oKioqKioqKioqKioqKioqKioqKilcbigqIEFjY3VyYWN5IGxldmVscyAqKVxuKCoqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWNjdXJhY3lfbGV2ZWwgPSBMb3cgfCBNZWRpdW0gfCBIaWdoIHwgRnVsbFxuXG5sZXQgYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaDsgRnVsbCBdXG5sZXQgY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaCBdXG5sZXQgcmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBIaWdoIF1cblxubGV0IGFjY3VyYWN5X3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBNZWRpdW0gLT4gXCJtZWRpdW1cIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBGdWxsIC0+IFwiZnVsbFwiXG5cbmxldCBhY2N1cmFjeV90b19qc29uIHggPSBKc29uVXRpbC5vZl9zdHJpbmcgKGFjY3VyYWN5X3RvX3N0cmluZyB4KVxuXG5sZXQgYWNjdXJhY3lfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImxvd1wiIC0+IFNvbWUgTG93XG4gIHwgXCJtZWRpdW1cIiAtPiBTb21lIE1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFNvbWUgSGlnaFxuICB8IFwiZnVsbFwiIC0+IFNvbWUgRnVsbFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgYWNjdXJhY3lfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2ggYWNjdXJhY3lfb2Zfc3RyaW5nIChKc29uVXRpbC50b19zdHJpbmcganNvbikgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWNjdXJhY3kgbGV2ZWxcIiwganNvbikpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBY2N1cmFjeVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWNjdXJhY3lfbGV2ZWxcblxuICBsZXQgY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTG93LCBMb3cgLT4gMFxuICAgIHwgTG93LCBfIC0+IC0xXG4gICAgfCBfLCBMb3cgLT4gMVxuICAgIHwgTWVkaXVtLCBNZWRpdW0gLT4gMFxuICAgIHwgTWVkaXVtLCBfIC0+IC0xXG4gICAgfCBfLCBNZWRpdW0gLT4gMVxuICAgIHwgSGlnaCwgSGlnaCAtPiAwXG4gICAgfCBIaWdoLCBfIC0+IC0xXG4gICAgfCBfLCBIaWdoIC0+IDFcbiAgICB8IEZ1bGwsIEZ1bGwgLT4gMFxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IEZ1bGwgLT4gRm9ybWF0LmZwcmludGYgZiBcIkZ1bGxcIlxuICAgIHwgSGlnaCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiSGlnaFwiXG4gICAgfCBNZWRpdW0gLT4gRm9ybWF0LmZwcmludGYgZiBcIk1lZGl1bVwiXG4gICAgfCBMb3cgLT4gRm9ybWF0LmZwcmludGYgZiBcIkxvd1wiXG5lbmQpXG5cbm1vZHVsZSBBY2N1cmFjeU1hcCA9IEFjY3VyYWN5U2V0TWFwLk1hcFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29udGFjdCBtYXAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29udGFjdF9tYXAgPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxubGV0IHNpdGVfdHlwZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdXG4gIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwicG9ydFwiO1xuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIHNpdGVsaW5rcyxcbiAgICAgICAgICAgICAgbWF0Y2ggcC5Vc2VyX2dyYXBoLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguTElOS1MgbCAtPlxuICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgIChmdW4gKCh4bCwgeHIpLCB5KSAtPlxuICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIGBMaXN0IFsgYEludCB4bDsgYEludCB4ciBdOyBgSW50IHkgXSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLldIQVRFVkVSIC0+IGBOdWxsXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5TT01FIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2MgWyBcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpOyBcInBvcnRfbmFtZVwiLCBgU3RyaW5nIHR5IF0gKTtcbiAgICAgICAgICAgICggc2l0ZXN0YXRlcyxcbiAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgICAgICAgICAgIHAuVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyApO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbmxldCBzaXRlX3RvX2pzb24gc2l0ZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHNpdGVuYW1lLCBKc29uVXRpbC5vZl9zdHJpbmcgc2l0ZS5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgIHNpdGV0eXBlLCBzaXRlX3R5cGVfdG9fanNvbiBzaXRlLlVzZXJfZ3JhcGguc2l0ZV90eXBlO1xuICAgIF1cblxubGV0IHNpdGVfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdIC0+IFVzZXJfZ3JhcGguQ291bnRlciBpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwicG9ydFwiOyBgQXNzb2MgbCBdIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRfbGlua3MgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVsaW5rcyBsIGluXG4gICAgICAgICBVc2VyX2dyYXBoLmxpbmtzX29mX3lvanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVzdGF0ZXMgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzdGF0ZSBsaXN0XCJcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic3RhdGVcIikpXG4gICAgICAgICAgIGpzb25cbiAgICAgICBpblxuICAgICAgIFVzZXJfZ3JhcGguUG9ydCB7IFVzZXJfZ3JhcGgucG9ydF9saW5rczsgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZSB0eXBlXCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBzaXRlX25hbWUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgc2l0ZV90eXBlID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRldHlwZSBsIGluXG4gICAgICAgICBzaXRlX3R5cGVfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICB7IFVzZXJfZ3JhcGguc2l0ZV9uYW1lOyBVc2VyX2dyYXBoLnNpdGVfdHlwZSB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKVxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbGlzdCA9IEpzb25VdGlsLm9mX2FycmF5IHNpdGVfdG9fanNvbiBsaXN0XG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2FycmF5IH5lcnJvcl9tc2c6XCJzaXRlIG5vZGUgc2l0ZXNcIiBzaXRlX29mX2pzb25cblxubGV0IHNpdGVfbm9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBub2RlIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIHNpdGVub2RlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3R5cGU7XG4gICAgICAgIHNpdGVub2Rlc2l0ZXMsIHNpdGVfbm9kZV9zaXRlc190b19qc29uIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3NpdGVzO1xuICAgICAgXVxuXG5sZXQgc2l0ZV9ub2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IG5vZGVfaWQgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jX29wdCBzaXRlbm9kZWlkIGwgaW5cbiAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV9zaXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVzaXRlcyBsIGluXG4gICAgICAgICBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3R5cGU7IFVzZXJfZ3JhcGgubm9kZV9pZDsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBjb250YWN0X21hcF90b19qc29uIGNvbnRhY3RfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9hcnJheSAoSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV9ub2RlX3RvX2pzb24pKVxuICAgICAgICAgIGNvbnRhY3RfbWFwICk7XG4gICAgXVxuXG5sZXQgY29udGFjdF9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgIChKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlcyBsaXN0XCIpXG4gICAgICAgICAgICAgICBzaXRlX25vZGVfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCpzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50KilcblxudHlwZSBzY2MgPSAoKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdCBsaXN0XG5cbmxldCBzdHJpbmdfcGFpcl90b19qc29uIChhLCBiKSA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgSnNvblV0aWwub2Zfc3RyaW5nIChhLCBiKVxuXG5sZXQgc3RyaW5nX3BhaXJfb2ZfanNvbiAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA6IHN0cmluZyAqIHN0cmluZyA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgfmVycm9yX21zZzpcInNpdGVcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlX25hbWVcIilcbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciBzdHJpbmdfcGFpcl90b19qc29uIHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvbiA6IChzdHJpbmcgKiBzdHJpbmcpICogKHN0cmluZyAqIHN0cmluZykgPVxuICBKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJib25kXCIgc3RyaW5nX3BhaXJfb2ZfanNvbiBzdHJpbmdfcGFpcl9vZl9qc29uXG4gICAganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl90b19qc29uIGxcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2JvbmRzXCIgc3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdF9vZl9saXN0c19vZl9ib25kc1wiXG4gICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvblxuXG5sZXQgc2NjX3RvX2pzb24gKGNtX2FjYywgc2NjX2FjYywgc2NjKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggY29udGFjdG1hcHNjYyxcbiAgICAgICAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgICBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3RvX2pzb24gc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvblxuICAgICAgICAgIChjbV9hY2MsIHNjY19hY2MsIHNjYykgKTtcbiAgICBdXG5cbmxldCBzY2Nfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcHNjYyBsIGluXG4gICAgICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6XCJzY2MgZGVjb21wb3NpdGlvblwiIGFjY3VyYWN5X29mX2pzb24gYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzY2MgZGVjb21wb3NpdGlvblwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAqKVxuKCoqKioqKioqKioqKioqKVxuXG50eXBlIHJ1bGVfZGlyZWN0aW9uID1cbiAgfCBEaXJlY3RfcnVsZVxuICB8IFJldmVyc2VfcnVsZVxuICB8IEJvdGhfZGlyZWN0aW9uc1xuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uXG4gIHwgVmFyaWFibGVcblxudHlwZSBydWxlID0ge1xuICBydWxlX2lkOiBpbnQ7XG4gIHJ1bGVfbGFiZWw6IHN0cmluZztcbiAgcnVsZV9hc3Q6IHN0cmluZztcbiAgcnVsZV9wb3NpdGlvbjogTG9jLnQ7XG4gIHJ1bGVfZGlyZWN0aW9uOiBydWxlX2RpcmVjdGlvbjtcbiAgcnVsZV9oaWRkZW46IGJvb2w7XG59XG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkID1cbiAgbWF0Y2ggZCB3aXRoXG4gIHwgRGlyZWN0X3J1bGUgLT4gYFN0cmluZyBcImRpcmVjdFwiXG4gIHwgUmV2ZXJzZV9ydWxlIC0+IGBTdHJpbmcgXCJyZXZlcnNlXCJcbiAgfCBCb3RoX2RpcmVjdGlvbnMgLT4gYFN0cmluZyBcImJvdGhcIlxuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uIC0+IGBTdHJpbmcgXCJkdW1teVwiXG4gIHwgVmFyaWFibGUgLT4gYFN0cmluZyBcInZhcmlhYmxlXCJcblxubGV0IGpzb25fdG9fZGlyZWN0aW9uIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBgU3RyaW5nIFwiZGlyZWN0XCIgLT4gRGlyZWN0X3J1bGVcbiAgfCBgU3RyaW5nIFwicmV2ZXJzZVwiIC0+IFJldmVyc2VfcnVsZVxuICB8IGBTdHJpbmcgXCJib3RoXCIgLT4gQm90aF9kaXJlY3Rpb25zXG4gIHwgYFN0cmluZyBcImR1bW15XCIgLT4gRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBgU3RyaW5nIFwidmFyaWFibGVcIiAtPiBWYXJpYWJsZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZSBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gcnVsZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCBydWxlLnJ1bGVfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9sYWJlbDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBydWxlLnJ1bGVfcG9zaXRpb24pO1xuICAgICAgZGlyZWN0aW9uLCBkaXJlY3Rpb25fdG9fanNvbiBydWxlLnJ1bGVfZGlyZWN0aW9uO1xuICAgICAgcnVsZV9oaWRkZW4sIEpzb25VdGlsLm9mX2Jvb2wgcnVsZS5ydWxlX2hpZGRlbjtcbiAgICBdXG5cbmxldCBqc29uX3RvX3J1bGUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBydWxlX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICBydWxlX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgcnVsZV9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgcnVsZV9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgICBydWxlX2RpcmVjdGlvbiA9IGpzb25fdG9fZGlyZWN0aW9uIChMaXN0LmFzc29jIGRpcmVjdGlvbiBsKTtcbiAgICAgICAgIHJ1bGVfaGlkZGVuID0gSnNvblV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBydWxlX2hpZGRlbiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcIiBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGVcIiwgeCkpXG5cbnR5cGUgdmFyID0ge1xuICB2YXJfaWQ6IGludDtcbiAgdmFyX2xhYmVsOiBzdHJpbmc7XG4gIHZhcl9hc3Q6IHN0cmluZztcbiAgdmFyX3Bvc2l0aW9uOiBMb2MudDtcbn1cblxubGV0IHZhcl90b19qc29uIHZhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCB2YXIudmFyX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgdmFyLnZhcl9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCB2YXIudmFyX3Bvc2l0aW9uKTtcbiAgICBdXG5cbmxldCBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHZhcl9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgdmFyX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgdmFyX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICB2YXJfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiIHZhclwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ2YXJcIiwgeCkpXG5cbnR5cGUgKCdydWxlLCAndmFyKSBpbmZsdWVuY2Vfbm9kZSA9IFJ1bGUgb2YgJ3J1bGUgfCBWYXIgb2YgJ3ZhclxudHlwZSBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPSAoKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZSAqIExvYy50KSBsaXN0XG5cbmxldCBpbmZsdWVuY2Vfbm9kZV90b19qc29uIHJ1bGVfdG9fanNvbiB2YXJfdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVmFyIGkgLT4gYEFzc29jIFsgdmFyaWFibGUsIHZhcl90b19qc29uIGkgXVxuICB8IFJ1bGUgaSAtPiBgQXNzb2MgWyBydWxlLCBydWxlX3RvX2pzb24gaSBdXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gdmFyaWFibGUgLT4gVmFyIChqc29uX3RvX3ZhciBqc29uKVxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHJ1bGUgLT4gUnVsZSAoanNvbl90b19ydWxlIGpzb24pXG4gIHwgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIk5vdCBhIGNvcnJlY3QgaW5mbHVlbmNlIG5vZGVcIiBpblxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gSnNvblV0aWwub2ZfaW50IEpzb25VdGlsLm9mX2ludFxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInJ1bGUgaWRcIikpXG4gICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJ2YXIgaWRcIikpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgIChmdW4gbG9jIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgbG9jKSkpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgc25kXG4gICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgIHgpKSlcblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uXG5cbmxldCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhclxuXG5sZXQgc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgcnVsZSAtPiBSdWxlIHJ1bGUucnVsZV9pZFxuICB8IFZhciB2YXIgLT4gVmFyIHZhci52YXJfaWRcblxubGV0IHBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgciAtPiByLnJ1bGVfcG9zaXRpb25cbiAgfCBWYXIgdiAtPiB2LnZhcl9wb3NpdGlvblxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IFJ1bGUgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZSAlaVwiIHJcbiAgICB8IFZhciByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJWYXIgJWlcIiByXG5lbmQpXG5cbm1vZHVsZSBJbmZsdWVuY2VOb2RlTWFwID0gSW5mbHVlbmNlTm9kZVNldE1hcC5NYXBcblxuKCogUmVsYXRpb25zICopXG5cbnR5cGUgJ2EgcGFpciA9ICdhICogJ2FcbnR5cGUgbG9jYXRpb24gPSBEaXJlY3Qgb2YgaW50IHwgU2lkZV9lZmZlY3Qgb2YgaW50XG5cbmxldCBkdW1wX2xvY2F0aW9uIGZtdCA9IGZ1bmN0aW9uXG4gIHwgRGlyZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaVwiIGludFxuICB8IFNpZGVfZWZmZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaSpcIiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpciBmbXQgKGEsIGIpID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiKCVhLCVhKVwiIGR1bXBfbG9jYXRpb24gYSBkdW1wX2xvY2F0aW9uIGJcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGZtdCBsID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiWyVhXVwiXG4gICAgKFBwLmxpc3QgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCI7XCIpIGR1bXBfbG9jYXRpb25fcGFpcilcbiAgICBsXG5cbmxldCBzdHJpbmdfb2ZfbGFiZWxfbGlzdCBsID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCBsXG5cbnR5cGUgaGFsZl9pbmZsdWVuY2VfbWFwID1cbiAgbG9jYXRpb24gcGFpciBsaXN0IEluZmx1ZW5jZU5vZGVNYXAudCBJbmZsdWVuY2VOb2RlTWFwLnRcblxudHlwZSBpbmZsdWVuY2VfbWFwID0ge1xuICBub2RlczogKHJ1bGUsIHZhcikgaW5mbHVlbmNlX25vZGUgbGlzdDtcbiAgcG9zaXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbiAgbmVnYXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbn1cblxuKCogTG9jYXRpb24gbGFiZWxzICopXG5sZXQgbG9jYXRpb25fdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgRGlyZWN0IGkgLT4gYEFzc29jIFsgZGlyZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG4gIHwgU2lkZV9lZmZlY3QgaSAtPiBgQXNzb2MgWyBzaWRlX2VmZmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuXG5sZXQgbG9jYXRpb25fb2ZfanNvbiA/KGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBsb2NhdGlvblwiKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gZGlyZWN0IC0+IERpcmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gc2lkZV9lZmZlY3QgLT5cbiAgICBTaWRlX2VmZmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXBcbiAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpyaHMgfmxhYjI6bGhzIGxvY2F0aW9uX3RvX2pzb25cbiAgICAgICAgICAgICBsb2NhdGlvbl90b19qc29uKSkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvblxuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImFjdGl2YXRpb24gb3IgaW5oaWJpdGlvbiBtYXBcIilcbiAgICB+bGFiX2tleTpzb3VyY2UgfmxhYl92YWx1ZTp0YXJnZXRfbWFwIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSW5mbHVlbmNlTm9kZU1hcC5vZl9qc29uIH5sYWJfa2V5OnRhcmdldCB+bGFiX3ZhbHVlOmxvY2F0aW9uX3BhaXJfbGlzdFxuICAgICAgIH5lcnJvcl9tc2c6XCJtYXAgb2YgbGlzdHMgb2YgcGFpcnMgb2YgbG9jYXRpb25zXCJcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Qgb2YgcGFpciBvZiBsb2NhdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJcIiB+bGFiMTpyaHMgfmxhYjI6bGhzXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpKSkpXG5cbigqIEluZmx1ZW5jZSBtYXAgKilcblxubGV0IG5vZGVzX2xpc3RfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG5sZXQgbm9kZXNfbGlzdF9vZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cblxubGV0IGluZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgaW5oaWJpdGlvbiwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZTtcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIG5vZGVzX2xpc3QgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIG5vZGVzb2ZpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBub2Rlc19saXN0IC0+IGBBc3NvYyBbIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gbm9kZXNfbGlzdCBdKVxuICAgICAgICAgIG5vZGVzX2xpc3QgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIG5vZGVzb2ZpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgICAgICAgICAgICh0cnkgbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpXG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxubGV0IGxvY2FsX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgbGV0IGFjY3VyYWN5LCB0b3RhbCwgYndkLCBmd2QsIG9yaWdpbl9vcHQsIGluZmx1ZW5jZV9tYXAgPSBpbmZsdWVuY2VfbWFwIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggaW5mbHVlbmNlbWFwLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBhY2N1cmFjeV9zdHJpbmcsIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3k7XG4gICAgICAgICAgICB0b3RhbF9zdHJpbmcsIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgIGZ3ZF9zdHJpbmcsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgZndkO1xuICAgICAgICAgICAgYndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICBvcmlnaW4sIEpzb25VdGlsLm9mX29wdGlvbiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gb3JpZ2luX29wdDtcbiAgICAgICAgICAgICggbWFwLFxuICAgICAgICAgICAgICAoZnVuIGluZmx1ZW5jZV9tYXAgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5vZGVzO1xuICAgICAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICggaW5oaWJpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5lZ2F0aXZlICk7XG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIGluZmx1ZW5jZV9tYXAgKTtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIG1hdGNoIGpzb24gd2l0aFxuICAgICAgIHwgYEFzc29jIGwnIC0+XG4gICAgICAgICBsZXQgYWNjdXJhY3kgPSBhY2N1cmFjeV9vZl9qc29uIChMaXN0LmFzc29jIGFjY3VyYWN5X3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCB0b3RhbCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyB0b3RhbF9zdHJpbmcgbCcpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuYnVpbGRfbXNnIFwiZndkIHJhZGl1c1wiIGluXG4gICAgICAgICBsZXQgZndkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIGZ3ZF9zdHJpbmcgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcImJ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBid2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2Mgb3JpZ2luIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbmZsdWVuY2VfbWFwID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG1hcCBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBhY2N1cmFjeSwgdG90YWwsIGZ3ZCwgYndkLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGRlYWRfcnVsZXMgPSBydWxlIGxpc3RcblxubGV0IGRlYWRfcnVsZXNfdG9fanNvbiBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9ydWxlcywgSnNvblV0aWwub2ZfbGlzdCBydWxlX3RvX2pzb24ganNvbiBdXG5cbmxldCBkZWFkX3J1bGVzX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9ydWxlcyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX3J1bGUganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9ydWxlcywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX3J1bGVzLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgYWdlbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGFnZW50X2tpbmQgPSB7XG4gIGFnZW50X2lkOiBpbnQ7XG4gIGFnZW50X2FzdDogc3RyaW5nO1xuICBhZ2VudF9wb3NpdGlvbjogTG9jLnQgbGlzdDtcbn1cblxubGV0IGpzb25fdG9fYWdlbnRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFnZW50X2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIGFnZW50X2lkIGwpO1xuICAgICAgICAgYWdlbnRfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIGFnZW50X3Bvc2l0aW9uID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5IGxpc3RcIilcbiAgICAgICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgICAgICBqc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbl9saXN0IGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWdlbnQga2luZFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJhZ2VudCBraW5kXCIsIHgpKVxuXG5sZXQgYWdlbnRfa2luZF90b19qc29uIGFnZW50X2tpbmQgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBhZ2VudF9pZCwgSnNvblV0aWwub2ZfaW50IGFnZW50X2tpbmQuYWdlbnRfaWQ7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBhZ2VudF9raW5kLmFnZW50X2FzdDtcbiAgICAgICggcG9zaXRpb25fbGlzdCxcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChmdW4gYSAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGEpKVxuICAgICAgICAgIGFnZW50X2tpbmQuYWdlbnRfcG9zaXRpb24gKTtcbiAgICBdXG5cbnR5cGUgZGVhZF9hZ2VudHMgPSBhZ2VudF9raW5kIGxpc3RcblxubGV0IGpzb25fb2ZfZGVhZF9hZ2VudHMganNvbiA9XG4gIGBBc3NvYyBbIGRlYWRfYWdlbnRzLCBKc29uVXRpbC5vZl9saXN0IGFnZW50X2tpbmRfdG9fanNvbiBqc29uIF1cblxubGV0IGpzb25fdG9fZGVhZF9hZ2VudHMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9hZ2VudHMgLT5cbiAgICAodHJ5IEpzb25VdGlsLnRvX2xpc3QganNvbl90b19hZ2VudF9raW5kIGpzb25cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfYWdlbnRzLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9hZ2VudHMsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9ucyAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IChydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdFxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwicnVsZVwiIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIgcnVsZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInMxXCIgfmxhYjI6XCJzMlwiIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICAgICAgIEpzb25VdGlsLm9mX3N0cmluZykpKVxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9ucyBsaXN0XCJcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9uXCIgfmxhYjE6XCJydWxlXCJcbiAgICAgICB+bGFiMjpcInBvdGVudGlhbC1jb250ZXh0c1wiIGpzb25fdG9fcnVsZVxuICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zXCJcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwidHJhbnNpdGlvblwiIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCJcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKSlcblxuKCoqKioqKioqKioqKioqKilcbigqIENvbnN0cmFpbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbmRpbmdfc3RhdGUgPVxuICB8IEZyZWVcbiAgfCBXaWxkY2FyZFxuICB8IEJvdW5kX3RvX3Vua25vd25cbiAgfCBCb3VuZF90byBvZiBpbnRcbiAgfCBCaW5kaW5nX3R5cGUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgYWdlbnQgPVxuICBzdHJpbmdcbiAgKiAoc3RyaW5nXG4gICAgKiBzdHJpbmcgb3B0aW9uXG4gICAgKiBiaW5kaW5nX3N0YXRlIG9wdGlvblxuICAgICogKGludCBvcHRpb24gKiBpbnQgb3B0aW9uKSBvcHRpb24pXG4gICAgbGlzdFxuXG50eXBlICdzaXRlX2dyYXBoIGxlbW1hID0geyBoeXA6ICdzaXRlX2dyYXBoOyByZWZpbmVtZW50OiAnc2l0ZV9ncmFwaCBsaXN0IH1cbnR5cGUgJ3NpdGVfZ3JhcGggcG9seV9jb25zdHJhaW50c19saXN0ID0gKHN0cmluZyAqICdzaXRlX2dyYXBoIGxlbW1hIGxpc3QpIGxpc3RcblxubGV0IGxlbW1hX3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGpzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IHNpdGVfZ3JhcGhfdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IHNpdGVfZ3JhcGhfdG9fanNvbilcbiAgICAoanNvbi5oeXAsIGpzb24ucmVmaW5lbWVudClcblxubGV0IGxlbW1hX29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiA9XG4gICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpoeXAgfmxhYjI6cmVmaW5lbWVudCB+ZXJyb3JfbXNnOlwibGVtbWFcIlxuICAgICAgc2l0ZV9ncmFwaF9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwicmVmaW5lbWVudHMgbGlzdFwiIHNpdGVfZ3JhcGhfb2ZfanNvbilcbiAgICAgIGpzb25cbiAgaW5cbiAgeyBoeXAgPSBhOyByZWZpbmVtZW50ID0gYiB9XG5cbmxldCBnZXRfaHlwIGggPSBoLmh5cFxubGV0IGdldF9yZWZpbmVtZW50IHIgPSByLnJlZmluZW1lbnRcbmxldCBmcmVlID0gXCJcIlxubGV0IHdpbGRjYXJkID0gXCI/XCJcbmxldCBib3VuZCA9IFwiIV9cIlxubGV0IGJvbmRfaWQgPSBcImJvbmQgaWRcIlxubGV0IGJvdW5kX3RvID0gXCJib3VuZCB0b1wiXG5sZXQgYmluZGluZ190eXBlID0gXCJiaW5kaW5nIHR5cGVcIlxubGV0IHByb3AgPSBcInByb3BlcnR5IHN0YXRlXCJcbmxldCBiaW5kID0gXCJiaW5kaW5nIHN0YXRlXCJcbmxldCBiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IGZyZWVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IG1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sID0gXCJcIlxubGV0IHdpbGRjYXJkX2JhY2tlbmRfc3ltYm9sID0gXCIjXCJcbmxldCBib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm9sID0gXCJfXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmFja2VuZF9zeW1ib2wgPSBcIn5cIlxubGV0IGludGVybmFsX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuZF9zeW1ib2wgPSBcIixcIlxubGV0IGJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwiW1wiXG5sZXQgYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJdXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ7XCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwifVwiXG5sZXQgY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5bWJvbCA9IFwiIC4uIFwiXG5sZXQgb3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJbXCJcbmxldCBjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJdXCJcbmxldCBvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IGNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IHBsdXNfaW5maW5pdHlfc3ltYm9sID0gXCIrb29cIlxubGV0IG1pbnVzX2luZmluaXR5X3N5bWJvbCA9IFwiLW9vXCJcblxubGV0IHN0cmluZ19vZl9iaW5kaW5nX3R5cGUgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWVcbiAgICAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiJXMlcyVzXCIgc2l0ZV9uYW1lIGJpbmRpbmdfdHlwZV9zeW1ib2wgYWdlbnRfbmFtZVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gZnJlZSAtPiBGcmVlXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IHdpbGRjYXJkIC0+IFdpbGRjYXJkXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IGJvdW5kX3RvIC0+IEJvdW5kX3RvX3Vua25vd25cbiAgfCBgQXNzb2MgWyAocywgaikgXSB3aGVuIHMgPSBib25kX2lkIC0+XG4gICAgbGV0IGkgPSBKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgaWRcIiBqIGluXG4gICAgbGV0IGJvbmRfaW5kZXggPSBpIGluXG4gICAgQm91bmRfdG8gYm9uZF9pbmRleFxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJpbmRpbmdfdHlwZSAtPlxuICAgIGxldCBhZ2VudF9uYW1lLCBzaXRlX25hbWUgPVxuICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgfmVycm9yX21zZzpcImJpbmRpbmcgdHlwZVwiXG4gICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic2l0ZSBuYW1lXCIpXG4gICAgICAgIGpcbiAgICBpblxuICAgIEJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwid3JvbmcgYmluZGluZyBzdGF0ZVwiLCB4KSlcblxubGV0IGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZSAtPiBgQXNzb2MgWyBmcmVlLCBgTnVsbCBdXG4gIHwgV2lsZGNhcmQgLT4gYEFzc29jIFsgd2lsZGNhcmQsIGBOdWxsIF1cbiAgfCBCb3VuZF90b191bmtub3duIC0+IGBBc3NvYyBbIGJvdW5kX3RvLCBgTnVsbCBdXG4gIHwgQm91bmRfdG8gYm9uZF9pbmRleCAtPiBgQXNzb2MgWyBib25kX2lkLCBKc29uVXRpbC5vZl9pbnQgYm9uZF9pbmRleCBdXG4gIHwgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpIC0+XG4gICAgbGV0IGogPVxuICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgIEpzb25VdGlsLm9mX3N0cmluZyAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgYEFzc29jIFsgYmluZGluZ190eXBlLCBqIF1cblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cCB+ZXJyb3JfbXNnOlwid3JvbmcgY291bnRlciBzdGF0ZVwiXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG5cbmxldCBjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmluZiB+bGFiMjpzdXBcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcblxubGV0IGludGVyZmFjZV9saWdodF90b19qc29uIGludGYgPVxuICBKc29uVXRpbC5vZl9tYXAgfmxhYl9rZXk6c2l0ZSB+bGFiX3ZhbHVlOnN0YXRlc2xpc3RcbiAgICB+Zm9sZDooZnVuIGYgYSB4IC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgKGssIGEsIGIsIGMpIC0+IGYgayAoYSwgYiwgYykgbGlzdCkgeCBhKVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBzaXRlIC0+IEpzb25VdGlsLm9mX3N0cmluZyBzaXRlKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbilcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbikpXG4gICAgaW50ZlxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdCB+ZXJyb3JfbXNnOmludGVyZmFjZVxuICAgIH5lbXB0eTpbXVxuICAgIH5hZGQ6KGZ1biBrIChhLCBiLCBjKSBsaXN0IC0+IChrLCBhLCBiLCBjKSA6OiBsaXN0KVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBqc29uIC0+IEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnNpdGUganNvbilcbiAgICAoKmpzb24gLT4gJ3ZhbHVlKilcbiAgICAoSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOnByb3AgfmxhYjI6YmluZCB+bGFiMzpjb3VudGVyXG4gICAgICAgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgc3RhdGVcIlxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnByb3ApKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uKSlcbiAgICBqc29uXG5cbmxldCBhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIH5lcnJvcl9tc2c6XCJhZ2VudFwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIGludGVyZmFjZV9vZl9qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0XG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImNvbnN0cmFpbnRzIGxpc3RcIiB+bGFiMTpkb21haW5fbmFtZVxuICAgICAgIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhYnN0cmFjdCBkb21haW5cIilcbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCAobGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24pKSlcblxubGV0IGxlbW1hc19saXN0X29mX2pzb25fZ2VuIGludGVyZmFjZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyByZWZpbmVtZW50X2xlbW1hcyBsIGluXG4gICAgICAgcG9seV9jb25zdHJhaW50c19saXN0X29mX2pzb25cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzaXRlIGdyYXBoXCJcbiAgICAgICAgICAgIChhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvblxuXG5sZXQgYWdlbnRfZ2VuX3RvX2pzb24gaW50ZXJmYWNlX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBpbnRlcmZhY2VfdG9fanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmRvbWFpbl9uYW1lIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAobGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24pKSlcbiAgICBjb25zdHJhaW50c1xuXG5sZXQgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIHJlZmluZW1lbnRfbGVtbWFzLFxuICAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbikpXG4gICAgICAgICAgY29uc3RyYWludHMgKTtcbiAgICBdXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gY29uc3RyYWludHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByYXdfdmVyc2lvbl9zdHJpbmcgPSBcIiRGb3JtYXQ6JUQkXCJcblxubGV0IGV4dHJhY3RfdGFnX3JlID1cbiAgUmUuY29tcGlsZVxuICAgIChSZS5zZXEgWyBSZS5zdHIgXCJ0YWc6IFwiOyBSZS5ncm91cCAoUmUucmVwIChSZS5jb21wbCBbIFJlLmNoYXIgJywnIF0pKSBdKVxuXG5sZXQgdmVyc2lvbl9zdHJpbmcgPVxuICBtYXRjaCBSZS5leGVjX29wdCBleHRyYWN0X3RhZ19yZSByYXdfdmVyc2lvbl9zdHJpbmcgd2l0aFxuICB8IFNvbWUgZ3IgLT4gUmUuR3JvdXAuZ2V0IGdyIDFcbiAgfCBOb25lIC0+IEdpdF92ZXJzaW9uLnRcblxubGV0IHZlcnNpb25fbXNnID0gXCJLYXBwYSBTaW11bGF0b3I6IFwiIF4gdmVyc2lvbl9zdHJpbmdcbmxldCB2ZXJzaW9uX2thc2FfZnVsbF9uYW1lID0gXCJLYXBwYSBTdGF0aWMgQW5hbHl6ZXIgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHZlcnNpb25fa2FkZV9mdWxsX25hbWUgPSBcIkthREUgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHRrX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4iLCIoKiBTaW1pbGFyIHRvIE9DYW1sJ3Mgc3RhbmRhcmQgQXJnIG1vZHVsZSBidXQgd2l0aCBzb21lIGltcHJvdmVtZW50czpcbiAgIC0gb3B0aW9ucyBhcmUgY2xhc3NpZmllZCB3aXRoIHJlc3BlY3QgdG8gY2F0ZWdvcmllc1xuICAgLSBuZW9waHl0ZSAvIGV4cGVydCBtb2Rlc1xuICAgLSBoaWRkZW4gb3B0aW9uc1xuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWMgdHlwZSBpcyByZWFsbHkgZGlmZmVyZW50LlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuKilcblxubGV0IGV4cGVydF9tb2RlID0gcmVmIGZhbHNlICgqIHNob3dzIGV4cGVydCBvcHRpb25zICopXG5sZXQgZGV2X21vZGUgPSByZWYgZmFsc2UgKCogYWNjZXB0IF9BTExfIG9wdGlvbnMgKilcblxuKCogVHlwZXMgKilcbigqICoqKioqICopXG5cbnR5cGUga2V5ID0gc3RyaW5nICgqIGNvbW1hbmQtbGluZSBhcmd1bWVudCAqKVxudHlwZSBtc2cgPSBzdHJpbmcgKCogaGVscCBtZXNzYWdlICopXG5cbigqIHR5cGUgb2Ygb3B0aW9uICopXG50eXBlIGxldmVsID1cbiAgfCBOb3JtYWwgKCogYWx3YXlzIHNob3duICYgYWNjZXB0ZWQgKilcbiAgfCBFeHBlcnQgKCogc2hvd24gaW4gZXhwZXJ0IG9yIGRldmVsb3BwZXIgbW9kZSwgYWx3YXlzIGFjY2VwdGVkICopXG4gIHwgRGV2ZWxvcHBlciAoKiBvbmx5IHNob3duICYgYWNjZXB0ZWQgaW4gZGV2ZWxvcHBlciBtb2RlICopXG4gIHwgSGlkZGVuICgqIG5ldmVyIHNob3duICopXG5cbm1vZHVsZSBTdHJpbmdJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogbGV2ZWwgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGIsIF8pIChjLCBkLCBfKSA9XG4gICAgbGV0IGNtcCA9IGNvbXBhcmUgYiBkIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBjb21wYXJlIGEgY1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG4gIGxldCBwcmludCBmbXQgKGEsIGIsIF8pID0gRm9ybWF0LmZwcmludGYgZm10IFwiJXM6JWlcIiBhIGJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nSW50U2V0TWFwID0gU2V0TWFwLk1ha2UgKFN0cmluZ0ludClcbm1vZHVsZSBTdHJpbmdJbnRNYXAgPSBTdHJpbmdJbnRTZXRNYXAuTWFwXG5tb2R1bGUgU3RyaW5nSW50U2V0ID0gU3RyaW5nSW50U2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ1NldE1hcCA9IE1vZHMuU3RyaW5nU2V0TWFwXG5tb2R1bGUgU3RyaW5nU2V0ID0gU3RyaW5nU2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ01hcCA9IFN0cmluZ1NldE1hcC5NYXBcblxubGV0IG1pbl9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb3JtYWwsIF8gfCBfLCBOb3JtYWwgLT4gTm9ybWFsXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBIaWRkZW4sIEhpZGRlbiAtPiBIaWRkZW5cblxubGV0IG1heF9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBIaWRkZW4sIF8gfCBfLCBIaWRkZW4gLT4gSGlkZGVuXG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBOb3JtYWwsIE5vcm1hbCAtPiBOb3JtYWxcblxubGV0IG1heF9sZXZlbF9vcHQgYSBiID1cbiAgbWF0Y2ggYiB3aXRoXG4gIHwgTm9uZSAtPiBhXG4gIHwgU29tZSBiIC0+IG1heF9sZXZlbCBhIGJcblxudHlwZSBwb3NpdGlvbiA9IGludFxudHlwZSBjYXRlZ29yeSA9IHN0cmluZyAqIHBvc2l0aW9uICogbGV2ZWwgb3B0aW9uXG5cbnR5cGUgc3BlYyA9XG4gIHwgVm9pZCAoKiBUbyBza2lwIGEgbGluZSAqKVxuICB8IEJvb2wgb2YgYm9vbCByZWYgKCogU2V0cyBhIGJvb2xlYW4gdmFsdWUgKilcbiAgfCBJbnQgb2YgaW50IHJlZiAoKiBTZXRzIGFuIGludGVnZXIgdmFsdWUgKilcbiAgfCBJbnRfb3B0IG9mIGludCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgaW50ZWdlciB2YWx1ZSAqKVxuICB8IFN0cmluZyBvZiBzdHJpbmcgcmVmICgqIFNldHMgYSBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfb3B0IG9mIHN0cmluZyBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX2xpc3Qgb2Ygc3RyaW5nIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHN0cmluZ3MgKilcbiAgfCBTdHJpbmdOYnJfbGlzdCBvZlxuICAgICAgKHN0cmluZyAqIHN0cmluZykgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncyAqKVxuICB8IEZsb2F0IG9mIGZsb2F0IHJlZiAoKiBTZXRzIGEgZmxvYXQgdmFsdWUgKilcbiAgfCBGbG9hdF9vcHQgb2YgZmxvYXQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsICBmbG9hdCB2YWx1ZSAqKVxuICAoKiBvbmUgb3Igc2V2ZXJhbCBvcHRpb25zIGFtb25nIGEgbGlzdCAqKVxuICB8IENob2ljZSBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgKiBrZXkgcmVmXG4gIHwgQ2hvaWNlX2xpc3Qgb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0IHJlZlxuICAoKiBtZXRhLW9wdGlvbnMgdG8gc2V0IHNldmVyYWwgb3B0aW9ucyBhdCBvbmNlOlxuICAgICAtIDFzdCBvcHRpb24gbGlzdCBpcyBhcHBlbmRlZCBhcy1pcyB3aGVuIHRoZSBvcHRpb24gaXMgdXNlZFxuICAgICAtIHdoZW4gMi1zdCBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlIG1ldGEgb3B0aW9uIHRha2VzIGFuIGFyZ3VtZW50IHRoYXRcbiAgICAgaXMgcGFzc2VkIHRvIGVhY2ggb3B0aW9uIGluIHRoZSBsaXN0XG4gICAgIC0gdGhlIGtleXMgaW4gYm90aCBsaXN0cyBtdXN0IGFwcGVhciBhcyByZWd1bGFyIG9wdGlvbnMgYXMgd2VsbCFcbiAgKilcbiAgfCBNdWx0aSBvZiBrZXkgbGlzdCAqIGtleSBsaXN0XG4gICAgKCogbWV0YS1vcHRpb25zLCB0YWtlIGEgbGlzdCBvZiAoayxleHQpOmtleSpzdHJpbmcgYW5kIGdpdmUgdG8gdGhlIG9wdGlvbiBrIHRoZSBwYXJhbWV0ZXIgc15leHQgKilcbiAgfCBNdWx0aUV4dCBvZiAoa2V5ICogc3RyaW5nKSBsaXN0XG5cbnR5cGUgdCA9IChrZXkgKiBzcGVjICogbXNnICogKGNhdGVnb3J5ICogcG9zaXRpb24pIGxpc3QgKiBsZXZlbCkgbGlzdFxuXG4oKiBVdGlsaXRpZXMgKilcbigqICoqKioqKioqKiAqKVxuXG5sZXQgc2hvd19sZXZlbCAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIC0+IHRydWVcbiAgfCBFeHBlcnQgLT4gIWV4cGVydF9tb2RlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGUgJiYgIWV4cGVydF9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBzaG93X2xldmVsX29wdCAobHZsX29wdCA6IGxldmVsIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggbHZsX29wdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBsdmwgLT4gc2hvd19sZXZlbCBsdmxcblxubGV0IGFjY2VwdF9sZXZlbF9kaXNwbGF5IChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBhY2NlcHRfbGV2ZWxfdXNlIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgfCBIaWRkZW4gLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG5cbmxldCBpc2tleSAoayA6IGtleSkgPSBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nXG5cbigqIC0tWFhYID0+IC0tbm8tWFhYICopXG5sZXQgbm9rZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItbm8tXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChubykgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3IgLVwiKVxuXG4oKiAtLVhYWCA9PiAtLShuby0pWFhYICopXG5sZXQgYWx0a2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItKG5vLSlcIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKGFsdCkgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3QgLSBcIilcblxuKCogY3V0cyBhIHN0cmluZyBpbnRvIHNwYWNlLXNlcGFyYXRlZCBzdWItc3RyaW5ncyAqKVxubGV0IGN1dF9saXN0IChzIDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IHJlYyBkb2l0IGFjY3VtIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgaSA9IFN0cmluZy5pbmRleF9mcm9tIHMgcG9zICcgJyBpblxuICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgIGRvaXQgYWNjdW0gKGkgKyAxKVxuICAgICAgZWxzZVxuICAgICAgICBkb2l0IChTdHJpbmcuc3ViIHMgcG9zIChpIC0gcG9zKSA6OiBhY2N1bSkgKGkgKyAxKVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBpZiBwb3MgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHMgcG9zIChTdHJpbmcubGVuZ3RoIHMgLSBwb3MpIDo6IGFjY3VtXG4gICAgICBlbHNlXG4gICAgICAgIGFjY3VtXG4gIGluXG4gIExpc3QucmV2IChkb2l0IFtdIDApXG5cbigqIG9yZGVyIGJ5IGNhdGVnb3J5ICopXG5sZXQgcCAoXywgXywgXywgbCwgXykgKF8sIF8sIF8sIGwnLCBfKSA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgfCBbIChfLCBpKSBdLCBbIChfLCBpJykgXSAtPiBjb21wYXJlIGkgaSdcbiAgfCAoW10gfCBfIDo6IF8gOjogXyksIF8gfCBfLCAoW10gfCBfIDo6IF8gOjogXykgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvcmRlciAoYSA6IHQpID1cbiAgbGV0IG9yZGVyZWQgPSByZWYgU3RyaW5nSW50TWFwLmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGEsIGIsIGMsIGNhdCwgbHZsKSAtPlxuICAgICAgaWYgYWNjZXB0X2xldmVsX3VzZSBsdmwgdGhlblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjYXQsIGkpIC0+XG4gICAgICAgICAgICBsZXQgYXNzbywgb2xkX2x2bCA9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5maW5kX2RlZmF1bHQgKFtdLCBIaWRkZW4pIGNhdCAhb3JkZXJlZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9yZGVyZWQgOj1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmFkZCBjYXRcbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIFsgY2F0LCBpIF0sIGx2bCkgOjogYXNzbywgbWluX2xldmVsIGx2bCBvbGRfbHZsKVxuICAgICAgICAgICAgICAgICFvcmRlcmVkKVxuICAgICAgICAgIGNhdClcbiAgICBhO1xuICBvcmRlcmVkIDo9IFN0cmluZ0ludE1hcC5tYXAgKGZ1biAoYSwgYikgLT4gTGlzdC5zb3J0IHAgYSwgYikgIW9yZGVyZWQ7XG4gICFvcmRlcmVkXG5cbigqIHNhbml0eSBjaGVja2luZyAqKVxubGV0IGNoZWNrIChhIDogdCkgPVxuICAoKiBjaGVjayBkdXBsaWNhdGVzICYgY29tcHV0ZSBvcHRpb24gbGlzdCAqKVxuICBsZXQgb3B0cyA9IHJlZiBTdHJpbmdTZXQuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCBiLCBfLCBfLCBfKSAtPlxuICAgICAgaWYgYiA9IFZvaWQgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSBpZiBTdHJpbmdTZXQubWVtIGtleSAhb3B0cyB8fCBTdHJpbmdTZXQubWVtIChub2tleSBrZXkpICFvcHRzIHRoZW5cbiAgICAgICAgZmFpbHdpdGggKFwiRHVwbGljYXRlIG9wdGlvbiBcIiBeIGtleSk7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQga2V5ICFvcHRzO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIChub2tleSBrZXkpICFvcHRzKVxuICAgIGE7XG4gICgqIGNoZWNrIHN1Yi1vcHRpb25zIGluIE11bGktb3B0aW9ucyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIHQsIF8sIF8sIF8pIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTXVsdGkgKGEsIGIpIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBzIC0+XG4gICAgICAgICAgICAgIGlmIGlza2V5IHMgJiYgbm90IChTdHJpbmdTZXQubWVtIHMgIW9wdHMpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCAoXCJVbmtub3duIG9wdGlvbiBcIiBeIHMgXiBcIiBpbiBtdWx0aS1vcHRpb24gXCIgXiBrZXkpKVxuICAgICAgICBpblxuICAgICAgICBmIGE7XG4gICAgICAgIGYgYlxuICAgICAgfCBWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8gfCBCb29sIF8gfCBJbnRfb3B0IF8gfCBTdHJpbmcgX1xuICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfIHwgU3RyaW5nX29wdCBfIHwgU3RyaW5nX2xpc3QgXyB8IEZsb2F0X29wdCBfXG4gICAgICB8IENob2ljZV9saXN0IChfLCBfKVxuICAgICAgfCBNdWx0aUV4dCBfIC0+XG4gICAgICAgICgpKVxuICAgIGFcblxuKCogQ29tbWFuZC1saW5lIGludGVyZmFjZSAqKVxuKCogKioqKioqKioqKioqKioqKioqKioqKiAqKVxuXG4oKiBwcmludHMgYSBzdHJpbmcgd2l0aCBicmVha3MgaW5zdGVhZCBvZiBzcGFjZSAqKVxubGV0IHByaW50X21zZyBmIChzIDogc3RyaW5nKSA9XG4gIFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjdXRfbGlzdCBzKVxuXG4oKiBkb2N1bWVudCB0aGUgb3B0aW9ucyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0ISAqKVxubGV0IHByaW50X29wdGlvbiB2ZXJib3NlIGYgKGtleSwgc3BlYywgbXNnLCBfY2F0LCBfbHZsKSA9XG4gIGxldCBrZXkyID0gYWx0a2V5IGtleSBpblxuICAobWF0Y2ggc3BlYyB3aXRoXG4gIHwgQm9vbCByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5MlxuICAgICAgKGlmICFyIHRoZW5cbiAgICAgICAgIFwiZW5hYmxlZFwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJkaXNhYmxlZFwiKVxuICB8IFZvaWQgLT4gKClcbiAgfCBJbnQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleSAhclxuICB8IEludF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5MiBpKVxuICB8IFN0cmluZyByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFwiXCIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5XG4gICAgfCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiAlcylALlwiIGtleSBzKVxuICB8IFN0cmluZ19vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBcIlwiIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQgJXMpQC5cIiBrZXkyIHMpXG4gIHwgU3RyaW5nX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQgJWEpQC5cIiBrZXkyXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgICAgIGwpXG4gIHwgU3RyaW5nTmJyX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDwuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBsZXQgcmVjIGF1eCBsaXN0ID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGgxLCBoMikgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDx2YWx1ZT4gKGRlZmF1bHQgJXMgJXMpXCIga2V5MiBoMSBoMlxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHRhaWxcbiAgICAgICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgaW5cbiAgICAgIGF1eCBsKVxuICB8IEZsb2F0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0ICVmKUAuXCIga2V5ICFyXG4gIHwgRmxvYXRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSB2IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogJWYpQC5cIiBrZXkyIHYpXG4gIHwgQ2hvaWNlIChsLCBfLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXSBAICAoZGVmYXVsdDogJXMpQC5cIiBrZXlcbiAgICAgIChQcC5saXN0XG4gICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiB8QCBcIilcbiAgICAgICAgIChmdW4gZiAoa2V5LCBfbXNnKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYga2V5KSlcbiAgICAgIGwgIXJcbiAgfCBDaG9pY2VfbGlzdCAobCwgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF1ALlwiIGtleTJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoa2V5LCBfbXNnKSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVzJXNdXCIga2V5XG4gICAgICAgICAgICAgKGlmIExpc3QubWVtIGtleSAhciB0aGVuXG4gICAgICAgICAgICAgICAgXCIgKGRlZmF1bHQpXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFwiXCIpKSlcbiAgICAgIGxcbiAgfCBNdWx0aSAoXywgW10pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzQC5cIiBrZXlcbiAgfCBNdWx0aSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleVxuICB8IE11bHRpRXh0IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5KTtcblxuICAoKiBzaG93cyBkZXNjcmlwdGlvbiBpZiBpbiB2ZXJib3NlIG1vZGUgKilcbiAgaWYgdmVyYm9zZSAmJiBtc2cgPD4gXCJcIiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAgICBAWyVhQF1ALlwiIHByaW50X21zZyBtc2dcblxubGV0IHByaW50X2hlbHAgKGhlYWRlciA6IGJvb2wpICh2ZXJib3NlIDogYm9vbCkgZiAoYSA6IHQpID1cbiAgbGV0IG5iID0gcmVmIDAgaW5cblxuICAoKiBnZW5lcmFsIG9wdGlvbnMgKilcbiAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuR2VuZXJhbCBvcHRpb25zQC5cIjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1oZWxwICAgICAgICAgICAgVmVyYm9zZSBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgIC1oICAgICAgICAgICAgICAgU2hvcnQgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tdmVyc2lvbiAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXJALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWd1aSAgICAgICAgICAgICBHVUkgdG8gc2VsZWN0QC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS0obm8tKWV4cGVydCAgICAgRXhwZXJ0IG1vZGUgKG1vcmUgb3B0aW9ucylALlwiO1xuICBpbmNyIG5iO1xuICBpZiB2ZXJib3NlICYmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiO1xuXG4gICgqIGR1bXAgKilcbiAgU3RyaW5nSW50TWFwLml0ZXJcbiAgICAoZnVuIChjYXQsIF8sIGx2bF9vcHQpIChsLCBsdmwpIC0+XG4gICAgICBpZiBzaG93X2xldmVsX29wdCBsdmxfb3B0ICYmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiIGNhdDtcbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoKF8sIF8sIF8sIF8sIGx2bCkgYXMgeCkgLT5cbiAgICAgICAgICAgIGlmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICAgICAgICBpbmNyIG5iO1xuICAgICAgICAgICAgICBwcmludF9vcHRpb24gdmVyYm9zZSBmIHhcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgbDtcbiAgICAgICAgaWYgaGVhZGVyICYmIHZlcmJvc2UgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgKSlcbiAgICAob3JkZXIgYSk7XG5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiglaSBvcHRpb25zKUAuXCIgIW5iXG5cbigqIHBhcnNlIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyxcbiAgIHJldHVybnMgdGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbnMgKGZpbGVuYW1lcykgaW4gcmV2ZXJzZSBvcmRlcilcbiopXG5sZXQgcGFyc2VfbGlzdCB+d2l0aF90ayA/dGl0bGUgKGEgOiB0KSAobCA6IHN0cmluZyBsaXN0KSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IGxvbmdfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvcnRfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvd192ZXJzaW9uID0gcmVmIGZhbHNlIGluXG5cbiAgbGV0IHJlYyBkb2l0IGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBvcHQgOjogcmVtIC0+XG4gICAgICAoKiAtIG1lYW5zIG5vIG1vcmUgb3B0aW9uczogdGhlIHJlc3QgYXJlIGZpbGVuYW1lcyAqKVxuICAgICAgaWYgb3B0ID0gXCItXCIgdGhlblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmVtIGFjY3VtXG4gICAgICAoKiBoZWxwIG9wdGlvbnMgKilcbiAgICAgIGVsc2UgaWYgb3B0ID0gXCItaGVscFwiIHx8IG9wdCA9IFwiLS1oZWxwXCIgdGhlbiAoXG4gICAgICAgIGxvbmdfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLWhcIiB0aGVuIChcbiAgICAgICAgKCogc2hvcnRlciBsaXN0ICopXG4gICAgICAgIHNob3J0X2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogdmVyc2lvbiBudW1iZXIgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tdmVyc2lvblwiIHRoZW4gKFxuICAgICAgICBzaG93X3ZlcnNpb24gOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogZXhwZXJ0ICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1uby1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gZmFsc2U7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHJlZ3VsYXIgb3B0aW9uLCBzdGFydGluZyB3aXRoIFwiLVwiICopXG4gICAgICApIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBvcHQgPiAxICYmIG9wdC5bMF0gPSAnLScgdGhlbiAoXG4gICAgICAgIGxldCAoKGtleSwgc3BlYywgXywgXywgXykgYXMgYWEpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAoZnVuIChrZXksIF9zcGVjLCBfbXNnLCBfY2F0LCBsdmwpIC0+XG4gICAgICAgICAgICAgICAgYWNjZXB0X2xldmVsX3VzZSBsdmwgJiYgKG9wdCA9IGtleSB8fCBvcHQgPSBub2tleSBrZXkpKVxuICAgICAgICAgICAgICBhXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGZcbiAgICAgICAgICAgICAgXCJIZXJlIGlzIHRoZSBsaXN0IG9mIHJlY29nbml6ZWQgb3B0aW9uc0AuJWFALlVucmVjb2duaXplZCBcXFxuICAgICAgICAgICAgICAgb3B0aW9uOiAlc0AuQC5cIlxuICAgICAgICAgICAgICAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhIG9wdDtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW0gPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc3BlYywgcmVtIHdpdGhcbiAgICAgICAgICAgIHwgQm9vbCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBvcHQgPSBrZXk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gaW50X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoaW50X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gXCJcIjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBbIF8gXSB3aGVuIG9wdCA9IGtleSAtPiBmYWlsd2l0aCBcImludmFsaWQgcGFpclwiXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHYnIDo6IHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gKHYsIHYnKSA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwLjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gZmxvYXRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2UgKGwsIGwnLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAobm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkpXG4gICAgICAgICAgICAgICAgJiYgbm90IChMaXN0LmV4aXN0cyAoZnVuIGsgLT4gdiA9IGspIGwnKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAobCwgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChfbCwgciksIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIFtdKSwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCB5KSwgdiA6OiByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyBsIC0+IGRvaXQgW10gWyBsOyB2IF0pIGFjY3VtIHkpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIGw7IHYgXiBzIF0pIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIG5va2V5IGw7IHMgXSlcbiAgICAgICAgICAgICAgICAgICBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpIF8sIFtdIHwgKFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyksIF8gLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIG9wdGlvbiBvciBhcmd1bWVudFwiXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiV3Jvbmcgb3B0aW9uIG9yIGFyZ3VtZW50IGZvciAlc0AuJWFcIiBvcHRcbiAgICAgICAgICAgICAgKHByaW50X29wdGlvbiBmYWxzZSkgYWE7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgICAoKiBkb2VzIG5vdCBzdGFydCB3aXRoIC0gPT4gdGhpcyBpcyBmaWxlbmFtZSAqKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGRvaXQgKG9wdCA6OiBhY2N1bSkgcmVtXG4gIGluXG5cbiAgbGV0IGZpbGVuYW1lcyA9IGRvaXQgW10gbCBpblxuICBpZiAhc2hvd192ZXJzaW9uIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlcyBALih3aXRoJXMgVGsgaW50ZXJmYWNlKUAuXCJcbiAgICAgIChtYXRjaCB0aXRsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lXG4gICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgKGlmIHdpdGhfdGsgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwib3V0XCIpO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIWxvbmdfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIHRydWUpIGE7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhc2hvcnRfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhO1xuICAgIGV4aXQgMFxuICApO1xuICAoKiBMaXN0LmNvbmNhdCopIGZpbGVuYW1lcyAoKihMaXN0Lm1hcCBXb3JkZXhwLndvcmRleHAgZmlsZW5hbWVzKSopXG4iLCIoKiBMYWJsVEsgR1VJIGZvciBvcHRpb24gc2VsZWN0aW9uIFN1cGVyYXJnLlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuICAgTGlnaHQgVmVyc2lvbiAoSmVyb21lIEZlcmV0KVxuICAgVGhpcyBMSUdIVCB2ZXJzaW9uIGRvZXMgbm90IHJlcXVpcmUgbGFibHRrXG4qKVxuXG5leGNlcHRpb24gRXhpdCBvZiBzdHJpbmcgbGlzdFxuXG4oKiBNQUlOICopXG4oKiAqKioqICopXG5cbmxldCBwYXJzZSA/dGl0bGUgKGEgOiBTdXBlcmFyZy50KSAoZGVmIDogc3RyaW5nIGxpc3QgcmVmKSA9XG4gIFN1cGVyYXJnLmNoZWNrIGE7XG4gICgqIGRyb3AgdGhlIGZpcnN0IGNvbW1hbmQtbGluZSBhcmd1bWVudDogaXQgaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSAqKVxuICBsZXQgYXJncyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgU3lzLmFyZ3YpIGluXG4gICgqIGlmIG5vIGFyZ3VtZW50IG9yIFwiLS1ndWlcIiBnaXZlbiwgbGF1bmNoIHRoZSBndWksIG90aGVyd2lzZSwgcGFyc2UgYXJncyAqKVxuICBsZXQgcmVtID1cbiAgICBpZlxuICAgICAgYXJncyA9IFtdIHx8IGFyZ3MgPSBbIFwiLS1leHBlcnRcIiBdIHx8IGFyZ3MgPSBbIFwiLS1uby1leHBlcnRcIiBdXG4gICAgICB8fCBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWd1aVwiKSBhcmdzXG4gICAgdGhlblxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYVxuICAgICAgICAoaWYgTGlzdC5leGlzdHMgKCggPSApIFwiLS1leHBlcnRcIikgYXJncyB0aGVuXG4gICAgICAgICAgIFsgXCItLWhlbHBcIjsgXCItLWV4cGVydFwiIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyBcIi0taGVscFwiIF0pXG4gICAgZWxzZVxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYSBhcmdzXG4gIGluXG4gIGlmIHJlbSA8PiBbXSB0aGVuIGRlZiA6PSByZW1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkYXRhX3NldCA9IFwiRGF0YSBzZXRcIiwgMCwgTm9uZVxubGV0IG91dHB1dCA9IFwiT3V0cHV0XCIsIDEsIE5vbmVcbmxldCBzZW1hbnRpY3MgPSBcIlNlbWFudGljc1wiLCAyLCBOb25lXG5sZXQgaW50ZWdyYXRpb25fc2V0dGluZ3MgPSBcIkludGVncmF0aW9uIHNldHRpbmdzXCIsIDMsIE5vbmVcbmxldCBtb2RlbF9yZWR1Y3Rpb24gPSBcIk1vZGVsIHJlZHVjdGlvblwiLCA0LCBOb25lXG5sZXQgc3RhdGljX2FuYWx5c2lzID0gXCJTdGF0aWMgYW5hbHlzaXNcIiwgNSwgU29tZSBTdXBlcmFyZy5FeHBlcnRcbmxldCBkZWJ1Z19tb2RlID0gXCJEZWJ1ZyBtb2RlXCIsIDYsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBiYWNrdHJhY2U6IGJvb2w7IG11dGFibGUgZGVidWc6IGJvb2wgfVxuXG50eXBlIHRfZ3VpID0ge1xuICBiYWNrdHJhY2VfZ3VpOiBib29sIHJlZjtcbiAgZGVidWdfZ3VpOiBib29sIHJlZjtcbiAgdmVyc2lvbl9ndWk6IGJvb2wgcmVmO1xuICBnbHV0dG9ueV9ndWk6IGJvb2wgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGJhY2t0cmFjZSA9IGZhbHNlOyBkZWJ1ZyA9IGZhbHNlIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGJhY2t0cmFjZV9ndWkgPSByZWYgZmFsc2U7XG4gICAgZGVidWdfZ3VpID0gcmVmIGZhbHNlO1xuICAgIHZlcnNpb25fZ3VpID0gcmVmIGZhbHNlO1xuICAgIGdsdXR0b255X2d1aSA9IHJlZiBmYWxzZTtcbiAgfVxuXG5sZXQgZG9fdmVyc2lvbiAoKSA9XG4gIEZvcm1hdC5wcmludF9zdHJpbmcgVmVyc2lvbi52ZXJzaW9uX21zZztcbiAgRm9ybWF0LnByaW50X25ld2xpbmUgKCk7XG4gIGV4aXQgMFxuXG5sZXQgZG9fZ2x1dHRvbnkgKCkgPVxuICBHYy5zZXQgeyAoR2MuZ2V0ICgpKSB3aXRoIEdjLnNwYWNlX292ZXJoZWFkID0gNTAwICgqZGVmYXVsdCA4MCopIH1cblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIGxldCAoKSA9IGlmICEodF9ndWkudmVyc2lvbl9ndWkpIHRoZW4gZG9fdmVyc2lvbiAoKSBpblxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLmdsdXR0b255X2d1aSkgdGhlbiBkb19nbHV0dG9ueSAoKSBpblxuICB7IGJhY2t0cmFjZSA9ICEodF9ndWkuYmFja3RyYWNlX2d1aSk7IGRlYnVnID0gISh0X2d1aS5kZWJ1Z19ndWkpIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0LmJhY2t0cmFjZSA8LSB0X3RtcC5iYWNrdHJhY2U7XG4gIHQuZGVidWcgPC0gdF90bXAuZGVidWdcblxubGV0IG9wdGlvbnNfZ2VuIHQgdF9ndWkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZlcnNpb25cIixcbiAgICAgIEFyZy5Vbml0IGRvX3ZlcnNpb24sXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLnZlcnNpb25fZ3VpLFxuICAgICAgXCJkaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItLWRlYnVnXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuZGVidWcgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmRlYnVnX2d1aSxcbiAgICAgIFwiRW5hYmxlIGRlYnVnIG1vZGVcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMSBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tYmFja3RyYWNlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuYmFja3RyYWNlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5iYWNrdHJhY2VfZ3VpLFxuICAgICAgXCJCYWNrdHJhY2luZyBleGNlcHRpb25zXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDIgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWdsdXR0b255XCIsXG4gICAgICBBcmcuVW5pdCBkb19nbHV0dG9ueSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZ2x1dHRvbnlfZ3VpLFxuICAgICAgXCJMb3dlciBnYyBhY3Rpdml0eSBmb3IgYSBmYXN0ZXIgYnV0IG1lbW9yeSBpbnRlbnNpdmUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAzIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW5wdXRLYXBwYUZpbGVOYW1lczogc3RyaW5nIGxpc3Q7XG4gIG11dGFibGUgbWluVmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhWYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHBsb3RQZXJpb2Q6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREYXRhRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgbXV0YWJsZSBiYXRjaG1vZGU6IGJvb2w7XG4gIG11dGFibGUgaW50ZXJhY3RpdmU6IGJvb2w7XG4gIG11dGFibGUgc3ludGF4VmVyc2lvbjogQXN0LnN5bnRheF92ZXJzaW9uO1xufVxuXG50eXBlIHRfZ3VpID0ge1xuICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aTogc3RyaW5nIGxpc3QgcmVmO1xuICBtaW5WYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG1heFZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgcGxvdFBlcmlvZF9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG91dHB1dERhdGFGaWxlX2d1aTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG91dHB1dERpcmVjdG9yeV9ndWk6IHN0cmluZyByZWY7XG4gIHN5bnRheFZlcnNpb25fZ3VpOiBzdHJpbmcgcmVmO1xuICBiYXRjaG1vZGVfZ3VpOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9IFtdO1xuICAgIG1pblZhbHVlID0gTm9uZTtcbiAgICBtYXhWYWx1ZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSBOb25lO1xuICAgIG91dHB1dERpcmVjdG9yeSA9IFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb24gPSBBc3QuVjQ7XG4gICAgYmF0Y2htb2RlID0gZmFsc2U7XG4gICAgaW50ZXJhY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkgPSByZWYgW107XG4gICAgbWluVmFsdWVfZ3VpID0gcmVmIChTb21lIDAuKTtcbiAgICBtYXhWYWx1ZV9ndWkgPSByZWYgKFNvbWUgMS4pO1xuICAgIHBsb3RQZXJpb2RfZ3VpID0gcmVmIChTb21lIDAuMDEpO1xuICAgIG91dHB1dERhdGFGaWxlX2d1aSA9IHJlZiAoU29tZSBcImRhdGEuY3N2XCIpO1xuICAgIG91dHB1dERpcmVjdG9yeV9ndWkgPSByZWYgXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbl9ndWkgPSByZWYgXCI0XCI7XG4gICAgYmF0Y2htb2RlX2d1aSA9IHJlZiBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IHJlYyBhdXggbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgKHYsIHZhcl92YWwpIDo6IHRhaWwgLT5cbiAgICBhdXggdGFpbFxuICAgICAgKCggdixcbiAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgIHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgIDo6IGFjY3UpXG4gIHwgW10gLT4gYWNjdVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAge1xuICAgIG1pblZhbHVlID0gISh0X2d1aS5taW5WYWx1ZV9ndWkpO1xuICAgIG1heFZhbHVlID0gISh0X2d1aS5tYXhWYWx1ZV9ndWkpO1xuICAgIHBsb3RQZXJpb2QgPSAhKHRfZ3VpLnBsb3RQZXJpb2RfZ3VpKTtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gISh0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSk7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSAhKHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSk7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gISh0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpKTtcbiAgICBzeW50YXhWZXJzaW9uID1cbiAgICAgIChtYXRjaCAhKHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpKSB3aXRoXG4gICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiBBc3QuVjRcbiAgICAgIHwgX3MgLT4gQXN0LlY0KTtcbiAgICBiYXRjaG1vZGUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiYmF0Y2hcIjtcbiAgICBpbnRlcmFjdGl2ZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5taW5WYWx1ZSA8LSB0X3RtcC5taW5WYWx1ZTtcbiAgdC5tYXhWYWx1ZSA8LSB0X3RtcC5tYXhWYWx1ZTtcbiAgdC5wbG90UGVyaW9kIDwtIHRfdG1wLnBsb3RQZXJpb2Q7XG4gIHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSB0X3RtcC5pbnB1dEthcHBhRmlsZU5hbWVzO1xuICB0Lm91dHB1dERhdGFGaWxlIDwtIHRfdG1wLm91dHB1dERhdGFGaWxlO1xuICB0Lm91dHB1dERpcmVjdG9yeSA8LSB0X3RtcC5vdXRwdXREaXJlY3Rvcnk7XG4gIHQuc3ludGF4VmVyc2lvbiA8LSB0X3RtcC5zeW50YXhWZXJzaW9uO1xuICB0LmJhdGNobW9kZSA8LSB0X3RtcC5iYXRjaG1vZGU7XG4gIHQuaW50ZXJhY3RpdmUgPC0gdF90bXAuaW50ZXJhY3RpdmVcblxubGV0IG9wdGlvbnNfZ2VuICh0IDogdCkgKHRfZ3VpIDogdF9ndWkpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLWlcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBmaWMgLT4gdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIGZpYyA6OiB0LmlucHV0S2FwcGFGaWxlTmFtZXMpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX2xpc3QgdF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWksXG4gICAgICBcIm5hbWUgb2YgYSBrYXBwYSBmaWxlIHRvIHVzZSBhcyBpbnB1dCAoY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgZm9yIFxcXG4gICAgICAgbXVsdGlwbGUgaW5wdXQgZmlsZXMpXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItaW5pdGlhbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1pblZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWluVmFsdWVfZ3VpLFxuICAgICAgXCJNaW4gdGltZSBvZiBzaW11bGF0aW9uIChhcmJpdHJhcnkgdGltZSB1bml0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMDsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1heFZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJMaW1pdCBvZiB0aGUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItdFwiLFxuICAgICAgQXJnLkZsb2F0XG4gICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctdCcgaGFzIGJlZW4gcmVwbGFjZSBieSAnWy11IHRpbWVdIC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2Zsb2F0IGYgXiBcIidcIikpKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItcFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gcG9pbnROdW1iZXJWYWx1ZSAtPiB0LnBsb3RQZXJpb2QgPC0gU29tZSBwb2ludE51bWJlclZhbHVlKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5wbG90UGVyaW9kX2d1aSxcbiAgICAgIFwicGxvdCBwZXJpb2Q6IHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBwb2ludHMgaW4gcGxvdCAoZGVmYXVsdDogMS4wKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMjsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERhdGFGaWxlIC0+IHQub3V0cHV0RGF0YUZpbGUgPC0gU29tZSBvdXRwdXREYXRhRmlsZSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREaXJlY3RvcnkgLT4gdC5vdXRwdXREaXJlY3RvcnkgPC0gb3V0cHV0RGlyZWN0b3J5KSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpLFxuICAgICAgXCJTcGVjaWZpZXMgZGlyZWN0b3J5IG5hbWUgd2hlcmUgb3V0cHV0IGZpbGUocykgc2hvdWxkIGJlIHN0b3JlZFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAwO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbW9kZVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICBpZiBtID0gXCJiYXRjaFwiIHRoZW5cbiAgICAgICAgICAgIHQuYmF0Y2htb2RlIDwtIHRydWVcbiAgICAgICAgICBlbHNlIGlmIG0gPSBcImludGVyYWN0aXZlXCIgdGhlblxuICAgICAgICAgICAgdC5pbnRlcmFjdGl2ZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFsgXCJiYXRjaFwiLCBcImJhdGNoIG1vZGVcIjsgXCJpbnRlcmFjdGl2ZVwiLCBcImludGVyYWN0aXZlIG1vZGVcIiBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLmJhdGNobW9kZV9ndWkgKSxcbiAgICAgIFwiZWl0aGVyIFxcXCJiYXRjaFxcXCIgdG8gbmV2ZXIgYXNrIGFueXRoaW5nIHRvIHRoZSB1c2VyIG9yIFxcXCJpbnRlcmFjdGl2ZVxcXCIgXFxcbiAgICAgICB0byBhc2sgc29tZXRoaW5nIGJlZm9yZSBkb2luZyBhbnl0aGluZ1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDc7IENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDcgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItc3ludGF4XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjNcbiAgICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlY0XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHN5bnRheCB2ZXJzaW9uXCIpKSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwidjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiVjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiNFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJ2NFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJWNFwiLCBcIm5ld1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuc3ludGF4VmVyc2lvbl9ndWkgKSxcbiAgICAgIFwiVXNlIGV4cGxpY2l0IG5vdGF0aW9uIGZvciBmcmVlIHNpdGVcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA4IF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4gIEAgW1xuICAgICAgKCBcIi0tb3V0cHV0LXBsb3RcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTtcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgICAoIFwiLS1kYXRhLWZpbGVcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMjtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYXIgPSB7IG11dGFibGUgdGlja3M6IGludDsgYmFyX3NpemU6IGludDsgYmFyX2NoYXI6IGNoYXIgfVxuXG50eXBlIHRleHQgPSB7XG4gIG11dGFibGUgbGFzdF9sZW5ndGg6IGludDtcbiAgbXV0YWJsZSBsYXN0X2V2ZW50X25iOiBpbnQ7XG4gIG11dGFibGUgbGFzdF90aW1lOiBmbG9hdDtcbn1cblxudHlwZSB0ID0gQmFyIG9mIGJhciB8IFRleHQgb2YgdGV4dFxuXG5sZXQgaW5jX3RpY2sgYyA9IGMudGlja3MgPC0gYy50aWNrcyArIDFcblxubGV0IGNyZWF0ZSBiYXJfc2l6ZSBiYXJfY2hhciA9XG4gIGlmIFVuaXguaXNhdHR5IFVuaXguc3Rkb3V0IHRoZW5cbiAgICBUZXh0IHsgbGFzdF9sZW5ndGggPSAwOyBsYXN0X3RpbWUgPSAtNS47IGxhc3RfZXZlbnRfbmIgPSAwIH1cbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBfID0gYmFyX3NpemUgZG93bnRvIDEgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIl9cIlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgICBCYXIgeyB0aWNrcyA9IDA7IGJhcl9zaXplOyBiYXJfY2hhciB9XG4gIClcblxubGV0IHBwX25vdF9udWxsIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICglLjJmJSUpXCIgKHggKi4gMTAwLilcbiAgfCBOb25lIC0+ICgpXG5cbmxldCBwcF90ZXh0IGRlbHRhX3QgdGltZSB0X3IgZXZlbnQgZV9yIGYgcyA9XG4gIGxldCBzdHJpbmcgPVxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmYgdGltZSB1bml0cyVhIGluICVpIGV2ZW50cyVhJXRcIiB0aW1lIHBwX25vdF9udWxsIHRfclxuICAgICAgZXZlbnQgcHBfbm90X251bGwgZV9yIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBkZWx0YV90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBkdCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgKGp1c3QgZGlkICUuMWYgZXZlbnRzL3MpXCJcbiAgICAgICAgICAgIChmbG9hdF9vZl9pbnQgKGV2ZW50IC0gcy5sYXN0X2V2ZW50X25iKSAvLiBkdCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJXMlc0A/XCJcbiAgICAgIChTdHJpbmcubWFrZSBzLmxhc3RfbGVuZ3RoICdcXGInKVxuICAgICAgc3RyaW5nXG4gICAgICAoU3RyaW5nLm1ha2UgKG1heCAwIChzLmxhc3RfbGVuZ3RoIC0gU3RyaW5nLmxlbmd0aCBzdHJpbmcpKSAnICcpXG4gIGluXG4gIHMubGFzdF9sZW5ndGggPC0gU3RyaW5nLmxlbmd0aCBzdHJpbmdcblxubGV0IHJlYyBhdXhfdGljayBzb21ldGhpbmcgcyBuID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBpZiBzb21ldGhpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4gICAgZWxzZVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2NoYXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcy5iYXJfY2hhciBpblxuICAgIGxldCAoKSA9IGluY190aWNrIHMgaW5cbiAgICBhdXhfdGljayB0cnVlIHMgKHByZWQgbilcbiAgKVxuXG5sZXQgdGljayB+ZWZmaWNpZW5jeSB0aW1lIHRfciBldmVudCBlX3IgPSBmdW5jdGlvblxuICB8IEJhciBzIC0+XG4gICAgbGV0IG5fdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiB0X3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBsZXQgbl9lID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIGVfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGF1eF90aWNrIGZhbHNlIHMgKGludF9vZl9mbG9hdCAobWF4IG5fdCBuX2UpIC0gcy50aWNrcylcbiAgfCBUZXh0IHMgLT5cbiAgICBsZXQgcnVuID0gU3lzLnRpbWUgKCkgaW5cbiAgICBsZXQgZHQgPSBydW4gLS4gcy5sYXN0X3RpbWUgaW5cbiAgICBpZiBkdCA+IDAuNSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBwX3RleHRcbiAgICAgICAgICAoaWYgZWZmaWNpZW5jeSB0aGVuXG4gICAgICAgICAgICAgU29tZSBkdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICB0aW1lIHRfciBldmVudCBlX3IgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHMubGFzdF9ldmVudF9uYiA8LSBldmVudCBpblxuICAgICAgcy5sYXN0X3RpbWUgPC0gU3lzLnRpbWUgKClcbiAgICApXG5cbmxldCBjb21wbGV0ZV9wcm9ncmVzc19iYXIgdGltZSBldmVudCB0ID1cbiAgKG1hdGNoIHQgd2l0aFxuICB8IEJhciB0IC0+IGF1eF90aWNrIGZhbHNlIHQgKHQuYmFyX3NpemUgLSB0LnRpY2tzKVxuICB8IFRleHQgcyAtPiBwcF90ZXh0IE5vbmUgdGltZSBOb25lIGV2ZW50IE5vbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcyk7XG4gIEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb3V0cHV0RGlyTmFtZSA9IHJlZiBcIlwiXG5sZXQgbWFyc2hhbGl6ZWRPdXRGaWxlID0gcmVmIFwiXCJcbmxldCBjZmxvd0ZpbGVOYW1lID0gcmVmIFwiY2Zsb3cuZG90XCJcbmxldCBicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZSA9IHJlZiBcImNvbXByZXNzaW9uX3N0YXR1cy50eHRcIlxubGV0IHRhc2tzX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJwcm9maWxpbmcuaHRtbFwiXG5sZXQgZmx1eEZpbGVOYW1lID0gcmVmIFwiXCJcblxubGV0IG1rX2Rpcl9yIGQgPVxuICBsZXQgcmVjIGF1eCBkID1cbiAgICBpZiBub3QgKFN5cy5maWxlX2V4aXN0cyBkKSB0aGVuIChcbiAgICAgIGxldCAoKSA9IGF1eCAoRmlsZW5hbWUuZGlybmFtZSBkKSBpblxuICAgICAgVW5peC5ta2RpciBkIDBvNzc1XG4gICAgKVxuICBpblxuICBVbml4LmhhbmRsZV91bml4X2Vycm9yIGF1eCBkXG5cbmxldCBvdmVyd3JpdGVfcGVybWlzc2lvbiA9IHJlZiBmYWxzZVxuXG5sZXQgcGF0aCBmID1cbiAgaWYgRmlsZW5hbWUuaXNfaW1wbGljaXQgZiB0aGVuXG4gICAgRmlsZW5hbWUuY29uY2F0ICFvdXRwdXREaXJOYW1lIGZcbiAgZWxzZVxuICAgIGZcblxubGV0IG9wZW5fb3V0IGYgPVxuICBsZXQgeCA9IHBhdGggZiBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICBvcGVuX291dCB4XG5cbmxldCByZWMgYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgdiBleHQgPVxuICB0cnlcbiAgICBvcGVuX291dF9nZW5cbiAgICAgIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF1cbiAgICAgIDBvNjY2XG4gICAgICAoYmFzZSBeIFwiflwiIF4gc3RyaW5nX29mX2ludCB2IF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIChzdWNjIHYpIGV4dFxuXG5sZXQgb3Blbl9vdXRfZnJlc2ggbmFtZSBjb25jYXRfbGlzdCBmYWN1bHRhdGl2ZSBleHQgPVxuICBsZXQgbmFtZSA9IHBhdGggbmFtZSBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSBuYW1lKSBpblxuICBsZXQgdG1wX25hbWUgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgbGV0IGJhc2UgPSBTdHJpbmcuY29uY2F0IFwiX1wiICh0bXBfbmFtZSA6OiBjb25jYXRfbGlzdCkgaW5cbiAgbGV0IG92ZXJfZmxhZyA9XG4gICAgaWYgIW92ZXJ3cml0ZV9wZXJtaXNzaW9uIHRoZW5cbiAgICAgIE9wZW5fdHJ1bmNcbiAgICBlbHNlXG4gICAgICBPcGVuX2V4Y2xcbiAgaW5cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgb3Zlcl9mbGFnOyBPcGVuX3RleHQgXSBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlIF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICAodHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZScgXiBleHQpXG4gICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UnIDAgZXh0KVxuXG5sZXQgc2V0IG5hbWUgZXh0X29wdCA9XG4gIGlmICFuYW1lIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGV4dF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICFuYW1lXG4gICAgICB8IFNvbWUgZXh0IC0+XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCAhbmFtZSBleHQgdGhlblxuICAgICAgICAgICFuYW1lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhbmFtZSBeIFwiLlwiIF4gZXh0XG4gICAgaW5cbiAgICBuYW1lIDo9IGZuYW1lXG4gIClcblxubGV0IHNldE91dHB1dE5hbWUgKCkgPVxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpO1xuICBzZXQgbWFyc2hhbGl6ZWRPdXRGaWxlIE5vbmVcblxubGV0IGNoZWNrX25vdF9leGlzdHMgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IGZpbGUgPSBwYXRoIGZpbGUgaW5cbiAgICBpZiBTeXMuZmlsZV9leGlzdHMgZmlsZSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiRmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIGRvIHlvdSB3YW50IHRvIGVyYXNlICh5L04pP0AuXCJcbiAgICAgICAgICBmaWxlXG4gICAgICBpblxuICAgICAgbGV0IGFuc3dlciA9IFRvb2xzLnJlYWRfaW5wdXQgKCkgaW5cbiAgICAgIGlmXG4gICAgICAgIGFuc3dlciA8PiBcInlcIiAmJiBhbnN3ZXIgPD4gXCJZXCIgJiYgYW5zd2VyIDw+IFwieWVzXCIgJiYgYW5zd2VyIDw+IFwiWUVTXCJcbiAgICAgICAgJiYgYW5zd2VyIDw+IFwiWWVzXCJcbiAgICAgIHRoZW5cbiAgICAgICAgZXhpdCAxXG4gICAgICBlbHNlXG4gICAgICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgICApXG5cbmxldCBzZXRDaGVja0ZpbGVFeGlzdHMgfmJhdGNobW9kZSBvdXRwdXRGaWxlID1cbiAgbGV0ICgpID0gc2V0T3V0cHV0TmFtZSAoKSBpblxuICBpZiBiYXRjaG1vZGUgdGhlblxuICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhZmx1eEZpbGVOYW1lIGluXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhbWFyc2hhbGl6ZWRPdXRGaWxlIGluXG4gICAgY2hlY2tfbm90X2V4aXN0cyBvdXRwdXRGaWxlXG4gIClcblxubGV0IHdpdGhfY2hhbm5lbCBzdHIgZiA9XG4gIGlmIHN0ciA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBkZXNjID0gb3Blbl9vdXQgc3RyIGluXG4gICAgbGV0ICgpID0gZiBkZXNjIGluXG4gICAgY2xvc2Vfb3V0IGRlc2NcbiAgKVxuXG5sZXQgd3JhcF9mb3JtYXR0ZXIgZiBkZXNjID1cbiAgbGV0IGZyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gIGxldCAoKSA9IGYgZnIgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZyICgpXG5cbmxldCBzZXRfZGlyIHMgPVxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IHMpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBzO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IG1rX2Rpcl9yIHNcbiAgaW5cbiAgb3V0cHV0RGlyTmFtZSA6PSBzXG5cbmxldCBnZXRfZGlyICgpID0gIW91dHB1dERpck5hbWVcbmxldCBzZXRfbWFyc2hhbGl6ZWQgZiA9IG1hcnNoYWxpemVkT3V0RmlsZSA6PSBmXG5cbmxldCB3aXRoX21hcnNoYWxpemVkIGYgPVxuICBtYXRjaCAhbWFyc2hhbGl6ZWRPdXRGaWxlIHdpdGhcbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCB4ID0gcGF0aCBmaWxlIGluXG4gICAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgICBsZXQgZCA9IG9wZW5fb3V0X2JpbiB4IGluXG4gICAgbGV0ICgpID0gZiBkIGluXG4gICAgY2xvc2Vfb3V0IGRcblxubGV0IHNldF9jZmxvdyBzID0gY2Zsb3dGaWxlTmFtZSA6PSBzXG5cbmxldCB3aXRoX2NmbG93X2ZpbGUgbCBlIGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoICFjZmxvd0ZpbGVOYW1lIGwgXCJcIiBlIGluXG4gIGxldCAoKSA9IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuXG5sZXQgb3Blbl90YXNrc19wcm9maWxpbmcgKCkgPSBvcGVuX291dCAhdGFza3NfcHJvZmlsaW5nTmFtZVxuXG5sZXQgb3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpID1cbiAgb3Blbl9vdXQgIWJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lXG5cbmxldCBzZXRfZmx1eCBubWUgZXZlbnQgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG5tZSB3aXRoXG4gICAgfCBcIlwiIC0+IGZsdXhGaWxlTmFtZSA6PSBcImZsdXhcIiBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBldmVudFxuICAgIHwgXyAtPiBmbHV4RmlsZU5hbWUgOj0gbm1lXG4gIGluXG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIilcblxubGV0IHdpdGhfZmx1eCBzdHIgZiA9XG4gIHdpdGhfY2hhbm5lbFxuICAgIChtYXRjaCBzdHIgd2l0aFxuICAgIHwgXCJcIiAtPiAhZmx1eEZpbGVOYW1lXG4gICAgfCBfIC0+IHN0cilcbiAgICBmXG5cbmxldCB3aXRoX3NuYXBzaG90IHN0ciBleHQgZXZlbnQgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggc3RyIFtdIChzdHJpbmdfb2ZfaW50IGV2ZW50KSBleHQgaW5cbiAgbGV0ICgpID0gZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0b3JlID0ge1xuICBmaWxlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyOiBzdHJpbmc7XG4gIGxlZ2VuZDogc3RyaW5nIGFycmF5O1xuICBtdXRhYmxlIHBvaW50czogTmJyLnQgYXJyYXkgbGlzdDtcbn1cblxubGV0IG5ld19maWxlIG5hbWUgPVxuICBsZXQgY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IG5hbWUgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PD94bWwgdmVyc2lvbj1cXFwiMS4wXFxcIj8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PCFET0NUWVBFQCBzdmdAIFBVQkxJQ0AgXFxcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcXFwiPkBdQCxALFwiXG4gIGluXG4gIGYsIGNoYW5cblxubGV0IGNsb3NlX2ZpbGUgZm9ybSBjaGFuID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBdQC5cIiBpblxuICBjbG9zZV9vdXQgY2hhblxuXG5sZXQgc3R5bGUgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3R5bGUgdHlwZT1cXFwidGV4dC9jc3NcXFwiID5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8IVtDREFUQVtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNsZWdlbmQgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc190IHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOm1pZGRsZTtAIGJhc2VsaW5lLXNoaWZ0Oi0xZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc192YSB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4ZXMge0AsY29sb3I6YmxhY2s7QCxzdHJva2U6Y3VycmVudENvbG9yO1wiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALHN0cm9rZS1zaXplOjFweDtALH1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIkBbPGh2IDI+I2F4ZXMgdGV4dCB7QCxzdHJva2U6bm9uZTtALGZpbGw6Y3VycmVudENvbG9yO0AsfUBdQCxcIlxuICBpblxuICAoKiBsZXQgKCkgPVxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jZGF0YSB1c2U6aG92ZXIge0AsZmlsbDpncmVlbjtALH1AXUAsXCIgaW4qKVxuICBGb3JtYXQuZnByaW50ZiBmIFwiXV0+QCw8L3N0eWxlPkAsQCxcIlxuXG5sZXQgY29sb3JzID0gW3wgXCJwZXJ1XCI7IFwiYmx1ZVwiOyBcInB1cnBsZVwiOyBcImdyZWVuXCIgfF1cbmxldCBzdHlsZXMgPSBbfCBcInBvaW50XCI7IFwicGx1c1wiOyBcImNyb3NzXCIgfF1cblxubGV0IGRlZnMgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGVmcz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxwYXRoIGlkPVxcXCJwbHVzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsMCBoNyBNMCwtMy41IHY3XFxcIi8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiPHBhdGggaWQ9XFxcImNyb3NzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwtMy41IEwzLjUsMy41IE0zLjUsLTMuNSBMLTMuNSwzLjVcXFwiLz5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Y2lyY2xlIGlkPVxcXCJwb2ludFxcXCIgY2xhc3M9XFxcInBvaW50XFxcIiByPVxcXCIyLjVcXFwiXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBzdHJva2U9XFxcIm5vbmVcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPkAsXCIgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvZGVmcz5ALEAsXCJcblxubGV0IGxlZ2VuZCB3IGYgYSA9XG4gIGxldCBwcF9saW5lIGknIGYgcyA9XG4gICAgaWYgaScgPiAwIHRoZW4gKFxuICAgICAgbGV0IGkgPSBwcmVkIGknIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD48dGV4dCB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiPiVzPC90ZXh0PkBdQCxcIiAodyAtIDE1KVxuICAgICAgICAgICgxMCArIChpICogMTUpKVxuICAgICAgICAgIHNcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiPHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCIgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIi8+XCJcbiAgICAgICAgc3R5bGVzLihpJyBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgY29sb3JzLihpJyBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgKHcgLSA3KVxuICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJsZWdlbmRcXFwiPkAsJWFAXUAsPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5jdXQgcHBfbGluZSkgYVxuXG5sZXQgZ2V0X2xpbWl0cyBsID1cbiAgbGV0IGR1bW15X3ZhbHVlcyA9IDAuLCAtMS4sIDEuIGluXG4gIGxldCByZWMgYXV4IHRfbWF4IHZhX21pbiB2YV9tYXggPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIHZhX21pbiA9IHZhX21heCB0aGVuXG4gICAgICAgIHRfbWF4LCB2YV9taW4gLS4gMS4sIHZhX21heCArLiAxLlxuICAgICAgZWxzZVxuICAgICAgICB0X21heCwgbWluIHZhX21pbiAwLiwgdmFfbWF4XG4gICAgfCB2YSA6OiBxIC0+XG4gICAgICBhdXhcbiAgICAgICAgKG1heCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIChOYnIudG9fZmxvYXQgdmEuKDApKSkgdF9tYXgpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWluIGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9taW4gdmEpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWF4IGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9tYXggdmEpXG4gICAgICAgIHFcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZHVtbXlfdmFsdWVzXG4gIHwgdmEgOjogXyB3aGVuIEFycmF5Lmxlbmd0aCB2YSA8IDIgLT4gZHVtbXlfdmFsdWVzXG4gIHwgbCAtPiBhdXggMC4gaW5maW5pdHkgMC4gbFxuXG5sZXQgZHJhd19pbl9kYXRhICgodF9tYXgsIHZhX21pbiwgdmFfbWF4KSwgKHplcm9fdywgemVyb19oLCBkcmF3X3csIGRyYXdfaCkpID1cbiAgbGV0IGRlbHRhX3ZhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgemVyb193JyA9IGZsb2F0X29mX2ludCB6ZXJvX3cgaW5cbiAgbGV0IHplcm9faCcgPSBmbG9hdF9vZl9pbnQgemVyb19oIGluXG4gIGxldCBkcmF3X3cnID0gZmxvYXRfb2ZfaW50IGRyYXdfdyBpblxuICBsZXQgZHJhd19oJyA9IGZsb2F0X29mX2ludCBkcmF3X2ggaW5cbiAgZnVuIGYgeCB5IC0+XG4gICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5JyAtPlxuICAgICAgZlxuICAgICAgICAoemVyb193J1xuICAgICAgICArLiAoKE9wdGlvbl91dGlsLnVuc29tZSAwLiBAQCBOYnIudG9fZmxvYXQgeCkgKi4gZHJhd193JyAvLiB0X21heCkpXG4gICAgICAgICh6ZXJvX2gnIC0uICgoeScgLS4gdmFfbWluKSAqLiBkcmF3X2gnIC8uIGRlbHRhX3ZhKSlcblxubGV0IGdyYWR1YXRpb25fc3RlcCBkcmF3X2wgbWluX2dyYWRfbCB2YV9taW4gdmFfbWF4ID1cbiAgbGV0IG5icl9kZWx0YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IGRlbHRhX3ZhID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gbmJyX2RlbHRhXG4gIGluXG4gIGxldCBuYl9ncmFkID0gY2VpbCAoZmxvYXQgZHJhd19sIC8uIGZsb2F0IG1pbl9ncmFkX2wpIGluXG4gIGxldCBleGFjdF9zdGVwID0gZGVsdGFfdmEgLy4gbmJfZ3JhZCBpblxuICBsZXQgZGVsdGFfZ3JhZCA9IDEwLiAqKiBsb2cxMCBleGFjdF9zdGVwIGluXG4gIGxldCB2YV9taW4nID0gZGVsdGFfZ3JhZCAqLiBmbG9vciAodmFfbWluIC8uIGV4YWN0X3N0ZXApIGluXG4gIGxldCB2YV9tYXgnID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiB2YV9taW4nICsuIDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPlxuICAgICAgZGVsdGFfZ3JhZCAqLiBjZWlsICh2YV9tYXggLy4gZXhhY3Rfc3RlcClcbiAgaW5cbiAgdmFfbWluJywgaW50X29mX2Zsb2F0IG5iX2dyYWQsIGRlbHRhX2dyYWQsIHZhX21heCdcblxubGV0IGF4aXMgKHcsIGgpIChiX29wLCBiX3csIGJfaCkgZiBsID1cbiAgbGV0IHRfbWF4LCB2YV9taW4sIHZhX21heCA9IGdldF9saW1pdHMgbCBpblxuICBsZXQgZGF0YV93ID0gdyAtIChiX29wICsgYl93KSBpblxuICBsZXQgZGF0YV9oID0gaCAtIChiX29wICsgYl9oKSBpblxuICBsZXQgXywgbmJfdywgZ3JhZF93LCB0X21heCcgPSBncmFkdWF0aW9uX3N0ZXAgZGF0YV93IGJfdyAwLiB0X21heCBpblxuICBsZXQgdmFfbWluJywgbmJfaCwgZ3JhZF9oLCB2YV9tYXgnID1cbiAgICBncmFkdWF0aW9uX3N0ZXAgZGF0YV9oIGJfdyB2YV9taW4gdmFfbWF4XG4gIGluXG4gIGxldCBkcmF3X2Z1biA9XG4gICAgZHJhd19pbl9kYXRhICgodF9tYXgnLCB2YV9taW4nLCB2YV9tYXgnKSwgKGJfdywgaCAtIGJfaCwgZGF0YV93LCBkYXRhX2gpKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImF4ZXNcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdmFcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5PYnNlcnZhYmxlIHZhbHVlczwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyBiX29wIGJfd1xuICAgICAgKGRhdGFfaCArIGJfb3ApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfaCAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiAoeCAtLiA4LilcbiAgICAgICAgICAgICAgICB5IHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICAoeCAtLiA1LikgeSAoeCArLiA1LikgeSlcbiAgICAgICAgICBOYnIuemVybyAoTmJyLkYgdikpXG4gICAgICAoc3VjYyBuYl9oKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCxAWzxodiAyPjxnIGlkPVxcXCJheGlzX3RcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5UaW1lIChhcmJpdHJhcnkgdW5pdCk8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgKGggLSBiX2gpXG4gICAgICAodyAtIGJfb3ApIChoIC0gYl9oKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX3cgKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgeFxuICAgICAgICAgICAgICAgICh5ICsuIDguKSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgeCAoeSAtLiA1LikgeCAoeSArLiA1LikpXG4gICAgICAgICAgKE5ici5GIHYpIChOYnIuRiB2YV9taW4nKSlcbiAgICAgIChzdWNjIG5iX3cpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALDwvZz5ALEAsXCIgaW5cbiAgZHJhd19mdW5cblxubGV0IGRhdGEgZHJhd19mdW4gbCBmIHAgPVxuICBsZXQgb25lX3BvaW50IHMgdCBpIGYgdmEgPVxuICAgIGRyYXdfZnVuXG4gICAgICAoZnVuIHggeSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+QCxcIlxuICAgICAgICAgICAgc3R5bGVzLihpIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICAgICAgeCB5XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXMgdD0lYSB2PSVhPC90aXRsZT5ALDwvdXNlPkBdQCxcIiBzXG4gICAgICAgICAgTmJyLnByZXR0eV9wcmludCB0IE5ici5wcmludCB2YSlcbiAgICAgIHQgdmFcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJkYXRhXFxcIj5ALCVhPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGkgZiBzIC0+XG4gICAgICAgICBpZiBpID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICBcIkBbPGh2IDI+PGcgaWQ9XFxcImRhdGFfJWlcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCI+QCwlYUBdPC9nPkAsXCJcbiAgICAgICAgICAgICAocHJlZCBpKVxuICAgICAgICAgICAgIGNvbG9ycy4oaSBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgZSAtPiBvbmVfcG9pbnQgcyBlLigwKSBpIGYgZS4oaSkpKVxuICAgICAgICAgICAgIHApKVxuICAgIGxcblxubGV0IGRyYXcgKCh3LCBoKSBhcyBzaXplKSBib3JkZXIgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxzdmdAIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCJAIFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ3aWR0aD1cXFwiJWlcXFwiQCBoZWlnaHQ9XFxcIiVpXFxcIj5AXUAsXCIgdyBoIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCw8ZGVzY3I+JXM8L2Rlc2NyPkAsQCxcIiBzLnRpdGxlIHMuZGVzY3JcbiAgaW5cbiAgbGV0ICgpID0gc3R5bGUgZiBpblxuICBsZXQgKCkgPSBkZWZzIGYgaW5cbiAgbGV0IGRyYXdfZnVuID0gYXhpcyBzaXplIGJvcmRlciBmIHMucG9pbnRzIGluXG4gIGxldCAoKSA9IGxlZ2VuZCB3IGYgcy5sZWdlbmQgaW5cbiAgbGV0ICgpID0gZGF0YSBkcmF3X2Z1biBzLmxlZ2VuZCBmIHMucG9pbnRzIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L3N2Zz5cIlxuXG5sZXQgdG9fc3RyaW5nID8od2lkdGggPSA4MDApIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IHNpemUgPSB3aWR0aCwgaW50X29mX2Zsb2F0IChmbG9hdCB3aWR0aCAvLiBzcXJ0IDIuKSBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGYgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBmICgpIGluXG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCB0b19maWxlIHMgPVxuICBsZXQgZm9ybSwgY2hhbiA9IG5ld19maWxlIHMuZmlsZSBpblxuICBsZXQgc2l6ZSA9IDgwMCwgNjAwIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZm9ybSBzIGluXG4gIGNsb3NlX2ZpbGUgZm9ybSBjaGFuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKkV4cGVydCBtb2RlIHZhbHVlcyopXG5sZXQgZGVmYXVsdEV4dEFycmF5U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEdyYXBoU2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdExpZnRTZXRTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0SGVhcFNpemUgPSByZWYgNVxubGV0IGRlYnVnX21vZGVPbiA9IHJlZiBmYWxzZVxuXG4oKiBleHBlcnQgb3B0aW9uIGZvciBzdG9yaWVzICopXG5cbigqIE51bWJlciBvZiBwb3RlbnRpYWwgc3RhdGVzIHRoYXQgYXJlIHB1dCBpbiB0aGUgY2FjaGUgcGVyIGJpbmRpbmcgc2l0ZSwgc28gYXMgdG8gaGFuZGxlciB3aXRoIHNpZGUgZWZmZWN0cyBpbiBzdG9yaWVzLiBOb25lIC0+IFVubGltaXRlZCBjYWNoZSAqKVxuXG4oKiogTWVtb3J5ICoqKVxubGV0IGNhY2hlX3NpemUgPSByZWYgKE5vbmUgOiBpbnQgb3B0aW9uKVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciBhbGwgb2JzZXJ2YWJsZXMpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5cbigqKiBQcmVjb21wdXRhdGlvbiAqKilcbmxldCBkb19nbG9iYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgcHNldWRvLWludmVyc2UgZXZlbnRzICopXG5sZXQgY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50ID0gdHJ1ZVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciB0aGUgY3VycmVudCBvYnNlcnZhbGUpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5sZXQgZG9fbG9jYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgc2VwYXJhYmxlIGNvbXBvbmVudHMgKilcbmxldCBkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMgPSB0cnVlXG5cbigqIFdoZW5ldmVyIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgYW4gZXZlbnQgaGFzIHRvIGJlIHNlbGVjdGVkIG9yLCBub3QsIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBub3QgdGhlIGxhc3Qgb25lIHRoYXQgY2FuIHBhcmZvcm0gYSByZXF1ZXN0ZWQgYWN0aW9uICopXG5cbigqKiBQcm9wYWdhdGlvbiBoZXVyaXN0aWNzICoqKVxubGV0IGxvb2tfdXBfZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5cbigqIFdoZW5ldmVyIGFuIGV2ZW50IGlzIHJlbW92ZWQsIGNoZWNrZWQgd2hldGhlciB0aGVyZSBpcyBub3Qgb25seSBvbmUgbGVmdCB0byBwZXJmb3JtIGEgcmVxdWlyZWQgYWN0aW9uICopXG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxubGV0IGxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzID0gdHJ1ZVxuXG4oKlVzZXIgZGVmaW5hYmxlIHZhbHVlcyopXG5sZXQgdGltZV9pbmRlcGVuZGVudCA9IHJlZiBmYWxzZVxubGV0IGJsYWNrbGlzdF9ldmVudHMgPSByZWYgZmFsc2VcblxuKCpYTFMgb3V0cHV0IGZvciB0aGUgZ3JpZHMgZHVyaW5nIGNvbXByZXNzaW9uKilcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IHhsc3dlYWtGaWxlTmFtZSA9IFwiZ3JpZF93ZWFrX2NvbXByZXNzaW9uXCJcbmxldCB4bHNzdHJvbmdGaWxlTmFtZSA9IFwiZ3JpZF9zdHJvbmdfY29tcHJlc3Npb25cIlxubGV0IGdldF9jYWNoZV9zaXplICgpID0gIWNhY2hlX3NpemVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCBzcGVjaWVzX2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHV1aWQgPSBSYW5kb20uU3RhdGUuYml0cyAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgZ2V0X2Rlc2MgZmlsZSB0YmwgPVxuICB0cnkgc25kIChIYXNodGJsLmZpbmQgdGJsIGZpbGUpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGUgaW5cbiAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgSGFzaHRibC5hZGQgdGJsIGZpbGUgKGRfY2hhbiwgZCk7XG4gICAgZFxuXG5sZXQgY2xvc2VfZGVzYyAoKSA9XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBwcmludF9kZXNjO1xuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgc3BlY2llc19kZXNjXG5cbmxldCBvdXRwdXRfZmx1eCBkaW5fbmFtZSBmbHV4ID1cbiAgS2FwcGFfZmlsZXMud2l0aF9mbHV4IGRpbl9uYW1lXG4gICAgKGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5odG1sXCIgdGhlblxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2h0bWxfZGluIGYgZmx1eClcbiAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuanNvblwiIHRoZW5cbiAgICAgICBmdW4gZCAtPlxuICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfZGluIGQgZmx1eFxuICAgICBlbHNlXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X2RpbiB+dXVpZCBmIGZsdXgpKVxuXG5sZXQgYWN0c0Rlc2NyID0gcmVmIE5vbmVcbmxldCBlbXB0eUFjdHMgPSByZWYgdHJ1ZVxuXG5sZXQgaW5pdF9hY3Rpdml0aWVzIGVudiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcyAtPlxuICAgIGxldCBub0NvdW50ZXJzID0gIVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gaW5cbiAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICBsZXQgZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICAgIGxldCBuYl9yID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiBpblxuICAgIGxldCAoKSA9IGFjdHNEZXNjciA6PSBTb21lIChkZXNjLCBmb3JtLCBuYl9yKSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PntALHJ1bGVzOkBbW1wiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiLEAsXCJcbiAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgeClcbiAgICAgICAgbmJfclxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCJdQF0sQCxkYXRhOltALFwiXG4gICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgIG5iX3JcblxubGV0IGNsb3NlX2FjdGl2aXRpZXMgKCkgPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoYywgZiwgXykgLT5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxdfUBdQC5cIiBpblxuICAgIGNsb3NlX291dCBjXG5cbmxldCBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXggPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoXywgZiwgbGFzdCkgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgIWVtcHR5QWN0cyB0aGVuXG4gICAgICAgIGVtcHR5QWN0cyA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slaVwiIHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIGxhc3QgZG9cbiAgICAgICAgbGV0IGssIGsnID0gdHJ5IExpc3QuYXNzb2MgaSBmbHV4IHdpdGggTm90X2ZvdW5kIC0+IDAuLCAwLiBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLCVmXCIgKGsnIC0uIGspXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcblxudHlwZSBmZCA9IHsgZGVzYzogb3V0X2NoYW5uZWw7IGZvcm06IEZvcm1hdC5mb3JtYXR0ZXI7IGlzX3RzdjogYm9vbCB9XG5cbnR5cGUgZm9ybWF0ID1cbiAgfCBTdGFuZEJ5IG9mIChzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgYXJyYXkpXG4gIHwgUmF3IG9mIGZkXG4gIHwgU3ZnIG9mIFBwX3N2Zy5zdG9yZVxuXG5sZXQgcGxvdERlc2NyID0gcmVmIE5vbmVcblxubGV0IGNsb3NlX3Bsb3QgKCkgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoU3RhbmRCeSBfKSAtPiAoKVxuICB8IFNvbWUgKFJhdyBwbG90KSAtPiBjbG9zZV9vdXQgcGxvdC5kZXNjXG4gIHwgU29tZSAoU3ZnIHMpIC0+IFBwX3N2Zy50b19maWxlIHNcblxubGV0IHRyYWNlRGVzY3IgPSByZWYgTm9uZVxubGV0IHRyYWNlTm90RW1wdHkgPSByZWYgZmFsc2VcblxubGV0IGNsb3NlX3RyYWNlICgpID1cbiAgbWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRlc2MgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJdXFxufVxcblwiIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2MgaW5cbiAgICB0cmFjZURlc2NyIDo9IE5vbmVcblxubGV0IGluaXRpYWxpemUgYWN0aXZpdGllc19maWxlIHRyYWNlX2ZpbGUgcGxvdFBhY2sgZW52ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB0cmFjZV9maWxlIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPlxuICAgICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgICBsZXQgKCkgPSBUcmFjZS5pbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgaW5cbiAgICAgIHRyYWNlRGVzY3IgOj0gU29tZSBkZXNjXG4gIGluXG4gIGxldCAoKSA9IGluaXRfYWN0aXZpdGllcyBlbnYgYWN0aXZpdGllc19maWxlIGluXG4gIG1hdGNoIHBsb3RQYWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBwYWNrIC0+IHBsb3REZXNjciA6PSBTb21lIChTdGFuZEJ5IHBhY2spXG5cbmxldCBsYXVuY2hfcGxvdCAoZmlsZW5hbWUsIHRpdGxlLCBoZWFkKSA9XG4gIGxldCBmb3JtYXQgPVxuICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi5zdmdcIiB0aGVuXG4gICAgICBTdmdcbiAgICAgICAge1xuICAgICAgICAgIFBwX3N2Zy5maWxlID0gZmlsZW5hbWU7XG4gICAgICAgICAgUHBfc3ZnLnRpdGxlO1xuICAgICAgICAgIFBwX3N2Zy5kZXNjciA9IFwiXFxcInV1aWRcXFwiIDogXFxcIlwiIF4gc3RyaW5nX29mX2ludCB1dWlkIF4gXCJcXFwiXCI7XG4gICAgICAgICAgUHBfc3ZnLmxlZ2VuZCA9IGhlYWQ7XG4gICAgICAgICAgUHBfc3ZnLnBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZW5hbWUgaW5cbiAgICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICAgIGxldCBpc190c3YgPSBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIudHN2XCIgaW5cbiAgICAgIGxldCAoKSA9IGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyAlc0AuXCIgdGl0bGUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQC5cIiB1dWlkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRGF0YS5wcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGQgaGVhZCBpblxuICAgICAgUmF3IHsgZGVzYyA9IGRfY2hhbjsgZm9ybSA9IGQ7IGlzX3RzdiB9XG4gICAgKVxuICBpblxuICBwbG90RGVzY3IgOj0gU29tZSBmb3JtYXRcblxubGV0IHJlYyBwbG90X25vdyBsID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIChTdGFuZEJ5IHApIC0+XG4gICAgbGV0ICgpID0gbGF1bmNoX3Bsb3QgcCBpblxuICAgIHBsb3Rfbm93IGxcbiAgfCBTb21lIChSYXcgZmQpIC0+XG4gICAgRGF0YS5wcmludF9wbG90X2xpbmUgfmlzX3RzdjpmZC5pc190c3YgTmJyLnByaW50X29wdGlvbiBmZC5mb3JtIGxcbiAgfCBTb21lIChTdmcgcykgLT4gcy5QcF9zdmcucG9pbnRzIDwtIGwgOjogcy5QcF9zdmcucG9pbnRzXG5cbmxldCBzbmFwc2hvdCBmaWxlIHMgPVxuICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5kb3RcIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmRvdFwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmpzb25cIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmpzb25cIiBzLkRhdGEuc25hcHNob3RfZXZlbnQgKGZ1biBkIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9zbmFwc2hvdCBkIHMpXG4gIGVsc2VcbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIua2FcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuXG5sZXQgcHJpbnRfc3BlY2llcyB0aW1lIGYgbWl4dHVyZSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlZzogQFs8aD4lYUBdQC5cIiB0aW1lIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4dHVyZVxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG5cbmxldCBnbyA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5TbmFwc2hvdCAoZiwgcykgLT4gc25hcHNob3QgZiBzXG4gIHwgRGF0YS5ESU4gKG4sIGYpIC0+IG91dHB1dF9mbHV4IG4gZlxuICB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIChyLCBmbHV4KSAtPiBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXhcbiAgfCBEYXRhLlBsb3QgeCAtPiBwbG90X25vdyB4XG4gIHwgRGF0YS5QcmludCBwIC0+XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggcC5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIHN0ZG91dFxuICAgICAgfCBTb21lIGZpbGUgLT4gZ2V0X2Rlc2MgZmlsZSBwcmludF9kZXNjXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiJXNALlwiIHAuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LnByaW50ZiBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gd2FybmluZ19idWZmZXIgOj0gKHBvcywgbXNnKSA6OiAhd2FybmluZ19idWZmZXJcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdGVwIC0+XG4gICAgKG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgIXRyYWNlTm90RW1wdHkgdGhlblxuICAgICAgICAgIG91dHB1dF9jaGFyIGQgJywnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0cmFjZU5vdEVtcHR5IDo9IHRydWVcbiAgICAgIGluXG4gICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIFRyYWNlLndyaXRlX3N0ZXAgZCBzdGVwKVxuICB8IERhdGEuU3BlY2llcyAoZmlsZSwgdGltZSwgbWl4dHVyZSkgLT5cbiAgICBsZXQgZGVzYyA9IGdldF9kZXNjIGZpbGUgc3BlY2llc19kZXNjIGluXG4gICAgcHJpbnRfc3BlY2llcyB0aW1lIGRlc2MgbWl4dHVyZVxuXG5sZXQgaW5wdXRzRGVzYyA9IHJlZiBOb25lXG5cbmxldCBmbHVzaF93YXJuaW5nICgpID1cbiAgbGV0IGwgPSBMaXN0LnJldiAhd2FybmluZ19idWZmZXIgaW5cbiAgbGV0ICgpID0gd2FybmluZ19idWZmZXIgOj0gW10gaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIEZvcm1hdC5lcnJfZm9ybWF0dGVyIG1zZylcbiAgICBsXG5cbmxldCBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgICAgIFwiQC4lJW1vZDogW0VdID0gJWkgZG8gJFNUT1A7QC5cIiBldmVudFxuICAgIGluXG4gICAgY2xvc2Vfb3V0IGlucHV0c1xuXG5sZXQgY2xvc2UgP2V2ZW50ICgpID1cbiAgbGV0ICgpID0gY2xvc2VfcGxvdCAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV90cmFjZSAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9hY3Rpdml0aWVzICgpIGluXG4gIGxldCAoKSA9IGZsdXNoX3dhcm5pbmcgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW5wdXQgP2V2ZW50ICgpIGluXG4gIGNsb3NlX2Rlc2MgKClcblxubGV0IGluaXRpYWxfaW5wdXRzIGNvbmYgZW52IGluaXQgfmZpbGVuYW1lID1cbiAgbGV0IGlucHV0cyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0X2ZyZXNoIGZpbGVuYW1lIFtdIFwiXCIgXCIua2FcIiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cyBpblxuICBsZXQgKCkgPSBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzIH51dWlkIGNvbmYgZW52IGlucHV0c19mb3JtIGluaXQgaW5cbiAgaW5wdXRzRGVzYyA6PSBTb21lIGlucHV0c1xuXG5sZXQgaW5wdXRfbW9kaWZpY2F0aW9ucyBlbnYgZXZlbnQgbW9kcyA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiIGV2ZW50XG4gICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+ZW52KSlcbiAgICAgIG1vZHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGlyZWN0aXZlX3VuaXQgPSBUaW1lIHwgRXZlbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGFsZ192YXJfb3ZlcndyaXRlOiAoc3RyaW5nICogTmJyLnQpIGxpc3Q7XG4gIG11dGFibGUgbWFyc2hhbGl6ZWRJbkZpbGU6IHN0cmluZztcbiAgbXV0YWJsZSBpbml0aWFsTWl4OiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHJlc2NhbGU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBzZWVkVmFsdWU6IGludCBvcHRpb247XG4gIG11dGFibGUgdW5pdDogZGlyZWN0aXZlX3VuaXQ7XG4gIG11dGFibGUgbWFyc2hhbGl6ZU91dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgZG9tYWluT3V0cHV0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSB0cmFjZUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgbG9nRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBjb21waWxlX21vZGU6IGJvb2w7XG4gIG11dGFibGUgc2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBtdXRhYmxlIHNob3dFZmZpY2llbmN5OiBib29sO1xuICBtdXRhYmxlIHRpbWVJbmRlcGVuZGVudDogYm9vbDtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGFsZ192YXJfb3ZlcndyaXRlID0gW107XG4gICAgcmVzY2FsZSA9IE5vbmU7XG4gICAgbWFyc2hhbGl6ZWRJbkZpbGUgPSBcIlwiO1xuICAgIGluaXRpYWxNaXggPSBOb25lO1xuICAgIHNlZWRWYWx1ZSA9IE5vbmU7XG4gICAgdW5pdCA9IFRpbWU7XG4gICAgbWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lO1xuICAgIGRvbWFpbk91dHB1dEZpbGUgPSBOb25lO1xuICAgIHRyYWNlRmlsZSA9IE5vbmU7XG4gICAgbG9nRmlsZSA9IFNvbWUgXCJpbnB1dHNcIjtcbiAgICBjb21waWxlX21vZGUgPSBmYWxzZTtcbiAgICBzaGFyaW5nID0gUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zO1xuICAgIHNob3dFZmZpY2llbmN5ID0gZmFsc2U7XG4gICAgdGltZUluZGVwZW5kZW50ID0gZmFsc2U7XG4gIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLW1peHR1cmVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWMgLT4gdC5pbml0aWFsTWl4IDwtIFNvbWUgZmljKSxcbiAgICAgIFwiVGFrZSB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoaXMgZmlsZSAoaWdub3JlICVpbml0IGZyb20gb3RoZXIgZmlsZXMpXCIgKTtcbiAgICAoIFwiLXZhclwiLFxuICAgICAgQXJnLlR1cGxlXG4gICAgICAgIChsZXQgdG1wX3Zhcl9uYW1lID0gcmVmIFwiXCIgaW5cbiAgICAgICAgIFtcbiAgICAgICAgICAgQXJnLlN0cmluZyAoZnVuIG5hbWUgLT4gdG1wX3Zhcl9uYW1lIDo9IG5hbWUpO1xuICAgICAgICAgICBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgKGZ1biB2YXJfdmFsIC0+XG4gICAgICAgICAgICAgICB0LmFsZ192YXJfb3ZlcndyaXRlIDwtXG4gICAgICAgICAgICAgICAgICggIXRtcF92YXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgICAgICAgICAgICAgOjogdC5hbGdfdmFyX292ZXJ3cml0ZSk7XG4gICAgICAgICBdKSxcbiAgICAgIFwiU2V0IGEgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZVwiICk7XG4gICAgKCBcIi1sb2FkLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpbGUgLT4gdC5tYXJzaGFsaXplZEluRmlsZSA8LSBmaWxlKSxcbiAgICAgIFwibG9hZCBzaW11bGF0aW9uIHBhY2thZ2UgaW5zdGVhZCBvZiBrYXBwYSBmaWxlc1wiICk7XG4gICAgKCBcIi1yZXNjYWxlXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBpIC0+IHQucmVzY2FsZSA8LSBTb21lIGkpLFxuICAgICAgXCJBcHBseSByZXNjYWxpbmcgZmFjdG9yIHRvIGluaXRpYWwgY29uZGl0aW9uXCIgKTtcbiAgICAoIFwiLXVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJ0aW1lXCIgfCBcIlRpbWVcIiB8IFwidFwiIC0+IHQudW5pdCA8LSBUaW1lXG4gICAgICAgIHwgXCJldmVudFwiIHwgXCJldmVudHNcIiB8IFwiZVwiIHwgXCJFdmVudFwiIHwgXCJFdmVudHNcIiAtPiB0LnVuaXQgPC0gRXZlbnRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCB1bml0OiBcIiBeIHMpKSksXG4gICAgICBcInVuaXQgKHRpbWUvZXZlbnQpIGluIHdoaWNoIGxpbWl0IGFuZCBwbG90IHBlcmlvZCBhcmUgc3BlY2lmaWVkXCIgKTtcbiAgICAoIFwiLWVcIixcbiAgICAgIEFyZy5JbnRcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy1lJyBoYXMgYmVlbiByZXBsYWNlIGJ5ICctdSBldmVudCAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZSBeIFwiJ1wiKSkpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiICk7XG4gICAgKCBcIi1tYWtlLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG1hcnNoYWxpemVPdXRGaWxlIC0+IHQubWFyc2hhbGl6ZU91dEZpbGUgPC0gU29tZSBtYXJzaGFsaXplT3V0RmlsZSksXG4gICAgICBcInNhdmUga2FwcGEgZmlsZXMgYXMgYSBzaW11bGF0aW9uIHBhY2thZ2VcIiApO1xuICAgICggXCItZHVtcC1jY1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGRvbWFpbk91dHB1dEZpbGUgLT4gdC5kb21haW5PdXRwdXRGaWxlIDwtIFNvbWUgZG9tYWluT3V0cHV0RmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgZG9tYWluIG9mIG9ic2VydmFibGVzXCIgKTtcbiAgICAoIFwiLXRyYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gdHJhY2VGaWxlIC0+IHQudHJhY2VGaWxlIDwtIFNvbWUgdHJhY2VGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBzaW11bGF0aW9uIHRyYWNlXCIgKTtcbiAgICAoIFwiLS10aW1lLWluZGVwZW5kZW50XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQudGltZUluZGVwZW5kZW50IDwtIHRydWUpLFxuICAgICAgXCJEaXNhYmxlIHRoZSB1c2Ugb2YgdGltZSBpcyBzdG9yeSBoZXVyaXRpY3MgKGZvciB0ZXN0IHN1aXRlKVwiICk7XG4gICAgKCBcIi1zZWVkXCIsXG4gICAgICBBcmcuSW50IChmdW4gaSAtPiB0LnNlZWRWYWx1ZSA8LSBTb21lIGkpLFxuICAgICAgXCJTZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcIiApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5zaG93RWZmaWNpZW5jeSA8LSB0cnVlKSxcbiAgICAgIFwiS2FTaW0gdGVsbHMgaG93IGZhc3QgaXQgcnVuc1wiICk7XG4gICAgKCBcIi1zaGFyaW5nXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwibm9cIiB8IFwibm9uZVwiIHwgXCJOb25lXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTm9fc2hhcmluZ1xuICAgICAgICB8IFwiQ29tcGF0aWJsZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgXCJtYXhcIiB8IFwiTWF4XCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCBzaGFyaW5nIGxldmVsOiBcIiBeIHMpKSksXG4gICAgICBcIkxldmVsIG9mIHNoYXJpbmcgY29tcHV0ZWQgYmV0d2VlbiBwYXR0ZXJucyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gXFxcbiAgICAgICAoTm9uZS9Db21wYXRpYmxlL01heClcIiApO1xuICAgICggXCItLWNvbXBpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5jb21waWxlX21vZGUgPC0gdHJ1ZSksXG4gICAgICBcIkRpc3BsYXkgcnVsZSBjb21waWxhdGlvbiBhcyBhY3Rpb24gbGlzdFwiICk7XG4gICAgKCBcIi1sb2dcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBsb2dGaWxlIC0+IHQubG9nRmlsZSA8LSBTb21lIGxvZ0ZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcmVnZW5lcmF0ZSB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgICAoIFwiLS1uby1sb2dcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5sb2dGaWxlIDwtIE5vbmUpLFxuICAgICAgXCJEbyBub3QgZ2VuZXJhdGUgYSBmaWxlIHRvIHJlZG8gdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlcHJvY2Vzc2VkX2FzdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBzdG9yeV9jb21wcmVzc2lvbjogYm9vbCAqIGJvb2wgKiBib29sO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGFzdF9jb21waWxlZF9kYXRhOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGE7XG4gIG92ZXJ3cml0ZV9pbml0OlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlLCBSYXdfbWl4dHVyZS50LCBpbnQpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0IG9wdGlvbjtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbnR5cGUgY29tcGlsYXRpb25fcmVzdWx0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIGVudjogTW9kZWwudDtcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICBzdG9yeV9jb21wcmVzc2lvbjogKGJvb2wgKiBib29sICogYm9vbCkgb3B0aW9uO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGluaXRfbDogKFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSkgbGlzdDtcbiAgY291bnRlcl9vcHQ6IENvdW50ZXIudCBvcHRpb247XG59XG5cbmxldCBwcmVwcm9jZXNzX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSA/a2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChhc3QgOiAoXywgXywgXywgXywgXykgQXN0LmNvbXBpbCkgOiBwcmVwcm9jZXNzZWRfYXN0ID1cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgc2ltdWxhdGlvbiBwYXJhbWV0ZXJzQC5cIiBpblxuICBsZXQgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGUgPVxuICAgIENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9uc1xuICBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBTYW5pdHkgY2hlY2tzQC5cIiBpblxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvbiBpblxuICBsZXQgdmFyX292ZXJ3cml0ZSwgaW5pdGlhbE1peCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncyB3aXRoXG4gICAgfCBOb25lIC0+IFtdLCBOb25lXG4gICAgfCBTb21lIGthc2ltX2FyZ3MgLT5cbiAgICAgIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5hbGdfdmFyX292ZXJ3cml0ZSwga2FzaW1fYXJncy5LYXNpbV9hcmdzLmluaXRpYWxNaXhcbiAgaW5cbiAgbGV0IGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhID1cbiAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSB+c3ludGF4X3ZlcnNpb25cbiAgICAgIH52YXJfb3ZlcndyaXRlIGFzdFxuICBpblxuICBsZXQgb3ZlcndyaXRlX2luaXQsIG92ZXJ3cml0ZV90MCA9XG4gICAgbWF0Y2ggaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgICB8IEFzdC5WMyAtPlxuICAgICAgICAgIEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBBc3QuZW1wdHlfY29tcGlsIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyBpblxuICAgICAgKCBTb21lXG4gICAgICAgICAgKExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXJcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hbGdfdmFyc19maW5kZXIgY29tcGlsLkFzdC5pbml0KSxcbiAgICAgICAgY29uZi5Db25maWd1cmF0aW9uLmluaXRpYWwgKVxuICBpblxuICB7XG4gICAgY29uZjtcbiAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICBmb3JtYXRDZmxvdztcbiAgICBjZmxvd0ZpbGU7XG4gICAgYXN0X2NvbXBpbGVkX2RhdGE7XG4gICAgb3ZlcndyaXRlX2luaXQ7XG4gICAgb3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBzeW50YXhfdmVyc2lvbiBmaWxlX2xpc3QgPVxuICBsZXQgY29tcGlsaW5nX2Z1bmN0aW9uID1cbiAgICBtYXRjaCBzeW50YXhfdmVyc2lvbiB3aXRoXG4gICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gICAgfCBBc3QuVjMgLT4gS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0IGNvbXBpbGluZ19mdW5jdGlvbiBBc3QuZW1wdHlfY29tcGlsIGZpbGVfbGlzdFxuXG5sZXQgZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIGNsaV9hcmdzID1cbiAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lc1xuXG5sZXQgZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfYXJncyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgPVxuICBsZXQgYXN0IDogKEFzdC5hZ2VudCwgQXN0Lm1peHR1cmUsIEFzdC5taXh0dXJlLCBzdHJpbmcsIEFzdC5ydWxlKSBBc3QuY29tcGlsID1cbiAgICBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXNcbiAgaW5cbiAgcHJlcHJvY2Vzc19hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3Mgfmthc2ltX2FyZ3MgYXN0XG5cbnR5cGUgY29tcGlsYXRpb25fcGFjayA9IHtcbiAgY29tcGlsYXRpb25fcmVzdWx0OiBjb21waWxhdGlvbl9yZXN1bHQ7XG4gIGFsZ19vdmVyd3JpdGU6IChpbnQgKiBQcmltaXRpdmVzLmFsZ19leHByKSBsaXN0O1xuICBvdmVyd3JpdGVfdDA6IGZsb2F0IG9wdGlvbjtcbn1cblxubGV0IGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH4oY29tcGlsZV9tb2RlX29uIDogYm9vbClcbiAgICAocHJlcHJvY2Vzc2VkX2FzdCA6IHByZXByb2Nlc3NlZF9hc3QpIDogY29tcGlsYXRpb25fcGFjayA9XG4gIGxldCBuLCB3LCBzID0gcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvbiBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBDb21waWxpbmcuLi5ALlwiIGluXG4gIGxldCBlbnYsIGhhc190cmFja2luZywgaW5pdF9sID1cbiAgICBFdmFsLmNvbXBpbGUgfm91dHB1dHM6T3V0cHV0cy5nb1xuICAgICAgfnBhdXNlOihmdW4gZiAtPiBmICgpKVxuICAgICAgfnJldHVybjooZnVuIHggLT4geClcbiAgICAgIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH5zaGFyaW5nOmthc2ltX2FyZ3MuS2FzaW1fYXJncy5zaGFyaW5nXG4gICAgICA/cmVzY2FsZV9pbml0Omthc2ltX2FyZ3MuS2FzaW1fYXJncy5yZXNjYWxlXG4gICAgICA/b3ZlcndyaXRlX2luaXQ6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfaW5pdFxuICAgICAgP292ZXJ3cml0ZV90MDpwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmFnZW50c19zaWdcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXNcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXBcbiAgICAgIHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gIGluXG4gIGxldCBzdG9yeV9jb21wcmVzc2lvbiA9XG4gICAgaWYgaGFzX3RyYWNraW5nICYmIChuIHx8IHcgfHwgcykgdGhlblxuICAgICAgU29tZSBwcmVwcm9jZXNzZWRfYXN0LnN0b3J5X2NvbXByZXNzaW9uXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICBpblxuICB7XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgICAgIHtcbiAgICAgICAgY29uZiA9IHByZXByb2Nlc3NlZF9hc3QuY29uZjtcbiAgICAgICAgZW52O1xuICAgICAgICBjb250YWN0X21hcCA9IHByZXByb2Nlc3NlZF9hc3QuYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXA7XG4gICAgICAgIHVwZGF0ZWRfYWxnX3ZhcnMgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnVwZGF0ZWRfYWxnX3ZhcnM7XG4gICAgICAgIHN0b3J5X2NvbXByZXNzaW9uO1xuICAgICAgICBmb3JtYXRDZmxvdyA9IHByZXByb2Nlc3NlZF9hc3QuZm9ybWF0Q2Zsb3c7XG4gICAgICAgIGNmbG93RmlsZSA9IHByZXByb2Nlc3NlZF9hc3QuY2Zsb3dGaWxlO1xuICAgICAgICBpbml0X2w7XG4gICAgICAgIGNvdW50ZXJfb3B0ID0gTm9uZTtcbiAgICAgIH07XG4gICAgYWxnX292ZXJ3cml0ZSA9IFtdO1xuICAgIG92ZXJ3cml0ZV90MCA9IHByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIG1hcnNoYWxpemVkX2ZpbGVcbiAgICA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBhc3NlcnQgKG1hcnNoYWxpemVkX2ZpbGUgPD4gXCJcIik7XG4gIHRyeVxuICAgIGxldCBkID0gb3Blbl9pbl9iaW4gbWFyc2hhbGl6ZWRfZmlsZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lcyA8PiBbXSB0aGVuXG4gICAgICAgIHdhcm5pbmcgfnBvczpMb2MuZHVtbXkgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgXCJTaW11bGF0aW9uIHBhY2thZ2UgbG9hZGVkLCBhbGwga2FwcGEgZmlsZXMgYXJlIGlnbm9yZWRcIilcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQucHJpbnRmIFwiKyBMb2FkaW5nIHNpbXVsYXRpb24gcGFja2FnZSAlcy4uLkAuXCIgbWFyc2hhbGl6ZWRfZmlsZVxuICAgIGluXG4gICAgbGV0IGNvbXBpbGF0aW9uX3Jlc3VsdCA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9IE1hcnNoYWwuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBTdGRsaWIuY2xvc2VfaW4gZCBpblxuICAgIGxldCBhbGdfb3ZlcndyaXRlID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKHMsIHYpIC0+XG4gICAgICAgICAgKCBNb2RlbC5udW1fb2ZfYWxnIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBzKSBjb21waWxhdGlvbl9yZXN1bHQuZW52LFxuICAgICAgICAgICAgQWxnX2V4cHIuQ09OU1QgdiApKVxuICAgICAgICBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuYWxnX3Zhcl9vdmVyd3JpdGVcbiAgICBpblxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5pbml0aWFsTWl4IHdpdGhcbiAgICB8IE5vbmUgLT4geyBjb21waWxhdGlvbl9yZXN1bHQ7IGFsZ19vdmVyd3JpdGU7IG92ZXJ3cml0ZV90MCA9IE5vbmUgfVxuICAgIHwgU29tZSBmaWxlIC0+XG4gICAgICBsZXQgY29tcGlsID1cbiAgICAgICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb24gWyBmaWxlIF1cbiAgICAgIGluXG4gICAgICBsZXQgb3ZlcndyaXRlX3QwIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgKENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyB8PiBmdW4gKGEsIF8sIF8sIF8pIC0+IGEpXG4gICAgICAgIHw+IGZ1biBjb25mIC0+IGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsXG4gICAgICBpblxuXG4gICAgICBsZXQgcmF3X2luaXRzID1cbiAgICAgICAgTEthcHBhX2NvbXBpbGVyLmluaXRfb2ZfYXN0IH53YXJuaW5nXG4gICAgICAgICAgfnN5bnRheF92ZXJzaW9uOmNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQuY29udGFjdF9tYXBcbiAgICAgICAgICAoTW9kZWwudG9rZW5zX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIChNb2RlbC5hbGdzX2ZpbmRlciBjb21waWxhdGlvbl9yZXN1bHQuZW52KVxuICAgICAgICAgIGNvbXBpbC5Bc3QuaW5pdFxuICAgICAgaW5cbiAgICAgIGxldCBpbml0X2wgPVxuICAgICAgICBFdmFsLmNvbXBpbGVfaW5pdHMgfmRlYnVnX21vZGU6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfndhcm5pbmdcbiAgICAgICAgICA/cmVzY2FsZTprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZSB+Y29tcGlsZV9tb2RlX29uOmZhbHNlXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYgcmF3X2luaXRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBjb21waWxhdGlvbl9yZXN1bHQgPSB7IGNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGluaXRfbCB9O1xuICAgICAgICBhbGdfb3ZlcndyaXRlO1xuICAgICAgICBvdmVyd3JpdGVfdDA7XG4gICAgICB9XG4gIHdpdGhcbiAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIF8gYXMgZSAtPiByYWlzZSBlXG4gIHwgX2V4biAtPlxuICAgIEZvcm1hdC5wcmludGZcbiAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIHNlZW1zIHRvIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBcXFxuICAgICAgIG9mIEthU2ltLCBhYm9ydGluZy4uLlwiO1xuICAgIGV4aXQgMVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgKHBhY2sgOiBjb21waWxhdGlvbl9wYWNrKSA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCBpbml0X3RfZnJvbV9maWxlcyA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lXG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIDAuIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsKVxuICAgICAgcGFjay5vdmVyd3JpdGVfdDBcbiAgaW5cbiAgbGV0IGluaXRfdCwgbWF4X3RpbWUsIGluaXRfZSwgbWF4X2V2ZW50LCBwbG90X3BlcmlvZCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncy5LYXNpbV9hcmdzLnVuaXQgd2l0aFxuICAgIHwgS2FzaW1fYXJncy5UaW1lIC0+XG4gICAgICAoIE9wdGlvbl91dGlsLnVuc29tZSBpbml0X3RfZnJvbV9maWxlcyBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUsXG4gICAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5EVCBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLnVuc29tZSAoQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gICAgfCBLYXNpbV9hcmdzLkV2ZW50IC0+XG4gICAgICAoIGluaXRfdF9mcm9tX2ZpbGVzLFxuICAgICAgICBOb25lLFxuICAgICAgICBTb21lXG4gICAgICAgICAgKGludF9vZl9mbG9hdCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5taW5WYWx1ZSkpLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW50X29mX2Zsb2F0IGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5tYXhWYWx1ZSxcbiAgICAgICAgKG1hdGNoIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5wbG90UGVyaW9kIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gQ29uZmlndXJhdGlvbi5ERSAoaW50X29mX2Zsb2F0IChjZWlsIGEpKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uREUgMSlcbiAgICAgICAgICAgIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmNvbmYuQ29uZmlndXJhdGlvbi5wbG90UGVyaW9kKSApXG4gIGluXG4gIGxldCBjb3VudGVyID1cbiAgICBDb3VudGVyLmNyZWF0ZSB+aW5pdF90ID9pbml0X2UgP21heF90aW1lID9tYXhfZXZlbnQgfnBsb3RfcGVyaW9kXG4gICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICgpXG4gIGluXG4gIGxldCBlbnYgPVxuICAgIGlmXG4gICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuYmF0Y2htb2RlXG4gICAgICAmJiBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lXG4gICAgdGhlblxuICAgICAgTW9kZWwucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZTooQ291bnRlci5tYXhfdGltZSBjb3VudGVyKVxuICAgICAgICA/bWF4X2V2ZW50czooQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIpXG4gICAgICAgIH51cGRhdGVkX3ZhcnM6cGFjay5jb21waWxhdGlvbl9yZXN1bHQudXBkYXRlZF9hbGdfdmFyc1xuICAgICAgICB+YWxnX292ZXJ3cml0ZTpwYWNrLmFsZ19vdmVyd3JpdGUgcGFjay5jb21waWxhdGlvbl9yZXN1bHQuZW52XG4gICAgZWxzZVxuICAgICAgTW9kZWwub3ZlcndyaXRlX3ZhcnMgcGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICBpblxuICB7IHBhY2suY29tcGlsYXRpb25fcmVzdWx0IHdpdGggZW52OyBjb3VudGVyX29wdCA9IFNvbWUgY291bnRlciB9XG5cbmxldCBnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXNzZWRfYXN0IH53YXJuaW5nID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyBwcmVwcm9jZXNzZWRfYXN0IDpcbiAgICBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgcGFjayA9XG4gICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vbiBwcmVwcm9jZXNzZWRfYXN0XG4gIGluXG4gIGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBwYWNrXG5cbmxldCBnZXRfY29tcGlsYXRpb24gfndhcm5pbmcgfmRlYnVnX21vZGUgPyhjb21waWxlX21vZGVfb24gPSBmYWxzZSlcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzIDogY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5tYXJzaGFsaXplZEluRmlsZSB3aXRoXG4gICAgfCBcIlwiIC0+XG4gICAgICBsZXQgcHJlcHJvY2Vzc2VkX2FzdCA9XG4gICAgICAgIGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGUgY2xpX2FyZ3NcbiAgICAgIGluXG4gICAgICBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgIHByZXByb2Nlc3NlZF9hc3RcbiAgICB8IG1hcnNoYWxpemVkX2ZpbGUgLT5cbiAgICAgIGdldF9wYWNrX2Zyb21fbWFyc2hhbGl6ZWRmaWxlIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3NcbiAgICAgICAgbWFyc2hhbGl6ZWRfZmlsZVxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0geyBtdXRhYmxlIGRlbGltaXRlcjogY2hhciB9XG5cbmxldCBkZWZhdWx0IDogdCA9IHsgZGVsaW1pdGVyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS1kZWxpbWl0ZXJcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZCA9IFNjYW5mLnVuZXNjYXBlZCBkIGluXG4gICAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICAgIGlmIDEgPSBTdHJpbmcubGVuZ3RoIGQgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5nZXQgZCAwXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImRlbGltZXRlciBoYXMgbXVsdGlwbGUgY2hhcmFjdGVycyAnJXMnXCIgZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gdC5kZWxpbWl0ZXIgPC0gZCBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB3aXRoIFNjYW5mLlNjYW5fZmFpbHVyZSBfIC0+XG4gICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgZGVsaW1ldGVyICclcydcIiBkKSkpLFxuICAgICAgXCJEZWxpbWl0ZXIgZm9yIG1lc3NhZ2UgcGFzc2luZ1wiICk7XG4gIF1cbiIsIigqKlxuICAqIGxvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjYvMDEvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIGVuY29kaW5nID1cbiAgfCBNYXRyaXhcbiAgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGhcbiAgfCBIVE1MXG4gIHwgSFRNTF9UYWJ1bGFyXG4gIHwgRE9UXG4gIHwgVFhUXG4gIHwgVFhUX1RhYnVsYXJcbiAgfCBYTFNcbiAgfCBPY3RhdmVcbiAgfCBNYXRsYWJcbiAgfCBNYXBsZVxuICB8IE1hdGhlbWF0aWNhXG4gIHwgU0JNTFxuICB8IERPVE5FVFxuICB8IEpzb25cbiAgfCBHRVBISVxuXG5tb2R1bGUgdHlwZSBGb3JtYXRNYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGFkZCA6IGVuY29kaW5nIC0+ICdhIC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmluZCA6IGVuY29kaW5nIC0+ICdhIHQgLT4gJ2FcbiAgdmFsIGVtcHR5IDogJ2EgdFxuZW5kXG5cbm1vZHVsZSBGb3JtYXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGVuY29kaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5lbmQpXG5cbnR5cGUgdG9rZW4gPSBTdHJpbmcgb2Ygc3RyaW5nIHwgQnJlYWthYmxlX3NwYWNlIHwgQnJlYWthYmxlX2hpbnRcblxudHlwZSBsb2dnZXIgPVxuICB8IERFVk5VTFxuICB8IEZvcm1hdHRlciBvZiBGb3JtYXQuZm9ybWF0dGVyXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIG9mIHN0cmluZyBDaXJjdWxhcl9idWZmZXJzLnQgcmVmXG4gIHwgSW5maW5pdGVfYnVmZmVyIG9mIHN0cmluZyBJbmZpbml0ZV9idWZmZXJzLnQgcmVmXG5cbmxldCBicmVha2FibGUgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhUTUxfVGFidWxhciB8IEhUTUwgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBUWFQgLT4gdHJ1ZVxuICB8IE1hdHJpeCB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IERPVFxuICB8IEdFUEhJIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBmYWxzZVxuXG50eXBlIHQgPSB7XG4gIGVuY29kaW5nOiBlbmNvZGluZztcbiAgbG9nZ2VyOiBsb2dnZXI7XG4gIGNoYW5uZWxfb3B0OiBvdXRfY2hhbm5lbCBvcHRpb247XG4gIG11dGFibGUgY3VycmVudF9saW5lOiB0b2tlbiBsaXN0O1xufVxuXG5sZXQgZ2V0X2VuY29kaW5nX2Zvcm1hdCB0ID0gdC5lbmNvZGluZ1xuXG5sZXQgZHVtbXlfaHRtbF9sb2dnZXIgPVxuICB7XG4gICAgKCogIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHkgOyopXG4gICAgZW5jb2RpbmcgPSBIVE1MO1xuICAgIGxvZ2dlciA9IERFVk5VTDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBkdW1teV90eHRfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gVFhUO1xuICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY3VycmVudF9saW5lID0gW107XG4gICAgKCogZnJlc2hfaWQgPSByZWYgMTtcbiAgICAgICBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbigqIFdhcm5pbmcsIHdlIGhhdmUgdG8ga2VlcCB0aGUgY2hhcmFjdGVyIEAgd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhIGxldHRlciBvciBhIGRpZ2l0IHNob3VsZCBiZSBwcmVzZXJ2ZWQgKilcblxubGV0IGR1bXBfY2xlYW5fc3RyaW5nIGZtdCA9XG4gIFN0cmluZy5pdGVyIChmdW4gYSAtPlxuICAgICAgaWYgYSA9ICdcXG4nIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWNcIiBhKVxuXG5sZXQgY2xlYW5fc3RyaW5nIHMgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gIGxldCBmbXRfYnVmZmVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmZmVyIGluXG4gIGxldCAoKSA9IGR1bXBfY2xlYW5fc3RyaW5nIGZtdF9idWZmZXIgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYnVmZmVyXG5cbmxldCBjbGVhbiBmbXQgPVxuICBsZXQgcyA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIHMgaW5cbiAgRm9ybWF0LmtmcHJpbnRmXG4gICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgZHVtcF9jbGVhbl9zdHJpbmcgZm10IChCdWZmZXIuY29udGVudHMgcykpXG4gICAgZm10X2J1ZmZlclxuXG5sZXQgZnByaW50ZiA/KGZwcmludG5ld2xpbmUgPSBmYWxzZSkgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciwgZnByaW50bmV3bGluZSB8fCBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBERVZOVUwsIF8gLT4gRm9ybWF0LmlmcHJpbnRmIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIHwgRm9ybWF0dGVyIGZtdCwgdHJ1ZSAtPiBGb3JtYXQuZnByaW50ZiBmbXRcbiAgfCBGb3JtYXR0ZXIgZm10LCBmYWxzZSAtPiBjbGVhbiBmbXRcbiAgfCBDaXJjdWxhcl9idWZmZXIgXywgYm9vbCB8IEluZmluaXRlX2J1ZmZlciBfLCBib29sIC0+XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgICBGb3JtYXQua2ZwcmludGZcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10X2J1ZmZlciAoKSBpblxuICAgICAgICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICAgICAgbG9nZ2VyLmN1cnJlbnRfbGluZSA8LVxuICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgY2xlYW5fc3RyaW5nIHN0cilcbiAgICAgICAgICA6OiBsb2dnZXIuY3VycmVudF9saW5lKVxuICAgICAgZm10X2J1ZmZlclxuXG5sZXQgcHJpbnRfYnJlYWthYmxlX3NwYWNlIGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAgXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX3NwYWNlIDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCIgXCJcblxubGV0IHByaW50X2JyZWFrYWJsZV9oaW50IGxvZ2dlciA9XG4gIGlmIGJyZWFrYWJsZSBsb2dnZXIuZW5jb2RpbmcgdGhlbiAoXG4gICAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gICAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiBmcHJpbnRmIGxvZ2dlciBcIkAsXCJcbiAgICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT5cbiAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gQnJlYWthYmxlX2hpbnQgOjogbG9nZ2VyLmN1cnJlbnRfbGluZVxuICApIGVsc2VcbiAgICBmcHJpbnRmIGxvZ2dlciBcIlwiXG5cbmxldCBlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIC0+IFwiPEJyPlwiXG4gIHwgTWF0cml4IHwgTWF0bGFiIHwgTWF0aGVtYXRpY2EgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBKc29uXG4gIHwgR0VQSEkgfCBIVE1MX1RhYnVsYXIgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgIFwiXCJcblxubGV0IGR1bXBfdG9rZW4gZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHNcbiAgfCBCcmVha2FibGVfc3BhY2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAgXCJcbiAgfCBCcmVha2FibGVfaGludCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQCxcIlxuXG5sZXQgcHJpbnRfbmV3bGluZSBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIGZwcmludGYgfmZwcmludG5ld2xpbmU6dHJ1ZSBsb2dnZXIgXCIlcyV0XCIgKGVuZF9vZl9saW5lX3N5bWJvbCBsb2dnZXIpXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSlcbiAgaW5cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIENpcmN1bGFyX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuICB8IEluZmluaXRlX2J1ZmZlciBiZiAtPlxuICAgIGxldCBiZicgPVxuICAgICAgSW5maW5pdGVfYnVmZmVycy5hZGRcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgKFBwLmxpc3QgKGZ1biBfIC0+ICgpKSBkdW1wX3Rva2VuKVxuICAgICAgICAgICAoTGlzdC5yZXYgbG9nZ2VyLmN1cnJlbnRfbGluZSkpXG4gICAgICAgICFiZlxuICAgIGluXG4gICAgbGV0ICgpID0gYmYgOj0gYmYnIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmN1cnJlbnRfbGluZSA8LSBbXSBpblxuICAgICgpXG5cbmxldCBwcmludF9jZWxsIGxvZ2dlciBzID1cbiAgbGV0IG9wZW5fY2VsbF9zeW1ib2wsIGNsb3NlX2NlbGxfc3ltYm9sID1cbiAgICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICAgIHwgSFRNTF9UYWJ1bGFyIC0+IFwiPFREPlwiLCBcIjwvVEQ+XCJcbiAgICB8IFRYVF9UYWJ1bGFyIC0+IFwiXCIsIFwiXFx0XCJcbiAgICB8IE1hdHJpeCB8IEdFUEhJIHwgSnNvbiB8IE1hdGhlbWF0aWNhIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MXG4gICAgfCBET1RORVQgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBIVE1MIHwgRE9UIHwgVFhUIHwgWExTIC0+XG4gICAgICBcIlwiLCBcIlwiXG4gIGluXG4gIGZwcmludGYgbG9nZ2VyIFwiJXMlcyVzXCIgb3Blbl9jZWxsX3N5bWJvbCBzIGNsb3NlX2NlbGxfc3ltYm9sXG5cbmxldCBmbHVzaF9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIC0+ICgpXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiAoKVxuXG5sZXQgY2xvc2VfbG9nZ2VyIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUwgLT4gZnByaW50ZiBsb2dnZXIgXCI8L2Rpdj5cXG48L2JvZHk+XFxuXCJcbiAgICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjwvVEFCTEU+XFxuPC9kaXY+XFxuPC9ib2R5PlwiXG4gICAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJ9XFxuXCJcbiAgICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gICAgfCBIVE1MX0dyYXBoIHwgSnNfR3JhcGggfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IFhMUyAtPlxuICAgICAgKClcbiAgaW5cbiAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAoKVxuXG5sZXQgcHJpbnRfcHJlYW1ibGUgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPGJvZHk+XFxuPGRpdj5cXG5cIlxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuPFRBQkxFPlxcblwiXG4gIHwgTWF0cml4IC0+XG4gICAgbGV0ICgpID0gZnByaW50ZiBsb2dnZXIgXCJ7XCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0JlZ2luVGltZVxcXCIgOiAwLjAwMDAwMGUrMDAsXCIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwiXFxcImJpb0VuZFRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuICB8IEdFUEhJIHwgSnNvbiB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUXG4gIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAoKVxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsID8obW9kZSA9IFRYVCkgY2hhbm5lbCA9XG4gIGxldCBmb3JtYXR0ZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwgaW5cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEZvcm1hdHRlciBmb3JtYXR0ZXI7XG4gICAgICBjaGFubmVsX29wdCA9IFNvbWUgY2hhbm5lbDtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciA/KG1vZGUgPSBUWFQpIGZvcm1hdHRlciA9XG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fY2lyY3VsYXJfYnVmZmVyID8obW9kZSA9IFRYVCkgPyhzaXplID0gMTApICgpID1cbiAge1xuICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgIGxvZ2dlciA9IENpcmN1bGFyX2J1ZmZlciAocmVmIChDaXJjdWxhcl9idWZmZXJzLmNyZWF0ZSBzaXplIFwiXCIpKTtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gIH1cblxubGV0IG9wZW5faW5maW5pdGVfYnVmZmVyID8obW9kZSA9IFRYVCkgKCkgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gSW5maW5pdGVfYnVmZmVyIChyZWYgKEluZmluaXRlX2J1ZmZlcnMuY3JlYXRlIDAgXCJcIikpO1xuICAgICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgICAgZW5jb2RpbmcgPSBtb2RlO1xuICAgICAgY3VycmVudF9saW5lID0gW107XG4gICAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICAgIGVkZ2VzID0gcmVmIFtdO1xuICAgICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgICB9XG4gIGluXG4gIGxldCAoKSA9IHByaW50X3ByZWFtYmxlIGxvZ2dlciBpblxuICBsb2dnZXJcblxubGV0IG9wZW5fcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiW1wiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hdGhlbWF0aWNhIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2Vfcm93IGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTF9UYWJ1bGFyIC0+IGZwcmludGYgbG9nZ2VyIFwiPHRyPkAuXCJcbiAgfCBNYXRyaXggLT4gZnByaW50ZiBsb2dnZXIgXCJdXFxuXCJcbiAgfCBKc29uIHwgTWF0bGFiIHwgT2N0YXZlIHwgTWFwbGUgfCBNYXRoZW1hdGljYSB8IFNCTUwgfCBET1RORVQgfCBIVE1MX0dyYXBoXG4gIHwgSnNfR3JhcGggfCBYTFMgfCBIVE1MIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBHRVBISSAtPlxuICAgIGZwcmludGYgbG9nZ2VyIFwiQC5cIlxuXG5sZXQgZm9ybWF0dGVyX29mX2xvZ2dlciBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBGb3JtYXR0ZXIgZm10IC0+IFNvbWUgZm10XG4gIHwgREVWTlVMIHwgQ2lyY3VsYXJfYnVmZmVyIF8gfCBJbmZpbml0ZV9idWZmZXIgXyAtPiBOb25lXG5cbmxldCByZWRpcmVjdCBsb2dnZXIgZm10ID0geyBsb2dnZXIgd2l0aCBsb2dnZXIgPSBGb3JtYXR0ZXIgZm10IH1cbmxldCBwcmludF9hc19sb2dnZXIgbG9nZ2VyIGYgPSBmcHJpbnRmIGxvZ2dlciBcIiV0XCIgZlxuXG5sZXQgZmx1c2hfYnVmZmVyIGxvZ2dlciBmbXQgPVxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IENpcmN1bGFyX2J1ZmZlcnMuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBJbmZpbml0ZV9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFiXG5cbmxldCBmbHVzaF9hbmRfY2xlYW4gbG9nZ2VyIGZtdCA9XG4gIGxldCAoKSA9IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10IGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gYSA6PSBDaXJjdWxhcl9idWZmZXJzLmNsZWFuICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gYiA6PSBJbmZpbml0ZV9idWZmZXJzLmNsZWFuICFiXG5cbmxldCBmcHJpbnRmIGxvZ2dlciA9IGZwcmludGYgfmZwcmludG5ld2xpbmU6ZmFsc2UgbG9nZ2VyXG5sZXQgY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyID0gbG9nZ2VyLmNoYW5uZWxfb3B0XG5cbmxldCBwcmludF9iaW5kaW5nX3R5cGUgdCA/KGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBcIi5cIikgfmFnZW50X25hbWUgfnNpdGVfbmFtZSAoKVxuICAgID1cbiAgZnByaW50ZiB0IFwiJXNcIlxuICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgfnNpdGVfbmFtZSAoKSlcblxubGV0IGR1bXBfanNvbiBsb2dnZXIganNvbiA9XG4gIGxldCBjaGFubmVsX29wdCA9IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICAoKVxuXG5sZXQgbGluZV90b19qc29uIGxpbmUgPSBgQXNzb2MgWyBcImxpbmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGxpbmUgXVxuXG5sZXQgbGluZV9vZl9qc29uIGpzb24gPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBTdHJpbmcgcykgXSAtPiBzXG4gIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwibGluZVwiLCBqc29uKSlcblxubGV0IGdlbl9pdGVyIGl0ZXIgbGlzdCA9XG4gIGxldCBvdXRwdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gaXRlciAoZnVuIGxpbmUgLT4gb3V0cHV0IDo9IGxpbmUgOjogIW91dHB1dCkgbGlzdCBpblxuICBKc29uVXRpbC5vZl9saXN0IGxpbmVfdG9fanNvbiAoTGlzdC5yZXYgIW91dHB1dClcblxubGV0IG9mX2pzb24gPSBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaW5lIGxpc3RcIiBsaW5lX29mX2pzb25cblxubGV0IHRvX2pzb24gbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gYExpc3QgW11cbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBnZW5faXRlciBDaXJjdWxhcl9idWZmZXJzLml0ZXIgIWFcbiAgfCBJbmZpbml0ZV9idWZmZXIgYiAtPiBnZW5faXRlciBJbmZpbml0ZV9idWZmZXJzLml0ZXIgIWJcbiIsImxldCBzdHJpbmdfb2ZfdW5fb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGxvZy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwibG9nXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNRUlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyb290Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzcXJ0XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkVYUCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGV4cC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZXhwXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNJTlVTIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8c2luLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJzaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuQ09TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGNvcy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiY29zXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlRBTiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHRhbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwidGFuXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLklOVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGZsb29yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJmbG9vclwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl9jb21wYXJlX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGVxLz5cIlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiAtPiBcIj09XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT4gXCI9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkRJRkYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxuZXEvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIiE9XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiPFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5HUkVBVEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8Z3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIj5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxyZW0vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1vZFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NQVggLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtYXgvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1heFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIm1pblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESVYgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxkaXZpZGUvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIi9cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cGx1cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiK1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG1pbnVzLz5cIlxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCItXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0aW1lcy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5QT1cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxwb3dlci8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiKipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfYmluX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLkFORCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGFuZC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiJlwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5PUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG9yLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCJ8XCJcbiAgICB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX3VuX2Jvb2xfb3AgbG9nZ2VyIG9wID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCBsb2dnZXIgaW5cbiAgbWF0Y2ggb3Agd2l0aFxuICB8IE9wZXJhdG9yLk5PVCAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPG5vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiIVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnNfc2lnLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBkaXJlY3Rpb24gPSBEaXJlY3QgfCBSZXZlcnNlIHwgVW5kaXJlY3RlZCB8IEJvdGhcbnR5cGUgc2hhcGUgPSBJbnZpc2libGUgfCBIb3VzZSB8IFJlY3QgfCBFbGxpcHNlIHwgQ2lyY2xlIHwgSW52aG91c2VcbnR5cGUgaGVhZGtpbmQgPSBOb3JtYWwgfCBWZWUgfCBUZWUgfCBOb19oZWFkXG50eXBlIGxpbmVzdHlsZSA9IFBsYWluIHwgRG90dGVkIHwgRGFzaGVkXG5cbnR5cGUgY29sb3IgPVxuICB8IFJlZFxuICB8IEdyZWVuXG4gIHwgV2hpdGVcbiAgfCBCbHVlXG4gIHwgQmxhY2tcbiAgfCBMaWdodFNreUJsdWVcbiAgfCBQYWxlR3JlZW5cbiAgfCBCcm93blxuICB8IFllbGxvd1xuICB8IEdyZXlcblxudHlwZSBvcHRpb25zID1cbiAgfCBDb2xvciBvZiBjb2xvclxuICB8IEZpbGxDb2xvciBvZiBjb2xvclxuICB8IExhYmVsIG9mIHN0cmluZ1xuICB8IFdpZHRoIG9mIGludCAoKnBpeGVsKilcbiAgfCBIZWlnaHQgb2YgaW50ICgqcGl4ZWwqKVxuICB8IERpcmVjdGlvbiBvZiBkaXJlY3Rpb25cbiAgfCBTaGFwZSBvZiBzaGFwZVxuICB8IEFycm93SGVhZCBvZiBoZWFka2luZFxuICB8IEFycm93VGFpbCBvZiBoZWFka2luZFxuICB8IExpbmVTdHlsZSBvZiBsaW5lc3R5bGVcbiAgfCBPbkNsaWNrIG9mIFlvanNvbi5CYXNpYy50XG4gIHwgQ29udGV4dHVhbF9oZWxwIG9mIHN0cmluZ1xuICB8IFBvc2l0aW9uIG9mIExvYy50IGxpc3RcblxudHlwZSBncmFwaCA9XG4gIChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgKiAoc3RyaW5nICogc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0XG5cbnR5cGUgdCA9IHtcbiAgbG9nZ2VyOiBMb2dnZXJzLnQ7XG4gIGlkX21hcDogaW50IE1vZHMuU3RyaW5nTWFwLnQgcmVmO1xuICBmcmVzaF9pZDogaW50IHJlZjtcbiAgbm9kZXM6IChzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlczogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdCByZWY7XG4gIGVkZ2VzX21hcDogb3B0aW9ucyBsaXN0IGxpc3QgTW9kcy5TdHJpbmcyTWFwLnQgcmVmO1xufVxuXG5sZXQgbGlmdCB0ID0gdC5sb2dnZXJcblxubGV0IGV4dGVuZF9sb2dnZXIgbG9nZ2VyID1cbiAge1xuICAgIGxvZ2dlcjtcbiAgICBpZF9tYXAgPSByZWYgTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZnJlc2hfaWQgPSByZWYgMTtcbiAgICBub2RlcyA9IHJlZiBbXTtcbiAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5O1xuICB9XG5cbmxldCByZWZyZXNoX2lkIHQgPVxuICBsZXQgKCkgPSB0LmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5lbXB0eSBpblxuICBsZXQgKCkgPSB0Lm5vZGVzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gW10gaW5cbiAgbGV0ICgpID0gdC5mcmVzaF9pZCA6PSAxIGluXG4gICgpXG5cbmxldCBhZGRfbm9kZSB0IHMgZCA9IHQubm9kZXMgOj0gKHMsIGQpIDo6ICEodC5ub2RlcylcblxubGV0IGFkZF9lZGdlIHQgczEgczIgZCA9XG4gIGxldCAoKSA9IHQuZWRnZXMgOj0gKHMxLCBzMiwgZCkgOjogISh0LmVkZ2VzKSBpblxuICBsZXQgbWFwID0gISh0LmVkZ2VzX21hcCkgaW5cbiAgbGV0IG9sZF9saXN0ID1cbiAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgbWFwIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IFtdXG4gIGluXG4gIGxldCAoKSA9IHQuZWRnZXNfbWFwIDo9IE1vZHMuU3RyaW5nMk1hcC5hZGQgKHMxLCBzMikgKGQgOjogb2xkX2xpc3QpIG1hcCBpblxuICAoKVxuXG5sZXQgZ3JhcGhfb2ZfbG9nZ2VyIGxvZ2dlciA9IExpc3QucmV2ICEobG9nZ2VyLm5vZGVzKSwgTGlzdC5yZXYgIShsb2dnZXIuZWRnZXMpXG5sZXQgZ2V0X2VkZ2VfbWFwIHQgPSAhKHQuZWRnZXNfbWFwKVxubGV0IGdldF9ub2RlcyB0ID0gISh0Lm5vZGVzKVxubGV0IGZyZXNoX2lkIGxvZ2dlciA9IFRvb2xzLmdldF9yZWYgbG9nZ2VyLmZyZXNoX2lkXG5cbmxldCBpbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBzdHJpbmcgPVxuICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzdHJpbmcgIShsb2dnZXIuaWRfbWFwKSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IGkgPSBmcmVzaF9pZCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuaWRfbWFwIDo9IE1vZHMuU3RyaW5nTWFwLmFkZCBzdHJpbmcgaSAhKGxvZ2dlci5pZF9tYXApIGluXG4gICAgaVxuIiwiKCoqXG4gICogZ3JhcGhfbG9nZ2Vycy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkb3RfY29sb3JfZW5jb2RpbmcgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcImdyZXlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcInJlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBcImJsdWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrIC0+IFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4N2NlZWJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5OGZiOThcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiYnJvd25cIlxuXG5sZXQgc3ZnX2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCIjZmYzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5IC0+IFwiI2FhYVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IFwiI2YwMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gXCIjMGYwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaGl0ZSAtPiBcIiNmZmZcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCIjMDBmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcIiMwMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBcIiM4Y2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBcIiM5ZjlcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IFwiI2ZjOVwiXG5cbnR5cGUgbm9kZV9hdHRyaWJ1dGUgPSB7XG4gIG5vZGVfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9maWxsY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgbm9kZV9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV93aWR0aDogaW50IG9wdGlvbjtcbiAgbm9kZV9oZWlnaHQ6IGludCBvcHRpb247XG4gIG5vZGVfc2hhcGU6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbjtcbiAgbm9kZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIG5vZGVfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBub2RlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbnR5cGUgZWRnZV9hdHRyaWJ1dGUgPSB7XG4gIGVkZ2VfY29sb3I6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbjtcbiAgZWRnZV9sYWJlbDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xuICBlZGdlX3N0eWxlOiBHcmFwaF9sb2dnZXJzX3NpZy5saW5lc3R5bGU7XG4gIGVkZ2VfZGlyZWN0aW9uOiBHcmFwaF9sb2dnZXJzX3NpZy5kaXJlY3Rpb247XG4gIGVkZ2VfYXJyb3doZWFkOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9hcnJvd3RhaWw6IEdyYXBoX2xvZ2dlcnNfc2lnLmhlYWRraW5kO1xuICBlZGdlX3Bvc2l0aW9uczogTG9jLnQgbGlzdDtcbiAgZWRnZV9jb250ZXh0dWFsX2hlbHA6IHN0cmluZyBvcHRpb247XG4gIGVkZ2Vfb25fY2xpY2s6IFlvanNvbi5CYXNpYy50IG9wdGlvbjtcbn1cblxubGV0IGR1bW15X25vZGUgPVxuICB7XG4gICAgbm9kZV9jb2xvciA9IE5vbmU7XG4gICAgbm9kZV9maWxsY29sb3IgPSBOb25lO1xuICAgIG5vZGVfbGFiZWwgPSBOb25lO1xuICAgIG5vZGVfd2lkdGggPSBOb25lO1xuICAgIG5vZGVfaGVpZ2h0ID0gTm9uZTtcbiAgICBub2RlX3NoYXBlID0gTm9uZTtcbiAgICBub2RlX3Bvc2l0aW9ucyA9IFtdO1xuICAgIG5vZGVfb25fY2xpY2sgPSBOb25lO1xuICAgIG5vZGVfY29udGV4dHVhbF9oZWxwID0gTm9uZTtcbiAgfVxuXG5sZXQgZHVtbXlfZWRnZSA9XG4gIHtcbiAgICBlZGdlX2NvbG9yID0gTm9uZTtcbiAgICBlZGdlX2xhYmVsID0gTm9uZTtcbiAgICBlZGdlX3N0eWxlID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW47XG4gICAgZWRnZV9kaXJlY3Rpb24gPSBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Q7XG4gICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgZWRnZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBlZGdlX29uX2NsaWNrID0gTm9uZTtcbiAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGlzX25vX25vZGVfYXR0cmlidXRlcyBub2RlX2F0dHJpYnV0ZSA9IG5vZGVfYXR0cmlidXRlID0gZHVtbXlfbm9kZVxuXG5sZXQgaXNfbm9fZWRnZV9hdHRyaWJ1dGVzIGVkZ2VfYXR0cmlidXRlID1cbiAgZHVtbXlfZWRnZVxuICA9IHtcbiAgICAgIGVkZ2VfYXR0cmlidXRlIHdpdGhcbiAgICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbDtcbiAgICB9XG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLCBcIlxuICBlbHNlXG4gICAgKClcblxubGV0IGh0bWxfZGVwcyA9XG4gIFtcbiAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gIF1cblxubGV0IHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0ID1cbiAgbGV0IGIxID1cbiAgICBtYXRjaCBmaWx0ZXJfaW4gd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gZm9ybWF0IGxcbiAgaW5cbiAgYjEgJiYgbm90IChMaXN0Lm1lbSBmb3JtYXQgZmlsdGVyX291dClcblxubGV0IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFslc0BdPC9oMT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPTk2MCBoZWlnaHQ9NjAwPjxnLz48L3N2Zz5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0PkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgKClcblxubGV0IHByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKVxuICAgID8oaGVhZGVyID0gW10pIHRpdGxlID1cbiAgbGV0IGZvcm1hdCA9IExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gIGlmIHNoYWxsX0lfZG9faXQgZm9ybWF0IGZpbHRlcl9pbiBmaWx0ZXJfb3V0IHRoZW4gKFxuICAgIG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHggaW5cbiAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBoZWFkZXJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImRpZ3JhcGggR3tcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICAoKiBJTiBQUk9HRVNTICopXG4gICAgICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGYgLT4gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSlcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLUAsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgIGhlYWRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi0tPkAsXCIgaW5cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgZiB0ID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdCBzcmM9XFxcIiVzXFxcIiBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+PC9zY3JpcHQ+XCIgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj48IWRvY3R5cGUgaHRtbD5ALEAsPGh0bWw+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxoZWFkPkAsPG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCxcIiB0aXRsZSBpblxuICAgICAgICBsZXQgKCkgPSBQcC5saXN0IH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZSBkZXBlbmRlbmN5IGYgaHRtbF9kZXBzIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QF1ALDwvaGVhZD5ALFwiIChmdW4gZiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiBcXFxuICAgICAgICAgICAgICAgICAgIDEuNXB4O31cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGJvZHk+QCxcIiBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlIGluXG4gICAgICAgICgpKVxuICAgIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCB0aXRsZSBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAoKnwgVGVlIC0+XG4gICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIiVzOiBcXFwidGVlXFxcIlwiIHRpdGxlXG4gICAgICAgIGluXG4gICAgICAgIHRydWUqKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXM6IFxcXCJ2ZWVcXFwiXCIgdGl0bGVcbiAgICBpblxuICAgIHRydWVcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgKCogbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcIm5vbmVcXFwiXCIgdGl0bGVcbiAgICAgICBpblxuICAgICAgIHRydWUqKVxuICAgIGJvb2xcblxubGV0IG1lcmdlIHMgcycgPVxuICBpZiBzID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB0aGVuXG4gICAgcydcbiAgZWxzZVxuICAgIHNcblxubGV0IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBsID1cbiAgbGV0IGkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBpIGwgLT5cbiAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgeCAtPlxuICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGkgKiA3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBpXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBpICogM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGkgKiAtMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBpICogNVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlIC0+IGkgKiAxMVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGkgKiAxM1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBpICogMTdcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvdyAtPiBpICogMTkpXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBfIC0+XG4gICAgICAgICAgICAgaSkpXG4gICAgICAxIGxcbiAgaW5cbiAgc3RyaW5nX29mX2ludCBpXG5cbmxldCBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciA9XG4gIGxldCAoKSA9XG4gICAgTW9kcy5TdHJpbmcyTWFwLml0ZXJcbiAgICAgIChmdW4gKGlkMSwgaWQyKSBsaXN0IC0+XG4gICAgICAgIGxldCBsaXN0ID0gTGlzdC5yZXYgbGlzdCBpblxuICAgICAgICBsZXQgaWQxX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMSBpblxuICAgICAgICBsZXQgaWQyX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkMiBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X2VkZ2UgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uX2xpc3QgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgWyBzIF0gfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSAocyA6OiBcIixcIiA6OiBzJykgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgd2hlbiBzID0gcycgLT4gYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9jb2xvciA9IFNvbWUgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd247XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2RpcmVjdGlvbiA9IHMgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgZWRnZV9hcnJvd3RhaWwgPSBtZXJnZSBzIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd3RhaWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3doZWFkID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMuZWRnZV9wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29udGV4dHVhbF9oZWxwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzJyAtPiBTb21lIChzJyBeIHMpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF9cbiAgICAgICAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0KVxuICAgICAgICAgICAgYXR0cmlidXRlcyBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICBcImcuc2V0RWRnZSglaSwlaSx7IFwiIGlkMV9pbnQgaWQyX2ludFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cmlidXRlcyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCwgc19vcHQgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2wsIE5vbmVcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw6IFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgIChmdW4gZm10IC0+IExpc3QuaXRlciAoRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIikpXG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHN0cmluZ19saXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzX29wdCwgcycgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAxMDAgdGhlblxuICAgICAgICAgICAgICAgIFNvbWUgcywgU3RyaW5nLnN1YiBzIDAgMTAwIF4gXCIuLi5cIlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgTm9uZSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiXCIgcydcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlLCBzX29wdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gc3ZnX2NvbG9yX2VuY29kaW5nIHMgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwic3Ryb2tlOiAlczsgZmlsbDogd2hpdGVcXFwiLCBhcnJvd2hlYWRTdHlsZTogXFxcImZpbGw6IFxcXG4gICAgICAgICAgICAgICAgICVzOyBzdHJva2U6ICVzXFxcIlwiXG4gICAgICAgICAgICAgICAgY29sb3IgY29sb3IgY29sb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93aGVhZFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3doZWFkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCBsb2dnZXIgYm9vbCBcImFycm93dGFpbFwiXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIH0pO0AsXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBzX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiPCEtLSVzLS0+XFxuXCIgc1xuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyKVxuICBpblxuICBsZXQgZl9vcHQgPSBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBtYXRjaCBmX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPlxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHN2ZyA9IGQzLnNlbGVjdChcXFwic3ZnXFxcIiksaW5uZXIgPSBzdmcuc2VsZWN0KFxcXCJnXFxcIik7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJ2YXIgem9vbSA9IGQzLmJlaGF2aW9yLnpvb20oKS5vbihcXFwiem9vbVxcXCIsIGZ1bmN0aW9uKCkge0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiIFxcXG4gICAgICAgICArQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIFJ1biB0aGUgcmVuZGVyZXIuIFRoaXMgaXMgd2hhdCBkcmF3cyB0aGUgZmluYWwgZ3JhcGguQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInpvb21ALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIudHJhbnNsYXRlKFsoc3ZnLmF0dHIoXFxcIndpZHRoXFxcIikgLSBnLmdyYXBoKCkud2lkdGggKiBpbml0aWFsU2NhbGUpIC8gXFxcbiAgICAgICAgIDIsIDIwXSlALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLnNjYWxlKGluaXRpYWxTY2FsZSlALC5ldmVudChzdmcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInN2Zy5hdHRyKCdoZWlnaHQnLCBnLmdyYXBoKCkuaGVpZ2h0ICogaW5pdGlhbFNjYWxlICsgNDApO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L3NjcmlwdD5cIiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvZGl2PlwiIGluXG4gICAgKClcblxubGV0IHByaW50X2dyYXBoX2Zvb3QgbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ9XCIgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICB8IExvZ2dlcnMuTWF0cml4IC0+XG4gICAgbGV0IG5vZGVzID0gR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X25vZGVzIGxvZ2dlciBpblxuICAgIGxldCBlZGdlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9lZGdlX21hcCBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJydWxlc1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlcCAocywgXykgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1xcXCIlc1xcXCJcIiBzZXAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImhpdHNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXMxXCIgc2VwIGluXG4gICAgICAgICAgXCIsIFwiKVxuICAgICAgICBcIlwiIG5vZGVzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIsXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcImZsdXhzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYiAoczEsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIHNlcCAoczIsIF8pIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nMk1hcC5maW5kX29wdGlvbiAoczEsIHMyKSBlZGdlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCIwXCJcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvcHRpb25zIC0+IG1hdHJpeF9zdHJpbmdfb2Zfb3B0aW9ucyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCIgc2VwIGNvbG9yX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBcIiwgXCIpXG4gICAgICAgICAgICAgIFwiXCIgbm9kZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICB0cnVlKVxuICAgICAgICBmYWxzZSBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+IHByaW50X2Zvb3Rfc2hhcmVkX2h0bWxfanMgbG9nZ2VyXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICBsZXQgKCkgPSBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlciBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9ib2R5PkBdQCw8L2h0bWw+QF1ALlwiIGluXG4gICAgICAoKSlcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X2NvbW1lbnQgbG9nZ2VyID8oZmlsdGVyX2luID0gTm9uZSkgPyhmaWx0ZXJfb3V0ID0gW10pIHN0cmluZyA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIyVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIgc3RyaW5nXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gICAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAgICgpXG4gIClcblxubGV0IG9wZW5fYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0PHA+PGRsPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWFwbGVcbiAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgY2xvc2VfYXNzbyBsb2dnZXIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFx0XFx0PC9kbD48L3A+XFxuXCJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuTWF0cml4XG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUXG4gIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBwcmludF9hc3NvIGxvZ2dlciBzdHJpbmcxIHN0cmluZzIgPVxuICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIi8qJXMgJXMqL1wiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgIFwiXFx0XFx0XFx0PGR0PiVzPC9kdD48ZGQ+JXM8L2RkPlwiIHN0cmluZzEgc3RyaW5nMlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUxcbiAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICgpXG5cbmxldCBzaGFwZV9pbl9kb3Qgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFwic3R5bGU9aW52aXNcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlIC0+IFwic2hhcGU9aW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFwic2hhcGU9aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gXCJzaGFwZT1ib3hcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gXCJzaGFwZT1lbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gXCJzaGFwZT1jaXJjbGVcIlxuXG5sZXQgc2hhcGVfaW5faHRtbCBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gU29tZSBcInN0eWxlOiBcXFwidmlzaWJpbGl0eTpoaWRkZW5cXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJpbnZob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IFNvbWUgXCJzaGFwZTogXFxcImhvdXNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdCAtPiBTb21lIFwic2hhcGU6IFxcXCJyZWN0XFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFNvbWUgXCJzaGFwZTogXFxcImVsbGlwc2VcXFwiXCJcblxubGV0IHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBfID0gXCItXCJcbmxldCBzdHJpbmdfdHdvX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLS1cIlxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IHN0eWxlID1cbiAgbWF0Y2ggc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBcIj5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcInw+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gXCJ8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI8XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCI8fFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBwcmludF9ub2RlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgaWQgPVxuICBsZXQgYXR0cmlidXRlcyA9IGR1bW15X25vZGUgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuVFhUXG4gICAgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9sYWJlbCA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfZmlsbGNvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGkgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV93aWR0aCA9IFNvbWUgaSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaSAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9oZWlnaHQgPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3NoYXBlID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfcG9zaXRpb25zID0gcCBAIGF0dHJpYnV0ZXMubm9kZV9wb3NpdGlvbnMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdGlvbiBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTFxuICAgIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiJXNcXFwiXCIgaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgaXNfbm9fbm9kZV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFtcIiBpblxuICAgICAgICBsZXQgYm9vbCA9IGZhbHNlIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwibGFiZWw9XFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcIiVzXCIgKHNoYXBlX2luX2RvdCBzaGFwZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwid2lkdGg9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImhlaWdodD1cXFwiJWlweFxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImZpbGxjb2xvcj1cXFwiJXNcXFwiIHN0eWxlPWZpbGxlZFwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgbGV0IGlkX2ludCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmludF9vZl9zdHJpbmdfaWQgbG9nZ2VyIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiZy5zZXROb2RlKCVpLCB7IFwiIGlkX2ludFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT4gc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdHJpbmcgPSBTdHJpbmcuZXNjYXBlZCBzdHJpbmcgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiJXNcXFwiXCIgc3RyaW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3NoYXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc2hhcGUgLT5cbiAgICAgICAgICAgIChtYXRjaCBzaGFwZV9pbl9odG1sIHNoYXBlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHNoYXBlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV93aWR0aCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoOiBcXFwiJWlcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2hlaWdodCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImhlaWdodDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciB0cnVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcjogXFxcIiVzXFxcIlwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9maWxsY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwic3R5bGU6IFxcXCJmaWxsOiAlc1xcXCIgXCIgKHN2Z19jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCAtPlxuICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJOb2RlOiAlc1wiIGlkIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKClcbiAgICB8IFNvbWUgbGFiZWwgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICBcIk5vZGU6JXMsIExhYmVsOiVzXCIgaWQgbGFiZWxcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9ub2RlIGxvZ2dlciBpZCBkaXJlY3RpdmVzXG4gIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhclxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9lZGdlIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSkgPyhwcmVmaXggPSBcIlwiKSBpZDEgaWQyID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGF0dHJpYnV0ZXMgb3B0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9jb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3N0eWxlID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93dGFpbCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3doZWFkID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb250ZXh0dWFsX2hlbHAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIHNcbiAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIF9cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIF8gLT5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgIGF0dHJpYnV0ZXMgZGlyZWN0aXZlc1xuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiXG4gICAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMU1xuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgLT5cbiAgICAgIGF0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgbGV0IGRpcmVjdGlvbiA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfZGlyZWN0aW9uIHdpdGhcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+XG4gICAgICAgIHN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgICAgXiBzdHJpbmdfb2ZfYXJyb3dfaGVhZF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT5cbiAgICAgICAgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgIHN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgICAgXiBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgXCJcXFwiJXNcXFwiICVzIFxcXCIlc1xcXCJcIiBpZDEgZGlyZWN0aW9uIGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX2VkZ2VfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmdfbGlzdCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbD1cXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJcIiBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX3N0eWxlIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZG90dGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcInN0eWxlPVxcXCJkYXNoZWRcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImNvbG9yPVxcXCIlc1xcXCJcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd2hlYWQ9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsIHdpdGhcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwidGVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInZlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93dGFpbD1cXFwibm9uZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gaWYgYm9vbCB0aGVuICgpIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXTtcIiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuSFRNTCAtPlxuICAgIGxldCBsYWJlbCA9XG4gICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IFsgXCJcIiBdXG4gICAgICB8IFNvbWUgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgYXJyb3cgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZCB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCItLVwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbCB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBcIi0+XCJcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwiLXxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiJXMlcyAlcyAlc1wiIHByZWZpeCBpZDEgYXJyb3cgaWQyXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXCIpXG4gICAgICAgIChMaXN0LnJldiBsYWJlbClcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKClcbiAgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuYWRkX2VkZ2UgbG9nZ2VyIGlkMSBpZDIgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyXG4gIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfb25lX3RvX25fcmVsYXRpb24gbG9nZ2VyID8oZGlyZWN0aXZlcyA9IFtdKVxuICAgID8oc3R5bGVfb25lID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4pID8oc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKVxuICAgIGlkIGlkbGlzdCA9XG4gIGxldCBmaWN0aXRpb3VzID0gXCJGaWN0aXRpb3VzX1wiIF4gaWQgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfZmljdCA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5ET1RcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBMaXN0LnJldlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgXCJcIlxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICAgICAgIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIDAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IDBcbiAgICAgICA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19vbmUgPVxuICAgIGlmIHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX29uZSA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgZGlyZWN0aXZlc19uID1cbiAgICBpZiBzdHlsZV9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuUGxhaW4gdGhlblxuICAgICAgZGlyZWN0aXZlc1xuICAgIGVsc2VcbiAgICAgIExpc3QucmV2IChHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgc3R5bGVfbiA6OiBMaXN0LnJldiBkaXJlY3RpdmVzKVxuICBpblxuICBsZXQgXyA9IHByaW50X25vZGUgbG9nZ2VyIGZpY3RpdGlvdXMgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19maWN0IGluXG4gIGxldCBfID0gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19vbmUgZmljdGl0aW91cyBpZCBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGlkJyAtPiBwcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlczpkaXJlY3RpdmVzX24gZmljdGl0aW91cyBpZCcpXG4gICAgICBpZGxpc3RcbiAgaW5cbiAgKClcblxubGV0IF8gPVxuICBsZXQgZiB0IHQnID0gdC5lZGdlX29uX2NsaWNrLCB0Jy5ub2RlX29uX2NsaWNrIGluXG4gIGZcbiIsIigqKlxuICAqIGdyYXBoX2pzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIzLzA1LzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvbiA9XG4gIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0IC0+IGBTdHJpbmcgXCJEaXJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2UgLT4gYFN0cmluZyBcIlJldmVyc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWQgLT4gYFN0cmluZyBcIlVuZGlyZWN0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGggLT4gYFN0cmluZyBcIkJvdGhcIlxuXG5sZXQgc2hhcGVfdG9fanNvbiBzaGFwZSA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGUgLT4gYFN0cmluZyBcIkludmlzaWJsZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2UgLT4gYFN0cmluZyBcIkhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBgU3RyaW5nIFwiSW52aG91c2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gYFN0cmluZyBcInJlY3RcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gYFN0cmluZyBcImVsbGlwc2VcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBgU3RyaW5nIFwiY2lyY2xlXCJcblxubGV0IGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmQgPVxuICBtYXRjaCBoZWFka2luZCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IGBTdHJpbmcgXCJ2ZWVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBgU3RyaW5nIFwiVGVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYFN0cmluZyBcIm5vcm1hbFwiXG5cbmxldCBsaW5lc3R5bGVfdG9fanNvbiBsaW5lc3R5bGUgPVxuICBtYXRjaCBsaW5lc3R5bGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIC0+IGBTdHJpbmcgXCJQbGFpblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkIC0+IGBTdHJpbmcgXCJEb3R0ZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPiBgU3RyaW5nIFwiRGFzaGVkXCJcblxubGV0IGNvbG9yX3RvX2pzb24gY29sb3IgPVxuICBtYXRjaCBjb2xvciB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkIC0+IGBTdHJpbmcgXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IGBTdHJpbmcgXCJncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gYFN0cmluZyBcIndoaXRlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IGBTdHJpbmcgXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBgU3RyaW5nIFwiYmxhY2tcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBgU3RyaW5nIFwibGlnaHRza3libHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gYFN0cmluZyBcInBhbGVncmVlblwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd24gLT4gYFN0cmluZyBcImJyb3duXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gYFN0cmluZyBcInllbGxvd1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBgU3RyaW5nIFwiZ3JleVwiXG5cbmxldCBkaXJlY3RpdmVfdG9fanNvbiBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGNvbG9yIC0+IFwiY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBjb2xvciAtPiBcImZpbGxjb2xvclwiLCBjb2xvcl90b19qc29uIGNvbG9yXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nIC0+IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmdcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnQgLT4gXCJ3aWR0aFwiLCBgSW50IGludFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnQgLT4gXCJoZWlnaHRcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gZGlyZWN0aW9uIC0+XG4gICAgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uX3RvX2pzb24gZGlyZWN0aW9uXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgc2hhcGUgLT4gXCJzaGFwZVwiLCBzaGFwZV90b19qc29uIHNoYXBlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIGhlYWRraW5kIC0+XG4gICAgXCJhcnJvd2hlYWRcIiwgaGVhZGtpbmRfdG9fanNvbiBoZWFka2luZFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgbGluZXN0eWxlIC0+XG4gICAgXCJsaW5lc3R5bGVcIiwgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICggXCJwb3NpdGlvblwiLFxuICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAoZnVuIGpzb24gLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBqc29uKSlcbiAgICAgICAgcCApXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIHMgLT5cbiAgICBcImNvbnRleHR1YWwgaGVscFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgc1xuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPiBcIm9uX2NsaWNrXCIsIGpzb25cblxubGV0IGRpcmVjdGl2ZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2Fzc29jIGRpcmVjdGl2ZV90b19qc29uXG5cbmxldCBub2RlX3RvX2pzb24gKGlkLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvYyBbIFwiaWRcIiwgYFN0cmluZyBpZDsgXCJkaXJlY3RpdmVzXCIsIGRpcmVjdGl2ZXNfdG9fanNvbiBkaXJlY3RpdmVzIF1cblxubGV0IGVkZ2VfdG9fanNvbiAoaWQxLCBpZDIsIGRpcmVjdGl2ZXMpID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJzb3VyY2VcIiwgYFN0cmluZyBpZDE7XG4gICAgICBcInRhcmdldFwiLCBgU3RyaW5nIGlkMjtcbiAgICAgIFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcztcbiAgICBdXG5cbmxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb25cbmxldCBlZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb25cblxubGV0IHRvX2pzb24gZ3JhcGggOiBZb2pzb24uQmFzaWMudCA9XG4gIGBBc3NvY1xuICAgIFsgXCJub2Rlc1wiLCBub2Rlc190b19qc29uIChmc3QgZ3JhcGgpOyBcImVkZ2VzXCIsIGVkZ2VzX3RvX2pzb24gKHNuZCBncmFwaCkgXVxuXG5sZXQgbGluZXN0eWxlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJQbGFpblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluXG4gIHwgYFN0cmluZyBcIkRvdHRlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZFxuICB8IGBTdHJpbmcgXCJEYXNoZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBoZWFka2luZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwidmVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVmVlXG4gIHwgYFN0cmluZyBcIlRlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxuICB8IGBTdHJpbmcgXCJ1bmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZFxuICB8IGBTdHJpbmcgXCJub3JtYWxcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaGVhZGtpbmRcIiwgeCkpXG5cbmxldCBzaGFwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiSW52aXNpYmxlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlXG4gIHwgYFN0cmluZyBcIkhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbiAgfCBgU3RyaW5nIFwiSW52aG91c2VcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZVxuICB8IGBTdHJpbmcgXCJyZWN0XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxuICB8IGBTdHJpbmcgXCJlbGxpcHNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuICB8IGBTdHJpbmcgXCJjaXJjbGVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc2hhcGVcIiwgeCkpXG5cbmxldCBkaXJlY3Rpb25fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkRpcmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdFxuICB8IGBTdHJpbmcgXCJSZXZlcnNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZVxuICB8IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZFxuICB8IGBTdHJpbmcgXCJCb3RoXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQm90aFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBjb2xvcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiZ3JleVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbiAgfCBgU3RyaW5nIFwieWVsbG93XCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93XG4gIHwgYFN0cmluZyBcInJlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxuICB8IGBTdHJpbmcgXCJncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG4gIHwgYFN0cmluZyBcIndoaXRlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGVcbiAgfCBgU3RyaW5nIFwiYmx1ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbiAgfCBgU3RyaW5nIFwiYmxhY2tcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xuICB8IGBTdHJpbmcgXCJsaWdodHNreWJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWVcbiAgfCBgU3RyaW5nIFwicGFsZWdyZWVuXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuXG4gIHwgYFN0cmluZyBcImJyb3duXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQnJvd25cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgY29sb3JcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgXCJjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAoY29sb3Jfb2ZfanNvbiBjb2xvcilcbiAgfCBcImZpbGxjb2xvclwiLCBjb2xvciAtPiBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJsYWJlbFwiLCBgU3RyaW5nIHN0cmluZyAtPiBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzdHJpbmdcbiAgfCBcIndpZHRoXCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldpZHRoIGludFxuICB8IFwiaGVpZ2h0XCIsIGBJbnQgaW50IC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCBpbnRcbiAgfCBcImRpcmVjdGlvblwiLCBkaXJlY3Rpb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gKGRpcmVjdGlvbl9vZl9qc29uIGRpcmVjdGlvbilcbiAgfCBcInNoYXBlXCIsIHNoYXBlIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIChzaGFwZV9vZl9qc29uIHNoYXBlKVxuICB8IFwiYXJyb3doZWFkXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwiYXJyb3d0YWlsXCIsIGhlYWRraW5kIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIChoZWFka2luZF9vZl9qc29uIGhlYWRraW5kKVxuICB8IFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZSAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSAobGluZXN0eWxlX29mX2pzb24gbGluZXN0eWxlKVxuICB8IFwicG9zaXRpb25cIiwgcG9zX2xpc3QgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIChmdW4ganNvbiAtPlxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXRcbiAgICAgICAgICAgICAgICAgICA/ZXJyb3JfbXNnOihTb21lIChKc29uVXRpbC5idWlsZF9tc2cgXCJwb3NpdGlvblwiKSkpXG4gICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICBwb3NfbGlzdClcbiAgfCBcImNvbnRleHR1YWwgaGVscFwiLCBjb250ZXh0dWFsX2hlbHAgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgKEpzb25VdGlsLnRvX3N0cmluZyBjb250ZXh0dWFsX2hlbHApXG4gIHwgXCJvbl9jbGlja1wiLCBqc29uIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvblxuICB8IF8sIHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBkaXJlY3RpdmVcIiwgeCkpXG5cbmxldCBkaXJlY3RpdmVzX29mX2pzb24gZGlyZWN0aXZlcyA9XG4gIEpzb25VdGlsLnRvX2Fzc29jXG4gICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibGlzdCBvZiBkaXJlY3RpdmVzXCIpXG4gICAgZGlyZWN0aXZlX29mX2pzb24gZGlyZWN0aXZlc1xuXG5sZXQgaWRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGlkXCIsIHgpKVxuXG5sZXQgbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5XG4gICAgICAgKCBpZF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBub2RlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSlcblxubGV0IGVkZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInNvdXJjZVwiIGwpLFxuICAgICAgICAgaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRhcmdldFwiIGwpLFxuICAgICAgICAgZGlyZWN0aXZlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZGlyZWN0aXZlc1wiIGwpIClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVkZ2VcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKVxuXG5sZXQgbm9kZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZSBsaXN0XCIpIG5vZGVfb2ZfanNvblxuXG5sZXQgZWRnZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiZWRnZSBsaXN0XCIpIGVkZ2Vfb2ZfanNvblxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggbm9kZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5vZGVzXCIgbCksXG4gICAgICAgICBlZGdlc19vZl9qc29uIChMaXN0LmFzc29jIFwiZWRnZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuIiwidHlwZSBicmVha19oaW50ID0gU3BhY2UgfCBOb19zcGFjZVxuXG50eXBlIHN5bWJvbF90YWJsZSA9IHtcbiAgYWdlbnRfb3Blbjogc3RyaW5nO1xuICBhZ2VudF9jbG9zZTogc3RyaW5nO1xuICBhZ2VudF9zZXBfY29tbWE6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9kb3Q6IHN0cmluZyAqIGJyZWFrX2hpbnQ7XG4gIGFnZW50X3NlcF9wbHVzOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBnaG9zdF9hZ2VudDogc3RyaW5nO1xuICBzaG93X2dob3N0OiBib29sO1xuICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2w6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2ludGVybmFsX3N0YXRlX21vZDogc3RyaW5nO1xuICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBpbnRlcm5hbF9zdGF0ZV9hbnk6IHN0cmluZztcbiAgb3Blbl9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGU6IHN0cmluZztcbiAgbWlzc2luZ19iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZV9tb2Q6IHN0cmluZztcbiAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sOiBzdHJpbmc7XG4gIGNsb3NlX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGZyZWU6IHN0cmluZztcbiAgYm91bmQ6IHN0cmluZztcbiAgbGlua190b19hbnk6IHN0cmluZztcbiAgbGlua190b19zb21lOiBzdHJpbmc7XG4gIGF0OiBzdHJpbmc7XG4gIHNpdGVfc2VwOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBidHlwZV9zZXA6IHN0cmluZztcbiAgdW5pX2Fycm93OiBzdHJpbmc7XG4gIHJldl9hcnJvdzogc3RyaW5nO1xuICBiaV9hcnJvdzogc3RyaW5nO1xuICB1bmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIHJldl9hcnJvd19ub3BvbHk6IHN0cmluZztcbiAgYmlfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJyZWFrYWJsZTogYm9vbDtcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5OiBzdHJpbmc7XG4gIGludF9pbnRlcnZhbF9zZXBhcmF0b3I6IHN0cmluZztcbiAgcGx1c19pbmZpbml0eTogc3RyaW5nO1xuICBtaW51c19pbmZpbml0eTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNndGU6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJ2YWw6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcl9zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2VxOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJjdmFyOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJkZWx0YTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNvdW50ZXJjZXFfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJjZ3RlX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY3Zhcl9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhcGx1c19zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJ2YWxfc3ltYm9sOiBzdHJpbmc7XG59XG5cbmxldCBzeW1ib2xfdGFibGVfVjMgPVxuICB7XG4gICAgYm91bmQgPSBcIiFcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIG1pc3NpbmdfYmluZGluZ19zdGF0ZSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fYW55ID0gXCI/XCI7XG4gICAgbGlua190b19zb21lID0gXCIhX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiflwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGUgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCJcIjtcbiAgICBhdCA9IFwiLlwiO1xuICAgIGFnZW50X29wZW4gPSBcIihcIjtcbiAgICBhZ2VudF9jbG9zZSA9IFwiKVwiO1xuICAgIGFnZW50X3NlcF9jb21tYSA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiLFwiLCBTcGFjZTtcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIsXCIsIFNwYWNlO1xuICAgIGJ0eXBlX3NlcCA9IFwiLlwiO1xuICAgIHNpdGVfc2VwID0gXCIsXCIsIE5vX3NwYWNlO1xuICAgIGdob3N0X2FnZW50ID0gXCIuXCI7XG4gICAgc2hvd19naG9zdCA9IGZhbHNlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlID1cbiAgeyBzeW1ib2xfdGFibGUgd2l0aCBzaXRlX3NlcCA9IFwiIFwiLCBzbmQgc3ltYm9sX3RhYmxlLnNpdGVfc2VwIH1cblxubGV0IHRvX2RvdG5ldCBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IFwiICtcIiwgc25kIHN5bWJvbF90YWJsZS5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gXCIuXCIsIE5vX3NwYWNlO1xuICB9XG5cbmxldCBzeW1ib2xfdGFibGVfVjQgPVxuICB7XG4gICAgYm91bmQgPSBcIlwiO1xuICAgIG9wZW5fYmluZGluZ19zdGF0ZSA9IFwiW1wiO1xuICAgIGNsb3NlX2JpbmRpbmdfc3RhdGUgPSBcIl1cIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIlwiO1xuICAgIGxpbmtfdG9fYW55ID0gXCIjXCI7XG4gICAgbGlua190b19zb21lID0gXCJfXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sID0gXCJcIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGUgPSBcIn1cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9hbnkgPSBcInsjfVwiO1xuICAgIG9wZW5faW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2wgPSBcIi9cIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgYmluZGluZ19zdGF0ZV9tb2Rfc3ltYm9sID0gXCJcIjtcbiAgICBmcmVlID0gXCIuXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSB0cnVlO1xuICAgIHVuaV9hcnJvdyA9IFwiLT5cIjtcbiAgICByZXZfYXJyb3cgPSBcIjwtXCI7XG4gICAgYmlfYXJyb3cgPSBcIjwtPlwiO1xuICAgIHVuaV9hcnJvd19ub3BvbHkgPSBcIi0hLT5cIjtcbiAgICByZXZfYXJyb3dfbm9wb2x5ID0gXCI8LSEtXCI7XG4gICAgYmlfYXJyb3dfbm9wb2x5ID0gXCI8LSEtPlwiO1xuICAgIGJyZWFrYWJsZSA9IHRydWU7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlID0gXCJbXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJdXCI7XG4gICAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIl1cIjtcbiAgICBwbHVzX2luZmluaXR5ID0gXCIrb29cIjtcbiAgICBtaW51c19pbmZpbml0eSA9IFwiLW9vXCI7XG4gICAgb3Blbl9jb3VudGVyX3N0YXRlID0gXCJ7XCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiXVwiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmUgPSBcIltcIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHkgPSBcIltcIjtcbiAgICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yID0gXCIgLi4gXCI7XG4gICAgb3Blbl9jb3VudGVyY2VxID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBvcGVuX2NvdW50ZXJkZWx0YSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyX3N0YXRlID0gXCJ9XCI7XG4gICAgY2xvc2VfY291bnRlcmNlcSA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmNndGUgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjdmFyID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJ2YWwgPSBcIlwiO1xuICAgIGNvdW50ZXJjZXFfc3ltYm9sID0gXCI9XCI7XG4gICAgY291bnRlcmNndGVfc3ltYm9sID0gXCI+PVwiO1xuICAgIGNvdW50ZXJjdmFyX3N5bWJvbCA9IFwiOlwiO1xuICAgIGNvdW50ZXJ2YWxfc3ltYm9sID0gXCI6PVwiO1xuICAgIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID0gXCIrXCI7XG4gICAgY291bnRlcmRlbHRhbWludXNfc3ltYm9sID0gXCItXCI7XG4gIH1cblxubGV0IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlID0geyBzeW1ib2xfdGFibGUgd2l0aCBicmVha2FibGUgPSBmYWxzZSB9XG5sZXQgc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbGlnaHRlbiBzeW1ib2xfdGFibGVfVjNcbmxldCBzeW1ib2xfdGFibGVfZG90bmV0ID0gdG9fZG90bmV0IHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1YzXG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1Y0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjNfbGlnaHQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM19saWdodFxubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9kb3RuZXRcblxubGV0IHdpdGhfZG90X2FuZF9wbHVzIHN5bWJvbF90YWJsZSA9XG4gIHtcbiAgICBzeW1ib2xfdGFibGUgd2l0aFxuICAgIGFnZW50X3NlcF9wbHVzID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfcGx1cztcbiAgICBhZ2VudF9zZXBfZG90ID0gdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX2RvdG5ldC5hZ2VudF9zZXBfZG90O1xuICB9XG4iLCIoKipcbiAgICAqIHJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbFxuICAgICpcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxMi8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAgICogKlxuICAgICogU2lnbmF0dXJlIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbWVtb3J5XG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBydWxlX2tleSA9IGludFxuXG50eXBlIGVuZ2luZV9zdGF0ZSA9IHtcbiAgY29tbWFuZF9saW5lOiBzdHJpbmcgb3B0aW9uO1xuICB3YWtlX3VwX21hcDogKHJ1bGVfa2V5IC0+IHJ1bGVfa2V5IGxpc3QpIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5X2VuZ2luZV9zdGF0ZSA9IHsgY29tbWFuZF9saW5lID0gTm9uZTsgd2FrZV91cF9tYXAgPSBOb25lIH1cbmxldCB3YWtlX3VwX21hcCBlcnJvciBlbmdpbmVfc3RhdGUgPSBlcnJvciwgZW5naW5lX3N0YXRlLndha2VfdXBfbWFwXG4iLCIoKipcbiAgICAqIGV4Y2VwdGlvbi5tbFxuICAgICogb3BlbmthcHBhXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMDQgMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAgICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAgKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgdW5jYXVnaHRfZXhjZXB0aW9uID0ge1xuICBmaWxlX25hbWU6IHN0cmluZyBvcHRpb247XG4gIG1lc3NhZ2U6IHN0cmluZyBvcHRpb247XG4gIGFsYXJtOiBleG47XG59XG5cbnR5cGUgY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgdW5jYXVnaHRfZXhjZXB0aW9uOiB1bmNhdWdodF9leGNlcHRpb247XG4gIGNhbGxpbmdfc3RhY2s6IHN0cmluZyBsaXN0O1xufVxuXG5leGNlcHRpb24gVW5jYXVnaHRfZXhjZXB0aW9uIG9mIHVuY2F1Z2h0X2V4Y2VwdGlvblxuZXhjZXB0aW9uIENhdWdodF9leGNlcHRpb24gb2YgY2F1Z2h0X2V4Y2VwdGlvblxuXG5sZXQgcmVjIGV4bl90b19qc29uID0gZnVuY3Rpb25cbiAgfCBFeGl0IC0+IGBBc3NvYyBbIFwiRXhpdFwiLCBgTnVsbCBdXG4gIHwgTm90X2ZvdW5kIC0+IGBBc3NvYyBbIFwiTm90X2ZvdW5kXCIsIGBOdWxsIF1cbiAgfCBBcmcuQmFkIHggLT4gYEFzc29jIFsgXCJBcmcuQmFkXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTeXMuQnJlYWsgLT4gYEFzc29jIFsgXCJTeXMuQnJlYWtcIiwgYE51bGwgXVxuICB8IFN0YWNrLkVtcHR5IC0+IGBBc3NvYyBbIFwiU3RhY2suRW1wdHlcIiwgYE51bGwgXVxuICB8IFF1ZXVlLkVtcHR5IC0+IGBBc3NvYyBbIFwiUXVldWUuRW1wdHlcIiwgYE51bGwgXVxuICB8IFN0cmVhbS5FcnJvciB4IC0+IGBBc3NvYyBbIFwiU3RyZWFtLkVycm9yXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBgQXNzb2MgWyBcIlN0cmVhbS5GYWlsdXJlXCIsIGBOdWxsIF1cbiAgfCBBcmcuSGVscCB4IC0+IGBBc3NvYyBbIFwiQXJnLkhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gYEFzc29jIFsgXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsIF1cbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBgQXNzb2MgWyBcIlNjYW5fZmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gYEFzc29jIFsgXCJMYXp5LlVuZGVmaW5lZFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIChhLCBiLCBjKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsXG4gICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiZnN0XCIsIEpzb25VdGlsLm9mX3VuaXhfbGFiZWwgYTtcbiAgICAgICAgICAgICAgXCJzbmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGI7XG4gICAgICAgICAgICAgIFwidHJkXCIsIEpzb25VdGlsLm9mX3N0cmluZyBjO1xuICAgICAgICAgICAgXSApO1xuICAgICAgXVxuICB8IFVuaXguVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXguVW5peC5lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2Vycm9yIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBGYWlsdXJlIHggLT4gYEFzc29jIFsgXCJGYWlsdXJlXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBTdGFja19vdmVyZmxvdyAtPiBgQXNzb2MgWyBcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsIF1cbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gYEFzc29jIFsgXCJDYXVnaHRcIiwgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiVW5jYXVnaHRcIiwgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24geCBdXG4gIHwgXyAtPiBgQXNzb2MgWyBcIlVua25vd25cIiwgYE51bGwgXVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gdW5jYXVnaHQgPVxuICBKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgZXhuX3RvX2pzb25cbiAgICAodW5jYXVnaHQuZmlsZV9uYW1lLCB1bmNhdWdodC5tZXNzYWdlLCB1bmNhdWdodC5hbGFybSlcblxuYW5kIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiBjYXVnaHQgPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAoY2F1Z2h0LnVuY2F1Z2h0X2V4Y2VwdGlvbiwgY2F1Z2h0LmNhbGxpbmdfc3RhY2spXG5cbmxldCByZWMgZXhuX29mX2pzb24gKGpzb24gOiBZb2pzb24uQmFzaWMudCkgPVxuICBtYXRjaCBqc29uIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJFeGl0XCIsIGBOdWxsKSBdIC0+IEV4aXRcbiAgfCBgQXNzb2MgWyAoXCJOb3RfZm91bmRcIiwgYE51bGwpIF0gLT4gTm90X2ZvdW5kXG4gIHwgYEFzc29jIFsgKFwiQXJnLkJhZFwiLCB4KSBdIC0+IEFyZy5CYWQgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN5cy5CcmVha1wiLCBgTnVsbCkgXSAtPiBTeXMuQnJlYWtcbiAgfCBgQXNzb2MgWyAoXCJTdGFjay5FbXB0eVwiLCBgTnVsbCkgXSAtPiBTdGFjay5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsKSBdIC0+IFF1ZXVlLkVtcHR5XG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkVycm9yXCIsIHgpIF0gLT4gU3RyZWFtLkVycm9yIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCkgXSAtPiBTdHJlYW0uRmFpbHVyZVxuICB8IGBBc3NvYyBbIChcIkFyZy5IZWxwXCIsIHgpIF0gLT4gQXJnLkhlbHAgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIiwgYE51bGwpIF0gLT4gUGFyc2luZy5QYXJzZV9lcnJvclxuICB8IGBBc3NvYyBbIChcIlNjYW5fZmFpbHVyZVwiLCB4KSBdIC0+IFNjYW5mLlNjYW5fZmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwpIF0gLT4gTGF6eS5VbmRlZmluZWRcbiAgfCBgQXNzb2MgWyAoXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiwgYEFzc29jIGwpIF0gd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICBVbml4TGFiZWxzLlVuaXhfZXJyb3JcbiAgICAgICAgICggSnNvblV0aWwudG9fdW5peF9sYWJlbCAoTGlzdC5hc3NvYyBcImZzdFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJzbmRcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwidHJkXCIgbCkgKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGxhYmVscyBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiVW5peC5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peC5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIGpzb24pKSlcbiAgfCBgQXNzb2MgWyAoXCJGYWlsdXJlXCIsIHgpIF0gLT4gRmFpbHVyZSAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RhY2tfb3ZlcmZsb3dcIiwgYE51bGwpIF0gLT4gU3RhY2tfb3ZlcmZsb3dcbiAgfCBgQXNzb2MgWyAoXCJDYXVnaHRcIiwgeCkgXSAtPiBDYXVnaHRfZXhjZXB0aW9uIChjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmNhdWdodFwiLCB4KSBdIC0+XG4gICAgVW5jYXVnaHRfZXhjZXB0aW9uICh1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbiB4KVxuICB8IGBBc3NvYyBbIChcIlVua25vd25cIiwgYE51bGwpIF0gLT4gRmFpbHVyZSBcIlVua25vd25cIlxuICB8IF8gLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXhjZXB0aW9uXCIsIGpzb24pKVxuXG5hbmQgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiLCBjID1cbiAgICBKc29uVXRpbC50b190cmlwbGUgfmxhYjE6XCJmaWxlX25hbWVcIiB+bGFiMjpcIm1lc3NhZ2VcIiB+bGFiMzpcImV4blwiXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImZpbGVfbmFtZVwiKSlcbiAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwibWVzc2FnZVwiKSlcbiAgICAgIGV4bl9vZl9qc29uIGpzb25cbiAgaW5cbiAgeyBmaWxlX25hbWUgPSBhOyBtZXNzYWdlID0gYjsgYWxhcm0gPSBjIH1cblxuYW5kIGNhdWdodF9leGNlcHRpb25fb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ1bmNhdWdodF9leGNlcHRpb25cIiB+bGFiMjpcImNhbGxpbmdfc3RhY2tcIlxuICAgICAgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb25cbiAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJjYWxsaW5nIHN0YWNrXCJcbiAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YWNrIGVsdFwiKSlcbiAgICAgIGpzb25cbiAgaW5cbiAgeyB1bmNhdWdodF9leGNlcHRpb24gPSBhOyBjYWxsaW5nX3N0YWNrID0gYiB9XG5cbmxldCBidWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG4gPVxuICB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfVxuXG5sZXQgYnVpbGRfY2F1Z2h0X2V4Y2VwdGlvbiBmaWxlX25hbWUgbWVzc2FnZSBleG4gc3RhY2sgPVxuICB7XG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uID0gYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuO1xuICAgIGNhbGxpbmdfc3RhY2sgPSBzdGFjaztcbiAgfVxuXG5sZXQgcmFpc2VfZXhjZXB0aW9uIGZpbGVfbmFtZSBfa2V5IG1lc3NhZ2UgZXhuID1cbiAgcmFpc2UgKFVuY2F1Z2h0X2V4Y2VwdGlvbiB7IGZpbGVfbmFtZTsgbWVzc2FnZTsgYWxhcm0gPSBleG4gfSlcblxubGV0IHJlYyBwcF9leGNlcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJFeGl0XCJcbiAgfCBOb3RfZm91bmQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTm90X2ZvdW5kXCJcbiAgfCBBcmcuQmFkIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5CYWQoJXMpXCIgeFxuICB8IFN5cy5CcmVhayAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTeXMuQnJlYWtcIlxuICB8IFN0YWNrLkVtcHR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrLkVtcHR5XCJcbiAgfCBRdWV1ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJRdWV1ZS5FbXB0eVwiXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlN0cmVhbS5FcnJvciAlc1wiIHhcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdHJlYW0uRmFpbHVyZVwiXG4gIHwgQXJnLkhlbHAgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQXJnLkhlbHAoJXMpXCIgeFxuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlNjYW5mLlNjYW4uZmFpbHVyZSglcylcIiB4XG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiTGF6eS5VbmRlZmluZWRcIlxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXhMYWJlbHMuVW5peF9lcnJvciglcywlcywlcylcIlxuICAgICAgKFVuaXhMYWJlbHMuZXJyb3JfbWVzc2FnZSBlcilcbiAgICAgIHggeVxuICB8IFVuaXguVW5peF9lcnJvciAoZXIsIHgsIHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlVuaXguVW5peF9lcnJvciglcywlcywlcylcIiAoVW5peC5lcnJvcl9tZXNzYWdlIGVyKSB4IHlcbiAgfCBGYWlsdXJlIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkZhaWx1cmUoJXMpXCIgeFxuICB8IFN0YWNrX292ZXJmbG93IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlN0YWNrX292ZXJmbG93XCJcbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbmNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfdW5jYXVnaHQgeFxuICB8IENhdWdodF9leGNlcHRpb24geCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQ2F1Z2h0X2V4Y2VwdGlvbiglYSlcIiBwcF9jYXVnaHQgeFxuICB8IGV4YyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKFByaW50ZXhjLnRvX3N0cmluZyBleGMpXG5cbmFuZCBwcF91bmNhdWdodCBmIHggPVxuICBsZXQgd2l0aF9zcGFjZSA9IGZhbHNlIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhJWFleGNlcHRpb246QCAlYUBdXCJcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJmaWxlX25hbWU6ICVzOyBcIiB4KSlcbiAgICB4LmZpbGVfbmFtZVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2UgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIm1lc3NhZ2U6ICVzOyBcIiB4KSlcbiAgICB4Lm1lc3NhZ2UgcHBfZXhjZXB0aW9uIHguYWxhcm1cblxuYW5kIHBwX2NhdWdodCBmIHggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD5jYWxsaW5nX3N0YWNrOiAlYTsgJWFAXVwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZylcbiAgICB4LmNhbGxpbmdfc3RhY2sgcHBfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4IHN0YWNrID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRXhpdCAtPiBcIkV4aXRcIiA6OiBzdGFja1xuICB8IE5vdF9mb3VuZCAtPiBcIk5vdF9mb3VuZFwiIDo6IHN0YWNrXG4gIHwgQXJnLkJhZCB4IC0+IFwiQXJnLkJhZChcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3lzLkJyZWFrIC0+IFwiU3lzLkJyZWFrXCIgOjogc3RhY2tcbiAgfCBTdGFjay5FbXB0eSAtPiBcIlN0YWNrLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBRdWV1ZS5FbXB0eSAtPiBcIlF1ZXVlLkVtcHR5XCIgOjogc3RhY2tcbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBcIlN0cmVhbS5FcnJvclwiIDo6IHggOjogc3RhY2tcbiAgfCBTdHJlYW0uRmFpbHVyZSAtPiBcIlN0cmVhbS5GYWlsdXJlXCIgOjogc3RhY2tcbiAgfCBBcmcuSGVscCB4IC0+IFwiQXJnLkhlbHAoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFBhcnNpbmcuUGFyc2VfZXJyb3IgLT4gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIgOjogc3RhY2tcbiAgfCBTY2FuZi5TY2FuX2ZhaWx1cmUgeCAtPiBcIlNjYW5mLlNjYW4uZmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgTGF6eS5VbmRlZmluZWQgLT4gXCJMYXp5LlVuZGVmaW5lZFwiIDo6IHN0YWNrXG4gIHwgVW5peExhYmVscy5Vbml4X2Vycm9yIF8gLT4gXCJVbml4TGFiZWxzLlVuaXhfZXJyb3JcIiA6OiBzdGFja1xuICB8IFVuaXguVW5peF9lcnJvciBfIC0+IFwiVW5peC5Vbml4LmVycm9yXCIgOjogc3RhY2tcbiAgfCBGYWlsdXJlIHggLT4gXCJGYWlsdXJlKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrX292ZXJmbG93XCIgOjogc3RhY2tcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIkNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl9jYXVnaHQgeCAoXCIpXCIgOjogc3RhY2spXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBcIlVuY2F1Z2h0X2V4Y2VwdGlvbihcIiA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IF8gLT4gXCJVbmtub3duXCIgOjogc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeCBzdGFjayA9XG4gIChtYXRjaCB4LmZpbGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSBmaWxlX25hbWUgLT4gXCJmaWxlX25hbWU6IFwiIF4gZmlsZV9uYW1lIF4gXCI7IFwiKVxuICA6OiAobWF0Y2ggeC5tZXNzYWdlIHdpdGhcbiAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgfCBTb21lIG1lc3NhZ2UgLT4gXCJtZXNzYWdlOiBcIiBeIG1lc3NhZ2UgXiBcIjsgXCIpXG4gIDo6IFwiZXhjZXB0aW9uOlwiXG4gIDo6IHN0cmluZ2xpc3Rfb2ZfZXhjZXB0aW9uIHguYWxhcm0gc3RhY2tcblxuYW5kIHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggc3RhY2sgPVxuICBcImNhbGxpbmdfc3RhY2s6IFwiXG4gIDo6IChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNvbCBzdHJpbmcgLT4gc3RyaW5nIDo6IFwiLCBcIiA6OiBzb2wpXG4gICAgICAgIChcIjsgXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4LnVuY2F1Z2h0X2V4Y2VwdGlvbiAoXCI7IFwiIDo6IHN0YWNrKSkpXG4gICAgICAgeC5jYWxsaW5nX3N0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiXG4gICAgICAgIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHRfbGlnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0ge1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdDogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aTogY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xuICBtaF91bmNhdWdodF9lcnJvcl9saXN0OiB1bmNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG59XG5cbmxldCB0b19qc29uIG1ldGhvZF9oYW5kbGVyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0ICk7XG4gICAgICAoIFwiY2F1Z2h0XCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgKTtcbiAgICAgICggXCJ1bmNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcInVuY2F1Z2h0X3RvX3VpXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBjYXVnaHQgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcImNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgY2F1Z2h0X3RvX3VpID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IHVuY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uKSAoTGlzdC5hc3NvYyBcInVuY2F1Z2h0XCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbilcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ1bmNhdWdodF90b191aVwiIGwpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IGNhdWdodDtcbiAgICAgICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gY2F1Z2h0X3RvX3VpO1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0O1xuICAgICAgICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IHVuY2F1Z2h0X3RvX3VpO1xuICAgICAgIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImVycm9yIGhhbmRsZXJcIiwgeCkpXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID1cbiAge1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0ID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IFtdO1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPVxuICAgICAgdW5jYXVnaHQgOjogZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX290aGVycyB1bmNhdWdodCBlcnJvciA9XG4gIHtcbiAgICBlcnJvciB3aXRoXG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3Q7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvciA/dG9fdWkgdW5jYXVnaHQgZXJyb3IgPVxuICBsZXQgZXJyb3IgPVxuICAgIG1hdGNoIHRvX3VpIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgfCBOb25lIC0+IGVycm9yXG4gICAgfCBTb21lIHRydWUgLT4gYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yXG4gIGluXG4gIGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3JcblxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdFxubGV0IGdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF9jYXVnaHRfZXJyb3JfbGlzdF90b191aVxubGV0IGdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBlcnJvciA9IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpXG5cbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyIHggPVxuICB4Lm1oX2NhdWdodF9lcnJvcl9saXN0ID0gW10gJiYgeC5taF91bmNhdWdodF9lcnJvcl9saXN0ID0gW11cbiIsIigqKlxuICAqIGNvbmZpZy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDI4IDIwMTg+XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyc1xuICAqIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1XG4gICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG4oKiogaWYgdW5zYWZlID0gdHJ1ZSwgdGhlbiB3aGVuZXZlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhIGRlZmF1bHQgdmFsdWUgaXMgb3V0cHV0LCBhbmQgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCopXG5cbmxldCBkYXRlID0gXCI8MjAxNS4wMS4yM1wiXG5sZXQgdmVyc2lvbiA9IFwiNC4wMVwiXG5sZXQgb3V0cHV0X2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2NtX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2ltX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgb3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSA9IHJlZiBcIm91dHB1dFwiXG5sZXQgdW5zYWZlID0gcmVmIHRydWVcbmxldCB0cmFjZSA9IHJlZiBmYWxzZVxubGV0IHN5bnRheF92ZXJzaW9uID0gcmVmIFwiVjRcIlxubGV0IGR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID0gcmVmIGZhbHNlXG5sZXQgbG9nID0gcmVmIHN0ZG91dFxubGV0IGZvcm1hdHRlciA9IHJlZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IGZpbGUgPSByZWYgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IGxpbmtfbW9kZSA9IHJlZiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Cb3VuZF9pbmRpY2VzXG5cbigqKiBpbmZsdWVuY2UgbWFwICopXG5sZXQgZG9faW5mbHVlbmNlX21hcCA9IHJlZiB0cnVlXG5cbmxldCBydWxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcblxubGV0IHJ1bGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlICgqXCIjODdjZWViXCIgKCogbGlnaHQgc2t5IGJsdWUgKikqKVxuXG5sZXQgdmFyaWFibGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxuXG5sZXQgdmFyaWFibGVfY29sb3IgPVxuICByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuICgqIFwiIzk4ZmI5OFwiICgqUGFsZSBncmVlbiopKilcblxubGV0IGNlbnRlcl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCB3YWtlX3VwX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuICgqXCIjMDBmZjAwXCIgKCpHcmVlbiAqKSopXG5sZXQgaW5oaWJpdGlvbl9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgKCpcIiNmZjAwMDBcIiAoKnJlZCopKilcbmxldCB3YWtlX3VwX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxubGV0IGluaGliaXRpb25fYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlXG5sZXQgaW5mbHVlbmNlX21hcF9maWxlID0gcmVmIFwiaW5mbHVlbmNlXCJcbmxldCBpbmZsdWVuY2VfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgcHJvbXB0X2Z1bGxfdmFyX2RlZiA9IHJlZiBmYWxzZVxubGV0IHByb21wdF9mdWxsX3J1bGVfZGVmID0gcmVmIGZhbHNlXG5cbmxldCBtYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgcmVmIFsgJ1xcXCInLCBbICdcXFxcJzsgJ1xcXCInIF07ICdcXFxcJywgWyAnXFxcXCc7ICdcXFxcJyBdIF1cblxuKCoqIGNvbnRhY3QgbWFwKilcbmxldCBkb19jb250YWN0X21hcCA9IHJlZiB0cnVlXG5cbmxldCBkb19zY2MgPSByZWYgZmFsc2VcbmxldCBwdXJlX2NvbnRhY3QgPSByZWYgZmFsc2VcbmxldCBjb250YWN0X21hcF9maWxlID0gcmVmIFwiY29udGFjdFwiXG5sZXQgY29udGFjdF9tYXBfZm9ybWF0ID0gcmVmIFwiRE9UXCJcbmxldCBiaW5kaW5nX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG5sZXQgYmluZGluZ19zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xubGV0IGludGVybmFsX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuRWxsaXBzZVxubGV0IGludGVybmFsX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW5cbmxldCBjb3VudGVyX3NpdGVfc2hhcGUgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2VcbmxldCBjb3VudGVyX3NpdGVfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleVxubGV0IGFnZW50X3NoYXBlX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuc2hhcGUgb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X2NvbG9yX2FycmF5ID0gcmVmIChbfHxdIDogR3JhcGhfbG9nZ2Vyc19zaWcuY29sb3Igb3B0aW9uIGFycmF5KVxubGV0IGFnZW50X3NoYXBlX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5sZXQgYWdlbnRfY29sb3JfZGVmID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWVcbmxldCBsaW5rX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG5sZXQgaW5mbHVlbmNlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZFxubGV0IGluZmx1ZW5jZV9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcblxuKCoqZmxvdyBvZiBpbmZvcm1hdGlvbjogaW50ZXJuYWw7IGV4dGVybmFsIGZsb3cqKVxubGV0IGRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbmxldCBkb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPSByZWYgZmFsc2VcblxuKCpjb3ZlcmluZyBjbGFzc2VzOiB0aGlzIHBhcmFtZXRlciBkb2VzIG5vdCBtYXR0ZXIgaWYgaXQgaXMgdHJ1ZS9mYWxzZSopXG5sZXQgZG9fc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpzZXQgdG8gdHJ1ZSBpZiBvbmUgd2FudHMgdG8gcHJpbnQgY292ZXJpbmcgY2xhc3NlcyopXG5sZXQgZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9IHJlZiBmYWxzZVxuXG4oKlJFTUFSSzogb25lIG5lZWRzIHRvIHNldCBkb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgdG8gdHJ1ZSBmaXJzdCB0byBiZVxuICBhYmxlIHRvIGFjdGl2ZSBkaWZmZXJlbnQgb3V0cHV0ICopXG5sZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID0gcmVmIHRydWVcbmxldCB2ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiBcIkxvd1wiXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gcmVmIHRydWVcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19jb3ZlcmluZ19jbGFzc2VzID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHJlZiBmYWxzZVxubGV0IGhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID0gcmVmIHRydWVcbmxldCBoaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID0gcmVmIHRydWVcbmxldCBzbWFzaF9yZWxhdGlvbnMgPSByZWYgdHJ1ZVxubGV0IHVzZV9uYXR1cmFsX2xhbmd1YWdlID0gcmVmIFwia2FwcGFcIlxubGV0IGNvbXB1dGVfbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IHJlZiB0cnVlXG5sZXQgdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gcmVmIGZhbHNlXG5sZXQgZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMgPSByZWYgZmFsc2VcbmxldCBsb2NhbF90cmFjZV9wcmVmaXggPSByZWYgXCJBZ2VudF90cmFjZV9cIlxubGV0IGxvY2FsX3RyYWNlX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5cbigqKiBhY2N1cmFjeSAqKVxuXG5sZXQgd2l0aF92aWV3c19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgd2l0aF9keW5hbWljX2NvbnRhY3RfbWFwID0gcmVmIFwiZHluYW1pY1wiXG5sZXQgd2l0aF9jb3VudGVyc19hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgY291bnRlcl9hbmFseXNpc19kb21haW4gPSByZWYgXCJtaVwiXG5sZXQgdmlld19hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkhpZ2hcIlxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJEaXJlY3RcIlxubGV0IGNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiTG93XCJcbmxldCBzY2NfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcblxuKCogU3ltbWV0cmllcyAqKVxubGV0IGRvX3N5bW1ldHJpZXMgPSByZWYgZmFsc2VcbmxldCByYXRlX2NvbnZlbnRpb24gPSByZWYgXCJiaW9jaGVtaXN0XCJcblxuKCogQmFja2Rvb3JzIC0gc3RhdHMgZm9yIGJlbmNobWFya2luZyAqKVxubGV0IHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfc2NjID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfdGltaW5nID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfZmlsZSA9IHJlZiBcImJlbmNobWFyay50ZXhcIlxubGV0IGJhY2tkb29yX2RpcmVjdG9yeSA9IHJlZiBcIlwiXG4iLCIoKipcbiAgKiBwYXJhbWV0ZXJzLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDEwLCB0aGUgMTl0aCBvZiBEZWNlbWJlclxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3aGljaCBhcmUgcGFzc2VkIHRocm91Z2ggZnVuY3Rpb25zIGNvbXB1dGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgPVxuICBsZXQgc2l6ZV9hID0gU3RyaW5nLmxlbmd0aCBhIGluXG4gIGxldCBzaXplX2V4dCA9IFN0cmluZy5sZW5ndGggZXh0IGluXG4gIHRyeVxuICAgIGlmIHNpemVfYSA8IHNpemVfZXh0IHx8IFN0cmluZy5zdWIgYSAoc2l6ZV9hIC0gc2l6ZV9leHQpIHNpemVfZXh0ID0gZXh0IHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhIF4gZXh0XG4gIHdpdGggXyAtPiBhIF4gZXh0XG5cbmxldCBvcGVuX291dCBhIGV4dCA9XG4gICgqIGl0IHdvdWxkIGJlIGVhc2llciB3aXRoIE9DYW1sIDMuMDQgKilcbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgb3Blbl9vdXQgYVxuXG5sZXQgb3Blbl9hcHBlbmQgYSBleHQgPVxuICBsZXQgYSA9IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0IGluXG4gIGxldCBkID0gRmlsZW5hbWUuZGlybmFtZSBhIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5XG4gICAgICBpZiBub3QgKFN5cy5pc19kaXJlY3RvcnkgZCkgdGhlbiAoXG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiJyVzJyBpcyBub3QgYSBkaXJlY3RvcnlALlwiIGQ7XG4gICAgICAgIGV4aXQgMVxuICAgICAgKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gS2FwcGFfZmlsZXMubWtfZGlyX3IgZFxuICBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIFsgT3Blbl9hcHBlbmQgXSA1MTEgYSB3aXRoIF8gLT4gb3Blbl9vdXQgYSBleHRcblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5cbmxldCBleHRfZm9ybWF0IHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gXCIuZG90XCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IVE1MIC0+IFwiLmh0bWxcIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBcIi5kaW0uanNvblwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gXCIuZ2V4ZlwiXG5cbmxldCBmZXRjaF9sZXZlbF9nZW4gcyByID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFyIHdpdGhcbiAgfCBcIm11dGVcIiB8IFwibm9uZVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmVcbiAgfCBcImxvd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICB8IFwibWVkaXVtXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgXCJoaWdoXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICB8IFwiY29tcGxldGVcIiB8IFwiZnVsbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGxcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlczogJXMgaXMgbm90IGEgdmFsaWQgbGV2ZWwgISEhXCIgcyB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfZ3JhcGhfZm9ybWF0IGYgPVxuICBtYXRjaCBUb29scy5sb3dlcmNhc2UgIWYgd2l0aFxuICB8IFwiZG90XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UXG4gIHwgXCJodG1sXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTFxuICB8IFwiZGltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRElNXG4gIHwgXCJnZXBoaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXMgaXMgbm90IGEgdmFsaWQgZ3JhcGggZm9ybWF0ICEhIVwiIHggaW5cbiAgICByYWlzZSBFeGl0XG5cbmxldCBmZXRjaF9hY2N1cmFjeV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYW4gYWNjdXJhY3lcIiByXG5sZXQgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIHIgPSBmZXRjaF9sZXZlbF9nZW4gXCJhIHZlcmJvc2l0eVwiIHJcblxubGV0IGZldGNoX3JhdGVfY29udmVudGlvbiBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImthc2ltXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9fY29ycmVjdGlvblxuICB8IFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIiAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXG4gIHwgXCJiaW9jaGVtaXN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQmlvY2hlbWlzdFxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIHJhdGUgY29udmVudGlvbiAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uICgpID1cbiAgbWF0Y2ggIUNvbmZpZy5zeW50YXhfdmVyc2lvbiB3aXRoXG4gIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gQXN0LlY0XG4gIHwgXCIzXCIgfCBcInYzXCIgfCBcIlYzXCIgLT4gQXN0LlYzXG4gIHwgXyAtPiBmYWlsd2l0aCBcIlN5bnRheCB2ZXJzaW9uIHNob3VsZCBiZSBlaXRoZXIgVjMgb3IgVjRcIlxuXG5sZXQgZ2V0X3N5bWJvbHMgKCkgPVxuICBtYXRjaCBnZXRfc3ludGF4X3ZlcnNpb24gKCkgd2l0aFxuICB8IEFzdC5WMyAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1YzXG4gIHwgQXN0LlY0IC0+IFN5bWJvbF90YWJsZS5zeW1ib2xfdGFibGVfVjRcblxubGV0IGdldF9pbmZsdWVuY2VfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGUgPVxuICAgICAgKG1hdGNoICFDb25maWcuaW5mbHVlbmNlX21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2ltX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZSA9ICFDb25maWcucnVsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX2NvbG9yID0gIUNvbmZpZy5ydWxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlID0gIUNvbmZpZy52YXJpYWJsZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9jb2xvciA9ICFDb25maWcudmFyaWFibGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcud2FrZV91cF9jb2xvciA9ICFDb25maWcud2FrZV91cF9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yID0gIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3cgPSAhQ29uZmlnLndha2VfdXBfYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9hcnJvdyA9ICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF92YXJfZGVmO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3J1bGVfZGVmID0gIUNvbmZpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYWtlX2xhYmVsc19jb21wYXRpYmxlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChhLCBsKSAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmFkZCBhIGwgbWFwKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5DaGFyTWFwLmVtcHR5XG4gICAgICAgICFDb25maWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdDtcbiAgfVxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdCA9XG4gICAgICBmZXRjaF9ncmFwaF9mb3JtYXQgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUgd2l0aFxuICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgIHwgeCAtPiBTb21lIHgpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBTb21lIFwiXCJcbiAgICAgIHwgeCAtPiBTb21lICh4IF4gXCIvXCIpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wdXJlX2NvbnRhY3QgPSAhQ29uZmlnLnB1cmVfY29udGFjdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGUgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3IgPSAhQ29uZmlnLmJpbmRpbmdfc2l0ZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3IgPSAhQ29uZmlnLmludGVybmFsX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yID0gIUNvbmZpZy5jb3VudGVyX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXkgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2FycmF5O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWYgPSAhQ29uZmlnLmFnZW50X3NoYXBlX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWYgPSAhQ29uZmlnLmFnZW50X2NvbG9yX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5saW5rX2NvbG9yID0gIUNvbmZpZy5saW5rX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvciA9ICFDb25maWcuaW5mbHVlbmNlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvdyA9ICFDb25maWcuaW5mbHVlbmNlX2Fycm93O1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzAgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uID1cbiAgICAgIGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgdHJ1ZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSBcIkFnZW50X3RyYWNlX1wiO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8xID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMCB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0ID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8yID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMSB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8zID1cbiAge1xuICAgIHJlYWNoYWJpbGl0eV9tYXBfMiB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfNCA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsID0gdHJ1ZTtcbiAgfVxuXG5sZXQgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXAgcmVhY2hhYmlsaXR5ID1cbiAgbGV0IHRyYWNlID0gIUNvbmZpZy50cmFjZSBpblxuICBsZXQgcmVhY2hhYmlsaXR5ID1cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXMgPVxuICAgICAgICAhQ29uZmlnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICAgICFDb25maWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbjtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9ICFDb25maWcuc21hc2hfcmVsYXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSB3aXRoXG4gICAgICAgIHwgXCJyYXdcIiB8IFwiUkFXXCIgfCBcIlJhd1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhd1xuICAgICAgICB8IFwia2FwcGFcIiB8IFwiS0FQUEFcIiB8IFwiS2FwcGFcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYVxuICAgICAgICB8IFwiRW5nbGlzaFwiIHwgXCJFTkdMSVNIXCIgfCBcImVuZ2xpc2hcIiAtPlxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2VcbiAgICAgICAgfCBfIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhKTtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5jb21wdXRlX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXMgPVxuICAgICAgICAhQ29uZmlnLmRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICAgICAgICAhQ29uZmlnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPVxuICAgICAgICAhQ29uZmlnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzID1cbiAgICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5sb2NhbF90cmFjZV9mb3JtYXQ7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9wcmVmaXggPSAhQ29uZmlnLmxvY2FsX3RyYWNlX3ByZWZpeDtcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeSA9XG4gICAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgICB8IHggLT4geCBeIFwiL1wiKTtcbiAgICB9XG4gIGluXG4gIGlmIHRyYWNlIHRoZW5cbiAgICB7XG4gICAgICByZWFjaGFiaWxpdHkgd2l0aFxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYyA9XG4gICAgICAgICFDb25maWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pYztcbiAgICB9XG4gIGVsc2VcbiAgICByZWFjaGFiaWxpdHlcblxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwICgpID1cbiAgYWRkX2RlYnVnZ2luZ19wYXJhbWV0ZXJzX3RvX3JlYWNoYWJpbGl0eV9tYXBcbiAgICAobWF0Y2hcbiAgICAgICBmZXRjaF92ZXJib3NpdHlfbGV2ZWwgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG4gICAgIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gcmVhY2hhYmlsaXR5X21hcF8wXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gcmVhY2hhYmlsaXR5X21hcF8xXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gLT4gcmVhY2hhYmlsaXR5X21hcF8yXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIC0+IHJlYWNoYWJpbGl0eV9tYXBfM1xuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPiByZWFjaGFiaWxpdHlfbWFwXzQpXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3MgPSAhQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2l0ZV9hY3Jvc3NfYm9uZHMgPVxuICAgICAgIUNvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFsbGVsX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9wYXJhbGxlbF9ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVycyA9ICFDb25maWcud2l0aF9jb3VudGVyc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgICAgIChtYXRjaCBUb29scy5sb3dlcmNhc2UgIUNvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgd2l0aFxuICAgICAgfCBcImR5bmFtaWNcIiAtPiB0cnVlXG4gICAgICB8IFwic3RhdGljXCIgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpbiA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gd2l0aFxuICAgICAgfCBcIm1pXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWlcbiAgICAgIHwgXCJvY3RhZ29uXCIgfCBcIm9jdFwiIHwgXCJvY3RvXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuT2N0YWdvbnNcbiAgICAgIHwgXCJhYnN0cmFjdC1tdWx0aXNldFwiIHwgXCJhbVwiIHwgXCJhYnN0cmFjdF9tdWx0aXNldFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkFic3RyYWN0X211bHRpc2V0XG4gICAgICB8IFwibm9uLXJlbGF0aW9uYWxcIiB8IFwibnJcIiB8IFwibm9uLXJlbFwiIHwgXCJub25fcmVsXCIgfCBcIm5vbl9yZWxhdGlvbmFsXCIgLT5cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uX3JlbGF0aW9uYWxcbiAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NaSk7XG4gIH1cblxubGV0IG9wZW5fdGFza3NfcHJvZmlsaW5nID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl90YXNrc19wcm9maWxpbmcgKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgY2hhbm5lbCBpblxuICAgICAgY2hhbm5lbFxuICAgIHwgU29tZSBjaGFubmVsIC0+IGNoYW5uZWxcblxubGV0IGZldGNoX2JhY2tkb29ycyAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjID0gIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nID0gIUNvbmZpZy5iYWNrZG9vcl90aW1pbmc7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZSA9ICFDb25maWcuYmFja2Rvb3JfZmlsZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnkgPSAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeTtcbiAgfVxuXG5sZXQgZ2V0X3BhcmFtZXRlcnMgPyhodG1sX21vZGUgPSB0cnVlKSB+Y2FsbGVkX2Zyb20gKCkgPVxuICBsZXQgY2hhbm5lbCwgY2hhbm5lbF9lcnIsIGNoYW5uZWxfYmFja2Rvb3IsIGh0bWxfbW9kZSwgY29tbWFuZCA9XG4gICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICBOb25lLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFt8IFwiS2FTYVwiOyBcIihJbnRlcnJhY3RpdmUgbW9kZSlcIiB8XVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAoIFNvbWUgc3Rkb3V0LFxuICAgICAgICBTb21lIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICBTb21lIHN0ZG91dCxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbSAtPlxuICAgICAgU29tZSAob3Blbl90YXNrc19wcm9maWxpbmcgKCkpLCBOb25lLCBOb25lLCBmYWxzZSB8fCBodG1sX21vZGUsIFN5cy5hcmd2XG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIC0+XG4gICAgICAoIChtYXRjaFxuICAgICAgICAgICAhQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksIFwicHJvZmlsaW5nXCIsIFwiLmh0bWxcIlxuICAgICAgICAgICAoKnRlbXBvcmFyeSwgdG8gZG86IHByb3ZpZGUgYSBwYXJhbWV0ZXJpc2FibGUgZmlsZW5hbWUqKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9vdXQgYSBleHQpXG4gICAgICAgIHwgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICggIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnXG4gICAgICAgICAgICAgICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl90aW1pbmdcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzLFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICAgICAgICFDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgICAgICBcIi50ZXhcIiApXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgZmFsc2UsIF8sIF8sIF8gLT4gTm9uZVxuICAgICAgICB8IF8sIF8sIFwiXCIsIF8gLT4gU29tZSBzdGRvdXRcbiAgICAgICAgfCBfLCBcIlwiLCBhLCBleHQgLT4gU29tZSAob3Blbl9hcHBlbmQgYSBleHQpXG4gICAgICAgIHwgXywgYSwgYiwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIChhIF4gXCIvXCIgXiBiKSBleHQpKSxcbiAgICAgICAgZmFsc2UgfHwgaHRtbF9tb2RlLFxuICAgICAgICBTeXMuYXJndiApXG4gIGluXG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAge1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvbiA9IGdldF9zeW50YXhfdmVyc2lvbiAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fY29udGFjdF9tYXAgPSAhQ29uZmlnLmRvX2NvbnRhY3RfbWFwO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2MgPSAhQ29uZmlnLmRvX3NjYztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcCA9ICFDb25maWcuZG9faW5mbHVlbmNlX21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb247XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zeW1tZXRyaWVzX2FuYWx5c2lzID0gIUNvbmZpZy5kb19zeW1tZXRyaWVzO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb24gPVxuICAgICAgICAgIGZldGNoX3JhdGVfY29udmVudGlvbiBDb25maWcucmF0ZV9jb252ZW50aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXM7XG4gICAgICAgICgqZGlmZmVyZW50IHJlYWNoYWJpbGl0eSBvdXRwdXQqKVxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPVxuICAgICAgICAgICFDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzO1xuICAgICAgICAoKkdFVCBTWU1CT0xTKilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZSA9ICFDb25maWcuZmlsZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9scyA9IGdldF9zeW1ib2xzICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dCA9IGdldF9pbmZsdWVuY2VfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXQgPSBnZXRfY29udGFjdF9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICAgICAgICAgIGdldF9yZWFjaGFiaWxpdHlfcGFyYW1ldGVycyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudW5zYWZlID0gIUNvbmZpZy51bnNhZmU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gIUNvbmZpZy50cmFjZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICAgICAgICAgICFDb25maWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCA9IFwiXCI7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgPSBbXTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlID0gIUNvbmZpZy5saW5rX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGUgPVxuICAgICAgICAgIFJlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5lbXB0eV9lbmdpbmVfc3RhdGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlID1cbiAgICAgICAgICBVbml4LmxvY2FsdGltZSAoVW5peC5nZXR0aW1lb2ZkYXkgKCkpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50aW1lX3NoaWZ0ID1cbiAgICAgICAgICAobGV0IHggPSBVbml4LmdldHRpbWVvZmRheSAoKSBpblxuICAgICAgICAgICAoVW5peC5sb2NhbHRpbWUgeCkuVW5peC50bV9ob3VyIC0gKFVuaXguZ210aW1lIHgpLlVuaXgudG1faG91cik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhvc3RuYW1lID1cbiAgICAgICAgICAodHJ5IFVuaXguZ2V0aG9zdG5hbWUgKCkgd2l0aCBfIC0+IFwiamF2YXNjcmlwdFwiKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tbWFuZF9saW5lID0gY29tbWFuZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvcnRfdmVyc2lvbiA9IFZlcnNpb24udmVyc2lvbl9zdHJpbmc7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRrX2ludGVyZmFjZSA9ICFWZXJzaW9uLnRrX2lzX2luaXRpYWxpemVkO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCB3aXRoXG4gICAgICAgICAgfCBcImluZGlyZWN0XCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93XG4gICAgICAgICAgfCBcImRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICAgICAgICAgIHwgXCJyZWFsaXNhYmxlXCIgfCBcInJlYWxpemFibGVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gICAgICAgICAgfCBfIC0+IGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICAgICAgICAgIGZldGNoX2FjY3VyYWN5X2xldmVsIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcudmlld19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb207XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmh0bWxfbW9kZTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZW1wdHlfaGFzaHRibF9zaXplID0gMTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzID0gZmV0Y2hfYmFja2Rvb3JzICgpO1xuICAgICAgfTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID1cbiAgICAgIChtYXRjaCBjaGFubmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBfIC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgIUNvbmZpZy5mb3JtYXR0ZXIpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfZXJyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXJcbiAgICAgIHwgU29tZSBmbXQgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBmbXQpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbF9iYWNrZG9vciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgY2hhbm5lbCAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wcmVzc2lvbl9zdGF0dXMgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeSA9ICFDb25maWcucHJpbnRfZWZmaWNpZW5jeTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgYSAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciBhKTtcbiAgfVxuXG5sZXQgZHVtbXlfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gPVxuICBsZXQgY2FjaGUgPSByZWYgTm9uZSBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhY2FjaGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHAgPSBnZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCkgaW5cbiAgICAgIGxldCAoKSA9IGNhY2hlIDo9IFNvbWUgcCBpblxuICAgICAgcFxuICAgIHwgU29tZSBwIC0+IHBcblxubGV0IGdldF9ib3VuZF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJvdW5kXG5sZXQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9iaW5kaW5nX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm1pc3NpbmdfYmluZGluZ19zdGF0ZVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX2FueVxubGV0IGdldF9saW5rX3RvX3NvbWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmxpbmtfdG9fc29tZVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50ZXJuYWxfc3RhdGVfc3ltYm9sXG5cbmxldCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRlcm5hbF9zdGF0ZVxubGV0IGdldF9jbG9zZV9pbnRlcm5hbF9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfZnJlZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuZnJlZVxubGV0IGdldF9hdF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmF0XG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9vcGVuXG5sZXQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfY2xvc2VcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID1cbiAgZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2NvbW1hXG5cbmxldCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXNcbmxldCBnZXRfYWdlbnRfc2VwX2RvdF9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5hZ2VudF9zZXBfZG90XG5sZXQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJ0eXBlX3NlcFxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMSBzeW1ib2wgPSBmc3Qgc3ltYm9sLlN5bWJvbF90YWJsZS5zaXRlX3NlcFxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmdob3N0X2FnZW50XG5sZXQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnNob3dfZ2hvc3RcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93XG5sZXQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmJpX2Fycm93XG5sZXQgZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd19ub3BvbHlcbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS51bmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUucmV2X2Fycm93X25vcG9seVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnBsdXNfaW5maW5pdHlcbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5taW51c19pbmZpbml0eVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yXG5cbmxldCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJfc3RhdGVcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZXFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY3ZhclxubGV0IGdldF9vcGVuX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJjZ3RlXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJkZWx0YVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWxfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcnZhbFxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjZXFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJjdmFyXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2d0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGFfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2NvdW50ZXJkZWx0YVxubGV0IGdldF9jbG9zZV9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVydmFsXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2VxX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjdmFyX3N5bWJvbFxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJjZ3RlX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyZGVsdGFwbHVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhbWludXNfc3ltYm9sXG5cbmxldCBnZXRfY291bnRlcnZhbF9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJ2YWxfc3ltYm9sXG5cbigqSW5mbHVlbmNlKilcbmxldCBnZXRfaW1fZm9ybWF0XzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2Zvcm1hdFxubGV0IGdldF9pbV9maWxlXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2ZpbGVcblxubGV0IGdldF9pbV9kaXJlY3RvcnlfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5XG5cbmxldCBnZXRfcnVsZV9zaGFwZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ydWxlX3NoYXBlXG5sZXQgZ2V0X3J1bGVfY29sb3JfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvclxuXG5sZXQgZ2V0X3ZhcmlhYmxlX3NoYXBlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX3NoYXBlXG5cbmxldCBnZXRfdmFyaWFibGVfY29sb3JfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3JcblxubGV0IGdldF93YWtlX3VwX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3JcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fY29sb3JcblxubGV0IGdldF93YWtlX3VwX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfYXJyb3dcblxubGV0IGdldF9pbmhpYml0aW9uX2Fycm93XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3dcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb21wdF9mdWxsX3Zhcl9kZWZcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZlxuXG5sZXQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0XG5sZXQgZ2V0X2NtX2Zvcm1hdF8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZm9ybWF0XG5sZXQgZ2V0X2NtX2ZpbGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2ZpbGVcbmxldCBnZXRfY21fZGlyZWN0b3J5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnlcbmxldCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfc2hhcGVcbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iaW5kaW5nX3NpdGVfY29sb3JcblxubGV0IGdldF9pbnRlcm5hbF9zaXRlX3NoYXBlXzEgY20gPVxuICBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX3NoYXBlXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9jb2xvclxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX3NoYXBlXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9zaXRlX2NvbG9yXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9hcnJheVxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfYXJyYXlcbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9zaGFwZV9kZWZcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9kZWZcbmxldCBnZXRfbGlua19jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9jb2xvclxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3dfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9hcnJvd1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdFxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvblxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsXG5cbmxldCBnZXRfc21hc2hfcmVsYXRpb25zXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc21hc2hfcmVsYXRpb25zXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbl8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25cblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nXzEgciA9XG4gIG1hdGNoIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlJhdyAtPiBmYWxzZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthcHBhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTmF0dXJhbF9sYW5ndWFnZSAtPlxuICAgIHRydWVcblxubGV0IGdldF9iYWNrZW5kX21vZGVfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbmF0dXJhbF9sYW5ndWFnZVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdF8xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZvcm1hdF9mb3JfbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc1xuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGIgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzEgciBiID1cbiAgeyByIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID0gYiB9XG5cbmxldCBnZXRfaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc1xuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4XG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX2RpcmVjdG9yeVxubGV0IGdldF92aWV3X2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld3NcblxubGV0IGdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kc1xubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcFxubGV0IGdldF9jb3VudGVyc19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJzXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfZG9tYWluXG5cbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpc1xuXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJhdGVfY29udmVudGlvblxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZVxuXG5sZXQgZ2V0X3N5bWJvbHNfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW1ib2xzXG5sZXQgZ2V0X2ZpbGVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5maWxlXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9vdXRwdXRcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X3Vuc2FmZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZVxubGV0IGdldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1clxuXG5sZXQgZ2V0X3ByZWZpeF8xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeFxuXG5sZXQgZ2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrXG5cbmxldCBnZXRfbGlua19tb2RlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19tb2RlXG5cbmxldCBnZXRfa2FzYV9zdGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmthc2Ffc3RhdGVcblxubGV0IGdldF9kb19jb250YWN0X21hcF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwXG5cbmxldCBnZXRfc3ludGF4X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zeW50YXhfdmVyc2lvblxuXG5sZXQgZ2V0X2RvX3NjY18xIG1hcnNoYWxpc2FibGUgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NjY1xuXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19pbmZsdWVuY2VfbWFwXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvblxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2l0ZV9kZXBlbmRlbmNpZXNcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llc1xuXG4oKnJlYWNoYWJpbGl0eSBkaWZmZXJlbnQgb3V0cHV0KilcbmxldCBnZXRfZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzXG5cbigqKilcbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2NjX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdfYWNjdXJhY3lfbGV2ZWxcblxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZV8xIG1hcnNoYWxpc2FibGUgPVxuICBsZXQgdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGF1bmNoaW5nX2RhdGUgaW5cbiAgbGV0IGdtdCA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCBpblxuICBQcmludGYuc3ByaW50ZiBcIkFuYWx5c2lzIGxhdW5jaGVkIGF0ICUwNGkvJTAyaS8lMDJpICUwMmk6JTAyaTolMDJpIChHTVQlK2kpXCJcbiAgICAodC5Vbml4LnRtX3llYXIgKyAxOTAwKSAodC5Vbml4LnRtX21vbiArIDEpIHQuVW5peC50bV9tZGF5IHQuVW5peC50bV9ob3VyXG4gICAgdC5Vbml4LnRtX21pbiB0LlVuaXgudG1fc2VjIGdtdFxuXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG5cbmxldCBnZXRfZnVsbF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgKHdpdGglcyBUayBpbnRlcmZhY2UpXCJcbiAgICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZlcnNpb25cbiAgICAoaWYgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgdGhlblxuICAgICAgIFwiXCJcbiAgICAgZWxzZVxuICAgICAgIFwib3V0XCIpXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlcmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZVxuXG5sZXQgZ2V0X2NvbW1hbmRfbGluZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZVxuXG5sZXQgZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuXG5sZXQgZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyXG5sZXQgZ2V0X2xvZ2dlcl9lcnIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9lcnJcblxubGV0IGdldF9sb2dnZXJfYmFja2Rvb3IgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlcl9iYWNrZG9vclxuXG4oKmxldCBnZXRfZm9ybWF0dGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXJcbiAgbGV0IHNldF9mb3JtYXR0ZXIgcGFyYW1ldGVyIGxvZ2dlciA9IHtwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXR0ZXIgPSBsb2dnZXJ9KilcblxubGV0IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfY29tbWFuZF9saW5lID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbW1hbmRfbGluZV8xXG5sZXQgZ2V0X3Nob3J0X3ZlcnNpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc2hvcnRfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGVkX3doZXJlXzFcbmxldCBnZXRfZnVsbF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2Z1bGxfdmVyc2lvbl8xXG5sZXQgZ2V0X2xhdW5jaGluZ19kYXRlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xhdW5jaGluZ19kYXRlXzFcblxubGV0IGdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzID1cbiAgUHJpbnRmLnNwcmludGYgXCIlcyBvbiAlc1wiXG4gICAgKGdldF9sYXVuY2hpbmdfZGF0ZSBwYXJhbWV0ZXJzKVxuICAgIChnZXRfbGF1bmNoZWRfd2hlcmUgcGFyYW1ldGVycylcblxubGV0IGdldF9kb19jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19jb250YWN0X21hcF8xXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3N5bnRheF92ZXJzaW9uXzFcbmxldCBnZXRfZG9fc2NjID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NjY18xXG5sZXQgZ2V0X2RvX2luZmx1ZW5jZV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9faW5mbHVlbmNlX21hcF8xXG5cbmxldCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMVxuXG5sZXQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzXzFcblxubGV0IGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMVxuKCpyZWFjaGFiaWxpdHkgYW5hbHlzaXMgaW4gZGlmZmVyZW50IG91dHB1dCopXG5cbigqKilcbmxldCBnZXRfc3ltYm9scyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW1ib2xzXzFcbmxldCBnZXRfZmlsZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9maWxlXzFcbmxldCBnZXRfY29tcHV0ZV9zeW1tZXRyaWVzID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xXG5sZXQgZ2V0X3JhdGVfY29udmVudGlvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9yYXRlX2NvbnZlbnRpb25fMVxubGV0IGdldF9pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2luZmx1ZW5jZV9tYXBfMVxubGV0IGdldF9jb250YWN0X21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF8xXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X21hcF8xXG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnMgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfMVxuXG5sZXQgZ2V0X3Vuc2FmZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF91bnNhZmVfMVxubGV0IGdldF90cmFjZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF90cmFjZV8xXG5cbmxldCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXIgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJfMVxuXG5sZXQgZ2V0X3ByZWZpeCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9wcmVmaXhfMVxubGV0IGdldF9jYWxsX3N0YWNrID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2NhbGxfc3RhY2tfMVxubGV0IGdldF9saW5rX21vZGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfbGlua19tb2RlXzFcblxubGV0IGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfc2NjX2FjY3VyYWN5X2xldmVsID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF92aWV3X2FjY3VyYWN5X2xldmVsID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2VtcHR5X2hhc2h0Ymxfc2l6ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9lbXB0eV9oYXNodGJsX3NpemVfMVxubGV0IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2luZmx1ZW5jZV9tYXBcbmxldCB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfY29udGFjdF9tYXBcbmxldCB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBmID0gY29tcG9zZSBmIGdldF9zeW1ib2xzXG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfcmVhY2hhYmlsaXR5X21hcFxuXG5sZXQgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGYgPVxuICBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXG5cbigqc3ltYm9scyopXG5sZXQgZ2V0X2JvdW5kX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9ib3VuZF9zeW1ib2xfMVxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2xpbmtfdG9fYW55ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fYW55XzFcbmxldCBnZXRfbGlua190b19zb21lID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2xpbmtfdG9fc29tZV8xXG5sZXQgZ2V0X2ZyZWVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ZyZWVfMVxubGV0IGdldF9hdF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYXRfc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfb3Blbl9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfb3Blbl9zeW1ib2xfMVxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzFcblxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2J0eXBlX3NlcF9zeW1ib2xfMVxuXG5sZXQgZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2dob3N0X2FnZW50X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9naG9zdF9hZ2VudF9zeW1ib2xfMVxubGV0IGdldF9kb193ZV9zaG93X2dob3N0ID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMVxubGV0IGdldF91bmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19zeW1ib2xfMVxubGV0IGdldF9iaV9hcnJvd19zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfc3ltYm9sXzFcblxubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9wbHVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9wbHVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfbWludXNfaW5maW5pdHlfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2VxXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY3ZhciA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyZGVsdGFfMVxubGV0IGdldF9vcGVuX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVydmFsXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmNlcV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmN2YXJfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyZGVsdGEgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVydmFsXzFcbmxldCBnZXRfY291bnRlcmNlcV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNlcV9zeW1ib2xfMVxubGV0IGdldF9jb3VudGVyY2d0ZV9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbF8xXG5cbmxldCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzFcbmxldCBnZXRfaW1fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2Zvcm1hdF8xXG5sZXQgZ2V0X2ltX2ZpbGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZmlsZV8xXG5sZXQgZ2V0X2ltX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9kaXJlY3RvcnlfMVxubGV0IGdldF9ydWxlX3NoYXBlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfc2hhcGVfMVxubGV0IGdldF9ydWxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3J1bGVfY29sb3JfMVxubGV0IGdldF92YXJpYWJsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9zaGFwZV8xXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzFcbmxldCBnZXRfd2FrZV91cF9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF93YWtlX3VwX2NvbG9yXzFcblxubGV0IGdldF9pbmhpYml0aW9uX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2luaGliaXRpb25fY29sb3JfMVxuXG5sZXQgZ2V0X3dha2VfdXBfYXJyb3cgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9hcnJvd18xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvdyA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2Fycm93XzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF92YXJfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3Zhcl9kZWZfMVxuXG5sZXQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzFcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90ID1cbiAgdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfMVxuXG5sZXQgZ2V0X3B1cmVfY29udGFjdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfcHVyZV9jb250YWN0XzFcbmxldCBnZXRfY21fZm9ybWF0ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9mb3JtYXRfMVxubGV0IGdldF9jbV9maWxlID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9maWxlXzFcbmxldCBnZXRfY21fZGlyZWN0b3J5ID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jbV9kaXJlY3RvcnlfMVxuXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYmluZGluZ19zaXRlX3NoYXBlXzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW50ZXJuYWxfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfY291bnRlcl9zaXRlX3NoYXBlID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX2NvbG9yXzFcblxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2FycmF5ID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9hcnJheV8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9zaGFwZV9kZWZfMVxubGV0IGdldF9hZ2VudF9jb2xvcl9kZWYgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xXG5sZXQgZ2V0X2xpbmtfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2xpbmtfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfY29sb3IgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9jb2xvcl8xXG5sZXQgZ2V0X2luZmx1ZW5jZV9hcnJvdyA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfaW5mbHVlbmNlX2Fycm93XzFcblxuKCphZGQgcmVhY2hhYmxpdHkqKVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY18xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bF8xXG5cbmxldCBnZXRfcG9zdF9wcm9jZXNzaW5nID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlID0gdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2JhY2tlbmRfbW9kZV8xXG5cbmxldCBnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMVxuXG5sZXQgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGRcbiAgICBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMVxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9ucyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9zbWFzaF9yZWxhdGlvbnNfMVxuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMVxuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzFcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzFcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMiByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgPVxuICAgICAgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X21hcF9vdXRwdXQgYjtcbiAgfVxuXG5sZXQgc2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMlxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyBiO1xuICB9XG5cbmxldCBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25faW5fbG9jYWxfdHJhY2VzXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfaWdub3JlX2xvY2FsX2xvc2FuZ2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWFjcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzXzFcblxubGV0IGdldF9hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9wcmVmaXggPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4XzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5XzFcblxubGV0IGdldF92aWV3X2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF92aWV3X2FuYWx5c2lzXzFcblxubGV0IGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZFxuICAgIGdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXAgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGQgZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19hbmFseXNpc18xXG5cbmxldCBnZXRfY291bnRlcnNfZG9tYWluID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9jb3VudGVyc19kb21haW5fMVxuXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyBwID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIHBcbiAgfHwgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzIHBcblxubGV0IHNldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlIHByZWZpeCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCB9XG5cbmxldCBzZXRfY2FsbF9zdGFja18xIG1hcnNoYWxpc2FibGUgY2FsbF9zdGFjayA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxfc3RhY2sgfVxuXG5sZXQgc2V0X3RyYWNlXzEgbWFyc2hhbGlzYWJsZSBib29sID1cbiAgeyBtYXJzaGFsaXNhYmxlIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2UgPSBib29sIH1cblxubGV0IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBmIHBhcmFtZXRlcnMgcHJlZml4ID1cbiAge1xuICAgIHBhcmFtZXRlcnMgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBmIChnZXRfbWFyc2hhbGlzYWJsZSBwYXJhbWV0ZXJzKSBwcmVmaXg7XG4gIH1cblxubGV0IHNldF9wcmVmaXggPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3ByZWZpeF8xXG5sZXQgc2V0X2NhbGxfc3RhY2sgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X2NhbGxfc3RhY2tfMVxubGV0IHNldF90cmFjZSA9IHVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSBzZXRfdHJhY2VfMVxuXG5sZXQgdXBkYXRlX3ByZWZpeCBwYXJhbWV0ZXJzIHN1ZmZpeCA9XG4gIHNldF9wcmVmaXggcGFyYW1ldGVycyAoZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzIF4gc3VmZml4KVxuXG5sZXQgdXBkYXRlX2NhbGxfc3RhY2sgcGFyYW1ldGVycyBib29sIG5hbWUgPVxuICBsZXQgcmVwX2Jvb2wgPSBnZXRfdHJhY2UgcGFyYW1ldGVycyB8fCBib29sIGluXG4gIG1hdGNoIG5hbWUsIGdldF90cmFjZSBwYXJhbWV0ZXJzID0gYm9vbCB3aXRoXG4gIHwgTm9uZSwgdHJ1ZSAtPiBwYXJhbWV0ZXJzXG4gIHwgTm9uZSwgZmFsc2UgLT4gc2V0X3RyYWNlIHBhcmFtZXRlcnMgcmVwX2Jvb2xcbiAgfCBTb21lIHgsIHRydWUgLT4gc2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycyAoeCA6OiBnZXRfY2FsbF9zdGFjayBwYXJhbWV0ZXJzKVxuICB8IFNvbWUgeCwgZmFsc2UgLT5cbiAgICBzZXRfY2FsbF9zdGFja1xuICAgICAgKHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sKVxuICAgICAgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcblxubGV0IG9wZW5faW5mbHVlbmNlX21hcF9maWxlIHBhcmFtZXRlcnMgPVxuICBsZXQgY2hhbm5lbCA9XG4gICAgbWF0Y2hcbiAgICAgICggZ2V0X2ltX2ZpbGUgcGFyYW1ldGVycyxcbiAgICAgICAgZ2V0X2ltX2RpcmVjdG9yeSBwYXJhbWV0ZXJzLFxuICAgICAgICBleHRfZm9ybWF0IChnZXRfaW1fZm9ybWF0IHBhcmFtZXRlcnMpIClcbiAgICB3aXRoXG4gICAgfCBOb25lLCBfLCBfIC0+IHN0ZG91dFxuICAgIHwgU29tZSBhLCBOb25lLCBleHQgLT4gb3Blbl9vdXQgYSBleHRcbiAgICB8IFNvbWUgYSwgU29tZSBkLCBleHQgLT4gb3Blbl9vdXQgKGQgXiBhKSBleHRcbiAgaW5cbiAgbGV0IGZvcm1hdCA9XG4gICAgbWF0Y2ggZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVCAtPiBMb2dnZXJzLkRPVFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTSAtPiBMb2dnZXJzLk1hdHJpeFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuR0VQSEkgLT4gTG9nZ2Vycy5HRVBISVxuICBpblxuICBsZXQgbG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6Zm9ybWF0IGNoYW5uZWwgaW5cbiAgeyBwYXJhbWV0ZXJzIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyIH1cblxubGV0IG9wZW5fY29udGFjdF9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9jbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9jbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2NtX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgPSBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCBjaGFubmVsO1xuICB9XG5cbmxldCBwZXJzaXN0ZW50X21vZGUgPSBmYWxzZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfaW5mbHVlbmNlX21hcFxuICAgIHBhcmFtZXRlciA9XG4gIChtYXRjaCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+XG4gICAgdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgLT4gZmFsc2UpXG4gICYmIGdldF9kb19pbmZsdWVuY2VfbWFwIHBhcmFtZXRlclxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgXyA9XG4gIHBlcnNpc3RlbnRfbW9kZVxuXG5sZXQgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfY29udGFjdF9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICBnZXRfZG9fY29udGFjdF9tYXAgcGFyYW1ldGVyXG4gICYmXG4gIG1hdGNoIGdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCBwYXJhbWV0ZXIgd2l0aFxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPiB0cnVlXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTm9uZSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIC0+XG4gICAgZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnMgcGFyYW1ldGVyID1cbiAgbGV4aWNhbF9hbmFseXNpc19vZl90ZXN0ZWRfb25seV9wYXR0ZXJuc19pc19yZXF1aXJlZF9ieV90aGVfcGVyc2lzdGVudF9tb2RlXG4gICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgICAgcGFyYW1ldGVyXG4gIHx8IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICAgICBwYXJhbWV0ZXJcblxubGV0IGdldF9jYWxsZWRfZnJvbSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29yc1xuICAgID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnXG4gICAgIC5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzXG4gICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmdfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfdGltaW5nXG5cbmxldCBnZXRfYmFja2Rvb3JfZmlsZV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9maWxlXG5cbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X2JhY2tkb29ycyBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzFcbiAgICBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2ZpbGVfMSBnZXRfYmFja2Rvb3JzXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXzJcbiAgICBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZyA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX3RpbWluZ18yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGUgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5ID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIgZ2V0X21hcnNoYWxpc2FibGVcbmxldCBnZXRfcHJvZmlsZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByb2ZpbGVyXG5cbmxldCBnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzXG5cbmxldCBnZXRfa2FzYV9zdGF0ZSA9IGNvbXBvc2UgZ2V0X2thc2Ffc3RhdGVfMSBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgc2V0X3ByaW50X2VmZmljaWVuY3kgcGFyYW1ldGVyIGJvb2wgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSBib29sIH1cblxubGV0IGdldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5XG5cbmxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBsb2dnZXIgPVxuICB7IHBhcmFtZXRlciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBzYXZlX2Vycm9yX2xpc3QgcGFyYW1ldGVyIGVycm9yID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCBlcnJvclxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGJhciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciBiYXJcblxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfY3VycmVudF9waGFzZV90aXRsZVxuIiwib3BlbiBTdXBlcmFyZ1xuXG50eXBlIGNvdW50ID0gRW1iZWRkaW5ncyB8IE9jY3VycmVuY2VzXG5cbnR5cGUgdCA9IHtcbiAgYmFja2VuZDogc3RyaW5nIHJlZjtcbiAgcnVsZV9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIHJlYWN0aW9uX3JhdGVfY29udmVudGlvbjogc3RyaW5nIHJlZjtcbiAgY291bnQ6IHN0cmluZyByZWY7XG4gIGludGVybmFsX21lYW5pbmc6IHN0cmluZyByZWY7XG4gIHNob3dfcmVhY3Rpb25zOiBib29sIHJlZjtcbiAgY29tcHV0ZV9qYWNvYmlhbjogYm9vbCByZWY7XG4gIG9jdGF2ZV9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBtYXRsYWJfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWFwbGVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0aGVtYXRpY2Ffb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgc2JtbF9vdXRwdXQ6IHN0cmluZyBvcHRpb24gcmVmO1xuICBkb3RuZXRfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZGF0YV9maWxlOiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgd2l0aF9zeW1tZXRyaWVzOiBzdHJpbmcgcmVmO1xuICBzaG93X3N5bW1ldHJpZXM6IGJvb2wgcmVmO1xuICB2aWV3czogYm9vbCByZWY7XG4gIGRib25kczogYm9vbCByZWY7XG4gIHNpdGVfYWNyb3NzOiBib29sIHJlZjtcbiAgbm9ubmVnYXRpdmU6IGJvb2wgcmVmO1xuICBzaG93X3RpbWVfYWR2YW5jZTogYm9vbCByZWY7XG4gIGluaXRpYWxfc3RlcDogZmxvYXQgcmVmO1xuICBtYXhfc3RlcDogZmxvYXQgcmVmO1xuICByZWxhdGl2ZV90b2xlcmFuY2U6IGZsb2F0IHJlZjtcbiAgYWJzb2x1dGVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIHNtYXNoX3JlYWN0aW9uczogYm9vbCByZWY7XG4gIHByb3BhZ2F0ZV9jb25zdGFudHM6IGJvb2wgcmVmO1xuICBwcmludF9lZmZpY2llbmN5OiBib29sIHJlZjtcbiAgbWF4X3NpemVfZm9yX3NwZWNpZXM6IGludCBvcHRpb24gcmVmO1xuICBjc3Zfc2VwOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgYmFja2VuZCA9IHJlZiBcIm9jdGF2ZVwiO1xuICAgIHJ1bGVfcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gPSByZWYgXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgIGNvdW50ID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIGludGVybmFsX21lYW5pbmcgPSByZWYgXCJFbWJlZGRpbmdzXCI7XG4gICAgc2hvd19yZWFjdGlvbnMgPSByZWYgdHJ1ZTtcbiAgICBjb21wdXRlX2phY29iaWFuID0gcmVmIHRydWU7XG4gICAgZG90bmV0X291dHB1dCA9IHJlZiAoU29tZSBcIm5ldHdvcmsubmV0XCIpO1xuICAgIG9jdGF2ZV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubVwiKTtcbiAgICBtYXRsYWJfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWFwbGVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm13c1wiKTtcbiAgICBtYXRoZW1hdGljYV9vdXRwdXQgPSByZWYgKFNvbWUgXCJvZGUubmJcIik7XG4gICAgc2JtbF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLnhtbFwiKTtcbiAgICBkYXRhX2ZpbGUgPSByZWYgKFNvbWUgXCJkYXRhLmNzdlwiKTtcbiAgICB3aXRoX3N5bW1ldHJpZXMgPSByZWYgXCJOb25lXCI7XG4gICAgc2hvd19zeW1tZXRyaWVzID0gcmVmIGZhbHNlO1xuICAgIHZpZXdzID0gcmVmIHRydWU7XG4gICAgZGJvbmRzID0gcmVmIHRydWU7XG4gICAgc2l0ZV9hY3Jvc3MgPSByZWYgdHJ1ZTtcbiAgICBub25uZWdhdGl2ZSA9IHJlZiBmYWxzZTtcbiAgICBzaG93X3RpbWVfYWR2YW5jZSA9IHJlZiBmYWxzZTtcbiAgICBpbml0aWFsX3N0ZXAgPSByZWYgMC4wMDAwMTtcbiAgICBtYXhfc3RlcCA9IHJlZiAwLjAyO1xuICAgIGFic29sdXRlX3RvbGVyYW5jZSA9IHJlZiAwLjAwMTtcbiAgICByZWxhdGl2ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgc21hc2hfcmVhY3Rpb25zID0gcmVmIGZhbHNlO1xuICAgIHByb3BhZ2F0ZV9jb25zdGFudHMgPSByZWYgZmFsc2U7XG4gICAgcHJpbnRfZWZmaWNpZW5jeSA9IHJlZiBmYWxzZTtcbiAgICBtYXhfc2l6ZV9mb3Jfc3BlY2llcyA9IHJlZiBOb25lO1xuICAgIGNzdl9zZXAgPSByZWYgXCIgXCI7XG4gIH1cblxubGV0IGNvbWJpbmUgbDEgbDIgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbGlzdCBhMSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IChhMiA6IGludCkgLT4gKGExLCBhMikgOjogbGlzdCkgbGlzdCBsMilcbiAgICBbXSBsMVxuXG5sZXQgb3B0aW9ucyAodCA6IHQpIDpcbiAgICAoU3VwZXJhcmcua2V5XG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5tc2dcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZvaWRcIixcbiAgICAgIFN1cGVyYXJnLlZvaWQsXG4gICAgICBcIlwiLFxuICAgICAgY29tYmluZVxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQ7XG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcztcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncztcbiAgICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb247XG4gICAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzO1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGU7XG4gICAgICAgIF1cbiAgICAgICAgWyA1MDsgNTE7IDUyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLk11bHRpRXh0XG4gICAgICAgIFtcbiAgICAgICAgICBcIi0tZG90bmV0LW91dHB1dFwiLCBcIi5uZXRcIjtcbiAgICAgICAgICBcIi0tbWFwbGUtb3V0cHV0XCIsIFwiLm13c1wiO1xuICAgICAgICAgIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIiwgXCIubmJcIjtcbiAgICAgICAgICBcIi0tbWF0bGFiLW91dHB1dFwiLCBcIi5tXCI7XG4gICAgICAgICAgXCItLW9jdGF2ZS1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1zYm1sLW91dHB1dFwiLCBcIi54bWxcIjtcbiAgICAgICAgXSxcbiAgICAgIFwiUHJlZml4IGZvciBmaWxlIG5hbWUgb3V0cHV0XCIsXG4gICAgICBbXG4gICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0LCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxMDE7XG4gICAgICBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb2RlLWJhY2tlbmRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiZG90bmV0XCIsIFwiZG90bmV0IChCTkdMKSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm1hcGxlXCIsIFwibWFwbGUgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGhlbWF0aWNhXCIsIFwibWF0aGVtYXRpY2EgYmFja2VuZCAoaW4gcHJvZ3Jlc3MpXCI7XG4gICAgICAgICAgICBcIm1hdGxhYlwiLCBcIm1hdGxhYiBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcIm9jdGF2ZVwiLCBcIm9jdGF2ZSBiYWNrZW5kXCI7XG4gICAgICAgICAgICBcInNibWxcIiwgXCJzYm1sIGJhY2tlbmRcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiRG90bmV0XCI7XG4gICAgICAgICAgICBcIkRPVE5FVFwiO1xuICAgICAgICAgICAgXCJPY3RhdmVcIjtcbiAgICAgICAgICAgIFwiT0NUQVZFXCI7XG4gICAgICAgICAgICBcIk1hdGxhYlwiO1xuICAgICAgICAgICAgXCJNQVRMQUJcIjtcbiAgICAgICAgICAgIFwiTWF0aGVtYXRpY2FcIjtcbiAgICAgICAgICAgIFwiTUFUSEVNQVRJQ0FcIjtcbiAgICAgICAgICAgIFwiTWFwbGVcIjtcbiAgICAgICAgICAgIFwiTUFQTEVcIjtcbiAgICAgICAgICAgIFwiU2JtbFwiO1xuICAgICAgICAgICAgXCJTQk1MXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LmJhY2tlbmQgKSxcbiAgICAgIFwiU2VsZWN0IHRoZSBiYWNrZW5kIGZvcm1hdFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWRvdG5ldC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5kb3RuZXRfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIGRvdG5ldCBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWFwbGUtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWFwbGVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hcGxlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzIF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRoZW1hdGljYS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRoZW1hdGljYV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3IgbWF0aGVtYXRpY2EgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDQgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hdGxhYi1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5tYXRsYWJfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGxhYiBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tb2N0YXZlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm9jdGF2ZV9vdXRwdXQsXG4gICAgICBcIk9ERXMgZmlsZSBmb3Igb2N0YXZlIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA2IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1zYm1sLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0LnNibWxfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIHNibWwgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDcgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXByb3BhZ2F0ZS1jb25zdGFudHNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tY29uc3RhbnQtcHJvcGFnYXRpb25cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcm9wYWdhdGVfY29uc3RhbnRzLFxuICAgICAgXCJwcm9wYWdhdGUgY29uc3RhbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgOSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY3N2LXNlcGFyYXRvclwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nIHQuY3N2X3NlcCxcbiAgICAgIFwic2VwYXJhdG9yIHN5bWJvbCBpbiBDU1YgZmlsZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tcnVsZS1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzXCIgKTtcbiAgICAgICAgICAgICggXCJCaW9jaGVtaXN0XCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlcyB0aGF0IGluZHVjZSBcXFxuICAgICAgICAgICAgICAgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucnVsZV9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciBydWxlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1yZWFjdGlvbi1yYXRlLWNvbnZlbnRpb25cIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgIFwiS2FTaW1cIiwgXCJkbyBub3QgZGl2aWRlIGJ5IGFueXRoaW5nXCI7XG4gICAgICAgICAgICAoIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcmVhY3Rpb25zIHRoYXQgXFxcbiAgICAgICAgICAgICAgIGluZHVjZSBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5yZWFjdGlvbl9yYXRlX2NvbnZlbnRpb24gKSxcbiAgICAgIFwiY29udmVudGlvbiBmb3IgZGl2aWRpbmcgY29uc3RhbnQgcmF0ZXMgKGZvciByZWFjdGlvbnMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY291bnRcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiY291bnQgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzIG9mIHBhdHRlcm5zIGludG8gc3BlY2llc1wiICk7XG4gICAgICAgICAgICBcIk9jY3VycmVuY2VzXCIsIFwiY291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzcGVjaWVzXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbIFwiZW1iZWRkaW5nc1wiOyBcIkVNQkVERElOR1NcIjsgXCJvY2N1cnJlbmNlc1wiOyBcIk9DQ1VSUkVOQ0VTXCIgXSxcbiAgICAgICAgICB0LmNvdW50ICksXG4gICAgICBcInR1bmUgd2hldGhlciB3ZSBjb3VudCBpbiBlbWJlZGRpbmdzIG9yIGluIG9jY3VycmVuY2VzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0taW50ZXJuYWwtbWVhbmluZ1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgKCBcIkVtYmVkZGluZ3NcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2YgZW1iZWRkaW5nc1wiICk7XG4gICAgICAgICAgICAoIFwiT2NjdXJyZW5jZXNcIixcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgZm9yIEthcHBhIHNwZWNpZXMgZGVub3RlIG51bWJlcnMgb2Ygb2NjdXJyZW5jZXNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5pbnRlcm5hbF9tZWFuaW5nICksXG4gICAgICBcInR1bmUgdGhlIG1lYW5pbmcgb2YgdmFyaWFibGUgZm9yIEthcHBhIHNwZWNpZXMgKHdoZXRoZXIgaXQgaXMgdGhlIFxcXG4gICAgICAgbnVtYmVyIG9mIGVtYmVkZGluZ3Mgb3IgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcylcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS10cnVuY2F0ZVwiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zaXplLWZvci1zcGVjaWVzXCIsXG4gICAgICBTdXBlcmFyZy5JbnRfb3B0IHQubWF4X3NpemVfZm9yX3NwZWNpZXMsXG4gICAgICBcInRydW5jYXRlIHRoZSBuZXR3b3JrIGJ5IGRpc2NhcmRpbmcgc3BlY2llcyB3aXRoIHNpemUgZ3JlYXRlciB0aGFuIHRoZSBcXFxuICAgICAgIGFyZ3VtZW50XCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNSBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2hvdy1yZWFjdGlvbnNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3JlYWN0aW9ucyxcbiAgICAgIFwiQW5ub3RhdGUgT0RFcyBieSB0aGUgY29ycmVzcG9uZGluZyBjaGVtaWNhbCByZWFjdGlvbnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc21hc2gtcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc21hc2hfcmVhY3Rpb25zLFxuICAgICAgXCJHYXRoZXIgaWRlbnRpY2FsIHJlYWN0aW9ucyBpbiB0aGUgT0RFc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDExOyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tY29tcHV0ZS1qYWNvYmlhblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmNvbXB1dGVfamFjb2JpYW4sXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgSmFjb2JpYW4gb2YgdGhlIE9ERXMgXFxuXFxcbiAgICAgICBcXHQgKG5vdCBhdmFpbGFibGUgeWV0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0td2l0aC1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIk5vbmVcIiwgXCJubyBzeW1tZXRyaWVzIHJlZHVjdGlvblwiO1xuICAgICAgICAgICAgKCBcIkJhY2t3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBhbGdlYnJhaWMgXFxcbiAgICAgICAgICAgICAgIGV4cHJlc3Npb25zXCIgKTtcbiAgICAgICAgICAgICggXCJGb3J3YXJkXCIsXG4gICAgICAgICAgICAgIFwidXNlIHRoZSBzeW1tZXRyaWVzIHNhdGlzZmllZCBieSB0aGUgcnVsZXMgYW5kIHRoZSBpbml0aWFsIHN0YXRlXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIm5vbmVcIjtcbiAgICAgICAgICAgIFwiTk9ORVwiO1xuICAgICAgICAgICAgXCJCQUNLV0FSRFwiO1xuICAgICAgICAgICAgXCJiYWNrd2FyZFwiO1xuICAgICAgICAgICAgXCJmb3J3YXJkXCI7XG4gICAgICAgICAgICBcIkZPUldBUkRcIjtcbiAgICAgICAgICAgIFwidHJ1ZVwiO1xuICAgICAgICAgICAgXCJUUlVFXCI7XG4gICAgICAgICAgICBcIlRydWVcIjtcbiAgICAgICAgICAgIFwiZmFsc2VcIjtcbiAgICAgICAgICAgIFwiRkFMU0VcIjtcbiAgICAgICAgICAgIFwiRmFsc2VcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQud2l0aF9zeW1tZXRyaWVzICksXG4gICAgICBcIlR1bmUgd2hpY2gga2luZCBvZiBiaXNpbXVsYXRpb24gaXMgdXNlZCB0byByZWR1Y2UgdGhlIHNldCBvZiBzcGVjaWVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNTsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXN5bW1ldHJpZXNcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3N5bW1ldHJpZXMsXG4gICAgICBcIkRpc3BsYXkgdGhlIGVxdWl2YWxlbmNlIHJlbGF0aW9ucyBvdmVyIHRoZSBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnZpZXdzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB2aWV3cyBhbmFseXNpcyB3aGVuIGRldGVjdGluZyBzeW1tZXRyaWMgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuZGJvbmRzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tc2l0ZS1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2l0ZV9hY3Jvc3MsXG4gICAgICBcIkVuYWJsZS9kaXNhYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmQgdGhlIHN0YXRlcyBvZiBzaXRlcyBcXFxuICAgICAgIGluIGNvbm5lY3RlZCBhZ2VudHNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAzIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1ub25uZWdhdGl2ZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0Lm5vbm5lZ2F0aXZlLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29ycmVjdGlvbiBvZiBuZWdhdGl2ZSBjb25jZW50cmF0aW9ucyBpbiBzdGlmZiBPREUgXFxcbiAgICAgICBzeXN0ZW1zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAzIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1zaG93LXRpbWUtYWR2YW5jZVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNob3dfdGltZV9hZHZhbmNlLFxuICAgICAgXCJEaXNwbGF5IHRpbWUgYWR2YW5jZSBkdXJpbmcgbnVtZXJpY2FsIGludGVncmF0aW9uXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLWluaXRpYWwtc3RlcFwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5pbml0aWFsX3N0ZXAsXG4gICAgICBcIkluaXRpYWwgaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNCBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tbWF4LXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQubWF4X3N0ZXAsXG4gICAgICBcIk1heGltdW0gaW50ZWdyYXRpb24gc3RlcFwiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVsYXRpdmUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LnJlbGF0aXZlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIHJlbGF0aXZlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tYWJzb2x1dGUtdG9sZXJhbmNlXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0LmFic29sdXRlX3RvbGVyYW5jZSxcbiAgICAgIFwidG9sZXJhbmNlIHRvIGFic29sdXRlIHJvdW5kaW5nIGVycm9yc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgNyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnByaW50X2VmZmljaWVuY3ksXG4gICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAyIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgXVxuXG5sZXQgZ2V0X29wdGlvbiBvcHRpb25zID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thZGVfZnVsbF9uYW1lIGluXG4gIGxldCBpbnB1dCA9IHJlZiBbXSBpblxuICBsZXQgKCkgPSBTdXBlcmFyZ1RrLnBhcnNlIH50aXRsZSBvcHRpb25zIGlucHV0IGluXG4gICFpbnB1dFxuXG5sZXQgYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbSB0IHRfY29tbW9uID1cbiAgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMgOj0gISh0LnZpZXdzKTtcbiAgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgOj0gISh0LmRib25kcyk7XG4gIENvbmZpZy53aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5zaXRlX2Fjcm9zcyk7XG4gIENvbmZpZy50cmFjZSA6PSB0X2NvbW1vbi5Db21tb25fYXJncy5kZWJ1ZztcbiAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKClcbiIsIigqKlxuICogaGVhZGVycy5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICpcbiAqIENyZWF0aW9uOiAwOC8wMy8yMDEwXG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAxNCAyMDE2PlxuICogKlxuICogU29tZSBwYXJhbWV0ZXJzXG4gKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICpcbiAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICogSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxubGV0IGRvdF9jb21tZW50ID0gXCIjXCJcblxubGV0IGhlYWQgcGFyYW1ldGVycyA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBoYXMgYmVlbiBjb21wdXRlZCBieSBLYVNhOiBhIFN0YXRpYyBBbmFseXplciBmb3IgS2FwcGEgKFwiXG4gICAgXiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9zaG9ydF92ZXJzaW9uIHBhcmFtZXRlcnNcbiAgICBeIFwiKVwiO1xuICAgIFwiRG93bmxvYWQgc291cmNlcy9iaW5hcmllcyBhdCBodHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltXCI7XG4gICAgXCJcIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sYXVuY2hlZF93aGVuX2FuZF93aGVyZSBwYXJhbWV0ZXJzO1xuICAgIFwiQ29tbWFuZCBsaW5lIGlzOiBcIlxuICAgIF4gU3RyaW5nLmNvbmNhdCBcIiBcIlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgQXJyYXkudG9fbGlzdCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tbWFuZF9saW5lIHBhcmFtZXRlcnMpXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgX3QgOjogcSAtPiBcIkthU2FcIiA6OiBxXG4gICAgICAgIHwgW10gLT4gW10pO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGRvdF90b19wZGYgPVxuICBcIlBsZWFzZSB1c2UgZ3JhcGh2aXogKGh0dHA6Ly93d3cuZ3JhcGh2aXoub3JnKSBvciBPbW5pR3JhZmZsZSB0byBleHBvcnQgaXQgXFxcbiAgIHRvIGEgUERGXCJcblxubGV0IGhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbmZsdWVuY2UgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cblxubGV0IGhlYWRfY29udGFjdF9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29udGFjdCBtYXAgaW4gZG90LlwiO1xuICAgIGRvdF90b19wZGY7XG4gICAgXCJcIjtcbiAgXVxuIiwiKCpmaWxlIG5hbWVzKilcblxubGV0IGlucHV0IDogc3RyaW5nIGxpc3QgcmVmID0gcmVmIFtdICgqbmFtZSBvZiB0aGUga2FwcGEgZmlsZXMqKVxubGV0IG91dHB1dCA9IHJlZiBcImRhdGEub3V0XCJcbiIsIigqKlxuICAqIGdldF9vcHRpb24ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxOC8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKYW4gMDggMjAyMD5cbiAgKiAqXG4gICogcHJpbWl0aXZlIHRvIHBhcnNlIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU3VwZXJhcmdcblxubGV0IGFjdGlvbnMgPSBcIkFjdGlvbnNcIiwgMCwgTm9uZVxubGV0IHN5bnRheCA9IFwiU3ludGF4XCIsIDEsIE5vbmVcbmxldCBvdXRwdXQgPSBcIk91dHB1dFwiLCAyLCBOb25lXG5sZXQgcmVhY2hhYmlsaXR5ID0gXCJSZWFjaGFiaWxpdHkgYW5hbHlzaXNcIiwgMywgTm9uZVxubGV0IHRyYWNlcyA9IFwiVHJhY2UgYW5hbHlzaXNcIiwgNCwgTm9uZVxubGV0IGNvbnRhY3RfbWFwID0gXCJDb250YWN0IG1hcFwiLCA1LCBOb25lXG5sZXQgaW5mbHVlbmNlX21hcCA9IFwiSW5mbHVlbmNlIG1hcFwiLCA2LCBOb25lXG5sZXQgZmxvdyA9IFwiRmxvdyBvZiBpbmZvcm1hdGlvblwiLCA3LCBOb25lXG5sZXQgZGVidWcgPSBcIkRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLCA4LCBOb25lXG5cbmxldCBvcHRpb25zID1cbiAgTGlzdC5yZXZcbiAgICBbXG4gICAgICAoIFwiLS1kby1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBldmVyeXRoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXJlc2V0LWFsbFwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1jb250YWN0LW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLU9ERS1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdICksXG4gICAgICAgIFwibGF1bmNoIG5vdGhpbmdcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgXCItLXZvaWRcIiwgVm9pZCwgXCJcIiwgWyBhY3Rpb25zLCAyIF0sIE5vcm1hbDtcbiAgICAgICggXCItc3ludGF4XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIlYzXCIsIFwicHJldmlvdXMgdmVyc2lvblwiOyBcIlY0XCIsIFwiY3VycmVudCB2ZXJzaW9uXCIgXSxcbiAgICAgICAgICAgIFsgXCJWM1wiOyBcIlY0XCI7IFwiM1wiOyBcIjRcIjsgXCJ2M1wiOyBcInY0XCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5zeW50YXhfdmVyc2lvbiApLFxuICAgICAgICBcIlZlcnNpb24gb2YgdGhlIGxleGVyL3BhcnNlclwiLFxuICAgICAgICBbIHN5bnRheCwgMTsgYWN0aW9ucywgMzAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2NvbnRhY3RfbWFwLFxuICAgICAgICBcImNvbXB1dGUgdGhlIGNvbnRhY3QgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMjsgY29udGFjdF9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9faW5mbHVlbmNlX21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMzsgaW5mbHVlbmNlX21hcCwgMCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiSW5kaXJlY3RcIiwgXCJJZ25vcmUgZ2x1aW5nIGNvbXBhdGliaWxpdHlcIjtcbiAgICAgICAgICAgICAgXCJEaXJlY3RcIiwgXCJJZ25vcmUgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgICBcIlJlYWxpc2FibGVcIiwgXCJUYWtlIGludG8gYWNjb3VudCByZWFjaGFibGUgc3RhdGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgWyBcIkxvd1wiOyBcIk1lZGl1bVwiOyBcIkhpZ2hcIjsgXCJGdWxsXCIgXSxcbiAgICAgICAgICAgIENvbmZpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBpbmZsdWVuY2VfbWFwLCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIE9ERSBcXFxuICAgICAgICAgc2VtYW50aWNzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNDsgZmxvdywgNiBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zY2MsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgYm9uZHMgdGhhdCBtYXkgYmUgaW52b2x2ZWQgaW4gcG9seW1lcmlzYXRpb25cIixcbiAgICAgICAgWyBhY3Rpb25zLCA1OyBjb250YWN0X21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3RvY2hhc3RpYy1mbG93LW9mLWluZm9ybWF0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdGlvbixcbiAgICAgICAgXCJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGZsb3cgb2YgaW5mb3JtYXRpb24gaW4gdGhlIHN0b2NoYXN0aWMgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDY7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMsXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBzdGF0ZXMgb2YgYWdlbnQgc2l0ZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA3OyByZWFjaGFiaWxpdHksIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1lbmFibGUtZXZlcnktZG9tYWluXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb250YWN0LW1hcC1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCJkeW5hbWljXCI7XG4gICAgICAgICAgICAgIFwiLS12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImVuYWJsZSBldmVyeSBhYnN0cmFjdCBkb21haW5cIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kaXNhYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwic3RhdGljXCI7XG4gICAgICAgICAgICAgIFwiLS1uby12aWV3cy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLWRvdWJsZS1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgICAgXCItLW5vLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImRpc2FibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtZG9tYWluXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICAoIFwic3RhdGljXCIsXG4gICAgICAgICAgICAgICAgXCJWZXJ5IGNvYXJzZSBzdGF0aWMgYWJzdHJhY3Rpb246IGV2ZXJ5IGJvbmQgdGhhdCBvY2N1cnMgaW4gXFxcbiAgICAgICAgICAgICAgICAgaW5pdGlhbCBzdGF0ZXMgYW5kIHJocyBvZiBydWxlcyBpcyBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgICAgKCBcImR5bmFtaWNcIixcbiAgICAgICAgICAgICAgICBcIk1vcmUgYWNjdXJhdGUgYWJzdHJhY3Rpb246IG9ubHkgdGhlIGJvbmRzIHRoYXQgb2NjdXIgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGUgb3IgYSBydWxlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIFxcXG4gICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSwgYXJlIGNvbnNpZGVyZWRcIiApO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLndpdGhfZHluYW1pY19jb250YWN0X21hcCApLFxuICAgICAgICBcImNvbnRhY3QgbWFwIGRvbWFpbiBpcyB1c2VkIHRvIG92ZXItYXBwcm94aW1hdGUgc2lkZS1lZmZlY3RzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tdmlld3MtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfdmlld3NfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGxvY2FsIHZpZXdzIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA0IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb3VudGVycy1hY2N1cmFjeVwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiLCBcIkxvd2VyIGFuZCB1cHBlciBib3VuZHMgZm9yIGVhY2ggdmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgKCBcIm9jdGFnb25zXCIsXG4gICAgICAgICAgICAgICAgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlLCAgYW4gZWFjaCBzdW0gYW5kIFxcXG4gICAgICAgICAgICAgICAgIGVhY2ggZGlmZmVyZW5jZSBhbW9uZyB0d28gdmFyaWFibGVzXCIgKTtcbiAgICAgICAgICAgICAgKCBcIm1pXCIsXG4gICAgICAgICAgICAgICAgXCJBcHByb3hpbWF0ZSByZWR1Y2VkIHByb2R1Y3QgYmV0d2VlbiBpbnRlcnZhbHMgYW5kIGFmZmluZSBcXFxuICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwib2N0XCI7XG4gICAgICAgICAgICAgIFwib2N0b1wiO1xuICAgICAgICAgICAgICBcIm9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJNSVwiO1xuICAgICAgICAgICAgICBcIk1pXCI7XG4gICAgICAgICAgICAgIFwiT2N0XCI7XG4gICAgICAgICAgICAgIFwiT2N0b1wiO1xuICAgICAgICAgICAgICBcIk9jdGFnb25cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uc1wiO1xuICAgICAgICAgICAgICBcIm5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwibnJcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsXCI7XG4gICAgICAgICAgICAgIFwibm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTm9uLXJlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgICAgXCJOclwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxcIjtcbiAgICAgICAgICAgICAgXCJOb25fcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbGF0aW9uYWxcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBDb25maWcuY291bnRlcl9hbmFseXNpc19kb21haW4gKSxcbiAgICAgICAgXCJBYnN0cmFjdCBkb21haW4gZm9yIGNvdW50ZXIgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIGRvdWJsZSBib25kcyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2l0ZXMtYWNjcm9zcy1ib25kcy1kb21haW5cIixcbiAgICAgICAgQm9vbCBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyxcbiAgICAgICAgXCJlbmFibGUgdGhlIGFuYWx5c2lzIG9mIHRoZSByZWxhdGlvbiBhbW9uZyB0aGUgc3RhdGVzIG9mIHNpdGVzIGluIFxcXG4gICAgICAgICBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA4IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zeW1tZXRyaWVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX3N5bW1ldHJpZXMsXG4gICAgICAgIFwiTG9vayB1cCBmb3IgcGFpcnMgb2Ygc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3Itdmlldy1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBuZXcgdmlld3MgYXJlIGRpc2NvdmVyZWRcIjtcbiAgICAgICAgICAgICAgXCJGdWxsXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBwdXQgaW4gdGhlIHdvcmtpbmcgbGlzdFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaXR5X2FuYWx5c2lzICksXG4gICAgICAgIFwiVHVuZSB0aGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgdmlldyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLXZlcmJvc2l0eS1sZXZlbC1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIk11dGVcIiwgXCJObyBpbmZvcm1hdGlvbiBkaXNwbGF5ZWRcIjtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJTaG93IGFuYWx5c2lzIHJlc3VsdCBvbmx5XCI7XG4gICAgICAgICAgICAgIFwiTWVkaXVtXCIsIFwiQWxzbyBzaG93IHdoaWNoIHJ1bGVzIGFyZSBhcHBsaWVkXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIkFsc28gc2hvdyB3aGVuIHBhdHRlcm5zIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHJlYWNoYWJpbGl0eSBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1oaWRlLW9uZS1kLXJlbGF0aW9ucy1mcm9tLWNhcnRlc2lhbi1kZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24sXG4gICAgICAgIFwiRmlsdGVyIG91dCAxLWQgcmVsYXRpb25zIGZyb20gdGhlIENhcnRlc2lhbiBkZWNvbXBvc2l0aW9uXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMSBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1zbWFzaC1yZWxhdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuc21hc2hfcmVsYXRpb25zLFxuICAgICAgICBcIlJlY29tYmluZSByZWxhdGlvbnMgdG8gZ2V0IGEgbW9yZSBwcmVjaXNlICYgY29tcGFjdCBvdXRwdXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEyIF0sXG4gICAgICAgIERldmVsb3BwZXIgKTtcbiAgICAgICggXCItLW91dHB1dC1tb2RlLWZvci1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwicmF3XCIsIFwibm8gcG9zdC1wcm9jZXNzaW5nXCI7XG4gICAgICAgICAgICAgIFwia2FwcGFcIiwgXCJrYXBwYSBtb2RlXCI7XG4gICAgICAgICAgICAgIFwiZW5nbGlzaFwiLCBcIm5hdHVyYWwgbGFuZ3VhZ2VcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy51c2VfbmF0dXJhbF9sYW5ndWFnZSApLFxuICAgICAgICBcInBvc3QtcHJvY2VzcyByZWxhdGlvbiBhbmQgb3V0cHV0IHRoZSByZXN1bHQgaW4gdGhlIGNob3NlbiBmb3JtYXRcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgbG9jYWwgdHJhY2VzIG9mIGludGVyZXN0aW5nIHBhcnRzIG9mIGFnZW50IGludGVyZmFjZXNcIixcbiAgICAgICAgWyBhY3Rpb25zLCA5OyB0cmFjZXMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaG93LXJ1bGUtbmFtZXMtaW4tbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiQW5ub3RhdGUgZWFjaCB0cmFuc2l0aW9uIHdpdGggdGhlIG5hbWUgb2YgdGhlIHJ1bGVzIGluIHRyYWNlIFxcXG4gICAgICAgICBhYnN0cmFjdGlvblwiLFxuICAgICAgICBbIHRyYWNlcywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXVzZS1tYWNyb3RyYW5zaXRpb25zLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMsXG4gICAgICAgIFwiVXNlIG1hY3JvdHJhbnNpdGlvbnMgdG8gZ2V0IGEgY29tcGFjdCB0cmFjZSB1cCB0byBjaGFuZ2Ugb2YgdGhlIFxcXG4gICAgICAgICBpbnRlcmxlYXZpbmcgb3JkZXIgb2YgY29tbXV0aW5nIG1pY3JvdHJhbnNpdGlvbnNcIixcbiAgICAgICAgWyB0cmFjZXMsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pZ25vcmUtdHJpdmlhbC1sb3Nhbmdlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcyxcbiAgICAgICAgXCJEbyBub3QgdXNlIG1hY3JvdHJhbnNpdGlvbnMgZm9yIHNpbXBsaWZ5aW5nIHRyaXZpYWwgbG9zYW5nZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDMgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWFjcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWFkZC1zaW5ndWxhci1taWNyb3N0YXRlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXMsXG4gICAgICAgIFwiQ29tcGxldGUgdGhlIHNpbXBsaWNpYWwgY29tcGxleGVzIHdpdGggc2luZ3VsYXIgaW50ZXJzZWN0aW9uIG9mIFxcXG4gICAgICAgICBoaWdoZXItZGltZW5zaW9uIGZhY2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCA1IF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1zZXBhcmF0aW5nLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyxcbiAgICAgICAgXCJDb21wdXRlIHRoZSB0cmFuc2l0aW9ucyB0aGF0IHNlcGFyYXRlcyBzdHJvbmdseSBjb25uZWN0ZWQgc2V0IG9mIFxcXG4gICAgICAgICBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDEwOyB0cmFjZXMsIDYgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtZGlyZWN0b3J5XCIsXG4gICAgICAgIE11bHRpRXh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9jYWwtdHJhY2VzLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgICAgXCItLW91dHB1dC1sb2ctZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgXCJEZWZhdWx0IHJlcG9zaXRvcnkgZm9yIG91dHB1dHNcIixcbiAgICAgICAgWyBvdXRwdXQsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBDT05UQUNUIE1BUCAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWNvbnRhY3QtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9jbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBjb250YWN0IG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAwOyBjb250YWN0X21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmNvbnRhY3RfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgY29udGFjdCBtYXAgb3V0cHV0XCIsXG4gICAgICAgIFsgb3V0cHV0LCAxOyBjb250YWN0X21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7XG4gICAgICAgICAgICAgIFwiR0VQSElcIiwgXCJHZXBoaSBmb3JtYXRcIjtcbiAgICAgICAgICAgICAgKCpcIkhUTUxcIixcIkhUTUwgZm9ybWF0XCIqKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmNvbnRhY3RfbWFwX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMjsgY29udGFjdF9tYXAsIDUgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1hY2N1cmFjeS1sZXZlbFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJMb3dcIiwgXCJDb2xsZWN0IGluZm8gZnJvbSByaHMgb2YgcnVsZXMgYW5kIGluaXRpYWwgc3RhdGVcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiT25seSBjb25zaWRlciByZWFjaGFibGUgcnVsZXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcG9seW1lci1kZXRlY3Rpb24tYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiYmFzZWQgb25seSBvbiB0aGUgY29udGFjdCBtYXBcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwidXNlIHJlYWNoYWJpbGl0eSBhbmFseXNpcyBhcyB3ZWxsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuc2NjX2FjY3VyYWN5X2xldmVsICksXG4gICAgICAgIFwiVHVuZSB0aGUgYWNjdXJhY3kgbGV2ZWwgb2YgdGhlIGRldGVjdGlvbiBvZiBwb2x5bWVyc1wiLFxuICAgICAgICBbIGNvbnRhY3RfbWFwLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tcHVyZS1jb250YWN0XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnB1cmVfY29udGFjdCxcbiAgICAgICAgXCJzaG93IGluIHRoZSBjb250YWN0IG1hcCAgb25seSB0aGUgc2l0ZXMgd2l0aCBhIGJpbmRpbmcgc3RhdGVcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgOCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICgqIElORkxVRU5DRSBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1pbmZsdWVuY2UtbWFwLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9pbV9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBpbmZsdWVuY2UgbWFwIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDM7IGluZmx1ZW5jZV9tYXAsIDIgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcFwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSxcbiAgICAgICAgXCJmaWxlIG5hbWUgZm9yIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAzIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taW5mbHVlbmNlLW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiOyBcIkRJTVwiLCBcIkRJTSBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgNDsgaW5mbHVlbmNlX21hcCwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPQ0FMIFRSQUNFUyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgZmlsZXMgYWJvdXQgbG9jYWwgdHJhY2VzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA1OyB0cmFjZXMsIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1sb2NhbC10cmFjZXMtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJIVE1MXCIsIFwiSFRNTCBmb3JtYXRcIiBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGxvY2FsIHRyYW5zaXRpb24gc3lzdGVtc1wiLFxuICAgICAgICBbIG91dHB1dCwgNjsgdHJhY2VzLCA4IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogTE9HICopXG4gICAgICAoIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLm91dHB1dF9kaXJlY3RvcnksXG4gICAgICAgIFwicHV0IHRoZSBsb2cgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnlcIixcbiAgICAgICAgWyBvdXRwdXQsIDc7IGRlYnVnLCAwIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tZGVidWdcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMSBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudHJhY2UsXG4gICAgICAgIFwiZHVtcCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgWyBkZWJ1ZywgMiBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWRlYnVnZ2luZy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDMgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS11bnNhZmUtbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy51bnNhZmUsXG4gICAgICAgIFwiZXhjZXB0aW9ucyBhcmUgZ2F0aGVyZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29tcHV0YXRpb24sIGluc3RlYWQgb2YgXFxcbiAgICAgICAgIGhhbHRpbmcgaXQgXCIsXG4gICAgICAgIFsgZGVidWcsIDQgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnByaW50X2VmZmljaWVuY3ksXG4gICAgICAgIFwicHJvbXB0IENQVSB0aW1lIGFuZCB2YXJpb3VzIGRhdGFzXCIsXG4gICAgICAgIFsgZGVidWcsIDUgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWNvbnN0cmFpbnRzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50cyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcmVmaW5lbWVudCBjb25zdHJhaW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1uci1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIG5vbiByZWxhdGlvbmFsIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItaW5mbHVlbmNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgaW5mbHVlbmNlIHJlbGF0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1kZWFkLXJ1bGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBkZWFkIHJ1bGVzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW5vbi13ZWFrbHktcmV2ZXJzaWJsZS10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItb2YtcnVsZXMtd2l0aC1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlcyB3aXRoIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1hdmVyYWdlLXNjY1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjLFxuICAgICAgICBcImR1bXAgdGhlIGF2ZXJhZ2Ugc2l6ZSBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLXRpbWluZ1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl90aW1pbmcsXG4gICAgICAgIFwiZHVtcCBDUFUgdGltZVwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1maWxlXCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZmlsZSxcbiAgICAgICAgXCJzZWxlY3QgdGhlIGZpbGUgdG8gZHVtcCBiYWNrZG9vciBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5iYWNrZG9vcl9kaXJlY3RvcnksXG4gICAgICAgIFwic2VsZWN0IHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgIF1cblxubGV0IGdldF9vcHRpb24gZXJyb3IgPVxuICBsZXQgdGl0bGUgPSBWZXJzaW9uLnZlcnNpb25fa2FzYV9mdWxsX25hbWUgaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBGaWxlTmFtZXMuaW5wdXQgaW5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2FcbiAgICAgICgpXG4gIGluXG4gIGVycm9yLCBwYXJhbWV0ZXJzLCAhRmlsZU5hbWVzLmlucHV0XG4iLCIoKipcbiAqIGV4Y2VwdGlvbi5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMTUgMjAxNj5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBkZWNsYXJlcyBleGNlcHRpb25zXG4gKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgbWV0aG9kX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXJcblxubGV0IGVtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlclxubGV0IGlzX2VtcHR5X2Vycm9yX2hhbmRsZXIgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuaXNfZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgc2FmZV93YXJuIHBhcmFtZXRlcnMgX2Vycm9yX2hhbmRsZXIgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIF9kZWZhdWx0ID1cbiAgbGV0IHVuY2F1Z2h0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuXG4gIGluXG4gIGxldCBzdHJpbmdsaXN0ID1cbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodFxuICAgICAgWyBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycyBdXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICBzdHJpbmdsaXN0XG4gIGluXG4gIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgaW5cbiAgcmFpc2UgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5VbmNhdWdodF9leGNlcHRpb24gdW5jYXVnaHQpXG5cbmxldCB1bnNhZmVfd2FybiBfcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX25hbWUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICAoIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3IgdW5jYXVnaHQgP3RvX3VpIGVycm9yX2hhbmRsZXIsXG4gICAgZGVmYXVsdCAoKSApXG5cbmxldCB3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdCA9XG4gIGxldCBlcnJvciwgZGZ0ID1cbiAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF91bnNhZmUgcGFyYW1ldGVycyB0aGVuXG4gICAgICB1bnNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGVsc2VcbiAgICAgIHNhZmVfd2FybiBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgZmlsZSBtZXNzYWdlIGV4biBkZWZhdWx0XG4gIGluXG4gIGxldCAoKSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgZXJyb3IsIGRmdFxuXG5sZXQgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIChmaWxlLCBsaW5lLCBfLCBfKVxuICAgID8obWVzc2FnZSA9IFwiXCIpID8ocG9zID0gTm9uZSkgZXhuIGRlZmF1bHQgPVxuICBsZXQgbGlhaXNvbiA9XG4gICAgaWYgbWVzc2FnZSA9IFwiXCIgJiYgcG9zID0gTm9uZSB0aGVuXG4gICAgICBcIlwiXG4gICAgZWxzZVxuICAgICAgXCI6IFwiXG4gIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgcyAtPiBcIiwgXCIgXiBMb2MudG9fc3RyaW5nIHNcbiAgaW5cbiAgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoU29tZSBmaWxlKVxuICAgIChTb21lIChcImxpbmUgXCIgXiBzdHJpbmdfb2ZfaW50IGxpbmUgXiBwb3MgXiBsaWFpc29uIF4gbWVzc2FnZSkpXG4gICAgZXhuIGRlZmF1bHRcblxubGV0IHdhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgPyhtZXNzYWdlID0gXCJcIikgP3BvcyBleG5cbiAgICBkZWZhdWx0ID1cbiAgd2Fybl93aXRoX2V4biBwYXJhbWV0ZXJzIGVycm9yX2hhbmRsZXIgP3RvX3VpIGZpbGVfbGluZSB+bWVzc2FnZSB+cG9zIGV4blxuICAgIChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgbGV0IHBhcmFtZXRlcnMgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBcImVycm9yOiBcIiBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIGNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl9jYXVnaHQgY2F1Z2h0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVzXCIpXG4gICAgICAgICAgICBzdHJpbmdsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biB1bmNhdWdodCAtPlxuICAgICAgICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICA6OiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuc3RyaW5nbGlzdF9vZl91bmNhdWdodCB1bmNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzKSlcbiAgaW5cbiAgKClcblxubGV0IHByaW50IHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlbiAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNleGVjdXRpb24gZmluaXNoZWQgd2l0aG91dCBhbnkgZXhjZXB0aW9uXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWRcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgIHByaW50X2Zvcl9LYVNpbSBwYXJhbWV0ZXJzIGhhbmRsZXJzXG4gIClcblxubGV0IHByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGlmXG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICAgICYmIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgaGFuZGxlcnMgPSBbXVxuICB0aGVuXG4gICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIFwiJXNTb21lIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIHJhaXNlZCBkdXJpbmcgdGhlIHN0YXRpYyBhbmFseXNpcywgcGxlYXNlIFxcXG4gICAgICAgICBhbmFseXNlIHlvdXIgZmlsZSB3aXRoIEthU2FcIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICBpblxuICAgICgpXG4gIClcblxubGV0IHdyYXAgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gPVxuICBmc3QgKHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3IgKFNvbWUgc3RyaW5nKSBzdHJpbmdfb3B0IGV4biAoZnVuICgpIC0+ICgpKSlcblxubGV0IF9saWZ0X2Vycm9yX2xvZ3NfZm9yX0thU2EgZiA9XG4gIGYgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyBzdHJpbmdfb3B0IGV4biAtPlxuICAgICAgZnN0XG4gICAgICAgICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpKVxuXG5sZXQgY2hlY2tfcG9pbnRcbiAgICAod2FybiA6XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgICBtZXRob2RfaGFuZGxlciAtPlxuICAgICAgP3RvX3VpOmJvb2wgLT5cbiAgICAgICdhIC0+XG4gICAgICA/bWVzc2FnZTpzdHJpbmcgLT5cbiAgICAgID9wb3M6TG9jLnQgLT5cbiAgICAgIGV4biAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgKiB1bml0KSBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIHMgP3RvX3VpID9tZXNzYWdlID9wb3MgZXhuID1cbiAgaWYgZXJyb3IgPT0gZXJyb3InIHRoZW5cbiAgICBlcnJvclxuICBlbHNlIChcbiAgICBsZXQgZXJyb3IsICgpID0gd2FybiBwYXJhbWV0ZXIgZXJyb3InID90b191aSBzID9tZXNzYWdlID9wb3MgZXhuICgpIGluXG4gICAgZXJyb3JcbiAgKVxuIiwiKCoqIFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj4gKilcblxubGV0IGZvcl9LYVNpbSBmID0gZiAoZnVuIF8gXyBfIF8gXyAtPiAoKSkgKCkgKClcbmxldCBsaWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9IHNuZCAoZm9yX0thU2ltIGYgYSBiKVxuXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9iaW5hcnlfZm9yX0thU2ltIGYgYSBiID1cbiAgbGV0IF8sIGIsIGMgPSBmb3JfS2FTaW0gZiBhIGIgaW5cbiAgYiwgY1xuXG5sZXQgbGlmdF9nZW5lcmljX3Rlcm5hcnlfZm9yX0thU2ltIGYgYSBiIGMgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYiBjKVxuXG5sZXQgbGlmdF9nZW5fdW5hcnkgZHVtcCBmIGEgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fYmluYXJ5IGR1bXAgZiBhIGIgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgaW5cbiAgbGV0IF8gPSBkdW1wIHBhcmFtZXRlcnMgZXJyb3IgaW5cbiAgb3V0cHV0XG5cbmxldCBsaWZ0X2dlbl90ZXJuYXJ5IGR1bXAgZiBhIGIgYyA9XG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmR1bW15X3BhcmFtZXRlcnNcbiAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhICgpXG4gIGluXG4gIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID0gZiBwYXJhbWV0ZXJzIGVycm9yIGEgYiBjIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGJcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fYmluYXJ5IEV4Y2VwdGlvbi5wcmludCBmIGEgYiBjXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ191bmFyeSBmIGEgPSBsaWZ0X2dlbl91bmFyeSAoZnVuIF8gXyAtPiAoKSkgZiBhXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfYmluYXJ5IGYgYSBiID0gbGlmdF9nZW5fYmluYXJ5IChmdW4gXyBfIF8gLT4gKCkpIGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5IGYgYSBiIGMgPVxuICBsaWZ0X2dlbl90ZXJuYXJ5IChmdW4gXyBfIF8gXyAtPiAoKSkgZiBhIGIgY1xuIiwiKCoqXG4gICogc3RvcnlQcm9maWxpbmcubWxcbiAgKlxuICAqIEdlbmVyYXRlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBmb3Igc3RvcmllcyBpbiBLYVNpbVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDA5LzA0LzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTUvMDYvMjAxMlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzdGVwX2tpbmQgPVxuICB8IER1bW15XG4gIHwgQmVnaW5uaW5nXG4gIHwgQ29sbGVjdF90cmFjZXNcbiAgfCBDYXVzYWxfY29tcHJlc3Npb25cbiAgfCBXZWFrX2NvbXByZXNzaW9uXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uXG4gIHwgSXRlcmF0aW9uIG9mIGludFxuICB8IFN0b3J5IG9mIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uXG4gIHwgU2lwaG9uX2RldGVjdGlvblxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlXG4gIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb25cbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICB8IENvbXByZXNzaW9uXG4gIHwgQnVpbGRfZ3JpZFxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb25cbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmVcbiAgfCBHcmFwaF9yZWR1Y3Rpb25cbiAgfCBHcmFwaF9jb252ZXJzaW9uXG4gIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICB8IFN0b3JlX3RyYWNlXG4gIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzXG4gIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvblxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gb2Ygc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBvZiBpbnRcbiAgfCBJbml0aWFsX3N0YXRlIG9mIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgb2YgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgb2YgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXNcbiAgfCBNZXJnZV9pbmZsdWVuY2VzXG4gIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uXG4gIHwgS2FTYV9sZXhpbmdcbiAgfCBLYVNhX2xpbmtpbmdcbiAgfCBJbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgb2Ygc3RyaW5nXG4gIHwgTEthcHBhX3NpZ25hdHVyZVxuXG5sZXQgc3RyaW5nX29mX3N0ZXBfa2luZCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRHVtbXkgfCBCZWdpbm5pbmcgLT4gXCJcIlxuICB8IEJ1aWxkX2NvbmZpZ3VyYXRpb24gLT4gXCJCdWlsZCBjb25maWd1cmF0aW9uXCJcbiAgfCBDb2xsZWN0X3RyYWNlcyAtPiBcIkNvbGxlY3QgdHJhY2VzXCJcbiAgfCBDYXVzYWxfY29tcHJlc3Npb24gLT4gXCJDYXVzYWwgY29tcHJlc3Npb25cIlxuICB8IFdlYWtfY29tcHJlc3Npb24gLT4gXCJXZWFrIGNvbXByZXNzaW9uXCJcbiAgfCBTdHJvbmdfY29tcHJlc3Npb24gLT4gXCJTdHJvbmcgY29tcHJlc3Npb25cIlxuICB8IEl0ZXJhdGlvbiBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJdGVyYXRpb24gJWlcIiBpbnRcbiAgfCBTdG9yeSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTdG9yeSAlaVwiIGludFxuICB8IFBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uIC0+IFwiUGFydGlhbCBvcmRlciByZWR1Y3Rpb25cIlxuICB8IFNpcGhvbl9kZXRlY3Rpb24gLT4gXCJEZXRlY3Rpb24gb2Ygc2lwaG9uc1wiXG4gIHwgRGVjb21wb3NlX2luaXRpYWxfc3RhdGUgLT4gXCJTcGxpdHRpbmcgaW5pdGlhbCBzdGF0ZXNcIlxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvbiAtPiBcIlJlbmFtaW5nIGFnZW50cyB0byBhdm9pZCBjb25mbGljdHNcIlxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uIC0+IFwiRGVsZXRpb24gb2YgcHNldWRvIGludmVyc2UgZXZlbnRzXCJcbiAgfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZSAtPlxuICAgIFwiUmVtb3ZpbmcgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVzXCJcbiAgfCBDb21wcmVzc2lvbiAtPiBcIkNvbXByZXNzaW9uXCJcbiAgfCBUcmFuc2l0aXZlX2Nsb3N1cmUgLT4gXCJUcmFuc2l0aXZlIGNsb3N1cmVcIlxuICB8IEJ1aWxkX2dyaWQgLT4gXCJHcmlkIGNvbXB1dGF0aW9uXCJcbiAgfCBHcmFwaF9yZWR1Y3Rpb24gLT4gXCJUcmFuc2l0aXZlIHJlZHVjdGlvblwiXG4gIHwgR3JhcGhfY29udmVyc2lvbiAtPiBcIkdyYXBoIGNvbnZlcnNpb25cIlxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gLT4gXCJDb21wdXRpbmcgdGhlIGNhbm5vbmljIGZvcm1cIlxuICB8IFN0b3JlX3RyYWNlIC0+IFwiU3RvcmUgdHJhY2VcIlxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cyAtPiBcIlJlbW92aW5nIGJsYWNrLWxpc3RlZCBldmVudHNcIlxuICB8IEJsYWNrbGlzdGluZ19ldmVudHMgLT4gXCJCbGFrbGlzdGluZyBldmVudHNcIlxuICB8IEdsb2JhbF9pbml0aWFsaXphdGlvbiAtPiBcIkdsb2JhbCBpbml0aWFsaXphdGlvblwiXG4gIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiAtPiBcIkRvbWFpbnMgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkRvbWFpbiBpbml0aWFsaXphdGlvbiAoJXMpXCIgc3RyaW5nXG4gIHwgQXBwbHlfcnVsZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJBcHBseSBydWxlICVpXCIgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJJbml0aWFsIHN0YXRlICVpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX3N0YXRpYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKHN0YXRpYylcIiBpbnRcbiAgfCBTY2FuX3J1bGVfZHluYW1pYyBpbnQgLT4gUHJpbnRmLnNwcmludGYgXCJTY2FuIHJ1bGUgJWkgKGR5bmFtaWMpXCIgaW50XG4gIHwgUmVndWxhcl9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiUmVndWxhciBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyAtPlxuICAgIFByaW50Zi5zcHJpbnRmIFwiU2lkZS1lZmZlY3RzIGluZmx1ZW5jZXMgY29tcHV0YXRpb25cIlxuICB8IE1lcmdlX2luZmx1ZW5jZXMgLT4gUHJpbnRmLnNwcmludGYgXCJNZXJnaW5nIGluZmx1ZW5jZXNcIlxuICB8IEthU2ltX2NvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTaW0gZnJvbnRlbmRcIlxuICB8IEthU2FfcHJlY29tcGlsYXRpb24gLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIHByZWNvbXBpbGF0aW9uXCJcbiAgfCBLYVNhX2xleGluZyAtPiBQcmludGYuc3ByaW50ZiBcIkthU2EgTGV4aW5nXCJcbiAgfCBLYVNhX2xpbmtpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExpbmtpbmdcIlxuICB8IEluZmx1ZW5jZV9tYXAgc3RyaW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiSW5mbHVlbmNlIG1hcCAoJXMpXCIgc3RyaW5nXG4gIHwgSW50ZXJuYWxfaW5mbHVlbmNlX21hcCBzdHJpbmcgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKGludGVybmFsICVzKVwiIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmUgLT4gUHJpbnRmLnNwcmludGYgXCJMS2FwcGEgc2lnbmF0dXJlXCJcblxubGV0IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXJzIHggPVxuICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVycylcbiAgICAoc3RyaW5nX29mX3N0ZXBfa2luZCB4KVxuXG5tb2R1bGUgdHlwZSBTdG9yeVN0YXRzID0gc2lnXG4gIHR5cGUgbG9nX2luZm9cblxuICB2YWwgaW5jX3JlbW92ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19zZWxlY3RlZF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgbG9nX2luZm9fdG9fanNvbiA6IGxvZ19pbmZvIC0+IFlvanNvbi5CYXNpYy50XG4gIHZhbCBsb2dfaW5mb19vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gbG9nX2luZm9cbiAgdmFsIGluY19jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19rX2N1dF9ldmVudHMgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2N1dF9ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX25fa2FzaW1fZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2luaXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX3NpZGVfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX29ic19ldmVudHMgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2JyYW5jaCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHJlc2V0X2xvZyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBkdW1wX2NvbXBsZXRlX2xvZyA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gbG9nX2luZm8gLT4gdW5pdFxuICB2YWwgZHVtcF9zaG9ydF9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va191cF9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBhZGRfbG9va19kb3duX2Nhc2UgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGNvcHkgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaXNfZHVtbXkgOiBzdGVwX2tpbmQgLT4gYm9vbFxuXG4gIHZhbCBhZGRfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgYWRkX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgY2xvc2VfZXZlbnRfb3B0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIG9wdGlvbiAtPlxuICAgICh1bml0IC0+IGludCkgb3B0aW9uIC0+XG4gICAgbG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBsb2dfaW5mb1xuXG4gIHZhbCBzZXRfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RlcF90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9nbG9iYWxfY3V0IDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfcHNldWRvX2ludiA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0YXJ0X2NvbXByZXNzaW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9ncmlkX2dlbmVyYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2Nhbm9uaWNhbGlzYXRpb24gOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBlbGxhcHNlZF9nbG9iYWxfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBlbGxhcHNlZF90aW1lIDogbG9nX2luZm8gLT4gZmxvYXRcbiAgdmFsIGluaXRfbG9nX2luZm8gOiB1bml0IC0+IGxvZ19pbmZvXG4gIHZhbCB0aWNrIDogbG9nX2luZm8gLT4gYm9vbCAqIGxvZ19pbmZvXG4gIHZhbCBjbG9zZV9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbiAgdmFsIGZsdXNoX2xvZ2dlciA6IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBTdG9yeVN0YXRzIDogU3RvcnlTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHN0YWNrX2hlYWQgPSB7XG4gICAgY3VycmVudF9icmFuY2g6IGludDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGludDtcbiAgICByZW1haW5pbmdfZXZlbnRzOiBpbnQ7XG4gICAgcmVtb3ZlZF9ldmVudHM6IGludDtcbiAgICBzdGFja19zaXplOiBpbnQ7XG4gIH1cblxuICB0eXBlIHN0ZXAgPSB7XG4gICAgdGFnOiBzdGVwX2tpbmQ7XG4gICAgc2l6ZV9iZWZvcmU6IGludCBvcHRpb247XG4gICAgc2l6ZV9hZnRlcjogaW50IG9wdGlvbjtcbiAgICB0aW1lX3N0YXJ0OiBmbG9hdDtcbiAgICBkdXJhdGlvbjogZmxvYXQgb3B0aW9uO1xuICAgIGRlcHRoOiBpbnQ7XG4gIH1cblxuICBsZXQga19maXJzdCBfcGFyYW1ldGVyIGsgbCA9XG4gICAgbGV0IHJlYyBhdXggayBsIG91dHB1dCA9XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIFtdLCBMaXN0LnJldiBvdXRwdXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICggKGxldCByZWMgYXV4IGsgb3V0cHV0ID1cbiAgICAgICAgICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGF1eCAoayAtIDEpIChcIlwiIDo6IG91dHB1dClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGF1eCBrIFtdKSxcbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dCApXG4gICAgICAgIHwgdCA6OiBxIC0+IGF1eCAoayAtIDEpIHEgKHQgOjogb3V0cHV0KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGsgbCBbXVxuXG4gIGxldCBwcmludF90YXNrIHBhcmFtZXRlciAoYSwgYikgPVxuICAgIGxldCBfID0gcHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlciBhLnRhZyBpblxuICAgIGxldCB0YWIsIGIgPSBrX2ZpcnN0IHBhcmFtZXRlciA0IGIgaW5cbiAgICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfc3RlcF9raW5kIHBhcmFtZXRlcikgYiBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpKVxuICAgICAgICB0YWJcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2JlZm9yZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5zaXplX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGkgLT4gc3RyaW5nX29mX2ludCBpKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgIChtYXRjaCBhLmR1cmF0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHRpbWUgLT4gc3RyaW5nX29mX2Zsb2F0IHRpbWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBjbG9zZV9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmNsb3NlX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIGxldCBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyID1cbiAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuXG4gIHR5cGUgbG9nX2luZm8gPSB7XG4gICAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICAgIHN0b3J5X3RpbWU6IGZsb2F0O1xuICAgIHN0ZXBfdGltZTogZmxvYXQ7XG4gICAgY3VycmVudF90YXNrOiBzdGVwIGxpc3Q7XG4gICAgbmV4dF9kZXB0aDogaW50O1xuICAgIGJyYW5jaDogaW50O1xuICAgIGN1dDogaW50O1xuICAgIHN0YWNrOiBzdGFja19oZWFkIGxpc3Q7XG4gICAgY3VycmVudF9zdGFjazogc3RhY2tfaGVhZDtcbiAgICBwcm9wYWdhdGlvbjogaW50IGFycmF5O1xuICAgIGxhc3RfdGljazogZmxvYXQ7XG4gIH1cblxuICBsZXQgaXNfZHVtbXkgc3RlcF9raW5kID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgRHVtbXkgLT4gdHJ1ZVxuICAgIHwgQmVnaW5uaW5nIHwgQ29sbGVjdF90cmFjZXMgfCBDYXVzYWxfY29tcHJlc3Npb24gfCBXZWFrX2NvbXByZXNzaW9uXG4gICAgfCBTdHJvbmdfY29tcHJlc3Npb24gfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIHwgQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG4gICAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiB8IFJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlXG4gICAgfCBDb21wcmVzc2lvbiB8IEJ1aWxkX2dyaWQgfCBCdWlsZF9jb25maWd1cmF0aW9uIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgfCBHcmFwaF9yZWR1Y3Rpb24gfCBHcmFwaF9jb252ZXJzaW9uIHwgQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvblxuICAgIHwgU3RvcmVfdHJhY2UgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgfCBCbGFja2xpc3RpbmdfZXZlbnRzXG4gICAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gfCBEb21haW5zX2luaXRpYWxpemF0aW9uIHwgUmVndWxhcl9pbmZsdWVuY2VzXG4gICAgfCBTaWRlX2VmZmVjdHNfaW5mbHVlbmNlcyB8IE1lcmdlX2luZmx1ZW5jZXMgfCBLYVNpbV9jb21waWxhdGlvblxuICAgIHwgS2FTYV9wcmVjb21waWxhdGlvbiB8IEthU2FfbGV4aW5nIHwgS2FTYV9saW5raW5nIHwgTEthcHBhX3NpZ25hdHVyZVxuICAgIHwgSXRlcmF0aW9uIF8gfCBTdG9yeSBfIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIF8gfCBBcHBseV9ydWxlIF9cbiAgICB8IEluaXRpYWxfc3RhdGUgXyB8IFNjYW5fcnVsZV9zdGF0aWMgXyB8IFNjYW5fcnVsZV9keW5hbWljIF9cbiAgICB8IEluZmx1ZW5jZV9tYXAgXyB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgaWYgaXNfZHVtbXkgc3RlcF9raW5kIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGFkZF9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBhZGRfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IG5leHRfZGVwdGggPSBsb2dfaW5mby5uZXh0X2RlcHRoIGluXG4gICAgICBsZXQgdGFzayA9XG4gICAgICAgIHtcbiAgICAgICAgICB0YWcgPSBzdGVwX2tpbmQ7XG4gICAgICAgICAgc2l6ZV9iZWZvcmUgPVxuICAgICAgICAgICAgKG1hdGNoIGYgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpKTtcbiAgICAgICAgICBzaXplX2FmdGVyID0gTm9uZTtcbiAgICAgICAgICB0aW1lX3N0YXJ0ID0gU3lzLnRpbWUgKCk7XG4gICAgICAgICAgZHVyYXRpb24gPSBOb25lO1xuICAgICAgICAgIGRlcHRoID0gbmV4dF9kZXB0aDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLnByaW50X2NlbGwgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgXCJTdGFydFwiXG4gICAgICBpblxuICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgIHRhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiBsb2dfaW5mby5jdXJyZW50X3Rhc2spXG4gICAgICBpblxuICAgICAgbGV0IF8gPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgIGxldCBfID0gTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyXG4gICAgICAgICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgc3RlcF9raW5kKVxuICAgICAgaW5cbiAgICAgIGxldCBjdXJyZW50X3Rhc2sgPSB0YXNrIDo6IGxvZ19pbmZvLmN1cnJlbnRfdGFzayBpblxuICAgICAgZXJyb3IsIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCArIDE7IGN1cnJlbnRfdGFzayB9XG4gICAgKVxuXG4gIGxldCBjbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBjbG9zZV9ldmVudCBzaG91bGQgbm90IGJlIFxcXG4gICAgICAgICAgICAgY2FsbGVkIHdpdGggYSBkdW1teSBldmVudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJEdW1teSBldmVudCBpbiBjbG9zZV9ldmVudFwiKSAoKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBpbnRlcnJ1cHRlZCA9XG4gICAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBuZXh0X2RlcHRoID0gMSB0aGVuXG4gICAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVudCBwcm9maWxpbmcgaW5mb3JtYXRpb24sIGRlcHRoIHNob3VsZCBub3QgYmUgZXF1YWwgXFxcbiAgICAgICAgICAgICAgICAgdG8gMSB3aGVuIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgICAoRmFpbHVyZSBcIkRlcHRoPTEgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbG9nX2luZm8uY3VycmVudF90YXNrIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBubyBjdXJyZW50IHRhc2sgd2hlbiBcXFxuICAgICAgICAgICAgICAgY2xvc2luZyBhbiBldmVudFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIk5vIGN1cnJlbnQgdGFza3MgaW4gY2xvc2VfZXZlbnRcIikgbG9nX2luZm9cbiAgICAgICAgfCBjdXJyZW50X3Rhc2sgOjogdGFpbCB3aGVuIGN1cnJlbnRfdGFzay50YWcgPSBzdGVwX2tpbmQgLT5cbiAgICAgICAgICBsZXQgc2l6ZV9hZnRlciA9XG4gICAgICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBmIC0+IFNvbWUgKGYgKCkpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSAtLiBjdXJyZW50X3Rhc2sudGltZV9zdGFydCBpblxuICAgICAgICAgIGxldCB0YXNrID0geyBjdXJyZW50X3Rhc2sgd2l0aCBzaXplX2FmdGVyOyBkdXJhdGlvbiA9IFNvbWUgdGltZSB9IGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLm9wZW5fcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIChpZiBpbnRlcnJ1cHRlZCB0aGVuXG4gICAgICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBcIkVuZFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfSApXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlcm1pbmF0ZWRfdGFzayA9XG4gICAgICAgICAgICBjdXJyZW50X3Rhc2ssIExpc3QucmV2X21hcCAoZnVuIHggLT4geC50YWcpIChMaXN0LnJldiB0YWlsKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJJbnRlcnJ1cHRlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF90YXNrIHBhcmFtZXRlciB0ZXJtaW5hdGVkX3Rhc2sgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5jbG9zZV9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgICAgICBhdXhcbiAgICAgICAgICAgIHsgbG9nX2luZm8gd2l0aCBuZXh0X2RlcHRoID0gbmV4dF9kZXB0aCAtIDE7IGN1cnJlbnRfdGFzayA9IHRhaWwgfVxuICAgICAgICAgICAgZXJyb3IgdHJ1ZVxuICAgICAgaW5cbiAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBmYWxzZVxuICAgIClcblxuICBsZXQgZ2VuX29wdCBnZW4gcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBtYXRjaCBzdGVwX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICB8IFNvbWUgZSAtPiBnZW4gcGFyYW1ldGVyIGVycm9yIGUgZiBsb2dfaW5mb1xuXG4gIGxldCBhZGRfZXZlbnRfb3B0ID0gZ2VuX29wdCBhZGRfZXZlbnRcbiAgbGV0IGNsb3NlX2V2ZW50X29wdCA9IGdlbl9vcHQgY2xvc2VfZXZlbnRcblxuICBsZXQgcHJvcGFnYXRpb25fbGFiZWxzID1cbiAgICBbfFxuICAgICAgXCJOb25lXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMiBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDMgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA0IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDYgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA3IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgOCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDkgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTFcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDEyXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxM1wiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTRcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE1XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNlwiO1xuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMSBcIjtcbiAgICAgICgqMTcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMiBcIjtcbiAgICAgICgqMTgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMyBcIjtcbiAgICAgICgqMTkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNCBcIjtcbiAgICAgICgqMjAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNSBcIjtcbiAgICAgICgqMjEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNiBcIjtcbiAgICAgICgqMjIqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgNyBcIjtcbiAgICAgICgqMjMqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOCBcIjtcbiAgICAgICgqMjQqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgOSBcIjtcbiAgICAgICgqMjUqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTBcIjtcbiAgICAgICgqMjYqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTFcIjtcbiAgICAgICgqMjcqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTJcIjtcbiAgICAgICgqMjgqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTNcIjtcbiAgICAgICgqMjkqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTRcIjtcbiAgICAgICgqMzAqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTVcIjtcbiAgICAgICgqMzEqKVxuICAgICAgXCJEb3duOiAgICAgIGNhc2UgMTZcIjtcbiAgICAgICgqMzIqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDFcIjtcbiAgICAgICgqMzMqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDJcIjtcbiAgICAgICgqMzQqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDNcIjtcbiAgICAgICgqMzUqKVxuICAgICAgXCJMb29rX3VwOiAgIGNhc2UgIDRcIjtcbiAgICAgICgqMzYqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDFcIjtcbiAgICAgICgqMzcqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDJcIjtcbiAgICAgICgqMzgqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDNcIjtcbiAgICAgICgqMzkqKVxuICAgICAgXCJMb29rX2Rvd246IGNhc2UgIDRcIjtcbiAgICAgICgqNDAqKVxuICAgIHxdXG5cbiAgbGV0IHByb3BhZ2F0aW9uX2Nhc2VzID0gQXJyYXkubGVuZ3RoIHByb3BhZ2F0aW9uX2xhYmVsc1xuXG4gIGxldCBjb3B5IGxvZ19pbmZvID1cbiAgICB7IGxvZ19pbmZvIHdpdGggcHJvcGFnYXRpb24gPSBBcnJheS5jb3B5IGxvZ19pbmZvLnByb3BhZ2F0aW9uIH1cblxuICBsZXQgaW5pdF9sb2dfaW5mbyAoKSA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHtcbiAgICAgIG5leHRfZGVwdGggPSAxO1xuICAgICAgZ2xvYmFsX3RpbWUgPSB0aW1lO1xuICAgICAgc3RvcnlfdGltZSA9IHRpbWU7XG4gICAgICBzdGVwX3RpbWUgPSB0aW1lO1xuICAgICAgY3VycmVudF90YXNrID0gW107XG4gICAgICBwcm9wYWdhdGlvbiA9IEFycmF5Lm1ha2UgcHJvcGFnYXRpb25fY2FzZXMgMDtcbiAgICAgIGJyYW5jaCA9IDA7XG4gICAgICBjdXQgPSAwO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBjdXJyZW50X2JyYW5jaCA9IDA7XG4gICAgICAgICAgc2VsZWN0ZWRfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1haW5pbmdfZXZlbnRzID0gMDtcbiAgICAgICAgICByZW1vdmVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgc3RhY2tfc2l6ZSA9IDA7XG4gICAgICAgIH07XG4gICAgICBzdGFjayA9IFtdO1xuICAgICAgbGFzdF90aWNrID0gMC47XG4gICAgfVxuXG4gIGxldCBsb2dfaW5mb190b19qc29uIGxvZ19pbmZvID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJnbG9iYWxfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uZ2xvYmFsX3RpbWU7XG4gICAgICAgIFwic3RvcnlfdGltZVwiLCBgRmxvYXQgbG9nX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgXCJzdGVwX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0ZXBfdGltZTtcbiAgICAgICAgXCJuZXh0X2RlcHRoXCIsIGBJbnQgbG9nX2luZm8ubmV4dF9kZXB0aDtcbiAgICAgICAgXCJicmFuY2hcIiwgYEludCBsb2dfaW5mby5icmFuY2g7XG4gICAgICAgIFwiY3V0XCIsIGBJbnQgbG9nX2luZm8uY3V0O1xuICAgICAgXVxuXG4gIGxldCBmbG9hdF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBGbG9hdCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgaW50X29mX2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEludCBmIC0+IGZcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBmbG9hdFwiLCB4KSlcblxuICBsZXQgbG9nX2luZm9fb2ZfanNvbiB4ID1cbiAgICBsZXQgaW5pdCA9IGluaXRfbG9nX2luZm8gKCkgaW5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IGBBc3NvYyBsIHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIHtcbiAgICAgICAgICAgaW5pdCB3aXRoXG4gICAgICAgICAgIGdsb2JhbF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImdsb2JhbF90aW1lXCIgbCk7XG4gICAgICAgICAgIHN0b3J5X3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfdGltZVwiIGwpO1xuICAgICAgICAgICBzdGVwX3RpbWUgPSBmbG9hdF9vZl9qc29uIChMaXN0LmFzc29jIFwic3RlcF90aW1lXCIgbCk7XG4gICAgICAgICAgIG5leHRfZGVwdGggPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcIm5leHRfZGVwdGhcIiBsKTtcbiAgICAgICAgICAgYnJhbmNoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJicmFuY2hcIiBsKTtcbiAgICAgICAgICAgY3V0ID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJjdXRcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBsb2dfaW5mb1wiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpXG5cbiAgbGV0IGR1bXBfc2hvcnRfbG9nIHBhcmFtZXRlciBsb2dfaW5mbyA9XG4gICAgbGV0IF8gPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJSZW1haW5pbmcgZXZlbnRzOiAlaSA7IFN0YWNrIHNpemU6ICVpIDsgXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5yZW1haW5pbmdfZXZlbnRzXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suc3RhY2tfc2l6ZVxuICAgIGluXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBcIlRvdGFsIGJyYW5jaDogJWkgOyBUb3RhbCBjdXQ6ICVpIDsgQ3VycmVudCBkZXB0aDogJWkgQC5cIiBsb2dfaW5mby5icmFuY2hcbiAgICAgIGxvZ19pbmZvLmN1dCBsb2dfaW5mby5jdXJyZW50X3N0YWNrLmN1cnJlbnRfYnJhbmNoXG5cbiAgbGV0IHJlc2V0X2xvZyBsb2cgPVxuICAgIGxldCB0ID0gbG9nLnByb3BhZ2F0aW9uIGluXG4gICAgbGV0IF8gPSBBcnJheS5maWxsIHQgMCAoQXJyYXkubGVuZ3RoIHQpIDAgaW5cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgeyBsb2cgd2l0aCBzdGVwX3RpbWUgPSB0aW1lOyBzdG9yeV90aW1lID0gdGltZSB9XG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBpID0gaVxuICBsZXQgcHJvcGFnYXRlX2Rvd24gaSA9IGkgKyAxNlxuICBsZXQgbG9va191cCBpID0gaSArIDMyXG4gIGxldCBsb29rX2Rvd24gaSA9IGkgKyAzNlxuXG4gIGxldCBlbGxhcHNlZF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLnN0b3J5X3RpbWVcblxuICBsZXQgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgbG9nID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgdGltZSAtLiBsb2cuZ2xvYmFsX3RpbWVcblxuICBsZXQgc2V0X3RpbWUgbG9nID1cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSBTeXMudGltZSAoKTsgc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuXG4gIGxldCBzZXRfc3RlcF90aW1lIGxvZyA9IHsgbG9nIHdpdGggc3RlcF90aW1lID0gU3lzLnRpbWUgKCkgfVxuICBsZXQgc2V0X3N0YXJ0X2NvbXByZXNzaW9uID0gc2V0X3RpbWVcblxuICBsZXQgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nID1cbiAgICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IHN0ID0gbG9nLnN0ZXBfdGltZSBpblxuICAgIHsgbG9nIHdpdGggc3RvcnlfdGltZSA9IHQgLS4gc3Q7IHN0ZXBfdGltZSA9IHQgfVxuXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2cgPSBsb2dcbiAgbGV0IHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfZ3JpZF9nZW5lcmF0aW9uIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2Nhbm9uaWNhbGlzYXRpb24gbG9nID0gbG9nXG5cbiAgbGV0IGFkZF9jYXNlIGkgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gdC4oaSkgPC0gdC4oaSkgKyAxIGluXG4gICAgbG9nXG5cbiAgbGV0IGFkZF9sb29rX2Rvd25fY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfZG93biBpKVxuICBsZXQgYWRkX2xvb2tfdXBfY2FzZSBpID0gYWRkX2Nhc2UgKGxvb2tfdXAgaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfZG93biBpKVxuICBsZXQgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgaSA9IGFkZF9jYXNlIChwcm9wYWdhdGVfdXAgaSlcblxuICBsZXQgaW5jX2N1dCBsb2cgPVxuICAgIG1hdGNoIGxvZy5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBsb2dcbiAgICB8IHQgOjogcSAtPiB7IGxvZyB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHE7IGN1dCA9IGxvZy5jdXQgKyAxIH1cblxuICBsZXQgaW5jX2JyYW5jaCBsb2cgPVxuICAgIHtcbiAgICAgIGxvZyB3aXRoXG4gICAgICBzdGFjayA9IGxvZy5jdXJyZW50X3N0YWNrIDo6IGxvZy5zdGFjaztcbiAgICAgIGJyYW5jaCA9IGxvZy5icmFuY2ggKyAxO1xuICAgICAgY3VycmVudF9zdGFjayA9XG4gICAgICAgIHtcbiAgICAgICAgICBsb2cuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSBsb2cuY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaCArIDE7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBpbmNfbl9rYXNpbV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9vYnNfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fc2lkZV9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfbl9pbml0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX2tfY3V0X2V2ZW50cyBfayBsb2cgPSBsb2dcbiAgbGV0IHJlc2V0X2N1dF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfc2VsZWN0ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3JlbW92ZWRfZXZlbnRzIGxvZyA9IGxvZ1xuXG4gIGxldCBkdW1wX2NvbXBsZXRlX2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBsb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIvKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSBwcm9maWxpbmdcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkVsbGFwc2VkX3RpbWU6ICAgICAgICAgICAgICAgICAgJWZcIlxuICAgICAgICAoZWxsYXBzZWRfdGltZSBsb2dfaW5mbylcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlN0b3J5IHJlc2VhcmNoIHRpbWU6ICAgICAgICAgICAgJWZcIlxuICAgICAgICBsb2dfaW5mby5zdG9yeV90aW1lXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFeHBsb3JhdGlvbiBkZXB0aDogICAgICAgICAgICAgICVpXCJcbiAgICAgICAgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gY3V0czogICAgICAgICAgICAgICAlaVwiIGxvZ19pbmZvLmN1dFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiUHJvcGFnYXRpb24gSGl0czpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPj0gcHJvcGFnYXRpb25fY2FzZXMgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIgICAgICAgICVzICVpXCIgcHJvcGFnYXRpb25fbGFiZWxzLihrKVxuICAgICAgICAgICAgICBsb2dfaW5mby5wcm9wYWdhdGlvbi4oaylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IF8gPSBhdXggMSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIqL1wiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgICgpXG5cbiAgbGV0IHRpY2sgbG9nX2luZm8gPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICBpZiB0aW1lIC0uIGxvZ19pbmZvLmxhc3RfdGljayA+IDYwMC4gdGhlblxuICAgICAgdHJ1ZSwgeyBsb2dfaW5mbyB3aXRoIGxhc3RfdGljayA9IHRpbWUgfVxuICAgIGVsc2VcbiAgICAgIGZhbHNlLCBsb2dfaW5mb1xuXG4gIGxldCBzZXRfZ2xvYmFsX2N1dCBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG4gIGxldCBzZXRfcHNldWRvX2ludiBfbiBsb2dfaW5mbyA9IGxvZ19pbmZvXG5lbmRcbiIsIigqKlxuICAgVGltZS1zdGFtcDogPEZlYiAyMiAyMDE4PlxuKilcblxubW9kdWxlIHR5cGUgU2V0X3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICB2YWwgc2luZ2xldG9uIDogZWx0IC0+IHRcbiAgdmFsIGlzX3NpbmdsZXRvbiA6IHQgLT4gYm9vbFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBhZGRfd2hlbl9ub3RfaW4gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBtaW51cyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpbnRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGNhcmRpbmFsIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdWJzZXQgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZm9sZF9pbnYgOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBlbGVtZW50cyA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIGNob29zZSA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSBzZXRcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiAoZWx0ICogJ2EpIG9wdGlvblxuICB2YWwgbWVtIDogZWx0IC0+ICdhIHQgLT4gYm9vbFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgZmluZF9kZWZhdWx0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2FcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBvcHRpb25cblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBvdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGFkZF9vcl9vdmVyd3JpdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHJlbW92ZV9vcl9ub3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCB1cGRhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgbWFwMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYyB0XG5cbiAgdmFsIG1hcDJ6IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGQyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgZm9sZDJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYykgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxuICB2YWwgaXRlcjJfc3BhcnNlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGRpZmYgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIGRpZmZfcHJlZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBib29sKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdCAqICdhIHRcblxuICB2YWwgbWVyZ2UgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgc2V0IC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxuICB2YWwgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAoZWx0IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gIHZhbCBpdGVyMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGZpbHRlcl9vbmUgOiAoZWx0IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgYmluZGluZ3MgOiAnYSB0IC0+IChlbHQgKiAnYSkgbGlzdFxuXG4gIHZhbCBvZl9qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgID9lcnJvcl9tc2c6c3RyaW5nIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+IGVsdCkgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gJ3ZhbHVlKSAtPlxuICAgIFlvanNvbi5CYXNpYy50IC0+XG4gICAgJ3ZhbHVlIHRcblxuICB2YWwgdG9fanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICAoZWx0IC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICgndmFsdWUgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgJ3ZhbHVlIHQgLT5cbiAgICBZb2pzb24uQmFzaWMudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG5cbiAgbW9kdWxlIFNldCA6IFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwX3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gZWx0IGFuZCB0eXBlIHNldCA9IFNldC50XG5lbmRcblxubGV0IGxpZnQgZiA9IGYgRXhjZXB0aW9uLndyYXBcblxubW9kdWxlIE1ha2UgKFNfYm90aCA6IFNldE1hcC5TKSA6XG4gIFNfd2l0aF9sb2dzXG4gICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgTWFwLnQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgYW5kIHR5cGUgU2V0LnQgPSBTX2JvdGguU2V0LnQgPSBzdHJ1Y3RcbiAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG5cbiAgbW9kdWxlIFNldCA6XG4gICAgU2V0X3dpdGhfbG9ncyB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdCBhbmQgdHlwZSB0ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gICAgdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgdHlwZSB0ID0gU19ib3RoLlNldC50XG5cbiAgICBsZXQgZW1wdHkgPSBTX2JvdGguU2V0LmVtcHR5XG4gICAgbGV0IGlzX2VtcHR5ID0gU19ib3RoLlNldC5pc19lbXB0eVxuICAgIGxldCBzaW5nbGV0b24gPSBTX2JvdGguU2V0LnNpbmdsZXRvblxuICAgIGxldCBpc19zaW5nbGV0b24gPSBTX2JvdGguU2V0LmlzX3NpbmdsZXRvblxuICAgIGxldCBhZGQgPSBsaWZ0IFNfYm90aC5TZXQuYWRkX3dpdGhfbG9nc1xuXG4gICAgbGV0IGFkZF93aGVuX25vdF9pbiBwIGUgeCBzID1cbiAgICAgIGxldCBlLCBfLCBzID0gKGxpZnQgU19ib3RoLlNldC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MpIHAgZSB4IHMgaW5cbiAgICAgIGUsIHNcblxuICAgIGxldCByZW1vdmUgPSBsaWZ0IFNfYm90aC5TZXQucmVtb3ZlX3dpdGhfbG9nc1xuICAgIGxldCB1bmlvbiA9IGxpZnQgU19ib3RoLlNldC51bmlvbl93aXRoX2xvZ3NcbiAgICBsZXQgZGlzam9pbnRfdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQuZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGludGVyID0gbGlmdCBTX2JvdGguU2V0LmludGVyX3dpdGhfbG9nc1xuICAgIGxldCBkaWZmID0gbGlmdCBTX2JvdGguU2V0LmRpZmZfd2l0aF9sb2dzXG4gICAgbGV0IG1pbnVzID0gbGlmdCBTX2JvdGguU2V0Lm1pbnVzX3dpdGhfbG9nc1xuICAgIGxldCBjYXJkaW5hbCA9IFNfYm90aC5TZXQuc2l6ZVxuICAgIGxldCBtZW0gPSBTX2JvdGguU2V0Lm1lbVxuICAgIGxldCBleGlzdHMgPSBTX2JvdGguU2V0LmV4aXN0c1xuICAgIGxldCBmaWx0ZXIgPSBTX2JvdGguU2V0LmZpbHRlclxuICAgIGxldCBmb3JfYWxsID0gU19ib3RoLlNldC5mb3JfYWxsXG4gICAgbGV0IHBhcnRpdGlvbiA9IFNfYm90aC5TZXQucGFydGl0aW9uXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguU2V0LmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguU2V0LmVxdWFsXG4gICAgbGV0IHN1YnNldCA9IFNfYm90aC5TZXQuc3Vic2V0XG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguU2V0Lml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5TZXQuZm9sZFxuICAgIGxldCBmb2xkX2ludiA9IFNfYm90aC5TZXQuZm9sZF9pbnZcbiAgICBsZXQgZWxlbWVudHMgPSBTX2JvdGguU2V0LmVsZW1lbnRzXG4gICAgbGV0IGNob29zZSA9IFNfYm90aC5TZXQuY2hvb3NlXG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguU2V0Lm1pbl9lbHRcbiAgICBsZXQgbWF4X2VsdCA9IFNfYm90aC5TZXQubWF4X2VsdFxuICBlbmRcblxuICBtb2R1bGUgTWFwIDpcbiAgICBNYXBfd2l0aF9sb2dzXG4gICAgICB3aXRoIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgICAgIGFuZCB0eXBlICdhIHQgPSAnYSBTX2JvdGguTWFwLnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTX2JvdGguU2V0LnRcbiAgICAgICBhbmQgdHlwZSBzZXQgPSBTZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgdHlwZSArJ2RhdGEgdCA9ICdkYXRhIFNfYm90aC5NYXAudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLk1hcC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5NYXAuaXNfZW1wdHlcbiAgICBsZXQgbWluX2VsdCA9IFNfYm90aC5NYXAubWluX2VsdFxuICAgIGxldCBtZW0gPSBTX2JvdGguTWFwLm1lbVxuICAgIGxldCBmaW5kX29wdGlvbiBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uX3dpdGhfbG9ncyBhIGIgYyBkXG4gICAgbGV0IGZpbmRfZGVmYXVsdCBhIGIgYyBkID0gbGlmdCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdF93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgX2EgYiBjIGQgPSBiLCBTX2JvdGguTWFwLmZpbmRfb3B0aW9uIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIF9hIGIgYyBkIGUgPSBiLCBTX2JvdGguTWFwLmZpbmRfZGVmYXVsdCBjIGQgZVxuICAgIGxldCBhZGQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5hZGRfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBwYXJhbWV0ZXIgZXJyb3IgYyBkIGVcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQXR0ZW1wdCB0byBvdmVyd3JpdGUgYW4gYXNzb2NpYXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdFwiKVxuICAgICAgICAgIG1hcFxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgYWRkX29yX292ZXJ3cml0ZSBhIGIgYyBkIGUgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIGEgYiBjIGQgZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBtYXBcblxuICAgIGxldCByZW1vdmUgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5yZW1vdmVfd2l0aF9sb2dzIGEgYiBjIGRcblxuICAgIGxldCByZW1vdmVfb3Jfbm90IGEgYiBjIGQgPVxuICAgICAgbGV0IGVycm9yLCBfLCBtYXAgPVxuICAgICAgICBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIGEgYiBjIGRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgdXBkYXRlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVwZGF0ZV93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBtYXAyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5tYXAyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDJ6IGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyel93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZm9sZDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlcjIgcGFyYW1ldGVyIGVycm9yIGYgZyBoIG1hcGYgbWFwZyA9XG4gICAgICBmc3RcbiAgICAgICAgKFNfYm90aC5NYXAuZm9sZDJfd2l0aF9sb2dzIEV4Y2VwdGlvbi53cmFwIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgKCkgLT4gZiBhIGIgYyBkLCAoKSlcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGcgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCBlICgpIC0+IGggYSBiIGMgZCBlLCAoKSlcbiAgICAgICAgICAgbWFwZiBtYXBnICgpKVxuXG4gICAgbGV0IGZvbGQyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGl0ZXIyX3NwYXJzZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5pdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmYgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZGlmZl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgZGlmZl9wcmVkIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfcHJlZF93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWVyZ2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWVyZ2Vfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IHVuaW9uIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLnVuaW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb24gYSBiIGMgPVxuICAgICAgbGlmdCBTX2JvdGguTWFwLmZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIGEgYiBjXG5cbiAgICBsZXQgaXRlciA9IFNfYm90aC5NYXAuaXRlclxuICAgIGxldCBmb2xkID0gU19ib3RoLk1hcC5mb2xkXG4gICAgbGV0IG1hcGkgPSBTX2JvdGguTWFwLm1hcGlcbiAgICBsZXQgbWFwID0gU19ib3RoLk1hcC5tYXBcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5NYXAuZm9yX2FsbFxuICAgIGxldCBmaWx0ZXJfb25lID0gU19ib3RoLk1hcC5maWx0ZXJfb25lXG4gICAgbGV0IGNvbXBhcmUgPSBTX2JvdGguTWFwLmNvbXBhcmVcbiAgICBsZXQgZXF1YWwgPSBTX2JvdGguTWFwLmVxdWFsXG4gICAgbGV0IGJpbmRpbmdzID0gU19ib3RoLk1hcC5iaW5kaW5nc1xuICAgIGxldCB0b19qc29uID0gU19ib3RoLk1hcC50b19qc29uXG4gICAgbGV0IG9mX2pzb24gPSBTX2JvdGguTWFwLm9mX2pzb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgc2V0X2FcbiAgdHlwZSBzZXRfYlxuXG4gIHZhbCBwcm9qX21hcCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICgnYiAtPiAnYSAtPiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXAgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9tYXBfaSA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICBlbHRfYSAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBwcm9qX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIG1vbmFkaWNfcHJval9zZXQgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBwYXJ0aXRpb25fc2V0IDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcblxuICB2YWwgbW9uYWRpY19wYXJ0aXRpb25fc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFNfd2l0aF9sb2dzKSAoQiA6IFNfd2l0aF9sb2dzKSA6XG4gIFByb2plY3Rpb25cbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlICdhIG1hcF9hID0gJ2EgQS5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYiA9ICdhIEIuTWFwLnRcbiAgICAgYW5kIHR5cGUgc2V0X2EgPSBBLlNldC50XG4gICAgIGFuZCB0eXBlIHNldF9iID0gQi5TZXQudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgU0EgPSBBLlNldFxuICBtb2R1bGUgU0IgPSBCLlNldFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIHNldF9hID0gU0EudFxuICB0eXBlIHNldF9iID0gU0IudFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuXG4gIGxldCBwcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIG1hdGNoIE1CLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgbWFwX2Igd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2JcbiAgICAgICAgICAgIChtZXJnZSBpZGVudGl0eV9lbHQgZGF0YV9hKVxuICAgICAgICAgICAgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAobWVyZ2Ugb2xkIGRhdGFfYSkgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQga2V5X2EgZGF0YV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wcm9qX21hcCBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBtb25hZGljX3Byb2pfbWFwX2kgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0XG4gICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBvbGQgXyBkYXRhX2EgLT4gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIG9sZCBkYXRhX2EpXG4gICAgICBtYXBcblxuICBsZXQgcGFydGl0aW9uX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXQgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIChTQS5zaW5nbGV0b24ga2V5X2EpIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdzZXQgPSBTQS5hZGQgcGFyYW1ldGVyIGVycm9yIGtleV9hIG9sZCBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIG5ld3NldCBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3BhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBlcnJvciwgU0Euc2luZ2xldG9uIGtleV9hIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2JcbiAgICAgICAgfCBlcnJvciwgU29tZSBvbGQgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gU0EuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIHNldCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qX3NldCBmIHBhcmFtZXRlciBlcnJvciBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIHNldF9iKSAtPlxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIChmIGtleV9hKSBzZXRfYilcbiAgICAgIHNldF9hIChlcnJvciwgU0IuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlfYiA9IGYgcGFyYW1ldGVyIGVycm9yIGtleV9hIGluXG4gICAgICAgIFNCLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24yID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlIGVsdF9jXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlICdhIG1hcF9jXG5cbiAgdmFsIHByb2oyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcblxuICB2YWwgcHJvajJfbW9uYWRpYyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIChlbHRfYSAtPiBlbHRfYykgLT5cbiAgICAnYiAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ212YmR1X2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ212YmR1X2hhbmRsZXIgKiAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgKEMgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uMlxuICAgIHdpdGggdHlwZSBlbHRfYSA9IEEuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9iID0gQi5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2MgPSBDLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9jID0gJ2EgQy5NYXAudCA9IHN0cnVjdFxuICBtb2R1bGUgTUEgPSBBLk1hcFxuICBtb2R1bGUgTUIgPSBCLk1hcFxuICBtb2R1bGUgTUMgPSBDLk1hcFxuXG4gIHR5cGUgZWx0X2EgPSBNQS5lbHRcbiAgdHlwZSBlbHRfYiA9IE1CLmVsdFxuICB0eXBlIGVsdF9jID0gTUMuZWx0XG4gIHR5cGUgJ2EgbWFwX2EgPSAnYSBNQS50XG4gIHR5cGUgJ2EgbWFwX2IgPSAnYSBNQi50XG4gIHR5cGUgJ2EgbWFwX2MgPSAnYSBNQy50XG5cbiAgbGV0IHByb2oyIHBhcmFtZXRlciBlcnJvciBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBlcnJvciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBNQy5lbXB0eSBrZXlfYiBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfY1xuICAgICAgICAgICAgKG1lcmdlIHBhcmFtZXRlciBlcnJvciBmaW5kX2RlZmF1bHQgZGF0YV9hKVxuICAgICAgICAgICAgc3VibWFwXG4gICAgICAgIGluXG4gICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCAoZXJyb3IsIE1CLmVtcHR5KVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBzdWJtYXAgPVxuICAgICAgICAgIE1CLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGZpbmRfZGVmYXVsdCA9XG4gICAgICAgICAgTUMuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgaGFuZGxlciBpZGVudGl0eV9lbHQga2V5X2NcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1lcmdlIHBhcmFtZXRlciBoYW5kbGVyIG12YmR1X2hhbmRsZXIgZmluZF9kZWZhdWx0IGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID0gTUMuYWRkIHBhcmFtZXRlciBoYW5kbGVyIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBsZXQgaGFuZGxlciwgYWRkID1cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGtleV9iIHN1Ym1hcCBtYXBfYlxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBhZGQpXG4gICAgICBtYXBcbiAgICAgIChoYW5kbGVyLCBtdmJkdV9oYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqXG4gICogZmlmby5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDIwMTUsIHRoZSAyN3RoIG9mIEp1bHlcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEF1ZyAwNiAyMDE2PlxuICAqXG4gICogV29yayBsaXN0IC0gRklGT1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm9wZW4gU2V0TWFwXG5cbmxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFdvcmtfbGlzdCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gIHZhbCBwdXNoIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcG9wIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChlbHQgb3B0aW9uICogdClcblxuICB2YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGVsdCAtPiAnYSkgLT4gJ2EgLT4gdCAtPiAnYVxuICB2YWwgcHJpbnRfd2wgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBXbE1ha2UgKE9yZCA6IE9yZGVyZWRUeXBlIHdpdGggdHlwZSB0ID0gaW50KSA9IHN0cnVjdFxuICBtb2R1bGUgV1NldE1hcCA9IE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPcmQpKVxuICBtb2R1bGUgV1NldCA9IFdTZXRNYXAuU2V0XG5cbiAgdHlwZSBlbHQgPSBPcmQudFxuICB0eXBlIHQgPSBlbHQgbGlzdCAqIGVsdCBsaXN0ICogV1NldC50XG5cbiAgbGV0IGVtcHR5ID0gW10sIFtdLCBXU2V0LmVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5IHggPVxuICAgIGxldCBfLCBfLCBwb29sID0geCBpblxuICAgIFdTZXQuaXNfZW1wdHkgcG9vbFxuXG4gIGxldCBwdXNoIHBhcmFtZXRlciBlcnJvciBlIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgcG9vbCA9IHggaW5cbiAgICBpZiBXU2V0Lm1lbSBlIHBvb2wgdGhlblxuICAgICAgZXJyb3IsIHhcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvcicsIGFkZF9lbHQgPSBXU2V0LmFkZCBwYXJhbWV0ZXIgZXJyb3IgZSBwb29sIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBFeGNlcHRpb24uY2hlY2tfcG9pbnQgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyBfX1BPU19fIEV4aXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgKGUgOjogaW5fbGlzdCwgb3V0X2xpc3QsIGFkZF9lbHQpXG4gICAgKVxuXG4gIGxldCBmb2xkX2xlZnQgZiBhY2MgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBfID0geCBpblxuICAgIExpc3QuZm9sZF9sZWZ0IGYgKExpc3QuZm9sZF9sZWZ0IGYgYWNjIG91dF9saXN0KSAoTGlzdC5yZXYgaW5fbGlzdClcblxuICBsZXQgcHJpbnRfd2wgcGFyYW1ldGVycyB3bCA9XG4gICAgKCpsZXQgXyA9IGZvbGRfbGVmdFxuICAgICAgKGZ1biAgKCkgYSAtPiBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcnMpIFwiJWkgXCIgYSlcbiAgICAgICgpIHdsXG4gICAgICBpblxuICAgICAgKCpwcmludF9uZXdsaW5lKCkqKVxuICAgICAgbGV0IF8gPSBwcmludF9uZXdsaW5lICgpIGluKilcbiAgICBsZXQgXywgXywgc2V0ID0gd2wgaW5cbiAgICBXU2V0Lml0ZXJcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIiVpIFwiIGkpXG4gICAgICBzZXQ7XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuXG4gIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgaXNfZW1wdHkgeCB0aGVuXG4gICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBvdXRfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCBMaXN0LnJldiBpbl9saXN0LCBwb29sKVxuICAgICAgfCBoIDo6IHRsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgICAgZXJyb3IsIChTb21lIGgsIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgKVxuXG4gICgqZm9yIGRlYnVnKilcbiAgKCogbGV0IHJlYyBwb3AgcGFyYW1ldGVyIGVycm9yIHggPVxuICAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgIGlmIGlzX2VtcHR5IHhcbiAgICAgdGhlblxuICAgICBlcnJvciwgKE5vbmUsIHgpXG4gICAgIGVsc2VcbiAgICAgYmVnaW5cbiAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICB8IFtdIC0+IHBvcCBwYXJhbWV0ZXIgZXJyb3IgKFtdLCAoTGlzdC5yZXYgaW5fbGlzdCksIHBvb2wpXG4gICAgIHwgaCA6OiB0bCAtPlxuICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcilcbiAgICAgXCJCRUZPUkUgUkVNT1ZFICVpIFwiIGggaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSBwb29sIGluXG4gICAgIGxldCBlcnJvcixyZW1vdmVfZWx0ID0gV1NldC5yZW1vdmUgcGFyYW1ldGVyIGVycm9yIGggcG9vbCBpblxuICAgICBsZXQgXyA9ICBXU2V0Lml0ZXIgKGZ1biBpIC0+XG4gICAgIFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcGFyYW1ldGVyKSBcIiVpIFwiIGkpIHJlbW92ZV9lbHRcbiAgICAgaW5cbiAgICAgZXJyb3IsICgoU29tZSBoKSwgKGluX2xpc3QsIHRsLCByZW1vdmVfZWx0KSlcbiAgICAgZW5kKilcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqbGV0IHB1c2ggcCBlIGYgeCA9XG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIkJFRk9SRSBQVVVTSCAlaVxcbiBcIiBmIGluXG4gICAgbGV0IF8gPSBwcmludF93bCBwIHggaW5cbiAgICBsZXQgZXJyb3Isd2wgPSBwdXNoIHAgZSBmIHggaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJPVVRQVVRcXG5cIiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB3bCBpblxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwKSBcIlxcblwiIGluXG4gICAgZXJyb3Isd2wgKilcbmVuZFxuXG5tb2R1bGUgSW50V0wgPSBNb2RzLkludE1hcFxuIiwiKCoqXG4gICAqIGludF9zdG9yYWdlLm1sXG4gICAqXG4gICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMC0wNy0yNyBmZXJldD5cbiAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTMgMjAxOD5cbiAgICpcbiAgICogb3BlbmthcHBhXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKlxuICAgKlxuICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggc3RvcmFnZSBmdW5jdGlvbnNcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1IEluc3RpdHV0IE5hdGlvbmFsXG4gICAqIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdkXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdlXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsICdnKSBzZXh0ZXJuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgJ2MgLT5cbiAgJ2QgLT5cbiAgJ2UgLT5cbiAgJ2YgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2dcblxudHlwZSAnYSB1bmFyeV9ub19vdXRwdXQgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxudHlwZSAoJ2EsICdiKSBiaW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbm1vZHVsZSB0eXBlIFN0b3JhZ2UgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG5cbiAgdmFsIGNyZWF0ZSA6IChkaW1lbnNpb24sICdhIHQpIHVuYXJ5XG4gIHZhbCBjcmVhdGVfYmlnZ2VzdF9rZXkgOiAoa2V5LCAnYSB0KSB1bmFyeVxuICB2YWwgZXhwYW5kX2FuZF9jb3B5IDogKCdhIHQsIGRpbWVuc2lvbiwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBpbml0IDogKGRpbWVuc2lvbiwgKGtleSwgJ2EpIHVuYXJ5LCAnYSB0KSBiaW5hcnlcbiAgdmFsIHNldCA6IChrZXksICdhLCAnYSB0LCAnYSB0KSB0ZXJuYXJ5XG4gIHZhbCBmcmVlIDogKGtleSwgJ2EgdCwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBnZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgdW5zYWZlX2dldCA6IChrZXksICdhIHQsICdhIG9wdGlvbikgYmluYXJ5XG4gIHZhbCBkaW1lbnNpb24gOiAoJ2EgdCwgZGltZW5zaW9uKSB1bmFyeVxuICB2YWwgcHJpbnQgOiAoJ2EgdW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBrZXlfbGlzdCA6ICgnYSB0LCBrZXkgbGlzdCkgdW5hcnlcbiAgdmFsIGl0ZXIgOiAoKGtleSwgJ2EpIGJpbmFyeV9ub19vdXRwdXQsICdhIHQpIGJpbmFyeV9ub19vdXRwdXRcbiAgdmFsIGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gOiAoKGtleSwgJ2EsICdiLCAnYikgdGVybmFyeSwgJ2EgdCwgJ2IsICdiKSB0ZXJuYXJ5XG4gIHZhbCBmb2xkIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuXG4gIHZhbCBmb2xkMiA6XG4gICAgKCAoa2V5LCAnYSwgJ2MsICdjKSB0ZXJuYXJ5LFxuICAgICAgKGtleSwgJ2IsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LFxuICAgICAgJ2EgdCxcbiAgICAgICdiIHQsXG4gICAgICAnYyxcbiAgICAgICdjIClcbiAgICBzZXh0ZXJuYXJ5XG5cbiAgdmFsIGZvbGQyX2NvbW1vbiA6XG4gICAgKChrZXksICdhLCAnYiwgJ2MsICdjKSBxdWF0ZXJuYXJ5LCAnYSB0LCAnYiB0LCAnYywgJ2MpIHF1YXRlcm5hcnlcblxuICB2YWwgZm9yX2FsbCA6ICgoa2V5LCAnYSwgYm9vbCkgYmluYXJ5LCAnYSB0LCBib29sKSBiaW5hcnlcbiAgdmFsIGZyZWVfYWxsIDogKCdhIHQsICdhIHQpIHVuYXJ5XG5lbmRcblxubGV0IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZSA9XG4gIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggcG9zIGV4biB2YWx1ZVxuXG5tb2R1bGUgSW50X3N0b3JhZ2VfaW1wZXJhdGlmIDpcbiAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9IHN0cnVjdFxuICB0eXBlIGtleSA9IGludFxuICB0eXBlIGRpbWVuc2lvbiA9IGludFxuICB0eXBlICdhIHQgPSB7IGFycmF5OiAnYSBvcHRpb24gYXJyYXk7IHNpemU6IGludCB9XG5cbiAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5zaXplXG5cbiAgbGV0IGtleV9saXN0IF9wYXJlbWV0ZXJzIGVycm9yIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgc29sID1cbiAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgZXJyb3IsIHNvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBzb2xcbiAgICAgICAgfCBTb21lIF8gLT4gYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IHNpemUgW11cblxuICBsZXQgcmVjIGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgeyBhcnJheSA9IEFycmF5Lm1ha2UgKHNpemUgKyAxKSBOb25lOyBzaXplIH1cblxuICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgeCA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHhcblxuICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgc2l6ZSA9XG4gICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgIGlmIGRpbWVuc2lvbiA8IHNpemUgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCBfID0gQXJyYXkuYmxpdCBhcnJheS5hcnJheSAwIGFycmF5Jy5hcnJheSAwIGRpbWVuc2lvbiBpblxuICAgICAgZXJyb3IsIGFycmF5J1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5zdWIgYXJyYXkuYXJyYXkgMCBzaXplOyBzaXplIH1cblxuICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBQcmludGYuZnByaW50ZiBzdGRvdXQgXCIlaSAlaVwiIGtleSBhcnJheS5zaXplIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgXyA9IGFycmF5LmFycmF5LihrZXkpIDwtIFNvbWUgdmFsdWUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIHNpemUgZiA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMCBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIHNpemUgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgZXJyb3IgYXJyYXkgPVxuICAgICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgdmFsdWUgPSBmIHBhcmFtZXRlcnMgZXJyb3IgayBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBzZXQgcGFyYW1ldGVycyBlcnJvciBrIHZhbHVlIGFycmF5IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgZXJyb3IgYXJyYXlcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGVycm9yIGFycmF5XG4gICAgKVxuXG4gIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIjEzMDolaVxcblwiIGtleVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjEzMzolaVxcblwiIGtleVxuICAgICAgICBpblxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgICB8IGEgLT4gZXJyb3IsIGFcbiAgICApXG5cbiAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgIGVycm9yLCBhcnJheVxuICAgICkgZWxzZSAoXG4gICAgICBtYXRjaCBhcnJheS5hcnJheS4oa2V5KSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgKCkgPSBhcnJheS5hcnJheS4oa2V5KSA8LSBOb25lIGluXG4gICAgICAgIGVycm9yLCBhcnJheVxuICAgIClcblxuICBsZXQgdW5zYWZlX2dldCBfcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgIGlmIGtleSA+IGFycmF5LnNpemUgfHwga2V5IDwgMCB0aGVuXG4gICAgICBlcnJvciwgTm9uZVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBhcnJheS5hcnJheS4oa2V5KVxuXG4gIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X2VsdCBhcnJheSA9XG4gICAgbGV0IHJlYyBhdXggaSBlcnJvciA9XG4gICAgICBpZiBpID4gYXJyYXkuc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBhcnJheS5hcnJheS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVzJWQ6XCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLnVwZGF0ZV9wcmVmaXggcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkgXiBcIjpcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBwcmludF9lbHQgcGFyYW1ldGVycyBlcnJvciBlbHQgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoaSArIDEpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIHQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgZXJyb3IgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICB8IFNvbWUgeCAtPiBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4KVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3IsIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wgPSBmIHBhcmFtZXRlciBlcnJvciBrIHggaW5cbiAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGZhbHNlXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCBlcnJvclxuXG4gIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIHQgaW5pdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgIHRyeSBTb21lIChmIHBhcmFtZXRlciBlcnJvciBrIHggc29sKSB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJlbWFuZW50XG4gICAgICAgICAgfCBTb21lIGEgLT4gYXV4IChrICsgMSkgYSlcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIChlcnJvciwgaW5pdClcblxuICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIHQxIHQyIGluaXQgPVxuICAgIGxldCBzaXplID0gbWluIHQxLnNpemUgdDIuc2l6ZSBpblxuICAgIGxldCBhcnJheTEgPSB0MS5hcnJheSBpblxuICAgIGxldCBhcnJheTIgPSB0Mi5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGF1eCAoayArIDEpIHJlbWFuZW50XG4gICAgICAgIHwgU29tZSB4MSwgU29tZSB4MiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4MSB4MiBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgIG1hdGNoIGFycmF5MS4oayksIGFycmF5Mi4oaykgd2l0aFxuICAgICAgICB8IFNvbWUgeDEsIE5vbmUgLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgc29sKVxuICAgICAgICB8IE5vbmUsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGcgcGFyYW1ldGVyIGVycm9yIGsgeDIgc29sKVxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT4gYXV4IChrICsgMSkgKGggcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gYXV4IChrICsgMSkgKGVycm9yLCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgdCB0XG5lbmRcblxubW9kdWxlIE5lYXJseV9pbmZpbml0ZV9hcnJheXMgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlIHdpdGggdHlwZSBkaW1lbnNpb24gPSBpbnQgYW5kIHR5cGUga2V5ID0gaW50KVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2ljLnRcblxuICAgICAgbGV0IGNyZWF0ZSA9IEJhc2ljLmNyZWF0ZVxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSA9IEJhc2ljLmNyZWF0ZV9iaWdnZXN0X2tleVxuICAgICAgbGV0IGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgbGV0IGtleV9saXN0ID0gQmFzaWMua2V5X2xpc3RcblxuICAgICAgbGV0IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYgb2xkX2RpbWVuc2lvbiA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQmFzaWMuZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXlcbiAgICAgICAgICAgIChtYXggMSAobWluIFN5cy5tYXhfYXJyYXlfbGVuZ3RoICgyICogb2xkX2RpbWVuc2lvbikpKVxuXG4gICAgICBsZXQgZ2V0ID0gQmFzaWMuZ2V0XG4gICAgICBsZXQgdW5zYWZlX2dldCA9IEJhc2ljLnVuc2FmZV9nZXRcbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgPSBCYXNpYy5leHBhbmRfYW5kX2NvcHlcbiAgICAgIGxldCBpbml0ID0gQmFzaWMuaW5pdFxuICAgICAgbGV0IGZyZWUgPSBCYXNpYy5mcmVlXG5cbiAgICAgIGxldCByZWMgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhcnJheSBpblxuICAgICAgICBpZiBrZXkgPj0gZGltZW5zaW9uIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYXJyYXknID0gZXhwYW5kIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgICBpZiBhcnJheSA9PSBhcnJheScgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXknXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEJhc2ljLnNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheVxuXG4gICAgICBsZXQgcHJpbnQgPSBCYXNpYy5wcmludFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgPSBCYXNpYy5wcmludF92YXJfZlxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiA9IEJhc2ljLnByaW50X3NpdGVfZiopXG4gICAgICBsZXQgaXRlciA9IEJhc2ljLml0ZXJcbiAgICAgIGxldCBmb2xkID0gQmFzaWMuZm9sZFxuICAgICAgbGV0IGZvbGQyID0gQmFzaWMuZm9sZDJcbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uID0gQmFzaWMuZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgbGV0IGZvbGQyX2NvbW1vbiA9IEJhc2ljLmZvbGQyX2NvbW1vblxuICAgICAgbGV0IGZvcl9hbGwgPSBCYXNpYy5mb3JfYWxsXG4gICAgICBsZXQgZnJlZV9hbGwgPSBCYXNpYy5mcmVlX2FsbFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgZGltZW5zaW9uID0gaW50KVxuXG5tb2R1bGUgRXh0ZW5kID1cbmZ1bmN0b3JcbiAgKEV4dGVuc2lvbiA6IFN0b3JhZ2UpXG4gIChVbmRlcmx5aW5nIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uICogVW5kZXJseWluZy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gRXh0ZW5zaW9uLmtleSAqIFVuZGVybHlpbmcua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IG1hdHJpeDogJ2EgVW5kZXJseWluZy50IEV4dGVuc2lvbi50OyBkaW1lbnNpb246IGRpbWVuc2lvbiB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBkaW1lbnNpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG1hdHJpeCA9IEV4dGVuc2lvbi5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbWVuc2lvbikgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4OyBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5ID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoZnN0IGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXgnID1cbiAgICAgICAgICBVbmRlcmx5aW5nLmNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIChzbmQga2V5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXggaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24nID0gVW5kZXJseWluZy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBtYXRyaXgnIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uID0gZGltZW5zaW9uLCBkaW1lbnNpb24nIH1cblxuICAgICAgbGV0IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdCA9XG4gICAgICAgIGxldCBlcnJvciwgZXh0X2xpc3QgPSBFeHRlbnNpb24ua2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciB0Lm1hdHJpeCBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsaXN0KSBrZXkgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgdDIgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHQubWF0cml4IGluXG4gICAgICAgICAgICBtYXRjaCB0MiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgbGlzdFxuICAgICAgICAgICAgfCBTb21lIHQyIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbDIgPSBVbmRlcmx5aW5nLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdDIgaW5cbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGtleTIgLT4gKGtleSwga2V5MikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGxpc3QgKExpc3QucmV2IGwyKSApKVxuICAgICAgICAgIChlcnJvciwgW10pIChMaXN0LnJldiBleHRfbGlzdClcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IF9kaW1lbnNpb24gPVxuICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuXG4gICAgICBsZXQgaW5pdCBwYXJhbWV0ZXJzIGVycm9yIGRpbSBmID1cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgRXh0ZW5zaW9uLmluaXQgcGFyYW1ldGVycyBlcnJvciAoZnN0IGRpbSkgKGZ1biBwIGUgaSAtPlxuICAgICAgICAgICAgICBVbmRlcmx5aW5nLmluaXQgcCBlIChzbmQgZGltKSAoZnVuIHAnIGUnIGogLT4gZiBwJyBlJyAoaSwgaikpKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXggPSBhcnJheTsgZGltZW5zaW9uID0gZGltIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPiBlcnJvciwgb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICB8IE5vbmUgLT4gVW5kZXJseWluZy5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAoc25kIGFycmF5LmRpbWVuc2lvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBuZXdfdW5kZXJseWluZyA9XG4gICAgICAgICAgVW5kZXJseWluZy5zZXQgcGFyYW1ldGVycyBlcnJvciBqIHZhbHVlIG9sZF91bmRlcmx5aW5nXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnNldCBwYXJhbWV0ZXJzIGVycm9yIGkgbmV3X3VuZGVybHlpbmcgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgICgqIGxldCBvcmRlcmVkID0gb3JkZXJlZCAmJiBFeHRlbnNpb24ub3JkZXJlZCBuZXdfbWF0cml4IGluKilcbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIChpLCBqKSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgdW5kZXJseWluZyA9IEV4dGVuc2lvbi5nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeCBpblxuICAgICAgICBtYXRjaCB1bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBTb21lIHVuZGVybHlpbmcgLT4gVW5kZXJseWluZy5nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmVcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPVxuICAgICAgICAgIEV4dGVuc2lvbi51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXhcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGogdW5kZXJseWluZ1xuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmVcblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG5cbiAgICAgICAgbWF0Y2ggb2xkX3VuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICAgIHwgU29tZSBvbGRfdW5kZXJseWluZyAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgICAgVW5kZXJseWluZy5mcmVlIHBhcmFtZXRlcnMgZXJyb3IgaiBvbGRfdW5kZXJseWluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBuZXdfbWF0cml4ID1cbiAgICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBtYXRyaXggPSBuZXdfbWF0cml4IH1cblxuICAgICAgbGV0IGRpbWVuc2lvbiBfIGVycm9yIGEgPSBlcnJvciwgYS5kaW1lbnNpb25cblxuICAgICAgbGV0IHByaW50IHBhcmFtZXRlcnMgZXJyb3IgcHJpbnRfb2YgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5wcmludCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgcCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBwcmludF9vZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgRXh0ZW5zaW9uLnByaW50IGVycm9yXG4gICAgICAgICAgIChmdW4gZXJyb3IgLT4gVW5kZXJseWluZy5wcmludCBlcnJvciBwcmludF9vZilcbiAgICAgICAgICAgcGFyYW1ldGVyc1xuICAgICAgICAgICBhLm1hdHJpeCopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlciBlcnJvciBmIGEgPVxuICAgICAgICBFeHRlbnNpb24uaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgLT5cbiAgICAgICAgICAgIFVuZGVybHlpbmcuaXRlciBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJylcbiAgICAgICAgICAgICAgYSlcbiAgICAgICAgICBhLm1hdHJpeFxuXG4gICAgICBsZXQgZm9yX2FsbCBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLmZvcl9hbGwgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvbGRfZ2VuIGZvbGQxIGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGQxIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBiIC0+XG4gICAgICAgICAgICBmb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgaycgYScgYiAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnIGIpXG4gICAgICAgICAgICAgIGEgYilcbiAgICAgICAgICBhLm1hdHJpeCBiXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkIFVuZGVybHlpbmcuZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGJcblxuICAgICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiID1cbiAgICAgICAgZm9sZF9nZW4gRXh0ZW5zaW9uLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgICBVbmRlcmx5aW5nLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgdCB0XG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2VcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgICAgYW5kIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uKVxuXG5tb2R1bGUgUXVpY2tfa2V5X2xpc3QgPVxuZnVuY3RvclxuICAoQmFzaWMgOiBTdG9yYWdlKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvblxuICAgICAgdHlwZSBrZXkgPSBCYXNpYy5rZXlcbiAgICAgIHR5cGUgJ2EgdCA9IHsgYmFzaWM6ICdhIEJhc2ljLnQ7IGtleXM6IGtleSBsaXN0IH1cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgaSBpblxuICAgICAgICBlcnJvciwgeyBiYXNpYzsga2V5cyA9IFtdIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBfcGFyYW1ldGVycyBlcnJvciB0ID0gZXJyb3IsIHQua2V5c1xuXG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5IHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaiA9XG4gICAgICAgIGxldCBlcnJvciwgYmFzaWMgPVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5LmJhc2ljIGpcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBhcnJheS5rZXlzIH1cblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gZiBpblxuICAgICAgICBsZXQgZXJyb3IsIGtleXMgPVxuICAgICAgICAgIEJhc2ljLmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUgayBfIGxpc3QgLT4gZSwgayA6OiBsaXN0KVxuICAgICAgICAgICAgYmFzaWMgW11cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgfVxuXG4gICAgICBsZXQgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGQgPSBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljIGluXG4gICAgICAgIGxldCBuZXdfYXJyYXkgPVxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gYXJyYXlcbiAgICAgICAgICB8IE5vbmUgLT4geyBhcnJheSB3aXRoIGtleXMgPSBrZXkgOjogYXJyYXkua2V5cyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X2Jhc2ljID1cbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgbmV3X2FycmF5LmJhc2ljXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IG5ld19hcnJheSB3aXRoIGJhc2ljID0gbmV3X2Jhc2ljIH1cblxuICAgICAgbGV0IGZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBlcnJvciwgeyBhcnJheSB3aXRoIGJhc2ljIH1cblxuICAgICAgbGV0IGdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpY1xuXG4gICAgICBsZXQgdW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheSA9XG4gICAgICAgIEJhc2ljLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGEgPVxuICAgICAgICBCYXNpYy5kaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhLmJhc2ljXG5cbiAgICAgIGxldCBwcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYSA9IEJhc2ljLnByaW50IGVycm9yIGYgcGFyYW1ldGVycyBhLmJhc2ljXG5cbiAgICAgICgqIGxldCBwcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF92YXJfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAgICBsZXQgcHJpbnRfc2l0ZV9mIGVycm9yIGYgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEJhc2ljLnByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpYyopXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBlcnJvciBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKCkgaW5cbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSlcbiAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvbGQgcGFyYW1ldGVycyBlcnJvciBmIGEgYiA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBiKSBrIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGltID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYlxuICAgICAgICAgICAgfCBTb21lIGltIC0+IGYgcGFyYW1ldGVycyBlcnJvciBrIGltIGIpXG4gICAgICAgICAgKGVycm9yLCBiKSAoTGlzdC5yZXYgbGlzdClcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVycyBlcnJvciBmIGEgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgdHJ1ZVxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAobWF0Y2ggZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaCBhIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAoKSA9IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGF1eCB0IGVycm9yXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXJzIGVycm9yIGggZGF0YSBpblxuICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGZhbHNlKVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCBlcnJvclxuXG4gICAgICBsZXQgZnJlZV9hbGwgcGFyYW1ldGVyIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIHQgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBhIF8gdCAtPiBmcmVlIHBhcmFtZXRlciBlcnJvciBhIHQpXG4gICAgICAgICAgICB0IHRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgdCB3aXRoIGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggbGlzdCBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgW10gLT4gb3V0cHV0XG4gICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc25kIG91dHB1dCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGltIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSAoaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYilcbiAgICAgICAgICAgICAgICB8IFNvbWUgaW0gLT4gU29tZSAoZiBwYXJhbWV0ZXJzIGVycm9yIGhlYWQgaW0gYilcbiAgICAgICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICAgICAgICAgIHwgU29tZSBvdXRwdXQgLT4gYXV4IHRhaWwgb3V0cHV0KVxuICAgICAgICBpblxuICAgICAgICBhdXggbGlzdCAoZXJyb3IsIGIpXG5cbiAgICAgIGxldCBmb2xkMl9jb21tb24gcGFyYW1ldGVyIGVycm9yIGYgYSBiIGMgPVxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgY1xuICAgICAgICAgICAgfCBTb21lIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICBhIGNcblxuICAgICAgbGV0IGZvbGQyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBhIGIgYyA9XG4gICAgICAgIGxldCBlcnJvciwgYyA9XG4gICAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSBjIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBiIGluXG4gICAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmIHBhcmFtZXRlciBlcnJvciBrIGEgY1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBoIHBhcmFtZXRlciBlcnJvciBrIGEgYiBjKVxuICAgICAgICAgICAgYSBjXG4gICAgICAgIGluXG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBiIGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgZ2V0ID0gdW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgayBhIGluXG4gICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGcgcGFyYW1ldGVyIGVycm9yIGsgYiBjXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBlcnJvciwgYylcbiAgICAgICAgICBiIGNcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gQmFzaWMua2V5IGFuZCB0eXBlIGRpbWVuc2lvbiA9IEJhc2ljLmRpbWVuc2lvbilcblxubW9kdWxlIE5lYXJseV9pbmZfSW1wZXJhdGlmID0gTmVhcmx5X2luZmluaXRlX2FycmF5cyAoSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxubW9kdWxlIFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmID0gUXVpY2tfa2V5X2xpc3QgKE5lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKEludF9zdG9yYWdlX2ltcGVyYXRpZikgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcblxubW9kdWxlIE5lYXJseV9JbmZfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfSW50X3N0b3JhZ2VfSW1wZXJhdGlmX0ltcGVyYXRpZl9JbXBlcmF0aWYgPVxuICBFeHRlbmRcbiAgICAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpXG4gICAgKEV4dGVuZCAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikpXG4iLCIoKipcbiAgICAqIHVuaW9uX2ZpbmQubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDIwMTUsIHRoZSAxMXRoIG9mIE1hcmNoXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEFwciAxOCAyMDE4PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHVuaW9uIGZpbmQgYWxnb3JpdGhtIHdpdGhcbiAgICAqIHBhdGggY29tcHJlc3Npb25cbiAgICAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCwyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBVbmlvbl9maW5kID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgZGltZW5zaW9uXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBkaW1lbnNpb24gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHVuaW9uX2xpc3QgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAga2V5IGxpc3QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIGl0ZXJpIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICBrZXkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBnZXRfcmVwcmVzZW50ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHQgKiBrZXlcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChTdG9yYWdlIDogSW50X3N0b3JhZ2UuU3RvcmFnZSlcbiAgLT5cbiAgKCogICAgZnVuY3RvciAoTWFwOiBNYXBfd3JhcHBlci5NYXBfd2l0aF9sb2dzKSAtPiopXG4gICAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBrZXkgPSBTdG9yYWdlLmtleVxuICAgICAgdHlwZSB0ID0ga2V5IFN0b3JhZ2UudFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvblxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiA9XG4gICAgICAgIFN0b3JhZ2UuaW5pdCBwYXJhbWV0ZXJzIGVycm9yIG4gKGZ1biBfIGUgeCAtPiBlLCB4KVxuXG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCogZmluZFNldChlKTogd2hpY2ggcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVwcmVzZW50YXRpdmUgb2YgdGhlIHNldFxuICAgICAgICAgY29udGFpbmluZyBlLiBTaW5jZSB0aGUgc2V0IGFyZSBkaXNqb2ludCwgZSBjb250YWludGVkIGluIG9uZSBzZXRcbiAgICAgICAgIG9ubHkuIFRoZXJlZm9yZSwgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aXZlIGNhbiBiZSB1bmlxdWVseSBkZXRlcm1pbmVkLlxuICAgICAgKilcblxuICAgICAgbGV0IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIGUgdCA9XG4gICAgICAgIGxldCBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3Igcm9vdCBsIHQgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgdCkgaSAtPiBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3IgaSByb290IHQpXG4gICAgICAgICAgICAoZXJyb3IsIHQpIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIGUgbCB0ID1cbiAgICAgICAgICBsZXQgZXJyb3IsIHBhcmVudCA9IFN0b3JhZ2UudW5zYWZlX2dldCBwYXJhbWV0ZXIgZXJyb3IgZSB0IGluXG4gICAgICAgICAgbWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsICh0LCBlKVxuICAgICAgICAgIHwgU29tZSBwIHdoZW4gcCA8PiBlIC0+IGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgcCAoZSA6OiBsKSB0XG4gICAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICAgICgqIGJhc2UgY2FzZTogd2UgaGl0IHRoZSByb290IG5vZGUgbWFrZSBhbGwgY29sbGVjdGVkIG5vZGVzIG9uIHRoZVxuICAgICAgICAgICAgICAgcGF0aCBwb2ludCB0byB0aGUgcm9vdC4gQW5kIHJldHVybiB0aGUgcm9vdCBhZnRlcndhcmRzICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQgPSBwb2ludFRvUm9vdCBwYXJhbWV0ZXIgZXJyb3IgcCBsIHQgaW5cbiAgICAgICAgICAgIGVycm9yLCAodCwgcClcbiAgICAgICAgaW5cbiAgICAgICAgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIFtdIHRcblxuICAgICAgbGV0IGdldF9yZXByZXNlbnRlbnQgcGFyYW1ldGVycyBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh1bmlvbiwgZWx0KSA9IGZpbmRTZXQgcGFyYW1ldGVycyBlcnJvciBlIHQgaW5cbiAgICAgICAgZXJyb3IsIHVuaW9uLCBlbHRcbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKlVOSU9OKilcblxuICAgICAgbGV0IHVuaW9uIHBhcmFtZXRlciBlcnJvciB4IHkgdCA9XG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeCkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB4IHQgaW5cbiAgICAgICAgbGV0IGVycm9yLCAodCwgcm9vdF95KSA9IGZpbmRTZXQgcGFyYW1ldGVyIGVycm9yIHkgdCBpblxuICAgICAgICBTdG9yYWdlLnNldCBwYXJhbWV0ZXIgZXJyb3Igcm9vdF94IHJvb3RfeSB0XG5cbiAgICAgICgqbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgKCogIGxldCBjbGFzc2VzID0gQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZW1wdHkgaW4qKVxuICAgICAgICA9PT09PT09XG4gICAgICAgIGxldCB1bmlvbiB4IHkgYSA9XG4gICAgICAgIGxldCByb290X3ggPSBmaW5kU2V0IHggYSBpblxuICAgICAgICBsZXQgcm9vdF95ID0gZmluZFNldCB5IGEgaW5cbiAgICAgICAgbGV0IF8gPSBhLihyb290X3gpIDwtIHJvb3RfeSBpblxuICAgICAgICAoKmxldCBfID0gcHJpbnRfc3RyaW5nIFwiZHVtcDogXCI7IGR1bXAgYTsgcHJpbnRfc3RyaW5nIFwiXFxuXCIgaW4qKVxuICAgICAgICBhXG5cbiAgICAgICAgbGV0IGVxX2NsYXNzZXNfbWFwIHBhcmFtZXRlciBlcnJvciBhID1cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBsZXQgcmVjIGF1eCBrIChjbGFzc2VzLHVuaW9uX2xpc3QpID1cbiAgICAgICAgICBpZiAgayA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBjbGFzc2VzLCB1bmlvbl9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCpmaW5kIHRoZSBwYXJlbnQgb2YgdGhlIHVuaW9uKilcbiAgICAgICAgICAgIGxldCByZXAgPSBmaW5kU2V0IGsgYSBpblxuICAgICAgICAgICAgKCpjaGVjayBpZiBpbnNpZGUgY2xhc3NlcyBoYXMgYWxyZWFkeSBoYXMgdGhpcyBwYXJlbnQqKVxuICAgICAgICA8PDw8PDw8IEhFQURcbiAgICAgICAgICAgIGxldCBlcnJvcicsZ2V0X3JlcCA9XG4gICAgICAgICgqICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHQgcGFyYW1ldGVyIGVycm9yIFtdIHJlcCBjbGFzc2VzIGluKilcbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICgqICAgICAgbGV0IGVycm9yLGNsYXNzZXMgPVxuICAgICAgICBDY2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID09PT09PT1cbiAgICAgICAgICAgIGxldCBlcnJvcicsIGdldF9yZXAgPVxuICAgICAgICAgICAgICBDa2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICByZXBcbiAgICAgICAgICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmNoZWNrIHdhcm4gcGFyYW1ldGVyIGVycm9yIGVycm9yJyAoU29tZSBcImxpbmUgNzNcIikgRXhpdCBpblxuICAgICAgICAgICAgKCpzdG9yZSB0aGUgcmVzdWx0IGluc2lkZSBjbGFzc2VzKilcbiAgICAgICAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5hZGRfb3Jfb3ZlcndyaXRlXG4gICAgICAgID4+Pj4+Pj4gcmVtb3ZlIGRvdWJsaWNhdGUgbW9kdWxlLCB0b2RvOiBoaWRkZW4gdHlwZSBzaXRlX25hbWVcbiAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgIChrIDo6IGdldF9yZXApXG4gICAgICAgIGNsYXNzZXNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGF1eCAoayAtIDEpIChjbGFzc2VzLCB1bmlvbl9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2xhc3NlcywgYSA9IGF1eCAoc2l6ZSAtIDEpIChjbGFzc2VzLCBhKSBpblxuICAgICAgICBjbGFzc2VzLCBhKilcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGNvbXB1dGUgdW5pb24tZmluZCBpbiBhIGxpc3QqKVxuXG4gICAgICBsZXQgdW5pb25fbGlzdCBwYXJhbWV0ZXIgZXJyb3IgYSAobGlzdCA6IGtleSBsaXN0KSA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBhXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHJlYyBhdXggcGFyYW1ldGVyIHRvX3Zpc2l0IGVycm9yIGEgPVxuICAgICAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICAgICAgfCB0JyA6OiBxJyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHVuaW9uX2FycmF5ID0gdW5pb24gcGFyYW1ldGVyIGVycm9yIHQgdCcgYSBpblxuICAgICAgICAgICAgICBhdXggcGFyYW1ldGVyIHEnIGVycm9yIHVuaW9uX2FycmF5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVyIHEgZXJyb3IgYVxuXG4gICAgICBsZXQgaXRlcmkgPSBTdG9yYWdlLml0ZXJcbiAgICBlbmQgOlxuICAgICAgVW5pb25fZmluZFxuICAgICAgICB3aXRoIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgICAgIGFuZCB0eXBlIHQgPSBTdG9yYWdlLmtleSBTdG9yYWdlLnRcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IFN0b3JhZ2UuZGltZW5zaW9uKVxuIiwibGV0IGZzdF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKHgsIF8pIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc25kX29wdGlvbiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSAoXywgeCkgLT4gU29tZSB4XG4gIHwgXyAtPiBOb25lXG5cbigqIE9DYW1sIG1hbnVhbDogSW4gcGFydGljdWxhciwgaWYgeW91IHdhbnQgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdFxuICAgbWF0Y2hlcyBhIHNpbmdsZSBiYWNrc2xhc2ggY2hhcmFjdGVyLCB5b3UgbmVlZCB0byBxdW90ZSBpdCBpbiB0aGVcbiAgIGFyZ3VtZW50IHRvIHJlZ2V4cCAoYWNjb3JkaW5nIHRvIHRoZSBsYXN0IGl0ZW0gb2YgdGhlIGxpc3QgYWJvdmUpIGJ5XG4gICBhZGRpbmcgYSBzZWNvbmQgYmFja3NsYXNoLiBUaGVuIHlvdSBuZWVkIHRvIHF1b3RlIGJvdGggYmFja3NsYXNoZXNcbiAgIChhY2NvcmRpbmcgdG8gdGhlIHN5bnRheCBvZiBzdHJpbmcgY29uc3RhbnRzIGluIE9DYW1sKSBieSBkb3VibGluZ1xuICAgdGhlbSBhZ2Fpbiwgc28geW91IG5lZWQgdG8gd3JpdGUgZm91ciBiYWNrc2xhc2ggY2hhcmFjdGVyczogU3RyLnJlZ2V4cFxuICAgXCJcXFxcXFxcXFwiLiAqKVxuXG4oKiogZG90IG91dHB1dCopXG5sZXQgZXNjYXBlX2xhYmVsX2luX2RvdCBzID1cbiAgU3RyLmdsb2JhbF9zdWJzdGl0dXRlIChTdHIucmVnZXhwIFwiW1xcXFxcXFwiXFxcXFxcXFxdXCIpXG4gICAgKGZ1biB4IC0+XG4gICAgICBtYXRjaCBTdHIubWF0Y2hlZF9zdHJpbmcgeCB3aXRoXG4gICAgICB8IFwiXFxcIlwiIC0+IFwiXFxcXFxcXCJcIlxuICAgICAgfCBcIlxcXFxcIiAtPiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgc1xuXG5sZXQgbWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2Zvcm1hdCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZyA9XG4gIGxldCB0YWIgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3QgcGFyYW1ldGVyc1xuICBpblxuICBsZXQgcmVjIGF1eCBwb3MgbCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuXG4gICAgICBsXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhciA9IFN0cmluZy5nZXQgc3RyaW5nIHBvcyBpblxuICAgICAgbWF0Y2ggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5maW5kX29wdGlvbiBjaGFyIHRhYiB3aXRoXG4gICAgICB8IFNvbWUgbGlzdGVfY2hhciAtPlxuICAgICAgICBhdXggKHBvcyAtIDEpXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGNoYXIgLT4gY2hhciA6OiBsaXN0KVxuICAgICAgICAgICAgIGwgKExpc3QucmV2IGxpc3RlX2NoYXIpKVxuICAgICAgfCBOb25lIC0+IGF1eCAocG9zIC0gMSkgKGNoYXIgOjogbClcbiAgICApXG4gIGluXG4gIGxldCBsID0gYXV4IChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIDEpIFtdIGluXG4gIGVycm9yLCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoU3RyaW5nLm1ha2UgMSkgKExpc3QucmV2IGwpKVxuXG5sZXQgc29ydGVkX3BhcnRzX29mX2xpc3QgbiBsaXN0ID1cbiAgbGV0IGxpc3QgPSBMaXN0LnNvcnQgKGZ1biBhIGIgLT4gY29tcGFyZSBiIGEpIGxpc3QgaW5cbiAgbGV0IHJlYyBhdXggayBsaXN0IHN1ZmZpeCBvdXRwdXQgPVxuICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgIHN1ZmZpeCA6OiBvdXRwdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IGsgdCBzdWZmaXggKGF1eCAoayAtIDEpIHQgKGggOjogc3VmZml4KSBvdXRwdXQpXG4gICAgICB8IFtdIC0+IG91dHB1dFxuICAgIClcbiAgaW5cbiAgYXV4IG4gbGlzdCBbXSBbXVxuXG5sZXQgc29ydF9saXN0IGtleSBwYXJhbWV0ZXIgZXJyb3IgbGlzdCA9XG4gIGxldCBlcnJvciwgcmVmaW5lZF9saXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIHJlZmluZWRfbGlzdCkgYSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleSA9IGtleSBwYXJhbWV0ZXIgZXJyb3IgYSBpblxuICAgICAgICBlcnJvciwgKGtleSwgYSkgOjogcmVmaW5lZF9saXN0KVxuICAgICAgKGVycm9yLCBbXSkgbGlzdFxuICBpblxuICBsZXQgcmVmaW5lZF9zb3J0ZWRfbGlzdCA9XG4gICAgTGlzdC5zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBjb21wYXJlIGIgYSkgcmVmaW5lZF9saXN0XG4gIGluXG4gIGVycm9yLCBMaXN0LnJldl9tYXAgc25kIHJlZmluZWRfc29ydGVkX2xpc3RcbiIsIigqKlxuICAqIG1pc2Nfc2EubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8xMi8yMDEwXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDIgMjAxNj5cbiAgKiAqXG4gICogVmFyaW91cyBmdW5jdGlvbnNcbiAgKlxuICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGNvbnN0X3VuaXQgXyA9ICgpXG5cbmxldCBhcnJheV9vZl9saXN0IGNyZWF0ZSBzZXQgcGFyYW1ldGVycyBlcnJvciBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBhID0gY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbiBpblxuICBsZXQgcmVjIGF1eCBsIGsgYSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhXG4gICAgfCB0IDo6IHEgLT4gYXV4IHEgKGsgKyAxKSAoc2V0IHBhcmFtZXRlcnMgKGZzdCBhKSBrIHQgKHNuZCBhKSlcbiAgaW5cbiAgYXV4IGxpc3QgMCBhXG5cbmxldCB1bnNvbWUgKGVycm9yLCB4KSBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiBmIGVycm9yXG4gIHwgU29tZSB4IC0+IGVycm9yLCB4XG5cbmxldCByZXZfaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbGV0IHJlYyBhdXggbDEgbDIgcmVwID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gfCBfLCBbXSAtPiBMaXN0LnJldiByZXBcbiAgICB8IGEgOjogYiwgYyA6OiBkIC0+XG4gICAgICBpZiBjb21wYXJlIGEgYyA9IDAgdGhlblxuICAgICAgICBhdXggYiBkIChhIDo6IHJlcClcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBhIGMgPCAwIHRoZW5cbiAgICAgICAgYXV4IGIgbDIgcmVwXG4gICAgICBlbHNlXG4gICAgICAgIGF1eCBsMSBkIHJlcFxuICBpblxuICBhdXggbDEgbDIgW11cblxubGV0IHRyYWNlIHBhcmFtZXRlcnMgc3RyaW5nID1cbiAgaWZcbiAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlXG4gIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgIFwiJXMlc1wiXG4gICAgICBwYXJhbWV0ZXJzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgICAgICAuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJlZml4IChzdHJpbmcgKCkpXG5cbmxldCBpbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIgPSBMaXN0LnJldiAocmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMilcblxubGV0IGxpc3RfMF9uIGsgPVxuICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgaWYgayA8IDAgdGhlblxuICAgICAgc29sXG4gICAgZWxzZVxuICAgICAgYXV4IChrIC0gMSkgKGsgOjogc29sKVxuICBpblxuICBhdXggayBbXVxuXG5sZXQgbGlzdF9taW51cyBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHQxIDo6IHExLCB0MiA6OiBxMiB3aGVuIHQxID0gdDIgLT4gYXV4IHExIHEyIHJlcFxuICAgIHwgdDEgOjogcTEsIF8gLT4gYXV4IHExIGwyICh0MSA6OiByZXApXG4gICAgfCBbXSwgXyAtPiByZXBcbiAgaW5cbiAgTGlzdC5yZXYgKGF1eCBsMSBsMiBbXSlcblxubGV0IHByaW50X2NvbW1hIHBhcmFtZXRlciBib29sIGNvbW1hID1cbiAgaWYgYm9vbCB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIiVzXCIgY29tbWFcblxubGV0IGZldGNoX2FycmF5IGkgYXJyYXkgZGVmID1cbiAgdHJ5XG4gICAgbWF0Y2ggYXJyYXkuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmXG4gICAgfCBTb21lIGkgLT4gaVxuICB3aXRoIF8gLT4gZGVmXG4iLCIoKipcbiAgICAqIGhhc2gubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDE4LzEwLzIwMTBcbiAgICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA0IDIwMTc+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc2lnbmF0dXJlIGZvciBoYXNoIHRhYmxlcyBhbmQgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnNcbiAgICAqICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBrZXlcbiAgdHlwZSAnYSBoYXNoXG5cbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSBoYXNoXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgLT5cbiAgICBpbnQgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgaGFzaFxuXG4gIHZhbCBmaW5kX29wdGlvbiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgOiBrZXkgLT4gJ2EgaGFzaCAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gaW50IC0+IHVuaXQpIC0+ICdhIGhhc2ggLT4gdW5pdFxuICB2YWwgZm9sZCA6IChrZXkgLT4gJ2IgLT4gaW50IC0+ICdhIC0+ICdhKSAtPiAnYiBoYXNoIC0+ICdhIC0+ICdhXG5lbmRcblxubW9kdWxlIEhhc2ggPVxuZnVuY3RvclxuICAoTWFwIDogTWFwX3dyYXBwZXIuU193aXRoX2xvZ3MpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gTWFwLmVsdFxuICAgICAgdHlwZSAnYSBoYXNoID0gKGludCAqICdhKSBNYXAuTWFwLnRcblxuICAgICAgbGV0IGNyZWF0ZSBfID0gTWFwLk1hcC5lbXB0eVxuXG4gICAgICBsZXQgYWRkIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBvdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAub3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgKGludCwgYXNzbylcblxuICAgICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSBhc3NvIGludCA9XG4gICAgICAgIE1hcC5NYXAuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBmaW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiID1cbiAgICAgICAgbGV0IGVycm9yJywgb3V0cHV0ID0gTWFwLk1hcC5maW5kX29wdGlvbiBwYXJhbWV0ZXIgZXJyb3IgYSBiIGluXG4gICAgICAgIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgICAgICAgZXJyb3InLCBvdXRwdXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvcicgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIHJlYWQgYW4gdW5leGlzdGluZyBhc3NvY2lhdGlvblwiIE5vdF9mb3VuZFxuICAgICAgICAgICAgb3V0cHV0XG5cbiAgICAgIGxldCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgPSBNYXAuTWFwLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuXG4gICAgICBsZXQgZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkgYSBiID1cbiAgICAgICAgTGlmdF9lcnJvcl9sb2dzLmxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfYmluYXJ5IGZpbmRfb3B0aW9uIGEgYlxuXG4gICAgICBsZXQgaXRlciBmID0gTWFwLk1hcC5pdGVyIChmdW4gKGEgOiBrZXkpIChiLCBjKSAtPiBmIGEgYyBiKVxuICAgICAgbGV0IGZvbGQgZiA9IE1hcC5NYXAuZm9sZCAoZnVuIGEgKGIsIGMpIGQgLT4gZiBhIGMgYiBkKVxuICAgIGVuZCA6XG4gICAgICBIYXNoIHdpdGggdHlwZSBrZXkgPSBNYXAuZWx0KVxuXG5tb2R1bGUgSGFzaF9vZl9PcmQgPVxuZnVuY3RvciAoTyA6IFNldE1hcC5PcmRlcmVkVHlwZSkgLT4gSGFzaCAoTWFwX3dyYXBwZXIuTWFrZSAoU2V0TWFwLk1ha2UgKE8pKSlcbiIsImxldCBsb2NhbF90cmFjZSA9IGZhbHNlXG5cbnR5cGUgbm9kZSA9IGludFxuXG5sZXQgbm9kZV9vZl9pbnQgeCA9IHhcbmxldCBpbnRfb2Zfbm9kZSAoeCA6IG5vZGUpIDogaW50ID0geFxuXG5tb2R1bGUgTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmQpXG5cbm1vZHVsZSBOb2RlTWFwID0gTm9kZVNldE1hcC5NYXBcblxubW9kdWxlIEZpeGVkX3NpemVfYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLlF1aWNrX2tleV9saXN0IChJbnRfc3RvcmFnZS5JbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOb2RlYXJyYXkgOlxuICBJbnRfc3RvcmFnZS5TdG9yYWdlIHdpdGggdHlwZSBrZXkgPSBub2RlIGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludCA9XG4gIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmXG5cbnR5cGUgKCdub2RlX2xhYmVscywgJ2VkZ2VfbGFiZWxzKSBncmFwaCA9IHtcbiAgbm9kZV9sYWJlbHM6ICdub2RlX2xhYmVscyBGaXhlZF9zaXplX2FycmF5LnQ7XG4gIGVkZ2VzOiAobm9kZSAqICdlZGdlX2xhYmVscykgbGlzdCBGaXhlZF9zaXplX2FycmF5LnQ7XG59XG5cbmxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBub2RlX29mX25vZGVfbGFiZWwgbm9kZV9saXN0IGVkZ2VfbGlzdCA9XG4gIGxldCBtYXhfbm9kZSA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtIGkgLT4gbWF4IG0gKGludF9vZl9ub2RlIGkpKSAwIG5vZGVfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIG5vZGVzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgZXJyb3IsIG5vZGVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG5vZGVzKSBpIC0+XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoaSA6IG5vZGUpXG4gICAgICAgICAgKG5vZGVfb2Zfbm9kZV9sYWJlbCBpKSBub2RlcylcbiAgICAgIChlcnJvciwgbm9kZXMpIChMaXN0LnJldiBub2RlX2xpc3QpXG4gIGluXG4gIGxldCBlcnJvciwgZWRnZXMgPSBGaXhlZF9zaXplX2FycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG1heF9ub2RlIGluXG4gIGxldCBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIChuMSwgbGFiZWwsIG4yKSBlZGdlcyA9XG4gICAgbGV0IGVycm9yLCBvbGQgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgRml4ZWRfc2l6ZV9hcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBuMSAoKG4yLCBsYWJlbCkgOjogb2xkKSBlZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIGVkZ2VzKSBlZGdlIC0+IGFkZF9lZGdlIHBhcmFtZXRlcnMgZXJyb3IgZWRnZSBlZGdlcylcbiAgICAgIChlcnJvciwgZWRnZXMpIGVkZ2VfbGlzdFxuICBpblxuICBlcnJvciwgeyBub2RlX2xhYmVscyA9IG5vZGVzOyBlZGdlcyB9XG5cbmxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCAtMVxuXG5sZXQgZ2V0X2IgcGFyYW1ldGVycyBlcnJvciBpIHQgPVxuICBtYXRjaCBOb2RlYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgdCB3aXRoXG4gIHwgZXJyb3IsIFNvbWUgaSAtPiBlcnJvciwgaVxuICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBmYWxzZVxuXG5sZXQgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIG5fdG9fc3RyaW5nIGdyYXBoID1cbiAgbGV0IGVycm9yID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIFwiQ09NUFVURSBCUklER0U6IFxcbiBHcmFwaDogXFxuIE5vZGVzOiBcXG5cIlxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgaiAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWkgJXM7XFxuXCIgaSAobl90b19zdHJpbmcgailcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuaXRlciBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGkgbCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIFwiJWk6XCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciAoaiwgXykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICBcIiVpLFwiIGpcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgICBncmFwaC5lZGdlc1xuICAgICAgaW5cbiAgICAgIGVycm9yXG4gICAgKSBlbHNlXG4gICAgICBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjayA9XG4gICAgbWF0Y2ggbG93LCBwcmUsIG9uX3N0YWNrIHdpdGhcbiAgICB8IFNvbWUgbG93LCBTb21lIHByZSwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gICAgfCBOb25lLCBfLCBfIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgX21heF9ub2RlID1cbiAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAoZnVuIF9wYXJhbWV0ZXIgZXJyb3IgaSBfIGogLT4gZXJyb3IsIG1heCAoaW50X29mX25vZGUgaSkgailcbiAgICAgICAgICBncmFwaC5ub2RlX2xhYmVscyAwXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICB8IFNvbWUgbG93IC0+IGVycm9yLCBsb3dcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBwcmUgPVxuICAgICAgICBtYXRjaCBwcmUgd2l0aFxuICAgICAgICB8IFNvbWUgcHJlIC0+IGVycm9yLCBwcmVcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgIG1hdGNoIG9uX3N0YWNrIHdpdGhcbiAgICAgICAgfCBTb21lIG9uX3N0YWNrIC0+IGVycm9yLCBvbl9zdGFja1xuICAgICAgICB8IE5vbmUgLT4gTm9kZWFycmF5LmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDFcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrXG4gIGluXG4gIGxldCByZWMgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHYgPVxuICAgIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgY291bnRlciBwcmUgaW5cbiAgICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgbG93IGluXG4gICAgbGV0IHN0YWNrID0gdiA6OiBzdGFjayBpblxuICAgIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiB0cnVlIG9uX3N0YWNrIGluXG4gICAgbGV0IGNvdW50ZXIgPSBzdWNjIGNvdW50ZXIgaW5cbiAgICBsZXQgZXJyb3IsIGVkZ2VzX3YgPVxuICAgICAgbWF0Y2ggRml4ZWRfc2l6ZV9hcnJheS51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBncmFwaC5lZGdlcyB3aXRoXG4gICAgICB8IGVycm9yLCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgfCBlcnJvciwgU29tZSBhIC0+IGVycm9yLCBhXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpICh3LCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSA9XG4gICAgICAgICAgICBpZiBwcmVfdyA9IC0xIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgICAgIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd193ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgbG93X3cpIGxvd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBiID0gZ2V0X2IgcGFyYW1ldGVycyBlcnJvciB3IG9uX3N0YWNrIGluXG4gICAgICAgICAgICAgIGlmIGIgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBwcmVfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgcHJlIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3cgPVxuICAgICAgICAgICAgICAgICAgTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgKG1pbiBsb3dfdiBwcmVfdykgbG93XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIChlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSlcbiAgICAgICAgZWRnZXNfdlxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb3dfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgbG93IGluXG4gICAgbGV0IGVycm9yLCBwcmVfdiA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHYgcHJlIGluXG4gICAgaWYgbG93X3YgPSBwcmVfdiB0aGVuIChcbiAgICAgIGxldCByZWMgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgICAgPVxuICAgICAgICBtYXRjaCBzdGFjayB3aXRoXG4gICAgICAgIHwgdycgOjogc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID1cbiAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB3JyBmYWxzZSBvbl9zdGFja1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNjID0gdycgOjogY2MgaW5cbiAgICAgICAgICBpZiB2ID0gdycgdGhlblxuICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIGNjIDo6IHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIGNjIHZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIGluXG4gICAgICBhdXgyIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIFtdIHZcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spXG4gIGluXG4gIGxldCBlcnJvciwgKHByZSwgbG93LCBfY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBfc3RhY2spID1cbiAgICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIHYgXyAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgICAgICBpZiBwcmVfdiA9IC0xIHRoZW5cbiAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgKHByZSwgbG93LCAxLCBvbl9zdGFjaywgW10sIFtdKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIGxvY2FsX3RyYWNlIHx8IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIlNDQ1wiXG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIGxpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgXCIlaTtcIilcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJcXG5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIHNjY19saXN0XG4gICAgICBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgcHJlID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgcHJlIGluXG4gIGxldCBlcnJvciwgbG93ID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3IgbG93IGluXG4gIGxldCBlcnJvciwgb25fc3RhY2sgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBvbl9zdGFjayBpblxuICBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdFxuXG5sZXQgZGV0ZWN0X2JyaWRnZXMgcGFyYW1ldGVycyBlcnJvciBhZGQgZ3JhcGggc3RyaW5nX29mX24gc3RyaW5nX29mX2Ugc2NjXG4gICAgYnJpZGdlcyA9XG4gIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIG5pIGwgYnJpZGdlcyAtPlxuICAgICAgbGV0IGVycm9yLCBzY2NpID1cbiAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIHNjYyB3aXRoXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgc2NjaSAtPiBlcnJvciwgc2NjaVxuICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMSlcbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYnJpZGdlcykgKG5qLCBsYWJlbCkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNjY2ogPVxuICAgICAgICAgICAgbWF0Y2ggTm9kZWFycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5qIHNjYyB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBTb21lIHNjY2ogLT4gZXJyb3IsIHNjY2pcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT4gRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgKC0yKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc2NjaSA9IHNjY2ogdGhlblxuICAgICAgICAgICAgZXJyb3IsIGJyaWRnZXNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmkgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naSAtPlxuICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgRml4ZWRfc2l6ZV9hcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBncmFwaC5ub2RlX2xhYmVsc1xuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYnJpZGdlc1xuICAgICAgICAgICAgICB8IGVycm9yLCBTb21lIG5zdHJpbmdqIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIGlmIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgbG9jYWxfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIlcyAlcyAlc1wiIChzdHJpbmdfb2ZfbiBuc3RyaW5naSkgKHN0cmluZ19vZl9lIGxhYmVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9uIG5zdHJpbmdqKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgYWRkIChuc3RyaW5naSwgbGFiZWwsIG5zdHJpbmdqKSBicmlkZ2VzKVxuICAgICAgICAgICkpXG4gICAgICAgIChlcnJvciwgYnJpZGdlcykgbClcbiAgICBncmFwaC5lZGdlcyBicmlkZ2VzXG5cbmxldCBhZGRfYnJpZGdlcyA/bG93ID9wcmUgP29uX3N0YWNrID9zY2MgYWRkIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nX29mX25cbiAgICBzdHJpbmdfb2ZfZSBncmFwaCBicmlkZ2VzID1cbiAgbGV0IGVycm9yLCBzY2MgPVxuICAgIG1hdGNoIHNjYyB3aXRoXG4gICAgfCBTb21lIHNjYyAtPiBlcnJvciwgc2NjXG4gICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gIGluXG4gIGxldCBlcnJvciwgcHJlLCBsb3csIG9uX3N0YWNrLCBzY2NfbGlzdCA9XG4gICAgY29tcHV0ZV9zY2MgP2xvdyA/cHJlID9vbl9zdGFjayBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uIGdyYXBoXG4gIGluXG4gIGxldCBlcnJvciwgXywgc2NjID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgY2MgLT5cbiAgICAgICAgbGV0IGVycm9yLCBuLCBzY2MgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbiwgc2NjKSBub2RlIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgc2NjID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIG5vZGUgbiBzY2MgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIG4sIHNjYylcbiAgICAgICAgICAgIChlcnJvciwgbiwgc2NjKSBjY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbiArIDEsIHNjYylcbiAgICAgIChlcnJvciwgMSwgc2NjKSBzY2NfbGlzdFxuICBpblxuICBsZXQgZXJyb3IsIGJyaWRnZXMgPVxuICAgIGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgICAgYnJpZGdlc1xuICBpblxuICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHNjYyBpblxuICBlcnJvciwgbG93LCBwcmUsIG9uX3N0YWNrLCBzY2MsIGJyaWRnZXNcbiIsIigqKlxuICogZGljdGlvbmFyeS5tbFxuICogb3BlbmthcHBhXG4gKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE4dGggb2YgT2N0b2JlclxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDUgMjAxNz5cbiAqICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgaW5kZXhlZCBzZXQgb2YgdmFsdWVzXG4gKiBEdXJpbmcgdGhlIGNvbnN0cnVjdGlvbiBtZW1iZXJzaGlwLCB0cmFuZHVjdGlvbiwgYW5kIG5ldyBrZXkgY2FuXG4gKiBiZSBoYW5kbGVkIGluIE8obG9nIG4pXG4gKiBBZnRlciB0aGUgY29uc3RydWN0aW9uIGtleSBjYW4gYmUgdHJhbnNsYXRlZCBpbiBPKDEpXG4gKiAqXG4gKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBEaWN0aW9uYXJ5ID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgdmFsdWVcbiAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIGluaXQgOiB1bml0IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgbWVtYmVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogYm9vbFxuXG4gIHZhbCBhbGxvY2F0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgdmFsIGFsbG9jYXRlX3VuaXF1ZWx5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KSBvcHRpb25cblxuICAoKiAgdmFsIGFsbG9jYXRlX2ZfaWQ6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiB2YWx1ZSAtPiAoaW50IC0+ICdhKSAtPiAnYSBkaWN0aW9uYXJ5IC0+IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSAqICdhIGRpY3Rpb25hcnkpIG9wdGlvbiopXG4gIHZhbCBhbGxvY2F0ZV9ib29sIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhIC0+ICdhIC0+IGtleSkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG4gICAgKiAoYm9vbCAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uKVxuXG4gIHZhbCB1bnNhZmVfYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgKGtleSAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGtleSAqICdhICogJ2IgKiAoJ2EsICdiKSBkaWN0aW9uYXJ5KVxuXG4gIHZhbCB0cmFuc2xhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKHZhbHVlICogJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIHN0YWJpbGl6ZSA6ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpdGVyIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICB2YWx1ZSAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBsYXN0X2VudHJ5IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGtleVxuXG4gIHZhbCBmb2xkIDpcbiAgICAodmFsdWUgLT4gJ2EgKiAnYiAtPiBrZXkgLT4gJ2MgLT4gJ2MpIC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT4gJ2MgLT4gJ2NcbmVuZFxuXG5leGNlcHRpb25cbiAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuZXhjZXB0aW9uIEFzc29jaWF0aW9uX2lzX25vdF9kZWZpbmVkXG5cbm1vZHVsZSBEaWN0aW9uYXJ5ID1cbmZ1bmN0b3JcbiAgKEhhc2ggOiBIYXNoLkhhc2gpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gaW50XG4gICAgICB0eXBlIHZhbHVlID0gSGFzaC5rZXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBpbl9jb25zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIGhhc2hfdGFibGU6ICgnYSAqICdiKSBIYXNoLmhhc2g7XG4gICAgICAgIGZyZXNoOiBpbnQ7XG4gICAgICB9XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgc3RhYmlsaXplZCA9ICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvbiBhcnJheVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIGRpY3Rpb25hcnkgPSB7XG4gICAgICAgIGlzX3N0YWJpbGl6ZWQ6IGJvb2w7XG4gICAgICAgIHN0YWJpbGl6ZWQ6ICgnYSwgJ2IpIHN0YWJpbGl6ZWQ7XG4gICAgICAgIGluX2NvbnN0cnVjdGlvbjogKCdhLCAnYikgaW5fY29uc3RydWN0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgaW52YWxpZCB4IHBhcmFtZXRlcnMgbWggX19QT1NfXyBtZXNzYWdlIGV4biA9XG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgbWggX19QT1NfXyB+bWVzc2FnZSBleG4geFxuXG4gICAgICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkIE5vbmVcbiAgICAgIGxldCBpbnZhbGlkX2FyZ19ib29sID0gaW52YWxpZCAoZmFsc2UsIE5vbmUpXG4gICAgICBsZXQgcHJlaW5pdCAoKSA9IHsgaGFzaF90YWJsZSA9IEhhc2guY3JlYXRlIDE7IGZyZXNoID0gMCB9XG5cbiAgICAgIGxldCBwcmVtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgZXJyb3IsIG91dHB1dCA9XG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3Qgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYW4gYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG91dHB1dCAhPSBOb25lXG5cbiAgICAgIGxldCBwcmV0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgc3RhYmlsaXplZCA9XG4gICAgICAgIGlmIGtleSA+PSAwICYmIGtleSA8IEFycmF5Lmxlbmd0aCBzdGFiaWxpemVkIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIHN0YWJpbGl6ZWQuKGtleSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGVycm9yLCBTb21lIGFcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICApIGVsc2UgaWYga2V5IDwgMCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibmVnYXRpdmUga2V5IGFyZSBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIFwibWlzc2luZyBlbnRyeVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG4gICAgICBsZXQgcHJlc3RhYmlsaXplIGluX2NvbnN0cnVjdGlvbiA9XG4gICAgICAgIGxldCBhcnJheSA9IEFycmF5Lm1ha2UgaW5fY29uc3RydWN0aW9uLmZyZXNoIE5vbmUgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBIYXNoLml0ZXJcbiAgICAgICAgICAgIChmdW4gYSAoYXNzbywgYXNzbycpIGkgLT4gYXJyYXkuKGkpIDwtIFNvbWUgKGEsIGFzc28sIGFzc28nKSlcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGFycmF5XG5cbiAgICAgIGxldCBpbml0ICgpID1cbiAgICAgICAge1xuICAgICAgICAgIGluX2NvbnN0cnVjdGlvbiA9IHByZWluaXQgKCk7XG4gICAgICAgICAgc3RhYmlsaXplZCA9IEFycmF5Lm1ha2UgMCBOb25lO1xuICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBtZW1iZXIgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb25cblxuICAgICAgbGV0IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5ID1cbiAgICAgICAgaWYgZGljdGlvbmFyeS5pc19zdGFiaWxpemVkIHRoZW5cbiAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICAgIGlzX3N0YWJpbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhYmlsaXplZCA9IHByZXN0YWJpbGl6ZSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgIGxldCB0cmFuc2xhdGUgcGFyYW1ldGVycyBlcnJvciBrZXkgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0gc3RhYmlsaXplIGRpY3Rpb25hcnkgaW5cbiAgICAgICAgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkuc3RhYmlsaXplZFxuXG4gICAgICBsZXQgYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IHVuaXF1ZWx5IHBhcmFtZXRlcnMgZXJyb3IgY29tcGFyZVxuICAgICAgICAgICh2YWx1ZSA6IHZhbHVlKSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNoLmZpbmRfb3B0aW9uX3dpdGhvdXRfbG9nc1xuICAgICAgICAgICAgKCogaW5kZWVkLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgdGhhdCBlaXRoZXIgdGhlcmUgaXMgbm8gYXNzb2NpYXRpb24sIG9yIHRoYXQgdGhpcyBpcyB0aGUgc2FtZSBhc3NvY2lhdGlvbiAqKVxuICAgICAgICAgICAgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZnJlc2ggPSBpbl9jb25zdHJ1Y3Rpb24uZnJlc2ggaW5cbiAgICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICAgIEhhc2guYWRkIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgICAgIHsgZGljdGlvbmFyeSB3aXRoIGlzX3N0YWJpbGl6ZWQgPSBmYWxzZSB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRpY3Rpb25hcnlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgICAgZXJyb3IsICh0cnVlLCBTb21lIChmcmVzaCwgYXNzbywgYXNzb19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgKGksIChhc3NvJywgYXNzbydfaWQpKSB3aGVuIGFzc28nID09IGFzc28gLT5cbiAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBjb21wYXJlIGFzc28gYXNzbycgPSAwIC0+XG4gICAgICAgICAgaWYgdW5pcXVlbHkgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmdfYm9vbCBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAodGhlIGltYWdlIGlzIG5vdCB1bmlxdWVseSBkZXNjcmliZWQgaW4gXFxcbiAgICAgICAgICAgICAgIG1lbW9yeSlcIlxuICAgICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCAoZmFsc2UsIFNvbWUgKGksIGFzc28nLCBhc3NvJ19pZCwgZGljdGlvbmFyeSkpXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgXyAtPlxuICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICBcIndyb25nIGFzc29jaWF0aW9uIChzZXZlcmFsIGltYWdlcyBmb3IgdGhlIHNhbWUga2V5KVwiXG4gICAgICAgICAgICBBc3NvY2lhdGlvbl9pc19leGlzdGluZ193aXRoX3RoZV9zYW1lX3ZhbHVlX2luX2FfZGlmZmVyZW50X2xvY2F0aW9uX21lbW9yeVxuXG4gICAgICBsZXQgYWxsb2NhdGUgYWEgZSB4IHYgYSBkIGYgPVxuICAgICAgICBsZXQgYSwgKF8sIGMpID0gYWxsb2NhdGVfdW5pcXVlbHlfb3Jfbm90IGZhbHNlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5IGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB0cnVlIGFhIGUgeCB2IGEgZCBmIGluXG4gICAgICAgIGEsIGNcblxuICAgICAgbGV0IGFsbG9jYXRlX2Jvb2wgYWEgZSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlXG5cbiAgICAgIGxldCB1bnNhZmVfYWxsb2NhdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBhc3NvIGJ1aWxkIGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb24gaW5cbiAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgIGxldCBhc3NvX2lkID0gYnVpbGQgZnJlc2ggaW5cbiAgICAgICAgbGV0IGVycm9yLCBoYXNoX3RhYmxlID1cbiAgICAgICAgICBIYXNoLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVycyBlcnJvciB2YWx1ZSAoYXNzbywgYXNzb19pZCkgZnJlc2hcbiAgICAgICAgICAgIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYXNoID0geyBoYXNoX3RhYmxlOyBmcmVzaCA9IGZyZXNoICsgMSB9IGluXG4gICAgICAgIGxldCBkaWN0aW9uYXJ5ID0geyBkaWN0aW9uYXJ5IHdpdGggaW5fY29uc3RydWN0aW9uID0gaGFzaCB9IGluXG4gICAgICAgIGVycm9yLCAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpXG5cbiAgICAgIGxldCBpdGVyIHBhcmFtZXRlcnMgZXJyb3IgZiBkaWMgPVxuICAgICAgICBsZXQgZGljJyA9IHN0YWJpbGl6ZSBkaWMgaW5cbiAgICAgICAgbGV0IGcga2V5IGVycm9yID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgKHZhbHVlLCBhLCBiKSAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYlxuICAgICAgICBpblxuICAgICAgICAoKiBpZiBkaWMuaXNfc3RhYmlsaXplZFxuICAgICAgICAgICB0aGVuKilcbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSBnIGVycm9yIGRpYycuc3RhYmlsaXplZFxuICAgICAgKCplbHNlIEhhc2guZm9sZFxuICAgICAgICAoZnVuIHZhbHVlIChhLGIpIGtleSBlcnJvciAtPiBmIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGEgYilcbiAgICAgICAgZGljLmluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlIGVycm9yKilcblxuICAgICAgbGV0IGZvbGQgZiBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIEhhc2guZm9sZCBmIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG5cbiAgICAgIGxldCBsYXN0X2VudHJ5IF9wYXJhbWV0ZXJzIGVycm9yIGRpYyA9XG4gICAgICAgIGVycm9yLCBkaWMuaW5fY29uc3RydWN0aW9uLmZyZXNoIC0gMVxuICAgIGVuZCA6XG4gICAgICBEaWN0aW9uYXJ5IHdpdGggdHlwZSBrZXkgPSBpbnQgYW5kIHR5cGUgdmFsdWUgPSBIYXNoLmtleSlcblxubW9kdWxlIERpY3Rpb25hcnlfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IERpY3Rpb25hcnkgKEhhc2guSGFzaF9vZl9PcmQgKE8pKVxuIiwiKCoqXG4gICAqIHRpY2tfc3Rvcmllcy5tbFxuICAgKlxuICAgKiBQcm9ncmVzcyBiYXIgKGNvbWluZyBmcm9tIE1vZHMubWwpXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wNS8yMDE2XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxNy8wNS8yMDE2XG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgdGlja19zdG9yaWVzIGYgY29uZiBzYXZlX3Byb2dyZXNzX2JhciAoaW5pdCwgbGFzdCwgY291bnRlciwgbl9zdG9yaWVzKSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IGluaXQgdGhlbiAoXG4gICAgICBsZXQgYyA9IHJlZiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICAgICAgd2hpbGUgIWMgPiAwIGRvXG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBmIFwiX1wiO1xuICAgICAgICBjIDo9ICFjIC0gMVxuICAgICAgZG9uZTtcbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBmXG4gICAgKVxuICBpblxuICBsZXQgbiA9XG4gICAgaWYgbl9zdG9yaWVzIDw9IDAgJiYgY291bnRlciA9IDAgdGhlblxuICAgICAgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZVxuICAgIGVsc2UgaWYgY291bnRlciA+IG5fc3RvcmllcyB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmMgPSBjb3VudGVyICogY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSAvIG5fc3RvcmllcyBpblxuICAgICAgbGV0IG5sID0gbGFzdCAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIG5jIC0gbmxcbiAgICApXG4gIGluXG4gIGxldCByZWMgYXV4IG4gPVxuICAgIGlmIG4gPD0gMCB0aGVuXG4gICAgICAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGYgXCIlY1wiIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc0NoYXIgaW5cbiAgICAgIGF1eCAobiAtIDEpXG4gICAgKVxuICBpblxuICBsZXQgKCkgPSBhdXggbiBpblxuICBsZXQgKCkgPSBMb2dnZXJzLmZsdXNoX2xvZ2dlciBmIGluXG4gIGxldCAoKSA9IGlmIGNvdW50ZXIgPSBuX3N0b3JpZXMgdGhlbiBMb2dnZXJzLnByaW50X25ld2xpbmUgZiBpblxuICBsZXQgYmFyID0gdHJ1ZSwgY291bnRlciwgY291bnRlciArIDEsIG5fc3RvcmllcyBpblxuICBsZXQgKCkgPSBzYXZlX3Byb2dyZXNzX2JhciBiYXIgaW5cbiAgYmFyXG4iLCIoKipcbiAgICogZ3JhcGhfY2xvc3VyZS5tbFxuICAgKlxuICAgKiBBbGdvcml0aG1zIHRvIGNvbXB1dGUgdHJhbnNpdGl2ZSBjbG9zdXJlIG9mIG9iZXJ2YWJsZXMgaW4gdHJhY2VzXG4gICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgICpcbiAgICogS2FTaW1cbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICAqXG4gICAqIENyZWF0aW9uOiAxNy8wOC8yMDEzXG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiAxMC8wOS8yMDEzXG4gICAqICpcbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgQSA9IEFycmF5XG5tb2R1bGUgUyA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTSA9IE1vZHMuSW50TWFwXG5cbmxldCBpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGhvbiA9IHRydWVcbmxldCBjaGVja19tb2RlID0gZmFsc2VcblxudHlwZSBhbGdvX3R5cGUgPSBUb3BfZG93biB8IEJvdHRvbV91cCB8IENoZWNrXG50eXBlIG9yZGVyID0gSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudFxuXG50eXBlIGNvbmZpZyA9IHtcbiAgZG9fdGljazogYm9vbDtcbiAga2VlcF9hbGxfbm9kZXM6IGJvb2w7XG4gIGN1dF90cmFuc2l0aXZlX3BhdGg6IGJvb2w7XG4gIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBoczogYm9vbDtcbiAgbWF4X2luZGV4OiBpbnQ7XG4gIGFsZ286IGFsZ29fdHlwZTtcbn1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgPVxuICB7XG4gICAgZG9fdGljayA9IHRydWU7XG4gICAga2VlcF9hbGxfbm9kZXMgPSBmYWxzZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gdHJ1ZTtcbiAgICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgPSB0cnVlO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgICBhbGdvID0gQm90dG9tX3VwICgqaWYgY2hlY2tfbW9kZSB0aGVuIENoZWNrIGVsc2UgVG9wX2Rvd24qKTtcbiAgfVxuXG5sZXQgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhciA9XG4gIHsgY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG5cbmxldCBjb25maWdfc21hbGxfZ3JhcGggPVxuICB7XG4gICAgZG9fdGljayA9IGZhbHNlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gdHJ1ZTtcbiAgICBjdXRfdHJhbnNpdGl2ZV9wYXRoID0gZmFsc2U7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBhbGdvID0gQm90dG9tX3VwO1xuICAgIG1heF9pbmRleCA9IDMwMDtcbiAgfVxuXG5sZXQgc3dhcCBmIGEgYiA9IGYgYiBhXG5sZXQgaWdub3JlX2ZzdCBmIF8gPSBmXG5cbmxldCByZWMgY29tcGFyZV9zdWNjIHAgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICB8IGEgOjogcSAtPlxuICAgIChtYXRjaCBxIHdpdGhcbiAgICB8IGIgOjogXyB3aGVuIHAgYSBiIC0+IGNvbXBhcmVfc3VjYyBwIHFcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBzdHJpY3RseV9pbmNyZWFzaW5nID0gY29tcGFyZV9zdWNjIChmdW4gKGEgOiBpbnQpIGIgLT4gYSA8IGIpXG5sZXQgc3RyaWN0bHlfZGVjcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPiBiKVxubGV0IGNvbmNhdCBhID0gTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBhKVxuXG5sZXQgcHJpbnRfbGlzdCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKSBsXG5cbmxldCBjaGVjayBmb3JtIHAgZiBzdHJpbmcgYSBiID1cbiAgbWF0Y2ggcCBhLCBwIGIgd2l0aFxuICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBhIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMV8yXCIpXG4gIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYiBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcyXCIpXG4gIHwgZmFsc2UsIHRydWUgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9hcmcxXCIpXG4gIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgIGxldCByZXAgPSBmIGEgYiBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSByZXAgaW5cbiAgICBpZiBwIHJlcCB0aGVuXG4gICAgICByZXBcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2xpc3QgZm9ybSBhO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIGI7XG4gICAgICBwcmludF9saXN0IGZvcm0gcmVwO1xuICAgICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX291dHB1dFwiKVxuICAgIClcblxubGV0IGlzX3N0cmljdF9zdWJsaXN0IHAgYSBiID1cbiAgbGV0IHJlYyBhdXggYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBbXSwgXyA6OiBfIC0+IHRydWVcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gYXV4IHQgdCdcbiAgICB8IGggOjogXywgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBmYWxzZVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0J1xuICBpblxuICBhdXggYSBiXG5cbmxldCBpbnNlcnRfZWx0IHAgZSA9IExpc3RfdXRpbC5tZXJnZV91bmlxIHAgWyBlIF1cblxubGV0IGRpZmZfbGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiBhY2N1ID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IGIsIFtdIC0+IExpc3QucmV2IChMaXN0LnJldl9hcHBlbmQgYiBhY2N1KVxuICAgIHwgW10sIF8gOjogXyAtPiBMaXN0LnJldiBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnIGFjY3VcbiAgICB8IGggOjogdCwgaCcgOjogXyB3aGVuIHAgaCBoJyAtPiBhdXggdCBiIChoIDo6IGFjY3UpXG4gICAgfCBfLCBfIDo6IHQnIC0+IGF1eCBhIHQnIGFjY3VcbiAgaW5cbiAgYXV4IGEgYiBbXVxuXG5sZXQgY29tcGFyZV9ib29sIGEgYiA9IGNvbXBhcmUgYSBiIDwgMFxubGV0IGRpZmZfbGlzdF9kZWNyZWFzaW5nID0gZGlmZl9saXN0IChzd2FwIGNvbXBhcmVfYm9vbClcbmxldCBtZXJnZV9saXN0X2RlY3JlYXNpbmcgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSAoZnVuIHggeSAtPiBTdGRsaWIuY29tcGFyZSB5IHgpXG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnQgY29uZmlnXG4gICAgcHJlYyBpc19vYnMgZiBhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCAoKSA9XG4gICAgaWYgY29uZmlnLnN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyAmJiBjb25maWcubWF4X2luZGV4ID4gMzAwIHRoZW4gKFxuICAgICAgbGV0IG5fZWRnZXMgPSBNLmZvbGQgKGlnbm9yZV9mc3QgKFMuZm9sZCAoaWdub3JlX2ZzdCBzdWNjKSkpIHByZWMgMCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBlcnJfbG9nZ2VyIFwiXFx0XFx0VHJhbnNpdGl2ZSBjbG9zdXJlICglaSBub2RlcywgJWkgZWRnZXMpXCJcbiAgICAgICAgICBtYXhfaW5kZXggbl9lZGdlc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICAoKVxuICAgIClcbiAgaW5cbiAgbGV0IGRvX3RpY2ssIHRpY2ssIGNsb3NlX3RpY2sgPVxuICAgIGlmIG1heF9pbmRleCA+IDMwMCAmJiBjb25maWcuZG9fdGljayB0aGVuIChcbiAgICAgIGxldCB0aWNrID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBtYXhfaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGYgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICBsZXQgY2xvc2UgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgZiwgdGljaywgY2xvc2VcbiAgICApIGVsc2VcbiAgICAgIChmdW4geCAtPiB4KSwgKGZhbHNlLCAwLCAwLCAwKSwgZnVuICgpIC0+ICgpXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IGNsZWFuLCBfbWF4X3N1Y2MgPVxuICAgIGxldCBtYXhfc3VjYyA9IEEuaW5pdCAobWF4X2luZGV4ICsgMSkgKGZ1biBpIC0+IGkpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTS5pdGVyXG4gICAgICAgIChmdW4gc3VjYyAtPlxuICAgICAgICAgIFMuaXRlciAoZnVuIHByZWQgLT5cbiAgICAgICAgICAgICAgQS5zZXQgbWF4X3N1Y2MgcHJlZCAobWF4IHN1Y2MgKEEuZ2V0IG1heF9zdWNjIHByZWQpKSkpXG4gICAgICAgIHByZWNcbiAgICBpblxuICAgIGxldCBpc19sYXN0X3N1Y2Nfb2YgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gICAgbGV0IGFkZCBub2RlIG1heF9zdWNjID1cbiAgICAgIGxldCBvbGRfbCA9IEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBpblxuICAgICAgbGV0IGwnID0gbm9kZSA6OiBvbGRfbCBpblxuICAgICAgQS5zZXQgaXNfbGFzdF9zdWNjX29mIG1heF9zdWNjIGwnXG4gICAgaW5cbiAgICBsZXQgXyA9IEEuaXRlcmkgYWRkIG1heF9zdWNjIGluXG4gICAgbGV0IF8gPSBBLnNldCBpc19sYXN0X3N1Y2Nfb2YgMCBbXSBpblxuICAgIGxldCBnY193aGVuX3Zpc2l0IG5vZGUgPVxuICAgICAgTGlzdC5pdGVyIChmdW4gayAtPiBBLnNldCBzX3ByZWRfc3RhciBrIFtdKSAoQS5nZXQgaXNfbGFzdF9zdWNjX29mIG5vZGUpXG4gICAgaW5cbiAgICBnY193aGVuX3Zpc2l0LCBmdW4gaSAtPiBBLmdldCBtYXhfc3VjYyBpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IG91dHB1dCA9XG4gICAgTS5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAoZnVuIHN1Y2Mgc19wcmVkICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIsIGEpIC0+XG4gICAgICAgIGxldCByZWMgYXV4IChsIDogaW50IGxpc3QpIChhY2N1IDogaW50IGxpc3QpID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICB8IHByZWQgOjogdCAtPlxuICAgICAgICAgICAgbGV0IG5ld19sID0gQS5nZXQgc19wcmVkX3N0YXIgcHJlZCBpblxuICAgICAgICAgICAgbGV0IGRpZmYgPVxuICAgICAgICAgICAgICBpZiBjb25maWcuY3V0X3RyYW5zaXRpdmVfcGF0aCB0aGVuXG4gICAgICAgICAgICAgICAgZGlmZl9saXN0X2RlY3JlYXNpbmcgdCBuZXdfbFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBkaWZmIChtZXJnZV9saXN0X2RlY3JlYXNpbmcgKHByZWQgOjogbmV3X2wpIGFjY3UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVkX3N0YXIgPVxuICAgICAgICAgIGxldCBsX3ByZWQgPSBTLmZvbGQgKGZ1biBpIGogLT4gaSA6OiBqKSBzX3ByZWQgW10gaW5cbiAgICAgICAgICBsZXQgcyA9IEEuZ2V0IHNfcHJlZF9zdGFyIHN1Y2MgaW5cbiAgICAgICAgICBhdXggbF9wcmVkIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPSBBLnNldCBzX3ByZWRfc3RhciBzdWNjIHByZWRfc3RhciBpblxuICAgICAgICBsZXQgXyA9IGNsZWFuIHN1Y2MgaW5cbiAgICAgICAgbGV0IHRpY2sgPSBkb190aWNrIHRpY2sgaW5cbiAgICAgICAgaWYgaXNfb2JzIHN1Y2MgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICBmIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN1Y2MgcHJlZF9zdGFyIGFcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIGEgLT4gU3RvcC5zdWNjZXNzICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIGNvdW50ZXIgKyAxLCBhKSlcbiAgICAgICAgICAgIChmdW4gYiAtPiBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgICAgICAgICBhXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSlcbiAgICAgIHByZWNcbiAgICAgICh0aWNrLCBlcnJvciwgbG9nX2luZm8sIDEsIGEpXG4gIGluXG4gIGxldCBfID0gY2xvc2VfdGljayAoKSBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKF8sIGVycm9yLCBsb2dfaW5mbywgXywgYSkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN1Y2Nlc3MgKGVycm9yLCBsb2dfaW5mbywgYSkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBiKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgICAgICB8IFNvbWUgZSAtPlxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIGUgTm9uZSBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIFN0b3Auc3RvcCAoZXJyb3IsIGxvZ19pbmZvLCBiKSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgIGlzX29icyA9XG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBmIF9wIF9oIGMgZSBpIHMgYSA9XG4gICAgbGV0IF8gPSBBLnNldCBhIGkgcyBpblxuICAgIGUsIGMsIFN0b3Auc3VjY2VzcyBhXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIGNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIGNvbmZpZyBwcmVjIGlzX29icyBmIHNfcHJlZF9zdGFyXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBncmFwaCkgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGdyYXBoLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBfKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50KSlcbiAgICBvdXRwdXRcblxubGV0IGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgZGVsdGEgPVxuICBsZXQgZXJyX2xvZ2dlciA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgbGV0IGlzX29icyA9XG4gICAgaWYgY29uZmlnLmtlZXBfYWxsX25vZGVzIHRoZW5cbiAgICAgIGZ1biBfIC0+XG4gICAgdHJ1ZVxuICAgIGVsc2VcbiAgICAgIGlzX29ic1xuICBpblxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHByZWMgPSBNLmZvbGQgKGZ1biBpIHNfcHJlZCBsIC0+IChpLCBzX3ByZWQpIDo6IGwpIHByZWMgW10gaW5cbiAgbGV0IGNyZWF0ZV90YWludHMgaSA9XG4gICAgbGV0IHJlYyBhdXggZGVsdGEgb3V0cHV0ID1cbiAgICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICAgIG91dHB1dFxuICAgICAgZWxzZVxuICAgICAgICBhdXggKGRlbHRhIC0gMSkgKFMuZW1wdHkgOjogb3V0cHV0KVxuICAgIGluXG4gICAgYXV4IGRlbHRhIFsgUy5zaW5nbGV0b24gaSBdXG4gIGluXG4gIGxldCBzaGlmdF90YWludHMgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCB0IDo6IHQnIDo6IHEgLT4gUy51bmlvbiB0IHQnIDo6IHFcbiAgICB8IF8gLT4gbFxuICBpblxuICBsZXQgcmVjIG1lcmdlX3RhaW50cyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IF8sIFtdIC0+IGwxXG4gICAgfCBbXSwgXyAtPiBsMlxuICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPiBTLnVuaW9uIHQgdCcgOjogbWVyZ2VfdGFpbnRzIHEgcSdcbiAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgdGFpbnQgaSB0YWludHMgPVxuICAgIG1hdGNoIHRhaW50cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdCA6OiBfcSAtPlxuICAgICAgUy5pdGVyXG4gICAgICAgIChmdW4gdGFpbnQgLT4gQS5zZXQgc19wcmVkX3N0YXIgdGFpbnQgKGkgOjogQS5nZXQgc19wcmVkX3N0YXIgdGFpbnQpKVxuICAgICAgICB0XG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgdGFpbnRpbmcgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biB0aWNrIChpLCBzX3ByZWQpIC0+XG4gICAgICAgIGxldCBuZXdfdGFpbnQgPVxuICAgICAgICAgIGlmIGlzX29icyBpIHRoZW5cbiAgICAgICAgICAgIGNyZWF0ZV90YWludHMgaVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWludHMgPSBtZXJnZV90YWludHMgbmV3X3RhaW50IChBLmdldCB0YWludGluZyBpKSBpblxuICAgICAgICBsZXQgKCkgPSB0YWludCBpIHRhaW50cyBpblxuICAgICAgICBsZXQgc2hpZnRlZF90YWludHMgPSBzaGlmdF90YWludHMgdGFpbnRzIGluXG4gICAgICAgIGxldCB0YWludCB4ID1cbiAgICAgICAgICBBLnNldCB0YWludGluZyB4IChtZXJnZV90YWludHMgc2hpZnRlZF90YWludHMgKEEuZ2V0IHRhaW50aW5nIHgpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBTLml0ZXIgdGFpbnQgc19wcmVkIGluXG4gICAgICAgIGxldCAoKSA9IEEuc2V0IHRhaW50aW5nIGkgW10gaW5cbiAgICAgICAgZG9fdGljayB0aWNrKVxuICAgICAgdGljayBwcmVjXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoc19wcmVkX3N0YXIsIEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50KVxuXG5sZXQgZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAobSwgbW9kZSkgPVxuICBtYXRjaCBtb2RlIHdpdGhcbiAgfCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBtLihpKVxuICB8IERlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+XG4gICAgKG1hdGNoIG0uKGkpIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBsIC0+IExpc3QucmV2IChpIDo6IGwpKVxuXG5sZXQgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gICAgPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChhLCBhJykgPVxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuICBpblxuICBsZXQgdCcgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYiwgYicpID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHRcbiAgICAgIHsgY29uZmlnIHdpdGggZG9fdGljayA9IGZhbHNlIH1cbiAgICAgIHByZWMgaXNfb2JzXG4gIGluXG4gIGxldCB0JycgPSBTeXMudGltZSAoKSBpblxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIk5FVzogJWYgT0xEOiAlZiBcXG5cIiAodCcgLS4gdCkgKHQnJyAtLiB0JykgaW5cbiAgbGV0IF8gPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBfcyAtPlxuICAgICAgICBsZXQgcyA9IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKGEsIGEnKSBpblxuICAgICAgICBsZXQgcycgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChiLCBiJykgaW5cbiAgICAgICAgaWYgcyA9IHMnIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIkRJRkZFUiAlaVxcblwiIGkgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSwgXCIpIHMnIGluXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gICAgICBhXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKGEsIGEnKVxuXG5sZXQgY2xvc3VyZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzID1cbiAgbWF0Y2ggY29uZmlnLmFsZ28gd2l0aFxuICB8IENoZWNrIC0+XG4gICAgY2xvc3VyZV9jaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWMgaXNfb2JzXG4gIHwgQm90dG9tX3VwIC0+XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnNcbiAgfCBUb3BfZG93biAtPlxuICAgIGNsb3N1cmVfdG9wX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgICBpc19vYnMgMFxuXG5sZXQgcmVkdWN0aW9uX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWMgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkdyYXBoX3JlZHVjdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVjX3N0YXIsIF8pID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUgY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuICAgICAgcHJlY1xuICAgICAgKGZ1biBfIC0+IHRydWUpXG4gICAgICAyXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZFxuICAgICAgKGZ1biBlaWQgbmVpZ2ggb3V0IC0+XG4gICAgICAgIGxldCB0b19yZW1vdmUgPSBBLmdldCBwcmVjX3N0YXIgZWlkIGluXG4gICAgICAgIGxldCBzID0gUy5mb2xkIChmdW4gaSBsIC0+IGkgOjogbCkgbmVpZ2ggW10gaW5cbiAgICAgICAgbGV0IHMgPSBMaXN0LnJldiBzIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwxIGwyIG91dHB1dCA9XG4gICAgICAgICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgICB8IF8sIFtdIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHNldCBpIC0+IFMuYWRkIGkgc2V0KSBvdXRwdXQgbDFcbiAgICAgICAgICAgICgqIFRoaXMgaXMgcXVpdGUgYW5ub3lpbmcsIHdoeSBwcmVjIGlzIG5vdCBkZXNjcmliZWQgd2l0aCBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgICB8IFtdLCBfIC0+IG91dHB1dFxuICAgICAgICAgIHwgaCA6OiBxLCBoJyA6OiBxJyAtPlxuICAgICAgICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaCBoJyBpblxuICAgICAgICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIGwyIChTLmFkZCBoIG91dHB1dClcbiAgICAgICAgICAgIGVsc2UgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgICAgIGF1eCBxIHEnIG91dHB1dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGggOjogcSkgcScgb3V0cHV0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gYXV4IHMgdG9fcmVtb3ZlIFMuZW1wdHkgaW5cbiAgICAgICAgTS5hZGQgZWlkIHMgb3V0KVxuICAgICAgcHJlYyBwcmVjXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgcmVkdWN0aW9uID0gcmVkdWN0aW9uX3RvcF9kb3duXG4iLCJ0eXBlIHF1YXJrX2xpc3RzID0ge1xuICBzaXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgc2l0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfdGVzdGVkOiAoaW50ICogaW50KSBsaXN0O1xuICBpbnRlcm5hbF9zdGF0ZV9tb2RpZmllZDogKGludCAqIGludCkgbGlzdDtcbn1cblxudHlwZSBldmVudF9raW5kID0gT0JTIG9mIHN0cmluZyB8IEVWRU5UIG9mIFRyYWNlLmV2ZW50X2tpbmRcblxubGV0IGF0b21fdGVzdGVkID0gMVxubGV0IGF0b21fbW9kaWZpZWQgPSAyXG5sZXQgYXRvbV90ZXN0ZWRtb2RpZmllZCA9IDNcblxudHlwZSBhdG9tID0ge1xuICBjYXVzYWxfaW1wYWN0OiBpbnQ7ICgqKDEpIHRlc3RlZCAoMikgbW9kaWZpZWQsICgzKSB0ZXN0ZWQgKyBtb2RpZmllZCopXG4gIGVpZDogaW50OyAoKmV2ZW50IGlkZW50aWZpZXIqKVxuICBraW5kOiBldmVudF9raW5kOyAoKm9ic2VydmF0aW9uOiBzdHJpbmcgbGlzdCopXG59XG5cbnR5cGUgYXR0cmlidXRlID0gYXRvbSBsaXN0ICgqdmVydGljYWwgc2VxdWVuY2Ugb2YgYXRvbXMqKVxuXG50eXBlIGdyaWQgPSB7XG4gIGZsb3c6IChpbnQgKiBpbnQgKiBpbnQsIGF0dHJpYnV0ZSkgSGFzaHRibC50O1xuICAoKihuX2ksc19pLHFfaSkgLT4gYXR0X2kgd2l0aCBuX2k6IG5vZGVfaWQsIHNfaTogc2l0ZV9pZCwgcV9pOlxuICAgIGxpbmsgKDEpIG9yIGludGVybmFsIHN0YXRlICgwKSAqKVxuICBwaWRfdG9faW5pdDogKGludCAqIGludCAqIGludCwgaW50KSBIYXNodGJsLnQ7XG4gIG9iczogaW50IGxpc3Q7XG4gIGluaXRfdGJsOiAoaW50LCBNb2RzLkludFNldC50KSBIYXNodGJsLnQ7ICgqZGVjcmVhc2luZyopXG4gIGluaXRfdG9fZWlkbWF4OiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbn1cblxudHlwZSBjb25maWcgPSB7XG4gIGV2ZW50c19raW5kOiBldmVudF9raW5kIE1vZHMuSW50TWFwLnQ7XG4gIHByZWNfMTogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xuICBjb25mbGljdDogTW9kcy5JbnRTZXQudCBNb2RzLkludE1hcC50O1xufVxuXG50eXBlIGVucmljaGVkX2dyaWQgPSB7XG4gIGNvbmZpZzogY29uZmlnO1xuICBkZXB0aDogaW50O1xuICBwcmVjX3N0YXI6IGludCBsaXN0IGFycmF5ICogR3JhcGhfY2xvc3VyZS5vcmRlcjsgKCpkZWNyZWFzaW5nKilcbiAgZGVwdGhfb2ZfZXZlbnQ6IGludCBNb2RzLkludE1hcC50O1xuICBzaXplOiBpbnQ7XG59XG5cbnR5cGUgZm9ybWF0Q2Zsb3cgPSBEb3QgfCBIdG1sIHwgSnNvblxuXG5sZXQgZW1wdHlfY29uZmlnID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgY29uZmxpY3QgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICBwcmVjXzEgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgPSBmdW5jdGlvblxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgZVxuICB8IE9CUyBpIC0+XG4gICAgKG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJPQlMoJXMpXCIgaVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBpKVxuXG5sZXQgZGVidWdfcHJpbnRfY2F1c2FsIGYgaSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgIChpZiBpID0gYXRvbV90ZXN0ZWQgdGhlblxuICAgICAgIFwidGVzdGVkXCJcbiAgICAgZWxzZSBpZiBpID0gYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJtb2RpZmllZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkIHRoZW5cbiAgICAgICBcInRlc3RlZCZtb2RpZmllZFwiXG4gICAgIGVsc2VcbiAgICAgICBcIkNBVVNBTCBJTVBBQ1QgVU5ERUZJTkVEXCIpXG5cbmxldCBkZWJ1Z19wcmludF9hdG9tIGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJ7IyVpOiAlYSAlYX1cIiBhLmVpZCBkZWJ1Z19wcmludF9jYXVzYWwgYS5jYXVzYWxfaW1wYWN0XG4gICAgKHByaW50X2V2ZW50X2tpbmQgP2VudjpOb25lKVxuICAgIGEua2luZFxuXG5sZXQgZGVidWdfcHJpbnRfZ3JpZCBmIGcgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5GbG93OkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWkuJWklczpALCVhQF1ALFwiIG5vZGVfaWQgc2l0ZV9pZFxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgXCJ+XCJcbiAgICAgICAgICAgZWxzZSBpZiBxID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJVTkRFRklORURcIilcbiAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBkZWJ1Z19wcmludF9hdG9tKVxuICAgICAgICAgIGwpXG4gICAgICBnLmZsb3dcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBdQC5cIlxuXG5sZXQgZW1wdHlfZ3JpZCAoKSA9XG4gIHtcbiAgICBmbG93ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIHBpZF90b19pbml0ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIG9icyA9IFtdO1xuICAgIGluaXRfdGJsID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICAgIGluaXRfdG9fZWlkbWF4ID0gSGFzaHRibC5jcmVhdGUgIVBhcmFtZXRlci5kZWZhdWx0RXh0QXJyYXlTaXplO1xuICB9XG5cbmxldCBidWlsZF9zdWJzIGwgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChuLCBtYXApIGEgLT4gc3VjYyBuLCBNb2RzLkludE1hcC5hZGQgYSBuIG1hcClcbiAgICAgICAoMSwgTW9kcy5JbnRNYXAuZW1wdHkpIGwpXG5cbmxldCBzdWJtYXAgc3VicyBsIG0gZGVmYXVsdCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBtJyBhIC0+XG4gICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIHN1YnMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBTb21lIG5ld19hIC0+XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfYVxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhIG0gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgIHwgU29tZSBhIC0+IGEpKVxuICAgICAgICAgIG0nKVxuICAgIE1vZHMuSW50TWFwLmVtcHR5IGxcblxubGV0IGFkZF9pbml0X3BpZCBlaWQgcGlkIGdyaWQgPVxuICBsZXQgZWlkX2luaXQgPSBIYXNodGJsLmZpbmQgZ3JpZC5waWRfdG9faW5pdCBwaWQgaW5cbiAgbGV0IG9sZCA9XG4gICAgdHJ5IEhhc2h0YmwuZmluZCBncmlkLmluaXRfdGJsIGVpZCB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RibCBlaWQgKE1vZHMuSW50U2V0LmFkZCBlaWRfaW5pdCBvbGQpIGluXG4gIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBncmlkLmluaXRfdG9fZWlkbWF4IGVpZF9pbml0IGVpZCBpblxuICBncmlkXG5cbmxldCBfc3Vic2V0IHN1YnMgbCBzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIHMnIGEgLT5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBhIHMgdGhlblxuICAgICAgICBNb2RzLkludFNldC5hZGRcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICBzJ1xuICAgICAgZWxzZVxuICAgICAgICBzJylcbiAgICBNb2RzLkludFNldC5lbXB0eSBsXG5cbmxldCBzdWJjb25maWdfd2l0aF9zdWJzIHN1YnMgY29uZmlnIGwgPVxuICB7XG4gICAgZXZlbnRzX2tpbmQgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5ldmVudHNfa2luZCBOb25lO1xuICAgIHByZWNfMSA9IHN1Ym1hcCBzdWJzIGwgY29uZmlnLnByZWNfMSAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gICAgY29uZmxpY3QgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5jb25mbGljdCAoU29tZSBNb2RzLkludFNldC5lbXB0eSk7XG4gIH1cblxubGV0IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIHN1YnMgZ3JpZCBsID1cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gc3VibWFwIHN1YnMgbCBncmlkLmRlcHRoX29mX2V2ZW50IChTb21lIDApIGluXG4gIGxldCBkZXB0aCA9IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIC0+IG1heCkgZGVwdGhfb2ZfZXZlbnQgMCBpblxuICB7XG4gICAgcHJlY19zdGFyID0gZ3JpZC5wcmVjX3N0YXI7XG4gICAgY29uZmlnID0gc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGdyaWQuY29uZmlnIGw7XG4gICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgZGVwdGg7XG4gICAgc2l6ZSA9IExpc3QubGVuZ3RoIGw7XG4gIH1cblxubGV0IF9zdWJjb25maWcgY29uZmlnIGwgPSBzdWJjb25maWdfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGNvbmZpZyBsXG5sZXQgX3N1YmVucmljaGVkX2dyaWQgZ3JpZCBsID0gc3ViZW5yaWNoZWRfZ3JpZF93aXRoX3N1YnMgKGJ1aWxkX3N1YnMgbCkgZ3JpZCBsXG5sZXQgYWRkX29ic19laWQgZWlkIGdyaWQgPSB7IGdyaWQgd2l0aCBvYnMgPSBlaWQgOjogZ3JpZC5vYnMgfVxuXG5sZXQgZ3JpZF9maW5kIChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaykgZ3JpZCA9XG4gIEhhc2h0YmwuZmluZCBncmlkLmZsb3cgKG5vZGVfaWQsIHNpdGVfaWQsIHF1YXJrKVxuXG5sZXQgX2lzX2VtcHR5X2dyaWQgZ3JpZCA9IEhhc2h0YmwubGVuZ3RoIGdyaWQuZmxvdyA9IDBcblxubGV0IGdyaWRfYWRkIHF1YXJrIGVpZCAoYXR0cmlidXRlIDogYXR0cmlidXRlKSBncmlkID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKEhhc2h0YmwubWVtIGdyaWQuZmxvdyBxdWFyaykgdGhlblxuICAgICAgSGFzaHRibC5hZGQgZ3JpZC5waWRfdG9faW5pdCBxdWFyayBlaWRcbiAgaW5cbiAgSGFzaHRibC5yZXBsYWNlIGdyaWQuZmxvdyBxdWFyayBhdHRyaWJ1dGU7XG4gIGdyaWRcblxubGV0IF9sYXN0X2V2ZW50IGF0dHJpYnV0ZSA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGEgOjogXyAtPiBTb21lIGEuZWlkXG5cbigqYWRkcyBhdG9tIGEgdG8gYXR0cmlidXRlIGF0dC5cbiAgQ29sbGFwc2VzIGxhc3QgYXRvbSBpZiBpZiBiZWFycyB0aGUgc2FtZSBpZCBhcyBhIC0taW4gdGhlIGNhc2Ugb2YgYSBub24gYXRvbWljIGFjdGlvbiopXG5sZXQgcHVzaCAoYSA6IGF0b20pIChhdHQgOiBhdG9tIGxpc3QpID1cbiAgbWF0Y2ggYXR0IHdpdGhcbiAgfCBbXSAtPiBbIGEgXVxuICB8IGEnIDo6IGF0dCcgLT5cbiAgICBpZiBhJy5laWQgPSBhLmVpZCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGFzc2VydCAoYScua2luZCA9IGEua2luZCkgaW5cbiAgICAgIHsgYScgd2l0aCBjYXVzYWxfaW1wYWN0ID0gYS5jYXVzYWxfaW1wYWN0IGxvciBhJy5jYXVzYWxfaW1wYWN0IH0gOjogYXR0J1xuICAgICkgZWxzZVxuICAgICAgYSA6OiBhdHRcblxuKCoqc2lkZV9lZmZlY3QgSW50MlNldC50OiBwYWlycyAoYWdlbnRzLHBvcnRzKSB0aGF0IGhhdmUgYmVlbiBmcmVlZCBhcyBhIHNpZGUgZWZmZWN0IC0tdmlhIGEgREVMIG9yIGEgRlJFRSBhY3Rpb24qKVxuKCpOQiBubyBpbnRlcm5hbCBzdGF0ZSBtb2RpZiBhcyBzaWRlIGVmZmVjdCopXG5cbigqbGV0IGltcGFjdCBpc19saW5rIGMgPVxuICBpZiBpc19saW5rIHRoZW5cbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19saW5rX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua190ZXN0ZWQgYyB0aGVuIGF0b21fdGVzdGVkbW9kaWZpZWQgZWxzZSBhdG9tX21vZGlmaWVkXG4gICAgZWxzZSBhdG9tX3Rlc3RlZFxuICBlbHNlICgqaW50ZXJuYWwgc3RhdGUqKVxuICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX21vZGlmIGMgdGhlblxuICAgICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfaW50ZXJuYWxfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiopXG5sZXQgYWRkICgobm9kZV9pZCwgXyksIHNpdGVfaWQpIGlzX2xpbmsgdmEgZ3JpZCBldmVudF9udW1iZXIga2luZCA9XG4gIGxldCBxID1cbiAgICBpZiBpc19saW5rIHRoZW5cbiAgICAgIGF0b21fdGVzdGVkXG4gICAgZWxzZVxuICAgICAgMFxuICBpblxuICBsZXQgYXR0ID0gdHJ5IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZCB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICBsZXQgYXR0ID1cbiAgICBwdXNoXG4gICAgICB7IGNhdXNhbF9pbXBhY3QgPSB2YTsgZWlkID0gZXZlbnRfbnVtYmVyOyBraW5kICgqOyBvYnNlcnZhdGlvbiA9IG9icyopIH1cbiAgICAgIGF0dFxuICBpblxuICBsZXQgZ3JpZCA9IGdyaWRfYWRkIChub2RlX2lkLCBzaXRlX2lkLCBxKSBldmVudF9udW1iZXIgYXR0IGdyaWQgaW5cbiAgYWRkX2luaXRfcGlkIGV2ZW50X251bWJlciAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZ3JpZFxuXG5sZXQgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgYWN0aW9ucyA9XG4gIGxldCByZWMgYXV4IGdyaWQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZ3JpZFxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUgZmFsc2UgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgOjogcSAtPlxuICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpIHFcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIF8pIDo6IHEgLT5cbiAgICAgIGF1eCAoYWRkIHNpdGUxIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgc2l0ZSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCAoIEluc3RhbnRpYXRpb24uQ3JlYXRlICgoKF8sIG5hKSBhcyBhZyksIF8pXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlICgoXywgbmEpIGFzIGFnKSApXG4gICAgICA6OiBxIC0+XG4gICAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgICBsZXQgYWdfaW50ZiA9IFNpZ25hdHVyZS5nZXQgc2lncyBuYSBpblxuICAgICAgbGV0IGdyaWQgPSBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgaW5cbiAgICAgIGxldCBncmlkID1cbiAgICAgICAgU2lnbmF0dXJlLmZvbGRcbiAgICAgICAgICAoZnVuIHNpdGUgXyBncmlkIC0+XG4gICAgICAgICAgICBsZXQgZ3JpZCcgPVxuICAgICAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBuYSBzaXRlIHNpZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZ3JpZFxuICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFkZCAoYWcsIHNpdGUpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkJyBldmVudF9udW1iZXIga2luZClcbiAgICAgICAgICBncmlkIGFnX2ludGZcbiAgICAgIGluXG4gICAgICBhdXggZ3JpZCBxXG4gIGluXG4gIGF1eCBncmlkIGFjdGlvbnNcblxubGV0IGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciBraW5kIHRlc3RzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBncmlkIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWcgLT5cbiAgICAgICAgIGFkZCAoYWcsIC0xKSB0cnVlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgZmFsc2UgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgYWRkIHNpdGUgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICBsZXQgZ3JpZCcgPSBhZGQgc2l0ZTIgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICAgICBhZGQgc2l0ZTEgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkJyBldmVudF9udW1iZXIga2luZCkpXG4gICAgZ3JpZCB0ZXN0c1xuXG5sZXQgcmVjb3JkIChraW5kLCBldmVudCwgXykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkgZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKVxuICAgICAgWyBldmVudC5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyBdXG4gIGluXG4gIGxldCBncmlkID1cbiAgICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+XG4gICAgICBhZGRcbiAgICAgICAgKGZzdCBzaXRlLCAtMSlcbiAgICAgICAgdHJ1ZSBhdG9tX3Rlc3RlZFxuICAgICAgICAoYWRkIHNpdGUgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICAgICAgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSlcbiAgICBncmlkIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuXG5sZXQgcmVjb3JkX29icyAoa2luZCwgdGVzdHMsIF8pIHNpZGVfZWZmZWN0cyBldmVudF9udW1iZXIgZ3JpZCA9XG4gIGxldCBncmlkID0gYWRkX29ic19laWQgZXZlbnRfbnVtYmVyIGdyaWQgaW5cbiAgbGV0IGdyaWQgPSBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSB0ZXN0cyBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gZ3JpZCBzaXRlIC0+IGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoT0JTIGtpbmQpKVxuICAgIGdyaWQgc2lkZV9lZmZlY3RzXG5cbmxldCByZWNvcmRfaW5pdCAobGJsLCBhY3Rpb25zKSBldmVudF9udW1iZXIgZW52IGdyaWQgPVxuICBhZGRfYWN0aW9ucyBlbnYgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIChUcmFjZS5JTklUIGxibCkpIGFjdGlvbnNcblxubGV0IGFkZF9wcmVkIGVpZCBhdG9tIGNvbmZpZyA9XG4gIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gIGxldCBwcmVkX3NldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBlaWQgY29uZmlnLnByZWNfMSBpblxuICBsZXQgcHJlY18xID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgcHJlZF9zZXQpIGNvbmZpZy5wcmVjXzFcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBwcmVjXzE7IGV2ZW50c19raW5kIH1cblxubGV0IGFkZF9jb25mbGljdCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgY2ZsY3Rfc2V0ID1cbiAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5jb25mbGljdFxuICBpblxuICBsZXQgY2ZsY3QgPVxuICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgKE1vZHMuSW50U2V0LmFkZCBhdG9tLmVpZCBjZmxjdF9zZXQpIGNvbmZpZy5jb25mbGljdFxuICBpblxuICB7IGNvbmZpZyB3aXRoIGNvbmZsaWN0ID0gY2ZsY3Q7IGV2ZW50c19raW5kIH1cblxubGV0IHJlYyBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiBsYXN0X3Rlc3RlZCBhdHRyaWJ1dGUgY29uZmlnID1cbiAgbWF0Y2ggYXR0cmlidXRlIHdpdGhcbiAgfCBbXSAtPiBjb25maWdcbiAgfCBhdG9tIDo6IGF0dCAtPlxuICAgIGxldCBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY29uZmlnLmV2ZW50c19raW5kIGluXG4gICAgbGV0IHByZWNfMSA9XG4gICAgICBsZXQgcHJlZHMgPVxuICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgYXRvbS5laWQgY29uZmlnLnByZWNfMVxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBwcmVkcyBjb25maWcucHJlY18xXG4gICAgaW5cbiAgICBsZXQgY29uZmlnID0geyBjb25maWcgd2l0aCBldmVudHNfa2luZDsgcHJlY18xIH0gaW5cbiAgICAoKmF0b20gaGFzIGEgbW9kaWZpY2F0aW9uKilcbiAgICBpZlxuICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV9tb2RpZmllZFxuICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBjb25maWcgcHJlZF9pZCAtPiBhZGRfcHJlZCBwcmVkX2lkIGF0b20gY29uZmlnKVxuICAgICAgICAgIGNvbmZpZyBsYXN0X3Rlc3RlZFxuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICBpZlxuICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkXG4gICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWQgbG9yIGF0b21fbW9kaWZpZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgW11cbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgKFNvbWUgYXRvbS5laWQpIHRlc3RlZCBhdHQgY29uZmlnXG4gICAgKSBlbHNlIChcbiAgICAgICgqIGF0b20gaXMgYSBwdXJlIHRlc3QqKVxuICAgICAgbGV0IGNvbmZpZyA9XG4gICAgICAgIG1hdGNoIGxhc3RfbW9kaWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY29uZmlnXG4gICAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgICBhZGRfY29uZmxpY3QgZWlkIGF0b21cbiAgICAgICAgICAgIGNvbmZpZyAoKmFkZGluZyBjb25mbGljdCB3aXRoIGxhc3QgbW9kaWZpY2F0aW9uKilcbiAgICAgIGluXG4gICAgICBwYXJzZV9hdHRyaWJ1dGUgbGFzdF9tb2RpZiAoYXRvbS5laWQgOjogbGFzdF90ZXN0ZWQpIGF0dCBjb25maWdcbiAgICApXG5cbmxldCBjdXQgPyh3aXRoX3JlZHVjdGlvbiA9IHRydWUpIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGF0dHJpYnV0ZV9pZHNcbiAgICBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IHJlYyBidWlsZF9jb25maWcgYXR0cmlidXRlX2lkcyBjZmcgPVxuICAgIG1hdGNoIGF0dHJpYnV0ZV9pZHMgd2l0aFxuICAgIHwgW10gLT4gY2ZnXG4gICAgfCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgOjogdGwgLT5cbiAgICAgIGxldCBhdHRyaWJ1dGUgPVxuICAgICAgICB0cnkgZ3JpZF9maW5kIChub2RlX2ksIHNpdGVfaSwgdHlwZV9pKSBncmlkXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLmN1dFwiXG4gICAgICBpblxuICAgICAgbGV0IGNmZyA9XG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gICAgICAgIHwgW10gLT4gY2ZnXG4gICAgICAgIHwgYXRvbSA6OiBhdHQgLT5cbiAgICAgICAgICBsZXQgZXZlbnRzX2tpbmQgPVxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjZmcuZXZlbnRzX2tpbmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVjXzEgPVxuICAgICAgICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNmZy5wcmVjXzFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY2ZnLnByZWNfMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RlZCA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgICAgICB8fCBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFsgYXRvbS5laWQgXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vZGlmID1cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTb21lIGF0b20uZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIHBhcnNlX2F0dHJpYnV0ZSBtb2RpZiB0ZXN0ZWQgYXR0IHsgY2ZnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG4gICAgICBpblxuICAgICAgYnVpbGRfY29uZmlnIHRsIGNmZ1xuICBpblxuICBsZXQgY2ZnID0gYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgZW1wdHlfY29uZmlnIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5CdWlsZF9jb25maWd1cmF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVkdWN0aW9uID1cbiAgICBpZiB3aXRoX3JlZHVjdGlvbiB0aGVuXG4gICAgICBHcmFwaF9jbG9zdXJlLnJlZHVjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjZmcucHJlY18xXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjZmcucHJlY18xXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgeyBjZmcgd2l0aCBwcmVjXzEgPSByZWR1Y3Rpb24gfVxuXG5sZXQgcHBfYXRvbSBmIGF0b20gPVxuICBsZXQgaW1wX3N0ciA9XG4gICAgbWF0Y2ggYXRvbS5jYXVzYWxfaW1wYWN0IHdpdGhcbiAgICB8IDEgLT4gXCJvXCJcbiAgICB8IDIgLT4gXCJ4XCJcbiAgICB8IDMgLT4gXCIlXCJcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJDYXVzYWwuc3RyaW5nX29mX2F0b21cIlxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXNfJWRcIiBpbXBfc3RyIGF0b20uZWlkXG5cbmxldCBfZHVtcCBncmlkIGZpYyA9XG4gIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCAoRmlsZW5hbWUuY2hvcF9leHRlbnNpb24gZmljIF4gXCIudHh0XCIpIGluXG4gIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBkIDAgaW5cbiAgSGFzaHRibC5mb2xkXG4gICAgKGZ1biAobl9pZCwgc19pZCwgcSkgYXR0IF8gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGQgXCIjJWkuJWklYzolYUAsXCIgbl9pZCBzX2lkXG4gICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICd+J1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICAnIScpXG4gICAgICAgIChQcC5saXN0IFBwLmVtcHR5IHBwX2F0b20pIGF0dClcbiAgICBncmlkLmZsb3cgKCk7XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGQgXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGRfY2hhblxuXG5sZXQgaWRzX29mX2dyaWQgZ3JpZCA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuZmxvdyBbXVxubGV0IGNvbmZpZ19vZl9ncmlkID0gY3V0XG5cbigqbGV0IHByZWNfc3Rhcl9vZl9jb25maWdfb2xkICBjb25maWcgPVxuICBsZXQgcmVjIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbyBhbHJlYWR5X2RvbmUgY2xvc3VyZSA9XG4gICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgdG9kbyB0aGVuIGNsb3N1cmVcbiAgICBlbHNlXG4gICAgICBsZXQgZWlkID0gTW9kcy5JbnRTZXQuY2hvb3NlIHRvZG8gaW5cbiAgICAgIGxldCB0b2RvJyA9IE1vZHMuSW50U2V0LnJlbW92ZSBlaWQgdG9kbyBpblxuICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGVpZCBhbHJlYWR5X2RvbmVcbiAgICAgIHRoZW5cbiAgICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyB0b2RvJyBhbHJlYWR5X2RvbmUgY2xvc3VyZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcHJlYyA9IHRyeSBJbnRNYXAuZmluZCBlaWQgY29uZmlnLnByZWNfMSB3aXRoIE5vdF9mb3VuZCAtPiBNb2RzLkludFNldC5lbXB0eVxuICAgICAgICBpblxuICAgICAgcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnVuaW9uIHRvZG8nIHByZWMpIChJbnRTZXQuYWRkIGVpZCBhbHJlYWR5X2RvbmUpIChJbnRTZXQudW5pb24gcHJlYyBjbG9zdXJlKVxuICBpblxuICBJbnRNYXAuZm9sZFxuICAgIChmdW4gZWlkIGtpbmQgcHJlY19zdGFyIC0+XG4gICAgICBsZXQgc2V0ID0gcHJlY19jbG9zdXJlIGNvbmZpZyAoSW50U2V0LnNpbmdsZXRvbiBlaWQpIE1vZHMuSW50U2V0LmVtcHR5IE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgSW50TWFwLmFkZCBlaWQgc2V0IHByZWNfc3RhclxuICAgICkgY29uZmlnLmV2ZW50cyBJbnRNYXAuZW1wdHkgKilcblxubGV0IHByZWNfc3Rhcl9vZl9jb25maWcgPSBHcmFwaF9jbG9zdXJlLmNsb3N1cmVcblxubGV0IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyA9XG4gIE1vZHMuSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBwcmVjX2VpZHMgKGVtYXAsIF8pIC0+XG4gICAgICBsZXQgZCA9XG4gICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAoZnVuIGVpZCcgZCAtPlxuICAgICAgICAgICAgbGV0IGQnID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IDAgZWlkJyBlbWFwIGluXG4gICAgICAgICAgICBtYXggKGQnICsgMSkgZClcbiAgICAgICAgICBwcmVjX2VpZHMgMFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBlaWQgZCBlbWFwLCBkKVxuICAgIGNvbmZpZy5wcmVjXzEgKE1vZHMuSW50TWFwLmVtcHR5LCAwKVxuXG5sZXQgZW5yaWNoX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY29uZmlnX2Nsb3N1cmUgZ3JpZCA9XG4gIGxldCBrZWVwX2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYSBiIC0+IE1vZHMuSW50U2V0LmFkZCBiIGEpIE1vZHMuSW50U2V0LmVtcHR5IGdyaWQub2JzXG4gIGluXG4gIGxldCB0b19rZWVwIGkgPSBNb2RzLkludFNldC5tZW0gaSBrZWVwX2wgaW5cbiAgbGV0IGlkcyA9IGlkc19vZl9ncmlkIGdyaWQgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBjb25maWdfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVjX3N0YXIgPVxuICAgIHByZWNfc3Rhcl9vZl9jb25maWcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLlRyYW5zaXRpdmVfY2xvc3VyZSkgY29uZmlnX2Nsb3N1cmUgY29uZmlnLnByZWNfMVxuICAgICAgdG9fa2VlcFxuICBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQsIGRlcHRoID0gZGVwdGhfYW5kX3NpemVfb2ZfZXZlbnQgY29uZmlnIGluXG4gICggZXJyb3IsXG4gICAgbG9nX2luZm8sXG4gICAge1xuICAgICAgY29uZmlnO1xuICAgICAgcHJlY19zdGFyO1xuICAgICAgZGVwdGg7XG4gICAgICBkZXB0aF9vZl9ldmVudDtcbiAgICAgIHNpemUgPSBNb2RzLkludE1hcC5zaXplIGNvbmZpZy5wcmVjXzE7XG4gICAgfSApXG5cbmxldCBmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlXG4gICAgZ3JpZCBmIGEgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgfndpdGhfcmVkdWN0aW9uOmZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkc1xuICAgICAgZ3JpZFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIEdyYXBoX2Nsb3N1cmUuY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgKFNvbWUgU3RvcnlQcm9maWxpbmcuQ29sbGVjdF90cmFjZXMpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzEgdG9fa2VlcCBmXG4gICAgYVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IE9CUyBuYW1lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIltsYWJlbD1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdXCIgbmFtZVxuICB8IEVWRU5UIGUgLT4gVHJhY2UucHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgZVxuXG5sZXQgZG90X29mX2dyaWQgcHJvZmlsaW5nIGVudiBlbnJpY2hlZF9ncmlkIGZvcm0gPVxuICBsZXQgdCA9IFN5cy50aW1lICgpIGluXG4gIGxldCBjb25maWcgPSBlbnJpY2hlZF9ncmlkLmNvbmZpZyBpblxuICBsZXQgcHJlY19zdGFyID0gZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50ID0gZW5yaWNoZWRfZ3JpZC5kZXB0aF9vZl9ldmVudCBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiV0QCxkaWdyYXBoIEd7QCwgcmFua3NlcD0uNSA7QCxcIiBwcm9maWxpbmc7XG4gIE1vZHMuSW50TWFwLml0ZXJcbiAgICAoZnVuIGQgZWlkc19hdF9kIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8aHY+eyByYW5rID0gc2FtZSA7IFxcXCIlZFxcXCIgW3NoYXBlPXBsYWludGV4dF0gO0AsXCIgZDtcbiAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgKGZ1biBlaWQgLT5cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgICAgICAgaWYgZWlkIDw+IDAgdGhlblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAlYSA7QCxcIiBlaWRcbiAgICAgICAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52KVxuICAgICAgICAgICAgICAgIGF0b21fa2luZFxuICAgICAgICAgICgqIExpc3QuaXRlciAoZnVuIG9icyAtPiBmcHJpbnRmIGRlc2MgXCJvYnNfJWQgW2xhYmVsID1cXFwiJXNcXFwiLCBzdHlsZT1maWxsZWQsIGZpbGxjb2xvcj1yZWRdIDtcXG4gbm9kZV8lZCAtPiBvYnNfJWQgW2Fycm93aGVhZD12ZWVdO1xcblwiIGVpZCBvYnMgZWlkIGVpZCkgYXRvbS5vYnNlcnZhdGlvbiA7KikpXG4gICAgICAgIGVpZHNfYXRfZDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QF1ALFwiKVxuICAgIHNvcnRlZF9ldmVudHM7XG4gIGxldCBjcHQgPSByZWYgMCBpblxuICB3aGlsZSAhY3B0ICsgMSA8IE1vZHMuSW50TWFwLnNpemUgc29ydGVkX2V2ZW50cyBkb1xuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWRcXFwiIC0+IFxcXCIlZFxcXCIgW3N0eWxlPVxcXCJpbnZpc1xcXCJdO0AsXCIgIWNwdCAoIWNwdCArIDEpO1xuICAgIGNwdCA6PSAhY3B0ICsgMVxuICBkb25lO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgcHJlZF9zZXQgLT5cbiAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuaXRlclxuICAgICAgICAgIChmdW4gZWlkJyAtPlxuICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwibm9kZV8lZCAtPiBub2RlXyVkQCxcIiBlaWQnIGVpZClcbiAgICAgICAgICBwcmVkX3NldClcbiAgICBjb25maWcucHJlY18xO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgKGZzdCBwcmVjX3N0YXIpLihlaWQpIHdpdGggXyAtPiBbXSBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZF9pbnZcbiAgICAgICAgICAgIChmdW4gZWlkJyBwcmVjIC0+XG4gICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBoID0gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtXG4gICAgICAgICAgICAgICAgICAgIFwibm9kZV8lZCAtPiBub2RlXyVkIFtzdHlsZT1kb3R0ZWQsIGFycm93aGVhZCA9IHRlZV1AIFwiIGVpZFxuICAgICAgICAgICAgICAgICAgICBlaWQnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHByZWMpXG4gICAgICAgICAgICBjZmxjdF9zZXQgcHJlY1xuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKSlcbiAgICBjb25maWcuY29uZmxpY3Q7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJ9QCxcIjtcbiAgRm9ybWF0LmZwcmludGYgZm9ybSBcIi8qQCwgRG90IGdlbmVyYXRpb24gdGltZTogJWZALCovQF1ALlwiIChTeXMudGltZSAoKSAtLiB0KVxuXG5sZXQganNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCBmID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIENyZWF0ZSBhIG5ldyBkaXJlY3RlZCBncmFwaEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIGcgPSBuZXcgZGFncmVEMy5ncmFwaGxpYi5HcmFwaCgpLnNldEdyYXBoKHt9KTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID1cbiAgICBQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAoZnVuIGYgKGVpZCwgYXRvbV9raW5kKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJnLnNldE5vZGUoJWksIHsgbGFiZWw6IFxcXCIlYVxcXCIsIHN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIH0pO1wiIGVpZFxuICAgICAgICAgIChwcmludF9ldmVudF9raW5kIH5lbnYpIGF0b21fa2luZFxuICAgICAgICAgIChtYXRjaCBhdG9tX2tpbmQgd2l0aFxuICAgICAgICAgIHwgT0JTIF8gLT4gXCIjZjc3XCJcbiAgICAgICAgICB8IEVWRU5UIChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIC0+IFwiIzdmN1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuUlVMRSBfKSAtPiBcIiM3N2ZcIikpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLmV2ZW50c19raW5kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLmVtcHR5XG4gICAgICAoZnVuIGYgKGVpZCwgc2V0KSAtPlxuICAgICAgICBQcC5zZXQgTW9kcy5JbnRTZXQuZWxlbWVudHMgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlXG4gICAgICAgICAgKGZ1biBmIGVpZCcgLT4gRm9ybWF0LmZwcmludGYgZiBcImcuc2V0RWRnZSglaSwlaSx7fSk7XCIgZWlkJyBlaWQpXG4gICAgICAgICAgZiBzZXQpXG4gICAgICBmIGVucmljaGVkX2dyaWQuY29uZmlnLnByZWNfMVxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gU2V0IHVwIHpvb20gc3VwcG9ydEAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJpbm5lci5hdHRyKFxcXCJ0cmFuc2Zvcm1cXFwiLCBcXFwidHJhbnNsYXRlKFxcXCIgKyBkMy5ldmVudC50cmFuc2xhdGUgKyBcXFwiKVxcXCIgK0AsXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJzY2FsZShcXFwiICsgZDMuZXZlbnQuc2NhbGUgKyBcXFwiKVxcXCIpO0AsfSk7QCxzdmcuY2FsbCh6b29tKTtcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gQ3JlYXRlIHRoZSByZW5kZXJlckAsIHZhciByZW5kZXIgPSBuZXcgZGFncmVEMy5yZW5kZXIoKTtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInJlbmRlcihpbm5lciwgZyk7QCxcIiBpblxuXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDZW50ZXIgdGhlIGdyYXBoQCx2YXIgaW5pdGlhbFNjYWxlID0gMC43NTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIDIsIFxcXG4gICAgICAgMjBdKUAsXCJcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuXG5sZXQgaHRtbF9vZl9ncmlkIHByb2ZpbGluZyBjb21wcmVzc2lvbl90eXBlIGNwdCBlbnYgZW5yaWNoZWRfZ3JpZCA9XG4gIGxldCB0aXRsZSBmID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMgY29tcHJlc3NlZCBzdG9yeSBudW1iZXIgJWlcIiBjb21wcmVzc2lvbl90eXBlIGNwdFxuICBpblxuICBQcF9odG1sLmdyYXBoX3BhZ2UgdGl0bGVcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52My5taW4uanNcIjtcbiAgICAgIFwiaHR0cDovL2NwZXR0aXR0LmdpdGh1Yi5pby9wcm9qZWN0L2RhZ3JlLWQzL2xhdGVzdC9kYWdyZS1kMy5taW4uanNcIjtcbiAgICBdXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzdHlsZT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZHQge2Zsb2F0OiBsZWZ0OyBjbGVhcjogbGVmdDsgd2lkdGg6IDIwZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGQge2ZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW46IDAgMCAwIDIxZW07fUAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLm5vZGUgcmVjdCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjZmZmO31ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCIuZWRnZVBhdGggcGF0aCB7c3Ryb2tlOiAjMzMzOyBmaWxsOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O31cIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zdHlsZT5cIilcbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3ZnIHdpZHRoPVxcXCI5NjBcXFwiPjxnPjwvZz48L3N2Zz5ALFwiIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHA+QFsldEBdPC9wPkAsXCIgcHJvZmlsaW5nIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwldEBdQCw8L3NjcmlwdD5cIlxuICAgICAgICAoanNfb2ZfZ3JpZCBlbnYgZW5yaWNoZWRfZ3JpZCkpXG5cbmxldCBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuIChzaXRlLCBpbnRlcm5hbCkgLT5cbiAgICAgIG1hdGNoIGludGVybmFsIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAwKSkgcXVhcmtzXG4gICAgICAgICYmIExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzXG4gICAgICB8IE5vbmUgLT4gTGlzdC5tZW0gKGF0b21fbW9kaWZpZWQsIChhaWQsIHNpdGUsIDEpKSBxdWFya3MpXG4gICAgc2l0ZXNcblxubGV0IGNoZWNrX21vZGlmaWVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja190ZXN0ZWRfcXVhcmtzICgoYWlkLCBfKSwgc2l0ZSkgbW9kaWYgcXVhcmtzID1cbiAgTGlzdC5leGlzdHNcbiAgICAoZnVuIChjLCAobiwgcywgbSkpIC0+XG4gICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKVxuICAgICAgJiYgbiA9IGFpZCAmJiBzID0gc2l0ZSAmJiBtID0gbW9kaWYpXG4gICAgcXVhcmtzXG5cbmxldCBjaGVja19ldmVudF9xdWFya3MgYWN0aW9ucyB0ZXN0cyBxdWFya3MgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKChhaWQsIF8pLCBzaXRlcykgLT5cbiAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBhc2l0ZSAtPiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUgMSBxdWFya3NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChhc2l0ZTEsIGFzaXRlMilcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAmJiBjaGVja19tb2RpZmllZF9xdWFya3MgYXNpdGUyIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDAgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIChhaWQsIF8pIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1biAoYywgKG4sIF8sIF8pKSAtPlxuICAgICAgICAgICAgKGMgPSBhdG9tX21vZGlmaWVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgIHF1YXJrcylcbiAgICBhY3Rpb25zXG4gICYmIExpc3QuZm9yX2FsbFxuICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoYWlkLCBfKSAtPlxuICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgICAgIChjID0gYXRvbV90ZXN0ZWQgfHwgYyA9IGF0b21fdGVzdGVkbW9kaWZpZWQpICYmIG4gPSBhaWQpXG4gICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBhc2l0ZVxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKGFzaXRlLCBfKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKGFzaXRlMSwgYXNpdGUyKSAtPlxuICAgICAgICAgICBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMSAxIHF1YXJrc1xuICAgICAgICAgICAmJiBjaGVja190ZXN0ZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrcykpXG4gICAgICAgdGVzdHNcblxubGV0IGxvZ19ldmVudCBpZCBxdWFya3MgZXZlbnRfa2luZCBzdGVwcyA9XG4gIG1hdGNoIGV2ZW50X2tpbmQgd2l0aFxuICB8IEVWRU5UIChUcmFjZS5JTklUIF8pIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgICAgICAgICAgICBjaGVja19jcmVhdGVfcXVhcmtzIGFpZCBzaXRlcyBxdWFya3NcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiaW5pdCBldmVudCBoYXMgYWN0aW9ucyBub3QgYWxsb3dlZFwiKSkpXG4gICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cbiAgfCBFVkVOVCAoVHJhY2UuUlVMRSByaWQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChyaWQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcmlkID0gcmlkJ1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgT0JTIF8gLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLk9icyBfIC0+IHRydWVcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlBFUlQgcGVydCkgLT5cbiAgICBsZXQgc3RwID1cbiAgICAgIExpc3QuZmluZFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKHBlcnQnLCBlLCBfKSAtPlxuICAgICAgICAgICAgcGVydCA9IHBlcnQnXG4gICAgICAgICAgICAmJiBjaGVja19ldmVudF9xdWFya3MgZS5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAgKGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgOjogZS5JbnN0YW50aWF0aW9uLnRlc3RzKVxuICAgICAgICAgICAgICAgICBxdWFya3NcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLk9icyBfIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBfIC0+XG4gICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgc3RlcHNcbiAgICBpblxuICAgIGBMaXN0IFsgYEludCBpZDsgVHJhY2Uuc3RlcF90b195b2pzb24gc3RwIF1cblxubGV0IGpzb25fb2ZfZ3JpZCBlbnJpY2hlZF9ncmlkIGdyaWRfc3Rvcnkgc3RlcHMgPVxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuaXRlclxuICAgICAgKGZ1biBxdWFyayBhdHRfbHMgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBhdG9tIC0+IEhhc2h0YmwuYWRkIHRibCBhdG9tLmVpZCAoYXRvbS5jYXVzYWxfaW1wYWN0LCBxdWFyaykpXG4gICAgICAgICAgYXR0X2xzKVxuICAgICAgZ3JpZF9zdG9yeS5mbG93XG4gIGluXG4gIGxldCBzb3J0ZWRfZXZlbnRzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBkIGRtYXAgLT5cbiAgICAgICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBkIGRtYXAgaW5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGQgKE1vZHMuSW50U2V0LmFkZCBlaWQgc2V0KSBkbWFwKVxuICAgICAgZGVwdGhfb2ZfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHlcbiAgaW5cbiAgbGV0IG5vZGVfdG9fanNvbiBlaWQgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGVpZCBjb25maWcuZXZlbnRzX2tpbmQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFNvbWUgYXRvbV9raW5kIC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgbGV0IHF1YXJrcyA9IEhhc2h0YmwuZmluZF9hbGwgdGJsIGVpZCBpblxuICAgICAgICBsb2dfZXZlbnQgZWlkIHF1YXJrcyBhdG9tX2tpbmQgc3RlcHNcbiAgICAgICkgZWxzZVxuICAgICAgICBgTnVsbFxuICBpblxuICBsZXQgbm9kZXNfdG9fbGlzdCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBfIGVpZHNfYXRfZCBscyAtPlxuICAgICAgICBsZXQgbHMnJyA9IE1vZHMuSW50U2V0LmZvbGQgKGZ1biBlaWQgbHMnIC0+IGVpZCA6OiBscycpIGVpZHNfYXRfZCBbXSBpblxuICAgICAgICBscycnIEAgbHMpXG4gICAgICBzb3J0ZWRfZXZlbnRzIFtdXG4gIGluXG4gIGxldCBub2Rlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBub2RlX3RvX2pzb24gbm9kZXNfdG9fbGlzdCBpblxuICBsZXQgZWRnZV90b19qc29uIChlaWQsIGVpZCcpID0gYEFzc29jIFsgXCJmcm9tXCIsIGBJbnQgZWlkJzsgXCJ0b1wiLCBgSW50IGVpZCBdIGluXG4gIGxldCBwcmVjX2VkZ2VzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGVpZCBwcmVkX3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gZWlkJyBscycgLT5cbiAgICAgICAgICAgICAgICBpZiBlaWQnID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAoZWlkLCBlaWQnKSA6OiBscycpXG4gICAgICAgICAgICAgIHByZWRfc2V0IFtdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscycnIEAgbHNcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcucHJlY18xIFtdXG4gIGluXG4gIGxldCBwcmVjX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBwcmVjX2VkZ2VzIGluXG4gIGxldCBjb25mbF9lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgY2ZsY3Rfc2V0IGxzIC0+XG4gICAgICAgIGlmIGVpZCA8PiAwIHRoZW4gKFxuICAgICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgICBsZXQgXywgbHMnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAgIChmdW4gZWlkJyAocHJlYywgbHMnKSAtPlxuICAgICAgICAgICAgICAgIGxldCBib29sLCBwcmVjID1cbiAgICAgICAgICAgICAgICAgIGxldCByZWMgYXV4IHByZWMgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIGggPiBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGF1eCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbHMnJyA9XG4gICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGxzJ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcHJlYywgbHMnJylcbiAgICAgICAgICAgICAgY2ZsY3Rfc2V0IChwcmVjLCBscylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxzJ1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBscylcbiAgICAgIGNvbmZpZy5jb25mbGljdCBbXVxuICBpblxuICBsZXQgY29uZmxfZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uIGNvbmZsX2VkZ2VzIGluXG4gIChgQXNzb2NcbiAgICAgW1xuICAgICAgIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbjtcbiAgICAgICBcImNhdXNlXCIsIHByZWNfZWRnZXNfdG9fanNvbjtcbiAgICAgICBcImluaGliaXRcIiwgY29uZmxfZWRnZXNfdG9fanNvbjtcbiAgICAgXVxuICAgIDogWW9qc29uLkJhc2ljLnQpXG5cbigqc3RvcnlfbGlzdDpbKGtleV9pLGxpc3RfaSldIGV0IGxpc3RfaTpbKGdyaWQsXyxzaW1faW5mbyBvcHRpb24pLi4uXVxuICBldCBzaW1faW5mbzp7d2l0aCBzdG9yeV9pZDppbnQgc3RvcnlfdGltZTogZmxvYXQgOyBzdG9yeV9ldmVudDogaW50fSopXG5sZXQgcHJldHR5X3ByaW50IH5kb3RGb3JtYXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IGNvbmZpZ19jbG9zdXJlXG4gICAgY29tcHJlc3Npb25fdHlwZSBsYWJlbCBncmlkX2xpc3QgPVxuICBtYXRjaFxuICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gIHwgU29tZSBlcnJfZm10IC0+XG4gICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBncmlkX2xpc3QgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBlcnJfZm10IFwiKyBQcmV0dHkgcHJpbnRpbmcgJWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgKGlmIG4gPiAxIHRoZW5cbiAgICAgICAgICAgICBcInNcIlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJcIilcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkICVzY29tcHJlc3NlZCBmbG93JXNALlwiIG5cbiAgICAgICAgICBsYWJlbFxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgaW5cbiAgICBsZXQgY29tcHJlc3Npb25fdHlwZSA9XG4gICAgICBpZiBjb21wcmVzc2lvbl90eXBlID0gXCJcIiB0aGVuXG4gICAgICAgIFwibm9uZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGNvbXByZXNzaW9uX3R5cGVcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0b3J5X2xpc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAoeiwgeCwgeSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB4ID1cbiAgICAgICAgICAgIGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKHosIHgsIHkpIDo6IGxpc3QpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBncmlkX2xpc3RcbiAgICBpblxuICAgIGxldCBzdG9yeV9saXN0ID0gTGlzdC5yZXYgc3RvcnlfbGlzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gY3B0IChzdGVwcywgZW5yaWNoZWRfY29uZmlnLCBzdG9yaWVzKSAtPlxuICAgICAgICAgIGxldCBhdl90LCBpZHMsIG4gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoYXZfdCwgaWRzLCBuKSBpbmZvIC0+XG4gICAgICAgICAgICAgICAgKCBhdl90ICsuIGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUsXG4gICAgICAgICAgICAgICAgICBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA6OiBpZHMsXG4gICAgICAgICAgICAgICAgICBuICsgMSApKVxuICAgICAgICAgICAgICAoMC4sIFtdLCAwKSAoTGlzdC5yZXYgc3RvcmllcylcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAoKmR1bXAgZ3JpZCBmaWMgc3RhdGUgZW52IDsgKilcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRvdEZvcm1hdCA9IEpzb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IF8sIGdyaWRfc3RvcnksIF8gPSBMaXN0Lm50aCBncmlkX2xpc3QgY3B0IGluXG4gICAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICAgIFwiLmpzb25cIlxuICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChqc29uX29mX2dyaWQgZW5yaWNoZWRfY29uZmlnIGdyaWRfc3Rvcnkgc3RlcHMpKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICAgICAgICB8IERvdCB8IEpzb24gLT5cbiAgICAgICAgICAgICAgbGV0IHByb2ZpbGluZyBkZXNjID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiLyogQFtDb21wcmVzc2lvbiBvZiAlZCBjYXVzYWwgZmxvd3NcIiBuO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJAIG9idGFpbmVkIGluIGF2ZXJhZ2UgYXQgJUUgdC51QF0gKi9ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWy8qIENvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6QCBbJWFdICovQF1cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmRvdFwiXG4gICAgICAgICAgICAgICAgKGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfY29uZmlnKVxuICAgICAgICAgICAgfCBIdG1sIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJAWzx2IDI+PGRsPkAsPGR0PkNvbXByZXNzaW9uIG9mPC9kdD48ZGQ+JWQgY2F1c2FsIGZsb3dzPC9kZD5cIlxuICAgICAgICAgICAgICAgICAgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjXG4gICAgICAgICAgICAgICAgICBcIkAsPGR0Pm9idGFpbmVkIGluIGF2ZXJhZ2UgYXQ8L2R0PjxkZD4lRSB0LnU8L2RkPkAsXCJcbiAgICAgICAgICAgICAgICAgIChhdl90IC8uIGZsb2F0X29mX2ludCBuKTtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiPGR0PkNvbXByZXNzZWQgY2F1c2FsIGZsb3dzIHdlcmU6PC9kdD5cIjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCA8ZGQ+W0BbJWFAXV08L2RkPkBdQCw8L2RsPlwiXG4gICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI7QCxcIilcbiAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICAgICAgICAgICAgICBpZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlXG4gICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgXCIuaHRtbFwiXG4gICAgICAgICAgICAgICAgKGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICBpblxuICAgICAgICAgIGNwdCArIDEpXG4gICAgICAgIDAgc3RvcnlfbGlzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGRvdEZvcm1hdCB3aXRoXG4gICAgICB8IEpzb24gLT5cbiAgICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJlbnZcIiBdIFwiLmpzb25cIlxuICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIlxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoTW9kZWwudG9feW9qc29uIGVudikpKVxuICAgICAgfCBEb3QgfCBIdG1sIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGUgWyBjb21wcmVzc2lvbl90eXBlOyBcIlN1bW1hcnlcIiBdIFwiLmRhdFwiXG4gICAgICAgIChmdW4gZm9ybSAtPlxuICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PiNpZFxcdEVcXHRUXFx0XFx0ZGVwdGhcXHRzaXplXFx0QCxcIiBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcC5saXN0aSBQcC5lbXB0eVxuICAgICAgICAgICAgICAoZnVuIGNwdCBmIChfLCBlbnJpY2hlZF9jb25maWcsIHN0b3J5KSAtPlxuICAgICAgICAgICAgICAgIGxldCBkZXB0aCA9IGVucmljaGVkX2NvbmZpZy5kZXB0aCBpblxuICAgICAgICAgICAgICAgIGxldCBzaXplID0gZW5yaWNoZWRfY29uZmlnLnNpemUgaW5cbiAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpXFx0JWlcXHQlRVxcdCVpXFx0JWlcXHRALFwiIGNwdCBldmVudCB0aW1lXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGggc2l6ZSlcbiAgICAgICAgICAgICAgICAgIHN0b3J5KVxuICAgICAgICAgICAgICBmb3JtIHN0b3J5X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUA/XCIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxubGV0IHByaW50X3N0YXQgZiBfcGFyYW1ldGVyIF9oYW5kbGVyIGVucmljaGVkX2dyaWQgPVxuICBsZXQgY291bnRfb2JzID1cbiAgICBtYXRjaCBzbmQgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIgd2l0aFxuICAgIHwgR3JhcGhfY2xvc3VyZS5JbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudCAtPiBmdW4geCAtPiB4XG4gICAgfCBHcmFwaF9jbG9zdXJlLkRlY3JlYXNpbmdfd2l0aG91dF9sYXN0X2V2ZW50IC0+IHN1Y2NcbiAgaW5cbiAgbGV0IHNpemUgPSBBcnJheS5sZW5ndGggKGZzdCBlbnJpY2hlZF9ncmlkLnByZWNfc3RhcikgaW5cbiAgbGV0IHJlYyBhdXggayBuX3N0ZXAgbG9uZ2VzdF9zdG9yeSBuX25vbmVtcHR5IGxlbmd0aF9zdW0gbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGlmIGsgPj0gc2l6ZSB0aGVuXG4gICAgICBuX3N0ZXAsIGxvbmdlc3Rfc3RvcnksIG5fbm9uZW1wdHksIGxlbmd0aF9zdW0sIGxlbmd0aF9zcXVhcmVfc3VtXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2MgPSBMaXN0Lmxlbmd0aCAoQXJyYXkuZ2V0IChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGspIGluXG4gICAgICBsZXQgY2MnID1cbiAgICAgICAgaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICBjb3VudF9vYnMgY2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNjXG4gICAgICBpblxuICAgICAgYXV4IChrICsgMSkgKG5fc3RlcCArIDEpIChtYXggbG9uZ2VzdF9zdG9yeSBjYycpXG4gICAgICAgIChpZiBjYyA+IDAgdGhlblxuICAgICAgICAgICBuX25vbmVtcHR5ICsgMVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBuX25vbmVtcHR5KVxuICAgICAgICAobGVuZ3RoX3N1bSArIGNjJylcbiAgICAgICAgKGxlbmd0aF9zcXVhcmVfc3VtICsgKGNjJyAqIGNjJykpXG4gICAgKVxuICBpblxuICBsZXQgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bSA9XG4gICAgYXV4IDAgMCAwIDAgMCAwXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PlN0YXRzOkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBudW1iZXIgb2Ygc3RlcCAgIDogJWlALFwiIG5fc3RlcCBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGxvbmdlc3Qgc3RvcnkgICAgOiAlaUAsXCIgbG9uZ2VzdF9zdG9yeSBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgYXZlcmFnZSBsZW5ndGggICA6ICUuNGdALFwiXG4gICAgICAoZmxvYXQgbGVuZ3RoX3N1bSAvLiBmbG9hdCBuX25vbmVtcHR5KVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZ2VvbWV0cmljIG1lYW4gICA6ICUuNGdALFwiXG4gICAgICAoc3FydCAoZmxvYXQgbGVuZ3RoX3NxdWFyZV9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSkpXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcbiIsInR5cGUgcHJlZGljYXRlX3ZhbHVlID1cbiAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBpbnRcbiAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgfCBQcmVzZW50ICAoKiogZm9yIGFnZW50IHByZXNlbmNlICopXG4gIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gIHwgQm91bmRfdG8gb2YgaW50ICogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuXG5tb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcblxudHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gIHwgSGVyZSBvZiBpbnRcbiAgfCBCb3VuZF9zaXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gIHwgSW50ZXJuYWxfc3RhdGUgb2YgaW50ICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxubGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwaSA9XG4gIG1hdGNoIHBpIHdpdGhcbiAgfCBIZXJlIGFnIC0+IFwiSGVyZSBcIiBeIHN0cmluZ19vZl9pbnQgYWdcbiAgfCBCb3VuZF9zaXRlIChhZywgcykgLT5cbiAgICBcIkJvdW5kX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG4gIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBzKSAtPlxuICAgIFwiSW50ZXJuYWxfc3RhdGUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IHNcblxubW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHgpXG5lbmQpXG5cbm1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBRUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50IEEudFxuXG4gIGxldCBlbXB0eSBuID0gQS5tYWtlIG4gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyIGYgdCA9IEEuaXRlciAoUHJlZGljYXRlTWFwLml0ZXIgZikgdFxuXG4gIGxldCBoYXNoIHByZWRpY2F0ZSA9XG4gICAgbWF0Y2ggcHJlZGljYXRlIHdpdGhcbiAgICB8IEhlcmUgYWcgfCBCb3VuZF9zaXRlIChhZywgXykgfCBJbnRlcm5hbF9zdGF0ZSAoYWcsIF8pIC0+IGFnXG5cbiAgbGV0IGxpZnQgZiBwcmVkaWNhdGVfaWQgdGFiID0gZiBwcmVkaWNhdGVfaWQgKEEuZ2V0IHRhYiAoaGFzaCBwcmVkaWNhdGVfaWQpKVxuICBsZXQgZmluZF9kZWZhdWx0IGRlZiBwIHQgPSBsaWZ0IChQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IGRlZikgcCB0XG4gIGxldCBmaW5kX29wdGlvbiBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwIHRcbiAgbGV0IG1lbSBwIHQgPSBsaWZ0IFByZWRpY2F0ZU1hcC5tZW0gcCB0XG5cbiAgbGV0IGFkZCBwcmVkaWNhdGVfaWQgeCB0YWIgPVxuICAgIGxldCBoYXNoID0gaGFzaCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgb2xkID0gQS5nZXQgdGFiIGhhc2ggaW5cbiAgICBsZXQgXyA9IEEuc2V0IHRhYiBoYXNoIChQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZV9pZCB4IG9sZCkgaW5cbiAgICB0YWJcblxuICBsZXQgcmVjeWNsZSB0YWIgaSA9IEEuc2V0IHRhYiBpIFByZWRpY2F0ZU1hcC5lbXB0eVxuZW5kXG5cbm1vZHVsZSBNUHJlZGljYXRlTWFwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByZWRpY2F0ZU1hcC50XG5cbiAgbGV0IHByZWRpY2F0ZV9tYXggX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIF9saXN0ID0gZXJyb3IsIGluZm8sIDBcbiAgbGV0IGVtcHR5IF9uID0gUHJlZGljYXRlTWFwLmVtcHR5XG4gIGxldCBpdGVyID0gUHJlZGljYXRlTWFwLml0ZXJcbiAgbGV0IGZpbmRfZGVmYXVsdCA9IFByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHRcbiAgbGV0IGZpbmRfb3B0aW9uID0gUHJlZGljYXRlTWFwLmZpbmRfb3B0aW9uXG4gIGxldCBtZW0gPSBQcmVkaWNhdGVNYXAubWVtXG4gIGxldCBhZGQgPSBQcmVkaWNhdGVNYXAuYWRkXG5lbmRcblxubW9kdWxlIENQcmVkaWNhdGVNYXAgPSBNUHJlZGljYXRlTWFwXG4iLCIoKipcbiAgKiBwcmlvcml0eS5tbFxuICAqXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTMtMDctMzAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE5IDE0OjIxOjE5IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHNlbGVjdGlvbl9zdHJhdGVneSA9XG4gIHwgQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHNcbiAgfCBXaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuXG50eXBlIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cyB8IEVhcmx5X2V2ZW50c1xuXG50eXBlIGxldmVsID1cbiAgfCBIaWdoZXN0XG4gIHwgSGlnaFxuICB8IEFib3ZlX2F2ZXJhZ2VcbiAgfCBBdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2VcbiAgfCBMb3dcbiAgfCBMb3dlc3RcblxubGV0IHdlaWdodCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgSGlnaGVzdCAtPiAwXG4gIHwgSGlnaCAtPiAxXG4gIHwgQWJvdmVfYXZlcmFnZSAtPiAyXG4gIHwgQXZlcmFnZSAtPiAzXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gNFxuICB8IExvdyAtPiA1XG4gIHwgTG93ZXN0IC0+IDZcblxubGV0IF9jb21wYXJlX2xldmVsIGx2bDEgbHZsMiA9IGNvbXBhcmUgKHdlaWdodCBsdmwxKSAod2VpZ2h0IGx2bDIpXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgYlxuXG5sZXQgX21heF9sZXZlbCBhIGIgPVxuICBpZiBjb21wYXJlIGEgYiA8PSAwIHRoZW5cbiAgICBiXG4gIGVsc2VcbiAgICBhXG5cbmxldCBoaWdoZXN0ID0gSGlnaGVzdFxubGV0IGhpZ2ggPSBIaWdoXG5sZXQgYWJvdmVfYXZlcmFnZSA9IEFib3ZlX2F2ZXJhZ2VcbmxldCBhdmVyYWdlID0gQXZlcmFnZVxubGV0IGJlbGxvd19hdmVyYWdlID0gQmVsbG93X2F2ZXJhZ2VcbmxldCBsb3cgPSBMb3dcbmxldCBsb3dlc3QgPSBMb3dlc3RcblxubGV0IHN0cmluZ19vZl9sZXZlbCBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IFwiaGlnaGVzdFwiXG4gIHwgSGlnaCAtPiBcImhpZ2hcIlxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gXCJhYm92ZSBhdmVyYWdlXCJcbiAgfCBBdmVyYWdlIC0+IFwiYXZlcmFnZVwiXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gXCJiZWxsb3cgYXZlcmFnZVwiXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBMb3dlc3QgLT4gXCJsb3dlc3RcIlxuXG5sZXQgbG93ZXIgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBTb21lIEhpZ2hcbiAgfCBIaWdoIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBBdmVyYWdlXG4gIHwgQXZlcmFnZSAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgQmVsbG93X2F2ZXJhZ2UgLT4gU29tZSBMb3dcbiAgfCBMb3cgLT4gU29tZSBMb3dlc3RcbiAgfCBMb3dlc3QgLT4gTm9uZVxuXG5sZXQgaGlnaGVyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gTm9uZVxuICB8IEhpZ2ggLT4gU29tZSBIaWdoZXN0XG4gIHwgQWJvdmVfYXZlcmFnZSAtPiBTb21lIEhpZ2hcbiAgfCBBdmVyYWdlIC0+IFNvbWUgQWJvdmVfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IExvdyAtPiBTb21lIEJlbGxvd19hdmVyYWdlXG4gIHwgTG93ZXN0IC0+IFNvbWUgTG93XG5cbm1vZHVsZSBMZXZlbFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV2ZWxcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50IGYgeCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoc3RyaW5nX29mX2xldmVsIHgpXG5lbmQpXG5cbm1vZHVsZSBMZXZlbE1hcCA9IExldmVsU2V0TWFwLk1hcFxuXG50eXBlIHByaW9yaXRpZXMgPSB7XG4gIGNyZWF0aW9uOiBsZXZlbDtcbiAgdW5iaW5kaW5nOiBsZXZlbDtcbiAgcmVtb3ZhbDogbGV2ZWw7XG4gIG90aGVyX2V2ZW50czogbGV2ZWw7XG4gIHN1YnN0aXR1dGlvbjogbGV2ZWw7XG4gIHNpZGVfZWZmZWN0czogbGV2ZWw7XG4gIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzOiBzZWxlY3Rpb25fc3RyYXRlZ3k7XG4gIHRyeV90b19yZW1vdmVfZmlyc3Q6IHRyeV90b19yZW1vdmVfZmlyc3Q7XG59XG4oKiogZWFjaCBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGggYSBsZXZlbCBjb3JyZXNwb25kaW5nIG9mIGl0cyBhY3Rpb25zIChpZiBtdWx0aXBsZSBhY3Rpb24sIHRoZW4sIHRoZSBsZWFzdCBjb3JyZXNwb25kaW5nIGxldmVsIGlzIHNlbGVjdGVkXG4gRXZlbnRzIHdpdGggdGhlIGxlYXN0IGxldmVsIG9mIHByaW9yaXR5IGFyZSByZW1vdmVkIGZpcnN0XG4gQW1vbmcgdGhlbSwgdGhlIGNob2ljZSBpcyBkcml2ZW4gYnkgdGhlIGZpZWxkcyAnY2FuZGlkYXRlX3NldF9vZl9ldmVudHMnIGFuZCAndHJ5X3RvX3JlbW92ZV9maXJzdCcgKilcblxubGV0IGNhdXNhbCA9XG4gIHtcbiAgICBjcmVhdGlvbiA9IEhpZ2hlc3Q7XG4gICAgdW5iaW5kaW5nID0gSGlnaGVzdDtcbiAgICByZW1vdmFsID0gSGlnaGVzdDtcbiAgICBvdGhlcl9ldmVudHMgPSBIaWdoZXN0O1xuICAgIHN1YnN0aXR1dGlvbiA9IEhpZ2hlc3Q7XG4gICAgc2lkZV9lZmZlY3RzID0gSGlnaGVzdDtcbiAgICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50cyA9IFdpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cztcbiAgICB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHM7XG4gIH1cblxubGV0IHdlYWsgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoO1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2g7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBzdHJvbmcgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2g7XG4gICAgcmVtb3ZhbCA9IEFib3ZlX2F2ZXJhZ2U7XG4gICAgb3RoZXJfZXZlbnRzID0gQXZlcmFnZTtcbiAgICBzdWJzdGl0dXRpb24gPSBCZWxsb3dfYXZlcmFnZTtcbiAgICBzaWRlX2VmZmVjdHMgPSBMb3c7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCBuX3N0b3J5ID0gcmVmIDFcbmxldCBuX2JyYW5jaCA9IHJlZiAxXG4iLCJ0eXBlIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFdlYWsgfCBTdHJvbmcgfCBDYXVzYWxcbnR5cGUgbmV3X3N0b3J5ID0geyBpZDogaW50OyBncmFwaDogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGggfVxudHlwZSBzdG9yeSA9IE5ldyBvZiBuZXdfc3RvcnkgfCBTYW1lX2FzIG9mIGludFxuXG50eXBlICdhIG9uZV9jb21wcmVzc2lvbiA9IHtcbiAgbG9nX2luZm86ICdhIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3Q7XG4gIHN0b3J5X21vZGU6IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZTtcbiAgc3Rvcnk6IHN0b3J5O1xufVxuXG5sZXQgc3RyaW5nX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0cmluZ1wiLCB4KSlcblxubGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpbnRcIiwgeCkpXG5cbmxldCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgPVxuICBgQXNzb2NcbiAgICBbIFwiaWRcIiwgYEludCBuZXdfc3RvcnkuaWQ7IFwiZ3JhcGhcIiwgR3JhcGhfanNvbi50b19qc29uIG5ld19zdG9yeS5ncmFwaCBdXG5cbmxldCBuZXdfc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGlkID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJpZFwiIGwpO1xuICAgICAgICAgZ3JhcGggPSBHcmFwaF9qc29uLm9mX2pzb24gKExpc3QuYXNzb2MgXCJncmFwaFwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5ldyBzdG9yeVwiLCB4KSlcblxubGV0IHN0b3J5X3RvX2pzb24gc3RvcnkgPVxuICBtYXRjaCBzdG9yeSB3aXRoXG4gIHwgTmV3IG5ld19zdG9yeSAtPiBgQXNzb2MgWyBcIm5ld1wiLCBuZXdfc3RvcnlfdG9fanNvbiBuZXdfc3RvcnkgXVxuICB8IFNhbWVfYXMgaW50IC0+IGBBc3NvYyBbIFwic2FtZV9hc1wiLCBgSW50IGludCBdXG5cbmxldCBzdG9yeV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJuZXdcIiwgbmV3X3N0b3J5KSBdIC0+IE5ldyAobmV3X3N0b3J5X29mX2pzb24gbmV3X3N0b3J5KVxuICB8IGBBc3NvYyBbIChcInNhbWVfYXNcIiwgYEludCBpbnQpIF0gLT4gU2FtZV9hcyBpbnRcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV9tb2RlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENhdXNhbCAtPiBgU3RyaW5nIFwiQ2F1c2FsXCJcbiAgfCBXZWFrIC0+IGBTdHJpbmcgXCJXZWFrXCJcbiAgfCBTdHJvbmcgLT4gYFN0cmluZyBcIlN0cm9uZ1wiXG5cbmxldCBzdG9yeV9tb2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJDYXVzYWxcIiAtPiBDYXVzYWxcbiAgfCBgU3RyaW5nIFwiV2Vha1wiIC0+IFdlYWtcbiAgfCBgU3RyaW5nIFwiU3Ryb25nXCIgLT4gU3Ryb25nXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IG1vZGVcIiwgeCkpXG5cbmxldCB0b19qc29uIGxvZ19pbmZvX3RvX2pzb24gb25lX2NvbXByZXNzaW9uID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImxvZ19pbmZvXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udG9fanNvbiBsb2dfaW5mb190b19qc29uKVxuICAgICAgICAgICAgIChMaXN0LnJldiBvbmVfY29tcHJlc3Npb24ubG9nX2luZm8pKSApO1xuICAgICAgXCJzdG9yeV9tb2RlXCIsIHN0b3J5X21vZGVfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3RvcnlfbW9kZTtcbiAgICAgIFwic3RvcnlcIiwgc3RvcnlfdG9fanNvbiBvbmVfY29tcHJlc3Npb24uc3Rvcnk7XG4gICAgXVxuXG5sZXQgb2ZfanNvbiBsb2dfaW5mb19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgbG9nX2luZm8gPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImxvZ19pbmZvXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby5vZl9qc29uIGxvZ19pbmZvX29mX2pzb24pXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgbClcbiAgICAgICAgICAgfCBfeSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpO1xuICAgICAgICAgc3RvcnkgPSBzdG9yeV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlcIiBsKTtcbiAgICAgICAgIHN0b3J5X21vZGUgPSBzdG9yeV9tb2RlX29mX2pzb24gKExpc3QuYXNzb2MgXCJzdG9yeV9tb2RlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5IGNvbXB1dGF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSlcblxudHlwZSBwaGFzZSA9IFN0YXJ0IHwgSW5wcm9ncmVzcyB8IFN1Y2Nlc3MgfCBGYWlsbHVyZVxuXG5sZXQgc3RhcnQgPSBcInN0YXJ0aW5nIGNvbXB1dGF0aW9uXCJcbmxldCBpbnByb2dyZXNzID0gXCJjb21wdXRhdGlvbiBpbiBwcm9ncmVzc1wiXG5sZXQgc3VjY2VzcyA9IFwiY29tcHV0YXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiXG5sZXQgZmFpbGx1cmUgPSBcImNvbXB1dGF0aW9uIChwYXJ0aWFsbHkpIGZhaWxlZFwiXG5cbmxldCBwaGFzZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBTdGFydCAtPiBgU3RyaW5nIHN0YXJ0XG4gIHwgSW5wcm9ncmVzcyAtPiBgU3RyaW5nIGlucHJvZ3Jlc3NcbiAgfCBTdWNjZXNzIC0+IGBTdHJpbmcgc3VjY2Vzc1xuICB8IEZhaWxsdXJlIC0+IGBTdHJpbmcgZmFpbGx1cmVcblxubGV0IHBoYXNlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBzdGFydCAtPiBTdGFydFxuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBpbnByb2dyZXNzIC0+IElucHJvZ3Jlc3NcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3VjY2VzcyAtPiBTdWNjZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IGZhaWxsdXJlIC0+IEZhaWxsdXJlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHBoYXNlXCIsIHgpKVxuXG50eXBlIHByb2dyZXNzX2JhciA9IHsgYm9vbDogc3RyaW5nOyBjdXJyZW50OiBpbnQ7IHRvdGFsOiBpbnQgfVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX3RvX2pzb24gcHJvZ3Jlc3NfYmFyID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcInByb2dyZXNzX2JhclwiLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImJvb2xcIiwgYFN0cmluZyBwcm9ncmVzc19iYXIuYm9vbDtcbiAgICAgICAgICAgIFwiY3VycmVudFwiLCBgSW50IHByb2dyZXNzX2Jhci5jdXJyZW50O1xuICAgICAgICAgICAgXCJ0b3RhbFwiLCBgSW50IHByb2dyZXNzX2Jhci50b3RhbDtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgcHJvZ3Jlc3NfYmFyX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgIChtYXRjaCBMaXN0LmFzc29jIFwicHJvZ3Jlc3NfYmFyXCIgbCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGJvb2wgPSBzdHJpbmdfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImJvb2xcIiBsKTtcbiAgICAgICAgICAgY3VycmVudCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3VycmVudFwiIGwpO1xuICAgICAgICAgICB0b3RhbCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwidG90YWxcIiBsKTtcbiAgICAgICAgIH1cbiAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwcm9ncmVzcyBiYXJcIiwgeCkpXG5cbnR5cGUgJ2EgbWVzc2FnZSA9XG4gIHwgUGhhc2Ugb2YgcGhhc2UgKiBzdHJpbmdcbiAgfCBQcm9ncmVzcyBvZiBwcm9ncmVzc19iYXJcbiAgfCBTdG9yeSBvZiAnYSBvbmVfY29tcHJlc3Npb25cblxubGV0IG1lc3NhZ2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgUGhhc2UgKHAsIG0pIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBIQVNFXCI7IHBoYXNlX3RvX2pzb24gcDsgYFN0cmluZyBtIF1cbiAgfCBQcm9ncmVzcyBwIC0+IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHByb2dyZXNzX2Jhcl90b19qc29uIHAgXVxuICB8IFN0b3J5IHMgLT4gYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgdG9fanNvbiAoZnVuIF8gLT4gYE51bGwpIHMgXVxuXG5sZXQgbWVzc2FnZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwOyBgU3RyaW5nIG0gXSAtPiBQaGFzZSAocGhhc2Vfb2ZfanNvbiBwLCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBST0dSRVNTXCI7IHAgXSAtPiBQcm9ncmVzcyAocHJvZ3Jlc3NfYmFyX29mX2pzb24gcClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJTVE9SWVwiOyBzIF0gLT4gU3RvcnkgKG9mX2pzb24gKGZ1biBfIC0+ICgpKSBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzdG9yeSBtZXNzYWdlXCIsIHgpKVxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA4LTAyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDozMDo0MCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBDZmxvd19oYW5kbGVyID0gc2lnXG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZVxuXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfY2F1c2FsX3RyYWNlX29ubHkgOiBjb21wcmVzc2lvbl9tb2RlIC0+IGJvb2xcbiAgdmFsIGdldF93ZWFrX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuICAoKiogYSBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgcGFyYW1ldGVyaXphYmxlIG9wdGlvbnMgKilcblxuICB2YWwgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvblxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICAoKmhhbmRsZXIgdG8gaW50ZXJwcmV0IGFic3RyYWN0IHZhbHVlcyopXG4gICAgZW52OiBNb2RlbC50O1xuICAgIHJ1bGVfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIGFnZW50X25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgICAgUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcC50O1xuICB9XG5cbiAgdHlwZSAnYSB6ZXJvYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYVxuXG4gIHR5cGUgKCdhLCAnYikgdW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2JcblxuICB0eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnY1xuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICAnZCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnZVxuXG4gIHZhbCBkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCA6IHBhcmFtZXRlciAtPiBpbnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgOiBwYXJhbWV0ZXIgLT4gaW50IG9wdGlvblxuICB2YWwgc2V0X2ZpcnN0X3N0b3J5X3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcblxuICB2YWwgYnVpbGRfcGFyYW1ldGVyIDpcbiAgICBjYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbSAtPlxuICAgID9zZW5kX21lc3NhZ2U6KHN0cmluZyAtPiB1bml0KSAtPlxuICAgIG5vbmU6Ym9vbCAtPlxuICAgIHdlYWs6Ym9vbCAtPlxuICAgIHN0cm9uZzpib29sIC0+XG4gICAgdW5pdCAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBzdHJpbmdfb2ZfZXhuIDogZXhuIC0+IHN0cmluZyBvcHRpb25cbiAgdmFsIGlzX3NlcnZlcl9tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9jb21wcmVzc2lvbl93ZWFrIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9ub25lIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X3ByaW9yaXRpZXMgOiBwYXJhbWV0ZXIgLT4gUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb25cbiAgdmFsIGdldF9hbGxfc3Rvcmllc19wZXJfb2JzIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2xvZ19zdGVwIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2RlYnVnZ2luZ19tb2RlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9wcm9maWxpbmdfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgZ2V0X3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgaXNfc2VydmVyX2NoYW5uZWxfb24gOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudFxuICB2YWwgc2V0X291dF9jaGFubmVsIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9kZWJ1Z2dpbmdfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfa2FzYV9wYXJhbWV0ZXJzIDogcGFyYW1ldGVyIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnNcblxuICB2YWwgc2V0X2thc2FfcGFyYW1ldGVycyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGRvX3dlX3VzZV9idWNrZXRfc29ydCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCB1c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCB1c2VfZnVzaW9uX3NvcnQgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBhbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIDogcGFyYW1ldGVyIC0+IGJvb2wgLT4gcGFyYW1ldGVyXG4gIHZhbCBpbml0X2hhbmRsZXIgOiBNb2RlbC50IC0+IGhhbmRsZXJcbiAgdmFsIHN0cmluZ19vZl9ydWxlX2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG4gIHZhbCBzdHJpbmdfb2ZfYWdlbnRfaWQgOiBoYW5kbGVyIC0+IGludCAtPiBzdHJpbmdcblxuICB2YWwgZ2V0X3ByZWRpY2F0ZV9tYXAgOlxuICAgIGhhbmRsZXIgLT5cbiAgICAoaW50ICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdFxuICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudFxuXG4gIHZhbCBnZXRfaXNfdGltZV9pbmRlcGVuZGVudCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfYmxhY2tsaXN0X2V2ZW50cyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gc3RyaW5nIC0+IHVuaXRcbiAgdmFsIHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2F2ZV9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0XG4gIHZhbCByZXNldF9wcm9ncmVzc19iYXIgOiBwYXJhbWV0ZXIgLT4gdW5pdFxuICB2YWwgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSA6IHBhcmFtZXRlciAtPiAoc3RyaW5nIC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHVuaXQgLT4gdW5pdCkgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIHNldF9zYXZlX3Byb2dyZXNzX2JhciA6XG4gICAgcGFyYW1ldGVyIC0+IChib29sICogaW50ICogaW50ICogaW50IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0XG5cbiAgdmFsIHNldF9zYXZlX2Vycm9yX2xvZyA6XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5tZXRob2RfaGFuZGxlciAtPiB1bml0KSAtPlxuICAgIHBhcmFtZXRlclxuXG4gIHZhbCBwdXNoX2pzb24gOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSAtPiB1bml0XG5cbiAgdmFsIHBvcF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2Ugb3B0aW9uXG5lbmRcblxubW9kdWxlIENmbG93X2hhbmRsZXIgOiBDZmxvd19oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0IHwgRnVzaW9uXG5cbiAgdHlwZSBjb21wcmVzc2lvbl9tb2RlID0ge1xuICAgIGNhdXNhbF90cmFjZTogYm9vbDtcbiAgICB3ZWFrX2NvbXByZXNzaW9uOiBib29sO1xuICAgIHN0cm9uZ19jb21wcmVzc2lvbjogYm9vbDtcbiAgfVxuXG4gIGxldCBnZXRfY2F1c2FsX3RyYWNlIHggPSB4LmNhdXNhbF90cmFjZVxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IHggPSBub3QgKHgud2Vha19jb21wcmVzc2lvbiB8fCB4LnN0cm9uZ19jb21wcmVzc2lvbilcbiAgbGV0IGdldF93ZWFrX2NvbXByZXNzaW9uIHggPSB4LndlYWtfY29tcHJlc3Npb25cbiAgbGV0IGdldF9zdHJvbmdfY29tcHJlc3Npb24geCA9IHguc3Ryb25nX2NvbXByZXNzaW9uXG5cbiAgdHlwZSBwYXJhbWV0ZXIgPSB7XG4gICAgY2FjaGVfc2l6ZTogaW50IG9wdGlvbjtcbiAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU6IFN0b3J5X2pzb24uY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIG9wdGlvbjtcbiAgICBjb21wcmVzc2lvbl9tb2RlOiBjb21wcmVzc2lvbl9tb2RlO1xuICAgIHByaW9yaXRpZXNfd2VhazogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX3N0cm9uZzogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBwcmlvcml0aWVzX2NhdXNhbDogUHJpb3JpdHkucHJpb3JpdGllcztcbiAgICBjb21wdXRlX2FsbF9zdG9yaWVzOiBib29sO1xuICAgIHNvcnRfYWxnb19mb3Jfc3Rvcmllczogc29ydF9hbGdvX2Zvcl9zdG9yaWVzO1xuICAgIGxvZ2dlcl9lcnI6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfcHJvZmlsaW5nOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX291dDogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9zZXJ2ZXI6IExvZ2dlcnMudDtcbiAgICBqc29uX2J1ZmZlcjpcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIEZpZm8udCByZWYgb3B0aW9uO1xuICAgIGxvZ19zdGVwOiBib29sO1xuICAgIGRlYnVnX21vZGU6IGJvb2w7XG4gICAgbG9nZ2VyX3N0ZXA6IExvZ2dlcnMudDtcbiAgICBrYXNhOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzO1xuICAgIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXM6IGJvb2w7XG4gICAgYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXI6IGludCBvcHRpb247XG4gICAgdGltZV9pbmRlcGVuZGVudDogYm9vbDtcbiAgICBibGFja2xpc3RfZXZlbnRzOiBib29sO1xuICAgIHNlcnZlcjogYm9vbDtcbiAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbjogYm9vbDtcbiAgICBkdW1wOiBzdHJpbmcgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZVxuXG4gIGxldCBidWlsZF9wYXJhbWV0ZXIgfmNhbGxlZF9mcm9tXG4gICAgICA/KHNlbmRfbWVzc2FnZSA9XG4gICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBcIiVzXCIgeDtcbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyKSB+bm9uZSB+d2VhayB+c3Ryb25nICgpXG4gICAgICA9XG4gICAgbGV0ICggc2VydmVyLFxuICAgICAgICAgIG91dF9zZXJ2ZXIsXG4gICAgICAgICAgb3V0X2NoYW5uZWwsXG4gICAgICAgICAgb3V0X2NoYW5uZWxfZXJyLFxuICAgICAgICAgIG91dF9jaGFubmVsX3Byb2ZpbGluZyxcbiAgICAgICAgICBsb2dfc3RlcF9jaGFubmVsICkgPVxuICAgICAgbWF0Y2ggY2FsbGVkX2Zyb20gd2l0aFxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgLT5cbiAgICAgICAgKCB0cnVlLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuSnNvbiBzdGRvdXQsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2luZmluaXRlX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUwgKCksXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2NpcmN1bGFyX2J1ZmZlciB+bW9kZTpMb2dnZXJzLkhUTUxfVGFidWxhciAoKSApXG4gICAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNpbVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5JbnRlcm5hbGlzZWQgLT5cbiAgICAgICAgbGV0IGNoYW5uZWwgPSBLYXBwYV9maWxlcy5vcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmcgKCkgaW5cbiAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5lcnJfZm9ybWF0dGVyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXJcbiAgICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW5uZWwpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKVxuICAgIGluXG4gICAge1xuICAgICAgc2VydmVyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBzZXJ2ZXI7XG4gICAgICBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBOb25lO1xuICAgICAgcHJpb3JpdGllc193ZWFrID0gUHJpb3JpdHkud2VhaztcbiAgICAgIHByaW9yaXRpZXNfc3Ryb25nID0gUHJpb3JpdHkuc3Ryb25nO1xuICAgICAgcHJpb3JpdGllc19jYXVzYWwgPSBQcmlvcml0eS5jYXVzYWw7XG4gICAgICBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2U7XG4gICAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQ7XG4gICAgICBsb2dnZXJfc2VydmVyID0gb3V0X3NlcnZlcjtcbiAgICAgIGxvZ2dlcl9vdXQgPSBvdXRfY2hhbm5lbDtcbiAgICAgIGxvZ2dlcl9lcnIgPSBvdXRfY2hhbm5lbF9lcnI7XG4gICAgICBsb2dnZXJfcHJvZmlsaW5nID0gb3V0X2NoYW5uZWxfcHJvZmlsaW5nO1xuICAgICAganNvbl9idWZmZXIgPSBOb25lO1xuICAgICAgY29tcHJlc3Npb25fbW9kZSA9XG4gICAgICAgIHtcbiAgICAgICAgICBjYXVzYWxfdHJhY2UgPSBub25lO1xuICAgICAgICAgIHdlYWtfY29tcHJlc3Npb24gPSB3ZWFrO1xuICAgICAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IHN0cm9uZztcbiAgICAgICAgfTtcbiAgICAgIGNhY2hlX3NpemUgPSBQYXJhbWV0ZXIuZ2V0X2NhY2hlX3NpemUgKCk7XG4gICAgICBkZWJ1Z19tb2RlID0gZmFsc2U7XG4gICAgICBsb2dfc3RlcCA9IHRydWU7XG4gICAgICBsb2dnZXJfc3RlcCA9IGxvZ19zdGVwX2NoYW5uZWw7XG4gICAgICBrYXNhID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gKCk7XG4gICAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gdHJ1ZTtcbiAgICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gTm9uZTtcbiAgICAgIHRpbWVfaW5kZXBlbmRlbnQgPSAhUGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnQ7XG4gICAgICBibGFja2xpc3RfZXZlbnRzID0gIVBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzO1xuICAgICAgZHVtcCA9IHNlbmRfbWVzc2FnZTtcbiAgICB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl93ZWFrIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5XZWFrIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uU3Ryb25nIH1cblxuICBsZXQgc2V0X2NvbXByZXNzaW9uX25vbmUgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLkNhdXNhbCB9XG5cbiAgdHlwZSBoYW5kbGVyID0ge1xuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICBsZXQgaW5pdF9oYW5kbGVyIGVudiA9XG4gICAgbGV0IG5fcnVsZXMgPSBNb2RlbC5uYl9ydWxlcyBlbnYgaW5cbiAgICBsZXQgcnVsZV9uYW1lX2NhY2hlID0gQXJyYXkubWFrZSBuX3J1bGVzIFwiXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAoZnVuIHggKCkgciAtPlxuICAgICAgICAgIHJ1bGVfbmFtZV9jYWNoZS4oeCkgPC1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnYpXG4gICAgICAgICAgICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZSlcbiAgICAgICAgKCkgZW52XG4gICAgaW5cbiAgICBsZXQgbl9hZ2VudHMgPSBTaWduYXR1cmUuc2l6ZSAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIGluXG4gICAgbGV0IGFnZW50X25hbWVfY2FjaGUgPVxuICAgICAgQXJyYXkuaW5pdCBuX2FnZW50cyAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hZ2VudCB+ZW52KSB4KVxuICAgIGluXG4gICAgbGV0IHN0ZXBzX2J5X2NvbHVtbiA9IFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAuZW1wdHkgMCBpblxuICAgIHsgZW52OyBydWxlX25hbWVfY2FjaGU7IGFnZW50X25hbWVfY2FjaGU7IHN0ZXBzX2J5X2NvbHVtbiB9XG5cbiAgbGV0IHN0cmluZ19vZl9leG4gX3ggPSBTb21lIFwiXCJcblxuICBsZXQgZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT4gU29tZSBwYXJhbWV0ZXIucHJpb3JpdGllc193ZWFrXG4gICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfc3Ryb25nXG4gICAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfY2F1c2FsXG5cbiAgbGV0IHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBjb21wdXRlX2FsbF9zdG9yaWVzID0gZmFsc2UgfVxuXG4gIGxldCBzZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IHRydWUgfVxuXG4gIGxldCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuY29tcHV0ZV9hbGxfc3Rvcmllc1xuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciA9IHBhcmFtZXRlci5kZWJ1Z19tb2RlXG4gIGxldCBzZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGRlYnVnX21vZGUgPSBib29sIH1cbiAgbGV0IGdldF9sb2dfc3RlcCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nX3N0ZXBcbiAgbGV0IHNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgYm9vbCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nX3N0ZXAgPSBib29sIH1cbiAgbGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zdGVwXG4gIGxldCBzZXRfbG9nZ2VyIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9zdGVwID0gZm10IH1cbiAgbGV0IGdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX291dFxuICBsZXQgc2V0X291dF9jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9vdXQgPSBmbXQgfVxuICBsZXQgZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfZXJyXG4gIGxldCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGZtdCA9IHsgcGFyYW1ldGVyIHdpdGggbG9nZ2VyX2VyciA9IGZtdCB9XG4gIGxldCBnZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5rYXNhXG5cbiAgbGV0IHNldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyIHBhcmFtZXRlcicgPVxuICAgIHsgcGFyYW1ldGVyJyB3aXRoIGthc2EgPSBwYXJhbWV0ZXIgfVxuXG4gIGxldCBkb193ZV91c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldFxuXG4gIGxldCB1c2VfYnVja2V0X3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB9XG5cbiAgbGV0IHVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gRnVzaW9uIH1cblxuICBsZXQgYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5hbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzXG5cbiAgbGV0IHNldF9hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlciBib29sID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGFsd2F5c19kaXNhbWJpZ3VhdGVfaW5pdGlhbF9zdGF0ZXMgPSBib29sIH1cblxuICBsZXQgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmUgfVxuXG4gIGxldCBzZXRfaXR0ZXJhdGlvbl9ib3VuZCBwYXJhbWV0ZXIgaW50ID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyID0gU29tZSBpbnQgfVxuXG4gIGxldCBnZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXJcblxuICBsZXQgZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9wcm9maWxpbmdcbiAgbGV0IHN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIucnVsZV9uYW1lX2NhY2hlLihpKVxuICBsZXQgc3RyaW5nX29mX2FnZW50X2lkIGhhbmRsZXIgaSA9IGhhbmRsZXIuYWdlbnRfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IGdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXIgPSBoYW5kbGVyLnN0ZXBzX2J5X2NvbHVtblxuICBsZXQgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnRpbWVfaW5kZXBlbmRlbnRcbiAgbGV0IGdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciA9IHBhcmFtZXRlci5ibGFja2xpc3RfZXZlbnRzXG4gIGxldCBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuc2VydmVyXG4gIGxldCBnZXRfc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9zZXJ2ZXJcblxuICBsZXQgc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGxvZ2dlcl9zZXJ2ZXIgPSBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXI7XG4gICAgICBpc19zZXJ2ZXJfY2hhbm5lbF9vbiA9IGZhbHNlO1xuICAgIH1cblxuICBsZXQgaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyID0gcGFyYW1ldGVyLmlzX3NlcnZlcl9jaGFubmVsX29uXG5cbiAgbGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHhcblxuICBsZXQgZHVtcF9qc29uIHBhcmFtZXRlciBtZXNzYWdlID1cbiAgICBpZiBpc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgcGFyYW1ldGVyLmR1bXBcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKFN0b3J5X2pzb24ubWVzc2FnZV90b19qc29uIG1lc3NhZ2UpKVxuXG4gIGxldCBzYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgeCA9XG4gICAgbGV0IGIsIGksIF9qLCBuX3N0b3JpZXMgPSB4IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGR1bXBfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgKFN0b3J5X2pzb24uUHJvZ3Jlc3NcbiAgICAgICAgICAge1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uYm9vbCA9XG4gICAgICAgICAgICAgICAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICBcInRydWVcIlxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi5jdXJyZW50ID0gaTtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLnRvdGFsID0gbl9zdG9yaWVzO1xuICAgICAgICAgICB9KVxuICAgIGluXG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgeFxuXG4gIGxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgKClcblxuICBsZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgKClcblxuICBsZXQgc2V0X3NhdmVfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1ldGVyLmthc2Egd2l0aFxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3NhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9yZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAgeyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhciA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHNhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciB4ID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgeFxuXG4gIGxldCBzZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID0geyBwYXJhbWV0ZXIua2FzYSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfZXJyb3JfbGlzdCA9IGYgfTtcbiAgICB9XG5cbiAgbGV0IHB1c2hfanNvbiBwYXJhbWV0ZXIganNvbiA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmpzb25fYnVmZmVyIHdpdGhcbiAgICB8IE5vbmUgLT4gZHVtcF9qc29uIHBhcmFtZXRlciBqc29uXG4gICAgfCBTb21lIHJlZiAtPiByZWYgOj0gRmlmby5wdXNoIGpzb24gIXJlZlxuXG4gIGxldCBwb3BfanNvbiBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcmVmIC0+XG4gICAgICBsZXQgZmlmbywgZWx0X29wdCA9IEZpZm8ucG9wICFyZWYgaW5cbiAgICAgIGxldCAoKSA9IHJlZiA6PSBmaWZvIGluXG4gICAgICBlbHRfb3B0XG5lbmRcbiIsIigqKlxuICAqIGthcHBhX2luc3RhbnRpYXRpb24ubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDE1XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcblxubGV0IGNvbXBvc2Vfd2l0aF9oYW5kbGVyIGYgZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4ID1cbiAgbGV0IGVycm9yLCB5ID0gZyBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciB4IGluXG4gIGYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeVxuXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxubW9kdWxlIHR5cGUgQ2Zsb3dfc2lnbmF0dXJlID0gc2lnXG4gIG1vZHVsZSBIIDogQ2Zsb3dfaGFuZGxlci5DZmxvd19oYW5kbGVyXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuXG4gIG1vZHVsZSBBZ2VudElkU2V0IDogU2V0TWFwLlNldCB3aXRoIHR5cGUgZWx0ID0gYWdlbnRfaWRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG4gIHR5cGUgc2lkZV9lZmZlY3QgPSBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0XG5cbiAgdmFsIGVtcHR5X3NpZGVfZWZmZWN0IDogc2lkZV9lZmZlY3RcblxuICB2YWwgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgOlxuICAgIEluc3RhbnRpYXRpb24uYmluZGluZ190eXBlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gaW50XG4gIHZhbCBhZ2VudF9uYW1lX29mX2FnZW50IDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgYWdlbnRfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5jb25jcmV0ZVxuXG4gIHZhbCBhZ2VudF9pZF9vZl9zaXRlIDogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gaW50XG5cbiAgdmFsIGFnZW50X25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIHNpdGVfbmFtZV9vZl9zaXRlIDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSAtPiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuXG4gIHZhbCBidWlsZF9ncmlkIDpcbiAgICAoVHJhY2Uuc3RlcCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIGxpc3QpIGxpc3QgLT5cbiAgICBib29sIC0+XG4gICAgSC5oYW5kbGVyIC0+XG4gICAgQ2F1c2FsLmdyaWRcblxuICB2YWwgcHJpbnRfc2lkZV9lZmZlY3QgOiBMb2dnZXJzLnQgLT4gc2lkZV9lZmZlY3QgLT4gdW5pdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9saXN0IDpcbiAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0IC0+IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGdldF9pZF9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGludCBvcHRpb25cbiAgdmFsIGdldF90aW1lX29mX3JlZmluZWRfc3RlcCA6IFRyYWNlLnN0ZXAgLT4gZmxvYXQgb3B0aW9uXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChUcmFjZS5zdGVwLCBhZ2VudF9pZCAtPiBib29sLCBQcmlvcml0eS5sZXZlbCkgSC5iaW5hcnlcblxuICB2YWwgZGlzYW1iaWd1YXRlIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBjbGVhbl9ldmVudHMgOiBUcmFjZS50IC0+IFRyYWNlLnRcbiAgdmFsIGZpbGxfc2lwaG9uIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBzcGxpdF9pbml0IDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBhZ2VudF9pZF9pbl9vYnMgOiAoVHJhY2Uuc3RlcCwgQWdlbnRJZFNldC50KSBILnVuYXJ5XG5lbmRcblxubW9kdWxlIENmbG93X2xpbmtlciA6IENmbG93X3NpZ25hdHVyZSA9IHN0cnVjdFxuICBtb2R1bGUgSCA9IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuICBtb2R1bGUgUEkgPSBJbnN0YW50aWF0aW9uXG5cbiAgdHlwZSBhZ2VudF9pZCA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gUEkuY29uY3JldGUgUEkuc2l0ZSBsaXN0XG5cbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBTaXRlTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIFNpdGVTZXQgPSBNb2RzLkludFNldFxuXG4gIHR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcblxuICBsZXQgZW1wdHlfc2lkZV9lZmZlY3QgPSBbXVxuICBsZXQgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA9IHNuZFxuICBsZXQgYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBmc3RcbiAgbGV0IGFnZW50X2lkX29mX2FnZW50ID0gZnN0XG4gIGxldCBhZ2VudF9uYW1lX29mX2FnZW50ID0gc25kXG4gIGxldCBhZ2VudF9vZl9zaXRlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9zaXRlIHggPSBhZ2VudF9pZF9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IGFnZW50X25hbWVfb2Zfc2l0ZSB4ID0gYWdlbnRfbmFtZV9vZl9hZ2VudCBAQCBhZ2VudF9vZl9zaXRlIHhcbiAgbGV0IHNpdGVfbmFtZV9vZl9zaXRlID0gc25kXG5cbiAgbGV0IGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIGYgeCA9XG4gICAgbWF0Y2ggVHJhY2Uuc2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAgeCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbiAgbGV0IGdldF90aW1lX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkgeFxuXG4gIGxldCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIHggPVxuICAgIGdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIChmdW4geCAtPiB4LlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkgeFxuXG4gIGxldCBidWlsZF9ncmlkIGxpc3QgYm9vbCBoYW5kbGVyID1cbiAgICBsZXQgZW52ID0gaGFuZGxlci5ILmVudiBpblxuICAgIGxldCBlbXB0eV9zZXQgPSBbXSBpblxuICAgIGxldCBncmlkID0gQ2F1c2FsLmVtcHR5X2dyaWQgKCkgaW5cbiAgICBsZXQgZ3JpZCwgXywgXywgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgc3VicykgKGssIHNpZGUpIC0+XG4gICAgICAgICAgbGV0IG1heWJlX3NpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICBmdW4gc2UgLT5cbiAgICAgICAgICAgIHNlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGZ1biBfIC0+XG4gICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgc2lkZV9lZmZlY3Qgc2lkZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zbGF0ZSB5ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IHkgeSBzdWJzIGluXG4gICAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5SVUxFIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlBlcnQgKGlkLCBldmVudCwgaW5mbykgLT5cbiAgICAgICAgICAgIGxldCBldmVudCcgPSBQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQgdHJhbnNsYXRlIGV2ZW50IGluXG4gICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3RzX2RzdCA9XG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRcbiAgICAgICAgICAgICAgICAoIFRyYWNlLlBFUlQgaWQsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24udGVzdHMgPSBldmVudCcuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gZXZlbnQnLkluc3RhbnRpYXRpb24uYWN0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgICAgICAgICAgICBldmVudCcuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaW5mbyApXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgZW1wdHlfc2V0LFxuICAgICAgICAgICAgICBjb3VudGVyICsgMSxcbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHkgKVxuICAgICAgICAgIHwgVHJhY2UuT2JzIChpZCwgdGVzdHMsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IHRyYW5zbGF0ZSkpXG4gICAgICAgICAgICAgICAgdGVzdHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfb2JzIChpZCwgdGVzdHMnLCBpbmZvKSBzaWRlX2VmZmVjdCBjb3VudGVyIGdyaWQsXG4gICAgICAgICAgICAgIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgKGEsIGIpIC0+XG4gICAgICAgICAgICBncmlkLCBzaWRlX2VmZmVjdCwgY291bnRlciwgTW9kcy5JbnRNYXAuYWRkIGEgYiBzdWJzXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGFjdGlvbnMgLT5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZF9pbml0XG4gICAgICAgICAgICAgICAgKFRyYWNlLmNyZWF0aW9uX29mX2FjdGlvbnMgc25kIGFjdGlvbnMnLCBhY3Rpb25zJylcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBzaWRlX2VmZmVjdCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLkR1bW15IF8gLT4gZ3JpZCwgbWF5YmVfc2lkZV9lZmZlY3QgZW1wdHlfc2V0LCBjb3VudGVyLCBzdWJzKVxuICAgICAgICAoZ3JpZCwgZW1wdHlfc2V0LCAxLCBNb2RzLkludE1hcC5lbXB0eSlcbiAgICAgICAgbGlzdFxuICAgIGluXG4gICAgZ3JpZFxuXG4gIGxldCBjbGVhbl9ldmVudHMgPVxuICAgIExpc3QuZmlsdGVyIChmdW5jdGlvblxuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkluaXQgXyAtPiB0cnVlXG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gLT4gZmFsc2UpXG5cbiAgbGV0IHByaW50X3NpZGVfZWZmZWN0IGxvZyA9XG4gICAgTGlzdC5pdGVyIChmdW4gKChhLCBfKSwgYikgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiglaSwlaSksXCIgYSBiKVxuXG4gIGxldCBzaWRlX2VmZmVjdF9vZl9saXN0IGwgPSBsXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHByaW9yaXR5X29wdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgZSBzZXQgPVxuICAgIG1hdGNoIHByaW9yaXR5X29wdCwgSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIFByaW9yaXR5LmhpZ2hlc3RcbiAgICB8IFNvbWUgcHJpb3JpdGllcywgXyB8IE5vbmUsIFNvbWUgcHJpb3JpdGllcyAtPlxuICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgfCBUcmFjZS5PYnMgXyAtPiBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkub3RoZXJfZXZlbnRzXG4gICAgICB8IFRyYWNlLlJ1bGUgXyB8IFRyYWNlLlBlcnQgXyAtPlxuICAgICAgICBsZXQgYWN0aW9ucyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBlIGluXG4gICAgICAgIGxldCBwcmlvcml0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gcHJpb3JpdHkgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICAgICAgICAgICAgaWYgc2V0IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkubWluX2xldmVsIHByaW9yaXR5IHByaW9yaXRpZXMuUHJpb3JpdHkuY3JlYXRpb25cbiAgICAgICAgICAgICAgfCBQSS5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnJlbW92YWxcbiAgICAgICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiBwcmlvcml0eVxuICAgICAgICAgICAgICB8IFBJLkZyZWUgXyAtPlxuICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LnVuYmluZGluZ1xuICAgICAgICAgICAgICB8IFBJLkJpbmQgKF8sIF8pIHwgUEkuQmluZF90byAoXywgXykgLT4gcHJpb3JpdHkpXG4gICAgICAgICAgICBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50cyAoZnN0IGFjdGlvbnMpXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgcHJpb3JpdHlcbiAgICAgIHwgVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXRpZXMuUHJpb3JpdHkuc3Vic3RpdHV0aW9uKVxuXG4gIGxldCBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgPSBmdW5jdGlvblxuICAgICgqIG1hcHBpbmcgLT4gYmVmb3JlIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSByZW1vdmVkICopXG4gICAgKCogbWFwcGluZycgLT4gYWZ0ZXIgdGhlIGV2ZW50LCBpbmNsdWRpbmcgYWdlbnRzIHRvIGJlIGNyZWF0ZWQgKilcbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG9uZSBhZ2VudCBpcyByZW1vdmVkLCBhbmQgb25lIGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBpZCBpbiBhIHNpbmdsZSBldmVudCAqKVxuICAgIHwgVHJhY2UuUnVsZSAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5SdWxlXG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5QZXJ0IChhLCBldmVudCwgaW5mbykgLT5cbiAgICAgIFRyYWNlLlBlcnRcbiAgICAgICAgKCBhLFxuICAgICAgICAgIFBJLnN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZXZlbnRcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZylcbiAgICAgICAgICAgIChmdW4geCAtPiBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCB4IHggbWFwcGluZycpXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICBpbmZvIClcbiAgICB8IFRyYWNlLk9icyAoYSwgYiwgYykgLT5cbiAgICAgIFRyYWNlLk9ic1xuICAgICAgICAoIGEsXG4gICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCAoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpKSlcbiAgICAgICAgICAgIGIsXG4gICAgICAgICAgYyApXG4gICAgfCBUcmFjZS5Jbml0IGIgLT5cbiAgICAgIFRyYWNlLkluaXRcbiAgICAgICAgKExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKSlcbiAgICAgICAgICAgYilcbiAgICB8IChUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfKSBhcyBldmVudCAtPiBldmVudFxuXG4gIGxldCBkaXNhbWJpZ3VhdGUgZXZlbnRfbGlzdCA9XG4gICAgbGV0IF8sIF8sIF8sIGV2ZW50X2xpc3RfcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1heF9pZCwgdXNlZCwgbWFwcGluZywgZXZlbnRfbGlzdCkgZXZlbnQgLT5cbiAgICAgICAgICBsZXQgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpIHggLT5cbiAgICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSB4IHVzZWQgdGhlblxuICAgICAgICAgICAgICAgICAgKCBtYXhfaWQgKyAxLFxuICAgICAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZCAobWF4X2lkICsgMSkgdXNlZCxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCAobWF4X2lkICsgMSkgbWFwcGluZyApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF4IHggbWF4X2lkLCBBZ2VudElkU2V0LmFkZCB4IHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcpXG4gICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbWFwcGluZyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG5ld2x5IGNyZWF0ZWQgb25lcyAqKVxuICAgICAgICAgICgqIG1hcHBpbmcnIGNhbiBiZSBzYWZlbHkgYXBwbGllZCB0byBhbGwgYWdlbnRzIGV4Y2VwdCB0aGUgb25lcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHJlbW92ZXMgKilcbiAgICAgICAgICBsZXQgbGlzdCA9IHN1YnNfYWdlbnRfaW5fZXZlbnQgbWFwcGluZyBtYXBwaW5nJyBldmVudCA6OiBldmVudF9saXN0IGluXG4gICAgICAgICAgbWF4X2lkLCB1c2VkLCBtYXBwaW5nJywgbGlzdClcbiAgICAgICAgKDAsIEFnZW50SWRTZXQuZW1wdHksIEFnZW50SWRNYXAuZW1wdHksIFtdKVxuICAgICAgICBldmVudF9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBldmVudF9saXN0X3JldlxuXG4gIHR5cGUgYWdlbnRfaW5mbyA9IHtcbiAgICBpbml0aWFsX3N0ZXA6IFRyYWNlLnN0ZXA7XG4gICAgaW50ZXJuYWxfc3RhdGVzOiBpbnRlcm5hbF9zdGF0ZSBTaXRlTWFwLnQ7XG4gICAgYm91bmRfc2l0ZXM6IFNpdGVTZXQudDtcbiAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlOiBTaXRlU2V0LnQ7XG4gIH1cblxuICBsZXQgY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBhY3Rpb25fbGlzdCA9XG4gICAgbGV0IGV4dHJhY3RfYWdlbnQgaWQgc291cCA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFBJLkNyZWF0ZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5Nb2RfaW50ZXJuYWwgKCgoaWQnLCBfKSwgXyksIF8pXG4gICAgICAgICAgfCBQSS5GcmVlICgoaWQnLCBfKSwgXylcbiAgICAgICAgICB8IFBJLkJpbmRfdG8gKCgoaWQnLCBfKSwgXyksIF8pIC0+XG4gICAgICAgICAgICBpZCA9IGlkJ1xuICAgICAgICAgIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFpbHdpdGggXCJQcm9ibGVtYXRpYyBpbml0aWFsIGV2ZW50XCIpXG4gICAgICAgIHNvdXBcbiAgICBpblxuICAgIGxldCByZWMgYXV4IHJlY3VyIGFjYyBzb3VwID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCAoaWYgc291cCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgVHJhY2UuSW5pdCBzb3VwIDo6IGFjY1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYWNjKSxcbiAgICAgICAgICByZWN1ciApXG4gICAgICB8IFBJLkZyZWUgXyA6OiB0IC0+IGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IChQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyB8IFBJLkJpbmRfdG8gXyB8IFBJLk1vZF9pbnRlcm5hbCBfKSA6OiB0IC0+XG4gICAgICAgIGF1eCByZWN1ciBhY2Mgc291cCB0XG4gICAgICB8IFBJLkNyZWF0ZSAoKGlkLCBfKSwgc2l0ZV9saXN0KSA6OiB0IC0+XG4gICAgICAgIGxldCB0aGlzLCBzb3VwJyA9IGV4dHJhY3RfYWdlbnQgaWQgc291cCBpblxuICAgICAgICBsZXQgc3RhbmRhbG9uZSA9XG4gICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQSS5DcmVhdGUgXyB8IFBJLkZyZWUgXyB8IFBJLk1vZF9pbnRlcm5hbCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgfCBQSS5CaW5kX3RvIF8gfCBQSS5CaW5kIF8gfCBQSS5SZW1vdmUgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIHRoaXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoaXMgPSBUcmFjZS5Jbml0IHRoaXMgaW5cbiAgICAgICAgaWYgc3RhbmRhbG9uZSB0aGVuIChcbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gbWFwIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBzLCBTb21lIHUgLT4gU2l0ZU1hcC5hZGQgcyB1IG1hcFxuICAgICAgICAgICAgICAgIHwgXywgTm9uZSAtPiBtYXApXG4gICAgICAgICAgICAgIFNpdGVNYXAuZW1wdHkgc2l0ZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWdlbnRfaW5mbyA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGluaXRpYWxfc3RlcCA9IHRoaXM7XG4gICAgICAgICAgICAgIGludGVybmFsX3N0YXRlcyA9IG1hcDtcbiAgICAgICAgICAgICAgYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmVtcHR5O1xuICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCAoQWdlbnRJZE1hcC5hZGQgaWQgYWdlbnRfaW5mbyByZWN1cikgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCByZWN1ciAodGhpcyA6OiBhY2MpIHNvdXAnIHRcbiAgICBpblxuICAgIGF1eCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgYWN0aW9uX2xpc3RcblxuICBsZXQgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ2VudF9pbmZvID1cbiAgICBsZXQgcmVzdHJpY3Rpb24gPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHJlc3RyaWN0aW9uX21hcFxuICAgIGluXG4gICAgU2l0ZVNldC5pc19lbXB0eSAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLmJvdW5kX3NpdGVzIHJlc3RyaWN0aW9uKVxuICAgICYmIFNpdGVTZXQuaXNfZW1wdHlcbiAgICAgICAgIChTaXRlU2V0LmludGVyIGFnZW50X2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSByZXN0cmljdGlvbilcblxuICBsZXQgbW9kX3NpdGUgcmVzdHJpY3Rpb25fbWFwIHNpdGUgc3RhdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICAobWF0Y2ggU2l0ZU1hcC5maW5kX29wdGlvbiBzX25hbWUgYWdfaW5mby5pbnRlcm5hbF9zdGF0ZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICAgIHwgU29tZSBzdGF0ZV9yZWYgLT5cbiAgICAgICAgaWYgc3RhdGVfcmVmID0gc3RhdGUgKCogQmFjayB0byB0aGUgb3JpZ2luYWwgaW50ZXJuYWwgc3RhdGUqKSB0aGVuXG4gICAgICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFnX2luZm8gd2l0aFxuICAgICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSBpZlxuICAgICAgICAgICgqIE5vIGxvbmdlciB0aGUgZGVmYXVsdCBzdGF0ZSAqKVxuICAgICAgICAgIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQucmVtb3ZlIGFnaWQgc2V0XG4gICAgICAgICkpXG5cbiAgbGV0IHVuYmluZF9zaWRlIHJlc3RyaWN0aW9uX21hcCAoYWdpZCwgc19uYW1lKSAocmVtYW5lbnQsIHNldCkgPVxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlbiAoXG4gICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5yZW1vdmUgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5hZGQgYWdpZCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICkgZWxzZVxuICAgICAgICByZW1hbmVudCwgc2V0XG5cbiAgbGV0IHVuYmluZCByZXN0cmljdGlvbl9tYXAgc2l0ZSByZW0gPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgcmVtXG5cbiAgbGV0IGJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgKHJlbWFuZW50LCBzZXQpID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBhZ2lkIHJlbWFuZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtYW5lbnQsIHNldFxuICAgIHwgU29tZSBhZ19pbmZvIC0+XG4gICAgICBpZiBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB0aGVuXG4gICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgeyBhZ19pbmZvIHdpdGggYm91bmRfc2l0ZXMgPSBTaXRlU2V0LmFkZCBzX25hbWUgYWdfaW5mby5ib3VuZF9zaXRlcyB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuYWRkIGFnaWQgYWdfaW5mbyByZW1hbmVudCBpblxuICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgIHJlbWFuZW50LCBzZXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgKVxuXG4gIGxldCBzcGxpdF9pbml0IHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgZnN0XG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgICB8IFRyYWNlLkluaXQgaW5pdCAtPiBjb252ZXJ0X2luaXQgcmVtYW5lbnQgc3RlcF9saXN0IGluaXRcbiAgICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5SdWxlIF9cbiAgICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgICByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudClcbiAgICAgICAgIChbXSwgcmVtYW5lbnQpXG4gICAgICAgICAoTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QpKVxuXG4gIGxldCBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBvbGRfc2V0ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgU2l0ZVNldC5lbXB0eSBhZ2lkIHNjb3BlIGluXG4gICAgbGV0IG5ld19zZXQgPSBTaXRlU2V0LmFkZCBzX25hbWUgb2xkX3NldCBpblxuICAgIGlmIG9sZF9zZXQgPT0gbmV3X3NldCB0aGVuXG4gICAgICBzY29wZVxuICAgIGVsc2VcbiAgICAgIEFnZW50SWRNYXAuYWRkIGFnaWQgbmV3X3NldCBzY29wZVxuXG4gIGxldCBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzY29wZSB4IC0+XG4gICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICB8IFBJLklzX0hlcmUgXyAtPiBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kIHNpdGVcbiAgICAgICAgICAgfCBQSS5Jc19GcmVlIHNpdGVcbiAgICAgICAgICAgfCBQSS5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKVxuICAgICAgICAgICB8IFBJLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgICBhZGRfaW5fc2NvcGUgc2l0ZSBzY29wZVxuICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUxIChhZGRfaW5fc2NvcGUgc2l0ZTIgc2NvcGUpKSlcbiAgICAgIHNjb3BlIHRlc3RzXG5cbiAgbGV0IGZpbGxfc2lwaG9uIHJlZmluZWRfc3RlcF9saXN0ID1cbiAgICBsZXQgcmV2X3RyYWNlID0gTGlzdC5yZXYgcmVmaW5lZF9zdGVwX2xpc3QgaW5cbiAgICBsZXQgc2NvcGUgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgbGV0IHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3QsIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoc3RlcF9saXN0LCBzY29wZSkgcmVmaW5lZF9zdGVwIC0+XG4gICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPiAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZVxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuT2JzIChfLCB0ZXN0cywgXykgLT5cbiAgICAgICAgICAgIGxldCBzY29wZScgPSBkZWFsX3dpdGhfdGVzdHMgdGVzdHMgc2NvcGUgaW5cbiAgICAgICAgICAgIChyZWZpbmVkX3N0ZXAsIHNjb3BlKSA6OiBzdGVwX2xpc3QsIHNjb3BlJ1xuICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuRHVtbXkgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgc2NvcGUpIHJldl90cmFjZVxuICAgIGluXG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCBhLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQsIF8gLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgfCBUcmFjZS5SdWxlIChfLCBldmVudCwgXyksIHNjb3BlIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIF8pLCBzY29wZSAtPlxuICAgICAgICAgICAgbGV0IHJlbWFuZW50LCBzZXQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gcmVjdXIgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gLT4gcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIChzaXRlLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbW9kX3NpdGUgc2NvcGUgc2l0ZSBzdGF0ZSByZWN1clxuICAgICAgICAgICAgICAgICAgfCBQSS5CaW5kIChzaXRlMSwgc2l0ZTIpIHwgUEkuQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5kIHNjb3BlIHNpdGUxIChiaW5kIHNjb3BlIHNpdGUyIHJlY3VyKVxuICAgICAgICAgICAgICAgICAgfCBQSS5GcmVlIHNpdGUgLT4gdW5iaW5kIHNjb3BlIHNpdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT4gcmVjdXIpXG4gICAgICAgICAgICAgICAgKHJlbWFuZW50LCBBZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0ICh1bmJpbmQgc2NvcGUpXG4gICAgICAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IChyZW1hbmVudCwgc2V0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQWdlbnRJZFNldC5mb2xkXG4gICAgICAgICAgICAgICAgKGZ1biBpZCBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGlkIHJlbWFuZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+IHguaW5pdGlhbF9zdGVwIDo6IGxpc3RcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0KVxuICAgICAgICAgICAgICAgIHNldFxuICAgICAgICAgICAgICAgIChmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCksXG4gICAgICAgICAgICAgIHJlbWFuZW50IClcbiAgICAgICAgICB8IFRyYWNlLk9icyBfLCBfIC0+IGZzdCByZWZpbmVkX3N0ZXAgOjogc3RlcF9saXN0LCByZW1hbmVudFxuICAgICAgICAgIHwgVHJhY2UuU3VicyBfLCBfIHwgVHJhY2UuRHVtbXkgXywgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChbXSwgcmVtYW5lbnQpIHJlZmluZWRfc3RlcF93aXRoX3Njb3BlX2xpc3RcbiAgICBpblxuICAgIExpc3QucmV2IGFcblxuICBsZXQgYWdlbnRfaWRfaW5fb2JzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciA9IGZ1bmN0aW9uXG4gICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAtPlxuICAgICAgZXJyb3IsIGluZm8sIEFnZW50SWRTZXQuZW1wdHlcbiAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBpbmZvLFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGwgeCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IFBJLklzX0hlcmUgeCAtPiBBZ2VudElkU2V0LmFkZCAoYWdlbnRfaWRfb2ZfYWdlbnQgeCkgbFxuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBfIHwgUEkuSXNfRnJlZSBfIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICB8IFBJLklzX0JvdW5kX3RvIF8gfCBQSS5IYXNfSW50ZXJuYWwgXyAtPlxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5IHRlc3RzIClcbmVuZFxuIiwiKCoqXG4gICogcG9fY3V0Lm1sXG4gICpcbiAgKiBDdXQgY29uY3VycmVudCBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAxNi8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDAyLzA4LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgUG9fY3V0ID0gc2lnXG4gIG1vZHVsZSBLIDogS2FwcGFfaW5zdGFudGlhdGlvbi5DZmxvd19zaWduYXR1cmVcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIEsuSC51bmFyeVxuXG4gIHR5cGUgb25fdGhlX2ZseV9zdGF0ZVxuXG4gIHZhbCBpbml0X2N1dCA6IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGN1dF9zdGVwIDogb25fdGhlX2ZseV9zdGF0ZSAtPiBUcmFjZS5zdGVwIC0+IG9uX3RoZV9mbHlfc3RhdGVcbiAgdmFsIGZpbmFsaXplX2N1dCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgdmFsIGN1dF9yZXZfdHJhY2UgOlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKnJldmVyc2Ugb3JkZXIqKSAtPlxuICAgIFRyYWNlLnN0ZXAgbGlzdCAoKiBjb3JyZWN0IG9yZGVyICopICogaW50XG5lbmRcblxubW9kdWxlIFBvX2N1dCA6IFBvX2N1dCA9IHN0cnVjdFxuICBtb2R1bGUgSyA9IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfbGlua2VyXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBIZXJlIG9mIEsuYWdlbnRfaWRcbiAgICB8IEJvdW5kX3NpdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSBvZiBLLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICBtb2R1bGUgUFNNID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQUyA9IFBTTS5TZXRcblxuICBsZXQgY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGxpc3QgPSBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgOjogbGlzdCBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgXyAtPiBJbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QpXG4gICAgICAgIFsgSGVyZSBhZ19pZCBdIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cbiAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT4gW11cblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHRlc3QgPVxuICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnZW50IC0+IFsgSGVyZSAoSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICBbIEludGVybmFsX3N0YXRlIChLLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBbIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMxLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMxKTtcbiAgICAgICAgQm91bmRfc2l0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHMyLCBLLnNpdGVfbmFtZV9vZl9zaXRlIHMyKTtcbiAgICAgIF1cblxuICBsZXQgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgc2lkZXMgPVxuICAgIExpc3QubWFwIChmdW4gKChhZ19pZCwgXyksIHNfaWQpIC0+IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSkgc2lkZXNcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGUgPSBQUy50ICogVHJhY2Uuc3RlcCBsaXN0ICogaW50XG5cbiAgbGV0IGluaXRfY3V0ID0gUFMuZW1wdHksIFtdLCAwXG4gIGxldCBmaW5hbGl6ZV9jdXQgKF9hLCBiLCBjKSA9IGIsIGNcblxuICBsZXQgY3V0X3N0ZXAgKHNlZW4sIGtlcHQsIG5fY3V0KSBldmVudCA9XG4gICAgbGV0IHJlYyBrZWVwIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQwIDo6IHEwIC0+XG4gICAgICAgIGxldCByZWMgYXV4MSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGtlZXAgcTBcbiAgICAgICAgICB8IHQxIDo6IHExIC0+XG4gICAgICAgICAgICBpZiBQUy5tZW0gdDEgc2VlbiB0aGVuXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4MSBxMVxuICAgICAgICBpblxuICAgICAgICBhdXgxIChwcmVkaWNhdGVzX29mX2FjdGlvbiB0MClcbiAgICBpblxuICAgIGxldCByZWMga2VlcDIgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGlmIFBTLm1lbSB0IHNlZW4gdGhlblxuICAgICAgICAgIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGtlZXAyIHFcbiAgICBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGxldCBzZWVuID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VlbiBhY3Rpb24gLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBzZWVuIGVsdCAtPiBQUy5yZW1vdmUgZWx0IHNlZW4pXG4gICAgICAgICAgICBzZWVuXG4gICAgICAgICAgICAoY3JlYXRlZF9wcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24pKVxuICAgICAgICBzZWVuIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgYWN0aW9ucywgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBldmVudCBpblxuICAgIGlmXG4gICAgICBUcmFjZS5zdGVwX2lzX29icyBldmVudCB8fCBrZWVwIGFjdGlvbnNcbiAgICAgIHx8IGtlZXAyIChwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyAoVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgZXZlbnQpKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGtlcHQgPSBldmVudCA6OiBrZXB0IGluXG4gICAgICBsZXQgdGVzdHMgPSBUcmFjZS50ZXN0c19vZl9zdGVwIGV2ZW50IGluXG4gICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgcHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KVxuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gdGVzdCAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgICAgICBzZWVuIChwcmVkaWNhdGVzX29mX3Rlc3QgdGVzdCkpXG4gICAgICAgICAgc2VlbiB0ZXN0c1xuICAgICAgaW5cbiAgICAgIGxldCBzZWVuID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNlZW4gcHJlZGljYXRlX2luZm8gLT4gUFMuYWRkIHByZWRpY2F0ZV9pbmZvIHNlZW4pXG4gICAgICAgICAgc2VlbiB0ZXN0cydcbiAgICAgIGluXG4gICAgICBzZWVuLCBrZXB0LCBuX2N1dFxuICAgICkgZWxzZVxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXQgKyAxXG5cbiAgbGV0IGN1dF9yZXZfdHJhY2UgcmV2X2V2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBldmVudF9saXN0LCBuID0gTGlzdC5mb2xkX2xlZnQgY3V0X3N0ZXAgaW5pdF9jdXQgcmV2X2V2ZW50X2xpc3QgaW5cbiAgICBldmVudF9saXN0LCBuXG5cbiAgbGV0IGN1dCBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgZXZlbnRfbGlzdCA9XG4gICAgbGV0IHRyYWNlID0gY3V0X3Jldl90cmFjZSAoTGlzdC5yZXYgZXZlbnRfbGlzdCkgaW5cbiAgICBlcnJvciwgaW5mbywgdHJhY2VcbmVuZFxuIiwiKCoqXG4gICAqIHBzZXVkb19pbnZlcnNlLm1sXG4gICAqXG4gICAqIEN1dCBwc2V1ZG8gaW52ZXJzZSBldmVudHM6IGEgbW9kdWxlIGZvciBLYVNpbVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDQvMjAxMlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjEvMTEvMjAxM1xuICAgKiAqXG4gICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgICpcbiAgICogQ29weXJpZ2h0IDIwMTEsMjAxMiwgMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ3V0X3BzZXVkb19pbnZlcnNlID0gc2lnXG4gIG1vZHVsZSBQbyA6IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuXG4gIHZhbCBjdXQgOiAoVHJhY2UudCwgVHJhY2UudCAqIGludCkgUG8uSy5ILnVuYXJ5XG5lbmRcblxubW9kdWxlIFBzZXVkb19pbnYgOiBDdXRfcHNldWRvX2ludmVyc2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBvID0gUG9fY3V0LlBvX2N1dFxuICBtb2R1bGUgQSA9IE1vZHMuRHluQXJyYXlcbiAgbW9kdWxlIENQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwXG4gIG1vZHVsZSBQcmVkaWNhdGVNYXAgPSBQcmVkaWNhdGVfbWFwcy5QcmVkaWNhdGVNYXBcblxuICB0eXBlIHByZWRpY2F0ZV9pbmZvID0gUHJlZGljYXRlX21hcHMucHJlZGljYXRlX2luZm9cbiAgdHlwZSBzdGVwX2lkID0gaW50XG5cbiAgbGV0IHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnN0cmluZ19vZl9wcmVkaWNhdGVfaW5mb1xuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBpID1cbiAgICBtYXRjaCBwaSB3aXRoXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBzIC0+IHN0cmluZ19vZl9pbnQgc1xuICAgIHwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIC0+IFwiI1VuZGVmXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlByZXNlbnQgLT4gXCIjSGVyZVwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5GcmVlIC0+IFwiI0ZyZWVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnLCBhZ2VudF9uYW1lLCBzKSAtPlxuICAgICAgXCJCb3VuZF90byBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiIFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgc1xuXG4gIHR5cGUgcHNldWRvX2ludl9ibGFja2JvYXJkID0ge1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX2lkICogUHJlZGljYXRlX21hcHMucHJlZGljYXRlX3ZhbHVlICogYm9vbCkgbGlzdCBDUHJlZGljYXRlTWFwLnQ7XG4gICAgbnN0ZXBzOiBzdGVwX2lkO1xuICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQ6IHByZWRpY2F0ZV9pbmZvIGxpc3QgQS50O1xuICAgIGlzX3JlbW92ZV9hY3Rpb246IGJvb2wgQS50O1xuICAgIG1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQ6IGludCBBLnQ7XG4gICAgaGFzX21vZF93aXRob3V0X3Rlc3Q6IGJvb2wgQS50O1xuICAgIGV2ZW50OiBUcmFjZS5zdGVwIG9wdGlvbiBBLnQ7XG4gICAgYWdlbnRfbGlzdDogaW50IGxpc3Q7XG4gIH1cblxuICBsZXQgaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciA9XG4gICAge1xuICAgICAgc3RlcHNfYnlfY29sdW1uID0gUG8uSy5ILmdldF9wcmVkaWNhdGVfbWFwIGhhbmRsZXI7XG4gICAgICBuc3RlcHMgPSAtMTtcbiAgICAgIHByZWRpY2F0ZXNfb2ZfZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBbXTtcbiAgICAgIGlzX3JlbW92ZV9hY3Rpb24gPSBBLm1ha2Ugbl9zdGVwcyBmYWxzZTtcbiAgICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0ID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5jcmVhdGUgbl9zdGVwcyAwO1xuICAgICAgZXZlbnQgPSBBLm1ha2Ugbl9zdGVwcyBOb25lO1xuICAgICAgYWdlbnRfbGlzdCA9IFtdO1xuICAgIH1cblxuICBsZXQgX3ByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiQmxhY2tib2FyZCBmb3IgcmVtb3ZpbmcgcHNldWRvIGludmVyc2UgZWxlbWVudFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIm5fZXZlbnRzOiAlaVwiIGJsYWNrYm9hcmQubnN0ZXBzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIlN0ZXBzX2J5X2NvbHVtbjpcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENQcmVkaWNhdGVNYXAuaXRlclxuICAgICAgICAoZnVuIHByZWQgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzOiBcIlxuICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHByZWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCB2YWx1ZSwgYm9vbCkgLT5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKCVpLCVzJXMpLFwiIGVpZFxuICAgICAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAoaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBcIihNb2QpXCJcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBcIlwiKSlcbiAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpXG4gICAgICAgIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIkV2ZW50czpcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSBibGFja2JvYXJkLm5zdGVwcyB0aGVuXG4gICAgICAgIGVycm9yXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGV2ZW50ID1cbiAgICAgICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkVSUkVVUiAlaSAxMjNcIiBrXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYWlzZSBFeGl0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJFdmVudCAlaSVhXCIga1xuICAgICAgICAgICAgICAgICAgIChUcmFjZS5wcmludF9zdGVwIH5jb21wYWN0OmZhbHNlIH5lbnY6aGFuZGxlci5Qby5LLkguZW52KVxuICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgXCJQcmVkaWNhdGVzOiBcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBsaXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcIiVzLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGlkKSlcbiAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgYm9vbCA9IEEuZ2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRhaW4gYSBkZWxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBpbnQgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiJWkgbW9kaWZpZWQgcHJlZGljYXRlc1wiIGludFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZXJyb3IpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoayArIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSBhdXggMCBpblxuICAgIGVycm9yXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgX2Vycm9yIGJsYWNrYm9hcmQgYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSGVyZSBhZ19pZCBpblxuICAgICAgbGV0IGxpc3QxLCBsaXN0MiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgbGV0IGxpc3QxID0gKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSkgOjogbGlzdDEgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MiA9IHByZWRpY2F0ZV9pZCA6OiBsaXN0MiBpblxuICAgICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0MSwgbGlzdDJcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZSAoYWdfaWQsIHNfaWQpIGluXG4gICAgICAgICAgICAgICggKHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGxpc3QyICkpXG4gICAgICAgICAgKFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IF0sIFsgcHJlZGljYXRlX2lkIF0pXG4gICAgICAgICAgaW50ZXJmYWNlXG4gICAgICBpblxuICAgICAgKCB7IGJsYWNrYm9hcmQgd2l0aCBhZ2VudF9saXN0ID0gYWdfaWQgOjogYmxhY2tib2FyZC5hZ2VudF9saXN0IH0sXG4gICAgICAgIGxpc3QxLFxuICAgICAgICBsaXN0MixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIGludCBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBQby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgUHJlZGljYXRlX21hcHMuQm91bmRfdG8gKGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuRnJlZSBdLCBbXSwgZmFsc2UsIGZhbHNlXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQgXSwgW10sIHRydWUsIGZhbHNlXG5cbiAgbGV0IG5vX3JlbW92ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbm90IChBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gZWlkKVxuXG4gIGxldCBzYW1lX2xlbmd0aCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGVpZDEgZWlkMiA9XG4gICAgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQxXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBlaWQyXG4gICAgfHwgQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGVpZDFcbiAgICAgICA9IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQyXG5cbiAgbGV0IGNsZWFuIHQgY29sdW1uIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgfCBbXSAtPiBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCBib29sID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGVpZCwgXywgZmFsc2UpIDo6IHEgLT5cbiAgICAgICAgICBpZiBlaWQgPSAtMSB0aGVuXG4gICAgICAgICAgICBsaXN0LCBib29sXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgdHJ1ZVxuICAgICAgICAgICAgfCBfIC0+IGxpc3QsIGJvb2xcbiAgICAgICAgICApXG4gICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICBpblxuICAgICAgbGV0IGxpc3QsIGJvb2wgPSBhdXggdGFpbCBmYWxzZSBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGNvbHVtbiA9IGhlYWQgOjogbGlzdCBpblxuICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCB0IGNvbHVtbiBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuICAgICAgKSBlbHNlXG4gICAgICAgIGNvbHVtbiwgYmxhY2tib2FyZFxuXG4gIGxldCBjaGVjayBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZWlkID0gYmxhY2tib2FyZC5uc3RlcHMgaW5cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBzY2FuIHByZWRpY2F0ZV9saXN0ID1cbiAgICAgIG1hdGNoIHByZWRpY2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSB0IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2x1bW4sIGJsYWNrYm9hcmQgPSBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgIChtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiBzY2FuIHEgKCogbm8gbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChfLCB4LCB0cnVlKSA6OiAoXywgeSwgXykgOjogXyB3aGVuIHggPSB5IC0+XG4gICAgICAgICAgc2NhbiBxICgqIG11dGUgbW9kaWYgb24gYSAqKVxuICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gLT5cbiAgICAgICAgICBpZiBhID0gZWlkICYmIHggPSB5IHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBTb21lIChhLCBiKSwgYmxhY2tib2FyZCwgcSAoKiBhIGNhbmNlbHMgYiBtb2RpZiAqKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBxXG4gICAgICAgIHwgXyAtPiBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgY2FuZGlkYXRlcywgYmxhY2tib2FyZCwgcSA9IHNjYW4gcHJlZGljYXRlX2xpc3QgaW5cbiAgICBtYXRjaCBjYW5kaWRhdGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIE5vbmVcbiAgICB8IFNvbWUgKGVpZGEsIGVpZGIpIC0+XG4gICAgICBpZlxuICAgICAgICBub19yZW1vdmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlaWRiXG4gICAgICAgICYmIHNhbWVfbGVuZ3RoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYSBlaWRiXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChfLCBfLCBmYWxzZSkgOjogXyAtPiB0cnVlICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChiLCBfLCB0cnVlKSA6OiAoXywgeSwgXykgOjogX1xuICAgICAgICAgICAgICAgICB3aGVuIGIgPSBlaWRiICYmIGEgPSBlaWRhIC0+XG4gICAgICAgICAgICAgICAgIHggPSB5ICgqIGlmIHllcywgYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBhIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgIHFcbiAgICAgICAgJiYgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgKGZ1biBwaWQgLT5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPVxuICAgICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBbXSBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgY29sdW1uLCBfYmxhY2tib2FyZCA9IGNsZWFuIHBpZCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAgICAgICAgbGV0IHJlYyBjaGVja19hdXggY29sdW1uID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgICAgICAgICAgfCAoYiwgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIHggPSB5ICgqIGlzIGIgbW9kaWYgaXMgbXV0ZSA/ICopXG4gICAgICAgICAgICAgICAgIHwgKGIsIF8sIGJvb2wpIDo6IF8gd2hlbiBiID0gZWlkYiAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCBib29sICgqIGlmIHllcywgYiBkb2VzIG5vdCBkbyBtb2RpZiAqKVxuICAgICAgICAgICAgICAgICB8IChfLCBfLCBfKSA6OiB0YWlsIC0+IGNoZWNrX2F1eCB0YWlsXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBhIGNhbmNlbHMgYiBtb2RpZiopXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgY2hlY2tfYXV4IGNvbHVtbiAoKiBvdGhlcndpc2UgY2hlY2sgdGhhdCBiIGhhcyBubyBlZmZlY3QgICopKVxuICAgICAgICAgICAgIChBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkYilcbiAgICAgIHRoZW5cbiAgICAgICAgZXJyb3IsIFNvbWUgKGVpZGEsIGVpZGIpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBOb25lXG5cbiAgbGV0IHBvcCBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICBsZXQgcHJlZGljYXRlX2xpc3QgPSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkIGluXG4gICAgbGV0IHJlYyBhdXggbCBlcnJvciBibGFja2JvYXJkID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlcnJvciwgYmxhY2tib2FyZFxuICAgICAgfCBwaWQgOjogdGFpbCAtPlxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggQ1ByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwaWQgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW4gd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCAoYSwgXywgXykgOjogcSB3aGVuIGEgPSBlaWQgLT4gcVxuICAgICAgICAgIHwgXyAtPiBsaXN0XG4gICAgICAgIGluXG4gICAgICAgIGF1eCB0YWlsIGVycm9yXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBzdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICBDUHJlZGljYXRlTWFwLmFkZCBwaWQgbGlzdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBhdXggcHJlZGljYXRlX2xpc3QgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgTm9uZSBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBfYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfaW50KSAtPlxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlXG4gICAgICAgICAgKFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpXG4gICAgICBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDEgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZDIgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQxOyBwcmVkaWNhdGVfaWQyIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIF8pIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cblxuICBsZXQgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgPVxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLmV2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgXyA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gVHJhY2Uuc2lkZV9lZmZlY3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYnVpbGRfbWFwX3Rlc3QgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBtYXAgaWQgLT4gUHJlZGljYXRlTWFwLmFkZCBpZCB0cnVlIG1hcCkgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IChmYWxzZSwgTm9uZSkgcGlkIG1hcCBpblxuICAgICAgbGV0IHRlc3QgPSB0ZXN0IHx8IHRlc3QnIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgbWF0Y2ggYWN0aW9uJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgICAgfCBfIC0+IGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlTWFwLmFkZCBwaWQgKHRlc3QsIGFjdGlvbikgbWFwIGluXG4gICAgICBtYXBcbiAgICBpblxuICAgIGxldCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCBpblxuICAgIGxldCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCB0ZXN0IC0+XG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZF9tYXBfdGVzdCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICBQcmVkaWNhdGVNYXAuZW1wdHkgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGFjdGlvbl9tYXAsXG4gICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgaXNfcmVtb3ZlX2FjdGlvbixcbiAgICAgICAgICBfaXNfY3JlYXRlX2FjdGlvbiApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCwgYm9vbCwgYm9vbF9jcmVhdGlvbilcbiAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCwgYm9vbCcsIGJvb2xfY3JlYXRpb24nID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgYWN0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IHRlc3RfbWFwLFxuICAgICAgICAgICAgYm9vbCB8fCBib29sJyxcbiAgICAgICAgICAgIGJvb2xfY3JlYXRpb24gfHwgYm9vbF9jcmVhdGlvbicgKSlcbiAgICAgICAgKGVycm9yLCBibGFja2JvYXJkLCBQcmVkaWNhdGVNYXAuZW1wdHksIHRlc3RfbWFwLCBmYWxzZSwgZmFsc2UpXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5ICh0ZXN0LCBOb25lKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKGZhbHNlLCBTb21lIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZU1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIChmdW4gKChhLCBfKSwgYikgbWFwIC0+XG4gICAgICAgICAgbGV0IHBpZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGEsIGIpIGluXG4gICAgICAgICAgYWRkX3N0YXRlIHBpZCAoZmFsc2UsIFNvbWUgUHJlZGljYXRlX21hcHMuRnJlZSkgbWFwKVxuICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbWVyZ2VkX21hcFxuICAgIGluXG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLm5zdGVwcyArIDEgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgbnNpZCAoU29tZSBzdGVwKSBpblxuICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIHByZV9zdGVwc19ieV9jb2x1bW4sIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgUHJlZGljYXRlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSAobl9tb2RpZmljYXRpb25zLCBtYXAsIGxpc3QsIG1vZF93aXRob3V0X3Rlc3QpIC0+XG4gICAgICAgICAgbGV0IG9sZF9saXN0ID1cbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgIFsgLTEsIFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCwgZmFsc2UgXVxuICAgICAgICAgICAgICBpZCBtYXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggb2xkX2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCAoXywgdiwgXykgOjogXyAtPiB2XG4gICAgICAgICAgICB8IFtdIC0+IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5ld192YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG5fbW9kaWZpY2F0aW9ucywgYm9vbF9hY3Rpb24sIG1vZF93aXRob3V0X3Rlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBuX21vZGlmaWNhdGlvbnMsIGZhbHNlLCBtb2Rfd2l0aG91dF90ZXN0XG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBuX21vZGlmaWNhdGlvbnMgKyAxLCB0cnVlLCBtb2Rfd2l0aG91dF90ZXN0IHx8IHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgICggbl9tb2RpZmljYXRpb25zLFxuICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgaWRcbiAgICAgICAgICAgICAgKChuc2lkLCBuZXdfdmFsdWUsIGJvb2xfYWN0aW9uKSA6OiBvbGRfbGlzdClcbiAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgKGlkLCBuZXdfdmFsdWUpIDo6IGxpc3QsXG4gICAgICAgICAgICBtb2Rfd2l0aG91dF90ZXN0ICkpXG4gICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgKDAsIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uLCBbXSwgZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBpZiBpc19yZW1vdmVfYWN0aW9uIHRoZW4gKFxuICAgICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaXNfcmVtb3ZlX2FjdGlvbiBuc2lkIHRydWUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZXNfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAoTGlzdC5yZXZfbWFwIGZzdCAoTGlzdC5yZXYgbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWQgbl9tb2RpZmljYXRpb25zXG4gICAgaW5cbiAgICBsZXQgKCkgPSBBLnNldCBibGFja2JvYXJkLmhhc19tb2Rfd2l0aG91dF90ZXN0IG5zaWQgbW9kX3dpdGhvdXRfdGVzdCBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGV2ZW50ID0gcHJlX2V2ZW50O1xuICAgICAgICBzdGVwc19ieV9jb2x1bW4gPSBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICBuc3RlcHMgPSBuc2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IG5fc3RlcHMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBpbml0X2JsYWNrYm9hcmQgbl9zdGVwcyBoYW5kbGVyIGluXG4gICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQpIHN0ZXAgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgYWRkX3N0ZXAgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgdG9fcG9wID0gY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBpblxuICAgICAgICAgIG1hdGNoIHRvX3BvcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCBuX2N1dFxuICAgICAgICAgIHwgU29tZSAoZTEsIGUyKSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gcG9wIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZTEgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUyIGluXG4gICAgICAgICAgICBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgKyAyKVxuICAgICAgICAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIDApXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCA9XG4gICAgICAgIGlmIGsgPSAtMSB0aGVuXG4gICAgICAgICAgbGlzdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBBLmdldCBibGFja2JvYXJkLmV2ZW50IGsgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayAtIDEpIChhIDo6IGxpc3QpXG4gICAgICAgICAgfCBOb25lIC0+IGF1eCAoayAtIDEpIGxpc3RcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBibGFja2JvYXJkLm5zdGVwcyBbXVxuICAgIGluXG4gICAgbGV0IHRhYiA9IGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKENQcmVkaWNhdGVNYXAucmVjeWNsZSB0YWIpIGJsYWNrYm9hcmQuYWdlbnRfbGlzdCBpblxuICAgIGVycm9yLCBpbmZvLCAobGlzdCwgbl9jdXQpXG5cbiAgKCogIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgaW5mbyBlcnJvciBsaXN0ID0gZXJyb3IsIGluZm8sIChsaXN0LDApKilcbmVuZFxuIiwiKCoqXG4gICogY2Zsb3dfaGFuZGxlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDI5LzAxLzIwMTZcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXIgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIFByZUJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIEEgOiBHZW5BcnJheS5HZW5BcnJheVxuICBtb2R1bGUgQ0kgOiBQc2V1ZG9faW52ZXJzZS5DdXRfcHNldWRvX2ludmVyc2VcblxuICB0eXBlIHN0ZXBfaWRcblxuICB2YWwgemVyb19zdGVwX2lkIDogc3RlcF9pZFxuICB2YWwgZHVtbXlfc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGludF9vZl9zdGVwX2lkIDogc3RlcF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfaWRcbiAgdmFsIGRlY19zdGVwX2lkIDogc3RlcF9pZCAtPiBzdGVwX2lkXG4gIHZhbCBpbmNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZFxuXG4gIHZhbCB6ZXJvX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkdW1teV9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgaW50X29mX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IGludFxuICB2YWwgc3RlcF9zaG9ydF9pZF9vZl9pbnQgOiBpbnQgLT4gc3RlcF9zaG9ydF9pZFxuICB2YWwgaW5jX3N0ZXBfc2hvcnRfaWQgOiBzdGVwX3Nob3J0X2lkIC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGRlY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG5cbiAgKCoqIGJsYWNrYm9hcmQgcHJlZGljYXRlcyopXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgdHlwZSBwcmVkaWNhdGVfaW5mb1xuICB0eXBlIHByZWRpY2F0ZV92YWx1ZVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gIHR5cGUgcHJlX2JsYWNrYm9hcmQgKCpibGFja2JvYXJkIGR1cmluZyBpdHMgY29uc3RydWN0aW9uKilcblxuICB2YWwgd2Vha2VuaW5nIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSBsaXN0XG5cbiAgdmFsIGNvbmogOlxuICAgIChwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRpc2p1bmN0aW9uIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmRlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIHVua25vd24gOiBwcmVkaWNhdGVfdmFsdWVcbiAgdmFsIGlzX3Vua25vd24gOiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgaXNfdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIG1vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgY29tcGF0aWJsZSA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlIC0+IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBnZXRfcHJlX2NvbHVtbl9tYXBfaW52IDogcHJlX2JsYWNrYm9hcmQgLT4gcHJlZGljYXRlX2luZm8gQS50XG5cbiAgKCoqIGdlbmVyYXRpb24qKVxuXG4gIHZhbCBpbml0IDogcHJlX2JsYWNrYm9hcmQgQ0kuUG8uSy5ILnplcm9hcnlcblxuICB2YWwgYWRkX3N0ZXAgOlxuICAgICggVHJhY2Uuc3RlcCxcbiAgICAgIHByZV9ibGFja2JvYXJkLFxuICAgICAgc3RlcF9pZCxcbiAgICAgIHByZV9ibGFja2JvYXJkICogc3RlcF9pZCApXG4gICAgQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYWRkX3N0ZXBfdXBfdG9faXNvIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGZpbmFsaXplIDpcbiAgICBQcmlvcml0eS5wcmlvcml0aWVzIG9wdGlvbiAtPlxuICAgIChwcmVfYmxhY2tib2FyZCwgcHJlX2JsYWNrYm9hcmQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIHN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gc3RyaW5nXG4gIHZhbCBwcmludF9wcmVkaWNhdGVfdmFsdWUgOiBMb2dnZXJzLnQgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IHVuaXRcbiAgdmFsIHByaW50X3ByZWJsYWNrYm9hcmQgOiAocHJlX2JsYWNrYm9hcmQsIHVuaXQpIENJLlBvLksuSC51bmFyeVxuXG4gICgqKmludGVyZmFjZSopXG5cbiAgdmFsIG5fZXZlbnRzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuICB2YWwgbl9wcmVkaWNhdGVzIDogKHByZV9ibGFja2JvYXJkLCBpbnQpIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIGludCwgcHJlZGljYXRlX2lkKSBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIDpcbiAgICAoIHByZV9ibGFja2JvYXJkLFxuICAgICAgcHJlZGljYXRlX2lkLFxuICAgICAgKHN0ZXBfaWQgKiBpbnQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QgKVxuICAgIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbWFuZGF0b3J5X2V2ZW50cyA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIChzdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdCApXG4gICAgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9wcmVfZXZlbnQgOiAocHJlX2JsYWNrYm9hcmQsIFRyYWNlLnN0ZXAgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X3NpZGVfZWZmZWN0IDpcbiAgICAocHJlX2JsYWNrYm9hcmQsIENJLlBvLksuc2lkZV9lZmZlY3QgQS50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkIG9wdGlvbikgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9sZXZlbF9vZl9ldmVudCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBzdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBsZXZlbHMgOiBwcmVfYmxhY2tib2FyZCAtPiBQcmlvcml0eS5sZXZlbCBBLnRcbiAgdmFsIHByaW50X3ByZWRpY2F0ZV9pbmZvIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV9pbmZvIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUHJlYmxhY2tib2FyZCA6IFByZUJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgKCoqIFVzZWZ1bCBtb2R1bGVzICopXG5cbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDSSA9IFBzZXVkb19pbnZlcnNlLlBzZXVkb19pbnZcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIHggPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHhcblxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuICAoKiogZ2xvYmFsIGlkIG9mIGFuIGV2ZW50ICopXG5cbiAgbGV0IHplcm9fc3RlcF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBkZWNfc3RlcF9pZCBpID0gaSAtIDFcbiAgbGV0IGluY19zdGVwX2lkIGkgPSBpICsgMVxuXG4gIHR5cGUgc3RlcF9zaG9ydF9pZCA9IGludFxuICAoKiogcG9zaXRpb24gb2YgYW4gZXZlbnQgb24gYSB3aXJlICopXG5cbiAgbGV0IHplcm9fc3RlcF9zaG9ydF9pZCA9IDBcbiAgbGV0IGR1bW15X3N0ZXBfc2hvcnRfaWQgPSAtMVxuICBsZXQgaW50X29mX3N0ZXBfc2hvcnRfaWQgaSA9IGlcbiAgbGV0IHN0ZXBfc2hvcnRfaWRfb2ZfaW50IGkgPSBpXG4gIGxldCBpbmNfc3RlcF9zaG9ydF9pZCBpID0gaSArIDFcbiAgbGV0IGRlY19zdGVwX3Nob3J0X2lkIGkgPSBpIC0gMVxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gICgqKiBraW5kIG9mIGV2ZW50cyopXG4gIHR5cGUgcnVsZV90eXBlID1cbiAgICB8IFN1YnNcbiAgICB8IER1bW15XG4gICAgfCBJbml0XG4gICAgfCBPYnNlcnZhYmxlXG4gICAgfCBSdWxlXG4gICAgfCBTaWRlX2VmZmVjdF9vZiBvZlxuICAgICAgICAoc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWUpIGxpc3QpXG5cbiAgdHlwZSBwcmVkaWNhdGVfaWQgPSBpbnRcbiAgKCoqIHdpcmUgaWRlbnRpZmllcnMgKilcblxuICB0eXBlIG11dGV4ID1cbiAgICB8IExvY2tfc2lkZV9lZmZlY3Qgb2ZcbiAgICAgICAgc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IExvY2tfYWdlbnQgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfcmVjdGFuZ3VsYXIgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWRcbiAgICB8IExvY2tfbGlua3Mgb2Ygc3RlcF9pZCAqIChDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZClcblxuICAoKiogd2lyZSBsYWJlbHMgKilcbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9XG4gICAgfCBGaWN0aXRpb3VzICgqdG8gaGFuZGxlIHdpdGggYW1iaWd1b3VzIHNpdGUgZWZmZWN0cyAqKVxuICAgIHwgSGVyZSBvZiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBQb2ludGVyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBNdXRleCBvZiBtdXRleFxuICAgIHwgTGluayBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWRcblxuICBsZXQgXyA9IExpbmsgKDAsIDAsIDApXG4gICgqIGRvIG5vdCByZW1vdmUsIGl0IHdpbGwgYmUgbmVjZXNzYXJ5IGZvciBkZWFsaW5nIGVmZmVjdGl2ZWx5IHdpdGggdW5hcnkvYmluYXJ5IHJ1bGUgKilcblxuICB0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIG9mIENJLlBvLksuaW50ZXJuYWxfc3RhdGVcbiAgICB8IERlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIGV4aXN0LCBidXQgd2UgZG8gbm90IGtub3cgd2hhdCB0aGUgdmFsdWUgaXMgKilcbiAgICB8IFVuZGVmaW5lZCAgKCoqIHRoZSB3aXJlIGRvZXMgbm90IGV4aXN0IHlldCAqKVxuICAgIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICAgIHwgRnJlZSAgKCoqIGZvciBiaW5kaW5nIHNpdGVzICopXG4gICAgfCBCb3VuZCAgKCoqIGZvciBiaW5kaW5nIHNpdGVzIChwYXJ0aWFsIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG8gb2ZcbiAgICAgICAgcHJlZGljYXRlX2lkXG4gICAgICAgICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgICAgICAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuICAgICAgICAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZiBzaXRlcyAoY29tcGxldGUgaW5mb3JtYXRpb24pICopXG4gICAgfCBCb3VuZF90b190eXBlIG9mIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuICAgIHwgVW5rbm93blxuICAgICAgICAoKiogIGZvciBhZ2VudCBwcmVzZW5jZSwgaW50ZXJuYWwgc3RhdGVzLCBiaW5kaW5nIHN0YXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbiAqKVxuXG4gIG1vZHVsZSBDIDogQ2FjaGUuQ2FjaGUgd2l0aCB0eXBlIE8udCA9IHByZWRpY2F0ZV92YWx1ZSA9IENhY2hlLkNhY2hlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbGV0IHdlYWtlbmluZyBwID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgLT5cbiAgICAgIFsgcDsgRGVmaW5lZCBdXG4gICAgfCBCb3VuZF90byAoXywgXywgYWcsIHNpdGUpIC0+XG4gICAgICBbIHA7IEJvdW5kX3RvX3R5cGUgKGFnLCBzaXRlKTsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG9fdHlwZSBfIC0+IFsgcDsgQm91bmQ7IERlZmluZWQgXVxuICAgIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBbIHAgXVxuICAgIHwgVW5rbm93biAtPiBbXVxuXG4gIGxldCBkZWZpbmVkID0gRGVmaW5lZFxuICBsZXQgdW5kZWZpbmVkID0gVW5kZWZpbmVkXG4gIGxldCB1bmtub3duID0gVW5rbm93blxuICBsZXQgaXNfdW5rbm93biB4ID0geCA9IFVua25vd25cbiAgbGV0IGlzX3VuZGVmaW5lZCB4ID0geCA9IFVuZGVmaW5lZFxuXG4gICgqKiBtYXBzIGFuZCBzZXRzICopXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUHJlZGljYXRlU2V0ID0gUHJlZGljYXRlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBDYXNlVmFsdWVTZXQgPSBDYXNlVmFsdWVTZXRNYXAuU2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBQcmVkaWNhdGVpZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZE1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBBZ2VudElkMk1hcCA9IE1vZHMuSW50Mk1hcFxuICBtb2R1bGUgQWdlbnRJZFNldCA9IE1vZHMuSW50U2V0XG4gIG1vZHVsZSBBZ2VudElkMlNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkU2V0ID0gTW9kcy5JbnQyU2V0XG4gIG1vZHVsZSBTaXRlSWRNYXAgPSBNb2RzLkludDJNYXBcblxuICB0eXBlIHByZV9ibGFja2JvYXJkID0ge1xuICAgIHByZV9maWN0aXRpb3VzX2xpc3Q6IHByZWRpY2F0ZV9pZCBsaXN0O1xuICAgICAgICAoKiogbGlzdCBvZiB3aXJlIGZvciBtdXR1YWwgZXhjbHVzaW9ucywgdGhlIHN0YXRlIG11c3QgYmUgdW5kZWZpbmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYWNlICopXG4gICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChzdGVwX3Nob3J0X2lkXG4gICAgICAqIChzdGVwX2lkICogc3RlcF9zaG9ydF9pZCAqIHByZWRpY2F0ZV92YWx1ZSAqIHByZWRpY2F0ZV92YWx1ZSkgbGlzdClcbiAgICAgIEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBsYXN0IGtub3duIHZhbHVlIGFuZCB0aGUgbGlzdCBvZiBzdGVwIChzdGVwIGlkLHRlc3QsYWN0aW9uKSopXG4gICAgcHJlX2tpbmRfb2ZfZXZlbnQ6IHJ1bGVfdHlwZSBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggZXZlbnQgaWQgdG8gdGhlIGtpbmQgb2YgZXZlbnQgKilcbiAgICBwcmVfZXZlbnQ6IFRyYWNlLnN0ZXAgQS50OyAgKCoqIG1hcHMgZWFjaCBldmVudCB0byB0aGUgc3RlcCAqKVxuICAgIHByZV9uc3RlcHM6IHN0ZXBfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCBldmVudCAqKVxuICAgIHByZV9uY29sdW1uOiBwcmVkaWNhdGVfaWQ7ICAoKippZCBvZiB0aGUgbGFzdCB3aXJlICopXG4gICAgcHJlX2NvbHVtbl9tYXA6IHByZWRpY2F0ZV9pZCBQcmVkaWNhdGVNYXAudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGxhYmVsIHRvIGl0cyB3aXJlIGlkICopXG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBwcmVkaWNhdGVfaW5mbyBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkOiBQcmVkaWNhdGVpZFNldC50IEEudDtcbiAgICAgICAgKCoqIG1hcHMgZWFjaCB3aXJlIGlkIGZvciB0aGUgcHJlc2VuY2Ugb2YgYW4gYWdlbnQgdG8gdGhlIHNldCBvZiB3aXJlcyBmb3IgaXRzIGF0dGlidXRlICh1c2VmdWwsIHdoZW4gYW4gYWdlbnQgZ2V0IHJlbW92ZWQsIGFsbCBpdHMgYXR0cmlidXRlcyBnZXQgdW5kZWZpbmVkICopXG4gICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZDogQy50IEEudDtcbiAgICAgICAgKCogbWFwcyBlYWNoIHdpcmUgdG8gdGhlIHNldCBvZiBpdHMgcHJldmlvdXMgc3RhdGVzLCB0aGlzIHN1bW1hcml6ZSB0aGUgcG90ZW50aWFsIHN0YXRlIG9mIGEgc2l0ZSB0aGF0IGlzIGZyZWVkLCBzbyBhcyB0byBvdmVyYXBwcm94aW1hdGUgdGhlIHNldCBvZiBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzKilcbiAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlOiBDSS5Qby5LLmFnZW50X2lkIGxpc3QgQS50O1xuICAgIHByZV9vYnNlcnZhYmxlX2xpc3Q6XG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50OiBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudDtcbiAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlOiBzdGVwX2lkIG9wdGlvbjtcbiAgICAgICAgKCppZCBvZiB0aGUgc3RlcCB0aGF0IGNsb3NlcyBhbGwgdGhlIHNpZGUtZWZmZWN0IG11dGV4ICopXG4gICAgcHJlX2xldmVsX29mX2V2ZW50OiBQcmlvcml0eS5sZXZlbCBBLnQ7XG4gIH1cblxuICBsZXQgbGV2ZWxzIGIgPSBiLnByZV9sZXZlbF9vZl9ldmVudFxuICBsZXQgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiB4ID0geC5wcmVfY29sdW1uX21hcF9pbnZcblxuICBsZXQgZ2V0X3ByZV9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggPVxuICAgIGVycm9yLCBsb2dfaW5mbywgeC5wcmVfZXZlbnRcblxuICAoKiogcHJldHR5IHByaW50aW5nICopXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgaSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnRfSGVyZSAlaVwiIGlcbiAgICB8IEJvdW5kX3NpdGUgKGksIHMpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJCaW5kaW5nX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IEludGVybmFsX3N0YXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiSW50ZXJuYWxfc3RhdGUgKCVpLCVpKVwiIGkgc1xuICAgIHwgUG9pbnRlciAoZWlkLCBpZCkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIoZWlkOiVpLGFnX2lkOiVpKVwiIGVpZCBpZFxuICAgIHwgTGluayAoZWlkLCBpZDEsIGlkMikgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJMaW5rKGVpZDolaSwlaS0laSlcIiBlaWQgaWQxIGlkMlxuICAgIHwgTXV0ZXggKExvY2tfYWdlbnQgKGludCwgaW50MikpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXggKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX3JlY3Rhbmd1bGFyIChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4X2ludiAoU3RlcC1pZDolaSxBZ2VudF9pZDolaSlcIiBpbnQgaW50MlxuICAgIHwgTXV0ZXggKExvY2tfbGlua3MgKGludCwgKGludDIsIGludDMpKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9saW5rcyAoU3RlcC1pZDolaSwlaS0laSlcIiBpbnQgaW50MiBpbnQzXG4gICAgfCBNdXRleCAoTG9ja19zaWRlX2VmZmVjdCAoaW50LCBpbnQyLCBpbnQzLCBpbnQ0KSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9zaWRlX2VmZmVjdCAoU3RlcC1pZDolaSwlaS8laS4laSlcIiBpbnQgaW50MlxuICAgICAgICBpbnQzIGludDRcbiAgICB8IEZpY3RpdGlvdXMgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkZpY3RpdGlvdXNcIlxuXG4gIGxldCBwcmludF9rbm93biBsb2cgdCB4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVua25vd24gLT4gKClcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50IHwgRnJlZVxuICAgIHwgQm91bmQgfCBCb3VuZF90byBfIHwgQm91bmRfdG9fdHlwZSBfIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgeFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQ291bnRlciBpbnQgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpbnRcbiAgICB8IERlZmluZWQgLT4gXCJEZWZpbmVkXCJcbiAgICB8IEludGVybmFsX3N0YXRlX2lzIGludGVybmFsX3N0YXRlIC0+IHN0cmluZ19vZl9pbnQgaW50ZXJuYWxfc3RhdGVcbiAgICB8IFVuZGVmaW5lZCAtPiBcIlVuZGVmaW5lZFwiXG4gICAgfCBQcmVzZW50IC0+IFwiUHJlc2VudFwiXG4gICAgfCBGcmVlIC0+IFwiRnJlZVwiXG4gICAgfCBCb3VuZCAtPiBcIkJvdW5kXCJcbiAgICB8IEJvdW5kX3RvIChpZCwgYWdlbnRfaWQsIGFnZW50X25hbWUsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBpZCBeIFwiLFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKFwiXG4gICAgICBeIHN0cmluZ19vZl9pbnQgYWdlbnRfbmFtZSBeIFwiKUBcIiBeIHN0cmluZ19vZl9pbnQgc2l0ZSBeIFwiKVwiXG4gICAgfCBCb3VuZF90b190eXBlIChhZ2VudCwgc2l0ZSkgLT5cbiAgICAgIFwiQm91bmQoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50IF4gXCJAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgUG9pbnRlcl90b19hZ2VudCBhZ2VudF9pZCAtPiBcIlBvaW50ZXIoXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X2lkIF4gXCIpXCJcbiAgICB8IFVua25vd24gLT4gXCJcIlxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHggPVxuICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHgpXG5cbiAgbGV0IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpID1cbiAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByZWRpY2F0ZTogJWkgXCIgaSBpblxuICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pbmZvIGxvZyBwcmVkaWNhdGVfaW5mbyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipQUkVCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAgYWdlbnQgdHlwZXMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gbmFtZSAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJBZ2VudCBuYW1lOiAlaSBcIiBuYW1lIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIExpc3QuaXRlciAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBpZDogJWkgXCIgeCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogc3RlcHMgYnkgY29sdW1uICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGlkIChuZXZlbnRzLCBsaXN0KSAtPlxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV9pZCBsb2cgYmxhY2tib2FyZCBpZCBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJuZXZlbnRzOiAlaSBcIiBuZXZlbnRzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biAoZWlkLCBzZWlkLCB0ZXN0LCBhY3Rpb24pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW50IGlkOiAlaSBcIiBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNob3J0IGlkOiAlaSBcIiBzZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2tub3duIGxvZyB0ZXN0IFwiVEVTVDogICBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgdGVzdCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgYWN0aW9uIFwiQUNUSU9OOiBcIiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgYWN0aW9uIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiBTaWRlIGVmZmVjdHMgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBsaXN0IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcImV2ZW50ICVpOiwgXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IENJLlBvLksucHJpbnRfc2lkZV9lZmZlY3QgbG9nIGxpc3QgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUHJlZGljYXRlX2lkIHJlbGF0ZWQgdG8gdGhlIHByZWRpY2F0ZSAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZFNldC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaVwiIHMgaW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICAgICAgICBzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqUGFzdCB2YWx1ZXMgb2YgYSBwcmVkaWNhdGUqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSBpblxuICAgICAgICAgIGxldCAoKSA9IEMuaXRlciAoZnVuIHMgLT4gcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBzKSBzIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqT2JzZXJ2YWJsZXMqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGwsIF8pIC0+XG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlaSxcIikgbCBpblxuICAgICAgICAgIGxldCBfID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogaW5mb3JtYXRpb24gbGF0dGljZSAqKVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5ID1cbiAgICBtYXRjaCB5IHdpdGhcbiAgICB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBQcmVzZW50XG4gICAgfCBGcmVlIHwgQm91bmRfdG8gXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IEJvdW5kX3RvX3R5cGUgKGFnLCBzKSAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBCb3VuZF90byAoXywgXywgYWcnLCBzJykgd2hlbiBhZyA9IGFnJyAmJiBzID0gcycgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgQm91bmQgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBEZWZpbmVkIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gfCBEZWZpbmVkIHwgVW5kZWZpbmVkIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSlcbiAgICB8IFVua25vd24gLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG5cbiAgbGV0IG1vcmVfcmVmaW5lZCB4IHkgPSB4ID0geSB8fCBzdHJpY3RseV9tb3JlX3JlZmluZWQgeCB5XG5cbiAgbGV0IGNvbmogcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgaWYgbW9yZV9yZWZpbmVkIHggeSB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIHhcbiAgICBlbHNlIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB5IHggdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB5XG4gICAgZWxzZVxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcImNvbmosICBBcmd1bWVudHMgaGF2ZSBubyBncmVhdGVzdCBsb3dlciBib3VuZFwiXG4gICAgICAgIChGYWlsdXJlIFwiQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIikgVW5kZWZpbmVkXG5cbiAgbGV0IGNvbXBhdGlibGUgeCB5ID0geCA9IHkgfHwgbW9yZV9yZWZpbmVkIHggeSB8fCBtb3JlX3JlZmluZWQgeSB4XG5cbiAgbGV0IGRpc2p1bmN0aW9uIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBpZiB4ID0geSB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICAgICAgfCBVbmtub3duLCBfIHwgXywgVW5rbm93biB8IFVuZGVmaW5lZCwgXyB8IF8sIFVuZGVmaW5lZCAtPiBVbmtub3duXG4gICAgICAgIHwgRGVmaW5lZCwgXyB8IF8sIERlZmluZWQgLT4gRGVmaW5lZFxuICAgICAgICB8IENvdW50ZXIgXywgX1xuICAgICAgICB8IF8sIENvdW50ZXIgX1xuICAgICAgICB8IEZyZWUsIF9cbiAgICAgICAgfCBfLCBGcmVlXG4gICAgICAgIHwgUHJlc2VudCwgX1xuICAgICAgICB8IF8sIFByZXNlbnRcbiAgICAgICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBfLCBfXG4gICAgICAgIHwgXywgSW50ZXJuYWxfc3RhdGVfaXMgXyAtPlxuICAgICAgICAgIERlZmluZWRcbiAgICAgICAgfCBCb3VuZCwgXyB8IF8sIEJvdW5kIC0+IEJvdW5kXG4gICAgICAgIHwgQm91bmRfdG9fdHlwZSAoYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG8gKF8sIF8sIGMsIGQpXG4gICAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGEsIGIpLCBCb3VuZF90b190eXBlIChjLCBkKVxuICAgICAgICAgIHdoZW4gYSA9IGMgJiYgYiA9IGQgLT5cbiAgICAgICAgICBCb3VuZF90b190eXBlIChhLCBiKVxuICAgICAgICB8IF8gLT4gQm91bmRcbiAgICAgICkgKVxuXG4gICgqKiBwcmVkaWNhdGUgaWQgYWxsb2NhdGlvbiAqKVxuXG4gICgqKiBpZiBhIHdpcmUgY29uY2VybnMgYW4gYWdlbnQsIHdoaWNoIG9uZSBpdCBpcyAqKVxuICBsZXQgYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgSGVyZSB4IC0+IFNvbWUgeFxuICAgIHwgQm91bmRfc2l0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoeCwgXykgLT4gU29tZSB4XG4gICAgfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgRmljdGl0aW91cyAtPiBOb25lXG5cbiAgbGV0IHJlYyBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgX3ByZWRpY2F0ZVxuICAgICAgcHJlZGljYXRlX2lkIGFnX2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICBpblxuICAgIGxldCBvbGRfc2V0ID1cbiAgICAgIHRyeSBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gUHJlZGljYXRlaWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBuZXdfc2V0ID0gUHJlZGljYXRlaWRTZXQuYWRkIHByZWRpY2F0ZV9pZCBvbGRfc2V0IGluXG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgc2lkIG5ld19zZXRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcImJpbmQsIE91dCBvZiBib3VuZCBhY2Nlc3NcIlxuICAgICAgICAoRmFpbHVyZSBcImJpbmRcIikgYmxhY2tib2FyZFxuXG4gIGFuZCBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZSA9XG4gICAgbGV0IGFnX2lkID0gYWdlbnRfaWRfb2ZfcHJlZGljYXRlIHByZWRpY2F0ZSBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwIGluXG4gICAgbGV0IG1hcF9pbnYgPSBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBpblxuICAgIG1hdGNoIFByZWRpY2F0ZU1hcC5maW5kX29wdGlvbiBwcmVkaWNhdGUgbWFwIHdpdGhcbiAgICB8IFNvbWUgc2lkIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgc2lkJyA9IGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxIGluXG4gICAgICBsZXQgbWFwJyA9IFByZWRpY2F0ZU1hcC5hZGQgcHJlZGljYXRlIHNpZCcgbWFwIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IG1hcF9pbnYgc2lkJyBwcmVkaWNhdGUgaW5cbiAgICAgIGxldCBtYXBfaW52JyA9IG1hcF9pbnYgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkIHNpZCdcbiAgICAgICAgICAoQy5jcmVhdGUgcGFyYW1ldGVyLkNJLlBvLksuSC5jYWNoZV9zaXplKVxuICAgICAgaW5cbiAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAge1xuICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgIHByZV9uY29sdW1uID0gc2lkJztcbiAgICAgICAgICBwcmVfY29sdW1uX21hcCA9IG1hcCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gbWFwX2ludic7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgbWF0Y2ggYWdfaWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgU29tZSBhZ19pZCAtPlxuICAgICAgICAgIGJpbmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgc2lkJyBhZ19pZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkJ1xuXG4gIGxldCBjcmVhdGVfYWdlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdlbnRfaWQgPVxuICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWVcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgbmV3X2xpc3QgPSBhZ2VudF9pZCA6OiBvbGRfbGlzdCBpblxuICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlIGFnZW50X25hbWUgbmV3X2xpc3QgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnZW50X2lkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgIHRyeVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIHByZWRpY2F0ZV9pZCApXG4gICAgICB3aXRoIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiZnJlZV9hZ2VudCwgVHJ5IHRvIGZyZWUgYW4gdW5leGlzdGluZyBhZ2VudFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJmcmVlX2FnZW50XCIpIFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgKGZ1biBwcmVkaWNhdGVfaWQgbWFwIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZSA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIFByZWRpY2F0ZU1hcC5yZW1vdmUgcHJlZGljYXRlIG1hcClcbiAgICAgICAgc2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX2NvbHVtbl9tYXAgPSBtYXAgfVxuXG4gIGxldCBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBhZ2VudF9pZCA9XG4gICAgaWYgUHJlZGljYXRlTWFwLm1lbSAoSGVyZSBhZ2VudF9pZCkgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCB0aGVuXG4gICAgICBmcmVlX2FnZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWdlbnRfaWRcbiAgICBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpbml0IGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBibGFja2JvYXJkLCBsaXN0KSAtPlxuICAgICAgICAgICAgZXJyb3IsIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb25fc3VicyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGluaXRcbiAgICAgIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGFnZW50X25hbWUgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIGNyZWF0ZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnZW50X25hbWUgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcmVlX2FnZW50X2lmX2l0X2V4aXN0cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0MSwgbGlzdDIpIChzX2lkLCBvcHQpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIEZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgbGV0IGxpc3QyID0gKHByZWRpY2F0ZV9pZCwgVW5kZWZpbmVkKSA6OiBsaXN0MiBpblxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAoSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgeCkgOjogbGlzdDEsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF0sXG4gICAgICAgICAgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdIClcbiAgICAgICAgaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSwgW11cbiAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdLFxuICAgICAgICBbXSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICAoKiAgICAgICAgICAgICAgIGxldCBlcnJvcixibGFja2JvYXJkID0gZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFnX2lkIGluICopXG4gICAgICBsZXQgc2V0ID1cbiAgICAgICAgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBwcmVkaWNhdGVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0ID1cbiAgICAgICAgUHJlZGljYXRlaWRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gcHJlZGljYXRlaWQgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgKHByZWRpY2F0ZWlkLCBVbmRlZmluZWQpIDo6IGxpc3QpXG4gICAgICAgICAgc2V0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCBdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCwgW11cblxuICBsZXQgcHJlZGljYXRlc19vZl9hY3Rpb24gYm9vbCA9XG4gICAgaWYgYm9vbCB0aGVuXG4gICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzXG4gICAgZWxzZVxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fbm9fc3Vic1xuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ19pZClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBQcmVzZW50IF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEludGVybmFsX3N0YXRlXG4gICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIGludCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBGcmVlIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMSA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkMiA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikpXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBCb3VuZF90byAocHJlZGljYXRlX2lkMiwgYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQxLCBhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIEJvdW5kIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAocywgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbIHByZWRpY2F0ZV9pZCwgQm91bmRfdG9fdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSBdIClcblxuICBsZXQgdHlwZV9vZl9zdGVwIHggPVxuICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHggdGhlblxuICAgICAgT2JzZXJ2YWJsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19pbml0IHggdGhlblxuICAgICAgSW5pdFxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19ydWxlIHggdGhlblxuICAgICAgUnVsZVxuICAgIGVsc2UgaWYgVHJhY2Uuc3RlcF9pc19zdWJzIHggdGhlblxuICAgICAgU3Vic1xuICAgIGVsc2VcbiAgICAgIER1bW15XG5cbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcbiAgbGV0IGluaXQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBwcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBBLm1ha2UgMSBDSS5Qby5LLmVtcHR5X3NpZGVfZWZmZWN0O1xuICAgICAgICBwcmVfZXZlbnQgPSBBLm1ha2UgMSAoVHJhY2UuZHVtbXlfc3RlcCBcIlwiKTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uID0gQS5tYWtlIDEgKDEsIFtdKTtcbiAgICAgICAgcHJlX25zdGVwcyA9IC0xO1xuICAgICAgICBwcmVfbmNvbHVtbiA9IC0xO1xuICAgICAgICBwcmVfY29sdW1uX21hcCA9IFByZWRpY2F0ZU1hcC5lbXB0eTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXBfaW52ID0gQS5tYWtlIDEgRmljdGl0aW91cztcbiAgICAgICAgcHJlX2tpbmRfb2ZfZXZlbnQgPSBBLm1ha2UgMSAoU2lkZV9lZmZlY3Rfb2YgKC0xLCBbXSkpO1xuICAgICAgICBoaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkID0gQS5tYWtlIDEgKEMuY3JlYXRlIE5vbmUpO1xuICAgICAgICBoaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlID0gQS5tYWtlIDEgW107XG4gICAgICAgIHByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkID1cbiAgICAgICAgICBBLm1ha2UgMSBQcmVkaWNhdGVpZFNldC5lbXB0eTtcbiAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IFtdO1xuICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gTm9uZTtcbiAgICAgICAgcHJlX2xldmVsX29mX2V2ZW50ID0gQS5tYWtlIDEgUHJpb3JpdHkuaGlnaGVzdDtcbiAgICAgIH0gKVxuXG4gIGxldCBnZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBBLmdldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBlaWRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyAoRmFpbHVyZSBcIlVOa25vd24gZXZlbnRcIilcbiAgICAgICAgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgbGV0IHRlc3QgPSBVbmRlZmluZWQgaW5cbiAgICBsZXQgYWN0aW9uID0gQ291bnRlciAwIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZFxuICAgICAgICAoMiwgWyBuc2lkLCAxLCB0ZXN0LCBhY3Rpb24gXSlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IG5zaWQgfVxuXG4gIGxldCBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgbnNpZFxuICAgICAgPVxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpbml0X3N0ZXAgPVxuICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgU29tZSBibGFja2JvYXJkLnByZV9uc3RlcHNcbiAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb25fYXRfbnNpZCBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgIG5zaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcFxuXG4gIGxldCBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPVxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzIGluXG4gICAgbGV0IG1hcCA9IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBwcmVkaWNhdGVfaWQgaW5cbiAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgbGV0IF8gPVxuICAgICAgQS5zZXQgbWFwIHByZWRpY2F0ZV9pZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICBpblxuICAgIGVycm9yLCBibGFja2JvYXJkXG5cbiAgbGV0IHNpZGVfZWZmZWN0IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHMgc2l0ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBEZWZpbmVkIHwgQ291bnRlciBfIHwgSW50ZXJuYWxfc3RhdGVfaXMgXyB8IFVuZGVmaW5lZCB8IFBvaW50ZXJfdG9fYWdlbnQgX1xuICAgIHwgUHJlc2VudCB8IEJvdW5kIHwgQm91bmRfdG9fdHlwZSBfIHwgVW5rbm93biAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgc3RhdGUgZm9yIGEgc2lkZS1lZmZlY3RzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJCbGFja2JvYXJkX2dlbmVyYXRpb24uc2lkZV9lZmZlY3RcIikgW11cbiAgICB8IEZyZWUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChGcmVlLCBVbmtub3duKSBdXG4gICAgfCBCb3VuZF90byAocGlkLCBhZywgYWdlbnRfbmFtZSwgc25hbWUpIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV90YXJnZXRfaWQsIE5vbmUsIChzLCBVbmtub3duKTtcbiAgICAgICAgICAoIHBpZCxcbiAgICAgICAgICAgIFNvbWUgKChhZywgYWdlbnRfbmFtZSksIHNuYW1lKSxcbiAgICAgICAgICAgICggQm91bmRfdG9cbiAgICAgICAgICAgICAgICAoIHByZWRpY2F0ZV90YXJnZXRfaWQsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSxcbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSxcbiAgICAgICAgICAgICAgRnJlZSApICk7XG4gICAgICAgIF0gKVxuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnN0YW50aWF0aW9uLkFOWSAtPiBlcnJvciwgbG9nX2luZm8sIFVua25vd25cbiAgICB8IEluc3RhbnRpYXRpb24uRlJFRSAtPiBlcnJvciwgbG9nX2luZm8sIEZyZWVcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkQgLT4gZXJyb3IsIGxvZ19pbmZvLCBCb3VuZFxuICAgIHwgSW5zdGFudGlhdGlvbi5CT1VORF9UWVBFIGJ0IC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQm91bmRfdG9fdHlwZVxuICAgICAgICAgICggQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCxcbiAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSBidCApIClcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfdG8gXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIklsbGVnYWwgYmluZGluZyBzdGF0ZSBpbiBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZVwiXG4gICAgICAgIChGYWlsdXJlIFwicHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIikgVW5rbm93blxuXG4gIGxldCBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgYmluZGluZ19zdGF0ZSA9XG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc2l0ZV9uYW1lID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX3RhcmdldF9pZCA9XG4gICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIChCb3VuZF9zaXRlIChhZ2VudF9pZCwgc2l0ZV9uYW1lKSlcbiAgICBpblxuICAgIGxldCBmb3JtZXJfc3RhdGVzID1cbiAgICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgaW5cbiAgICBtYXRjaCBwYXJhbWV0ZXIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgICAgbGV0IHMgPSBDLmxhc3QgZm9ybWVyX3N0YXRlcyBpblxuICAgICAgKG1hdGNoIHMgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW11cbiAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVfb2ZfYmluZGluZ19zdGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICBpblxuICAgICAgICBpZiBtb3JlX3JlZmluZWQgcyBidCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWQgc1xuICAgICAgICAgICAgICBzaXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgbCBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10pXG4gICAgfCBTb21lIChTdG9yeV9qc29uLlN0cm9uZyB8IFN0b3J5X2pzb24uV2VhaykgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJ0ID1cbiAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEMuZm9sZFxuICAgICAgICAgIChmdW4gcyAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0KSAtPlxuICAgICAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGwgPVxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV90YXJnZXRfaWRcbiAgICAgICAgICAgICAgICAgIHMgc2l0ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGwgOjogbGlzdFxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdClcbiAgICAgICAgICBmb3JtZXJfc3RhdGVzIChlcnJvciwgbG9nX2luZm8sIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIHR5cGUgZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID0ge1xuICAgIG5ld19hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBvbGRfYWdlbnRzOiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgQWdlbnRJZE1hcC50O1xuICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBzdXJlX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHN1cmVfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgb3RoZXJfbGlua3M6IEFnZW50SWQyU2V0LnQ7XG4gICAgc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rczogU2l0ZUlkU2V0LnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlczogQ0kuUG8uSy5hZ2VudF9pZCBTaXRlSWRNYXAudDtcbiAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgc3VyZV90ZXN0czogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdDtcbiAgICBzdXJlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBjcmVhdGVfYWN0aW9uczogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmFjdGlvbiBsaXN0O1xuICAgIHN1cmVfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdDtcbiAgICBvdGhlcl9hZ2VudHNfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWRNYXAudDtcbiAgICBvdGhlcl9hZ2VudHNfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfdGVzdHM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24udGVzdCBsaXN0IEFnZW50SWQyTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uczpcbiAgICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5OiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM6XG4gICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGVcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmJpbmRpbmdfc3RhdGUpXG4gICAgICBsaXN0XG4gICAgICBBZ2VudElkTWFwLnQ7XG4gICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3M6IEFnZW50SWRTZXQudDtcbiAgICBydWxlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIHJ1bGVfYWdlbnRfaWRfc3ViczogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZE1hcC50O1xuICAgIGxpbmtzX211dGV4OiBwcmVkaWNhdGVfaWQgQWdlbnRJZDJNYXAudDtcbiAgICByZW1vdmVkX2FnZW50czogQWdlbnRJZFNldC50O1xuICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M6IFNpdGVJZFNldC50O1xuICB9XG5cbiAgbGV0IGluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nID1cbiAgICB7XG4gICAgICBuZXdfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHN1cmVfYWdlbnRzID0gQWdlbnRJZFNldC5lbXB0eTtcbiAgICAgIHN1cmVfbGlua3MgPSBBZ2VudElkMlNldC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID0gU2l0ZUlkTWFwLmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3MgPSBTaXRlSWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX3Rlc3RzID0gW107XG4gICAgICBzdXJlX2FjdGlvbnMgPSBbXTtcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gW107XG4gICAgICBzdXJlX3NpZGVfZWZmZWN0cyA9IFtdO1xuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19hY3Rpb25zID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rcyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX211dGV4ID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmVtcHR5O1xuICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICByZW1vdmVkX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgIH1cblxuICBsZXQgcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBfZGF0YSA9XG4gICAgKCogbGV0IHN0ZGVyciA9IHBhcmFtZXRlci5DSS5Qby5LLkgub3V0X2NoYW5uZWxfZXJyIGluXG4gICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGhhbmRsZXIuQ0kuUG8uSy5ILmVudiBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTmV3IGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLm5ld19hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50czogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaTogdHlwZTolaSBALlwiKSBkYXRhLm9sZF9hZ2VudHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiT2xkIGFnZW50cyBpbXBsaWVkIGluIGxpbmtzOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpIEAuXCIpIGRhdGEuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdGVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiTW9kaWZpZWRfbGlua3NfbWFwOiBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIFNpdGVJZE1hcC5pdGVyIChmdW4gKGEsYikgLT4gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpLiVpIC0+ICVpIEAuXCIgYSBiICkgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiUG90ZW50aWFsIHN1YnN0aXR1dGlvbjogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiIGlkOiVpQC5cIiBpZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAgICVpQC5cIikgbClcbiAgICAgICAgIGRhdGEub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgYWdlbnRzOkAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiKSBkYXRhLnN1cmVfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgdGVzdHM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJUZXN0cyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfdGVzdHNcbiAgICAgICAoUHAuc2V0IEFnZW50SWQyTWFwLmJpbmRpbmdzIFBwLnNwYWNlXG4gICAgICAgKGZ1biBmICgoaWQxLGlkMiksbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGYgXCIoJWksJWkpQCwlYVwiIGlkMSBpZDJcbiAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV90ZXN0IH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX3Rlc3RzIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFjdGlvbnM6QFs8diAxPiVhQF1ALlwiXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBkYXRhLnN1cmVfYWN0aW9ucyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiQWN0aW9ucyB0byBiZSBzdWJzdGl0dXRlZDpAWzx2IDE+QCwlYSVhQF1ALlwiXG4gICAgICAgKFBwLnNldCB+dHJhaWxpbmc6UHAuc3BhY2UgQWdlbnRJZE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoaWQsbCkgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgIGZcIiVpQCwlYVwiIGlkXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsXG4gICAgICAgKSlcbiAgICAgICBkYXRhLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfYWN0aW9uIH5zaWdzKSlcbiAgICAgICBsKSlcbiAgICAgICBkYXRhLm90aGVyX2xpbmtzX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlN1cmUgc2lkZV9lZmZlY3RzIEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAoQ0kuUG8uSy5wcmludF9zaWRlIHN0ZGVyciBoYW5kbGVyIFwiIFwiKVxuICAgICAgICAgZGF0YS5zdXJlX3NpZGVfZWZmZWN0c1xuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTaWRlIGVmZmVjdCB0byBiZSBzdWJzdGl0dXRlZDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkTWFwLml0ZXJcbiAgICAgICAgIChmdW4gaWQgbCAtPlxuICAgICAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaUAuXCIgaWQgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiAgXCIpXG4gICAgICAgICAgICAgICBsXG4gICAgICAgICAgIGluICgpKVxuICAgICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzXG4gICAgICAgaW4qKVxuICAgIGVycm9yXG5cbiAgbGV0IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgfVxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcztcbiAgICB9XG5cbiAgbGV0IG1lbV9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rcyBzaXRlIGRhdGFfc3RydWN0dXJlID1cbiAgICBTaXRlSWRTZXQubWVtIHNpdGUgZGF0YV9zdHJ1Y3R1cmUuc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG5cbiAgbGV0IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfdGVzdHMgPSB0ZXN0IDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdfaWQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfdGVzdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IGxpbmsgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBhLCBiID0gZnN0IGxpbmssIHNuZCBsaW5rIGluXG4gICAgbGV0IGxpbmsgPVxuICAgICAgaWYgYSA8IGIgdGhlblxuICAgICAgICBsaW5rXG4gICAgICBlbHNlXG4gICAgICAgIGIsIGFcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSwgb2xkID1cbiAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc190ZXN0cyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rICh0ZXN0IDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlID1cbiAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9ucyB9XG5cbiAgbGV0IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgY3JlYXRlX2FjdGlvbnMgPSBhY3Rpb24gOjogZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19hY3Rpb25zXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnMgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZGF0YV9zdHJ1Y3R1cmUsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgIG90aGVyX2xpbmtzID0gQWdlbnRJZDJTZXQuYWRkIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSApXG4gICAgaW5cbiAgICB7XG4gICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICBvdGhlcl9saW5rc19hY3Rpb25zID1cbiAgICAgICAgQWdlbnRJZDJNYXAuYWRkIGxpbmsgKGFjdGlvbiA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3VyZV9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBkYXRhX3N0cnVjdHVyZSA9XG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBzaWRlX2VmZmVjdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdWJzX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgc2l0ZSA9IGZzdCBzaWRlX2VmZmVjdCBpblxuICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IGFnZW50X2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgIGxldCBvbGQgPVxuICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gYWdlbnRfaWRcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cyA9XG4gICAgICAgIEFnZW50SWRNYXAuYWRkIGFnX2lkIChzaWRlX2VmZmVjdCA6OiBvbGQpXG4gICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0cztcbiAgICB9XG5cbiAgbGV0IGFkZF9zdGVwX3N0cm9uZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBwcmVfZXZlbnQgPSBibGFja2JvYXJkLnByZV9ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIHNpZGVfZWZmZWN0ID0gVHJhY2UuYWN0aW9uc19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPSBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIF8pIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgbmV3X2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgPVxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5hZGQgc2l0ZTFfaWQgYWcyX2lkXG4gICAgICAgICAgICAgICAgICAoU2l0ZUlkTWFwLmFkZCBzaXRlMl9pZCBhZzFfaWRcbiAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIHJlbW92ZWRfYWdlbnRzID1cbiAgICAgICAgICAgICAgICBBZ2VudElkU2V0LmFkZFxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb2xkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnKVxuICAgICAgICAgICAgICAgICAgKENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWcxX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWcyX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTFfaWQgPSBhZzFfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMl9pZCA9IGFnMl9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcxX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMV9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICBpZiBBZ2VudElkU2V0Lm1lbSBhZzJfaWQgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICBTaXRlSWRTZXQuYWRkIHNpdGUyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICBvdGhlcl9saW5rc190ZXN0X3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCB0ZXN0ZWRfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzIFNpdGVJZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1vZF9zaXRlcyA9XG4gICAgICBTaXRlSWRNYXAuZm9sZFxuICAgICAgICAoZnVuIGEgXyAtPiBTaXRlSWRTZXQuYWRkIGEpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBwcmlvcml0eV9zaXRlcyA9IFNpdGVJZFNldC5pbnRlciB0ZXN0ZWRfc2l0ZXMgbW9kX3NpdGVzIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIHtcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb24gPVxuICAgICAgICAgIEFnZW50SWRNYXAubWFwXG4gICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5oaXN0b3J5X29mX2FnZW50X2lkc19vZl90eXBlKVxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50cztcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7IGRhdGFfc3RydWN0dXJlIHdpdGggc3VyZV9hZ2VudHMgPSBkYXRhX3N0cnVjdHVyZS5uZXdfYWdlbnRzIH1cbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3VyZV9hZ2VudHMgPVxuICAgICAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAgICAgKGZ1biBpZCBsIHN1cmVfYWdlbnRzIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgXyBdIC0+IEFnZW50SWRTZXQuYWRkIGlkIHN1cmVfYWdlbnRzXG4gICAgICAgICAgICAgIHwgXyAtPiBzdXJlX2FnZW50cylcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgc3VyZV9hZ2VudCA9XG4gICAgICBpZiBpbml0IHRoZW5cbiAgICAgICAgZnVuIF8gLT5cbiAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZnVuIHggLT5cbiAgICAgIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkU2V0LmZvbGQgQWdlbnRJZE1hcC5yZW1vdmUgZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hZ2VudHNcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbjtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgdGVzdCAtPlxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIF8gfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgJiYgKG5vdCAoU2l0ZUlkU2V0Lm1lbSAoYWdfaWQxLCBzaXRlX2lkMSkgcHJpb3JpdHlfc2l0ZXMpKVxuICAgICAgICAgICAgICAmJiBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9pZDIpIHByaW9yaXR5X3NpdGVzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTEgPSBhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgICAgbGV0IG1peF9zaXRlMiA9IGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUxXG4gICAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyBtaXhfc2l0ZTIgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5tZW0gbWl4X3NpdGUxIHByaW9yaXR5X3NpdGVzXG4gICAgICAgICAgICAgICAgICB8fCBTaXRlSWRTZXQubWVtIG1peF9zaXRlMiBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0IGFnX2lkMSwgYWdfaWQyID1cbiAgICAgICAgICAgICAgICAgICAgaWYgYWdfaWQxIDwgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBhZ19pZDEsIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQyLCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJfbGlua3NfcHJpb3JpdHkgPVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWQyU2V0LmFkZCAoYWdfaWQxLCBhZ19pZDIpXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gLT5cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgKGFnX2lkMSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSlcbiAgICAgICAgICAgICAgICAoYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgKGFnX2lkMiwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMilcbiAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZFxuICAgICAgICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAgICAgICAoU2l0ZUlkU2V0Lm1lbVxuICAgICAgICAgICAgICAgICAgICAgIChhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgYWdfaWQyIC0+XG4gICAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic190ZXN0IHRlc3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IHNpdGVfbmFtZTEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUyID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHdlYWsxID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMSwgKGFnZW50X25hbWUyLCBzaXRlX25hbWUyKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhazIgPVxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHNpdGUyLCAoYWdlbnRfbmFtZTEsIHNpdGVfbmFtZTEpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgKCBzdXJlX2FnZW50IGFnX2lkMVxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9uYW1lMSkgcHJpb3JpdHlfc2l0ZXMpLFxuICAgICAgICAgICAgICAgICBzdXJlX2FnZW50IGFnX2lkMlxuICAgICAgICAgICAgICAgICAmJiBub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMiwgc2l0ZV9uYW1lMikgcHJpb3JpdHlfc2l0ZXMpIClcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdXJlX3Rlc3Qgd2VhazFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3Qgd2VhazEgYWdfaWQxXG4gICAgICAgICAgICAgICAgKGFkZF9zdXJlX3Rlc3Qgd2VhazJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpXG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0IHdlYWsyIGFnX2lkMlxuICAgICAgICAgICAgICAgICAgIChhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKSkpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgdGVzdF9saXN0KVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uIC0+XG4gICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIF8gLT4gYWRkX2NyZWF0ZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBhZ2VudCAtPlxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9pZDEgPSBhZ19pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBpZiBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZV9pZDEgZGF0YV9zdHJ1Y3R1cmUgdGhlblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmZpbmRfb3B0aW9uIHNpdGVfaWQxXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0X3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoc2l0ZTEsIHNpdGUyKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudDIgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MiBpblxuICAgICAgICAgICAgaWYgc3VyZV9hZ2VudCBhZ19pZDEgJiYgc3VyZV9hZ2VudCBhZ19pZDIgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbl9saW5rIGFjdGlvbiAoYWdfaWQxLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0IC0+XG4gICAgICAgICAgbGV0IHNpdGUsIF8gPSBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPVxuICAgICAgICAgIChsZXQgZiB4IHNldCA9XG4gICAgICAgICAgICAgQWdlbnRJZDJNYXAuZm9sZFxuICAgICAgICAgICAgICAgKGZ1biAoYTEsIGEyKSBfIHNldCAtPiBBZ2VudElkU2V0LmFkZCBhMSAoQWdlbnRJZFNldC5hZGQgYTIgc2V0KSlcbiAgICAgICAgICAgICAgIHggc2V0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICAgICAoZiBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIEFnZW50SWRTZXQuZW1wdHkpKTtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgXyxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biB4IGxcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgICgqIHRoZSBmb2xsb3dpbmcgbXV0ZXggaXMgdXNlZCB0byBlbmNvZGUgdGhlIGZhY3QgdGhhdCB0aGUgYWdlbnQgeCBpbiB0aGUgbGhzIG9mIHRoZSBydWxlIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGV4YWN0ZWx5IG9uZSBhZ2VudCBpbiB0aGUgbWl4dHVyZSAqKVxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2FnZW50IChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcnVsZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBydWxlX2FnZW50X2lkX211dGV4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCBkYXRhX3N0cnVjdHVyZS5zdWJzX2FnZW50c19pbnZvbHZlZF9pbl9saW5rc1xuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IFBvaW50ZXIgKHN0ZXBfaWQsIHgpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfc3VicyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcnVsZV9hZ2VudF9pZF9zdWJzLCBpbml0X3N0ZXBcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSBpZCAtPlxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiSUQgb2YgYWdlbnQgaW4gdGhlIHJ1bGU6ICVpLCBJRCBvZiB0aGUgYWdlbnQgaW4gdGhlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZTogJWlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeCBpZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc2V0JyA9IEFnZW50SWRTZXQuYWRkIGlkIHNldCBpblxuICAgICAgICAgICAgICAgIGlmIHNldCA9PSBzZXQnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEFnZW50SWRNYXAubWVtIGlkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBpcyBhbHJlYWR5IGRlY2xhcmVkLCBub3RoaW5nIHRvIGRvICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNdXRleCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICgqIFRoZSBtdXRleCBoYXMgdG8gYmUgYWxsb2NhdGVkICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWJ1Z19tb2RlXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDcmVhdGUgTXV0ZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoc3RlcF9pZCwgaWQpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtaXh0dXJlX2FnZW50X2lkX211dGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBpZCBwcmVkaWNhdGVfaWQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXRfc3RlcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAoKiBUaGUgYWdlbnQgaW4gdGhlIG1peHR1cmUgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIGEgbXV0ZXggZm9yIHRoZSBtb21lbnQgKilcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBhZ2VudCBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSwgbm8gbmVlZCBmb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4IHlldFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgIHNldCcsXG4gICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIGxcbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBydWxlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9zdWJzLFxuICAgICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBBZ2VudElkU2V0LmVtcHR5LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4geFxuICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIC0+XG4gICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gTXV0ZXggKExvY2tfbGlua3MgKHN0ZXBfaWQsIHgpKSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsaW5rc19tdXRleCA9IEFnZW50SWQyTWFwLmFkZCB4IHByZWRpY2F0ZV9pZCBsaW5rc19tdXRleCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0IGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgbGlua3NfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicztcbiAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDtcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3QgfVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBwcmludF9kYXRhX3N0cnVjdHVyZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBkYXRhX3N0cnVjdHVyZSBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBjcmVhdGVkIGFnZW50cyAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWQgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHN0ZXBfaWRcbiAgICAgIHwgU29tZSBuc2lkIC0+XG4gICAgICAgIGxldCBuc2lkID0gbnNpZCBpblxuICAgICAgICBsZXQgbnNpZF92b2lkID0gbnNpZCArIDEgaW5cbiAgICAgICAgbGV0IG5zaWRfbmV4dCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IFtdIGluXG4gICAgICAgIGxldCBhY3Rpb25fbGlzdCA9IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zIGluXG4gICAgICAgIGxldCB0ZXN0X2xpc3QgPSBbXSBpblxuICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gW10gaW5cblxuICAgICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgX2ZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBpZiBzaWRlX2VmZmVjdCA9IFtdICYmIFByZWRpY2F0ZWlkTWFwLmlzX2VtcHR5IG1lcmdlZF9tYXAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbnNpZF92b2lkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgICAgIGlmIFRyYWNlLnN0ZXBfaXNfb2JzIHN0ZXAgdGhlblxuICAgICAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgIHByZV9ldmVudDtcbiAgICAgICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfbmV4dFxuICAgICAgICApXG4gICAgaW5cblxuICAgICgqKiogZGVhbCB3aXRoIHN1YnN0aXR1dGFibGUgYWdlbnRzICoqKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0ID1cbiAgICAgIEFnZW50SWRNYXAuZm9sZFxuICAgICAgICAoZnVuIHJ1bGVfYWdfaWQgbCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KSAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAoIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9ucyxcbiAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgW10gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgbWl4dHVyZV9hZ19pZCAtPlxuICAgICAgICAgICAgICBsZXQgc3RlcCA9IFRyYWNlLnN1YnNfc3RlcCBydWxlX2FnX2lkIG1peHR1cmVfYWdfaWQgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gW10gaW5cbiAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHNpdGUgYmluZGluZ19zdGF0ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcGlkX3J1bGVfYWdlbnRfbXV0ZXggPVxuICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGFnZW50IGlkXCIpIDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAwKSB0ZXN0X21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIHBpZF9ydWxlX2FnZW50X211dGV4IChDb3VudGVyIDEpIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwLCBhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgKCBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZCAoQ291bnRlciAwKSB0ZXN0X21hcCxcbiAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwIClcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdGVzdF9tYXAsIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogVGhlIGZvbGxvd2luZyBibG9jayBzaG91bGQgYmUgbG9nZ2VkIGFuZCBjb3JyZWN0ZWQgKilcbiAgICAgICAgICAgICAgKCogbGV0IHRlc3RfbWFwLGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5taXh0dXJlX2FnZW50X2lkX211dGV4IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLGFjdGlvbl9tYXBcbiAgICAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCwgbmxpc3QgPVxuICAgICAgICAgICAgICAgICgqIGVudW1lcmF0aW9uIG9mIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlLCBhY2NvcmRpbmcgdG8gYSBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICAgICAgICAgICAoKiBVbmRlZi0+Q291bnRlciAwIDogb3BlbmluZyBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAgICAgICAgICAgKCogPT4gQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAgICAgICAgICAgKCogQ291bnRlciAwIC0+IFVuZGVmIDogY2xvc2luZyBldmVudCwgY2hlY2sgdGhhdCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgKG9wZW4gYW5kIGNsb3NlZCksIHRoZW4gZXhhY3RlbHkgb25lIGJpbmRpbmcgc3RhdGUgaGFzIGJlZW4gc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgICAgICAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAobWFwLCBubGlzdCkgcGlkIC0+XG4gICAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBDb3VudGVyIDApIG1hcCxcbiAgICAgICAgICAgICAgICAgICAgICBwaWQgOjogbmxpc3QgKSlcbiAgICAgICAgICAgICAgICAgIChtZXJnZWRfbWFwLCBubGlzdCkgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBtYXAgKHBpZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKHRlc3QsIGFjdGlvbikgbWFwKVxuICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgW10gdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tYXBpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBpZCAodGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgcGlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdfaWQgPSBtaXh0dXJlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgfCBIZXJlIF8gfCBQb2ludGVyIF8gfCBNdXRleCBfIHwgTGluayBfIHwgSW50ZXJuYWxfc3RhdGUgX1xuICAgICAgICAgICAgICAgICAgICAgIHwgRmljdGl0aW91cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIFVua25vd25cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHRlc3QsIGFjdGlvbilcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0KVxuICAgICAgICAgICAgbClcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgW10pXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50IGluIGxpbmtzKilcbiAgICBsZXQgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIHNldCA9XG4gICAgICBBZ2VudElkMlNldC5mb2xkXG4gICAgICAgIChmdW4gbGluayAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSAtPlxuICAgICAgICAgIGxldCBsaW5rX211dGV4ID1cbiAgICAgICAgICAgIG1hdGNoIEFnZW50SWQyTWFwLmZpbmRfb3B0aW9uIGxpbmsgZGF0YV9zdHJ1Y3R1cmUubGlua3NfbXV0ZXggd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdfaWQxLCBydWxlX2FnX2lkMiA9IGxpbmsgaW5cbiAgICAgICAgICBsZXQgbF9hZ18xID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDEgXSBydWxlX2FnX2lkMVxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsX2FnXzIgPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgWyBydWxlX2FnX2lkMiBdIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc190ZXN0c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgIEFnZW50SWQyTWFwLmZpbmRfZGVmYXVsdCBbXSBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX2FjdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMSAtPlxuICAgICAgICAgICAgICBsZXQgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQxID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMSBtaXh0dXJlX2FnXzEgc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbWl4dHVyZV9hZ18yIC0+XG4gICAgICAgICAgICAgICAgICBpZiBydWxlX2FnX2lkMSA9IHJ1bGVfYWdfaWQyID0gKG1peHR1cmVfYWdfMSA9IG1peHR1cmVfYWdfMilcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgVHJhY2UuZHVtbXlfc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgKFwiTElOSyBcIiBeIHN0cmluZ19vZl9pbnQgbWl4dHVyZV9hZ18xIF4gXCIvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IHJ1bGVfYWdfaWQxIF4gXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMiBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMiBeIFwiKVwiKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICAgICAgICAgICAgKCogaWYgcnVsZV9hZ19pZDIgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3Vic1xuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UqKVxuICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHJ1bGVfYWdfaWQyIG1peHR1cmVfYWdfMiBzdWJzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBzdWJzID0gQWdlbnRJZE1hcC5lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QsIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZiB4ID0gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IHN1YnMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICggTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0IClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0ICkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHBpZCwgeCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRnJlZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ18xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFNpdGVJZFNldC5tZW0gKHJ1bGVfYWdfaWQxLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhZ19pZCA9IG1peHR1cmVfYWdfMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMiwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHBpZCwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LnJldiBhY3Rpb25fbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5lbXB0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYXAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBsaW5rX211dGV4IChDb3VudGVyIDAsIENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogUG9pbnRlciAtPiAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzEsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucnVsZV9hZ2VudF9pZF9zdWJzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUG9pbnRlcl90b19hZ2VudCBtaXh0dXJlX2FnXzIsIFVua25vd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2VkX21hcFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBpZiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBBLnNldCBwcmVfZXZlbnQgbnNpZCBzdGVwIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGlkICh0ZXN0LCBhY3Rpb24pIG1hcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IG1hcCBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZV9vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBsX2FnXzIpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgbF9hZ18xKVxuICAgICAgICBzZXRcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb3RoZXJfbGlua3MgPVxuICAgICAgICAgIEFnZW50SWQyU2V0LmRpZmYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3ByaW9yaXR5O1xuICAgICAgfVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NcbiAgICBpblxuXG4gICAgKCogZGVhbCB3aXRoIHJpZ2lkIGVsZW1lbnRzICopXG4gICAgbGV0IHNpZGVfZWZmZWN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHMgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgbWF0Y2ggaW5pdF9zdGVwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBAIGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgICAgfCBTb21lIF8gLT4gZGF0YV9zdHJ1Y3R1cmUuc3VyZV9hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gZGF0YV9zdHJ1Y3R1cmUuc3VyZV90ZXN0cyBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgIGluaXRfc3RlcCApIChzaXRlLCBiaW5kaW5nX3N0YXRlKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgfCBbIGwgXSAtPlxuICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gbGlzdCB0IC0+IHQgOjogbGlzdClcbiAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBydWxlX2FnX2lkID1cbiAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCAoQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHByZWRpY2F0ZV9pbmZvID1cbiAgICAgICAgICAgICAgTXV0ZXhcbiAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICggc3RlcF9pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgX3N0ZXBfaWQgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIHRydWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCwgY2hlY2sgdGhhdCB0aGUgd2lyZSBlbmQgaW4gdGhlIHN0YXRlIDAqKVxuICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICgqIENvdW50ZXIgMCAtPiBDb3VudGVyIDEgOiBwb3RlbnRpYWwgYmluZGluZyB0eXBlICopXG4gICAgICAoKiBDb3VudGVyIDEgLT4gQ291bnRlciAwIDogdGhlIGNvcnJlc3BvbmRpbmcgc3Vic3RpdHV0aW9uIGlzIGFwcGxpZWQgKilcbiAgICAgICgqID0+IENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiAqKVxuICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkICYgdGhlIGFjY29yZGluZyBzdWJzdGl0dXRpb24gdGFrZW4sIHRoZW4gbXV0dWFsIGV4Y2x1c2lvbiBhbW9uZyB0aGUgcG90ZW50aWFsIGJpbmRpbmcgc3RhdGUqKVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IGFkZF9zdGF0ZSBwaWQgKENvdW50ZXIgMCwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgbmxpc3RcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXAgYmxhY2tib2FyZCBzdGVwX2lkID1cbiAgICBsZXQgaW5pdCA9IFRyYWNlLnN0ZXBfaXNfaW5pdCBzdGVwIGluXG4gICAgbGV0IGluaXRfc3RlcCA9IE5vbmUgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIGxldCBidWlsZF9tYXAgbGlzdCBtYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgKGlkLCB2YWx1ZSkgLT4gUHJlZGljYXRlaWRNYXAuYWRkIGlkIHZhbHVlIG1hcClcbiAgICAgICAgbWFwIGxpc3RcbiAgICBpblxuICAgIGxldCBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCA9XG4gICAgICBsZXQgdGVzdCcsIGFjdGlvbicgPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5maW5kX2RlZmF1bHQgKFVua25vd24sIFVua25vd24pIHBpZCBtYXBcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdCA9XG4gICAgICAgIGlmIHN0cmljdGx5X21vcmVfcmVmaW5lZCB0ZXN0IHRlc3QnIHRoZW5cbiAgICAgICAgICB0ZXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0ZXN0J1xuICAgICAgaW5cbiAgICAgIGxldCBhY3Rpb24gPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgYWN0aW9uIGFjdGlvbicgdGhlblxuICAgICAgICAgIGFjdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWN0aW9uJ1xuICAgICAgaW5cbiAgICAgIGxldCBtYXAgPSBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgZmFkZCBwaWQgcCBtYXAgPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBEZWZpbmVkIHwgUHJlc2VudCB8IEJvdW5kXG4gICAgICB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgICAgKClcbiAgICAgIHwgRnJlZSB8IFBvaW50ZXJfdG9fYWdlbnQgXyB8IEJvdW5kX3RvIF8gLT5cbiAgICAgICAgbGV0IG9sZCA9IEEuZ2V0IG1hcCBwaWQgaW5cbiAgICAgICAgQS5zZXQgbWFwIHBpZCAoQy5hZGQgcCBvbGQpXG4gICAgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgeyBibGFja2JvYXJkIHdpdGggcHJlX25zdGVwcyA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgfVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID0gQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfbnN0ZXBzIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgKHByZWRpY2F0ZV9pZCwgXywgKHRlc3QsIGFjdGlvbikpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgdGVzdCBhY3Rpb24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICgocHJlZGljYXRlX2lkLCBOb25lLCAoQ291bnRlciAwLCBDb3VudGVyIDEpKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgc2lkZV9lZmZlY3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfdGVzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYnVpbGRfbWFwIHRlc3RfbGlzdCBtYXApXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICB0ZXN0X2xpc3RcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXApIGFjdGlvbiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gZmFsc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCBhY3Rpb25fbGlzdCBhY3Rpb25fbWFwLFxuICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSwgdGVzdF9tYXApXG4gICAgICAgIGFjdGlvbl9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIG1lcmdlZF9tYXAgPVxuICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIGFjdGlvbikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT4gZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKFVua25vd24sIGFjdGlvbikgYWNjKVxuICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCBwaWQgLT4gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAoQ291bnRlciAxLCBVbmRlZmluZWQpIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCBmaWN0aXRpb3VzX2xvY2FsX2xpc3RcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPiBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgbWVyZ2VkX21hcCB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgIGluXG4gICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0ZXBfaWQgKyAxKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAoQ0kuUG8uSy5zaWRlX2VmZmVjdF9vZl9saXN0IHNpZGVfZWZmZWN0KVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgbGV0IHByZV9zdGVwc19ieV9jb2x1bW4gPVxuICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgIGxldCB2YWx1ZSwgbGlzdCA9IEEuZ2V0IG1hcCBpZCBpblxuICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBmYWRkIGlkIGFjdGlvblxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcClcbiAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgaW5cbiAgICAgIGxldCBfID0gQS5zZXQgYmxhY2tib2FyZC5wcmVfa2luZF9vZl9ldmVudCBuc2lkICh0eXBlX29mX3N0ZXAgc3RlcCkgaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAoWyBuc2lkIF0sIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHN0ZXApXG4gICAgICAgICAgOjogYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgcHJlX2ZpY3RpdGlvdXNfbGlzdCA9IGZpY3RpdGlvdXNfbGlzdDtcbiAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBvYnNlcnZhYmxlX2xpc3Q7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICApXG5cbiAgbGV0IGZpbmFsaXplIGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbCA9IGJsYWNrYm9hcmQucHJlX2ZpY3RpdGlvdXNfbGlzdCBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBfIC0+XG4gICAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyArIDEgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCBvYnNlcnZhYmxlX2xpc3QgPVxuICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAoZnVuICh4LCBpbmZvKSAtPiBuc2lkIDo6IHgsIGluZm8pXG4gICAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdClcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX29ic2VydmFibGUgPSBTb21lIG5zaWQ7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSBwcmVkaWNhdGVfaWQgLT5cbiAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciBVbmRlZmluZWQgVW5rbm93biBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpIGxcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzZXQgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gc2V0IChzdGVwcywgXykgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc2V0KSBlaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlX2V2ZW50IGVpZCBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGFnZW50c19pbl9vYnMgPVxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9pbl9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQudW5pb24gc2V0IGFnZW50c19pbl9vYnMpXG4gICAgICAgICAgICAgIHNldCBzdGVwcylcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBDSS5Qby5LLkFnZW50SWRTZXQuZW1wdHkpXG4gICAgICAgICAgb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHNldCB4ID0gQ0kuUG8uSy5BZ2VudElkU2V0Lm1lbSB4IHNldCBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLml0ZXJpXG4gICAgICAgICAgKGZ1biBpIHN0ZXAgLT5cbiAgICAgICAgICAgIGxldCBfLCBfLCBsZXZlbCA9XG4gICAgICAgICAgICAgIENJLlBvLksubGV2ZWxfb2ZfZXZlbnQgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgc3RlcCBzZXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9sZXZlbF9vZl9ldmVudCBpIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmQucHJlX2V2ZW50XG4gICAgICBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIHByaW50X3ByZWJsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBhZGRfc3RlcF91cF90b19pc28gPSBhZGRfc3RlcF9zdHJvbmdcblxuICAoKiogaW50ZXJmYWNlICopXG5cbiAgbGV0IG5fcHJlZGljYXRlcyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbmNvbHVtbiArIDFcblxuICBsZXQgZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIHByZWRpY2F0ZV9pZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgc25kIChBLmdldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gcHJlZGljYXRlIGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJldmVudF9saXN0X29mX3ByZWRpY2F0ZVwiKSBbXVxuXG4gIGxldCBuX2V2ZW50c19wZXJfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIGZzdCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwibl9ldmVudHNfcGVyX3ByZWRpY2F0ZVwiKSAwXG5cbiAgbGV0IG5fZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxXG5cbiAgbGV0IG1hbmRhdG9yeV9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuXG4gIGxldCBnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgZ2V0X3NpZGVfZWZmZWN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuZW5kXG4iLCIoKipcbiAgKiBibGFja2JvYXJkLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMDktMDUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTAzIDIwOjQ4OjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmQgPSBzaWdcbiAgbW9kdWxlIFBCIDogQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZUJsYWNrYm9hcmRcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAoKiogYmxhY2tib2FyZCBtYXRyaXggKilcblxuICB0eXBlIGNhc2VfaW5mb1xuICB0eXBlIGNhc2VfdmFsdWVcbiAgdHlwZSBjYXNlX2FkZHJlc3NcbiAgdHlwZSBwb2ludGVyXG5cbiAgKCoqIGJsYWNrYm9hcmQqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCAoKmJsYWNrYm9hcmQsIG9uY2UgZmluYWxpemVkKilcbiAgdHlwZSBhc3NpZ25fcmVzdWx0XG5cbiAgdmFsIGlzX2ZhaWxlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfc3VjY2VlZGVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBpc19pZ25vcmVkIDogYXNzaWduX3Jlc3VsdCAtPiBib29sXG4gIHZhbCBzdWNjZXNzIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgaWdub3JlIDogYXNzaWduX3Jlc3VsdFxuICB2YWwgZmFpbCA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gUEIucHJlZGljYXRlX2lkXG4gIHZhbCBidWlsZF9wb2ludGVyIDogUEIuc3RlcF9zaG9ydF9pZCAtPiBwb2ludGVyXG4gIHZhbCBpc19iZWZvcmVfYmxhY2tib2FyZCA6IHBvaW50ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2V2ZW50IDogYmxhY2tib2FyZCAtPiBQQi5zdGVwX2lkIC0+IFRyYWNlLnN0ZXBcbiAgdmFsIGdldF9uX2VpZCA6IGJsYWNrYm9hcmQgLT4gaW50XG4gIHZhbCBnZXRfbnByZWRpY2F0ZV9pZCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUHJpb3JpdHkubGV2ZWwgLT4gaW50XG5cbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCA6IGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IGludFxuICB2YWwgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFBCLnN0ZXBfc2hvcnRfaWQgb3B0aW9uXG5cbiAgdmFsIGdldF9zdGFja19kZXB0aCA6IGJsYWNrYm9hcmQgLT4gaW50XG5cbiAgdmFsIGlzX3NlbGVjdGVkX2V2ZW50IDpcbiAgICAoUEIuc3RlcF9pZCwgYmxhY2tib2FyZCwgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgOlxuICAgIChjYXNlX3ZhbHVlLCBQQi5wcmVkaWNhdGVfdmFsdWUpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl91cCA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgZXZlbnRfY2FzZV9hZGRyZXNzKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZvbGxvd19wb2ludGVyX2Rvd24gOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBpc19ib3VuZGFyeSA6IChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICBQQi5wcmVkaWNhdGVfaWQgLT4gcG9pbnRlciAtPiBldmVudF9jYXNlX2FkZHJlc3NcblxuICB2YWwgZXhpc3RfY2FzZSA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgYm9vbCBvcHRpb24pIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZ2V0X3N0YXRpYyA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzLFxuICAgICAgUEIuc3RlcF9zaG9ydF9pZCAqIFBCLnN0ZXBfaWQgKiBQQi5wcmVkaWNhdGVfdmFsdWUgKiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzZXQgOlxuICAgIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGdldCA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGNhc2VfdmFsdWUpIFBCLkNJLlBvLksuSC5iaW5hcnlcbiAgdmFsIGRlYyA6IChjYXNlX2FkZHJlc3MsIGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCByZWZpbmUgOlxuICAgICggY2FzZV9hZGRyZXNzLFxuICAgICAgY2FzZV92YWx1ZSxcbiAgICAgIGJsYWNrYm9hcmQsXG4gICAgICBibGFja2JvYXJkICogYXNzaWduX3Jlc3VsdCApXG4gICAgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgYnJhbmNoIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfbGFzdF9icmFuY2hpbmcgOiAoYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCByZXNldF9pbml0IDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBpbXBvcnQgOlxuICAgID9oZXVyaXN0aWM6UHJpb3JpdHkucHJpb3JpdGllcyAtPlxuICAgIChUcmFjZS5zdGVwIGxpc3QsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogaW5pdGlhbGlzYXRpb24qKVxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICB2YWwgaXNfbWF4aW1hbF9zb2x1dGlvbiA6IChibGFja2JvYXJkLCBib29sKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGl0ZXJhdGlvbiopXG5cbiAgdmFsIHRyYW5zbGF0ZV9ibGFja2JvYXJkIDogKGJsYWNrYm9hcmQsIHJlc3VsdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICB2YWwgcHJpbnRfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqcHJldHR5IHByaW50aW5nKilcblxuICB2YWwgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIDpcbiAgICAoc3RyaW5nLCBpbnQsIGludCwgYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCB1bml0KSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHByaW50X3N0YWNrIDogKGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgZXhpc3QgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBib29sZWFuIDogYm9vbCBvcHRpb24gLT4gY2FzZV92YWx1ZVxuICB2YWwgcG9pbnRlcl90b19wcmV2aW91cyA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXJfdG9fbmV4dCA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcbiAgdmFsIHBvaW50ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV92YWx1ZVxuICB2YWwgdmFsdWVfYWZ0ZXIgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGNhc2VfbGlzdF9vZl9laWQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdGF0ZSA6IFBCLnByZWRpY2F0ZV92YWx1ZSAtPiBjYXNlX3ZhbHVlXG4gIHZhbCBpc19leGlzdF9ldmVudCA6IFBCLnN0ZXBfaWQgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIDogUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzIDogY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIDpcbiAgICBldmVudF9jYXNlX2FkZHJlc3MgLT4gUHJpb3JpdHkubGV2ZWwgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICBibGFja2JvYXJkIC0+IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdFxuXG4gIHZhbCBzaWRlX2VmZmVjdF9vZl9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG5cbiAgdmFsIGN1dCA6XG4gICAgKCBibGFja2JvYXJkLFxuICAgICAgUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgYmxhY2tib2FyZCAqIFBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCB0aWNrIDpcbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgYm9vbCAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm9cbiAgKCogdG8gZG86IG1vdmUgdG8gdGhlIG1vZHVsZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzKilcblxuICB2YWwgbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChibGFja2JvYXJkLCBQQi5zdGVwX2lkLCBQcmlvcml0eS5sZXZlbCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuZW5kXG5cbm1vZHVsZSBCbGFja2JvYXJkIDogQmxhY2tib2FyZCA9IHN0cnVjdFxuICBtb2R1bGUgUEIgPSBCbGFja2JvYXJkX2dlbmVyYXRpb24uUHJlYmxhY2tib2FyZFxuICAoKiogYmxhY2tib2FyZCBtYXRyaXgqKVxuXG4gIHR5cGUgYXNzaWduX3Jlc3VsdCA9IEZhaWwgfCBTdWNjZXNzIHwgSWdub3JlXG4gIHR5cGUgcG9pbnRlciA9IFBCLnN0ZXBfc2hvcnRfaWRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBsZXQgZXJyb3IsIGEgPVxuICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGFcblxuICBsZXQgc3VjY2VzcyA9IFN1Y2Nlc3NcbiAgbGV0IGlnbm9yZSA9IElnbm9yZVxuICBsZXQgZmFpbCA9IEZhaWxcblxuICBsZXQgaXNfaWdub3JlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IElnbm9yZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX2ZhaWxlZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEZhaWwgLT4gdHJ1ZVxuICAgIHwgU3VjY2VzcyB8IElnbm9yZSAtPiBmYWxzZVxuXG4gIGxldCBpc19zdWNjZWVkZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdWNjZXNzIC0+IHRydWVcbiAgICB8IEZhaWwgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgbnVsbF9wb2ludGVyID0gUEIuZHVtbXlfc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyIHggPSB4ID0gbnVsbF9wb2ludGVyXG4gIGxldCBwb2ludGVyX2JlZm9yZV9ibGFja2JvYXJkID0gUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gIGxldCBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCB4ID0geCA9IFBCLmR1bW15X3N0ZXBfaWRcbiAgbGV0IGlzX2JlZm9yZV9ibGFja2JvYXJkIHggPSB4ID0gcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICBsZXQgYnVpbGRfcG9pbnRlciBpID0gaVxuXG4gIHR5cGUgZXZlbnRfY2FzZV9hZGRyZXNzID0ge1xuICAgIGNvbHVtbl9wcmVkaWNhdGVfaWQ6IFBCLnByZWRpY2F0ZV9pZDtcbiAgICByb3dfc2hvcnRfZXZlbnRfaWQ6IHBvaW50ZXI7XG4gIH1cblxuICBsZXQgcHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyB4ID0geC5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGlzX2JvdW5kYXJ5IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcyA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBpc19iZWZvcmVfYmxhY2tib2FyZCBldmVudF9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZFxuXG4gIGxldCBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgPVxuICAgIHsgY29sdW1uX3ByZWRpY2F0ZV9pZCA9IHBpZDsgcm93X3Nob3J0X2V2ZW50X2lkID0gc2VpZCB9XG5cbiAgdHlwZSBjYXNlX2FkZHJlc3MgPVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgb2YgaW50ICogUHJpb3JpdHkubGV2ZWxcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIG9mIGludFxuICAgIHwgUG9pbnRlcl90b19uZXh0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYWZ0ZXIgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBWYWx1ZV9iZWZvcmUgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c1xuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBvZiBQcmlvcml0eS5sZXZlbFxuICAgIHwgRXhpc3Qgb2YgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBLZWVwX2V2ZW50IG9mIFBCLnN0ZXBfaWRcblxuICBsZXQgaXNfZXhpc3RfZXZlbnQgaSA9IEtlZXBfZXZlbnQgaVxuXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpLmNvbHVtbl9wcmVkaWNhdGVfaWRcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgaSBqID1cbiAgICBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaS5jb2x1bW5fcHJlZGljYXRlX2lkLCBqKVxuXG4gIGxldCBwb2ludGVyX3RvX25leHQgZSA9IFBvaW50ZXJfdG9fbmV4dCBlXG4gIGxldCB2YWx1ZV9hZnRlciBlID0gVmFsdWVfYWZ0ZXIgZVxuICBsZXQgdmFsdWVfYmVmb3JlIGUgPSBWYWx1ZV9iZWZvcmUgZVxuICBsZXQgcG9pbnRlcl90b19wcmV2aW91cyBlID0gUG9pbnRlcl90b19wcmV2aW91cyBlXG4gIGxldCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gTl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpID0gTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpXG4gIGxldCBleGlzdCBlID0gRXhpc3QgZVxuXG4gIHR5cGUgY2FzZV92YWx1ZSA9XG4gICAgfCBTdGF0ZSBvZiBQQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IENvdW50ZXIgb2YgaW50XG4gICAgfCBQb2ludGVyIG9mIHBvaW50ZXJcbiAgICB8IEJvb2xlYW4gb2YgYm9vbCBvcHRpb25cblxuICBsZXQgcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBcIlN0YXRlISBcIlxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICB4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJDb3VudGVyICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IFBvaW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiUG9pbnRlciAlaVwiXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgIGluXG4gICAgICAoKVxuICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJCb29sZWFuICVzXCJcbiAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiP1wiXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gXCJ0cnVlXCJcbiAgICAgICAgICB8IF8gLT4gXCJmYWxzZVwiKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcblxuICBsZXQgc3RyaW5nX29mX3BvaW50ZXIgc2VpZCA9XG4gICAgXCJldmVudCBzZWlkIFwiIF4gc3RyaW5nX29mX2ludCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZClcblxuICBsZXQgcHJpbnRfcG9pbnRlciBsb2cgc2VpZCA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIChzdHJpbmdfb2ZfcG9pbnRlciBzZWlkKVxuICBsZXQgc3RhdGUgcHJlZGljYXRlX3ZhbHVlID0gU3RhdGUgcHJlZGljYXRlX3ZhbHVlXG4gIGxldCBwb2ludGVyIHAgPSBQb2ludGVyIHAucm93X3Nob3J0X2V2ZW50X2lkXG4gIGxldCBib29sZWFuIGIgPSBCb29sZWFuIGJcblxuICBsZXQgY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9hZGRyZXNzID1cbiAgICBWYWx1ZV9hZnRlciBldmVudF9hZGRyZXNzXG5cbiAgbGV0IHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlXG4gICAgICA9XG4gICAgbWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSB4IC0+IGVycm9yLCBsb2dfaW5mbywgeFxuICAgIHwgQ291bnRlciBfIHwgUG9pbnRlciBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICBsZXQgXyA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJ3cm9uZyBraW5kIG9mIGNhc2VfdmFsdWUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCIpIFBCLnVua25vd25cblxuICB0eXBlIGFzc2lnbm1lbnQgPSBjYXNlX2FkZHJlc3MgKiBjYXNlX3ZhbHVlXG5cbiAgbGV0IGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBTb21lIF8sIE5vbmUgLT4gdHJ1ZVxuICAgIHwgXywgXyAtPiBmYWxzZVxuXG4gIGxldCBnIHAgcDIgcG9zIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU3RhdGUgeCwgU3RhdGUgeSAtPiBlcnJvciwgbG9nX2luZm8sIHAgeCB5XG4gICAgfCBCb29sZWFuIHgsIEJvb2xlYW4geSAtPiBlcnJvciwgbG9nX2luZm8sIHAyIHggeVxuICAgIHwgU3RhdGUgXywgXyB8IEJvb2xlYW4gXywgXyB8IENvdW50ZXIgXywgXyB8IFBvaW50ZXIgXywgXyAtPlxuICAgICAgbGV0IGZpbGUsIGxpbmUsIF8sIF8gPSBwb3MgaW5cbiAgICAgIGxldCBzdHJpbmcgPSBmaWxlIF4gXCIsIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBwb3NcbiAgICAgICAgfm1lc3NhZ2U6XCJDb3VudGVycyBhbmQvb3IgUG9pbnRlcnMgc2hvdWxkIG5vdCBiZSBjb21wYXJlZFwiXG4gICAgICAgIChGYWlsdXJlIChzdHJpbmcgXiBcIiBDb21wYXJpc29uIGJldHdlZW4gcG9pbnRlcnMgYW5kIGNvdW50ZXJzXCIpKVxuICAgICAgICBmYWxzZVxuXG4gIGxldCBzdHJpY3RseV9tb3JlX3JlZmluZWQgPVxuICAgIGcgUEIuc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGJvb2xfc3RyaWN0bHlfbW9yZV9yZWZpbmVkIF9fUE9TX19cblxuICB0eXBlIGNhc2VfaW5mb19zdGF0aWMgPSB7XG4gICAgcm93X3Nob3J0X2lkOiBQQi5zdGVwX3Nob3J0X2lkO1xuICAgIGV2ZW50X2lkOiBQQi5zdGVwX2lkO1xuICAgIHRlc3Q6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBhY3Rpb246IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgfVxuXG4gIHR5cGUgY2FzZV9pbmZvX2R5bmFtaWMgPSB7XG4gICAgcG9pbnRlcl9wcmV2aW91czogcG9pbnRlcjtcbiAgICBwb2ludGVyX25leHQ6IHBvaW50ZXI7XG4gICAgc3RhdGVfYWZ0ZXI6IFBCLnByZWRpY2F0ZV92YWx1ZTtcbiAgICBzZWxlY3RlZDogYm9vbCBvcHRpb247XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mbyA9IHsgc3RhdGljOiBjYXNlX2luZm9fc3RhdGljOyBkeW5hbWljOiBjYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGR1bW15X2Nhc2VfaW5mb19zdGF0aWMgPVxuICAgIHtcbiAgICAgIHJvd19zaG9ydF9pZCA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWQ7XG4gICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fZHluYW1pYyA9XG4gICAge1xuICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHBvaW50ZXJfbmV4dCA9IG51bGxfcG9pbnRlcjtcbiAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5rbm93bjtcbiAgICAgIHNlbGVjdGVkID0gTm9uZTtcbiAgICB9XG5cbiAgbGV0IGNvcnJlY3RfcG9pbnRlciBzZWlkIHNpemUgPVxuICAgIGxldCBpbnRfc2VpZCA9IFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQgaW5cbiAgICBpZiBpbnRfc2VpZCA8IDAgdGhlblxuICAgICAgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZFxuICAgIGVsc2UgaWYgaW50X3NlaWQgPj0gc2l6ZSB0aGVuXG4gICAgICBQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplXG4gICAgZWxzZVxuICAgICAgc2VpZFxuXG4gIGxldCBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemUgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmRlY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBwb2ludGVyX25leHQgPSBjb3JyZWN0X3BvaW50ZXIgKFBCLmluY19zdGVwX3Nob3J0X2lkIHNlaWQpIHNpemU7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBpbml0X2luZm9fc3RhdGljIF9wX2lkIHNlaWQgKGVpZCwgXywgdGVzdCwgYWN0aW9uKSA9XG4gICAgeyByb3dfc2hvcnRfaWQgPSBzZWlkOyBldmVudF9pZCA9IGVpZDsgdGVzdDsgYWN0aW9uIH1cblxuICBsZXQgZ2V0X2VpZF9vZl90cmlwbGUgKHgsIF8sIF8sIF8pID0geFxuXG4gIGxldCBkdW1teV9jYXNlX2luZm8gPVxuICAgIHsgc3RhdGljID0gZHVtbXlfY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYyA9IGR1bW15X2Nhc2VfaW5mb19keW5hbWljIH1cblxuICBsZXQgaW5pdF9pbmZvIHBfaWQgc2VpZCBzaXplIHRyaXBsZSA9XG4gICAge1xuICAgICAgc3RhdGljID0gaW5pdF9pbmZvX3N0YXRpYyBwX2lkIHNlaWQgdHJpcGxlO1xuICAgICAgZHluYW1pYyA9IGluaXRfaW5mb19keW5hbWljIHNlaWQgc2l6ZTtcbiAgICB9XG5cbiAgdHlwZSBzdGFjayA9IGFzc2lnbm1lbnQgbGlzdFxuICAoKiogYmxhY2tib2FyZCAqKVxuXG4gIHR5cGUgYmxhY2tib2FyZCA9IHtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBQQi5BLnQ7XG4gICAgcHJlX2NvbHVtbl9tYXBfaW52OiBQQi5wcmVkaWNhdGVfaW5mbyBQQi5BLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCB0byBpdHMgd2lyZSBsYWJlbCAqKVxuICAgIGZvcmNlZF9ldmVudHM6IChQQi5zdGVwX2lkIGxpc3QgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbikgbGlzdDtcbiAgICBuX3ByZWRpY2F0ZV9pZDogaW50O1xuICAgIG5fZWlkOiBpbnQ7XG4gICAgbl9zZWlkOiBpbnQgUEIuQS50O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrO1xuICAgIHN0YWNrOiBzdGFjayBsaXN0O1xuICAgIGJsYWNrYm9hcmQ6IGNhc2VfaW5mbyBQQi5BLnQgUEIuQS50O1xuICAgIHNlbGVjdGVkX2V2ZW50czogYm9vbCBvcHRpb24gUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQ6IGludCBQQi5BLnQ7XG4gICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDogaW50IFBCLkEudCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIHVzZWRfcHJlZGljYXRlX2lkOiBib29sIFBCLkEudDtcbiAgICBuX3VucmVzb2x2ZWRfZXZlbnRzOiBpbnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDogaW50IFByaW9yaXR5LkxldmVsTWFwLnQ7XG4gICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkOiBQQi5zdGVwX3Nob3J0X2lkIFBCLkEudDtcbiAgICBldmVudF9jYXNlX2xpc3Q6IGV2ZW50X2Nhc2VfYWRkcmVzcyBsaXN0IFBCLkEudDtcbiAgICBzaWRlX2VmZmVjdF9vZl9ldmVudDogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCBQQi5BLnQ7XG4gICAgZmljdGl0aW91c19vYnNlcnZhYmxlOiBQQi5zdGVwX2lkIG9wdGlvbjtcbiAgICBsZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgUEIuQS50O1xuICB9XG5cbiAgbGV0IHRpY2sgcHJvZmlsaW5nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnRpY2sgcHJvZmlsaW5nX2luZm9cblxuICBsZXQgbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldCBibGFja2JvYXJkLmxldmVsX29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIlVua25vd24gZXZlbnQgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gZXZlbnQgaWRcIikgUHJpb3JpdHkuaGlnaGVzdFxuXG4gIGxldCBnZXRfZXZlbnQgYmxhY2tib2FyZCBrID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaylcbiAgbGV0IGdldF9uX2VpZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX2VpZFxuICBsZXQgZ2V0X3N0YWNrX2RlcHRoIGJsYWNrYm9hcmQgPSBMaXN0Lmxlbmd0aCBibGFja2JvYXJkLnN0YWNrXG4gIGxldCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLmZvcmNlZF9ldmVudHNcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgYmxhY2tib2FyZCBpID1cbiAgICBQQi5BLmdldCBibGFja2JvYXJkLnNpZGVfZWZmZWN0X29mX2V2ZW50IChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuXG4gIGxldCBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBbXVxuXG4gIGxldCBnZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZCkgKVxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBkdW1teV9jYXNlX2luZm9cblxuICBsZXQgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhdGljID0gY2FzZS5zdGF0aWMgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICAoc3RhdGljLnJvd19zaG9ydF9pZCwgc3RhdGljLmV2ZW50X2lkLCBzdGF0aWMudGVzdCwgc3RhdGljLmFjdGlvbikgKVxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlALlwiIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGksIGopIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpICVzQC5cIiBpXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBqKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX3ByZWQgJWkgQC5cIiBpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYWZ0ZXIgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVmFsdWVfYWZ0ZXIgIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgVmFsdWVfYmVmb3JlIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2JlZm9yZSBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiUG9pbnRlcl9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlVucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50cyAtPlxuICAgICAgbGV0IF8gPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJVbnJlc29sdmVkX2V2ZW50c1wiXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgRXhpc3QgZSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiRXhpc3QgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIktlZXAgJWlcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGdldF9ucHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgPSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHBpZCBsZXZlbCA9XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIHdpdGhcbiAgICB8IFNvbWUgeCAtPiBQQi5BLmdldCB4IHBpZFxuICAgIHwgTm9uZSAtPiAwXG5cbiAgbGV0IGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCBibGFja2JvYXJkIHBpZCA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBpZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gIGxldCBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dCB9IClcblxuICBsZXQgZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgeyBhZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgfSApXG5cbiAgbGV0IGdldF9maXJzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgUEIuemVyb19zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IGdldF9sYXN0X2xpbmtlZF9ldmVudCBibGFja2JvYXJkIHBpZCA9XG4gICAgaWYgcGlkIDwgMCB8fCBwaWQgPj0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSAoUEIuQS5nZXQgYmxhY2tib2FyZC5sYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgcGlkKVxuXG4gICgqKnByZXR0eSBwcmludGluZyopXG4gIGxldCBwcmludF9rbm93bl9jYXNlIGxvZyBwcmVmIGluZiBzdWYgY2FzZSA9XG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXN0ZXN0OlwiIHByZWYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMudGVzdCBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIvZWlkOiVpL2FjdGlvbjpcIlxuICAgICAgICAoUEIuaW50X29mX3N0ZXBfaWQgY2FzZS5zdGF0aWMuZXZlbnRfaWQpXG4gICAgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5zdGF0aWMuYWN0aW9uIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBpbmYgaW5cbiAgICBsZXQgXyA9IFBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyIGluXG4gICAgbGV0IF8gPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiBzdWYgaW5cbiAgICAoKVxuXG4gIGxldCBwcmludF9jYXNlIGxvZyBjYXNlID1cbiAgICBsZXQgc3RhdHVzID0gY2FzZS5keW5hbWljLnNlbGVjdGVkIGluXG4gICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICB8IFNvbWUgZmFsc2UgLT4gKClcbiAgICB8IFNvbWUgdHJ1ZSAtPiBwcmludF9rbm93bl9jYXNlIGxvZyBcIlwiIFwiIFwiIFwiIFwiIGNhc2VcbiAgICB8IE5vbmUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCI/KFwiIFwiKSBcIiBcIiBcIiBjYXNlXG5cbiAgbGV0IHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBtYXRjaCBhZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklzIHRoZSBldmVudCAlaSBzZWxlY3RlZCA/IFwiIChQQi5pbnRfb2Zfc3RlcF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgY2FzZSBcIiBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcInNlbGVjdGVkID8gXCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ1xuICAgICAgICAgIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpIGF0IGxldmVsICVzXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTnVtYmVyIG9mIHVucmVzb2x2ZWQgZXZlbnRzIGZvciB0aGUgcHJlZGljYXRlICVpXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUHJvY2hhaW4gw6l2w6luZW1lbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBWYWx1ZV9hZnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGFwcsOocyBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYmVmb3JlIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJWYWxldXIgYXZhbnQgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkV2ZW5lbWVudCBwcsOpY8Opc2VudCBhZ2lzc2FudCBzdXIgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJOb21icmUgZCfDqXbDqW5lbWVudHMgbm9uIHLDqXNvbHVcIiBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1IGF0IGxldmVsICVzXCJcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBzdHJpbmdfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IFN0YXRlIHBiIC0+IFBCLnN0cmluZ19vZl9wcmVkaWNhdGVfdmFsdWUgcGJcbiAgICB8IENvdW50ZXIgaSAtPiBcIkNvdW50ZXIgXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICB8IFBvaW50ZXIgaSAtPiBzdHJpbmdfb2ZfcG9pbnRlciBpXG4gICAgfCBCb29sZWFuIGJvb2wgLT5cbiAgICAgIChtYXRjaCBib29sIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgfCBTb21lIGZhbHNlIC0+IFwiTm9cIilcblxuICBsZXQgcHJpbnRfdmFsdWUgbG9nIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkNvdW50ZXIgJWlcIiBpXG4gICAgfCBQb2ludGVyIGkgLT4gcHJpbnRfcG9pbnRlciBsb2cgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIlxuICAgICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBcIlllc1wiXG4gICAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKGFkZHJlc3MsIHZhbHVlKSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgcHJpbnRfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIGxldCBfID0gcHJpbnRfdmFsdWUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSB2YWx1ZSBpblxuICAgIGVycm9yLCBsb2dfaW5mb1xuXG4gIGxldCBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKkJMQUNLQk9BUkQqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWkgd2lyZXMsICVpIGV2ZW50c1wiIGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWRcbiAgICAgICAgYmxhY2tib2FyZC5uX2VpZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXM6KlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBlcnIgPSByZWYgZXJyb3IgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYXJyYXkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBpIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBQQi5BLmdldCBibGFja2JvYXJkLnVzZWRfcHJlZGljYXRlX2lkIGkgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqd2lyZXMgJWk6IFwiIGkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBqIGVycm9yID1cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKiAlaTpcIiBqIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCBjYXNlID0gUEIuQS5nZXQgYXJyYXkgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2UgbG9nIGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBnZXRfcG9pbnRlcl9uZXh0IGNhc2UgaW5cbiAgICAgICAgICAgICAgICBsZXQgaicgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBqJyBpblxuICAgICAgICAgICAgICAgIGlmIGogPSBqJyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGF1eCBqJyBlcnJvclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICAgIGF1eCAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCkgIWVyclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IGVyciA6PSBlcnJvciBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLmJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciA9ICFlcnIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnN0YWNrcypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2spXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSBzdGFjayAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSAtPlxuICAgICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8pXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIGJsYWNrYm9hcmQuc3RhY2tcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqc2VsZWN0ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gaSBib29sIC0+XG4gICAgICAgICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGIgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgIEV2ZW50OiVpICglcylcIiBpXG4gICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgIFwiS0VQVFwiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcIlJFTU9WRURcIilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nKVxuICAgICAgICBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50c1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip1bnNvbHZlZF9ldmVudHMqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaVwiIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWQqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBhIGIgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndlaWdodCBvZiBwcmVkaWNhdGVfaWRfYnlfbGV2ZWwqXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuaXRlclxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiBMZXZlbDolc1wiIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBQQi5BLml0ZXJpIChmdW4gYSBiIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWk6JWlcIiBhIGIgaW5cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZykpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gICgqKiBwcm9wYWdhdGlvbiByZXF1ZXN0ICopXG5cbiAgbGV0IGFkZF9ldmVudCBlaWQgKHBpZCwgc2VpZCkgYXJyYXkgbGV2ZWwgdW5zb2x2ZWQgPVxuICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPSBidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcGlkIHNlaWQgaW5cbiAgICBsZXQgb2xkID0gUEIuQS5nZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgaW5cbiAgICBsZXQgdW5zb2x2ZWQgPVxuICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsXG4gICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsZXZlbCB1bnNvbHZlZCArIDEpXG4gICAgICAgIHVuc29sdmVkXG4gICAgaW5cbiAgICBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoZXZlbnRfY2FzZV9hZGRyZXNzIDo6IG9sZCksIHVuc29sdmVkXG5cbiAgbGV0IGVtcHR5X3N0YWNrID0gW11cblxuICBsZXQgaW1wb3J0ID9oZXVyaXN0aWM6XyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9wcmVkaWNhdGVzID1cbiAgICAgIFBCLm5fcHJlZGljYXRlcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbl9ldmVudHMgPVxuICAgICAgUEIubl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBzdGFjayA9IFtdIGluXG4gICAgbGV0IGN1cnJlbnRfc3RhY2sgPSBlbXB0eV9zdGFjayBpblxuICAgIGxldCBldmVudF9jYXNlX2xpc3QgPSBQQi5BLm1ha2Ugbl9ldmVudHMgW10gaW5cbiAgICBsZXQgbl9zZWlkID0gUEIuQS5tYWtlIG5fcHJlZGljYXRlcyAwIGluXG4gICAgbGV0IHVuc29sdmVkX2J5X2xldmVsID0gUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHkgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgKFBCLkEubWFrZSAxIGR1bW15X2Nhc2VfaW5mbykgaW5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBsZXZlbF9vcHQgbWFwID1cbiAgICAgICAgbWF0Y2ggbGV2ZWxfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1hcFxuICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICBhdXggKFByaW9yaXR5LmhpZ2hlciBsZXZlbClcbiAgICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgKFBCLkEubWFrZSAwIDApIG1hcClcbiAgICAgIGluXG4gICAgICBhdXggKFNvbWUgUHJpb3JpdHkubG93ZXN0KSBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IGluY19kZXB0aCBsZXZlbCBwX2lkID1cbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmZpbmRfb3B0aW9uIGxldmVsIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgIGxldCBvbGQgPSB0cnkgUEIuQS5nZXQgYSBwX2lkIHdpdGggTm90X2ZvdW5kIC0+IDAgaW5cbiAgICAgICAgUEIuQS5zZXQgYSBwX2lkIChvbGQgKyAxKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cblxuICAgIGxldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkID0gUEIuQS5tYWtlIDAgMCBpblxuICAgIGxldCBsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGVfaWQgPVxuICAgICAgUEIuQS5tYWtlIG5fcHJlZGljYXRlcyBQQi56ZXJvX3N0ZXBfc2hvcnRfaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgbGV0IHJlYyBhdXgxIHBfaWQgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBwX2lkIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpemUgPVxuICAgICAgICAgICAgUEIubl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc2l6ZSA9IHNpemUgKyAxIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgUEIuQS5zZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBfaWRcbiAgICAgICAgICAgICAgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWQgcF9pZCAoc2l6ZSAtIDIpIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBuX3NlaWQgcF9pZCBzaXplIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICBQQi5ldmVudF9saXN0X29mX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBwcmVfYmxhY2tib2FyZCBwX2lkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYXJyYXkgPSBQQi5BLm1ha2Ugc2l6ZSBkdW1teV9jYXNlX2luZm8gaW5cbiAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGJsYWNrYm9hcmQgcF9pZCBhcnJheSBpblxuICAgICAgICAgIGxldCByZWMgYXV4MiBzZWlkIGwgbG9nX2luZm8gPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkeW5hbWljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9uZXh0ID0gUEIuaW5jX3N0ZXBfc2hvcnRfaWQgUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlX2FmdGVyID0gUEIudW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgMCBpbmZvIGluXG4gICAgICAgICAgICAgIGxldCBwcmVkX3NpemUgPVxuICAgICAgICAgICAgICAgIFBCLmRlY19zdGVwX3Nob3J0X2lkIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCBzaXplKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSBTb21lIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBzdGF0aWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2lkID0gcHJlZF9zaXplO1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2lkID0gUEIuZHVtbXlfc3RlcF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBhcnJheSAoc2l6ZSAtIDEpIGluZm8gaW5cbiAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgIHwgdHJpcGxlIDo6IHEgLT5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPSBpbml0X2luZm8gcF9pZCBzZWlkIChzaXplIC0gMSkgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlaWQgPSBnZXRfZWlkX29mX3RyaXBsZSB0cmlwbGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgX2Vycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGluY19kZXB0aCBsZXZlbCBwX2lkIGluXG4gICAgICAgICAgICAgIGxldCAoKSwgXyA9XG4gICAgICAgICAgICAgICAgYWRkX2V2ZW50IGVpZCAocF9pZCwgc2VpZCkgZXZlbnRfY2FzZV9saXN0IGxldmVsXG4gICAgICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5lbXB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhcnJheSAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgc2VpZCkgaW5mbyBpblxuICAgICAgICAgICAgICBhdXgyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgYXV4MiAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgKHNpemUgLSAyKSkgbGlzdCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4MSAocF9pZCAtIDEpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXgxIChuX3ByZWRpY2F0ZXMgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZm9yY2VkX2V2ZW50cyA9XG4gICAgICBQQi5tYW5kYXRvcnlfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudCA9XG4gICAgICBQQi5nZXRfcHJlX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB1bnNvbHZlZF9ieV9sZXZlbCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGxvZ19pbmZvIG1hcCA9XG4gICAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIG1hcFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgKFBCLnN0ZXBfaWRfb2ZfaW50IGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgbWFwICsgMSlcbiAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKGsgLSAxKSBlcnJvciBsb2dfaW5mbyBtYXBcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBuX2V2ZW50cyBlcnJvciBsb2dfaW5mbyB1bnNvbHZlZF9ieV9sZXZlbFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2lkZV9lZmZlY3RzID1cbiAgICAgIFBCLmdldF9zaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZmljdGl0aW91c19vYnMgPVxuICAgICAgUEIuZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGIgPVxuICAgICAge1xuICAgICAgICBldmVudDtcbiAgICAgICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgPSBzaWRlX2VmZmVjdHM7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IFBCLmdldF9wcmVfY29sdW1uX21hcF9pbnYgcHJlX2JsYWNrYm9hcmQ7XG4gICAgICAgIGxldmVsX29mX2V2ZW50ID0gUEIubGV2ZWxzIHByZV9ibGFja2JvYXJkO1xuICAgICAgICBmb3JjZWRfZXZlbnRzO1xuICAgICAgICBuX2VpZCA9IG5fZXZlbnRzO1xuICAgICAgICBuX3NlaWQ7XG4gICAgICAgIGV2ZW50X2Nhc2VfbGlzdDtcbiAgICAgICAgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICBuX3ByZWRpY2F0ZV9pZCA9IG5fcHJlZGljYXRlcztcbiAgICAgICAgY3VycmVudF9zdGFjaztcbiAgICAgICAgc3RhY2s7XG4gICAgICAgIGJsYWNrYm9hcmQ7XG4gICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IFBCLkEubWFrZSBuX2V2ZW50cyBOb25lO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkO1xuICAgICAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsO1xuICAgICAgICB1c2VkX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgdHJ1ZTtcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50cyA9IG5fZXZlbnRzO1xuICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID0gdW5zb2x2ZWRfYnlfbGV2ZWw7XG4gICAgICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IGZpY3RpdGlvdXNfb2JzO1xuICAgICAgfVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBiXG5cbiAgbGV0IGV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGluZm8gPVxuICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgaW5mby5keW5hbWljLnNlbGVjdGVkXG5cbiAgbGV0IHNldF9jYXNlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXyA9XG4gICAgICAgIFBCLkEuc2V0XG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCBjYXNlX2FkZHJlc3MuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgY2FzZV9hZGRyZXNzLnJvd19zaG9ydF9ldmVudF9pZClcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwiRGVyZWZlcmVuY2luZyBOdWxsIHBvaW50ZXJcIlxuICAgICAgICAoRmFpbHVyZSBcIkRlcmVmZXJlbmNpbmcgbnVsbCBwb2ludGVyXCIpIGJsYWNrYm9hcmRcblxuICBsZXQgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgIGxldCAoKSA9IFBCLkEuc2V0IGEgaW50IGludDIgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQm9vbGVhbiBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBDb3VudGVyIGludDIgLT5cbiAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50IGludDIgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgUG9pbnRlcl90b19uZXh0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfbmV4dCA9IGludDIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBDb3VudGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2FmdGVyIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBTdGF0ZSBzdGF0ZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICB7IG9sZCB3aXRoIGR5bmFtaWMgPSB7IG9sZC5keW5hbWljIHdpdGggc3RhdGVfYWZ0ZXIgPSBzdGF0ZSB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9hZnRlclwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuICAgIHwgVmFsdWVfYmVmb3JlIF9jYXNlX2FkZHJlc3MgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJzZXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB2YWx1ZV9iZWZvcmVcIlxuICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBQb2ludGVyIGludDIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHBvaW50ZXJfcHJldmlvdXMgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA4OTYsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBuX3VucmVzb2x2ZWRfZXZlbnRzID0gaW50IH1cbiAgICAgIHwgQm9vbGVhbiBfIHwgUG9pbnRlciBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICBcInNldCwgbGluZSA5MDUsIEluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQgLT5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwgPVxuICAgICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWwgaW50XG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsO1xuICAgICAgICAgIH0gKVxuICAgICAgfCBCb29sZWFuIF8gfCBTdGF0ZSBfIHwgUG9pbnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIFBCLkEuc2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSBiXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBTdGF0ZSBfIHwgQ291bnRlciBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IEV4aXN0IGNhc2VfYWRkcmVzcyAtPlxuICAgICAgKG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgICAgfCBCb29sZWFuIGIgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHNlbGVjdGVkID0gYiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IFBvaW50ZXIgXyB8IENvdW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgICBibGFja2JvYXJkKVxuXG4gIGxldCBpc19zZWxlY3RlZF9ldmVudCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfaWQgYmxhY2tib2FyZCA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpIClcblxuICBsZXQgcmVjIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbWF0Y2ggY2FzZV9hZGRyZXNzIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvb2xlYW5cbiAgICAgICAgICAoUEIuQS5nZXQgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgKFBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpKSApXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaW50LCBsZXZlbCkgLT5cbiAgICAgIGxldCBuID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICAgICAgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT4gUEIuQS5nZXQgYSBpbnRcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgblxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaW50IC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgKFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBpbnQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQm9vbGVhbiBjYXNlLmR5bmFtaWMuc2VsZWN0ZWRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgUG9pbnRlciBjYXNlLmR5bmFtaWMucG9pbnRlcl9uZXh0XG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2UgPVxuICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RhdGUgY2FzZS5keW5hbWljLnN0YXRlX2FmdGVyXG4gICAgfCBWYWx1ZV9iZWZvcmUgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICBpZiBpc19udWxsX3BvaW50ZXIgcG9pbnRlciB0aGVuXG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlZhbHVlIGJlZm9yZSBhbiB1bmV4aXN0aW5nIGVsZW1lbnQgcmVxdWVzdGVkXCIpXG4gICAgICAgICAgKFN0YXRlIFBCLnVuZGVmaW5lZClcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKFZhbHVlX2FmdGVyIHsgY2FzZV9hZGRyZXNzIHdpdGggcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlciB9KVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICB8IFBvaW50ZXJfdG9fcHJldmlvdXMgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQ291bnRlciBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbHZsIC0+XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgQ291bnRlclxuICAgICAgICAgIChQcmlvcml0eS5MZXZlbE1hcC5maW5kX2RlZmF1bHQgMCBsdmxcbiAgICAgICAgICAgICBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWwpIClcblxuICBsZXQgZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWZpeCBpbnQgaW50MlxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGZpbGVfbmFtZSA9XG4gICAgICBwcmVmaXggXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgaW50IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludDIgXiBcIi5zeHdcIlxuICAgIGluXG4gICAgbGV0IGRlc2NfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVfbmFtZSBpblxuICAgIGxldCBkZXNjID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5YTFMgZGVzY19jaGFuIGluXG4gICAgbGV0IHBhcmFtZXRlciA9IFBCLkNJLlBvLksuSC5zZXRfbG9nZ2VyIHBhcmFtZXRlciBkZXNjIGluXG4gICAgbGV0IG5jb2x1bW5zX2xlZnQgPSAzIGluXG4gICAgbGV0IG5yb3dzX2hlYWQgPSAyIGluXG4gICAgbGV0IHJvd19vZl9wcmVjb25kaXRpb24gZWlkID0gbnJvd3NfaGVhZCArICgzICogZWlkKSBpblxuICAgIGxldCByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgPSAxICsgcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICBsZXQgY29sdW1uX29mX3BpZCBwaWQgPSBwaWQgKyBuY29sdW1uc19sZWZ0IGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJSRU0gICoqKioqICBCQVNJQyAgKioqKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IGNvbG9ycyA9IFBCLkEubWFrZSBibGFja2JvYXJkLm5fZWlkIE5vbmUgaW5cbiAgICBsZXQgYmFja2NvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2VsbEJhY2tDb2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYiBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICgpXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCB0ZXh0Y29sb3IgbG9nIGNvbG9yID1cbiAgICAgIG1hdGNoIGNvbG9yIHdpdGhcbiAgICAgIHwgU29tZSBjb2xvciAtPlxuICAgICAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBjb2xvciBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5DaGFyQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgZ2V0Y2VsbCBsb2cgcm93IGNvbCA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQyA9IFMuZ2V0Q2VsbEJ5UG9zaXRpb24oJWksJWkpXCIgY29sIHJvdyBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IG92ZXJsaW5lX2Nhc2UgbG9nIHJvdyBfY29sIF9jb2xvciA9XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUj1TLlJvd3MoJWkpXCIgcm93IGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiUi5Ub3BCb3JkZXIgPSB3aXRoQm9yZFwiIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZSBsb2cgcm93IGNvbCBjb2xvcl9mb250IGNvbG9yX2JhY2sgc3RyaW5nID1cbiAgICAgIGlmIHN0cmluZyA8PiBcIlwiIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBnZXRjZWxsIGxvZyByb3cgY29sIGluXG4gICAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuc2V0Rm9ybXVsYShcXFwiJXNcXFwiKVwiIHN0cmluZyBpblxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcHJpbnRfY2FzZV9mdW4gbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIGYgZXJyb3IgPVxuICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgbGV0ICgpID0gdGV4dGNvbG9yIGxvZyBjb2xvcl9mb250IGluXG4gICAgICBsZXQgKCkgPSBiYWNrY29sb3IgbG9nIGNvbG9yX2JhY2sgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIlwiIGluXG4gICAgICBsZXQgZXJyb3IgPSBmIGVycm9yIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiXFxcIilcIiBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgZXJyb3JcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiU3ViIE1haW5cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgciwgZywgYiA9IENvbG9yLnRyaXBsZV9vZl9jb2xvciBDb2xvci5CbGFjayBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkRpbSB3aXRoQm9yZCBBcyBOZXcgY29tLnN1bi5zdGFyLnRhYmxlLkJvcmRlckxpbmVcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJXaXRoIHdpdGhCb3JkIHdpdGhCb3JkLkNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwid2l0aEJvcmQuT3V0ZXJMaW5lV2lkdGggPSA2MFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBXaXRoXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUyA9IFRoaXNDb21wb25lbnQuU2hlZXRzKDApXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBfID1cbiAgICAgIG1hdGNoIGZvcmNlZF9ldmVudHMgYmxhY2tib2FyZCB3aXRoXG4gICAgICB8IFsgKGxpc3QsIF8pIF0gLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBlaWQgLT4gUEIuQS5zZXQgY29sb3JzIChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIChTb21lIENvbG9yLlJlZCkpXG4gICAgICAgICAgbGlzdFxuICAgICAgfCBfIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gcGlkIHBfaW5mbyAtPlxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2MgMCAoY29sdW1uX29mX3BpZCBwaWQpIE5vbmUgTm9uZVxuICAgICAgICAgICAgKGZ1biBfZXJyb3IgLT4gUEIucHJpbnRfcHJlZGljYXRlX2luZm8gZGVzYyBwX2luZm8pXG4gICAgICAgICAgICBlcnJvcilcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnZcbiAgICBpblxuICAgIGxldCByZWMgYXV4IGVpZCBlcnJvciBsb2dfaW5mbyBzdGFjayA9XG4gICAgICBpZiBlaWQgPj0gYmxhY2tib2FyZC5uX2VpZCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgIGNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgKFBCLnN0ZXBfaWRfb2ZfaW50IGVpZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJvd19wcmVjb25kaXRpb24gPSByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCBpblxuICAgICAgICBsZXQgcm93X3Bvc3Rjb25kaXRpb24gPSByb3dfb2ZfcG9zdGNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IGNvbG9yLCBtYXliZWtlcHQgPVxuICAgICAgICAgIG1hdGNoIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIGVpZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFBCLkEuZ2V0IGNvbG9ycyBlaWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPiBTb21lIENvbG9yLlJlZCwgdHJ1ZVxuICAgICAgICAgIHwgU29tZSBmYWxzZSAtPiBTb21lIENvbG9yLkdyZXksIGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4MiBmIGcgbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBvdmVybGluZV9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb25cbiAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgTm9uZSBjb2xvciAoZiB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGcgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgbWF5YmVrZXB0IHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2JlZm9yZSA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9iZWZvcmUgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJpbmdfb2ZfdmFsdWUgY2FzZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZXJyb3IsIGxvZ19pbmZvLCBcIlVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlIGRlc2MgKHJvd19wcmVjb25kaXRpb24gLSAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9iZWZvcmVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHZhbHVlX2FmdGVyID1cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKHZhbHVlX2FmdGVyIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcG9zdGNvbmRpdGlvbiArIDEpXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgKFNvbWUgQ29sb3IuTGlnaHRibHVlKSBOb25lIHZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4MiBmIGcgcSBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJpbnRfdGVzdCB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLnRlc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X2FjdGlvbiB0ID1cbiAgICAgICAgICBsZXQgY29sdW1uID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ibGFja2JvYXJkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZCBpblxuICAgICAgICAgIGxldCBjYXNlID1cbiAgICAgICAgICAgIFBCLkEuZ2V0IGNvbHVtbiAoUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgdC5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIGNhc2Uuc3RhdGljLmFjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nX2VpZCBlcnJvciA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X2FzX2xvZ2dlciBkZXNjIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlIH5lbnY6aGFuZGxlci5QQi5DSS5Qby5LLkguZW52IGZcbiAgICAgICAgICAgICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkKSlcbiAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRXZlbnQ6JWlcIiBlaWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcHJlY29uZGl0aW9uIDEgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgcHJpbnRfY2FzZV9mdW4gZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQUkVDT05ESVRJT05cIiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvbiAyIE5vbmUgY29sb3IgXCJQT1NUQ09ORElUSU9OXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgYXV4MiBwcmludF90ZXN0IHByaW50X2FjdGlvbiBsaXN0IGVycm9yIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBjYW5kID0gUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgaW5cbiAgICAgICAgICAgIFRyYWNlLnN0ZXBfaXNfcnVsZSBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBjYW5kXG4gICAgICAgICAgICB8fCBUcmFjZS5zdGVwX2lzX29icyBjYW5kIHx8IFRyYWNlLnN0ZXBfaXNfaW5pdCBjYW5kXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdGFjayA9XG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBlcnJvciByb3cgLT5cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93IDAgTm9uZSBjb2xvciBzdHJpbmdfZWlkIGVycm9yKVxuICAgICAgICAgICAgICAgIGVycm9yIChMaXN0LnJldiBzdGFjaylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgW11cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCByb3dfcHJlY29uZGl0aW9uIDo6IHJvd19wb3N0Y29uZGl0aW9uIDo6IHN0YWNrXG4gICAgICAgIGluXG4gICAgICAgIGF1eCAoZWlkICsgMSkgZXJyb3IgbG9nX2luZm8gc3RhY2tcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPSBhdXggMCBlcnJvciBsb2dfaW5mbyBbXSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiRW5kIFN1YlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBjbG9zZV9vdXQgZGVzY19jaGFuIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCByZWNvcmRfbW9kaWYgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgKCBlcnJvcixcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlKSA6OiBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2s7XG4gICAgICB9IClcblxuICBsZXQgcmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlIGJsYWNrYm9hcmRcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG9sZCBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALklHTk9SRUQqKipALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgSWdub3JlKVxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfdmFsdWUgb2xkXG4gICAgICAgIGluXG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5TVUNDRVNTKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFN1Y2Nlc3MpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALk5ldyB2YWx1ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJALkZBSUwqKipALlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgRmFpbClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBjYXNlX3ZhbHVlID0gb2xkIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIClcblxuICBsZXQgZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvbGQgPVxuICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBtYXRjaCBvbGQgd2l0aFxuICAgIHwgQ291bnRlciBrIC0+XG4gICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgIChDb3VudGVyIChrIC0gMSkpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgcmVjb3JkX21vZGlmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGNhc2VfYWRkcmVzcyBvbGQgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIlxuICAgICAgICAoRmFpbHVyZSBcIldyb25nIHR5cGUgb2YgY2FzZSB2YWx1ZVwiKSBibGFja2JvYXJkXG5cbiAgbGV0IGJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiAqIEJSQU5DSCAqQC4qKioqKioqQC5cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfYnJhbmNoIGxvZ19pbmZvIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAge1xuICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgOjogYmxhY2tib2FyZC5zdGFjaztcbiAgICAgICAgY3VycmVudF9zdGFjayA9IFtdO1xuICAgICAgfSApXG5cbiAgbGV0IHJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiKioqKioqKkAuKiBDdXQgKkAuKioqKioqKlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBwcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgLT5cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgIHN0YWNrXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQWZ0ZXJfQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0IGxvZ19pbmZvIGluXG4gICAgbWF0Y2ggYmxhY2tib2FyZC5zdGFjayB3aXRoXG4gICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSBbXSB9XG4gICAgfCB0IDo6IHEgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggY3VycmVudF9zdGFjayA9IHQ7IHN0YWNrID0gcSB9XG5cbiAgbGV0IHJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IHJlYyBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgPVxuICAgICAgbWF0Y2ggYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXV4IChyZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9IGF1eCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMucmVzZXRfbG9nIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgdHlwZSByZXN1bHQgPSAoVHJhY2Uuc3RlcCAqIFBCLkNJLlBvLksuc2lkZV9lZmZlY3QpIGxpc3RcbiAgKCoqIG91dHB1dCByZXN1bHQqKVxuXG4gICgqKiBpdGVyYXRpb24qKVxuICBsZXQgaXNfbWF4aW1hbF9zb2x1dGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzID0gMFxuXG4gICgqKiBleHBvcnRpbmcgcmVzdWx0KilcblxuICBsZXQgdHJhbnNsYXRlX2JsYWNrYm9hcmQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYXJyYXkgPSBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBpblxuICAgIGxldCBzdGVwX2FycmF5ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCBzaWRlX2FycmF5ID0gYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCBpblxuICAgIGxldCBzaXplID0gUEIuQS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgaWYgayA9IHNpemUgdGhlblxuICAgICAgICBMaXN0LnJldiBsaXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGJvb2wgPSBQQi5BLmdldCBhcnJheSBrIGluXG4gICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IChrICsgMSkgbGlzdFxuICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBzdGVwID0gUEIuQS5nZXQgc3RlcF9hcnJheSBrIGluXG4gICAgICAgICAgbGV0IHNpZGUgPSBQQi5BLmdldCBzaWRlX2FycmF5IGsgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSAoKHN0ZXAsIHNpZGUpIDo6IGxpc3QpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IGF1eCAwIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByaW50X3N0YWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBzdGFjayA9IGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayBpblxuICAgIGxldCBsb2cgPSBQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiQ3VycmVudF9zdGFja19sZXZlbCAlaSBcIiAoTGlzdC5sZW5ndGggc3RhY2spXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgaSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkAuXCIgaW5cbiAgICAgICAgICBlcnJvcilcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIHggLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiT3RoZXIgbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHgpIGluXG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbykgKExpc3QucmV2IHgpKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5zdGFjaylcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgPVxuICAgIFNvbWUgZWlkID0gYmxhY2tib2FyZC5maWN0aXRpb3VzX29ic2VydmFibGVcblxuICBsZXQgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgbl9ldmVudHMgPSBibGFja2JvYXJkLm5fZWlkIGluXG4gICAgaWYgUGFyYW1ldGVyLmRvX2xvY2FsX2N1dCB0aGVuIChcbiAgICAgIGxldCBldmVudF9hcnJheSA9IFBCLkEubWFrZSBuX2V2ZW50cyBmYWxzZSBpblxuICAgICAgbGV0IGtlcHRfZXZlbnRzID0gW10gaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBrZXB0X2V2ZW50cyBpIC0+XG4gICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBpKSB0cnVlIGluXG4gICAgICAgICAgICBpIDo6IGtlcHRfZXZlbnRzKVxuICAgICAgICAgIGtlcHRfZXZlbnRzIGxpc3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0IGtlcHRfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggZXZlbnRfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBrZXB0X2V2ZW50c1xuICAgICAgICB8IGVpZCA6OiBxIC0+XG4gICAgICAgICAgaWYgaXNfZmljdGl0aW91c19vYnMgYmxhY2tib2FyZCBlaWQgdGhlblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5ldmVudF9jYXNlX2xpc3QgKFBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cykgZXZlbnRfY2FzZV9hZGRyZXNzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIFBCLmlzX3VuZGVmaW5lZCBjYXNlLnN0YXRpYy50ZXN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gY2FzZS5keW5hbWljLnBvaW50ZXJfcHJldmlvdXMgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBzY2FuX2Rvd24gcG9pbnRlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfZXZlbnRfaWQgPSBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF9lcnJvciwgX2xvZ19pbmZvLCBwcmV2X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9laWQgPSBwcmV2X2Nhc2Uuc3RhdGljLmV2ZW50X2lkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19udWxsX3BvaW50ZXJfc3RlcF9pZCBwcmV2X2VpZCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgUEIuaXNfdW5rbm93biBwcmV2X2Nhc2Uuc3RhdGljLmFjdGlvbiB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvaW50ZXIgPSBwcmV2X2Nhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBwcmV2X2VpZFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2Nhbl9kb3duIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZWlkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZWlkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IFBCLkEuZ2V0IGV2ZW50X2FycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHEsIGtlcHRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQi5BLnNldCBldmVudF9hcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIHByZXZfZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2VpZCA6OiBxLCBwcmV2X2VpZCA6OiBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50c1xuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBxLCBrZXB0X2V2ZW50cylcbiAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGxvZ19pbmZvIGVycm9yIHEga2VwdF9ldmVudHNcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcmVwID0gYXV4IGxvZ19pbmZvIGVycm9yIGxpc3Qga2VwdF9ldmVudHMgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgTGlzdC5zb3J0IGNvbXBhcmUgcmVwLCBuX2V2ZW50cyAtIExpc3QubGVuZ3RoIHJlcFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXZlbnRzX3RvX2tlZXAgPVxuICAgICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBsaXN0KVxuICAgICAgICBpblxuICAgICAgICBhdXggKG5fZXZlbnRzIC0gMSkgW11cbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwLCAwXG4gICAgKVxuXG4gIGxldCBjdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjdXRfY2F1c2FsX2Zsb3csIG5fZXZlbnRzX3JlbW92ZWQgPVxuICAgICAgdXNlbGVzc19wcmVkaWNhdGVfaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZXRlY3Rpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2tfY3V0X2V2ZW50cyBuX2V2ZW50c19yZW1vdmVkIGxvZ19pbmZvXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjdXRfY2F1c2FsX2Zsb3cpXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIF9zdGVwX2lkLCBzdHJpbmcsIHRvX3hscykgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNldCB1cFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXAuXCIpXG4gICAgICAgICAgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCwgXCJOb25lXCIsIGZhbHNlKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcF91cF90b19pc28gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50IHByZWJsYWNrYm9hcmQgaW50KVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIFBCLnplcm9fc3RlcF9pZCkpXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgKCBwcmVibGFja2JvYXJkLFxuICAgICAgICAgICAgaW50LFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uICkgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpKSByZWZpbmVkX2V2ZW50IC0+XG4gICAgICAgICAgICAgIFBCLmFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRcbiAgICAgICAgICAgICAgICBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUsXG4gICAgICAgICAgICBQYXJhbWV0ZXIuZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uICkgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlYmxhY2tib2FyZCA9XG4gICAgICBQQi5maW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBpbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IF8gPSBQcmlvcml0eS5uX3N0b3J5IDo9ICFQcmlvcml0eS5uX3N0b3J5ICsgMSBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIGlmIHRvX3hscyB0aGVuXG4gICAgICAgIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAhUHJpb3JpdHkubl9zdG9yeSAwIGJsYWNrYm9hcmRcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5lbmRcbiIsIigqKlxuICAqIHByb3BhZ2F0aW9uX2hldXJpc3RpYy5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDowMzoxMSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfdXBfZm9yX2JldHRlcl9jdXRcbmxldCBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgPSBQYXJhbWV0ZXIubG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0XG5cbm1vZHVsZSB0eXBlIEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzaWdcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICB0eXBlIHVwZGF0ZV9vcmRlclxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrXG5cbiAgdmFsIGR1bW15X3VwZGF0ZV9vcmRlciA6IHVwZGF0ZV9vcmRlclxuXG4gIHZhbCBmb3JjZWRfZXZlbnRzIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgICh1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBCLlBCLnN0ZXBfaWQgbGlzdFxuICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbilcbiAgICAgIGxpc3QgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGZvcmJpZGRlbl9ldmVudHMgOlxuICAgIChCLlBCLnN0ZXBfaWQgbGlzdCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIG5leHRfY2hvaWNlIDogKEIuYmxhY2tib2FyZCwgdXBkYXRlX29yZGVyIGxpc3QpIEIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGFwcGx5X2luc3RydWN0aW9uIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHVwZGF0ZV9vcmRlcixcbiAgICAgIHVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2sgbGlzdCxcbiAgICAgIEIuYmxhY2tib2FyZFxuICAgICAgKiB1cGRhdGVfb3JkZXIgbGlzdFxuICAgICAgKiBwcm9wYWdhdGlvbl9jaGVjayBsaXN0XG4gICAgICAqIEIuYXNzaWduX3Jlc3VsdCApXG4gICAgQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBwcm9wYWdhdGUgOlxuICAgICggQi5ibGFja2JvYXJkLFxuICAgICAgcHJvcGFnYXRpb25fY2hlY2ssXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcbmVuZFxuXG5tb2R1bGUgUHJvcGFnYXRpb25faGV1cmlzdGljIDogQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyA9IHN0cnVjdFxuICBtb2R1bGUgQiA6IEJsYWNrYm9hcmQuQmxhY2tib2FyZCA9IEJsYWNrYm9hcmQuQmxhY2tib2FyZFxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICB0eXBlIHVwZGF0ZV9vcmRlciA9XG4gICAgfCBLZWVwX2V2ZW50IG9mIEIuUEIuc3RlcF9pZFxuICAgIHwgRGlzY2FyZF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IEN1dF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzICogQi5QQi5wcmVkaWNhdGVfdmFsdWVcbiAgICB8IFNraXBcblxuICBsZXQgZHVtbXlfdXBkYXRlX29yZGVyID0gU2tpcFxuXG4gIHR5cGUgcHJvcGFnYXRpb25fY2hlY2sgPVxuICAgIHwgUHJvcGFnYXRlX3VwIG9mIEIuZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgfCBQcm9wYWdhdGVfZG93biBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuXG4gIGxldCBfcHJpbnRfb3V0cHV0IGxvZyB4ID1cbiAgICBpZiBCLmlzX2ZhaWxlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGQUlMRURcIlxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHggdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIklHTk9SRURcIlxuICAgIGVsc2VcbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTVUNDRVNTXCJcblxuICBsZXQgZm9yY2VkX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCBsaXN0ID0gQi5mb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAobCwgaW5mbykgLT5cbiAgICAgICAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEtlZXBfZXZlbnQgeCkgKExpc3QucmV2IGwpLCBsLCBpbmZvKVxuICAgICAgICAoTGlzdC5yZXYgbGlzdCkgKVxuXG4gIGxldCBmb3JiaWRkZW5fZXZlbnRzIF9wYXJhbXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIExpc3QucmV2X21hcCAoZnVuIHggLT4gQ3V0X2V2ZW50IHgpIChMaXN0LnJldiBsaXN0KVxuXG4gIGxldCBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGxldCBrX2luaXQgPSBmaXJzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBsZXQga19lbmQgPSBsYXN0IGJsYWNrYm9hcmQgcF9pZCBpblxuICAgIG1hdGNoIGtfaW5pdCwga19lbmQgd2l0aFxuICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgfCBTb21lIGksIFNvbWUgaiAtPlxuICAgICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICAgIGlmIHN0b3AgaSBqIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgICBCLmJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyBwX2lkIChCLmJ1aWxkX3BvaW50ZXIgaSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZXhpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIF90ZXN0LCBfYWN0aW9uKSA9XG4gICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbGV2ZWxfb2ZfZXZlbnQgPSBsZXZlbCB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBlaWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IGkgbG9nX2luZm8gZXJyb3JcblxuICBsZXQgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9sYXN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfZmlyc3RfbGlua2VkX2V2ZW50IEIuUEIuZGVjX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudFxuICAgICAgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnQgQi5QQi5pbmNfc3RlcF9zaG9ydF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA+IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWQgbGV2ZWxcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IGZpcnN0IGxhc3Qgc3VjYyBzdG9wIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkIGxldmVsID1cbiAgICBsZXQgcmVjIGF1eCBpIGxvZ19pbmZvIGVycm9yID1cbiAgICAgIGlmIHN0b3AgaSBsYXN0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgIEIuaXNfc2VsZWN0ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWxfb2ZfZXZlbnQgPVxuICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTb21lIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgfCBTb21lIHRydWUgfCBTb21lIGZhbHNlIC0+IGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IGZpcnN0IGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudFxuICAgICAgKEIuUEIuc3RlcF9pZF9vZl9pbnQgKEIuZ2V0X25fZWlkIGJsYWNrYm9hcmQpKVxuICAgICAgQi5QQi56ZXJvX3N0ZXBfaWQgQi5QQi5kZWNfc3RlcF9pZFxuICAgICAgKGZ1biBpIGogLT4gaSA8IGopXG4gICAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxldmVsXG5cbiAgbGV0IGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQgQi5QQi56ZXJvX3N0ZXBfaWRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuaW5jX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBuZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBmYWxzZSwgXCJcIlxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgIFBhcmFtZXRlci54bHN3ZWFrRmlsZU5hbWUgKVxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzc3Ryb25nRmlsZU5hbWUgKVxuICAgIGluXG4gICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gIVByaW9yaXR5Lm5fYnJhbmNoICsgMSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIEIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cmluZ1xuICAgICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByaW9yaXR5ID1cbiAgICAgIG1hdGNoIEIuUEIuQ0kuUG8uSy5ILmdldF9wcmlvcml0aWVzIHBhcmFtZXRlciB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkNvbXByZXNzaW9uIG1vZGUgaGFzIHRvIGJlZW4gc2VsZWN0ZWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2VsZWN0ZWRcIikgUHJpb3JpdHkuY2F1c2FsXG4gICAgaW5cbiAgICBsZXQgbl9wX2lkID0gQi5nZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBtYXRjaCBwcmlvcml0eS5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkFsbF9yZW1haW5pbmdfZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQWxsIHJlbWFpbmluZyBldmVudHMgc3RyYXRlZ3kgaXMgbm90IGltcGxlbWVudGVkIHlldFwiKSAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT4gZXJyb3IsICgpXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGJlc3RfcGFpciB4IGEgYiA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHNcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWF4X3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhIGJcbiAgICBpblxuICAgIGxldCBnZXRfdW5yZXNvbHZlZF9ldmVudCB4IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZFxuICAgICAgICBsZXZlbCA9XG4gICAgICBtYXRjaCB4LlByaW9yaXR5LnRyeV90b19yZW1vdmVfZmlyc3Qgd2l0aFxuICAgICAgfCBQcmlvcml0eS5MYXRlX2V2ZW50cyAtPlxuICAgICAgICAobWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICAgIHwgUHJpb3JpdHkuQWxsX3JlbWFpbmluZ19ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgICAgfCBQcmlvcml0eS5FYXJseV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2ZpcnN0X3VucmVzb2x2ZWRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50c1xuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbGVhc3RfbnVtYmVyX29mX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsaXN0ID1cbiAgICAgIGlmIG5fcF9pZCA9IDAgdGhlblxuICAgICAgICBlcnJvciwgW11cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIHRyeV9sZXZlbCBsZXZlbF9vcHQgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICAgICAgICAgIHwgU29tZSBsZXZlbCAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggbGV2ZWwgbl9wX2lkIHN0ZXAgYmVzdCA9XG4gICAgICAgICAgICAgIGlmIHN0ZXAgPSBuX3BfaWQgdGhlblxuICAgICAgICAgICAgICAgIGJlc3RcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGdyYWRlID1cbiAgICAgICAgICAgICAgICAgIEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgc3RlcFxuICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAoc3RlcCArIDEpXG4gICAgICAgICAgICAgICAgICAoYmVzdF9wYWlyIHByaW9yaXR5IGJlc3QgKGdyYWRlLCBzdGVwKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuLCBwX2lkID1cbiAgICAgICAgICAgICAgYXV4IGxldmVsIG5fcF9pZCAxXG4gICAgICAgICAgICAgICAgKEIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHNfb2ZfcGlkX2J5X2xldmVsIGJsYWNrYm9hcmQgMCBsZXZlbCwgMClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGV2ZW50X2lkID1cbiAgICAgICAgICAgICAgICBnZXRfdW5yZXNvbHZlZF9ldmVudCBwcmlvcml0eSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBwX2lkIGxldmVsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGV2ZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxvZyA9IEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgICAoXCJBbiBlbXB0eSB3aXJlIGhhcyBiZWVuIHNlbGVjdGVkXCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiKSAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFUlJPUiAyNDk6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBsZXZlbClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRyeV9sZXZlbCAoUHJpb3JpdHkubG93ZXIgbGV2ZWwpIGVycm9yXG4gICAgICAgICAgICAgIHwgU29tZSBldmVudF9pZCAtPlxuICAgICAgICAgICAgICAgIGVycm9yLCBbIERpc2NhcmRfZXZlbnQgZXZlbnRfaWQ7IEtlZXBfZXZlbnQgZXZlbnRfaWQgXVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICB0cnlfbGV2ZWwgKFNvbWUgUHJpb3JpdHkuaGlnaGVzdCkgZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIGVpZCwgXywgXykgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJFdmVudDogJWksIFByZWRpY2F0ZTogJWlcIiAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgIChCLnByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgY2FzZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGNhbiBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wyID1cbiAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIChtYXRjaCBib29sMiB3aXRoXG4gICAgICB8IFNvbWUgZmFsc2UgLT5cbiAgICAgICAgKCogVGhlIGJsYWNrYm9hcmQgaXMgaW5jb25zaXN0ZW50OiAqKVxuICAgICAgICAoKiBQb2ludGVycyBzaG91bGQgbm90IHBvaW50IHRvIHJlbW92ZWQgZXZlbnRzLiopXG4gICAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJpbmNvbnNpc3RlbnQgcG9pbnRlcnMgaW4gYmxhY2tib2FyZFwiKSAoKVxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBfbmV4dF9laWQsIG5leHRfdGVzdCwgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3QsIEIuUEIuaXNfdW5rbm93biBuZXh0X2FjdGlvbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gKGNhc2UgMSk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCBidXQgaGFzIG5vIHRlc3QgYW5kIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJWYWx1ZSBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgbm8gYWN0aW9uIGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgKCogbm8gdGVzdCwgYnV0IGFuIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogbm90aGluZyB0byBwcm9wYWdhdGUgZG93bndhcmQqKVxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpIClcbiAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAzKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGUgbmV3IHByZWRpY2F0ZV92YWx1ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBjb25qXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBiZWZvcmUgYW5kIGFmdGVyIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogbm8gYWN0aW9uLCBidXQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAzIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBpbmNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKVxuICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICgqdGhlcmUgaXMgYSB0ZXN0IGFuZCBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJlZGljYXRlX3ZhbHVlIG5leHRfdGVzdCB0aGVuIChcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYXJlIGNvbXBhdGlibGUgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmogPVxuICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0IGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA1IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICAgKCogYW4gYWN0aW9uIGFuZCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBtZWV0IG9mIHRoZSB0ZXN0IGFuZCB0aGUgdmFsdWUgYmVmb3JlIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb25qKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKiB0ZXN0IGFuZCB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QsIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNiBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBjdXQgdGhlIGV4cGxvcmF0aW9uICopXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgICApKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9uZXh0X3NlaWQsIG5leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKnRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlxcblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA3IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgbmV4dF90ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgKCogdGVzdCBhbmQgcHJlZGljYXRlX3ZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIGFuZCBiZWZvcmUgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA4IGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgdmFsdWUgYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAoJWkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBuZXh0X2VpZClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIG5vdCAoQi5QQi5jb21wYXRpYmxlIG5leHRfYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSkgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICgqdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIG5vIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgdGhlIG5leHQgZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIG5vIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgdmFsdWUgXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDEyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYSB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlcmUgaXMgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgam9pbiBvZiB0aGUgdmFsdWUgYW5kIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIG5leHQgZXZlbnQqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTMpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgKCVpKSBpcyBkaXNjYXJkZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxM1xuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICAgKCogd2UgZGlzY2FyZCB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBuZXh0X2VpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkpXG5cbiAgbGV0IHJlYyBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfdmFsdWUgZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+IGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBfZWlkLCBfdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgICAgICBCLmlzX2JvdW5kYXJ5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbm90IChCLlBCLmlzX3VuZGVmaW5lZCBwcmVkaWNhdGVfdmFsdWUpLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX3VwX2Nhc2UgMyBsb2dfaW5mbyBpblxuICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICApXG4gICAgICApXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX3ZhbHVlXG4gICAgICBhZGRyZXNzID1cbiAgICBpZiBCLlBCLmlzX3Vua25vd24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlXG4gICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICBhZGRyZXNzXG5cbiAgbGV0IGxhc3RfY2hhbmNlX3VwID1cbiAgICBpZiBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IHRoZW5cbiAgICAgIGxhc3RfY2hhbmNlX3VwXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF8gXyAtPlxuICAgIGVycm9yLCBmYWxzZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIGluXG4gICAgbWF0Y2ggYm9vbCB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAoKiB0aGUgY2FzZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGJsYWNrYm9hcmQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcylcbiAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgKCogd2Uga25vdyB0aGF0IHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgICAoKiBubyBhY3Rpb24sIHdlIGtlZXAgb24gcHJvcGFnYXRpbmcgd2l0aCB0aGUgY29uam9uY3Rpb24gb2YgdGhlIHRlc3Qgb2YgdGhlIHZhbHVlICopXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3QgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBuZXdfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgbmV3X3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgaWYgQi5QQi5pc191bmRlZmluZWQgdGVzdCB0aGVuIChcbiAgICAgICAgICAoKnRoZSB3aXJlIGhhcyBqdXN0IGJlIGNyZWF0ZWQsIG5vdGhpbmcgdG8gYmUgZG9uZSAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJOb3RoaW5nIHRvIGJlIGRvbmVcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDMgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgICkgZWxzZSBpZlxuICAgICAgICAgICAgKCp3ZSBrbm93IHRoYXQgdGhlIHdpcmUgd2FzIGRlZmluZWQgYmVmb3JlKilcbiAgICAgICAgICAgIEIuUEIuY29tcGF0aWJsZSB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0YXRlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IEIuUEIuZGVmaW5lZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA0KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDQgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBzdGF0ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDUpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA1IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqVGhlIGV2ZW50IGhhcyB0byBiZSBkaXNjYXJkZWQgd2hpY2ggaXMgYWJzdXJkICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNik6XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNiBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgIClcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBoYXMgYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIGFjdGlvbiB3aXRoXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA3KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBuZWl0aGVyIGEgdGVzdCwgbm9yICBhY3Rpb24gXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDcgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDgpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA4IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA5KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgIHRlc3QsIGJ1dCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgYmVmb3JlICglaSkgaXMgZGlzY2FyZGVkXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA5IGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApKVxuICAgICAgfCBmYWxzZSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByZXZpZXdfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19jYXNlX3ZhbHVlID1cbiAgICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmV2aWV3X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBwcmV2aWV3X2Nhc2VfdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyB0aGUgb25seSBvcHBvcnR1bml0eSB0byBzZXQgdXAgdGhlIHdpcmUsIHdlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGtlZXAgdGhlIGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEwIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgS2VlcF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIHRlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYW4gYWN0aW9uLCBidXQgbm8gdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld190ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld19wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXdfdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTIpOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld19wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldicgPVxuICAgICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHRlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDE0KTpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2J1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIHByZXYnKVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBtYXliZSBhIHRlc3RcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkRpc2NhcmQgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNik6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcmV2aW91cyB3aXJlIHN0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJTZWxlY3QgdGhlIGV2ZW50IGJlZm9yZSAoJWkpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE2IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDE3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIEIuZmFpbClcbiAgICAgICAgKSlcblxuICBsZXQgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hlY2tcbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGNoZWNrIHdpdGhcbiAgICB8IFByb3BhZ2F0ZV91cCB4IC0+XG4gICAgICBwcm9wYWdhdGVfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4XG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFByb3BhZ2F0ZV9kb3duIHggLT5cbiAgICAgIHByb3BhZ2F0ZV9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGN1dF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgbmV4dCBvZiB0aGUgcHJldmlvdXMgZXZlbnQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLnBvaW50ZXJfdG9fbmV4dCBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIHByZXZpb3VzIG9mIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX3ByZXZpb3VzIHBvaW50ZXJfbmV4dClcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdCBjYXNlXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIGFjdGlvbikgPVxuICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgIGluXG4gICAgaWYgQi5QQi5pc191bmtub3duIGFjdGlvbiB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGlzdF92YWx1ZXMgPSBCLlBCLndlYWtlbmluZyBhY3Rpb24gaW5cbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSB2YWx1ZSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBhdXggY2FzZSBib29sIGVycm9yIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2EgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgcHJlZGljYXRlX3ZhbHVlIHZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMSBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcm9wYWdhdGVfdXAgcG9pbnRlcl9uZXh0IDo6IHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgKVxuICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfY2FzZSA9XG4gICAgICAgICAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgdHJ1ZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va19kb3duX2Nhc2UgMiBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gYXV4IG5leHRfY2FzZSBib29sIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgXywgbmV4dF9hY3Rpb24pID1cbiAgICAgICAgICAgICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X2Nhc2VcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBuZXh0X2FjdGlvbiB2YWx1ZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgYXV4IG5leHRfY2FzZSB0cnVlIGVycm9yIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYXV4IGNhc2UgZmFsc2UgZXJyb3IgbG9nX2luZm8pXG4gICAgICAgICAgKHByb3BhZ2F0ZV9saXN0LCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgbGlzdF92YWx1ZXNcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0XG4gICAgKVxuXG4gIGxldCBsb29rX2Rvd24gPVxuICAgIGlmIGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsb29rX2Rvd25cbiAgICBlbHNlXG4gICAgICBmdW4gXyBfIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCBfIC0+XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBsaXN0XG5cbiAgbGV0IHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBjYXNlX2FkZHJlc3MgPSBCLnZhbHVlX2FmdGVyIGFkZHJlc3MgaW5cbiAgICBsZXQgc3RhdGUgPSBCLnN0YXRlIHZhbHVlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIHN0YXRlIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICBlbHNlIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHJlc3VsdClcbiAgICBlbHNlIChcbiAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgIFByb3BhZ2F0ZV91cCBhZGRyZXNzIDo6IFByb3BhZ2F0ZV9kb3duIGFkZHJlc3MgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgcmVzdWx0KVxuICAgIClcblxuICBsZXQgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICBpblxuICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwb2ludGVyX3ByZXZpb3VzIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcblxuICBsZXQgZGlzY2FyZF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9uZXh0ID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgQi5mb2xsb3dfcG9pbnRlcl91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgICgqIHdlIHJlbW92ZSB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0XG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2EgPSBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgY2FzZSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnKSA9XG4gICAgICAgIHJlZmluZV92YWx1ZV9hZnRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyBwcmVkaWNhdGVfdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCcgdGhlblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHQnXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBldmVudCwgXywgXykgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAgIChCLnBvaW50ZXIgcG9pbnRlcl9uZXh0KSBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgICAgICAgUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogUHJvcGFnYXRlX3VwIHBvaW50ZXJfcHJldmlvdXMgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIGxvb2tfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByb3BhZ2F0ZV9saXN0XG4gICAgICAgICAgICBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgY2FzZVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpID1cbiAgICAoKiB3ZSBrZWVwIHRoZSBjYXNlICopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHJlc3VsdCkgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuZXhpc3QgY2FzZSlcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcG9pbnRlcl9wcmV2aW91cyA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgX3BvaW50ZXJfbmV4dCA9XG4gICAgICAgIEIuZm9sbG93X3BvaW50ZXJfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIGVpZCwgdGVzdCwgYWN0aW9uKSA9XG4gICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIHRlc3QgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBfLCByZXN1bHQnJykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgICAgYWN0aW9uIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHx8IEIuaXNfZmFpbGVkIHJlc3VsdCcnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgQi5mYWlsXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGNhc2UpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZWlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCBjYXNlIGxldmVsKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBjYXNlIDo6IFByb3BhZ2F0ZV9kb3duIGNhc2VcbiAgICAgICAgICA6OiBQcm9wYWdhdGVfZG93biBwb2ludGVyX3ByZXZpb3VzIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzXG4gICAgICAgICAgOjogcHJvcGFnYXRlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IGtlZXBfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSB0cnVlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbXSwgW10sIHN1Y2Nlc3MpXG4gICAgZWxzZSBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzcyB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2Uga2VlcCBldmVudCAlaVwiXG4gICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIHN0ZXBfaWQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgQi5uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGtlZXBfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBnZW5fZXZlbnQgZl9jYXNlIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3VjY2VzcykgPVxuICAgICAgQi5yZWZpbmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKEIuaXNfZXhpc3RfZXZlbnQgc3RlcF9pZClcbiAgICAgICAgKEIuYm9vbGVhbiAoU29tZSBmYWxzZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJXZSByZW1vdmUgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGxvZ19pbmZvID0gZyBsb2dfaW5mbyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBCLmNhc2VfbGlzdF9vZl9laWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbCB4IHN1Y2Nlc3MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiB4LCBzdWNjZXNzXG4gICAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgICAgbGV0IHksIHN1Y2Nlc3MyID0gZl9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIHQgeCBpblxuICAgICAgICAgIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3NcbiAgICAgICAgICBlbHNlIGlmIEIuaXNfc3VjY2VlZGVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2VzczJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB5LCBzdWNjZXNzMlxuICAgICAgaW5cbiAgICAgIGxldCAoIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3MgKSA9XG4gICAgICAgIGF1eCBsaXN0XG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpXG4gICAgICAgICAgQi5pZ25vcmVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgc3VjY2VzcylcbiAgICApXG5cbiAgbGV0IGN1dF9ldmVudCA9IGdlbl9ldmVudCBjdXRfY2FzZSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19jdXRfZXZlbnRzXG5cbiAgbGV0IGRpc2NhcmRfZXZlbnQgPVxuICAgIGdlbl9ldmVudCBkaXNjYXJkX2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfcmVtb3ZlZF9ldmVudHNcblxuICBsZXQgYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbnN0cnVjdGlvblxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbWF0Y2ggaW5zdHJ1Y3Rpb24gd2l0aFxuICAgIHwgS2VlcF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBDdXRfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAgY3V0X2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBEaXNjYXJkX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGRpc2NhcmRfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzdGVwX2lkXG4gICAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9hZnRlciAoYWRkcmVzcywgdmFsdWUpIC0+XG4gICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFJlZmluZV92YWx1ZV9iZWZvcmUgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFkZHJlc3NcbiAgICAgICAgdmFsdWUgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgU2tpcCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuaWdub3JlKVxuXG4gIGxldCBfa2VlcCB4ID0gS2VlcF9ldmVudCB4XG5lbmRcbiIsIigqKlxuICAqIGdlbmVyaWNfYnJhbmNoX2FuZF9jdXBfc29sdmVyLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTkvMDcvMjAxM1xuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBsb2dfc3RlcHMgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBTb2x2ZXIgPSBzaWdcbiAgbW9kdWxlIFBIIDogUHJvcGFnYXRpb25faGV1cmlzdGljcy5CbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljXG5cbiAgdmFsIGNvbXByZXNzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILnVwZGF0ZV9vcmRlciBsaXN0LFxuICAgICAgUEguQi5ibGFja2JvYXJkICogUEguQi5hc3NpZ25fcmVzdWx0ICogUEguQi5yZXN1bHQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGRldGVjdF9pbmRlcGVuZGVudF9ldmVudHMgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGZpbHRlciA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHN1YiA6IChUcmFjZS50LCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gIHZhbCBjbGVhbiA6IChQSC5CLmJsYWNrYm9hcmQsIFBILkIuYmxhY2tib2FyZCkgUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgVHJhY2UudCAqIFBILkIucmVzdWx0IClcbiAgICBQSC5CLlBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdHJhbnNsYXRlX3Jlc3VsdCA6IFBILkIucmVzdWx0IC0+IFRyYWNlLnRcbmVuZFxuXG5tb2R1bGUgU29sdmVyID0gc3RydWN0XG4gIG1vZHVsZSBQSCA9IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuUHJvcGFnYXRpb25faGV1cmlzdGljXG4gICgqQmxhY2tib2FyZF93aXRoX2hldXJpc3RpYyopXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgRXhjZXB0aW9uLndhcm5cbiAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG4gIGxldCBfY29tYmluZV9vdXRwdXQgbzEgbzIgPVxuICAgIGlmIFBILkIuaXNfaWdub3JlZCBvMiB0aGVuXG4gICAgICBvMVxuICAgIGVsc2VcbiAgICAgIG8yXG5cbiAgbGV0IHJlYyBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgcHJvcGFnYXRlX2xpc3QgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIGxvZ19pbmZvID0gUEguQi50aWNrIGxvZ19pbmZvIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuZHVtcF9jb21wbGV0ZV9sb2dcbiAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIG1hdGNoIGluc3RydWN0aW9uX2xpc3Qgd2l0aFxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgUEguYXBwbHlfaW5zdHJ1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0IHFcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIGFzc2lnbl9yZXN1bHQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5zdHJ1Y3Rpb25fbGlzdFxuICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggcHJvcGFnYXRlX2xpc3Qgd2l0aFxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIGFzc2lnbl9yZXN1bHQpICkgPVxuICAgICAgICAgIFBILnByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHRcbiAgICAgICAgICAgIGluc3RydWN0aW9uX2xpc3QgcVxuICAgICAgICBpblxuICAgICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBhc3NpZ25fcmVzdWx0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmRcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgUEguQi5zdWNjZXNzKSlcblxuICB0eXBlIGNob2ljZXMgPSB7XG4gICAgY3VycmVudDogUEgudXBkYXRlX29yZGVyIGxpc3Q7XG4gICAgc3RhY2s6IFBILnVwZGF0ZV9vcmRlciBsaXN0IGxpc3Q7XG4gIH1cblxuICBsZXQgYnJhbmNoX2Nob2ljZV9saXN0IGNob2ljZV9saXN0ID1cbiAgICB7IGN1cnJlbnQgPSBbXTsgc3RhY2sgPSBjaG9pY2VfbGlzdC5jdXJyZW50IDo6IGNob2ljZV9saXN0LnN0YWNrIH1cblxuICBsZXQgdXBkYXRlX2N1cnJlbnQgY2hvaWNlX2xpc3QgbGlzdCA9IHsgY2hvaWNlX2xpc3Qgd2l0aCBjdXJyZW50ID0gbGlzdCB9XG5cbiAgbGV0IHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3Igc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgdCA6OiBxIC0+IGVycm9yLCAodCwgeyBzdGFjayB3aXRoIGN1cnJlbnQgPSBxIH0pXG4gICAgfCBbXSAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIkVtcHR5IGNob2ljZSBzdGFja1wiXG4gICAgICAgIChGYWlsdXJlIFwiRW1wdHkgY2hvaWNlIGxpc3QgaW4gcG9wX25leHRfY2hvaWNlXCIpXG4gICAgICAgIChQSC5kdW1teV91cGRhdGVfb3JkZXIsIHN0YWNrKVxuXG4gIGxldCBub19tb3JlX2Nob2ljZSBzdGFjayA9XG4gICAgbWF0Y2ggc3RhY2suY3VycmVudCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0ID1cbiAgICBsZXQgcmVjIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgICBtYXRjaCBjaG9pY2VfbGlzdC5jdXJyZW50IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGNob2ljZV9saXN0LnN0YWNrIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBOb25lKVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCBjaG9pY2VfbGlzdCA9IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9IGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdClcbiAgICAgIHwgXyAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTb21lIGNob2ljZV9saXN0KVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLnJlc2V0X2xhc3RfYnJhbmNoaW5nIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGJhY2t0cmFja19hdXggbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuXG4gIGxldCBlbXB0eV9jaG9pY2VfbGlzdCA9IHsgc3RhY2sgPSBbXTsgY3VycmVudCA9IFtdIH1cblxuICBsZXQgcmVjIHN1Ymxpc3QgbCBsJyA9XG4gICAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIHwgW10sIF8gLT4gdHJ1ZVxuICAgIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IGggOjogdCwgaCcgOjogdCcgd2hlbiBoID0gaCcgLT4gc3VibGlzdCB0IHQnXG4gICAgfCBfLCBfaCcgOjogdCcgLT4gc3VibGlzdCBsIHQnXG5cbiAgbGV0IHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwgPVxuICAgIExpc3QucmV2X21hcCBmc3RcbiAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgIChmdW4gKF8sIGEpIChfLCBiKSAtPiBjb21wYXJlIGIgYSlcbiAgICAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIExpc3QubGVuZ3RoIGEpIGwpKVxuXG4gIGxldCBmaWx0ZXJfb3V0X25vbl9taW5pbWFsX3N0b3J5IGwgPVxuICAgIGxldCByZWMgYXV4IHRvX3Zpc2l0IGdvb2RvbmVzID1cbiAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgZ29vZG9uZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGF1eFxuICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgdClcbiAgICAgICAgICAoaCA6OiBMaXN0LmZpbHRlciAoZnVuIHN0b3J5IC0+IG5vdCAoc3VibGlzdCBoIHN0b3J5KSkgZ29vZG9uZXMpXG4gICAgaW5cbiAgICBhdXggKHNvcnRfc3Rvcmllc19hY2NvcmRpbmdfdG9fbGVuZ3RoIGwpIFtdXG5cbiAgbGV0IHJlYyBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgIHN0b3J5X2xpc3QgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgUEguQi5pc19tYXhpbWFsX3NvbHV0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAoKiBTVUNDRVNTICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgUEguQi50cmFuc2xhdGVfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgaWYgUEguQi5QQi5DSS5Qby5LLkguZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyIHRoZW4gKFxuICAgICAgICBsZXQgc3RvcnlfbGlzdCA9IGxpc3QgOjogc3RvcnlfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICBpZiBjaG9pY2VfbGlzdC5jdXJyZW50IDw+IFtdIHRoZW5cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgZW1wdHlcIlxuICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICBcIkluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGN1cnJlbnQgbGlzdCBvZiBjaG9pY2VzIHNob3VsZCBiZSBcXFxuICAgICAgICAgICAgICAgICAgZW1wdHlcIikgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZV9saXN0ID1cbiAgICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBjaG9pY2VfbGlzdFxuICAgICAgICAgIHwgdCA6OiBxIC0+IHsgY3VycmVudCA9IHQ7IHN0YWNrID0gcSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0ICgqKHVwZGF0ZV9maXJzdF9zdG9yeSBmaXJzdF9zdG9yeSBsaXN0KSopXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIFwiRkFJTFwiICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFsgbGlzdCBdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGNob2ljZV9saXN0ID1cbiAgICAgICAgaWYgbm9fbW9yZV9jaG9pY2UgY2hvaWNlX2xpc3QgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBfbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEgubmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3RcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGNob2ljZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIChjaG9pY2UsIGNob2ljZV9saXN0KSA9XG4gICAgICAgIHBvcF9uZXh0X2Nob2ljZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIFsgY2hvaWNlIF0gW10gYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGNob2ljZV9saXN0KSA9XG4gICAgICAgICAgYmFja3RyYWNrIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgY2hvaWNlX2xpc3QgLT5cbiAgICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcbiAgICAgICAgICAgIHN0b3J5X2xpc3RcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpXG4gICAgICApIGVsc2VcbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdClcbiAgICAgICAgICBzdG9yeV9saXN0XG4gICAgKVxuXG4gIGxldCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxpc3RfZWlkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsYWNrYm9hcmQsIGV2ZW50c190b19rZWVwKSA9XG4gICAgICBQSC5CLmN1dCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3RfZWlkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50c190b19rZWVwXG5cbiAgbGV0IHRyYW5zbGF0ZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGxpc3QnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIGsgLT5cbiAgICAgICAgICAoIFBILkIuZ2V0X2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgayksXG4gICAgICAgICAgICBQSC5CLnNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgKFBILkIuUEIuZGVjX3N0ZXBfaWQgaykgKSlcbiAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QnKSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKGxpc3QsIGxpc3QnKVxuXG4gIGxldCB0cmFuc2xhdGVfcmVzdWx0IHJlc3VsdCA9IExpc3QucmV2X21hcCBmc3QgQEAgTGlzdC5yZXYgcmVzdWx0XG5cbiAgbGV0IGNsZWFuIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgPVxuICAgIFBILkIucmVzZXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkXG5cbiAgbGV0IGZpbHRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGV2ZW50c190b19rZWVwID1cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBldmVudHNfdG9fcmVtb3ZlID1cbiAgICAgIGxldCBuX2V2ZW50cyA9IFBILkIuZ2V0X25fZWlkIGJsYWNrYm9hcmQgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgbGlzdCBzb2wgPVxuICAgICAgICBpZiBrID0gbl9ldmVudHMgdGhlblxuICAgICAgICAgIExpc3QucmV2IHNvbFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgaWYgUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCB0ID0gayB0aGVuXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIHEgc29sXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoayArIDEpIGxpc3QgKFBILkIuUEIuc3RlcF9pZF9vZl9pbnQgayA6OiBzb2wpXG4gICAgICAgICAgfCBbXSAtPiBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4IDAgZXZlbnRzX3RvX2tlZXAgW11cbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmJpZGRlbl9ldmVudHMgPVxuICAgICAgUEguZm9yYmlkZGVuX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudHNfdG9fcmVtb3ZlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJTdGFydCBjdXR0aW5nXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIF9vdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmb3JiaWRkZW5fZXZlbnRzIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIGxldCBzdWIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmltcG9ydCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0b19rZWVwXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X29yZGVyID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFBILkIuYnJhbmNoIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIkFmdGVyIENhdXNhbCBDdXQgICVpXCJcbiAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQpID1cbiAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0X29yZGVyIFtdIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIFBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICBGQUlMICVpIEAuXCJcbiAgICAgICAgICAgICAgKFBILkIuZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgW10pXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCJBZnRlciBvYnNlcnZhYmxlIHByb3BhZ2F0aW9uICAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYm9vbCwgc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggcGFyYW1ldGVyLlBILkIuUEIuQ0kuUG8uSy5ILmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3dlYWtfY29tcHJlc3Npb24sXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgICAgfCBTb21lIFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBQcmlvcml0eS5uX2JyYW5jaCA6PSAxICsgKCFQcmlvcml0eS5uX2JyYW5jaCArIDEpIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBzdHJpbmcgIVByaW9yaXR5Lm5fc3RvcnkgIVByaW9yaXR5Lm5fYnJhbmNoIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdCkgPVxuICAgICAgICBpdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZW1wdHlfY2hvaWNlX2xpc3QgW11cbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgbWF0Y2ggc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gUEguQi5mYWlsXG4gICAgICAgIHwgXyAtPiBQSC5CLnN1Y2Nlc3NcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgKGJsYWNrYm9hcmQsIG91dHB1dCwgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSAoTGlzdC5yZXYgc3RvcnlfbGlzdCkpXG4gICAgICApXG4gICAgKVxuZW5kXG4iLCIoKipcbiAgKiBibGFja19saXN0Lm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDItMTQgMTA6Mjk6NDIgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTAyLTE0IDEwOjUwOjU3IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2XG4gICogIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnlcbiAgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEV2ZW50ID0gc2lnXG4gIHR5cGUgZXZlbnRcbiAgdHlwZSBlaWRcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGtleV9vZl9ldmVudCA6IGV2ZW50IC0+IGVpZCBvcHRpb25cbiAgdmFsIGluaXQgOiBpbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBlaWQgLT4gJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBCbGFja2xpc3QgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEV2ZW50IDogRXZlbnRcblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBibGFja19saXN0IDogRXZlbnQuZXZlbnQgLT4gdCAtPiB0XG4gIHZhbCBpc19ibGFja19saXN0ZWQgOiBFdmVudC5ldmVudCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgTWFrZSA9XG5mdW5jdG9yXG4gIChFdmVudCA6IEV2ZW50KVxuICAtPlxuICBzdHJ1Y3RcbiAgICBtb2R1bGUgRXZlbnQgPSBFdmVudFxuXG4gICAgdHlwZSB0ID0gYm9vbCBFdmVudC50XG5cbiAgICBsZXQgaW5pdCBuID0gRXZlbnQuaW5pdCBuIGZhbHNlXG5cbiAgICBsZXQgYmxhY2tfbGlzdCBldmVudCB0ID1cbiAgICAgIG1hdGNoIEV2ZW50LmtleV9vZl9ldmVudCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVpZCAtPlxuICAgICAgICBsZXQgdCA9IEV2ZW50LnNldCB0IGVpZCB0cnVlIGluXG4gICAgICAgIHRcblxuICAgIGxldCBpc19ibGFja19saXN0ZWQgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgZWlkIC0+IEV2ZW50LmdldCB0IGVpZFxuICBlbmRcbiIsIigqKlxuICAqIGRhZy5tbFxuICAqXG4gICogRGFnIGNvbXB1dGF0aW9uIGFuZCBjYW5vbmljYWwgZm9ybVxuICAqXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDIyLzAzLzIwMTJcbiAgKiBMYXN0IG1vZHhpZmljYXRpb246IDE4LzA2LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFMgPSBHZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5Tb2x2ZXJcblxubGV0IHdhcm4gcGFyYW1ldGVyIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gIEV4Y2VwdGlvbi53YXJuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbm1vZHVsZSB0eXBlIFN0b3J5VGFibGUgPSBzaWdcbiAgdHlwZSB0YWJsZVxuXG4gIHZhbCBmb2xkX3RhYmxlIDpcbiAgICAoICggVHJhY2UudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5LFxuICAgICAgdGFibGUsXG4gICAgICAnYSxcbiAgICAgICdhIClcbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgaW5pdF90YWJsZSA6IHRhYmxlIFMuUEguQi5QQi5DSS5Qby5LLkguemVyb2FyeVxuICB2YWwgY291bnRfc3RvcmllcyA6IHRhYmxlIC0+IGludFxuXG4gIHZhbCBhZGRfc3RvcnkgOlxuICAgICggQ2F1c2FsLmdyaWQsXG4gICAgICBUcmFjZS50LFxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0LFxuICAgICAgdGFibGUsXG4gICAgICB0YWJsZSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIGhhc2hfbGlzdCA6ICh0YWJsZSwgdGFibGUpIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgc29ydF9saXN0IDpcbiAgICAoIHRhYmxlLFxuICAgICAgKFRyYWNlLnRcbiAgICAgICogQ2F1c2FsLmdyaWRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgbGlzdCApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBIID0gUy5QSC5CLlBCLkNJLlBvLksuSFxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgbGFiZWwgPSBzdHJpbmdcbnR5cGUgbm9kZV9raW5kID0gT0JTIHwgUEVSVCB8IFJVTEUgfCBJTklUIHwgRklDVElUSU9VU1xudHlwZSBub2RlID0gbm9kZV9raW5kICogbGFiZWxcblxudHlwZSBncmFwaCA9IHtcbiAgcm9vdDogaW50O1xuICBsYWJlbHM6IG5vZGUgQS50O1xuICBwcmVkOiBpbnQgbGlzdCBBLnQ7XG4gIGNvbmZsaWN0X3ByZWQ6IGludCBsaXN0IEEudDtcbn1cblxubGV0IGR1bW15X2dyYXBoID1cbiAge1xuICAgIHJvb3QgPSAwO1xuICAgIGxhYmVscyA9IEEubWFrZSAxIChGSUNUSVRJT1VTLCBcIlwiKTtcbiAgICBwcmVkID0gQS5tYWtlIDEgW107XG4gICAgY29uZmxpY3RfcHJlZCA9IEEubWFrZSAxIFtdO1xuICB9XG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUga2V5ID0gRnJlc2ggb2Ygbm9kZSB8IEZvcm1lciBvZiBwb3NpdGlvbiB8IFN0b3BcbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBrZXkgbGlzdFxudHlwZSBwcmVoYXNoID0gKG5vZGUgKiBpbnQpIGxpc3RcblxubGV0IF9kdW1teV9jYW5ub25pY2FsX2Zvcm0gPSBbXVxubGV0IF9kdW1teV9wcmVoYXNoID0gW11cblxubGV0IF9wcmludF9zdG9yeV9pbmZvIGxvZ2dlciBfcGFyYW1ldGVyIGpzb24gPVxuICAoKkxpc3QuaXRlclxuICAgIChmdW5cbiAgICAgIHN0b3J5X2luZm8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIGxvZ2dlclxuICAgICAgICAgIFwiaWQ6JWksIHRpbWU6JWYsIGV2ZW50OiVpXCJcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZFxuICAgICAgICAgIHN0b3J5X2luZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWVcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcbiAgICApXG4gICAgc3RvcnlfaW5mb19saXN0XG4gICopXG4gIGxldCBjaGFubmVsX29wdCA9IExvZ2dlcnMuY2hhbm5lbF9vZl9sb2dnZXIgbG9nZ2VyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2hhbm5lbF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBjaGFubmVsIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMudG9fY2hhbm5lbCBjaGFubmVsIGpzb24gaW5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X2dyYXBoIGxvZ2dlciBwYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgaWQgc3RvcnlfaW5mbyBncmFwaCA9XG4gIGxldCBsb2dnZXIgPSBHcmFwaF9sb2dnZXJzX3NpZy5leHRlbmRfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzX3NpZy5yZWZyZXNoX2lkIGxvZ2dlciBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciBcInN0b3J5XCIgaW5cbiAgbGV0ICgpID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgKG5vZGVfa2luZCwgaikgLT5cbiAgICAgICAgaWYgaSA9IDAgJiYgaiA9IFwiXCIgdGhlblxuICAgICAgICAgICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaXJlY3RpdmVzID1cbiAgICAgICAgICAgIG1hdGNoIG5vZGVfa2luZCB3aXRoXG4gICAgICAgICAgICB8IE9CUyAtPiBbIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCBdXG4gICAgICAgICAgICB8IFBFUlQgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuO1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmhvdXNlO1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB8IFJVTEUgLT5cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZTtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBJTklUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBGSUNUSVRJT1VTIC0+XG4gICAgICAgICAgICAgIFsgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXJcbiAgICAgICAgICAgIH5kaXJlY3RpdmVzOihHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBqIDo6IGRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpKVxuICAgICAgICApKVxuICAgICAgZ3JhcGgubGFiZWxzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyIChzdHJpbmdfb2ZfaW50IGopIChzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5wcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIGwgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBqIC0+XG4gICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyXG4gICAgICAgICAgICAgIH5kaXJlY3RpdmVzOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQ7XG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSkgKHN0cmluZ19vZl9pbnQgaikpXG4gICAgICAgICAgbClcbiAgICAgIGdyYXBoLmNvbmZsaWN0X3ByZWRcbiAgaW5cbiAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAge1xuICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeSA9XG4gICAgICAgIFN0b3J5X2pzb24uTmV3XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5ncmFwaCA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXI7XG4gICAgICAgICAgICBTdG9yeV9qc29uLmlkO1xuICAgICAgICAgIH07XG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBILnB1c2hfanNvbiBwYXJhbWV0ZXIgKFN0b3J5X2pzb24uU3RvcnkgcmVzdWx0KSBpblxuICBlcnJvclxuXG5sZXQgcHJpbnRfZWx0IGxvZyBlbHQgPVxuICBtYXRjaCBlbHQgd2l0aFxuICB8IFN0b3AgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1RPUFwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZvcm1lciBpIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlBvaW50ZXIgJWlcIiBpIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICB8IEZyZXNoIChfLCBzKSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCAlc1wiIHMgaW5cbiAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nXG5cbmxldCBfcHJpbnRfY2Fub25pY2FsX2Zvcm0gcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGRhZyA9XG4gIGxldCBfID0gTGlzdC5pdGVyIChwcmludF9lbHQgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikpIGRhZyBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgX3ByaW50X3ByZWhhc2ggcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHJlcHJlc2VudGF0aW9uID1cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoKF8sIGIpLCBpKSAtPlxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCIlczolaSxcIiBiIGkpXG4gICAgICByZXByZXNlbnRhdGlvblxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSBpblxuICBlcnJvclxuXG5sZXQgbGFiZWwgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIGkpIC0+IEguc3RyaW5nX29mX3J1bGVfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIFsgaSBdKSAtPiBILnN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGlcbiAgfCBDYXVzYWwuRVZFTlQgKChUcmFjZS5JTklUIF8gfCBUcmFjZS5QRVJUIF8pIGFzIHgpIC0+XG4gICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52OmhhbmRsZXIuSC5lbnYpIHhcbiAgfCBDYXVzYWwuT0JTIG5hbWUgLT4gbmFtZVxuXG5sZXQga2luZCBub2RlID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5JTklUIF8pIC0+IElOSVRcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gUlVMRVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUEVSVCBfKSAtPiBQRVJUXG4gIHwgQ2F1c2FsLk9CUyBfIC0+IE9CU1xuXG5sZXQgY29tcGFyZV9lbHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgU3RvcCwgU3RvcCAtPiAwXG4gIHwgU3RvcCwgXyAtPiAtMVxuICB8IF8sIFN0b3AgLT4gMVxuICB8IEZvcm1lciBpLCBGb3JtZXIgaiAtPiBjb21wYXJlIGkgalxuICB8IEZvcm1lciBfLCBfIC0+IC0xXG4gIHwgXywgRm9ybWVyIF8gLT4gMVxuICB8IEZyZXNoIHMsIEZyZXNoIHMnIC0+IGNvbXBhcmUgcyBzJ1xuXG5sZXQgcXVpY2tfY29tcGFyZSBnIHQxIHQyID0gY29tcGFyZV9lbHQgKGcgdDEpIChnIHQyKVxuXG5sZXQgcmVjIGF1eCBjb21wYXJlX2VsdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgbGV0IGNtcCA9IGNvbXBhcmVfZWx0IHQgdCcgaW5cbiAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgIGF1eCBjb21wYXJlX2VsdCBxIHEnXG4gICAgZWxzZVxuICAgICAgY21wXG5cbmxldCBjb21wYXJlX2Nhbm9uaWMgPSBhdXggY29tcGFyZV9lbHRcblxubGV0IGNvbXBhcmVfY2Fub25pY19vcHQgeCB5ID1cbiAgbWF0Y2ggeCwgeSB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGNvbXBhcmVfY2Fub25pYyB4IHlcblxubGV0IGNvbXBhcmVfcHJlaGFzaCA9IGF1eCBjb21wYXJlXG5cbmxldCBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGlkcyA9IEhhc2h0YmwuZm9sZCAoZnVuIGtleSBfIGwgLT4ga2V5IDo6IGwpIGdyaWQuQ2F1c2FsLmZsb3cgW10gaW5cbiAgbGV0IGxhYmVsID0gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIENhdXNhbC5jdXRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHMgZ3JpZFxuICBpblxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNvbmZpZy5DYXVzYWwucHJlY18xIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgZHVtbXlfZ3JhcGhcbiAgfCBTb21lIHNpemUgLT5cbiAgICBsZXQgc3VjY19zaXplID0gc3VjYyBzaXplIGluXG4gICAgbGV0IGxhYmVscyA9IEEubWFrZSBzdWNjX3NpemUgKEZJQ1RJVElPVVMsIFwiXCIpIGluXG4gICAgbGV0IHByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0IGNvbmZsaWN0X3ByZWQgPSBBLm1ha2Ugc3VjY19zaXplIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIGF0b21fa2luZCAtPiBBLnNldCBsYWJlbHMgaSAoa2luZCBhdG9tX2tpbmQsIGxhYmVsIGF0b21fa2luZCkpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwuZXZlbnRzX2tpbmRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQuaXNfZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEEuc2V0IHByZWQgaSAoTW9kcy5JbnRTZXQuZWxlbWVudHMgcykpXG4gICAgICAgIGNvbmZpZy5DYXVzYWwucHJlY18xXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBjb25mbGljdF9wcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmNvbmZsaWN0XG4gICAgaW5cbiAgICBsZXQgcm9vdCA9IHNpemUgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkdyYXBoX2NvbnZlcnNpb24gTm9uZSBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHJvb3Q7IGxhYmVsczsgcHJlZDsgY29uZmxpY3RfcHJlZCB9XG5cbmxldCBjb25jYXQgbGlzdDEgbGlzdDIgPVxuICBsZXQgcmVjIGF1eCBsaXN0MSBsaXN0MiA9XG4gICAgbWF0Y2ggbGlzdDIgd2l0aFxuICAgIHwgW10gLT4gbGlzdDFcbiAgICB8IHQgOjogcSAtPiBhdXggKHQgOjogbGlzdDEpIHFcbiAgaW5cbiAgYXV4IGxpc3QyIChMaXN0LnJldiBsaXN0MSlcblxubGV0IGNvbXBhcmVfbm9kZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZSBhIGJcblxubGV0IHNtYXNoIGwgPVxuICBsZXQgcmVjIGF1eCBsIGZvcm1lciB3ZWlnaHQgb3V0cHV0ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IExpc3QucmV2ICgoZm9ybWVyLCB3ZWlnaHQpIDo6IG91dHB1dClcbiAgICB8ICh0LCB3dCkgOjogcSB3aGVuIHQgPSBmb3JtZXIgLT4gYXV4IHEgZm9ybWVyICh3dCArIHdlaWdodCkgb3V0cHV0XG4gICAgfCAodCwgd3QpIDo6IHEgLT4gYXV4IHEgdCB3dCAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgW11cblxubGV0IHByZWhhc2ggX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBncmFwaCA9XG4gICggZXJyb3IsXG4gICAgc21hc2hcbiAgICAgIChMaXN0LnNvcnQgY29tcGFyZV9ub2RlXG4gICAgICAgICAobGV0IGwgPSByZWYgW10gaW5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLml0ZXJcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGSUNUSVRJT1VTLCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgfCAoKE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCksIF8pIGFzIGEgLT4gbCA6PSAoYSwgMSkgOjogIWwpXG4gICAgICAgICAgICAgIGdyYXBoLmxhYmVsc1xuICAgICAgICAgIGluXG4gICAgICAgICAgIWwpKSApXG5cbmxldCBjYW5vbmljYWxpemUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoID1cbiAgbGV0IGFzc28gPSBNb2RzLkludE1hcC5lbXB0eSBpblxuICBsZXQgbGFiZWwgaSA9IHRyeSBBLmdldCBncmFwaC5sYWJlbHMgaSB3aXRoIF8gLT4gRklDVElUSU9VUywgXCJcIiBpblxuICBsZXQgcmVjIHBvcCAoY2FuZGlkYXRlIDoga2V5IGxpc3QpICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggY2FuZGlkYXRlLCB0b19iZWF0IHdpdGhcbiAgICB8IFtdLCBfIHwgXywgTm9uZSAtPlxuICAgICAgU29tZSB0b19iZWF0ICgqIGNhbmRpZGF0ZSBpcyBhIHByZWZpeCBvZiB0b19iZWF0LCB3ZSBvdXRwdXQgdGhlIHN1ZmZpeCAqKVxuICAgIHwgXyA6OiBfLCBTb21lIFtdIC0+IE5vbmUgKCogdGhlIGNhbmRpZGF0ZSBpcyB3b3JzZSAqKVxuICAgIHwgdCA6OiBxLCBTb21lICh0ciA6OiBxcikgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHRyIGluXG4gICAgICBpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgU29tZSBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgYmV0dGVyICopXG4gICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICBwb3AgcSAoU29tZSBxcilcbiAgICAgICgqIHdlIGRvIG5vdCBrbm93LCB3ZSBsb29rIGZ1cnRoZXIgKilcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgaW5cbiAgbGV0IHJlYyB2aXNpdCAoaSA6IGludCkgKG1hcCA6IGludCBNb2RzLkludE1hcC50KSAoZnJlc2hfcG9zIDogaW50KVxuICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIG1hcCB3aXRoXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICgqIHRoZSBub2RlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbiwgd2UgcHV0IGEgcG9pbnRlciAqKVxuICAgICAgKCowKilcbiAgICAgIChtYXRjaCBwb3AgWyBGb3JtZXIgaSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIHRvIGJlYXQgaXMgYmV0dGVyLCB3ZSBjdXQgdGhlIGNvbnN0cnVjdGlvbiAqKVxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgdG9fYmVhdCAtPlxuICAgICAgICAoKiB0byBiZWF0IG1heSBiZSBpbXByb3ZlZCwgd2UgZ28gb24gKilcbiAgICAgICAgU29tZSAoWyBGb3JtZXIgaSBdLCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdCkpXG4gICAgKCowKilcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHRoZSBub2RlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lICopXG4gICAgICBsZXQgbWFwID0gTW9kcy5JbnRNYXAuYWRkIGkgZnJlc2hfcG9zIG1hcCBpblxuICAgICAgbGV0IGZyZXNoX3BvcyA9IGZyZXNoX3BvcyArIDEgaW5cbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRnJlc2ggKGxhYmVsIGkpIF0gdG9fYmVhdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSAtPlxuICAgICAgICAoKjEqKVxuICAgICAgICBsZXQgc2liYmxpbmcxID0gdHJ5IEEuZ2V0IGdyYXBoLnByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXSBpblxuICAgICAgICBsZXQgc2liYmxpbmcyID1cbiAgICAgICAgICB0cnkgQS5nZXQgZ3JhcGguY29uZmxpY3RfcHJlZCBpIHdpdGggTm90X2ZvdW5kIC0+IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYmVzdF9zaWJibGluZyAobSA6IGludCBNb2RzLkludE1hcC50KSAoZiA6IGludClcbiAgICAgICAgICAgIChjYW5kaWRhdGVzIDogaW50IGxpc3QpIChub3RfYmVzdCA6IGludCBsaXN0KVxuICAgICAgICAgICAgKHRvX2JlYXQgOiBrZXkgbGlzdCBvcHRpb24pXG4gICAgICAgICAgICAocmVjb3JkIDpcbiAgICAgICAgICAgICAgKGludCAqIChrZXkgbGlzdCAqIGludCBNb2RzLkludE1hcC50ICogaW50ICoga2V5IGxpc3Qgb3B0aW9uKSlcbiAgICAgICAgICAgICAgb3B0aW9uKSA9XG4gICAgICAgICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKCoyKilcbiAgICAgICAgICAgIChtYXRjaCByZWNvcmQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSByZWNvcmQgLT4gU29tZSAobm90X2Jlc3QsIHJlY29yZCkpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgbGV0IHJlcCA9IHZpc2l0IHQgbSBmIHRvX2JlYXQgaW5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVwIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBiZXN0X3NpYmJsaW5nIG0gZiBxICh0IDo6IG5vdF9iZXN0KSB0b19iZWF0IHJlY29yZFxuICAgICAgICAgICAgfCBTb21lICgoZW5jb2RpbmcgOiBrZXkgbGlzdCksIG1hcCwgZnJlc2gsIHJlc2lkdWUpIC0+XG4gICAgICAgICAgICAgICgqMyopXG4gICAgICAgICAgICAgIGxldCAodG9fYmVhdF9hZnRlciA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc2lkdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBTb21lIGVuY29kaW5nXG4gICAgICAgICAgICAgICAgfCBfIC0+IHRvX2JlYXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IChub3RfYmVzdCA6IGludCBsaXN0KSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbm90X2Jlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgKGJlc3QsIF8pIC0+IGJlc3QgOjogbm90X2Jlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYmVzdF9zaWJibGluZyBtIGYgcSBub3RfYmVzdCB0b19iZWF0X2FmdGVyXG4gICAgICAgICAgICAgICAgKFNvbWUgKHQsIChlbmNvZGluZywgbWFwLCBmcmVzaCwgcmVzaWR1ZSkpKSlcbiAgICAgICAgICAoKjMqKVxuICAgICAgICAgICgqMiopXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgYXV4IG0gZiBsIHNvbCB0b19iZWF0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFNvbWUgKG0sIGYsIHNvbCwgdG9fYmVhdClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggYmVzdF9zaWJibGluZyBtIGYgbCBbXSB0b19iZWF0IE5vbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobm90X2Jlc3QsIHJlY29yZCkgLT5cbiAgICAgICAgICAgICAgbGV0IF8sIChiZXN0LCBtYXAsIGZyZXNoX3BvcywgdG9fYmVhdF9hZnRlcikgPSByZWNvcmQgaW5cbiAgICAgICAgICAgICAgYXV4IG1hcCBmcmVzaF9wb3Mgbm90X2Jlc3QgKGNvbmNhdCBzb2wgYmVzdCkgdG9fYmVhdF9hZnRlcilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGlzdCA9IFsgRnJlc2ggKGxhYmVsIGkpIF0gaW5cbiAgICAgICAgKCoyKilcbiAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geCBtYXAgd2l0aFxuICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2liYmxpbmcxID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMSBpblxuICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcxIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAobWF0Y2ggcG9wIFsgU3RvcCBdIHRvX2JlYXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICgqNCopXG4gICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAoKjUqKVxuICAgICAgICAgICAgbGV0IGcgeCA9XG4gICAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4gRm9ybWVyIHhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEZyZXNoIChsYWJlbCB4KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzaWJibGluZzIgPSBMaXN0LnNvcnQgKHF1aWNrX2NvbXBhcmUgZykgc2liYmxpbmcyIGluXG4gICAgICAgICAgICAobWF0Y2ggYXV4IG1hcCBmcmVzaF9wb3Mgc2liYmxpbmcyIGxpc3QgdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIChtYXAsIGZyZXNoX3BvcywgbGlzdCwgdG9fYmVhdCkgLT5cbiAgICAgICAgICAgICAgKCo2KilcbiAgICAgICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGNvbmNhdCBsaXN0IFsgU3RvcCBdIGluXG4gICAgICAgICAgICAgICAgU29tZSAobGlzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKSlcbiAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAoKjUqKSlcbiAgICAgICAgICAoKjQqKSlcbiAgICAgICAgKCozKilcbiAgICAgICAgKCoyKikpXG4gICAgKCoxKilcbiAgICAoKjAqKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgIG1hdGNoIHZpc2l0IGdyYXBoLnJvb3QgYXNzbyAwIE5vbmUgd2l0aFxuICAgIHwgU29tZSAocmVwLCBfLCBfLCBfKSAtPiBlcnJvciwgcmVwXG4gICAgfCBOb25lIC0+IGVycm9yLCBbXVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkNhbm5vbmljX2Zvcm1fY29tcHV0YXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5tb2R1bGUgTGlzdFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHRhYmxlID1cbiAgICAocHJlaGFzaFxuICAgICogKENhdXNhbC5ncmlkXG4gICAgICAqIGdyYXBoXG4gICAgICAqIGNhbm9uaWNhbF9mb3JtIG9wdGlvblxuICAgICAgKiBUcmFjZS50XG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QpXG4gICAgbGlzdFxuXG4gIGxldCBpbml0X3RhYmxlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPSBlcnJvciwgbG9nX2luZm8sIFtdXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGUgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKHByZWhhc2gsIFsgZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBpbmZvIF0pIDo6IHRhYmxlXG5cbiAgbGV0IHNvcnRfb3V0ZXIgPVxuICAgIGxldCBjb21wYXJlIChhLCBfKSAoYiwgXykgPSBjb21wYXJlX3ByZWhhc2ggYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgc29ydF9pbm5lciA9XG4gICAgbGV0IGNvbXBhcmUgKF8sIF8sIGEsIF8sIF8pIChfLCBfLCBiLCBfLCBfKSA9IGNvbXBhcmVfY2Fub25pY19vcHQgYSBiIGluXG4gICAgTGlzdC5zb3J0IGNvbXBhcmVcblxuICBsZXQgaGFzaF9pbm5lciBfcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGNtcCBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfaW5uZXIgbGlzdCBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8IChfLCBfLCB0LCBfLCBsaXN0KSA6OiBxLCBTb21lIChfLCBfLCBvbGQsIF8pIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBTb21lIChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcpIC0+XG4gICAgICAgIHZpc2l0IHFcbiAgICAgICAgICAoKGdyaWQnLCBncmFwaCcsIGEsIGV2ZW50JywgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgICAgICAgIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKVxuICAgICAgICAgICgqTGlzdC5yZXYqKSBsaXN0XG4gICAgICB8IChncmlkLCBncmFwaCwgdCwgZXZlbnQsIGxpc3QpIDo6IHEsIE5vbmUgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgKGdyaWQsIGdyYXBoLCB0LCBldmVudCkpIChMaXN0LnJldiBsaXN0KVxuICAgICAgfCBbXSwgTm9uZSAtPiBbXVxuICAgICAgfCBbXSwgU29tZSAoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50KSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICgoZ3JpZCwgZ3JhcGgsIGEsIGV2ZW50LCBMaXN0LnNvcnQgY21wIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgICAgICA6OiBzdG9yZWRfZWxlbWVudHMpXG4gICAgaW5cbiAgICBsZXQgbGlzdCA9IHZpc2l0IGxpc3QgW10gTm9uZSBbXSBpblxuICAgIGVycm9yLCBsaXN0XG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgbGlzdCA9IHNvcnRfb3V0ZXIgKExpc3QucmV2IGxpc3QpIGluXG4gICAgbGV0IHJlYyB2aXNpdCBlbGVtZW50c190b19zdG9yZSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCBlbGVtZW50c190b19zdG9yZSwgbGFzdF9lbGVtZW50IHdpdGhcbiAgICAgIHwgKCh0IDogcHJlaGFzaCksIGxpc3QpIDo6IHEsIFNvbWUgb2xkIHdoZW4gY29tcGFyZSB0IG9sZCA9IDAgLT5cbiAgICAgICAgdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgbGFzdF9lbGVtZW50XG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgIGxpc3QgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgU29tZSBhIC0+XG4gICAgICAgIHZpc2l0IHEgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cykgKFNvbWUgdCkgbGlzdFxuICAgICAgfCAodCwgbGlzdCkgOjogcSwgTm9uZSAtPiB2aXNpdCBxIHN0b3JlZF9lbGVtZW50cyAoU29tZSB0KSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgYSAtPiBMaXN0LnJldiAoKGEsIGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcykgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBsZXQgcmVjIHZpc2l0MiBsIGxvZ19pbmZvIGVycm9yIGFjYyA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBhY2NcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEgLT5cbiAgICAgICAgaWYgTGlzdC5sZW5ndGggbGlzdCA9IDEgdGhlblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCkgOjogYWNjKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0JyA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGxpc3QnKSAoZ3JpZCwgZ3JhcGgsIGRhZywgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBkYWcnID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRhZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgZGFnIC0+IGVycm9yLCBsb2dfaW5mbywgZGFnXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChncmlkLCBncmFwaCwgU29tZSBkYWcnLCBiLCBjKSA6OiBsaXN0JylcbiAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgW10pIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCcgPVxuICAgICAgICAgICAgaGFzaF9pbm5lciBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvclxuICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBsaXN0J1xuICAgICAgICAgIGluXG4gICAgICAgICAgdmlzaXQyIHEgbG9nX2luZm8gZXJyb3IgKCh0LCBsaXN0JykgOjogYWNjKVxuICAgICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID0gdmlzaXQyIGxpc3QgbG9nX2luZm8gZXJyb3IgW10gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJvamVjdF90dXBsZSAoZ3JpZCwgXywgXywgdHJhY2UsIGxpc3QpID0gTGlzdC5oZCBsaXN0LCB0cmFjZSwgZ3JpZCwgbGlzdFxuXG4gIGxldCBzb3J0X2xpc3QgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZmxhdF9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdF9vdXQgKF9wcmVoYXNoLCBsaXN0KSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3Rfb3V0IHR1cGxlIC0+IHByb2plY3RfdHVwbGUgdHVwbGUgOjogbGlzdF9vdXQpXG4gICAgICAgICAgICBsaXN0X291dCBsaXN0KVxuICAgICAgICBbXSBsaXN0XG4gICAgaW5cbiAgICBsZXQgY29tcGFyZV9wYWlyIChhLCBfLCBfLCBfKSAoYywgXywgXywgXykgPVxuICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgYSBjXG4gICAgaW5cbiAgICBsZXQgZmxhdF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfcGFpciBmbGF0X2xpc3QgaW5cbiAgICAoIGVycm9yLFxuICAgICAgbG9nX2luZm8sXG4gICAgICBMaXN0LnJldl9tYXAgKGZ1biAoX2EsIGIsIGMsIGQpIC0+IGIsIGMsIGQpIChMaXN0LnJldiBmbGF0X2xpc3QpIClcblxuICBsZXQgY291bnRfc3RvcmllcyBsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIG4gbCAtPiBuICsgTGlzdC5sZW5ndGggKHNuZCBsKSkgMCBsaXN0XG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gKGVycm9yIDogRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSBnXG4gICAgICBsaXN0IGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGEgKF8sIGwpIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBhKSAoXywgXywgXywgeCwgeSkgLT5cbiAgICAgICAgICAgIGcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5IGEpXG4gICAgICAgICAgYSBsKVxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYSkgKExpc3QucmV2IGxpc3QpXG5lbmRcblxubW9kdWxlIEJ1Y2tldFRhYmxlIDogU3RvcnlUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHN0b3J5X2lkID0gaW50XG5cbiAgbGV0IHN1Y2Nfc3RvcnlfaWQgPSBzdWNjXG5cbiAgdHlwZSBwcmVoYXNoX2VsdCA9IG5vZGUgKiBpbnRcblxuICBtb2R1bGUgS2V5UyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrZXlcblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZUhhc2hTID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWhhc2hfZWx0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBLZXlNYXAgPSBLZXlTLk1hcFxuICBtb2R1bGUgUHJlSGFzaE1hcCA9IFByZUhhc2hTLk1hcFxuXG4gIHR5cGUgaW5uZXJfdHJlZSA9XG4gICAgfCBJbm5lcl9ub2RlIG9mIChpbm5lcl90cmVlIEtleU1hcC50ICogc3RvcnlfaWQgb3B0aW9uKVxuICAgIHwgSW5uZXJfbGVhdmUgb2YgKGtleSBsaXN0ICogc3RvcnlfaWQpXG5cbiAgdHlwZSBvdXRlcl90cmVlID1cbiAgICB8IEVtcHR5XG4gICAgfCBPdXRlcl9ub2RlIG9mIChvdXRlcl90cmVlIFByZUhhc2hNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IE91dGVyX2xlYXZlIG9mIChwcmVoYXNoX2VsdCBsaXN0ICogc3RvcnlfaWQpXG4gICAgfCBUb19pbm5lciBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBpbm5lcl90cmVlKVxuXG4gIHR5cGUgdGFibGUgPSB7XG4gICAgdHJlZTogb3V0ZXJfdHJlZTtcbiAgICBhcnJheTpcbiAgICAgIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi50O1xuICAgIGZyZXNoX2lkOiBzdG9yeV9pZDtcbiAgfVxuXG4gIGxldCBpbml0X3RhYmxlIHBhcmFtZXRlcnMgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuY3JlYXRlXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgMFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRyZWUgPSBFbXB0eTsgYXJyYXk7IGZyZXNoX2lkID0gMCB9XG5cbiAgbGV0IGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXNzb2MgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZ2V0XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgIGluXG4gICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBhID1cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcInVua25vd24gc3RvcnkgaWRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb25zaXN0ZW50IHN0b3J5IGlkXCIpICh0YWJsZSwgW10pXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBhXG4gICAgfCBTb21lIChfLCBfLCBTb21lIGNhbm5vbmljLCBfLCBfKSAtPiBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG4gICAgfCBTb21lIChncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8pIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYW5ub25pYyA9XG4gICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYXJyYXknID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgaWRcbiAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fubm9uaWMsIHRyYWNlLCBpbmZvKVxuICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbGV0IHRhYmxlID0geyB0YWJsZSB3aXRoIGFycmF5ID0gYXJyYXknIH0gaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pYylcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2Ugc3RvcnlfaW5mbyB0YWJsZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICAgIGdyYXBoX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmVoYXNoID0gcHJlaGFzaCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBncmFwaCBpblxuICAgIGxldCBhc3NvYyA9IGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgc3RvcnlfaW5mbyBpblxuICAgIGxldCBhZGRfc3RvcnkgZXJyb3IgeCB0YWJsZSA9XG4gICAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgdGFibGUuZnJlc2hfaWQgeCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciA9XG4gICAgICAgIGlmXG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfZ3JhcGhcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgdGFibGUuZnJlc2hfaWQgc3RvcnlfaW5mbyBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3JcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgdGFibGUuZnJlc2hfaWQsXG4gICAgICAgIHsgdGFibGUgd2l0aCBhcnJheTsgZnJlc2hfaWQgPSBzdWNjX3N0b3J5X2lkIHRhYmxlLmZyZXNoX2lkIH0gKVxuICAgIGluXG4gICAgbGV0IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQgdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhc3NvX29wdCA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkIHRhYmxlLmFycmF5XG4gICAgICBpblxuICAgICAgbWF0Y2ggYXNzb19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIlVua25vd24gc3RvcnkgaWRcIikgdGFibGVcbiAgICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgICBsZXQgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciA9XG4gICAgICAgICAgbWF0Y2ggSC5nZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFN0b3J5X2pzb24uQ2F1c2FsXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5X21vZGUgPSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5sb2dfaW5mbyA9IHN0b3J5X2luZm87XG4gICAgICAgICAgICBTdG9yeV9qc29uLnN0b3J5ID0gU3RvcnlfanNvbi5TYW1lX2FzIGlkO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0XG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgICAoZ3JpZCwgZ3JhcGgsIGNhbm9uaWMsIHRyYWNlLCBzdG9yeV9pbmZvIEAgaW5mbylcbiAgICAgICAgICAgIHRhYmxlLmFycmF5XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHRhYmxlIHdpdGggYXJyYXkgfVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9hc3NvYyBlcnJvciBjYW5vbmljX2Zvcm0gYXNzb2MgPVxuICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgfCBncmlkLCBncmFwaCwgTm9uZSwgdHJhY2UsIGluZm8gLT5cbiAgICAgICAgZXJyb3IsIChncmlkLCBncmFwaCwgU29tZSBjYW5vbmljX2Zvcm0sIHRyYWNlLCBpbmZvKVxuICAgICAgfCBfLCBfLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2YgdGhpcyBzdG9yeSBzaG91bGQgbm90IGhhdmUgYmVlbiBjb21wdXRlZCB5ZXRcIlxuICAgICAgICAgIChGYWlsdXJlXG4gICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyAgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCIpXG4gICAgICAgICAgYXNzb2NcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5vbmljX2Zvcm0gY2Fub25pY19mb3JtJyBpZCcgYXNzb2MgdGFibGVcbiAgICAgICAgPVxuICAgICAgbWF0Y2ggY2Fub25pY19mb3JtLCBjYW5vbmljX2Zvcm0nIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9sZWF2ZSAoW10sIGlkJylcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgKElubmVyX2xlYXZlIChxLCBpZCkpIEtleU1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSwgU29tZSBpZCkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCB0cmVlIEtleU1hcC5lbXB0eSwgTm9uZSlcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoIEtleU1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChJbm5lcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChLZXlNYXAuYWRkIHQnIChJbm5lcl9sZWF2ZSAocScsIGlkJykpIEtleU1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcHJlaGFzaCBwcmVoYXNoJyBpZCcgdGFibGUgPVxuICAgICAgbWF0Y2ggcHJlaGFzaCwgcHJlaGFzaCcgd2l0aFxuICAgICAgfCBbXSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgZ2V0X2Nhbm5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIGNhbm5vbmljX2Zvcm0gY2Fubm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChQcmVIYXNoTWFwLmVtcHR5LCBpbm5lcilcbiAgICAgIHwgdCA6OiBxLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZCcpXG4gICAgICAgIClcbiAgICAgIHwgW10sIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5LCBTb21lIGlkKVxuICAgICAgICApXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgd2hlbiB0ID0gdCcgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgICAgIGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3IgcSBxJyBpZCcgdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IHRyZWUgUHJlSGFzaE1hcC5lbXB0eSwgTm9uZSkgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgTm9uZSApIClcbiAgICBpblxuICAgIGxldCByZWMgYXV4X2lubmVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IGlubmVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgSW5uZXJfbm9kZSAoXywgU29tZSBpZCcpIHwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICB8IElubmVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpICkpXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICAobWF0Y2ggaW5uZXJfdHJlZSB3aXRoXG4gICAgICAgIHwgSW5uZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIEtleU1hcC5maW5kX29wdGlvbiB0IG1hcCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAgIGxldCBpbm5lcl90cmVlID1cbiAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIGlubmVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgaW5uZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBpbm5lcl90cmVlJycgPT0gaW5uZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgaW5uZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgaW5uZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IElubmVyX2xlYXZlIChsJywgaWQnKSAtPlxuICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyBhc3NvYyB0YWJsZSlcbiAgICBpblxuICAgIGxldCByZWMgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gc3VmZml4IG91dGVyX3RyZWUgdGFibGUgPVxuICAgICAgbWF0Y2ggc3VmZml4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBOb25lKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX25vZGUgKG1hcCwgU29tZSBpZClcbiAgICAgICAgfCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZ3JhcGggPVxuICAgICAgICAgICAgbWF0Y2ggYXNzb2Mgd2l0aFxuICAgICAgICAgICAgfCBfLCBncmFwaCwgTm9uZSwgXywgXyAtPiBlcnJvciwgZ3JhcGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIFNvbWUgXywgXywgXyAtPlxuICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgaW4gdGhlIG91dGVyIHRyZWUgc2hvdWxkIG5vdCBcXFxuICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gY29tcHV0ZSB5ZXRcIilcbiAgICAgICAgICAgICAgICBncmFwaFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWNfZm9ybSA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fubm9uaWNfZm9ybSBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWNfZm9ybScpID1cbiAgICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXIgPVxuICAgICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvY1xuICAgICAgICAgICAgICB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKF9xLCBpZCcpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCB0YWJsZSA9IGFkZF9zdG9yeV9pbmZvIGVycm9yIHN0b3J5X2luZm8gaWQnIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgb3V0ZXJfdHJlZVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsIGlubmVyKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN1ZmZpeCA9XG4gICAgICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYXNzb2MgPSB1cGRhdGVfYXNzb2MgZXJyb3Igc3VmZml4IGFzc29jIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lciB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgVG9faW5uZXIgKG1hcCwgaW5uZXIpKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIG91dGVyX3RyZWUgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgT3V0ZXJfbGVhdmUgKHN1ZmZpeCwgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBhc3NvYycpIC0+XG4gICAgICAgICAgKG1hdGNoIFByZUhhc2hNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIG1hcCwgYXNzb2MnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfdHJlZScgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZScnID1cbiAgICAgICAgICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yIGFzc29jIHN0b3J5X2luZm8gcSBvdXRlcl90cmVlJyB0YWJsZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG91dGVyX3RyZWUnJyA9PSBvdXRlcl90cmVlJyB0aGVuXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBvdXRlcl90cmVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgdGFibGUnLFxuICAgICAgICAgICAgICAgIE91dGVyX25vZGUgKFByZUhhc2hNYXAuYWRkIHQgb3V0ZXJfdHJlZScnIG1hcCwgYXNzb2MnKSApKVxuICAgICAgICB8IE91dGVyX2xlYXZlICh0JyA6OiBxJywgaWQnKSB3aGVuIG5vdCAodCA9IHQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQnIChPdXRlcl9sZWF2ZSAocScsIGlkJykpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgICAgIHwgT3V0ZXJfbGVhdmUgKGwnLCBpZCcpIC0+IGF1eF9vdXRlcjIgbG9nX2luZm8gZXJyb3Igc3VmZml4IGwnIGlkJyB0YWJsZVxuICAgICAgICB8IFRvX2lubmVyIChfbWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIFRvX2lubmVyXG4gICAgICAgICAgICAgICggUHJlSGFzaE1hcC5hZGQgdFxuICAgICAgICAgICAgICAgICAgKE91dGVyX2xlYXZlIChxLCBpZCkpXG4gICAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCAoT3V0ZXJfbGVhdmUgKHEsIGlkKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgICAgaW5uZXIgKSApKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIHRyZWUgPVxuICAgICAgYXV4X291dGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIChncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8pXG4gICAgICAgIHN0b3J5X2luZm8gcHJlaGFzaCB0YWJsZS50cmVlIHRhYmxlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCB0cmVlIH1cblxuICAoKiBsZXQgcmVjIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IGlubmVyX3RyZWUgPVxuICAgICBtYXRjaFxuICAgICBpbm5lcl90cmVlXG4gICAgIHdpdGhcbiAgICAgfCBJbm5lcl9ub2RlIChtYXAsYXNzb2MnKSAtPlxuICAgICBsZXQgKCkgPVxuICAgICBtYXRjaFxuICAgICBhc3NvYydcbiAgICAgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc1VuZmlsbGVkIE5vZGVcXG5cIiBwcmVmaXhcbiAgICAgfCBTb21lIChpZCkgIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNGaWxsZWQgTm9kZTogJWlcXG5cIiBwcmVmaXggaWRcbiAgICAgaW5cbiAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgS2V5TWFwLml0ZXJcbiAgICAgKGZ1biBlbHQgbWFwIC0+XG4gICAgIHByaW50X2VsdCBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBlbHQ7XG4gICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgIG1hcFxuICAgICB8IElubmVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICBsZXQgXyA9IHByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgKCkqKVxuXG4gICgqXG5sZXQgcmVjIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4IG91dGVyX3RyZWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgb3V0ZXJfdHJlZVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0VNUFRZXFxuXCIgcHJlZml4XG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgYXNzb2MnXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgICAgIHwgU29tZSAoaWQpICAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgICAgIFByZUhhc2hNYXAuaXRlclxuICAgICAgICAoZnVuICgoXyxiKSxpKSAgbWFwIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXMlczolaS0+XFxuXCIgcHJlZml4IGIgaSA7XG4gICAgICAgIHByaW50X291dGVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBtYXApXG4gICAgICAgIG1hcFxuICAgICAgICB8IE91dGVyX2xlYXZlIChsLGlkKSAgLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0xFQVZFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgXyA9IHByaW50X3ByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbCBpblxuICAgICAgICAoKVxuICAgICAgICB8IFRvX2lubmVyIChtYXAsaW5uZXIpIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNUTyBJTk5FUiBUUkVFOlxcblwiIHByZWZpeCBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBsZXQgKCkgPSBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfaW5uZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIGlubmVyICopXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgaSAoYSwgYiwgYywgZCwgZSkgYXJyYXkgLT5cbiAgICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5zZXQgcGFyYW1ldGVyJyBlcnJvciBpXG4gICAgICAgICAgICAoYSwgYiwgYywgZCwgTGlzdC5zb3J0IFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGUpXG4gICAgICAgICAgICBhcnJheSlcbiAgICAgICAgdGFibGUuYXJyYXkgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0YWJsZSB3aXRoIGFycmF5IH1cblxuICBsZXQgc29ydF9saXN0IHBhcmFtZXRlciBfIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGwgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIF8gKGEsIF9iLCBfYywgZCwgZSkgbCAtPiBlcnJvciwgKGQsIGEsIGUpIDo6IGwpXG4gICAgICAgIHRhYmxlLmFycmF5IFtdXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9IHRhYmxlLmZyZXNoX2lkXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0YWJsZSBhID1cbiAgICBsZXQgYSwgKGIsIGMpID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gcGFyYW1ldGVyJyBlcnJvciBfIChfLCBfLCBfLCBkLCBlKSAobG9nX2luZm8sIGEpIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMgPVxuICAgICAgICAgICAgZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcicgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGQgZSBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhLCAoYiwgYykpXG4gICAgICAgIHRhYmxlLmFycmF5IChsb2dfaW5mbywgYSlcbiAgICBpblxuICAgIGEsIGIsIGNcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZWxlY3RvciA9IHNpZ1xuICB2YWwgY2hvb3NlX2ZzdCA6IEgucGFyYW1ldGVyIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgQ2hvaWNlIChTIDogU2VsZWN0b3IpIChBIDogU3RvcnlUYWJsZSkgKEIgOiBTdG9yeVRhYmxlKSA6IFN0b3J5VGFibGUgPVxuc3RydWN0XG4gIHR5cGUgdGFibGUgPSBBIG9mIEEudGFibGUgfCBCIG9mIEIudGFibGVcblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciA9XG4gICAgaWYgUy5jaG9vc2VfZnN0IHBhcmFtZXRlciB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQS5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5pbml0X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG4gICAgKVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEIgdGFibGVcblxuICBsZXQgaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBBIHRhYmxlXG4gICAgfCBCIHRhYmxlIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLnNvcnRfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuXG4gIGxldCBjb3VudF9zdG9yaWVzIHRhYmxlID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuY291bnRfc3RvcmllcyB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPiBCLmNvdW50X3N0b3JpZXMgdGFibGVcblxuICBsZXQgZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGEgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuICAgIHwgQiB0YWJsZSAtPiBCLmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhXG5lbmRcblxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBMaXN0VGFibGUqKVxuKCogbW9kdWxlIFN0b3J5VGFibGUgPSBCdWNrZXRUYWJsZSopXG5tb2R1bGUgU3RvcnlUYWJsZSA9XG4gIENob2ljZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBjaG9vc2VfZnN0ID0gUy5QSC5CLlBCLkNJLlBvLksuSC5kb193ZV91c2VfYnVja2V0X3NvcnRcbiAgICBlbmQpXG4gICAgKEJ1Y2tldFRhYmxlKVxuICAgIChMaXN0VGFibGUpXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo1MzoxNCBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvblxuICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gKlxuICogQ29weXJpZ2h0IDIwMTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZVxuICogR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbm1vZHVsZSBEID0gRGFnLlN0b3J5VGFibGVcbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5tb2R1bGUgUCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHNcblxudHlwZSBlcnJvcl9sb2cgPSBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcbnR5cGUgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcbnR5cGUga2FwcGFfaGFuZGxlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguaGFuZGxlclxudHlwZSBwcm9maWxpbmdfaW5mbyA9IFAubG9nX2luZm9cbnR5cGUgc2hhbGxfd2UgPSBwYXJhbWV0ZXIgLT4gYm9vbFxudHlwZSBzdGVwID0gVHJhY2Uuc3RlcFxudHlwZSBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzID0gc3RlcCAqIFMuUEguQi5QQi5DSS5Qby5LLnNpZGVfZWZmZWN0XG50eXBlIHN0ZXBfaWQgPSBTLlBILkIuUEIuc3RlcF9pZFxuXG50eXBlIHRyYWNlID0ge1xuICBjb21wcmVzc2VkX3RyYWNlOiBzdGVwX3dpdGhfc2lkZV9lZmZlY3RzIGxpc3Qgb3B0aW9uO1xuICBwcmV0cmFjZTogc3RlcCBsaXN0O1xuICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHk6IGJvb2w7XG59XG5cbnR5cGUgdHJhY2VfcnVudGltZV9pbmZvID0gcHJvZmlsaW5nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRcblxudHlwZSAnYSB3aXRoX2hhbmRsZXJzID1cbiAgcGFyYW1ldGVyIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICA/cHJpbnRfaWZfemVybzpzaGFsbF93ZSAtPlxuICBrYXBwYV9oYW5kbGVyIC0+XG4gIHByb2ZpbGluZ19pbmZvIC0+XG4gIGVycm9yX2xvZyAtPlxuICAnYVxuXG50eXBlICdhIHplcm9hcnkgPSAoZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYSkgd2l0aF9oYW5kbGVyc1xudHlwZSAoJ2EsICdiKSB1bmFyeSA9ICgnYSAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdiKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICgnYSAtPiAnYiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdjKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2QpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2UpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcXVpbnRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdnKVxuICB3aXRoX2hhbmRsZXJzXG5cbmxldCAod2Vfc2hhbGwgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiB0cnVlXG5sZXQgKHdlX3NoYWxsX25vdCA6IHNoYWxsX3dlKSA9IGZ1biBfIC0+IGZhbHNlXG5sZXQgZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlID0gdHJhY2UucHJldHJhY2VcbmxldCBzaXplX29mX3ByZXRyYWNlIHRyYWNlID0gTGlzdC5sZW5ndGggKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcbmxldCBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgPSB0cmFjZS53aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHlcbmxldCBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0geCB9XG5sZXQgX3NldF9wcmV0cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHByZXRyYWNlID0geCB9XG5sZXQgX3NldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIHggPSB7IHRyYWNlIHdpdGggY29tcHJlc3NlZF90cmFjZSA9IHggfVxuXG5sZXQgZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgPVxuICBtYXRjaCB0cmFjZS5jb21wcmVzc2VkX3RyYWNlIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIFtdKSAoTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkpXG5cbmxldCBpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlID0gdHJhY2UuY29tcHJlc3NlZF90cmFjZSAhPSBOb25lXG5cbmxldCB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB3aXRoX2FtYmlndWl0eSBwcmV0cmFjZSA9XG4gIHtcbiAgICBwcmV0cmFjZTtcbiAgICBjb21wcmVzc2VkX3RyYWNlID0gTm9uZTtcbiAgICB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSB3aXRoX2FtYmlndWl0eTtcbiAgfVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2UgPSB0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSB0cnVlXG5cbmxldCBidWlsZF9jb21wcmVzc2VkX3RyYWNlIHggeSA9XG4gIHsgY29tcHJlc3NlZF90cmFjZSA9IFNvbWUgeTsgcHJldHJhY2UgPSB4OyB3aXRoX3BvdGVudGlhbF9hbWJpZ3VpdHkgPSBmYWxzZSB9XG5cbigqbGV0IGdldF9sb2dfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwXG4gIGxldCBnZXRfZGVidWdnaW5nX21vZGUgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfbW9kZVxuICBsZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciopXG5sZXQgZ2V0X2lkX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X2lkX29mX3JlZmluZWRfc3RlcFxubGV0IGdldF9zaW11bGF0aW9uX3RpbWVfb2ZfZXZlbnQgPSBTLlBILkIuUEIuQ0kuUG8uSy5nZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXBcblxubGV0IF9leHRlbmRfdHJhY2Vfd2l0aF9kdW1teV9zaWRlX2VmZmVjdHMgbCA9XG4gIExpc3QucmV2X21hcCAoZnVuIGEgLT4gYSwgW10pIChMaXN0LnJldiBsKVxuXG5sZXQgcHJpbnRfcHJldHJhY2UgcGFyYW1ldGVyIF9oYW5kbGVyID1cbiAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X291dF9jaGFubmVsIHBhcmFtZXRlcilcbiAgICBcIkBbPHY+JWFAXUAuXCJcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDp0cnVlID9lbnY6Tm9uZSkpXG5cbmxldCBwcmludF90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciB0cmFjZSA9XG4gIHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBoYW5kbGVyIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCB0cmFuc2Zvcm1fdHJhY2VfZ2VuIGYgbG9nX21lc3NhZ2UgZGVidWdfbWVzc2FnZSBwcm9maWxpbmdfZXZlbnQgcGFyYW1ldGVyc1xuICAgID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBib29sID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ19zdGVwIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIG1hdGNoIGxvZ19tZXNzYWdlIHdpdGhcbiAgICAgICAgfCBTb21lIGxvZ19tZXNzYWdlIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiJXMlc1wiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKSlcbiAgICAgICAgICAgICAgbG9nX21lc3NhZ2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZsdXNoX2xvZ2dlciAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgKSBlbHNlXG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAocHJldHJhY2UnLCBuKSA9XG4gICAgICBmIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBwcmV0cmFjZVxuICAgIGluXG4gICAgbGV0IHRyYWNlJyA9IHRyYWNlX29mX3ByZXRyYWNlIHByZXRyYWNlJyBpblxuICAgIGxldCB0cmFjZSA9XG4gICAgICBpZiB0cmFjZSA9PSB0cmFjZScgdGhlblxuICAgICAgICB0cmFjZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyAobWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgaWYgcHJpbnRfaWZfemVybyBwYXJhbWV0ZXJzIHRoZW5cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgIFwiOiBub3RoaW5nIGhhcyBjaGFuZ2VkIEAuXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKSBcIkAuXCJcbiAgICAgICAgZWxzZSBpZiBuID4gMCB0aGVuXG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBcIjogLSVpIGV2ZW50cyBALlwiIG5cbiAgICAgICAgZWxzZVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6ICslaSBldmVudHMgQC5cIiAoLW4pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IGRlYnVnX21lc3NhZ2VcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgcHJpbnRfdHJhY2UgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHRyYWNlXG4gICAgICApXG4gICAgaW5cblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIHByb2ZpbGluZ19ldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbnR5cGUga2luZCA9ICgqICB8IFNvbHZlX2FtYmlndWl0aWVzKilcbiAgfCBNYXlfYWRkX2FtYmlndWl0aWVzIHwgTmV1dHJhbFxuXG5sZXQgaGFuZGxlX2FtYmlndWl0aWVzIGtpbmQgYiA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyAtPiBmYWxzZSopXG4gIHwgTmV1dHJhbCAtPiBiXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyAtPiB0cnVlXG5cbnR5cGUgYW1iaXF1aXRpZXNfcHJlY29uZGl0aW9uID1cbiAgfCBEb19ub3RfY2FyZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAoKnwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5KilcblxubGV0IG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IF9wYXJhbWV0ZXJzIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBEb19ub3RfY2FyZSAtPiBmYWxzZVxuICB8IFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSAtPiB0cnVlXG4oKiAgfCBCZXR0ZXJfd2hlbl9ub19hbWJpZ3VpdHkgLT4gUy5QSC5CLlBCLkNJLlBvLksuSC5hbHdheXNfZGlzYW1iaWd1YXRlIHBhcmFtZXRlcnMqKVxuXG5sZXQgbW9uYWRpY19saWZ0IGYgXyBfIGxvZ19pbmZvIGVycm9yIHQgPVxuICBsZXQgdCcgPSBmIHQgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAodCcsIExpc3QubGVuZ3RoIHQgLSBMaXN0Lmxlbmd0aCB0JylcblxubGV0IF9kdW1teV9wcm9maWxpbmcgXyBwID0gcFxuXG5sZXQgZGlzYW1iaWd1YXRlID1cbiAgdHJhbnNmb3JtX3RyYWNlX2dlblxuICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZGlzYW1iaWd1YXRlKVxuICAgIChTb21lIFwiXFx0LSBhbHBoYS1jb252ZXJzaW9uXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbmFtZXMgYWdlbnRzOlxcblwiXG4gICAgU3RvcnlQcm9maWxpbmcuQWdlbnRfaWRzX2Rpc2FtYmlndWF0aW9uXG5cbmxldCBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsX25vdClcbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbF9ub3QpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UnID1cbiAgICAgIGRpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOihmdW4gcGFyYW1ldGVycyAtPlxuICAgICAgICAgIG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSAmJiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMpXG4gICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyXG4gICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICBpZiB0cmFjZScgPT0gdHJhY2UgdGhlblxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UnIGZhbHNlIClcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG5sZXQgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIGYgcmVxdWlyZW1lbnQgZWZmZWN0IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBpZiBzaGFsbF93ZV9jb21wdXRlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2UgPVxuICAgICAgaWYgbXVzdF93ZV9zb2x2ZV9hbWJpZ3VpdHkgcGFyYW1ldGVycyByZXF1aXJlbWVudCB0aGVuXG4gICAgICAgIG1ha2VfdW5hbWJpZ3VvdXMgcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZSBrYXBwYV9oYW5kbGVyXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgKGZcbiAgICAgICAgOiBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlciAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOnNoYWxsX3dlIC0+XG4gICAgICAgICAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXIgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgICAgICAgdHJhY2UgLT5cbiAgICAgICAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogdHJhY2UpXG4gICAgICAgIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgIH5wcmludF9pZl96ZXJvIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZSA9IHNldF9hbWJpZ3VpdHlfbGV2ZWwgdHJhY2UgKGhhbmRsZV9hbWJpZ3VpdGllcyBlZmZlY3QgdHJ1ZSkgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHRyYWNlXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IHNwbGl0X2luaXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuc3BsaXRfaW5pdClcbiAgICAgICAoU29tZSBcIlxcdC0gc3BsaXR0aW5nIGluaXRpYWwgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgc3BsaXQgaW5pdGlhbCBldmVudHM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5EZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSlcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsXG5cbmxldCBjdXQgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuUG8uY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGN1dHRpbmcgY29uY3VycmVudCBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIGNvbmN1cnJlbnQgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgUmVxdWlyZV90aGVfYWJzY2VuY2Vfb2ZfYW1iaWd1aXR5IE5ldXRyYWxcblxudHlwZSBvbl90aGVfZmx5X2N1dF9zdGF0ZSA9IFMuUEguQi5QQi5DSS5Qby5vbl90aGVfZmx5X3N0YXRlXG5cbmxldCBvbl90aGVfZmx5X2N1dF9pbml0ID0gUy5QSC5CLlBCLkNJLlBvLmluaXRfY3V0XG5sZXQgb25fdGhlX2ZseV9jdXRfc3RlcCA9IFMuUEguQi5QQi5DSS5Qby5jdXRfc3RlcFxuXG5sZXQgb25fdGhlX2ZseV9jdXRfZmluYWxpemUgY3V0X3N0YXRlID1cbiAgZnN0IChTLlBILkIuUEIuQ0kuUG8uZmluYWxpemVfY3V0IGN1dF9zdGF0ZSlcblxubGV0IGN1dF9yZXZfdHJhY2UgcmV2X3RyYWNlID1cbiAgb25fdGhlX2ZseV9jdXRfZmluYWxpemVcbiAgICAoTGlzdC5mb2xkX2xlZnQgb25fdGhlX2ZseV9jdXRfc3RlcCBvbl90aGVfZmx5X2N1dF9pbml0IHJldl90cmFjZSlcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9laWQgdHJhY2UgPVxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIGxldCByZWMgYXV4IGwgc2NvcmUgb3V0cHV0ID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBvdXRwdXQsIHNjb3JlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB0IHRoZW4gKFxuICAgICAgICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGlmIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCB4ID49IGxhc3RfZWlkIHRoZW5cbiAgICAgICAgICAgICAgKCBMaXN0LnJldiAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSBvdXRwdXQgbCksXG4gICAgICAgICAgICAgICAgc2NvcmUgKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggcSAoc3VjYyBzY29yZSkgb3V0cHV0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eCBxIHNjb3JlICh0IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCB0cmFjZSAwIFtdIClcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbyB0cmFjZSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdF9pbmZvKVxuICAgICAgIChTb21lIFwiXFx0LSBSZW1vdmluZyBhbHJlYWR5IHZpc2l0ZWQgb2JzZXJ2YWJsZSBoaXRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBzZWVuIG9ic2VydmFibGUgaGl0c1xcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBtYXRjaCBsYXN0X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICB8IFNvbWUgbCAtPlxuICAgIGxldCBsYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcmVzdWx0IHggLT5cbiAgICAgICAgICBsZXQgbGFzdF9laWQgPSBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCBpblxuICAgICAgICAgIG1heCByZXN1bHQgbGFzdF9laWQpXG4gICAgICAgIDAgbFxuICAgIGluXG4gICAgcmVtb3ZlX29ic19iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGFzdCB0cmFjZVxuXG5sZXQgZmlsbF9zaXBob24gPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnQgUy5QSC5CLlBCLkNJLlBvLksuZmlsbF9zaXBob24pXG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBzaXBob25zXCIpIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIGRldGVjdGVkIHNpcGhvbnM6XFxuXCJcbiAgICAgICBTdG9yeVByb2ZpbGluZy5TaXBob25fZGV0ZWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBNYXlfYWRkX2FtYmlndWl0aWVzXG5cbmxldCAocmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29icyA6ICh0cmFjZSwgdHJhY2UpIHVuYXJ5KSA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuXG4gICAgICAgKG1vbmFkaWNfbGlmdFxuICAgICAgICAgIChMaXN0X3V0aWwucmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VycmVuY2UgVHJhY2Uuc3RlcF9pc19vYnMpKVxuICAgICAgIChTb21lIFwiXFx0LSByZW1vdmluZyBldmVudHMgb2NjdXJyaW5nIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBldmVudHMgYWZ0ZXIgdGhlIGxhc3Qgb2JzZXJ2YWJsZVwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgcmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyA9XG4gIGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllc1xuICAgICh0cmFuc2Zvcm1fdHJhY2VfZ2VuIFMuUEguQi5QQi5DSS5jdXRcbiAgICAgICAoU29tZSBcIlxcdC0gZGV0ZWN0aW5nIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgcHNldWRvIGludmVyc2UgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuUHNldWRvX2ludmVyc2VfZGVsZXRpb24pXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG50eXBlIGNmbG93X2dyaWQgPSBDYXVzYWwuZ3JpZFxudHlwZSBlbnJpY2hlZF9jZmxvd19ncmlkID0gQ2F1c2FsLmVucmljaGVkX2dyaWRcbnR5cGUgbXVzaWNhbF9ncmlkID0gUy5QSC5CLmJsYWNrYm9hcmRcbnR5cGUgc3RvcnlfdGFibGUgPSB7IHN0b3J5X2NvdW50ZXI6IGludDsgc3RvcnlfbGlzdDogRC50YWJsZSB9XG5cbmxldCBjb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlID0gRC5jb3VudF9zdG9yaWVzIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcblxudHlwZSBvYnNlcnZhYmxlX2hpdCA9IHtcbiAgbGlzdF9vZl9hY3Rpb25zOiBTLlBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICBsaXN0X29mX2V2ZW50czogc3RlcF9pZCBsaXN0O1xuICBydW50aW1lX2luZm86IHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uO1xufVxuXG5sZXQgZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5saXN0X29mX2V2ZW50c1xubGV0IGdldF9ydW50aW1lX2luZm9fZnJvbV9vYnNlcnZhYmxlX2hpdCBhID0gYS5ydW50aW1lX2luZm9cbmxldCBfZ2V0X2xpc3Rfb3JkZXIgYSA9IGEubGlzdF9vZl9hY3Rpb25zXG5sZXQgZXJyb3JfaW5pdCA9IEV4Y2VwdGlvbi5lbXB0eV9lcnJvcl9oYW5kbGVyXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiIHByb2ZpbGluZ19pbmZvXG4gICAgYyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gICggZXJyb3IsXG4gICAgcHJvZmlsaW5nX2luZm8sXG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9KVxuICAgICAgKExpc3QucmV2IGwpIClcblxubGV0IGV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgc3RyaW5nIGQgPVxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBsID0gUy5QSC5mb3JjZWRfZXZlbnRzIGEgYiBwcm9maWxpbmdfaW5mbyBjIGQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgWyAoYSwgYiwgYykgXSAtPlxuICAgICggZXJyb3IsXG4gICAgICBwcm9maWxpbmdfaW5mbyxcbiAgICAgIHsgbGlzdF9vZl9hY3Rpb25zID0gYTsgbGlzdF9vZl9ldmVudHMgPSBiOyBydW50aW1lX2luZm8gPSBjIH0gKVxuICB8IFtdIC0+IGZhaWx3aXRoIChzdHJpbmcgXiBcIiBubyBzdG9yeVwiKVxuICB8IF8gOjogXyAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgc2V2ZXJhbCBzdG9yaWVzXCIpXG5cbmxldCB0cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0ID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKGxpc3QsIF8pID1cbiAgICBTLnRyYW5zbGF0ZSBwIGggcHJvZmlsaW5nX2luZm8gZSBiIGxpc3RcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZV9vZl9wcmV0cmFjZSBsaXN0XG5cbmxldCBjYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RyaW5nIGJsYWNrYm9hcmQgKGVucmljaGVkX2dyaWQgOiBlbnJpY2hlZF9jZmxvd19ncmlkKVxuICAgIG9ic2VydmFibGVfaWQgPVxuICBsZXQgZWlkID1cbiAgICBtYXRjaCBnZXRfZXZlbnRfbGlzdF9mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgIHwgWyBhIF0gLT4gYVxuICAgIHwgW10gLT4gZmFpbHdpdGggKFwibm8gb2JzZXJ2YWJsZSBpbiB0aGF0IHN0b3J5XCIgXiBzdHJpbmcpXG4gICAgfCBfIC0+IGZhaWx3aXRoIChcInNldmVyYWwgb2JzZXJ2YWJsZXMgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICBpblxuICBsZXQgZXZlbnRfaWRfbGlzdCA9XG4gICAgR3JhcGhfY2xvc3VyZS5nZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5pbnRfb2Zfc3RlcF9pZCAoUy5QSC5CLlBCLmluY19zdGVwX2lkIGVpZCkpXG4gICAgICBlbnJpY2hlZF9ncmlkLkNhdXNhbC5wcmVjX3N0YXJcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgb3V0cHV0ID1cbiAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgKExpc3QucmV2X21hcCBTLlBILkIuUEIuc3RlcF9pZF9vZl9pbnQgKExpc3QucmV2IGV2ZW50X2lkX2xpc3QpKVxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dFxuXG5sZXQgZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgYSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBiXG4gICAgKHAgOiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvKSBjIGQgZSBmIGcgPVxuICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIGEgYiBwIGMgZCBlIGYgZ1xuXG5sZXQgcHJpbnRfbXVzaWNhbF9ncmlkIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwIGMgZCA9XG4gIFMuUEguQi5wcmludF9ibGFja2JvYXJkIGEgYiBwIGMgZFxuXG5sZXQgY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgaW5pdCA9XG4gICAgRC5pbml0X3RhYmxlIHBhcmFtZXRlcnMgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHsgc3RvcnlfY291bnRlciA9IDE7IHN0b3J5X2xpc3QgPSBpbml0IH1cblxubGV0IF9nZXRfdHJhY2Vfb2Zfc3RvcnkgKF8sIF8sIF8sIHksIF8pID0gdHJhY2Vfb2ZfcHJldHJhY2UgeVxubGV0IF9nZXRfaW5mb19vZl9zdG9yeSAoXywgXywgXywgXywgdCkgPSB0XG5cbmxldCB0aWNrX29wdCBwYXJhbWV0ZXIgYmFyID1cbiAgbWF0Y2ggYmFyIHdpdGhcbiAgfCBOb25lIC0+IGJhclxuICB8IFNvbWUgKGxvZ2dlciwgYmFyKSAtPlxuICAgIFNvbWVcbiAgICAgICggbG9nZ2VyLFxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGxvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGJhciApXG5cbmxldCBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IGxvZ2dlciA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXJcblxubGV0IHByaW50X2ZhaWxzIGxvZ2dlciBzIG4gPVxuICBtYXRjaCBuIHdpdGhcbiAgfCAwIC0+ICgpXG4gIHwgMSAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgMSAlcyBoYXMgZmFpbGVkQC5cIiBzXG4gIHwgXyAtPiBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiQC5cXHQgJWkgJXNzIGhhdmUgZmFpbGVkQC5cIiBuIHNcblxubGV0IGluY19mYWlscyBhIGEnIGIgPVxuICBpZiBhID09IGEnIHRoZW5cbiAgICBzdWNjIGJcbiAgZWxzZVxuICAgIGJcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfZ2VuIGxvZ2dlciBwYXJhbWV0ZXIgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgIChoYW5kbGVyIDoga2FwcGFfaGFuZGxlcikgKHByb2ZpbGluZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pIGVycm9yIHNcbiAgICAoZiA6ICh0cmFjZSwgdHJhY2VfcnVudGltZV9pbmZvIGxpc3QsICdhLCAnYSkgdGVybmFyeSkgbCBhID1cbiAgbGV0IG5fc3Rvcmllc19pbnB1dCA9IGNvdW50X3N0b3JpZXMgbCBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG5fc3Rvcmllc19pbnB1dCkgKVxuICBpblxuICBsZXQgZyBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzdG9yeSBpbmZvXG4gICAgICAoaywgcHJvZ3Jlc3NfYmFyLCBhLCBuX2ZhaWxzKSA9XG4gICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGEnID1cbiAgICAgIGYgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgICAgICh0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWl0eSBmYWxzZSBzdG9yeSlcbiAgICAgICAgaW5mbyBhXG4gICAgaW5cbiAgICBsZXQgcHJvZ3Jlc3NfYmFyID0gdGlja19vcHQgcGFyYW1ldGVyIHByb2dyZXNzX2JhciBpblxuICAgIGxldCBuX2ZhaWxzID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlscyBpblxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8gPVxuICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoc3VjYyBrLCBwcm9ncmVzc19iYXIsIGEnLCBuX2ZhaWxzKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCAoXywgXywgYSwgbl9mYWlscykgPVxuICAgIEQuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBnIGwuc3RvcnlfbGlzdFxuICAgICAgKDEsIHByb2dyZXNzX2JhciwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzIG5fZmFpbHMgaW5cbiAgZXJyb3IsIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuXG4gICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZm9sZF9zdG9yeV90YWJsZV93aXRob3V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYSA9XG4gIGZvbGRfc3RvcnlfdGFibGVfZ2VuIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlciBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGVcbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciBzIGYgbCBhXG5cbmxldCBnZXRfY291bnRlciBzdG9yeV9saXN0ID0gc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyXG5sZXQgZ2V0X3N0b3JpZXMgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfbGlzdFxuXG5sZXQgX2luY19jb3VudGVyIHN0b3J5X2xpc3QgPVxuICB7IHN0b3J5X2xpc3Qgd2l0aCBzdG9yeV9jb3VudGVyID0gc3VjYyBzdG9yeV9saXN0LnN0b3J5X2NvdW50ZXIgfVxuXG5sZXQgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlIGJvb2wgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBncmlkID0gUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCB0cmFjZSBib29sIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2dyaWQgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBncmlkXG5cbmxldCBzdG9yZV90cmFjZSAocGFyYW1ldGVyIDogcGFyYW1ldGVyKSA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBvYnNfaW5mbyBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuU3RvcmVfdHJhY2UgTm9uZSBjb21wdXRhdGlvbl9pbmZvXG4gIGluXG4gIGxldCBwcmV0cmFjZSA9IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSBpblxuICBsZXQgdHJhY2UyID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IGJvb2wgPSBub3QgKGlzX2NvbXByZXNzZWRfdHJhY2UgdHJhY2UpIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZCA9XG4gICAgYnVpbGRfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIHRyYWNlMiBib29sXG4gIGluXG4gIGxldCBjb21wdXRhdGlvbl9pbmZvID0gUC5zZXRfZ3JpZF9nZW5lcmF0aW9uIGNvbXB1dGF0aW9uX2luZm8gaW5cbiAgbGV0IHN0b3J5X2luZm8gPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gKFAuY29weSBjb21wdXRhdGlvbl9pbmZvKSlcbiAgICAgIChMaXN0LnJldiBvYnNfaW5mbylcbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV9saXN0ID1cbiAgICBELmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBjb21wdXRhdGlvbl9pbmZvIGVycm9yIGdyaWQgcHJldHJhY2VcbiAgICAgIHN0b3J5X2luZm8gc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBsZXQgc3RvcnlfdGFibGUgPVxuICAgIHsgc3RvcnlfbGlzdDsgc3RvcnlfY291bnRlciA9IHN0b3J5X3RhYmxlLnN0b3J5X2NvdW50ZXIgKyAxIH1cbiAgaW5cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuXG4gIGVycm9yLCBjb21wdXRhdGlvbl9pbmZvLCBzdG9yeV90YWJsZVxuXG5sZXQgZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHN0b3J5X3RhYmxlID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgRC5oYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfdGFibGUuc3RvcnlfbGlzdFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgc3RvcnlfdGFibGUgd2l0aCBzdG9yeV9saXN0ID0gbGlzdCB9XG5cbmxldCBjb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgY3V0IHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIFsgdHJhY2UgXVxuICB8IFNvbWUgKFN0b3J5X2pzb24uV2VhayB8IFN0b3J5X2pzb24uU3Ryb25nKSAtPlxuICAgIGxldCBldmVudCwgcyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgfCBTb21lIFN0b3J5X2pzb24uV2VhayAtPlxuICAgICAgICBTdG9yeVByb2ZpbGluZy5XZWFrX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSB3ZWFrIGNvbXByZXNzaW9uXCJcbiAgICAgIHwgXyAtPiBTdG9yeVByb2ZpbGluZy5TdHJvbmdfY29tcHJlc3Npb24sIFwiU3RhcnQgb25lIHN0cm9uZyBjb21wcmVzc2lvblwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWZcbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgIHRoZW5cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgcykpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgIFMuUEguQi5pbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgIFMuUEguZm9yY2VkX2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbGlzdF9vcmRlciA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgKGxpc3Rfb3JkZXIsIF8sIF8pIDo6IF8gLT4gbGlzdF9vcmRlclxuICAgICAgfCBfIC0+IFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0LCBsaXN0KSA9XG4gICAgICBTLmNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlclxuICAgIGluXG4gICAgbGV0IGxpc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gcHJldHJhY2UgLT5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMudHJhbnNsYXRlX3Jlc3VsdCBwcmV0cmFjZSBpblxuICAgICAgICAgIGxldCBldmVudF9saXN0ID0gUy5QSC5CLlBCLkNJLlBvLksuY2xlYW5fZXZlbnRzIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBidWlsZF9jb21wcmVzc2VkX3RyYWNlIGV2ZW50X2xpc3QgcHJldHJhY2UpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgIGlmIFMuUEguQi5pc19mYWlsZWQgb3V0cHV0IHRoZW5cbiAgICAgICAgRXhjZXB0aW9uLndhcm5cbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiT25lIGNvbXByZXNzaW9uIGhhcyBmYWlsZWRcIiBFeGl0ICgpXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCAoKVxuICAgIGluXG4gICAgbGV0IGVycm9yID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgIFwiXFx0XFx0ICogcmVzdWx0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgIFMuUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBcIkZBSUxcIiAwIDAgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICAgICAgXCJGYWlsX3RvX2NvbXByZXNzXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiU3VjY2VlZF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yXG4gICAgICApIGVsc2VcbiAgICAgICAgZXJyb3JcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG5sZXQgc3Ryb25nbHlfY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgPVxuICBjb21wcmVzcyA/aGV1cmlzdGljIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl9zdHJvbmcgcGFyYW1ldGVyKVxuXG5sZXQgd2Vha2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXIpXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyID1cbiAgbGV0IGV2ZW50X2xpc3QgPSBnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSBpblxuICBTLlBILkIuUEIuQ0kuUG8uSy5idWlsZF9ncmlkIGV2ZW50X2xpc3RcbiAgICAobm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSlcbiAgICBoYW5kbGVyXG5cbmxldCBjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGthcHBhX2hhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIFMuUEguQi5pbXBvcnQgcGFyYW1ldGVycyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yXG4gICAgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSlcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZyBsb2dnZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIGdyaWQgPVxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgIENhdXNhbC5lbnJpY2hfZ3JpZFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBsb2dnZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZyBncmlkXG4gIGluXG4gIGVycm9yLCBsb2dfaW5mbywgb3V0cHV0XG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX29ic2VydmFibGVzX3dpdGhvdXRfYV9wcm9ncmVzc19iYXIgPVxuICBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZVxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRob3V0X3Byb2dyZXNzX2JhclxuXG5sZXQgX2VucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYXN0X29mX2VhY2hfbm9kZV93aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmUgR3JhcGhfY2xvc3VyZS5jb25maWdfc21hbGxfZ3JhcGhcblxubGV0IHNvcnRfc3RvcnlfbGlzdCA9IEQuc29ydF9saXN0XG5cbmxldCBleHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB4ID1cbiAgbGV0IGEsIGxvZ19pbmZvLCBiID1cbiAgICBzb3J0X3N0b3J5X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgKGdldF9zdG9yaWVzIHgpXG4gIGluXG4gIGEsIGxvZ19pbmZvLCBiXG5cbmxldCBoYXNfb2JzIHggPSBMaXN0LmV4aXN0cyBUcmFjZS5zdGVwX2lzX29icyAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHgpXG5cbmxldCBmb2xkX2xlZnRfd2l0aF9wcm9ncmVzc19iYXIgPyhldmVudCA9IFN0b3J5UHJvZmlsaW5nLkR1bW15KSBwYXJhbWV0ZXJcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbClcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID0gd2Vfc2hhbGwpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGwpIGhhbmRsZXIgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yXG4gICAgKGYgOiAoJ2EsICdiLCAnYSkgYmluYXJ5KSBhIGxpc3QgPVxuICBsZXQgbiA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN0cmluZywgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24pID1cbiAgICBpZiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmlzX2R1bW15IGV2ZW50IHRoZW5cbiAgICAgIFwiXCIsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKVxuICAgIGVsc2VcbiAgICAgICggU3RvcnlQcm9maWxpbmcuc3RyaW5nX29mX3N0ZXBfa2luZCBldmVudCxcbiAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAgIChTb21lIChmdW4gXyAtPiBMaXN0Lmxlbmd0aCBsaXN0KSlcbiAgICAgICAgICBwcm9maWxpbmdfaW5mb3JtYXRpb24gKVxuICBpblxuICBsZXQgcHJvZ3Jlc3NfYmFyID1cbiAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAoZmFsc2UsIDAsIDAsIG4pXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBfLCBfLCBhLCBuX2ZhaWwgPVxuICAgIGxldCByZWMgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsKSA9XG4gICAgICBsZXQgZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5TdG9yeSBrIGluXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrLCBhLCBuX2ZhaWxcbiAgICAgIHwgeCA6OiB0YWlsIC0+XG4gICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICBQLmFkZF9ldmVudFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYScgPVxuICAgICAgICAgICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZVxuICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiB+cHJpbnRfaWZfemVybyBoYW5kbGVyXG4gICAgICAgICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIGVycm9yIGEgeFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiYXIgPVxuICAgICAgICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIGJhclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX2ZhaWwgPSBpbmNfZmFpbHMgYSBhJyBuX2ZhaWwgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZSAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgYmFyLCBrICsgMSwgYScsIG5fZmFpbClcbiAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXRwdXRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICAgUC5jbG9zZV9ldmVudFxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEsIG5fZmFpbFxuICAgICAgICB8IFNvbWUgcmVtYW5lbnQgLT4gYXV4IHRhaWwgcmVtYW5lbnQpXG4gICAgaW5cbiAgICBhdXggbGlzdCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgcHJvZ3Jlc3NfYmFyLCAxLCBhLCAwKVxuICBpblxuICBsZXQgKCkgPSBjbG9zZV9wcm9ncmVzc19iYXJfb3B0IChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgZWxzZVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfZmFpbHMgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyciBzdHJpbmcgbl9mYWlsIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGFcblxubGV0IF9mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3Rocm91Z2hfYV9ncmlkX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBmIHQgYSA9XG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyIGdyaWQgZiAoZXJyb3IsIGxvZ19pbmZvLCBhKVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlclxuICAgID9zaGFsbF93ZV9jb21wdXRlOl8gP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbG9nX3N0ZXAgZGVidWdfbW9kZSBjb3VudGVyIGYgdCBhID1cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBibGFja2JvYXJkIGdlbmVyYXRpb24gQC5cIlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdFxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICBleHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgIGVycm9yIGJsYWNrYm9hcmRcbiAgaW5cbiAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2dfc3RlcCBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0LSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgIG5fc3Rvcmllc1xuICBpblxuICAoKiBnZW5lcmF0aW9uIG9mIHVuY29tcHJlc3NlZCBzdG9yaWVzICopXG4gIGxldCAoKSA9XG4gICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBsb2dfaW5mbyA9IFAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluXG4gIGxldCBncmlkID0gY29udmVydF90cmFjZV9pbnRvX2dyaWQgdCBoYW5kbGVyIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIENhdXNhbC5mb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG4gICAgICBncmlkXG4gICAgICAoZnVuIHBhcmFtZXRlcicgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvYnNlcnZhYmxlX2hpdCBjYXVzYWxfcGFzdFxuICAgICAgICAgICAoY291bnRlciwgbGlzdCwgYSkgLT5cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIsIGxpc3QsIGEpXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXInIGVycm9yXG4gICAgICAgICAgICAgIChTdG9yeVByb2ZpbGluZy5TdG9yeSBjb3VudGVyKSBOb25lIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZV9pZCA9IGhlYWQgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPSBQLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHBhcmFtZXRlciB0aGVuXG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQqIGNhdXNhbCBjb21wcmVzc2lvbiBcIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSB0cmFuc2xhdGUgdGhlIGxpc3Qgb2YgZXZlbnQgaWRzIGludG8gYSB0cmFjZSB0aGFua3MgdG8gdGhlIGJsYWNrYm9hZCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgIHRyYW5zbGF0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50XG4gICAgICAgICAgICAgICAgIChvYnNlcnZhYmxlX2hpdCA6OiBjYXVzYWxfcGFzdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiB3ZSBjb2xsZWN0IHJ1biB0aW1lIGluZm8gYWJvdXQgdGhlIG9ic2VydmFibGUgKilcbiAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICBtYXRjaCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgIHwgU29tZSBpbmZvIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICB7IGluZm8gd2l0aCBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjb3VudGVyIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm8gaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYSA9XG4gICAgICAgICAgICAoZiA6ICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mbyBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAoY291bnRlciArIDEsIHRhaWwsIGEpKVxuICAgICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChiLCBjb3VudGVyKSlcbiAgICAgICAgICAgICAgYSApKVxuICAgICAgKGNvdW50ZXIsIExpc3QucmV2IGxpc3QsIGEpXG4gIGluXG4gIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoXywgXywgYSkpIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIGEpXG4gICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAoYSwgY291bnRlcikpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAoYSwgY291bnRlcikpXG4gICAgb3V0cHV0XG5cbmxldCBjb3B5X2xvZ19pbmZvID0gUC5jb3B5XG5cbnR5cGUgY2Fub25pY2FsX2Zvcm0gPSBEYWcuY2Fub25pY2FsX2Zvcm1cblxubGV0IGNvbXBhcmVfY2Fub25pY2FsX2Zvcm0gPSBEYWcuY29tcGFyZV9jYW5vbmljXG5cbmxldCBjb21wdXRlX2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgdHJhY2UgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHRyYWNlIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgZ3JhcGggPVxuICAgIERhZy5ncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fub25pYyA9XG4gICAgRGFnLmNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICBpblxuICAoZXJyb3IgOiBlcnJvcl9sb2cpLCAobG9nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIChjYW5vbmljIDogY2Fub25pY2FsX2Zvcm0pXG5cbm1vZHVsZSBFdmVudCA6IEJsYWNrX2xpc3QuRXZlbnQgd2l0aCB0eXBlIGV2ZW50ID0gc3RlcCA9IHN0cnVjdFxuICB0eXBlIGV2ZW50ID0gc3RlcFxuICB0eXBlIGVpZCA9IGludFxuICB0eXBlICdhIHQgPSAnYSBhcnJheVxuXG4gIGxldCBrZXlfb2ZfZXZlbnQgZXZlbnQgPVxuICAgIGlmXG4gICAgICAoVHJhY2Uuc3RlcF9pc19ydWxlIGV2ZW50IHx8IFRyYWNlLnN0ZXBfaXNfcGVydCBldmVudClcbiAgICAgICYmIG5vdCAoVHJhY2UuaGFzX2NyZWF0aW9uX29mX3N0ZXAgZXZlbnQpXG4gICAgdGhlblxuICAgICAgZ2V0X2lkX29mX2V2ZW50IGV2ZW50XG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCBpbml0IGVpZCBkZWZhdWx0ID0gQXJyYXkubWFrZSBlaWQgZGVmYXVsdFxuXG4gIGxldCBzZXQgdCBlaWQgdmFsdWUgPVxuICAgIGxldCAoKSA9IEFycmF5LnNldCB0IGVpZCB2YWx1ZSBpblxuICAgIHRcblxuICBsZXQgZ2V0IHQgZWlkID0gQXJyYXkuZ2V0IHQgZWlkXG5lbmRcblxubW9kdWxlIEJsYWNrTGlzdCA6IEJsYWNrX2xpc3QuQmxhY2tsaXN0IHdpdGggdHlwZSBFdmVudC5ldmVudCA9IHN0ZXAgPVxuQmxhY2tfbGlzdC5NYWtlICgoRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXApKVxuXG50eXBlIGJsYWNrX2xpc3QgPSBCbGFja0xpc3QudFxuXG5sZXQgY3JlYXRlX2JsYWNrX2xpc3QgbiA9IEJsYWNrTGlzdC5pbml0IG5cblxubGV0IGJsYWNrX2xpc3QgX3BhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBfaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlIGJsYWNrbGlzdCA9XG4gIGxldCBibGFja2xpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJsYWNrbGlzdCAoZXZlbnQsIF8pIC0+IEJsYWNrTGlzdC5ibGFja19saXN0IGV2ZW50IGJsYWNrbGlzdClcbiAgICAgIGJsYWNrbGlzdFxuICAgICAgKGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlKVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdFxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrbGlzdCB0cmFjZSA9XG4gIGxldCBsaXN0LCBpbnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuICh0cmFjZSwgaW50KSBldmVudCAtPlxuICAgICAgICBpZiBCbGFja0xpc3QuaXNfYmxhY2tfbGlzdGVkIGV2ZW50IGJsYWNrbGlzdCB0aGVuXG4gICAgICAgICAgdHJhY2UsIHN1Y2MgaW50XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBldmVudCA6OiB0cmFjZSwgaW50KVxuICAgICAgKFtdLCAwKSB0cmFjZVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChMaXN0LnJldiBsaXN0LCBpbnQpXG5cbmxldCByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gX3BhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIC0+XG4gICAgICAgICByZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QpXG4gICAgICAgTm9uZSBcIlwiIFN0b3J5UHJvZmlsaW5nLlJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50cylcbiAgICBEb19ub3RfY2FyZSBOZXV0cmFsIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG5cbmxldCBsYXN0X2VpZF9pbl9wcmV0cmFjZSB0cmFjZSA9XG4gIGxldCBsID0gTGlzdC5yZXYgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSkgaW5cbiAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gMFxuICAgIHwgaCA6OiB0IC0+XG4gICAgICAobWF0Y2ggZ2V0X2lkX29mX2V2ZW50IGggd2l0aFxuICAgICAgfCBOb25lIC0+IGF1eCB0XG4gICAgICB8IFNvbWUgZWlkIC0+IGVpZClcbiAgaW5cbiAgYXV4IGxcblxubGV0IHBvcF9qc29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wb3BfanNvblxuXG5sZXQgcHJvZmlsaW5nX3N0YXRlX3RvX2pzb24gcGFyYW1ldGVycyA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9maWxpbmcgaW5mb3JtYXRpb25cIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgZXJyb3JfbGlzdF90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiZXJyb3JzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVycykgKTtcbiAgICBdXG5cbmxldCBjb21wdXRhdGlvbl9zdGVwc190b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY29tcHV0YXRpb24gc3RlcHNcIixcbiAgICAgICAgTG9nZ2Vycy50b19qc29uIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgKTtcbiAgICBdXG4iLCIoKipcbiAqIHV0aWxpdGllcy5tbFxuICpcbiAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNS0wMy0yOCBmZXJldD5cbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxMToyODowNSBmZXJldD5cbiAqXG4gKiBBUEkgZm9yIGNhdXNhbCBjb21wcmVzc2lvbiAoZm9yIGV4cGVydClcbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IF8gPSBkZWJ1Z19tb2RlXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZzogaW50O1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGdsb2JhbF90aW1lX2ZhY3Rvcl9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWF4OiBpbnQgb3B0aW9uO1xuICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW46IGZsb2F0IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBwYXJhbWV0ZXJzID1cbiAge1xuICAgIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmcgPSAxMDtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWluID0gU29tZSA1LjtcbiAgICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4ID0gU29tZSAyMC47XG4gICAgdHJhY2VfYmVmb3JlX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9taW4gPSBTb21lIDEwO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWF4ID0gU29tZSA1MDA7XG4gICAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgMTAuO1xuICAgIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgNTAwLjtcbiAgfVxuXG50eXBlIHN0YXR1c19nbG9iYWwgPSB7XG4gIGNvdW50ZXJfbWluOiBpbnQ7XG4gIGdsb2JhbF90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfbWluOiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21heDogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9yZWY6IGZsb2F0IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9taW46IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4OiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZjogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZjogaW50IG9wdGlvbjtcbn1cblxudHlwZSBzdGF0dXMgPSB7XG4gIGNvdW50ZXI6IGludDtcbiAgZ2xvYmFsX3RpbWU6IGZsb2F0O1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlOiBpbnQ7XG4gIHRyYWNlX2xlbmd0aF9hZnRlcjogaW50O1xuICBjcHVfdGltZTogZmxvYXQ7XG59XG5cbmxldCBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlID1cbiAge1xuICAgIGNvdW50ZXI7XG4gICAgZ2xvYmFsX3RpbWUgPSBTeXMudGltZSAoKTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgdHJhY2U7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyID0gMDtcbiAgICBjcHVfdGltZSA9IDAuO1xuICB9XG5cbmxldCBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgPVxuICB7XG4gICAgc3RhdHVzX2JlZm9yZSB3aXRoXG4gICAgY3B1X3RpbWUgPSBTeXMudGltZSAoKSAtLiBzdGF0dXNfYmVmb3JlLmdsb2JhbF90aW1lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICB9XG5cbmxldCBjbXBfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiAwXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gY21wIGEgYlxuXG5sZXQgY21wX2Zsb2F0X29wdCA9IGNtcF9vcHQgKGNvbXBhcmUgOiBmbG9hdCAtPiBmbG9hdCAtPiBpbnQpXG5sZXQgY21wX2ludF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG5cbmxldCBnZW5fYmluX29wdCBvcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gU29tZSAob3AgYSBiKVxuXG5sZXQgYWRkX2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKy4gKVxubGV0IG11bHRfZmxvYXRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqLiApXG5sZXQgbXVsdF9pbnRfb3B0ID0gZ2VuX2Jpbl9vcHQgKCAqIClcblxubGV0IG1heF9vcHQgY21wIGEgYiA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gU29tZSBiXG4gIHwgU29tZSBhIC0+XG4gICAgU29tZVxuICAgICAgKGlmIGNtcCBhIGIgPiAwIHRoZW5cbiAgICAgICAgIGFcbiAgICAgICBlbHNlXG4gICAgICAgICBiKVxuXG5sZXQgc3RvcF9iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc3RvcF9hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgc3RhdHVzLmNvdW50ZXIgPiBnbG9iYWwuY291bnRlcl9taW5cbiAgJiYgKGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmdsb2JhbF90aW1lKSBnbG9iYWwuZ2xvYmFsX3RpbWVfbWF4ID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4XG4gICAgICAgID4gMFxuICAgICB8fCBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9mbG9hdF9vcHQgKFNvbWUgc3RhdHVzLmNwdV90aW1lKSBnbG9iYWwuY3B1X3RpbWVfbWluID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmUpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfbWluXG4gICAgICAgICAgID49IDBcbiAgICAgICAgJiYgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21pblxuICAgICAgICAgICA+PSAwKVxuXG5sZXQgc2V0X3N0YXR1c19pbml0IGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBmbG9hdDEgZmxvYXQyIGNvdW50ZXIgPVxuICB7XG4gICAgY291bnRlcl9taW4gPSBjb3VudGVyICsgcGFyYW1ldGVycy5pdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nO1xuICAgIGdsb2JhbF90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWluKSk7XG4gICAgZ2xvYmFsX3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIGFkZF9mbG9hdF9vcHQgKFNvbWUgZmxvYXQyKVxuICAgICAgICAgICAobXVsdF9mbG9hdF9vcHRcbiAgICAgICAgICAgICAgKFNvbWUgKGZsb2F0MiAtLiBmbG9hdDEpKVxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdsb2JhbF90aW1lX2ZhY3Rvcl9tYXgpKTtcbiAgICBjcHVfdGltZV9taW4gPSBOb25lO1xuICAgIGNwdV90aW1lX21heCA9IE5vbmU7XG4gICAgY3B1X3RpbWVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID0gTm9uZTtcbiAgfVxuXG5sZXQgdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsIHN0YXR1cyA9XG4gIGlmIHN0YXR1cy5jb3VudGVyIDwgZ2xvYmFsLmNvdW50ZXJfbWluIHRoZW5cbiAgICB7XG4gICAgICBnbG9iYWwgd2l0aFxuICAgICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgICAgc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCB1cGRhdGVfc3RhdHVzX2FmdGVyIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgPVxuICAgICAgICBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWYgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcjtcbiAgICAgIGNwdV90aW1lX3JlZiA9IG1heF9vcHQgY29tcGFyZSBnbG9iYWwuY3B1X3RpbWVfcmVmIHN0YXR1cy5jcHVfdGltZTtcbiAgICB9XG4gIGVsc2VcbiAgICBnbG9iYWxcblxubGV0IGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlciBnbG9iYWxfc3RhdHVzID1cbiAge1xuICAgIGdsb2JhbF9zdGF0dXMgd2l0aFxuICAgIGNwdV90aW1lX21pbiA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBtdWx0X2Zsb2F0X29wdCBnbG9iYWxfc3RhdHVzLmNwdV90aW1lX3JlZlxuICAgICAgICAgICBwYXJhbWV0ZXIuY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluKTtcbiAgICBjcHVfdGltZV9tYXggPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2JlZm9yZV9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21heDtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcl9yZWZcbiAgICAgICAgcGFyYW1ldGVyLnRyYWNlX2FmdGVyX2ZhY3Rvcl9taW47XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWF4O1xuICB9XG5cbmxldCBmb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6X1xuICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGxcbiAgICBuZXZlciBwYXJhbWV0ZXJzIGdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiBmXG4gICAgKHN0b3JlX3Jlc3VsdCA6XG4gICAgICAoIFV0aWxpdGllcy50cmFjZSxcbiAgICAgICAgVXRpbGl0aWVzLnRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LFxuICAgICAgICAnYSxcbiAgICAgICAgJ2EgKVxuICAgICAgVXRpbGl0aWVzLnRlcm5hcnkpIHRyYWNlICh0YWJsZSA6ICdhKSA9XG4gIGxldCBmIGNmbG93X3BhcmFtZXRlcnMgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyXG4gICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAobGFzdF9pbmZvLCBzdG9wX25leHQsIGdsb2JhbF9zdGF0dXMsIGNvdW50ZXIsIHRhYmxlKSA9XG4gICAgaWYgc3RvcF9uZXh0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdG9wIChsYXN0X2luZm8sIHRhYmxlKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXR1c19iZWZvcmUgPSBnZXRfc3RhdHVzX2JlZm9yZSBjb3VudGVyIHRyYWNlIGluXG4gICAgICBsZXQgc3RvcCA9IHN0b3BfYmVmb3JlIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2JlZm9yZSBpblxuICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPSB1cGRhdGVfc3RhdHVzX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgZiBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0YXR1c19hZnRlciA9IGdldF9zdGF0dXNfYWZ0ZXIgc3RhdHVzX2JlZm9yZSB0cmFjZSBpblxuICAgICAgICBsZXQgc3RvcCA9IHN0b3BfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICAgIHN0b3JlX3Jlc3VsdCBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3IgdHJhY2UgaW5mbyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9pbmZvID0gU29tZSBpbmZvIGluXG4gICAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWxfc3RhdHVzIHN0YXR1c19hZnRlciBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9XG4gICAgICAgICAgaWYgY291bnRlciA9IGdsb2JhbF9zdGF0dXMuY291bnRlcl9taW4gdGhlblxuICAgICAgICAgICAgY29tcHV0ZV9zdGF0dXNfcmFuZ2VzIGNmbG93X3BhcmFtZXRlcnMgcGFyYW1ldGVycyBnbG9iYWxfc3RhdHVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2xvYmFsX3N0YXR1c1xuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIFN0b3Auc3VjY2VzcyAobGFzdF9pbmZvLCBzdG9wLCBnbG9iYWxfc3RhdHVzLCBzdWNjIGNvdW50ZXIsIHRhYmxlKSApXG4gICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlID1cbiAgICBpZiBVdGlsaXRpZXMuaGFzX29icyB0cmFjZSB0aGVuIChcbiAgICAgIGxldCBzdGFydF9pdGVyYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIHRyeSBTb21lIChnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gMCAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkpXG4gICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICBtYXRjaCBvdXRwdXQgd2l0aFxuICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgICAgIHwgU29tZSAoZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSkgLT5cbiAgICAgICAgbGV0IGVuZF9zaW1wbGlmaWNhdGlvbiA9IFN5cy50aW1lICgpIGluXG4gICAgICAgIGxldCBzdGF0dXMgPVxuICAgICAgICAgIHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgc3RhcnRfaXRlcmF0aW9uXG4gICAgICAgICAgICBlbmRfc2ltcGxpZmljYXRpb24gY291bnRlclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXQgPVxuICAgICAgICAgIFV0aWxpdGllcy5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgIGNmbG93X3BhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICBlcnJvciB3ZV9zaGFsbCBuZXZlciBjb3VudGVyIGYgdHJhY2VcbiAgICAgICAgICAgIChOb25lLCBmYWxzZSwgc3RhdHVzLCBjb3VudGVyLCB0YWJsZSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAgICAgICAoZnVuIChfLCBfLCBfLCBfLCBvdXRwdXQpIC0+IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0KVxuICAgICAgICAgIChmdW4gKChsYXN0X2luZm8sIHRhYmxlKSwgY291bnRlcikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgVXRpbGl0aWVzLnJlbW92ZV9vYnNfYmVmb3JlIGNmbG93X3BhcmFtZXRlcnMgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIGxhc3RfaW5mbyB0cmFjZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBjb3VudGVyIHRyYWNlIHRhYmxlKVxuICAgICAgICAgIG91dHB1dFxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZVxuICBpblxuICBhdXggbG9nX2luZm8gZXJyb3IgMSB0cmFjZSB0YWJsZVxuIiwiKCpcbiAgKiBjZmxvd19qc19pbnRlcmZhY2UubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wNC0zMCAxODozNDowMCBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDQtMzAgMTg6MjQ6MDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIEphdmEtc2NyaXB0IHNlcnZlclxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlblxuICAqIEluZm9ybWF0aXF1ZSBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXNcbiAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBjZmxvd19zdGF0ZSA9IHtcbiAgc3RkX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgZXJyX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgcHJvZmlsaW5nX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgc3RhdHVzX2xvZ2dlcjogTG9nZ2Vycy50IG9wdGlvbjtcbiAgY3VycmVudF9waGFzZTogc3RyaW5nIG9wdGlvbjtcbiAgcHJvZ3Jlc3NfYmFyOiAoYm9vbCAqIGludCAqIGludCAqIGludCkgb3B0aW9uO1xuICBjYXVzYWxfZmxvd3M6IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHRyaXZpYWxfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHdlYWtfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIHN0cm9uZ19jb21wcmVzc2lvbjogVXRpbGl0aWVzLnN0b3J5X3RhYmxlIG9wdGlvbjtcbiAgZXJyb3JfbGlzdDogVXRpbGl0aWVzLmVycm9yX2xvZyBvcHRpb247XG59XG5cbmxldCBpbml0ICgpID1cbiAgcmVmXG4gICAge1xuICAgICAgc3RkX2xvZ2dlciA9IE5vbmU7XG4gICAgICBlcnJfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHByb2ZpbGluZ19sb2dnZXIgPSBOb25lO1xuICAgICAgc3RhdHVzX2xvZ2dlciA9IE5vbmU7XG4gICAgICBjdXJyZW50X3BoYXNlID0gTm9uZTtcbiAgICAgIHByb2dyZXNzX2JhciA9IE5vbmU7XG4gICAgICBjYXVzYWxfZmxvd3MgPSBOb25lO1xuICAgICAgdHJpdmlhbF9jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICB3ZWFrX2NvbXByZXNzaW9uID0gTm9uZTtcbiAgICAgIHN0cm9uZ19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBlcnJvcl9saXN0ID0gTm9uZTtcbiAgICB9XG5cbmxldCBnZXRfc3RkX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0ZF9sb2dnZXJcbmxldCBnZXRfZXJyX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmVycl9sb2dnZXJcbmxldCBnZXRfcHJvZmlsaW5nX2J1ZmZlciBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnByb2ZpbGluZ19sb2dnZXJcbmxldCBnZXRfYnJhbmNoX2FuZF9jdXRfc3RhdHVzIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3RhdHVzX2xvZ2dlclxubGV0IGdldF9wcm9ncmVzc19iYXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9ncmVzc19iYXJcbmxldCBnZXRfY3VycmVudF9waGFzZV90aXRsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLmN1cnJlbnRfcGhhc2VcbmxldCBnZXRfY2F1c2FsX2Zsb3dfdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jYXVzYWxfZmxvd3NcbmxldCBnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnRyaXZpYWxfY29tcHJlc3Npb25cbmxldCBnZXRfd2Vha19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLndlYWtfY29tcHJlc3Npb25cbmxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuc3Ryb25nX2NvbXByZXNzaW9uXG5sZXQgZ2V0X2Vycm9yX2xpc3QgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJvcl9saXN0XG5cbmxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciBzdHJpbmcgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBjdXJyZW50X3BoYXNlID0gU29tZSBzdHJpbmcgfVxuXG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXggY2Zsb3dfc3RhdGVfcHRyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciBiYXIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBTb21lIGJhciB9XG5cbmxldCByZXNldF9wcm9ncmVzc19iYXJfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2dyZXNzX2JhciA9IE5vbmUgfVxuXG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY2F1c2FsX2Zsb3dzID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHRyaXZpYWxfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXggY2Zsb3dfc3RhdGVfcHRyIHRhYmxlID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggd2Vha19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0cm9uZ19jb21wcmVzc2lvbiA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV9lcnJvcl9sb2dfYXV4IGNmbG93X3N0YXRlX3B0ciBlcnJvciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGVycm9yX2xpc3QgPSBTb21lIGVycm9yIH1cblxubGV0IHJlZGlyZWN0X3N0ZF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RkX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHByb2ZpbGluZ19sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdGF0dXNfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCBsaWZ0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCBkYXRhID1cbiAgbWF0Y2ggY2Zsb3dfc3RhdGVfcHRyX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY2Zsb3dfc3RhdGVfcHRyIC0+IGNmbG93X3N0YXRlX3B0ciA6PSBmIGNmbG93X3N0YXRlX3B0ciBkYXRhXG5cbmxldCBsaWZ0X3Jlc2V0IGYgY2Zsb3dfc3RhdGVfcHRyX29wdCA9XG4gIGxpZnQgKGZ1biB4ICgpIC0+IGYgeCkgY2Zsb3dfc3RhdGVfcHRyX29wdCAoKVxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlID0gbGlmdCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnRfcmVzZXQgcmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXhcbmxldCBzYXZlX3Byb2dyZXNzX2JhciA9IGxpZnQgc2F2ZV9wcm9ncmVzc19iYXJfYXV4XG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyID0gbGlmdF9yZXNldCByZXNldF9wcm9ncmVzc19iYXJfYXV4XG5sZXQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZSA9IGxpZnQgc2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXhcbmxldCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZV9hdXhcbmxldCBzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSA9IGxpZnQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9lcnJvcl9saXN0ID0gbGlmdCBzYXZlX2Vycm9yX2xvZ19hdXhcbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlcl9hdXhcbiIsIigqKlxuICAqIGNvbXByZXNzaW9uX21haW4ubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMS0xMC0xOSAxNjo1Mjo1NSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDYtMTAgMTE6MTA6MzQgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSmVyb21lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0ZSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgVSA9IFV0aWxpdGllc1xubW9kdWxlIFMgPSBVLlNcblxudHlwZSBzZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG5cbmxldCBpbml0X3NlY3JldF9sb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5pdF9sb2dfaW5mb1xuXG50eXBlIHNlY3JldF9wYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnBhcmFtZXRlclxuXG5sZXQgYnVpbGRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5idWlsZF9wYXJhbWV0ZXJcbmxldCBnZXRfbG9nZ2VyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyXG5sZXQgbG9nX3N0ZXAgPSB0cnVlXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgZHVtcF9wcm9maWxpbmdfaW5mbyA9IHRydWVcbmxldCBfID0gZHVtcF9wcm9maWxpbmdfaW5mb1xubGV0IGJ1Y2tldF9zb3J0ID0gdHJ1ZVxuXG4oKiogZmFsc2UgLT4gb25seSB0aGUgZmlyc3Qgc3RvcnkgcGVyIG9ic2VydmFibGUgaGl0OyB0cnVlIC0+IGFsbCBzdG9yaWVzIHBlciBvYnMgaGl0ICopXG5sZXQgZ2V0X2FsbF9zdG9yaWVzID0gZmFsc2VcblxubGV0IG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgPSBOb25lXG5sZXQgd2Vfc2hhbGxfbm90IF8gPSBmYWxzZVxubGV0IHdlX3NoYWxsIF8gPSB0cnVlXG5sZXQgZG9fbm90X2xvZyBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgZmFsc2VcblxubGV0IGNvbXByZXNzX2FuZF9wcmludCBwYXJhbWV0ZXIgfmRvdEZvcm1hdCA/anNfaW50ZXJmYWNlIGVudiBsb2dfaW5mbyBzdGVwX2xpc3RcbiAgICA9XG4gICgqbGV0IGNhbGxlZF9mcm9tID0gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIGluKilcbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2xvZ19zdGVwIHBhcmFtZXRlciBsb2dfc3RlcCBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfZGVidWdnaW5nX21vZGUgcGFyYW1ldGVyIGRlYnVnX21vZGUgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggbWF4X251bWJlcl9vZl9pdHRlcmF0aW9ucyB3aXRoXG4gICAgfCBOb25lIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIHBhcmFtZXRlclxuICAgIHwgU29tZSBpIC0+IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgaWYgZ2V0X2FsbF9zdG9yaWVzIHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGJ1Y2tldF9zb3J0IHRoZW5cbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudXNlX2Z1c2lvbl9zb3J0IHBhcmFtZXRlclxuICBpblxuICBsZXQgbW9kZSA9IHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmNvbXByZXNzaW9uX21vZGUgaW5cbiAgbGV0IGNhdXNhbF90cmFjZV9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2NhdXNhbF90cmFjZSBtb2RlIGluXG4gIGxldCB3ZWFrX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfd2Vha19jb21wcmVzc2lvbiBtb2RlIGluXG4gIGxldCBzdHJvbmdfY29tcHJlc3Npb25fb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zdHJvbmdfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgZXJyb3IgPSBVLmVycm9yX2luaXQgaW5cbiAgbGV0IGhhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmluaXRfaGFuZGxlciBlbnYgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBcIlN0YXJ0aW5nIENvbXByZXNzaW9uXCIpKVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTEgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTQgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2NhdXNhbF9mbG93X3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTEgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgaW5cbiAgbGV0ICgpID0gQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUzIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZSB0YWJsZTRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3Rfc3RkX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfZXJyX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5yZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3Byb2ZpbGluZ19sb2dnZXIgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyIGpzX2ludGVyZmFjZVxuICAgICAgKFNvbWVcbiAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9jb21wcmVzc2lvbl9zdGF0dXNfbG9nZ2VyXG4gICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpKVxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBqc19pbnRlcmZhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgX2pzX2ludGVyZmFjZV9wdHIgLT5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gcyAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSBqc19pbnRlcmZhY2UgcylcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlKVxuICAgICAgaW5cbiAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICAgICAgICAoQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2UucmVzZXRfcHJvZ3Jlc3NfYmFyIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9lcnJvcl9sb2cgcGFyYW1ldGVyIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2Vycm9yX2xpc3QganNfaW50ZXJmYWNlIGVycm9yKVxuICAgICAgaW5cbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fbm9uZSBwYXJhbWV0ZXIgaW5cbiAgbGV0IHBhcmFtZXRlcl9jYXVzYWwgPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl93ZWFrID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyX3N0cm9uZyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlclxuICBpblxuXG4gIGxldCBlbXB0eV9jb21wcmVzc2lvbiA9IGVycm9yLCBsb2dfaW5mbywgdGFibGUxLCB0YWJsZTIsIHRhYmxlMywgdGFibGU0IGluXG4gIGxldCBzdGVwX2xpc3QgPSBVLnRyYWNlX29mX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWwsIF90cml2aWFsLCB3ZWFrLCBzdHJvbmcgPVxuICAgIGlmXG4gICAgICAobm90IGNhdXNhbF90cmFjZV9vbikgJiYgKG5vdCB3ZWFrX2NvbXByZXNzaW9uX29uKVxuICAgICAgJiYgbm90IHN0cm9uZ19jb21wcmVzc2lvbl9vblxuICAgIHRoZW5cbiAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICBVLnJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBzdGVwX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBub3QgKFUuaGFzX29icyBzdGVwX2xpc3QpIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIisgTm8gY2F1c2FsIGZsb3cgZm91bmRALlwiXG4gICAgICAgIGluXG4gICAgICAgIGVtcHR5X2NvbXByZXNzaW9uXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAoaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgICAgXCIrIFByb2R1Y2luZyBjYXVzYWwgY29tcHJlc3Npb25zQC5cIlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIHRyYWNlc0AuXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsYXN0X2VpZCA9IFUubGFzdF9laWRfaW5fcHJldHJhY2Ugc3RlcF9saXN0IGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgVS5zcGxpdF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICBpblxuICAgICAgICAoKiBjYXVzYWwgY29tcHJlc3Npb24gd2l0aG91dCBhbnkgc2ltcGxpZmljYXRpb24gKGp1c3QgcGFydGlhbCBvcmRlciBjb21wcmVzc2lvbikqKVxuICAgICAgICAoKiB0aGlzIGlzIHZlcnkgY29zdGx5LCBhbmQgbWFpbmx5IGZvciB0ZWFjaGluZyBwdXJwb3NlICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF90YWJsZSA9XG4gICAgICAgICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBibGFja2JvYXJkIGdlbmVyYXRpb25ALlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgICAgICAgVS5tYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBVLmNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgZXJyb3Igc3RlcF9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSAmJiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gcHJldHR5IHByaW50aW5nIHRoZSBncmlkQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbywgZXJyb3IgPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUuZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgXCJhXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIFUucHJpbnRfbXVzaWNhbF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLCBlcnJvclxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgVS5leHRyYWN0X29ic2VydmFibGVfaGl0c19mcm9tX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG5fc3RvcmllcyA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjb21wdXRpbmcgY2F1c2FsIHBhc3Qgb2YgZWFjaCBvYnNlcnZlZCBldmVudHMgKCVpKUAuXCJcbiAgICAgICAgICAgICAgICAgIG5fc3Rvcmllc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKlx0XHRsZXQgbG9nX2luZm8gPSBVLlMuUEguQi5QQi5DSS5Qby5LLlAuc2V0X3N0YXJ0X2NvbXByZXNzaW9uIGxvZ19pbmZvIGluICopXG4gICAgICAgICAgICAgICgqIFdlIHVzZSB0aGUgZ3JpZCB0byBnZXQgdGhlIGNhdXNhbCBwcmVjZWRlbmNlIChwcmVkKiApIG9mIGVhY2ggb2JzZXJ2YWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZ3JpZCA9IFUuY29udmVydF90cmFjZV9pbnRvX2dyaWQgc3RlcF9saXN0IGhhbmRsZXIgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZW5yaWNoZWRfZ3JpZCA9XG4gICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgIC5lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIFBhcmFtZXRlci5sb2dfbnVtYmVyX29mX2NhdXNhbF9mbG93cyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgbG9nZ2VyIC0+XG4gICAgICAgICAgICAgICAgICAgIENhdXNhbC5wcmludF9zdGF0IGxvZ2dlciBwYXJhbWV0ZXIgaGFuZGxlciBlbnJpY2hlZF9ncmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGxvZ19zdGVwIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJcXHQgLSBjYXVzYWwgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX3N0b3JpZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZm9sZCB0aGUgbGlzdCBvZiBvYmVydmFibGUgaGl0LCBhbmQgZm9yIGVhY2ggb25lIGNvbGxlY3QgdGhlIGNhdXNhbCBwYXN0ICopXG4gICAgICAgICAgICAgIFUuZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgfmV2ZW50OlN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdG9yeV9saXN0IG9ic2VydmFibGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcdFxcdCAqIGNhdXNhbCBjb21wcmVzc2lvbiBALlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBvbmUgY2F1c2FsIGNvbXByZXNzaW9uXCIgKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gPVxuICAgICAgICAgICAgICAgICAgICBVLmNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZV9oaXQgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcImNvbXByZXNzaW9uX21haW4sIGxpbmUgMjAxNFwiIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hlZF9ncmlkIG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgVS5nZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgb2JzZXJ2YWJsZV9pZFxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5nZXRfY291bnRlciBzdG9yeV9saXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnVwZGF0ZV9wcm9maWxpbmdfaW5mbyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBbIGluZm8gXVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9hcnJheSA9XG4gICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICB0cmFjZV9iZWZvcmVfY29tcHJlc3Npb24gaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkpXG4gICAgICAgICAgICAgICAgdGFibGUxIChMaXN0LnJldiBsaXN0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMVxuICAgICAgICBpblxuICAgICAgICAoKiBOb3cgY2F1c2FsIGNvbXByZXNzaW9uLCB3aXRoIGRldGVjdGlvbiBvZiBzaXBob25zICYgZGV0ZWN0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICBsZXQgcGFyYW1ldGVyX2RlZXBlciA9XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfa2FzYV9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4XG4gICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgIFwiXFx0XFx0XFx0XCIpXG4gICAgICAgICAgICBwYXJhbWV0ZXJfY2F1c2FsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0ID1cbiAgICAgICAgICAgIGlmIEdyYXBoX2Nsb3N1cmUuaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gdGhlblxuICAgICAgICAgICAgICBVLmZpbGxfc2lwaG9uIHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIFUucHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBQYXJhbWV0ZXIuZG9fZ2xvYmFsX2N1dCB0aGVuXG4gICAgICAgICAgICAgIFUuY3V0IHBhcmFtZXRlcl9kZWVwZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQYXJhbWV0ZXIuY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50IHRoZW5cbiAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyBwYXJhbWV0ZXJfZGVlcGVyXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50X2xpc3RcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogVGhpcyBmb25jdGlvbiBpdGVyIHRoZSBjYXVzYWwgY29tcHJlc3Npb24gdW50aWwgYSBmaXhwb2ludCBpcyByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgYXV4IGsgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCkgPVxuICAgICAgICAgIGxldCBzaXplID0gVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciBwYXJhbWV0ZXJcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lIGsnIHdoZW4gayA+PSBrJyAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdC0gbWF4IG51bWJlciBvZiBpdGVyYXRpb25zIHJlYWNoZWQsICVpIGV2ZW50cyByZW1haW5pbmcgQC5cIlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCIlc1xcdFxcdC0gc3RhcnQgaXRlcmF0aW9uICVpLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIChrICsgMSkgc2l6ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfb3B0ID1cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgKG9uZV9pdGVyYXRpb25fb2ZfY29tcHJlc3Npb24gKGxvZ19pbmZvLCBlcnJvciwgZXZlbnRfbGlzdCkpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gaXRlcmF0aW9ucyBzdG9wcGVkIGJ5IHRoZSBlbmQtdXNlciwgJWkgZXZlbnRzIFxcXG4gICAgICAgICAgICAgICAgICAgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpIC0+XG4gICAgICAgICAgICAgIGlmIFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0JyA8IFUuc2l6ZV9vZl9wcmV0cmFjZSBldmVudF9saXN0XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBhdXggKGsgKyAxKSAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0JylcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIlc1xcdC0gYSBmaXhwb2ludCBoYXMgYmVlbiByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCdcbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIiVzXFx0LSBzaW1wbGlmeSB0aGUgdHJhY2UsICVpIGV2ZW50cyBALlwiXG4gICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAoVXRpbGl0aWVzLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdClcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHx8IHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICAgICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9ibGFja2xpc3RfZXZlbnRzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl93ZWFrIGluXG4gICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmwsIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha19zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnRcbiAgICAgICAgICAgICAgICAuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsIHdlX3NoYWxsX25vdFxuICAgICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydC5wYXJhbWV0ZXJzIGF1eFxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSByZW1vdmUgcHNldWRvIGludmVyc2UgZXZlbnRzICopXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFN0b3J5X2pzb24uSW5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN0YXJ0IGNvbGxlY3Rpbmcgb25lIG5ldyB0cmFjZVwiICkpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgKGRvX25vdF9sb2cgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKiB3ZSBjb21wdXRlIGNhdXNhbCBjb21wcmVzc2lvbiAqKVxuICAgICAgICAgICAgICAgICAgICBVLmN1dCAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB0cmFjZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2xpc3QgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKSB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gdGFibGUzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVS5ibGFja19saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSB0YWJsZTJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0XG4gICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCB0YWJsZTIsIHRhYmxlMylcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9IHBhcmFtZXRlcl9jYXVzYWwgaW5cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbmZvIHRyYWNlIHRhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW5mbywgdGFibGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGluZm8sIHRhYmxlKVxuICAgICAgICAgICAgICAgICAgc3RlcF9saXN0IHRhYmxlMlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuX2NhdXNhbF9zdG9yaWVzID0gVS5jb3VudF9zdG9yaWVzIGNhdXNhbF9zdG9yeV90YWJsZSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB3ZWFrbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gd2VhayBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fY2F1c2FsX3N0b3JpZXNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBibGFja2xpc3QgPSBVLmNyZWF0ZV9ibGFja19saXN0IChsYXN0X2VpZCArIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9jb21wcmVzc2lvbl93ZWFrIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2xpc3QsIHdlYWtseV9zdG9yeV90YWJsZSkgPVxuICAgICAgICAgICAgICAgICAgVS5mb2xkX3N0b3J5X3RhYmxlX3dpdGhfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIFwid2VhayBjb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgVS53ZWFrbHlfY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgbGlzdF9pbmZvIHN0b3J5X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzX2ludGVyZmFjZSBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCBzdG9yeV9saXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHN0b3J5X2xpc3QpKVxuICAgICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUgKGJsYWNrbGlzdCwgdGFibGUzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIGpzX2ludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlMiwgdGFibGUzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuX3dlYWtfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyB3ZWFrbHlfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfc3Ryb25nIGluXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiXFx0IC0gc3Ryb25nIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl93ZWFrX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIFwic3Ryb25nX2NvbXByZXNzaW9uXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfXG4gICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHJlZmluZWRfZXZlbnRfbGlzdCBsaXN0X2luZm9cbiAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgVS5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHJlZmluZWRfZXZlbnRfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2luZm8gc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZSB0YWJsZTRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGU0XG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgY2F1c2FsX3RhYmxlLFxuICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZSxcbiAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUsXG4gICAgICAgICAgc3Ryb25nbHlfc3RvcnlfdGFibGUgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgaWYgY2F1c2FsX3RyYWNlX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2F1c2FsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiXCIgXCJcIlxuICAgICAgICAgIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIHdlYWtfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleHBvcnQgPVxuICAgICAgICBVLmV4cG9ydF9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB3ZWFrXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiV2Vha2x5XCJcbiAgICAgICAgICBcIndlYWtseSBcIiBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIF9sb2dfaW5mbyA9XG4gICAgaWYgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3Ryb25nXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIENhdXNhbC5wcmV0dHlfcHJpbnQgfmRvdEZvcm1hdFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZW52IEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoIFwiU3Ryb25nbHlcIlxuICAgICAgICAgIFwic3Ryb25nbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIFwiQ29tcHJlc3Npb24gY29tcGxldGVkXCIpKVxuICBpblxuICBsZXQgXyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9sb2dnZXJcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICBpblxuICBsZXQgXyA9XG4gICAgRXhjZXB0aW9uLnByaW50X2Zvcl9LYVNpbVxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvclxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9uX21lc3NhZ2Ugfm5vbmUgfndlYWsgfnN0cm9uZyB+c2VuZF9tZXNzYWdlID1cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgcmVmXG4gICAgICAoQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZSB+bm9uZSB+d2Vha1xuICAgICAgICAgfnN0cm9uZyAoKSlcbiAgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgKGZ1biBzdCBiIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBcIkNPTkZJR1wiIC0+XG4gICAgICAgICAgICBsZXQgY29uZiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gc3QgYiBpblxuICAgICAgICAgICAgbGV0IG5vbmUgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibm9uZVwiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIndlYWtcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiB3ZWFrXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3Ryb25nID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInN0cm9uZ1wiIGNvbmYpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN0cm9uZ1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcGFyYW1ldGVyIDo9XG4gICAgICAgICAgICAgICAgQ29tcHJlc3Npb25fbWFpbi5idWlsZF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5TZXJ2ZXIgfnNlbmRfbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBcIlJVTlwiIC0+XG4gICAgICAgICAgICBsZXQgZW52LCBzdGVwcyA9XG4gICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgKFRyYWNlLmZvbGRfdHJhY2VcbiAgICAgICAgICAgICAgICAgICAoZnVuIF9lbnYgc3RlcHMgc3RlcCAtPiBzdGVwIDo6IHN0ZXBzKVxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBbXSkpXG4gICAgICAgICAgICAgICAgc3QgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uY29tcHJlc3NfYW5kX3ByaW50ICFwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+ZG90Rm9ybWF0OkNhdXNhbC5IdG1sIGVudlxuICAgICAgICAgICAgICAgIChDb21wcmVzc2lvbl9tYWluLmluaXRfc2VjcmV0X2xvZ19pbmZvICgpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdGVwcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLmpzb25fZXJyb3IgKFwiSW52YWxpZCBLYVN0b3IgbWVzc2FnZTogXCIgXiB4KSkpXG4gICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHRleHQpXG4gICAgd2l0aCBlIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZXByaW50ZiBcIiVzQC5cIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpIGluXG4gICAgICAoKSAoKlRPRE8qKVxuIiwidHlwZSAnYSBzdXBlcmxpc3QgPSBFbHQgb2YgJ2EgfCBTdXBlcl9saXN0IG9mICdhIHN1cGVybGlzdCBsaXN0IGxpc3RcblxubGV0IHJlYyBmb2xkIGYgYSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgRWx0IGVsdCAtPiBmIGEgZWx0XG4gIHwgU3VwZXJfbGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZm9sZCBmKSkgYSBsXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGNvbXBhcmUgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgXyAtPiAtMSlcbiAgfCBoMSA6OiB0MSAtPlxuICAgIChtYXRjaCBsMiB3aXRoXG4gICAgfCBbXSAtPiAxXG4gICAgfCBoMiA6OiB0MiAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmUgaDEgaDIgaW5cbiAgICAgIChtYXRjaCBjbXAgd2l0aFxuICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIHQxIHQyXG4gICAgICB8IF8gLT4gY21wKSlcblxubGV0IHJlYyBjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IEVsdCBhLCBFbHQgYiAtPiBjb21wYXJlIGEgYlxuICB8IFN1cGVyX2xpc3QgYSwgU3VwZXJfbGlzdCBiIC0+XG4gICAgY29tcGFyZV9saXN0IChjb21wYXJlX2xpc3QgKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmUpKSBhIGJcbiAgfCBFbHQgXywgU3VwZXJfbGlzdCBfIC0+IC0xXG4gIHwgU3VwZXJfbGlzdCBfLCBFbHQgXyAtPiAxXG5cbmxldCByZWMgc29ydCBjb21wYXJlIHN1cGVybGlzdCA9XG4gIG1hdGNoIHN1cGVybGlzdCB3aXRoXG4gIHwgRWx0IGEgLT4gRWx0IGFcbiAgfCBTdXBlcl9saXN0IGEgLT5cbiAgICBTdXBlcl9saXN0XG4gICAgICAoTGlzdC5yZXZfbWFwXG4gICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5yZXZfbWFwIChzb3J0IGNvbXBhcmUpIGwgaW5cbiAgICAgICAgICAgbGV0IGwnID0gTGlzdC5zb3J0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSBsJyBpblxuICAgICAgICAgICBsJylcbiAgICAgICAgIChMaXN0LnJldiBhKSlcblxubGV0IGR1bXBfc3VwZXJfbGlzdCBmIHMgbCA9XG4gIGxldCByZWMgYXV4IGRlcHRoIGYgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBFbHQgYSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYUAsXCIgZGVwdGggcyBhXG4gICAgfCBTdXBlcl9saXN0IGwgLT5cbiAgICAgIFBwLmxpc3QgUHAuY3V0XG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzQCwlYVwiIGRlcHRoXG4gICAgICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglc0AsJWFcIiBkZXB0aCAoYXV4IChcIi0tXCIgXiBkZXB0aCkpIGwpKVxuICAgICAgICAgICAgbClcbiAgICAgICAgZiBsXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChhdXggXCItPlwiKSBsXG5cbnR5cGUgJ2EgaW5mbyA9IHsgcHJlZF8xOiBpbnQgbGlzdDsgY29uZmxpY3RfMTogaW50IGxpc3Q7IGxhYmVsOiAnYTsgZGVwdGg6IGludCB9XG5cbmxldCBjb21wYXJlX2ZzdF90cmlwbGUgKGEsIF8sIF8pIChiLCBfLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBjb21wYXJlIGwgPVxuICBsZXQgcmVjIGF1eCB0b19kbyBvbGQgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0b19kbyB3aXRoXG4gICAgfCBbXSAtPiBjdXJyZW50IDo6IGFjY3VcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgY29tcGFyZSBoIG9sZCA9IDAgdGhlblxuICAgICAgICBhdXggdCBvbGQgKGggOjogY3VycmVudCkgYWNjdVxuICAgICAgZWxzZVxuICAgICAgICBhdXggdCBoIFsgaCBdIChjdXJyZW50IDo6IGFjY3UpXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjdSBsIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCBbIGggXSBhY2N1KVxuICAgICAgICAgICAgW10gbCkpXG5cbigqbGV0IGwgPVxuICAgIFN1cGVyX2xpc3RcbiAgICAgIFtcbiAgICAgICAgW1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgW0VsdCAoMiwwLDApO0VsdCAoMywwLDApO0VsdCAoNCwwLDApXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSwxLDEpO0VsdCAoMiwxLDEpO0VsdCAoMywxLDEpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMiwyLDIpO0VsdCAoNCwyLDIpO0VsdCAoNSwzLDMpXTtcbiAgICAgICAgICAgICAgW0VsdCAoMSw0LDQpO0VsdCAoMiw0LDQpO0VsdCAoMyw0LDQpXV07XG4gICAgICAgICAgU3VwZXJfbGlzdFxuICAgICAgICAgICAgW1tFbHQgKDEsNSw1KTtFbHQgKDIsNSw1KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDYsNik7RWx0ICgyLDYsNildXV1dOztcblxuICBsZXQgZHVtcF90cmlwbGUgKGEsYixjKSA9ICAgKFwiKFwiXihzdHJpbmdfb2ZfaW50IGEpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGIpXlwiLFwiXihzdHJpbmdfb2ZfaW50IGMpXlwiKVwiKVxuXG4gIGxldCBfID0gZHVtcF9zdXBlcl9saXN0IGR1bXBfdHJpcGxlIGxcbiAgbGV0IGwxID0gc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgbFxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMVxuICBsZXQgbDIgPSBzbWFzaCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZV9mc3RfdHJpcGxlKSBsMVxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsMiAqKVxuKCpcbmxldCBub3JtYWxfZm9ybSByb290IGNvbXBhcmUgZiA9IFxuICBsZXQgZGVhbF93aXRoX2VsdCBlbHQgPSBcbiAgICBsZXQgaW5mbyA9IGYgeCBpbiBcbiAgICBsZXQgbm9kZSA9IChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKSBpbiBcbiAgICBub2RlLGluZm8ucHJlZF8xLGluZm8uY29uZmxpY3RfMSBcbiAgaW4gXG5cbiAgXG4gIGxldCByZWMgYXV4IGN1cnJlbnRfbGF5ZXIgbmV4dF9sYXllciBhY2N1ID0gXG4gICAgbWF0Y2ggXG4gICAgICBjdXJyZW50X2xheWVyIFxuICAgIHdpdGggXG4gICAgfCBMaXN0IGwgIC0+IFxuXG4gICAgfCBTdXBlcl9saXN0IGwgLT4gXG4gICAgICAgIGxldCBleHRlbmRlZF9saXN0ID0gTGlzdC5yZXZfbWFwIGRlYWxfd2l0aF9lbHQgbCBpbiBcbiAgICAgICAgbGV0IHNvcnRlZF9saXN0ID0gTGlzdC5zb3J0IGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgc21hc2hfbGlzdCA9IHNtYXNoIGNvbXBhcmVfZnN0X3RyaXBsZSBleHRlbmRlZF9saXN0IGluIFxuICAgICAgICBsZXQgaW5mb19vZiB4ID0gXG4gICAgICAgICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgICAgICAgKGluZm8ubGFiZWwsaW5mby5kZXB0aCxMaXN0Lmxlbmd0aCBpbmZvLnByZWRfMSxMaXN0Lmxlbmd0aCBpbmZvLmNvbmZsaWN0XzEpXG4gICAgICAgIGluIFxuICAgICAgICBcbiAgICAgICAgICBcbiAgICAgIGVuZFxuICAgIHwgSHViIGwgLT4gXG4gICAgICBiZWdpbiBcbiAgICAgIGVuZCBcbiAgICAgICAgXG4qKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogSGVscGVyIGZ1bmN0aW9ucyBmb3IgcmVzdWx0ICopXG5sZXQgZXJyb3JfbXNnID8oc2V2ZXJpdHkgPSBMb2dzLkVycm9yKSA/cmFuZ2UgdGV4dCA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgPVxuICB7IFJlc3VsdF91dGlsLnNldmVyaXR5OyBSZXN1bHRfdXRpbC50ZXh0OyBSZXN1bHRfdXRpbC5yYW5nZSB9XG5cbmxldCByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgP3Jlc3VsdF9jb2RlIChtZXNzYWdlIDogc3RyaW5nKSA6XG4gICAgJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIFsgZXJyb3JfbXNnID9zZXZlcml0eSA/cmFuZ2UgbWVzc2FnZSBdXG5cbmxldCByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VzIDogJ29rIEFwaS5yZXN1bHQgPVxuICBSZXN1bHRfdXRpbC5lcnJvciA/c3RhdHVzOnJlc3VsdF9jb2RlIG1lc3NhZ2VzXG5cbmxldCByZXN1bHRfZXJyb3JfZXhjZXB0aW9uID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgKGUgOiBleG4pIDogJ29rIEFwaS5yZXN1bHQgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgdHJ5IFByaW50ZXhjLnRvX3N0cmluZyBlIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICBpblxuICByZXN1bHRfZXJyb3JfbXNnID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWVzc2FnZVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfZXJyb3JzID9zZXZlcml0eSBtaCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdF90b191aSBtaFxuICBpblxuICBsZXQgY2F1Z2h0ID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF9jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWggaW5cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biB4IGwgLT5cbiAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCB4KVxuICAgICAgOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIGVycm9yX21zZyA/c2V2ZXJpdHlcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpKVxuICAgICAgIHVuY2F1Z2h0KVxuXG5sZXQgbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgP3NldmVyaXR5ID9yZXN1bHRfY29kZSBtaCA9XG4gIHJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGUgKG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWgpXG5cbmxldCByZXN1bHRfa2FzYSA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBtaCAtPiBtZXRob2RfaGFuZGxlcl9tZXNzYWdlcyB+c2V2ZXJpdHk6TG9ncy5FcnJvciBtaFxuXG5sZXQgcmVzdWx0X2JpbmRfbHd0IDpcbiAgICBvazooJ29rIC0+ICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICgnYV9vaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50ID1cbiBmdW4gfihvayA6ICdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgeyBSZXN1bHRfdXRpbC52YWx1ZTsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBSZXN1bHQuT2sgZGF0YSAtPiBvayBkYXRhXG4gIHwgUmVzdWx0LkVycm9yIGUgLT5cbiAgICBMd3QucmV0dXJuIHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgZTsgc3RhdHVzOyBtZXNzYWdlcyB9XG5cbmxldCByZWMgcmVzdWx0X2ZvbGRfbHd0IDpcbiAgICBmOlxuICAgICAgKCgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgJ3ZhbHVlIC0+XG4gICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpIC0+XG4gICAgaWQ6KCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IC0+XG4gICAgJ3ZhbHVlIGxpc3QgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4oZiA6XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICAgICAndmFsdWUgLT5cbiAgICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KVxuICAgICB+KGlkIDogKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0KSAobCA6ICd2YWx1ZSBsaXN0KSAtPlxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBMd3QucmV0dXJuIGlkXG4gIHwgaCA6OiB0IC0+IGYgaWQgaCA+Pj0gZnVuIHJlc3VsdCAtPiByZXN1bHRfZm9sZF9sd3QgfmYgfmlkOnJlc3VsdCB0XG5cbmxldCByZWMgcmVzdWx0X2NvbWJpbmUgOiB1bml0IEFwaS5yZXN1bHQgbGlzdCAtPiB1bml0IEFwaS5yZXN1bHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFJlc3VsdF91dGlsLm9rICgpXG4gIHwgbCA6OiB0IC0+XG4gICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgfm9rOihmdW4gKCkgLT4gcmVzdWx0X2NvbWJpbmUgdClcbiAgICAgIH5lcnJvcjooZnVuIGRhdGFfMSAtPlxuICAgICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgfm9rOihmdW4gKCkgLT4gbClcbiAgICAgICAgICB+ZXJyb3I6KGZ1biBkYXRhX3IgLT5cbiAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIH5zdGF0dXM6bC5SZXN1bHRfdXRpbC5zdGF0dXMgKGRhdGFfMSBAIGRhdGFfcikpXG4gICAgICAgICAgKHJlc3VsdF9jb21iaW5lIHQpKVxuICAgICAgbFxuXG5sZXQgbWQ1c3VtIHRleHQgPSBEaWdlc3QudG9faGV4IChEaWdlc3Quc3RyaW5nIHRleHQpXG4iLCIoKiBBdXRvLWdlbmVyYXRlZCBmcm9tIFwiYXBpX3R5cGVzLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdCA9IERhdGEuc25hcHNob3RcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpdGVfZ3JhcGggPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxudHlwZSBzaW11bGF0aW9uX3N0YXRlID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zdGF0ZVxuXG50eXBlIHNpbXVsYXRpb25fc2VlZCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc2VlZFxuXG50eXBlIHNpbXVsYXRpb25fcHJvZ3Jlc3MgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzID0ge1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU6IGZsb2F0O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTogaW50IG9wdGlvbjtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDogaW50O1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZzogYm9vbFxufVxuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSB7XG4gIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgKCphdGQgcGxvdF9wZXJpb2QgKik6IGZsb2F0O1xuICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiAoKmF0ZCBwYXVzZV9jb25kaXRpb24gKik6IHN0cmluZztcbiAgc2ltdWxhdGlvbl9zZWVkICgqYXRkIHNlZWQgKik6IHNpbXVsYXRpb25fc2VlZCBvcHRpb247XG4gIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgKCphdGQgc3RvcmVfdHJhY2UgKik6IGJvb2xcbn1cblxudHlwZSAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgPVxuICAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXQgPSB7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q6ICdwbG90O1xuICBzaW11bGF0aW9uX291dHB1dF9kaW5zOiAnZGlucztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lczogJ2ZpbGVfbGluZXM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90czogJ3NuYXBzaG90cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzOiAnaW5wdXRzO1xuICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM6ICdsb2dfbWVzc2FnZXNcbn1cblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcblxudHlwZSBzaW11bGF0aW9uX2luZm8gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPSB7XG4gIHNpbXVsYXRpb25faW5mb19wcm9ncmVzczogc2ltdWxhdGlvbl9wcm9ncmVzcztcbiAgc2ltdWxhdGlvbl9pbmZvX291dHB1dDogc2ltdWxhdGlvbl9pbmZvX291dHB1dFxufVxuXG50eXBlIHNpbXVsYXRpb25faWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2lkXG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgPSB7XG4gIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkOiBzaW11bGF0aW9uX3NlZWRcbn1cblxudHlwZSBzaGFyaW5nX2xldmVsID0gUGF0dGVybi5zaGFyaW5nX2xldmVsXG5cbnR5cGUgKCdvaywgJ2Vycm9yKSByZXN1bHQgPSAoJ29rLCAnZXJyb3IpIFJlc3VsdF91dGlsLnRcblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IEFzdC5wYXJzaW5nX2NvbXBpbFxuXG50eXBlIG5iciA9IE5ici50XG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2UgPSB7XG4gIHBhdHRlcm5fc2hhcmluZzogc2hhcmluZ19sZXZlbDtcbiAgYXN0OiBwYXJzaW5nX2NvbXBpbDtcbiAgdmFyaWFibGVfb3ZlcndyaXR0ZW46IChzdHJpbmcgKiBuYnIpIGxpc3Rcbn1cblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyID0ge1xuICBwcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkOiBzdHJpbmdcbn1cblxudHlwZSBwbG90X2xpbWl0ID0gQXBpX3R5cGVzX3QucGxvdF9saW1pdCA9IHtcbiAgcGxvdF9saW1pdF9vZmZzZXQ6IGludCBvcHRpb247XG4gIHBsb3RfbGltaXRfcG9pbnRzOiBpbnQgb3B0aW9uXG59XG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIHBsb3QgPSBEYXRhLnBsb3RcblxudHlwZSBtZXNzYWdlID0gUmVzdWx0X3V0aWwubWVzc2FnZVxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBrYXBwYV9jb2RlID0gQXBpX3R5cGVzX3Qua2FwcGFfY29kZVxuXG50eXBlIGZpbGVfbGluZSA9IERhdGEuZmlsZV9saW5lID0ge1xuICBmaWxlX2xpbmVfbmFtZSAoKmF0ZCBuYW1lICopOiBzdHJpbmcgb3B0aW9uO1xuICBmaWxlX2xpbmVfdGV4dCAoKmF0ZCB0ZXh0ICopOiBzdHJpbmdcbn1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mbyA9IHtcbiAgZW52aXJvbm1lbnRfcHJvamVjdHMgKCphdGQgcHJvamVjdHMgKik6IGludDtcbiAgZW52aXJvbm1lbnRfYnVpbGQgKCphdGQgYnVpbGQgKik6IHN0cmluZ1xufVxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBEYXRhLmRpblxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdCA9IChcbiAgRGF0YS53cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90ID0gKFxuICBEYXRhLnJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHdyaXRlX3NuYXBzaG90XG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIHJlYWRfc25hcHNob3RcbilcbmxldCBzbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfc25hcHNob3RfaWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc25hcHNob3RfaWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zbmFwc2hvdF9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBfc25hcHNob3RfaWRfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NuYXBzaG90X2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICB3cml0ZV9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0XG4pXG5sZXQgc25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpdGVfZ3JhcGggPSAoXG4gIFVzZXJfZ3JhcGgud3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHN0cmluZ19vZl9zaXRlX2dyYXBoID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpdGVfZ3JhcGggb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudFxuKVxubGV0IHNpdGVfZ3JhcGhfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpdGVfZ3JhcGggKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3N0YXRlID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUnVubmluZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJSdW5uaW5nXFxcIlwiXG4gICAgICB8IGBQYXVzZWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUGF1c2VkXFxcIlwiXG4gICAgICB8IGBTdG9wcGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlN0b3BwZWRcXFwiXCJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zdGF0ZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3N0YXRlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUGF1c2VkXG4gICAgICAgICAgICB8IFwiU3RvcHBlZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUnVubmluZ1wiIC0+XG4gICAgICAgICAgICAgIGBSdW5uaW5nXG4gICAgICAgICAgICB8IFwiUGF1c2VkXCIgLT5cbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBgU3RvcHBlZFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9zdGF0ZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zdGF0ZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fc2VlZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc2VlZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3NlZWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuKVxubGV0IHNpbXVsYXRpb25fc2VlZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9zZWVkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ludF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9faW50X251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19pbnRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9faW50X251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX2ludF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ludF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3MgOiBfIC0+IHNpbXVsYXRpb25fcHJvZ3Jlc3MgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9wcm9ncmVzcykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RkX2Zsb2F0XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wcm9ncmVzcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAzNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzUpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZVwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3Byb2dyZXNzX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX251bGxhYmxlIChcbiAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAoaWYgWW9qc29uLlNhZmUucmVhZF9udWxsX2lmX3Bvc3NpYmxlIHAgbGIgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lICgoXG4gICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBfIC0+IHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGxvdF9wZXJpb2RcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wbG90X3BlcmlvZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF1c2VfY29uZGl0aW9uXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3NlZWQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInN0b3JlX3RyYWNlXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9ib29sXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3N0b3JlX3RyYWNlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc2VlZCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTEgLT4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9ib29sXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8ICdzJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wbG90X3BlcmlvZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb25cIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zZWVkXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9zdG9yZV90cmFjZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fb3V0cHV0IHdyaXRlX19wbG90IHdyaXRlX19kaW5zIHdyaXRlX19maWxlX2xpbmVzIHdyaXRlX19zbmFwc2hvdHMgd3JpdGVfX2lucHV0cyB3cml0ZV9fbG9nX21lc3NhZ2VzIDogXyAtPiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3Bsb3RcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19kaW5zXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9kaW5zO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZmlsZV9saW5lc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc25hcHNob3RzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2lucHV0c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19sb2dfbWVzc2FnZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ZpbGVfbGluZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19sb2dfbWVzc2FnZXNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3Bsb3RcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGluc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc25hcHNob3RzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW5wdXRzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoJ3Bsb3QsICdkaW5zLCAnZmlsZV9saW5lcywgJ3NuYXBzaG90cywgJ2lucHV0cywgJ2xvZ19tZXNzYWdlcykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRfb2Zfc3RyaW5nIHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIHMgPVxuICByZWFkX3NpbXVsYXRpb25fb3V0cHV0IHJlYWRfX3Bsb3QgcmVhZF9fZGlucyByZWFkX19maWxlX2xpbmVzIHJlYWRfX3NuYXBzaG90cyByZWFkX19pbnB1dHMgcmVhZF9fbG9nX21lc3NhZ2VzIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBzaW11bGF0aW9uX2ludGVydmVudGlvbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fb3V0cHV0XzkzNDBhZDYgOiBfIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dCAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9wbG90XFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX251bGxcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9fb3V0cHV0XzkzNDBhZDYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX291dHB1dF85MzQwYWQ2IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX291dHB1dF85MzQwYWQ2ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVsbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9kaW5zID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IChfLCBfLCBfLCBfLCBfLCBfKSBzaW11bGF0aW9uX291dHB1dClcbiAgICAgIClcbilcbmxldCBfb3V0cHV0XzkzNDBhZDZfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19vdXRwdXRfOTM0MGFkNiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSAoXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICByZWFkX19vdXRwdXRfOTM0MGFkNlxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vdXRwdXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm8gOiBfIC0+IHNpbXVsYXRpb25faW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX2luZm8pIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX291dHB1dFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9pbmZvX291dHB1dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3Mgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19wcm9ncmVzc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25faW5mb19vdXRwdXRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2luZm8pXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgOiBfIC0+IHNpbXVsYXRpb25fYXJ0aWZhY3QgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9hcnRpZmFjdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3NlZWRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fYXJ0aWZhY3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMzUgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fc2VlZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWQgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NoYXJpbmdfbGV2ZWwgPSAoXG4gIFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbFxuKVxubGV0IHN0cmluZ19vZl9zaGFyaW5nX2xldmVsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NoYXJpbmdfbGV2ZWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLnJlYWRfc2hhcmluZ19sZXZlbFxuKVxubGV0IHNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NoYXJpbmdfbGV2ZWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX3QgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHJlYWRfX2Vycm9yIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3BhcnNpbmdfY29tcGlsID0gKFxuICBBc3Qud3JpdGVfcGFyc2luZ19jb21waWxcbilcbmxldCBzdHJpbmdfb2ZfcGFyc2luZ19jb21waWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGFyc2luZ19jb21waWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LnJlYWRfcGFyc2luZ19jb21waWxcbilcbmxldCBwYXJzaW5nX2NvbXBpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGFyc2luZ19jb21waWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9uYnIgPSAoXG4gIE5ici53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX25iciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9uYnIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9uYnIgPSAoXG4gIE5ici5yZWFkX3RcbilcbmxldCBuYnJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX25iciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBmdW4gb2IgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgIChsZXQgeCwgXyA9IHggaW5cbiAgICAgIChcbiAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgKGxldCBfLCB4ID0geCBpblxuICAgICAgKFxuICAgICAgICB3cml0ZV9uYnJcbiAgICAgICkgb2IgeFxuICAgICAgKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSc7XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19uYnJfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX25icl9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19uYnJfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgZnVuIHAgbGIgLT5cbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBzdGRfdHVwbGUgPSBZb2pzb24uU2FmZS5zdGFydF9hbnlfdHVwbGUgcCBsYiBpblxuICAgICAgbGV0IGxlbiA9IHJlZiAwIGluXG4gICAgICBsZXQgZW5kX29mX3R1cGxlID0gcmVmIGZhbHNlIGluXG4gICAgICAodHJ5XG4gICAgICAgIGxldCB4MCA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfdHVwbGVfc2VwMiBwIHN0ZF90dXBsZSBsYjtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCB4MSA9XG4gICAgICAgICAgbGV0IHggPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICByZWFkX25iclxuICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbmNyIGxlbjtcbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+IGVuZF9vZl90dXBsZSA6PSB0cnVlKTtcbiAgICAgICAgICB4XG4gICAgICAgIGluXG4gICAgICAgIGlmIG5vdCAhZW5kX29mX3R1cGxlIHRoZW4gKFxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgICBkb25lXG4gICAgICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+ICgpXG4gICAgICAgICk7XG4gICAgICAgICh4MCwgeDEpXG4gICAgICB3aXRoIFlvanNvbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfdHVwbGVfZmllbGRzIHAgIWxlbiBbIDA7IDEgXSk7XG4gIClcbilcbmxldCBfc3RyaW5nX25icl9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX25icl9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA6IF8gLT4gcHJvamVjdF9wYXJzZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBwcm9qZWN0X3BhcnNlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicGF0dGVybl9zaGFyaW5nXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaGFyaW5nX2xldmVsXG4gICAgKVxuICAgICAgb2IgeC5wYXR0ZXJuX3NoYXJpbmc7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImFzdFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfcGFyc2luZ19jb21waWxcbiAgICApXG4gICAgICBvYiB4LmFzdDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19zdHJpbmdfbmJyX2xpc3RcbiAgICApXG4gICAgICBvYiB4LnZhcmlhYmxlX292ZXJ3cml0dGVuO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGF0dGVybl9zaGFyaW5nID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9hc3QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAzIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NoYXJpbmdfbGV2ZWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMTUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd3JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfYXN0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9wYXJzaW5nX2NvbXBpbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3ZhcmlhYmxlX292ZXJ3cml0dGVuIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX25icl9saXN0XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXR0ZXJuX3NoYXJpbmcgPSAobWF0Y2ggIWZpZWxkX3BhdHRlcm5fc2hhcmluZyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGF0dGVybl9zaGFyaW5nXCIpO1xuICAgICAgICAgICAgYXN0ID0gKG1hdGNoICFmaWVsZF9hc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImFzdFwiKTtcbiAgICAgICAgICAgIHZhcmlhYmxlX292ZXJ3cml0dGVuID0gKG1hdGNoICFmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwidmFyaWFibGVfb3ZlcndyaXR0ZW5cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcnNlKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA6IF8gLT4gcHJvamVjdF9wYXJhbWV0ZXIgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJhbWV0ZXIpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJwcm9qZWN0X2lkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LnByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBpZiBsZW4gPSAxMCAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IChtYXRjaCAhZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgKVxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfbGltaXQgOiBfIC0+IHBsb3RfbGltaXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcGxvdF9saW1pdCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm9mZnNldFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9vZmZzZXQ7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIm5iX3BvaW50c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHgucGxvdF9saW1pdF9wb2ludHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9saW1pdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X2xpbWl0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdF9saW1pdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDYgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X3BvaW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGxvdF9saW1pdF9vZmZzZXQgPSAobWF0Y2ggIWZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJwbG90X2xpbWl0X29mZnNldFwiKTtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfcG9pbnRzID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X3BvaW50cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9wb2ludHNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwbG90X2xpbWl0KVxuICAgICAgKVxuKVxubGV0IHBsb3RfbGltaXRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfbGltaXQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgd3JpdGVfcGxvdF9saW1pdFxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICByZWFkX3Bsb3RfbGltaXRcbilcbmxldCBwbG90X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBEYXRhLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgRGF0YS5yZWFkX3Bsb3RcbilcbmxldCBwbG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwud3JpdGVfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlID0gKFxuICBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2VcbilcbmxldCBtZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbG9nX21lc3NhZ2UgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBsb2dfbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbG9nX21lc3NhZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9rYXBwYV9jb2RlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfa2FwcGFfY29kZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9rYXBwYV9jb2RlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfa2FwcGFfY29kZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQga2FwcGFfY29kZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfa2FwcGFfY29kZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9zdHJpbmdfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgOiBfIC0+IGZpbGVfbGluZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBmaWxlX2xpbmUpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYW1lXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfbmFtZTtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwidGV4dFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5maWxlX2xpbmVfdGV4dDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2ZpbGVfbGluZV9uYW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfdGV4dCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnbicgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd4JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gNCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3Mgd2l0aFxuICAgICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8ICd0JyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV9uYW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX3RleHQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVfbGluZV9uYW1lID0gKG1hdGNoICFmaWVsZF9maWxlX2xpbmVfbmFtZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZmlsZV9saW5lX25hbWVcIik7XG4gICAgICAgICAgICBmaWxlX2xpbmVfdGV4dCA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX3RleHQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV90ZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZmlsZV9saW5lKVxuICAgICAgKVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2ZpbGVfbGluZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfZmlsZV9saW5lXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ZpbGVfbGluZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9maWxlX2xpbmVcbiAgKVxuKVxubGV0IF9maWxlX2xpbmVfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgd3JpdGVfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHJlYWRfX2ZpbGVfbGluZV9saXN0XG4pXG5sZXQgZmlsZV9saW5lX2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2RldGFpbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc3RyaW5nX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICApXG4pXG5sZXQgX3N0cmluZ19saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3N0cmluZ19saXN0XG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHJlYWRfX3N0cmluZ19saXN0XG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA6IF8gLT4gZW52aXJvbm1lbnRfaW5mbyAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBlbnZpcm9ubWVudF9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdHNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguZW52aXJvbm1lbnRfcHJvamVjdHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcImJ1aWxkXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X2J1aWxkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X2J1aWxkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X2J1aWxkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfcHJvamVjdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRfcHJvamVjdHMgPSAobWF0Y2ggIWZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJlbnZpcm9ubWVudF9wcm9qZWN0c1wiKTtcbiAgICAgICAgICAgIGVudmlyb25tZW50X2J1aWxkID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9idWlsZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfYnVpbGRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBlbnZpcm9ubWVudF9pbmZvKVxuICAgICAgKVxuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5faWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuKVxubGV0IHN0cmluZ19vZl9kaW5faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19kaW5faWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2Rpbl9pZFxuICApXG4pXG5sZXQgc3RyaW5nX29mX19kaW5faWRfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZGluX2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZGluX2lkXG4gIClcbilcbmxldCBfZGluX2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19kaW5faWRfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9jYXRhbG9nID0gKFxuICB3cml0ZV9fZGluX2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgcmVhZF9fZGluX2lkX2xpc3RcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIERhdGEud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIERhdGEucmVhZF9kaW5cbilcbmxldCBkaW5fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2RpbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQmlnU3RyaW5nIDogQmlnYnVmZmVyLmJpZ3N0cmluZyBoYW5kbGVcbiAgfCBTdHJpbmcgOiBzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5ncyA6IHN0cmluZyBsaXN0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICAoKiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlKilcbiAgfCBKU09OIDogWW9qc29uLkJhc2ljLnQgaGFuZGxlXG4gIHwgSW5mbHVlbmNlX21hcFxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBpbnRcbiAgICAgICAgKiBpbnQgb3B0aW9uXG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICAqIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXApXG4gICAgICAgIGhhbmRsZVxuICB8IFNob3J0X2luZmx1ZW5jZV9ub2RlIDogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb24gaGFuZGxlXG4gIHwgSW5mbHVlbmNlX25vZGVcbiAgICAgIDogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uXG4gICAgICAgIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2Rlc1xuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBsaXN0KVxuICAgICAgICBoYW5kbGVcbiAgfCBSdWxlc19rYXNhIDogUHVibGljX2RhdGEucnVsZSBsaXN0IGhhbmRsZVxuICB8IEFnZW50c19rYXNhIDogUHVibGljX2RhdGEuZGVhZF9hZ2VudHMgaGFuZGxlXG4gIHwgVHJhbnNpdGlvbnNfa2FzYSA6IChQdWJsaWNfZGF0YS5ydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdCBoYW5kbGVcbiAgfCBDb25zdHJhaW50c19rYXNhXG4gICAgICA6IChzdHJpbmcgKiBQdWJsaWNfZGF0YS5hZ2VudCBsaXN0IFB1YmxpY19kYXRhLmxlbW1hIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgUG9seW1lcnNfa2FzYVxuICAgICAgOiAoUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbFxuICAgICAgICAqIFB1YmxpY19kYXRhLnNjYylcbiAgICAgICAgaGFuZGxlXG4gIHwgRElOIDogRGF0YS5kaW4gaGFuZGxlXG4gIHwgUGxvdCA6IERhdGEucGxvdCBoYW5kbGVcbiAgfCBTbmFwc2hvdCA6IERhdGEuc25hcHNob3QgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgaGFuZGxlXG4gIHwgU2ltdWxhdGlvbl9hcnRpZmFjdCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKEJpZ1N0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBvdXQgPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIChCYXNlNjQuZGVjb2RlID9hbHBoYWJldDpOb25lKSBvdXQpXG4gICAgICAgICAgIHwgQiAoU3RyaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKVxuICAgICAgICAgICB8IEIgKFN0cmluZ3MsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICAgICgqIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKSopXG4gICAgICAgICAgIHwgQiAoSlNPTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbHVlbmNlX21hcCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoU2hvcnRfaW5mbHVlbmNlX25vZGUsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24pXG4gICAgICAgICAgICAgICAgICBqc29uKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9ub2RlcywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUnVsZXNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQWdlbnRzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMganNvbilcbiAgICAgICAgICAgfCBCIChUcmFuc2l0aW9uc19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChDb25zdHJhaW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoUG9seW1lcnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKERJTiwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfZGluIHAgbGIpXG4gICAgICAgICAgIHwgQiAoUGxvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfcGxvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNuYXBzaG90LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IERhdGEucmVhZF9zbmFwc2hvdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fZWZmaWNpZW5jeSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBDb3VudGVyLkVmZmljaWVuY3kucmVhZF90IHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9pbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW5mbyBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fcGFyYW1ldGVyLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdCBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIHAgbGIpXG4gICAgICAgICAgIHwgQiAoU2ltdWxhdGlvbl9hcnRpZmFjdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogdHlwZSBhLlxuICAgICAgICBhIGhhbmRsZSAtPlxuICAgICAgICAoQnVmZmVyLnQgLT4gdW5pdCkgLT5cbiAgICAgICAgKGEsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gICAgICBmdW4gaGFuZGxlIHJlcXVlc3QgLT5cbiAgICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgICgqIEthTW9IYSAqKVxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgOiBBc3QucGFyc2luZ19jb21waWwgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICA6IFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFycyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICBcImxvdyBsZXZlbCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3Rfb3ZlcndyaXRlIGZpbGVfaWQgYXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RPdmVyd3JpdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2EgKilcbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTklUXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGNvbXBpbCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBKU09OIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlRBQ1RfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX21hcCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJMT0NBTF9JTkZMVUVOQ0VfTUFQXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEpzb25VdGlsLndyaXRlX29wdGlvbiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgYndkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiB0b3RhbCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgb3JpZ2luKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9PUklHSU5BTF9OT0RFXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGUgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX1BSRVZJT1VTX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAganNvbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNob3J0X2luZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfTk9ERV9BVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBMb2Mud3JpdGVfcG9zaXRpb24gYiBwb3MpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbHVlbmNlX25vZGVzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfQUxMX05PREVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBzZWxmI21lc3NhZ2UgUnVsZXNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX1JVTEVTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBZ2VudHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJERUFEX0FHRU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFRyYW5zaXRpb25zX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDb25zdHJhaW50c19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkNPTlNUUkFJTlRTXCIpIF0pXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBvbHltZXJzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUE9MWU1FUlNcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeV9jbSkpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfc2NjKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgKCogS2FTaW0gKilcbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCAoXyA6IFBhdHRlcm4uc2hhcmluZ19sZXZlbClcbiAgICAgICAgKF8gOiBBc3QucGFyc2luZ19jb21waWwpIChfIDogKHN0cmluZyAqIE5ici50KSBsaXN0KVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgXCJsb3cgbGV2ZWwgc2ltdWxhdGlvbl9sb2FkIG11c3RuJ3QgYmUgdXNlZFwiKVxuXG4gICAgbWV0aG9kIHByb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nIG92ZXJ3cml0ZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gUGF0dGVybi53cml0ZV9zaGFyaW5nX2xldmVsIGIgcGF0dGVyblNoYXJpbmcpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIE5ici53cml0ZV90KVxuICAgICAgICAgICAgICAgICAgYiBvdmVyd3JpdGVzKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSBwYXVzZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ29udGludWVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgcGF1c2UpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGVsZXRlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIGlkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBESU4gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbERJTlwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU25hcHNob3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9wbG90IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgUGxvdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFwaV90eXBlc19qLndyaXRlX3Bsb3RfcGFyYW1ldGVyIGIgcGFyYW1ldGVyKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmUgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9lZmZpY2llbmN5IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX2luZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkluZm9cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvbiBpbnRlcnZlbnRpb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGludGVydmVudGlvbik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIEJpZ1N0cmluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblBhdXNlXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fcGFyYW1ldGVyIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0IHBhcmFtZXRlciA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9hcnRpZmFjdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uU3RhcnRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblRyYWNlXCIpIF0pXG5cbiAgICAoKiBtZXRob2QgcHJvamVjdF9wYXJzZSBvdmVyd3JpdGUgPSAoKVxuXG4gICAgICAgbWV0aG9kIHJhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gPSAoKVxuICAgICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24gbW9kZXMgPSBMd3RfcmVzdWx0LnJldHVybiAoKVxuICAgICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfbG9nID0gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAoKVxuXG4gICAgICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IHRydWVcbiAgICAgICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSAoKSopXG4gIGVuZFxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcIm1waV9tZXNzYWdlLmF0ZFwiICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0yNy0zMi0zMy0zNS0zOVwiXVxuXG50eXBlIHNuYXBzaG90X2lkID0gQXBpX3R5cGVzX3Quc25hcHNob3RfaWRcblxudHlwZSBzbmFwc2hvdF9kZXRhaWwgPSBBcGlfdHlwZXNfdC5zbmFwc2hvdF9kZXRhaWxcblxudHlwZSBzbmFwc2hvdF9jYXRhbG9nID0gQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZ1xuXG50eXBlIHNpbXVsYXRpb25fcGFyYW1ldGVyID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXJcblxudHlwZSBzaW11bGF0aW9uX2ludGVydmVudGlvbiA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvXG5cbnR5cGUgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID0gQ291bnRlci5FZmZpY2llbmN5LnRcblxudHlwZSBzaW11bGF0aW9uX2FydGlmYWN0ID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9hcnRpZmFjdFxuXG50eXBlICgnb2ssICdlcnJvcikgYXBpX3Jlc3VsdCA9ICgnb2ssICdlcnJvcikgQXBpX3R5cGVzX3QucmVzdWx0XG5cbnR5cGUgYXBpX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5tZXNzYWdlXG5cbnR5cGUgJ29rIHJlc3VsdCA9ICdvayBNcGlfbWVzc2FnZV90LnJlc3VsdFxuXG50eXBlIHBsb3QgPSBBcGlfdHlwZXNfdC5wbG90XG5cbnR5cGUgbG9nX21lc3NhZ2UgPSBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZVxuXG50eXBlIGZpbGVfbGluZV9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2dcblxudHlwZSBlbnZpcm9ubWVudF9pbmZvID0gQXBpX3R5cGVzX3QuZW52aXJvbm1lbnRfaW5mb1xuXG50eXBlIGRpbl9jYXRhbG9nID0gQXBpX3R5cGVzX3QuZGluX2NhdGFsb2dcblxudHlwZSBkaW4gPSBBcGlfdHlwZXNfdC5kaW5cblxudHlwZSByZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3RfcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3RfcmVzcG9uc2VcblxudHlwZSBwcm9qZWN0X3BhcnNlID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJzZVxuXG50eXBlIHByb2plY3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucHJvamVjdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnBsb3RfcGFyYW1ldGVyXG5cbnR5cGUgZGluX2lkID0gQXBpX3R5cGVzX3QuZGluX2lkXG5cbnR5cGUgcmVzdF9yZXF1ZXN0ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3JlcXVlc3RcblxudHlwZSByZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZV9jb250ZW50XG5cbnR5cGUgcmVzcG9uc2UgPSBNcGlfbWVzc2FnZV90LnJlc3BvbnNlXG5cbnR5cGUgcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVxdWVzdFxuXG50eXBlIGlkID0gTXBpX21lc3NhZ2VfdC5pZFxuXG50eXBlICdkYXRhIG1lc3NhZ2UgPSAnZGF0YSBNcGlfbWVzc2FnZV90Lm1lc3NhZ2UgPSB7IGlkOiBpZDsgZGF0YTogJ2RhdGEgfVxuXG50eXBlIGZpbGVfbGluZV9kZXRhaWwgPSBBcGlfdHlwZXNfdC5maWxlX2xpbmVfZGV0YWlsXG5cbnR5cGUgZmlsZV9saW5lID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lXG5cbmxldCB3cml0ZV9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfaWRcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zbmFwc2hvdF9pZFxuKVxubGV0IHNuYXBzaG90X2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NuYXBzaG90X2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2RldGFpbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfZGV0YWlsXG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NuYXBzaG90X2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuKVxubGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm9cbilcbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW5mbyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LndyaXRlX3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9lZmZpY2llbmN5ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA9IChcbiAgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdFxuKVxubGV0IHNpbXVsYXRpb25fZWZmaWNpZW5jeV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9hcGlfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3JcbilcbmxldCBhcGlfcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfYXBpX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfYXBpX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9hcGlfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9tZXNzYWdlXG4pXG5sZXQgYXBpX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2FwaV9tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9hcGlfbWVzc2FnZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19hcGlfbWVzc2FnZV9saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19hcGlfbWVzc2FnZV9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IF9hcGlfbWVzc2FnZV9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSA9IChcbiAgd3JpdGVfYXBpX3Jlc3VsdCB3cml0ZV9fYSB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19hIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0X2QxZjk4MjRfb2Zfc3RyaW5nIHJlYWRfX2EgcyA9XG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX2EgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN1bHQgd3JpdGVfX29rID0gKFxuICB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX29rXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3VsdCB3cml0ZV9fb2sgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdWx0IHdyaXRlX19vayBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayA9IChcbiAgcmVhZF9fcmVzdWx0X2QxZjk4MjQgcmVhZF9fb2tcbilcbmxldCByZXN1bHRfb2Zfc3RyaW5nIHJlYWRfX29rIHMgPVxuICByZWFkX3Jlc3VsdCByZWFkX19vayAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Bsb3RcbilcbmxldCBzdHJpbmdfb2ZfcGxvdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGxvdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9sb2dfbWVzc2FnZVxuKVxubGV0IHN0cmluZ19vZl9sb2dfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9sb2dfbWVzc2FnZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2xvZ19tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2xvZ19tZXNzYWdlXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbilcbmxldCBmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Vudmlyb25tZW50X2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IGVudmlyb25tZW50X2luZm9fb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Vudmlyb25tZW50X2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2NhdGFsb2dcbilcbmxldCBzdHJpbmdfb2ZfZGluX2NhdGFsb2cgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5fY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5fY2F0YWxvZ1xuKVxubGV0IGRpbl9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2RpbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluXG4pXG5sZXQgc3RyaW5nX29mX2RpbiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW4gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW4gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50ID0gKFxuICBmdW4gb2IgeCAtPlxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgUHJvamVjdExvYWQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdExvYWRcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfX3N0cmluZ19saXN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2RpblxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2xvZ19tZXNzYWdlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcGxvdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkluZm8geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uVHJhY2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRGVsZXRlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIkVudmlyb25tZW50SW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0Q3JlYXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3REZWxldGVcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDYXRhbG9nXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW50ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3REZWxldGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgc3RyaW5nX29mX19yZXN1bHRfNGNhNmI4ZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdWx0XzRjYTZiOGYgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzdWx0XzRjYTZiOGYgPSAoXG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF80Y2E2YjhmX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0XzRjYTZiOGYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgc3RyaW5nX29mX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmXG4pXG5sZXQgX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdF9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCBzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXNwb25zZSA9IChcbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVzcG9uc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wcm9qZWN0X3BhcnNlXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJzZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Byb2plY3RfcGFyc2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJzZVxuKVxubGV0IHByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Byb2plY3RfcGFyc2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuKVxubGV0IHByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlclxuKVxubGV0IHN0cmluZ19vZl9wbG90X3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9wbG90X3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfcGFyYW1ldGVyID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Bsb3RfcGFyYW1ldGVyXG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9kaW5faWRcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9kaW5faWRcbilcbmxldCBkaW5faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9pZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIkVudmlyb25tZW50SW5mb1xcXCJcIlxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENhdGFsb2dcXFwiXCJcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdENyZWF0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3REZWxldGUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiUHJvamVjdERlbGV0ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mb1xuICAgICAgICAgICAgfCBcIlByb2plY3RDYXRhbG9nXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyc2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGUgeFxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZV9jb250ZW50IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm8geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGFyYW1ldGVyIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0IHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0Xzg5MGQ5ZmUgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0Xzg5MGQ5ZmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF84OTBkOWZlID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXNwb25zZV9jb250ZW50IHJlYWRfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBfcmVzdWx0Xzg5MGQ5ZmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19yZXN1bHRfODkwZDlmZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA9IChcbiAgd3JpdGVfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgc3RyaW5nX29mX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHJlYWRfX3Jlc3VsdF84OTBkOWZlXG4pXG5sZXQgX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXNwb25zZSA9IChcbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3BvbnNlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgcmVzcG9uc2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVxdWVzdCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RMb2FkXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Byb2plY3RfcGFyc2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluX2lkXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25JbmZvXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblRyYWNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGFyYW1ldGVyXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhdXNlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXF1ZXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JlcXVlc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXF1ZXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXF1ZXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfaWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2lkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBpZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIDogXyAtPiAnZGF0YSBtZXNzYWdlIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICdkYXRhIG1lc3NhZ2UpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJpZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfaWRcbiAgICApXG4gICAgICBvYiB4LmlkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJkYXRhXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGF0YVxuICAgIClcbiAgICAgIG9iIHguZGF0YTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9tZXNzYWdlIHdyaXRlX19kYXRhID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX21lc3NhZ2Ugd3JpdGVfX2RhdGEgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfaWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX2RhdGEgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdhJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfZGF0YSA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RhdGFcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2lkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9pZFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCA9IChtYXRjaCAhZmllbGRfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImlkXCIpO1xuICAgICAgICAgICAgZGF0YSA9IChtYXRjaCAhZmllbGRfZGF0YSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZGF0YVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6ICdkYXRhIG1lc3NhZ2UpXG4gICAgICApXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcmVhZF9fZGF0YSBzID1cbiAgcmVhZF9tZXNzYWdlIHJlYWRfX2RhdGEgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfZGV0YWlsXG4pXG5sZXQgc3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lX2RldGFpbCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9maWxlX2xpbmUgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2ZpbGVfbGluZVxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZmlsZV9saW5lIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZVxuKVxubGV0IGZpbGVfbGluZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZmlsZV9saW5lIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQmFkUmVzcG9uc2Ugb2YgTXBpX21lc3NhZ2Vfai5yZXNwb25zZV9jb250ZW50XG5cbmxldCBvbl9tZXNzYWdlIChtYW5hZ2VyIDogQXBpLm1hbmFnZXJfc2ltdWxhdGlvbilcbiAgICAocG9zdF9tZXNzYWdlIDogc3RyaW5nIC0+IHVuaXQgTHd0LnQpICh0ZXh0X21lc3NhZ2UgOiBzdHJpbmcpIDogdW5pdCBMd3QudCA9XG4gIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVxdWVzdCB0ZXh0X21lc3NhZ2VcbiAgaW5cbiAgbGV0IGhhbmRsZXIgOlxuICAgICAgICAnYS5cbiAgICAgICAgKCdhIC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudCkgLT4gJ2EgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID1cbiAgIGZ1biBwYWNrIHJlc3VsdCAtPlxuICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAge1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmlkID0gbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmlkO1xuICAgICAgICBNcGlfbWVzc2FnZV9qLmRhdGEgPSBSZXN1bHRfdXRpbC5tYXAgcGFjayByZXN1bHQ7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdGV4dCA6IHN0cmluZyA9XG4gICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVzcG9uc2UgbWVzc2FnZVxuICAgIGluXG4gICAgcG9zdF9tZXNzYWdlIHRleHRcbiAgaW5cbiAgbWF0Y2ggbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGEgd2l0aFxuICB8IGBQcm9qZWN0TG9hZCBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9IC0+XG4gICAgbWFuYWdlciNzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBQcm9qZWN0TG9hZClcbiAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkNvbnRpbnVlKVxuICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uRGVsZXRlKVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgZmlsZV9saW5lX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZGluX2lkIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCBwbG90X3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwbG90X3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsUGxvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkluZm8gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mbyA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkluZm8gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25FZmZpY2llbmN5IHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19kaW5cbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dESU4gcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uVHJhY2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25UcmFjZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25PdXRwdXRzWmlwIChCYXNlNjQuZW5jb2RlIHJlc3VsdCkpXG4gIHwgYFNpbXVsYXRpb25QYXVzZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9wYXVzZSA+Pj0gaGFuZGxlciAoZnVuICgpIC0+IGBTaW11bGF0aW9uUGF1c2UpXG4gIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgPj49IGhhbmRsZXIgKGZ1biBzIC0+IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMpXG4gIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9zdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uU3RhcnQgcmVzdWx0KVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9iYXNlX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlIDpcbiAgICBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuXG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9iYXNlICgpIDogbWFuYWdlcl9iYXNlX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBtZXNzYWdlXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5fc2hhcmluZyBhc3QgdmFyaWFibGVfb3ZlcndyaXR0ZW5cbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlXG4gICAgICAgIChgUHJvamVjdExvYWRcbiAgICAgICAgICBBcGlfdHlwZXNfdC57IHBhdHRlcm5fc2hhcmluZzsgYXN0OyB2YXJpYWJsZV9vdmVyd3JpdHRlbiB9KVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RMb2FkIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9saXN0IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9saXN0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiBmbHV4X21hcCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmbHV4X21hcClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfai5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBsb2dfbWVzc2FnZSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBwbG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc25hcHNob3QpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkluZm9cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW5mbyBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uX3N0YXR1cylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5IDogQ291bnRlci5FZmZpY2llbmN5LnQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgZWZmaWNpZW5jeSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBlZmZpY2llbmN5KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc19qLmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIGluZm8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgaW5mbyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBpbmZvKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhdXNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblRyYWNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fb3V0cHV0c196aXAgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHJlc3VsdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQmFzZTY0LmRlY29kZSByZXN1bHQpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uUGFyYW1ldGVyXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblBhcmFtZXRlciByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25faWQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9pZClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG4gIGVuZFxuXG5tb2R1bGUgSW50TWFwID0gTW9kcy5JbnRNYXBcblxudHlwZSBjb250ZXh0ID0geyBtYWlsYm94ZXM6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnUgSW50TWFwLnQ7IGlkOiBpbnQgfVxuXG5jbGFzcyB0eXBlIHZpcnR1YWwgbWFuYWdlcl9tcGlfdHlwZSA9IG9iamVjdFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHNsZWVwIDogZmxvYXQgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudFxuICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIDogc3RyaW5nIC0+IHVuaXRcbiAgaW5oZXJpdCBBcGkubWFuYWdlcl9zaW11bGF0aW9uXG4gIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgOiBib29sXG4gIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5lbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyICgpIDogbWFuYWdlcl9tcGlfdHlwZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBjb250ZXh0ID0geyBtYWlsYm94ZXMgPSBJbnRNYXAuZW1wdHk7IGlkID0gMCB9XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgICBtZXRob2QgcHJpdmF0ZSB2aXJ0dWFsIHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIHJlY2VpdmUgKHJlc3BvbnNlX3RleHQgOiBzdHJpbmcpID1cbiAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICBNcGlfbWVzc2FnZV9qLm1lc3NhZ2Vfb2Zfc3RyaW5nIE1waV9tZXNzYWdlX2oucmVhZF9yZXNwb25zZVxuICAgICAgICAgIHJlc3BvbnNlX3RleHRcbiAgICAgIGluXG4gICAgICBtYXRjaCBJbnRNYXAucG9wIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZCBjb250ZXh0Lm1haWxib3hlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUsIG1haWxib3hlcyAtPlxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9IGluXG4gICAgICAgIEx3dC53YWtldXAgdmFsdWUgbWVzc2FnZS5NcGlfbWVzc2FnZV9qLmRhdGFcbiAgICAgIHwgTm9uZSwgbWFpbGJveGVzIC0+IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggbWFpbGJveGVzIH1cblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgKHJlcXVlc3QgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QpXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudCA9XG4gICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgIGxldCByZXN1bHQsIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgIGxldCAoKSA9IGNvbnRleHQgPC0geyBjb250ZXh0IHdpdGggaWQgPSBjb250ZXh0LmlkICsgMSB9IGluXG4gICAgICAgIGxldCBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IE1waV9tZXNzYWdlX2oubWVzc2FnZSA9XG4gICAgICAgICAgeyBNcGlfbWVzc2FnZV9qLmlkID0gY29udGV4dC5pZDsgTXBpX21lc3NhZ2Vfai5kYXRhID0gcmVxdWVzdCB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBtZXNzYWdlX3RleHQgOiBzdHJpbmcgPVxuICAgICAgICAgIE1waV9tZXNzYWdlX2ouc3RyaW5nX29mX21lc3NhZ2UgTXBpX21lc3NhZ2Vfai53cml0ZV9yZXF1ZXN0IG1lc3NhZ2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gc2VsZiNwb3N0X21lc3NhZ2UgbWVzc2FnZV90ZXh0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgY29udGV4dCA8LVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb250ZXh0IHdpdGhcbiAgICAgICAgICAgICAgbWFpbGJveGVzID0gSW50TWFwLmFkZCBjb250ZXh0LmlkIGZlZWRlciBjb250ZXh0Lm1haWxib3hlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgcmVzdWx0XG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwiS2FwcGEgaGFzIGRpZWRcIilcblxuICAgIG1ldGhvZCBwcml2YXRlIHNpbV9pc19jb21wdXRpbmcgPSBub3QgKEludE1hcC5pc19lbXB0eSBjb250ZXh0Lm1haWxib3hlcylcbiAgICBpbmhlcml0IG1hbmFnZXJfYmFzZSAoKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0ID1cbiAgKCBBcGlfdHlwZXNfdC5wbG90IG9wdGlvbixcbiAgICAoc3RyaW5nICogQXBpX3R5cGVzX3QuZGluKSBsaXN0LFxuICAgIHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgQXBpX3R5cGVzX3Quc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudCxcbiAgICBzdHJpbmcsXG4gICAgc3RyaW5nIClcbiAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRcblxubGV0IGFwaV9zbmFwc2hvdF9kb3QgKHNuYXBzaG90IDogQXBpX3R5cGVzX3Quc25hcHNob3QpID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X2RvdF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NuYXBzaG90X2thcHBhIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIDogc3RyaW5nID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIChEYXRhLnByaW50X3NuYXBzaG90ID91dWlkOk5vbmUpIHNuYXBzaG90XG5cbmxldCBhcGlfc2ltdWxhdGlvbl9zdGF0dXMgKHByb2dyZXNzIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcylcbiAgICAoZGV0YWlsIDogc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyA9XG4gIGxldCBvdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0ID1cbiAgICB7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID1cbiAgICAgICAgKG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgfCBTb21lIHBsb3QgLT4gTGlzdC5sZW5ndGggcGxvdC5EYXRhLnBsb3Rfc2VyaWVzKTtcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPVxuICAgICAgICBMaXN0Lmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5zaXplIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKCk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICBTdHJpbmcubGVuZ3RoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgfVxuICBpblxuICB7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4oKiByZXR1cm4gdGhlIGFnZW50IGNvdW50ICopXG5sZXQgYWdlbnRfY291bnQgKHNwZWNpZXMgOiBBcGlfdHlwZXNfdC5zaXRlX2dyYXBoKSA6IGludCA9IEFycmF5Lmxlbmd0aCBzcGVjaWVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgIChGcm9tKSBUaGUgQ2FtbFppcCBsaWJyYXJ5ICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDIwMDEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICopXG4oKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFdyaXRlIHVuZWZmaWNpZW50bHkgYnV0IGluIHB1cmUgT0NhbWwgdW5jb21wcmVzc2VkIFpJUCBhcmNoaXZlcyAqKVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nXG5cbmxldCB3cml0ZTEgb2MgbiA9IEJpZ2J1ZmZlci5hZGRfY2hhciBvYyAoQ2hhci51bnNhZmVfY2hyIG4pXG5cbmxldCB3cml0ZTIgb2MgbiA9XG4gIHdyaXRlMSBvYyBuO1xuICB3cml0ZTEgb2MgKG4gbHNyIDgpXG5cbmxldCB3cml0ZTQgb2MgbiA9XG4gIHdyaXRlMiBvYyAoSW50MzIudG9faW50IG4pO1xuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCBuIDE2KSlcblxubGV0IHdyaXRlNF9pbnQgb2MgbiA9XG4gIHdyaXRlMiBvYyBuO1xuICB3cml0ZTIgb2MgKG4gbHNyIDE2KVxuXG5sZXQgd3JpdGVzdHJpbmcgb2MgcyA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nIG9jIHNcblxudHlwZSBjb21wcmVzc2lvbl9tZXRob2QgPSBTdG9yZWRcblxudHlwZSBlbnRyeSA9IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgZXh0cmE6IHN0cmluZztcbiAgY29tbWVudDogc3RyaW5nO1xuICBtZXRoZDogY29tcHJlc3Npb25fbWV0aG9kO1xuICBtdGltZTogZmxvYXQ7XG4gIGNyYzogaW50MzI7XG4gIHVuY29tcHJlc3NlZF9zaXplOiBpbnQ7XG4gIGNvbXByZXNzZWRfc2l6ZTogaW50O1xuICAoKmlzX2RpcmVjdG9yeTogYm9vbDsqKVxuICBmaWxlX29mZnNldDogaW50MzI7XG59XG5cbnR5cGUgb3V0X2ZpbGUgPSB7XG4gIG9mX2ZpbGVuYW1lOiBzdHJpbmc7XG4gIG9mX2NoYW5uZWw6IEJpZ2J1ZmZlci50O1xuICBtdXRhYmxlIG9mX2VudHJpZXM6IGVudHJ5IGxpc3Q7XG4gIG9mX2NvbW1lbnQ6IHN0cmluZztcbn1cblxuKCpsZXQgZmlsZW5hbWVfaXNfZGlyZWN0b3J5IG5hbWUgPVxuICBTdHJpbmcubGVuZ3RoIG5hbWUgPiAwICYmIG5hbWUuW1N0cmluZy5sZW5ndGggbmFtZSAtIDFdID0gJy8nKilcblxuKCogQ29udmVydCBiZXR3ZWVuIFVuaXggZGF0ZXMgYW5kIERPUyBkYXRlcyAqKVxuXG5sZXQgZG9zdGltZV9vZl91bml4dGltZSB0ID1cbiAgbGV0IHRtID0gVW5peC5sb2NhbHRpbWUgdCBpblxuICAoICh0bS5Vbml4LnRtX3NlYyBsc3IgMSkgKyAodG0uVW5peC50bV9taW4gbHNsIDUpICsgKHRtLlVuaXgudG1faG91ciBsc2wgMTEpLFxuICAgIHRtLlVuaXgudG1fbWRheVxuICAgICsgKCh0bS5Vbml4LnRtX21vbiArIDEpIGxzbCA1KVxuICAgICsgKCh0bS5Vbml4LnRtX3llYXIgLSA4MCkgbHNsIDkpIClcblxuKCogT3BlbiBhIFpJUCBmaWxlIGZvciB3cml0aW5nICopXG5cbmxldCBvcGVuX291dCA/KGNvbW1lbnQgPSBcIlwiKSBmaWxlbmFtZSA9XG4gIGlmIFN0cmluZy5sZW5ndGggY29tbWVudCA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKGZpbGVuYW1lLCBcIlwiLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICB7XG4gICAgb2ZfZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICBvZl9jaGFubmVsID0gQmlnYnVmZmVyLmNyZWF0ZSA4MTkyO1xuICAgIG9mX2VudHJpZXMgPSBbXTtcbiAgICBvZl9jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4oKiBDbG9zZSBhIFpJUCBmaWxlIGZvciB3cml0aW5nLiAgQWRkIGNlbnRyYWwgZGlyZWN0b3J5LiAqKVxuXG5sZXQgd3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jIGUgPVxuICB3cml0ZTQgb2MgKEludDMyLm9mX2ludCAweDAyMDE0YjUwKTtcbiAgKCogc2lnbmF0dXJlICopXG4gIGxldCB2ZXJzaW9uID1cbiAgICBtYXRjaCBlLm1ldGhkIHdpdGhcbiAgICB8IFN0b3JlZCAtPiAxMFxuICBpblxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBtYWRlIGJ5ICopXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAobWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMCk7XG4gICgqIG1ldGhvZCAqKVxuICBsZXQgdGltZSwgZGF0ZSA9IGRvc3RpbWVfb2ZfdW5peHRpbWUgZS5tdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgZS5jcmM7XG4gICgqIENSQzMyICopXG4gIHdyaXRlNF9pbnQgb2MgZS5jb21wcmVzc2VkX3NpemU7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTRfaW50IG9jIGUudW5jb21wcmVzc2VkX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBlLmNvbW1lbnQpO1xuICAoKiBjb21tZW50IGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgc3RhcnQgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGludGVybmFsIGF0dHJpYnV0ZXMgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBleHRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNCBvYyBlLmZpbGVfb2Zmc2V0O1xuICAoKiBvZmZzZXQgb2YgbG9jYWwgaGVhZGVyICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZmlsZW5hbWU7XG4gICgqIGZpbGVuYW1lICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAgd3JpdGVzdHJpbmcgb2MgZS5jb21tZW50ICgqIGZpbGUgY29tbWVudCAqKVxuXG5sZXQgY2xvc2Vfb3V0IG9maWxlID1cbiAgbGV0IG9jID0gb2ZpbGUub2ZfY2hhbm5lbCBpblxuICBsZXQgc3RhcnRfY2QgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIExpc3QuaXRlciAod3JpdGVfZGlyZWN0b3J5X2VudHJ5IG9jKSAoTGlzdC5yZXYgb2ZpbGUub2ZfZW50cmllcyk7XG4gIGxldCBjZF9zaXplID0gQmlnYnVmZmVyLmxlbmd0aCBvYyAtIHN0YXJ0X2NkIGluXG4gIGxldCBudW1fZW50cmllcyA9IExpc3QubGVuZ3RoIG9maWxlLm9mX2VudHJpZXMgaW5cbiAgaWYgbnVtX2VudHJpZXMgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgXCJcIiwgXCJ0b28gbWFueSBlbnRyaWVzXCIpKTtcbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNjA1NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTIgb2MgMDtcbiAgKCogZGlzayBudW1iZXIgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIG51bWJlciBvZiBkaXNrIHdpdGggY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIG51bV9lbnRyaWVzO1xuICAoKiAjIGVudHJpZXMgaW4gdGhpcyBkaXNrICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlNF9pbnQgb2MgY2Rfc2l6ZTtcbiAgKCogc2l6ZSBvZiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIHN0YXJ0X2NkO1xuICAoKiBvZmZzZXQgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIG9maWxlLm9mX2NvbW1lbnQpO1xuICAoKiBsZW5ndGggb2YgY29tbWVudCAqKVxuICB3cml0ZXN0cmluZyBvYyBvZmlsZS5vZl9jb21tZW50O1xuICAoKiBjb21tZW50ICopXG4gIEJpZ2J1ZmZlci5jb250ZW50cyBvY1xuXG4oKiBXcml0ZSBhIGxvY2FsIGZpbGUgaGVhZGVyIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgKilcblxubGV0IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBmaWxlbmFtZSA9XG4gIGlmIGxldmVsIDw+IDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZha2VfemlwIGNhbm5vdCBjb21wcmVzc1wiKSk7XG4gIGlmIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiZmlsZW5hbWUgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGV4dHJhID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImV4dHJhIGRhdGEgdG9vIGxvbmdcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgZmlsZW5hbWUsIFwiY29tbWVudCB0b28gbG9uZ1wiKSk7XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHBvcyA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwNDAzNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgIDEwXG4gICAgZWxzZVxuICAgICAgMjBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgKilcbiAgd3JpdGUyIG9jIDg7XG4gICgqIGZsYWdzICopXG4gIHdyaXRlMiBvY1xuICAgIChpZiBsZXZlbCA9IDAgdGhlblxuICAgICAgIDBcbiAgICAgZWxzZVxuICAgICAgIDgpO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIG10aW1lIGluXG4gIHdyaXRlMiBvYyB0aW1lO1xuICAoKiBsYXN0IG1vZCB0aW1lICopXG4gIHdyaXRlMiBvYyBkYXRlO1xuICAoKiBsYXN0IG1vZCBkYXRlICopXG4gIHdyaXRlNCBvYyBJbnQzMi56ZXJvO1xuICAoKiBDUkMzMiAtIHRvIGJlIGZpbGxlZCBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIGNvbXByZXNzZWQgc2l6ZSAtIGxhdGVyICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogdW5jb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpO1xuICAoKiBmaWxlbmFtZSBsZW5ndGggKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGV4dHJhKTtcbiAgKCogZXh0cmEgbGVuZ3RoICopXG4gIHdyaXRlc3RyaW5nIG9jIGZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBleHRyYTtcbiAgKCogZXh0cmEgaW5mbyAqKVxuICB7XG4gICAgZmlsZW5hbWU7XG4gICAgZXh0cmE7XG4gICAgY29tbWVudDtcbiAgICBtZXRoZCA9IFN0b3JlZDtcbiAgICBtdGltZTtcbiAgICBjcmMgPSBJbnQzMi56ZXJvO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICBjb21wcmVzc2VkX3NpemUgPSAwO1xuICAgICgqaXNfZGlyZWN0b3J5ID0gZmlsZW5hbWVfaXNfZGlyZWN0b3J5IGZpbGVuYW1lOyopXG4gICAgZmlsZV9vZmZzZXQgPSBJbnQzMi5vZl9pbnQgcG9zO1xuICB9XG5cbigqIFdyaXRlIGEgZGF0YSBkZXNjcmlwdG9yIGFuZCB1cGRhdGUgdGhlIGVudHJ5ICopXG5cbmxldCBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlbnRyeSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwODA3NGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICB3cml0ZTQgb2MgY3JjO1xuICAoKiBDUkMgKilcbiAgd3JpdGU0X2ludCBvYyBjb21wcl9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyB1bmNvbXByX3NpemU7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplICopXG4gIHtcbiAgICBlbnRyeSB3aXRoXG4gICAgY3JjO1xuICAgIHVuY29tcHJlc3NlZF9zaXplID0gdW5jb21wcl9zaXplO1xuICAgIGNvbXByZXNzZWRfc2l6ZSA9IGNvbXByX3NpemU7XG4gIH1cblxubGV0IHVwZGF0ZV9jcmMgY3JjIGJ1ZiBzdGFydCBsZW4gPSBDcmMzMi5zdHJpbmcgfmNyYyBidWYgc3RhcnQgbGVuXG5cbigqIEFkZCBhbiBlbnRyeSB3aXRoIHRoZSBjb250ZW50cyBvZiBhIHN0cmluZyAqKVxuXG5sZXQgYWRkX2VudHJ5IGRhdGEgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSB1cGRhdGVfY3JjIEludDMyLnplcm8gZGF0YSAwIChTdHJpbmcubGVuZ3RoIGRhdGEpIGluXG4gIGxldCBjb21wcl9zaXplID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBCaWdidWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKTtcbiAgICAgIFN0cmluZy5sZW5ndGggZGF0YVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuICBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlIGNyYyBjb21wcl9zaXplIChTdHJpbmcubGVuZ3RoIGRhdGEpIGUgaW5cbiAgb2ZpbGUub2ZfZW50cmllcyA8LSBlJyA6OiBvZmlsZS5vZl9lbnRyaWVzXG5cbigqXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYW4gaW4gY2hhbm5lbCAqKVxuXG5sZXQgY29weV9jaGFubmVsX3RvX2VudHJ5IGljIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgPyhtdGltZSA9IFVuaXgudGltZSgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gcmVmIEludDMyLnplcm8gaW5cbiAgbGV0IChjb21wcl9zaXplLCB1bmNvbXByX3NpemUpID1cbiAgICBtYXRjaCBsZXZlbCB3aXRoXG4gICAgICAwIC0+XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgNDA5NiBpblxuICAgICAgICBsZXQgcmVjIGNvcHkgc3ogPVxuICAgICAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIDAgKEJ5dGVzLmxlbmd0aCBidWYpIGluXG4gICAgICAgICAgaWYgciA9IDAgdGhlbiBzeiBlbHNlIGJlZ2luXG4gICAgICAgICAgICBjcmMgOj0gdXBkYXRlX2NyYyAhY3JjIGJ1ZiAwIHI7XG4gICAgICAgICAgICBCaXRCdWZmZXIuYWRkX3N1YnN0cmluZyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiAwIHI7XG4gICAgICAgICAgICBjb3B5IChzeiArIHIpXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgIGxldCBzaXplID0gY29weSAwIGluXG4gICAgICAgIChzaXplLCBzaXplKVxuICAgIHwgXyAtPiByYWlzZSAoRXJyb3Iob2ZpbGUub2ZfZmlsZW5hbWUsIG5hbWUsIFwiY29tcHJlc3Npb24gZXJyb3JcIikpIGluXG4gIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyBjb21wcl9zaXplIHVuY29tcHJfc2l6ZSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBmaWxlICopXG5cbmxldCBjb3B5X2ZpbGVfdG9fZW50cnkgaW5maWxlbmFtZSBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/KGxldmVsID0gMCkgP210aW1lIG5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBpbmZpbGVuYW1lIGluXG4gIGxldCBtdGltZScgPVxuICAgIG1hdGNoIG10aW1lIHdpdGhcbiAgICAgIFNvbWUgdCAtPiBtdGltZVxuICAgIHwgTm9uZSAtPlxuICAgICAgICB0cnkgU29tZSgoVW5peC5zdGF0IGluZmlsZW5hbWUpLlVuaXguc3RfbXRpbWUpXG4gICAgICAgIHdpdGggVW5peC5Vbml4X2Vycm9yKF8sXyxfKSAtPiBOb25lIGluXG4gIHRyeVxuICAgIGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSB+ZXh0cmEgfmNvbW1lbnQgfmxldmVsID9tdGltZTptdGltZScgbmFtZTtcbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljXG4gIHdpdGggeCAtPlxuICAgIFBlcnZhc2l2ZXMuY2xvc2VfaW4gaWM7IHJhaXNlIHhcbiopXG5cbigqIEFkZCBhbiBlbnRyeSB3aG9zZSBjb250ZW50IHdpbGwgYmUgcHJvZHVjZWQgYnkgdGhlIGNhbGxlciAqKVxuXG5sZXQgYWRkX2VudHJ5X2dlbmVyYXRvciBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIikgPyhsZXZlbCA9IDApXG4gICAgPyhtdGltZSA9IFVuaXgudGltZSAoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCBjb21wcl9zaXplID0gcmVmIDAgaW5cbiAgbGV0IHVuY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCBmaW5pc2hlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY2hlY2sgKCkgPVxuICAgIGlmICFmaW5pc2hlZCB0aGVuXG4gICAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImVudHJ5IGFscmVhZHkgZmluaXNoZWRcIikpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGZpbmlzaGVkIDo9IHRydWU7XG4gICAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSAhY3JjICFjb21wcl9zaXplICF1bmNvbXByX3NpemUgZSBpblxuICAgIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuICBpblxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgMCAtPlxuICAgICggKGZ1biBidWYgcG9zIGxlbiAtPlxuICAgICAgICBjaGVjayAoKTtcbiAgICAgICAgQmlnYnVmZmVyLmFkZF9zdWJieXRlcyBvZmlsZS5vZl9jaGFubmVsIGJ1ZiBwb3MgbGVuO1xuICAgICAgICBjb21wcl9zaXplIDo9ICFjb21wcl9zaXplICsgbGVuO1xuICAgICAgICB1bmNvbXByX3NpemUgOj0gIXVuY29tcHJfc2l6ZSArIGxlbiksXG4gICAgICBmdW4gKCkgLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIGZpbmlzaCAoKSApXG4gIHwgXyAtPiByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogRXJyb3IgbWVzc2FnZXMgKilcblxuKCoqIEludGVyZmFjZSB0byBrYXBwYSBydW50aW1lICopXG5sZXQgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCA9IFwicHJvY2VzcyBub3QgcGF1c2VkXCJcblxuKCoqICBTeXN0ZW0gcHJvY2Vzc1xuXG4gICAgIFRoZXNlIGFyZSBzeXN0ZW0gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXRcbiAgICAgdmFyeS5cbiopXG5jbGFzcyB0eXBlIHN5c3RlbV9wcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCBsb2cgOiA/ZXhuOmV4biAtPiBzdHJpbmcgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgeWllbGQgOiB1bml0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gOiB1bml0IC0+IGZsb2F0XG5lbmRcblxuKCoqIFRyaXZpYWwgaW1wbGVtZW50YXRpb24gcHJpbWFyaWx5IGZvciB1bml0IHRlc3RpbmcuICopXG5jbGFzcyBudWxsX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2VzcyA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCBsb2cgP2V4biAoXyA6IHN0cmluZykgPVxuICAgICAgbGV0ICgpID0gaWdub3JlIGV4biBpblxuICAgICAgTHd0LnJldHVybl91bml0XG5cbiAgICBtZXRob2QgeWllbGQgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMFxuICBlbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlzX3J1bm5pbmc6IGJvb2w7XG4gIG11dGFibGUgcnVuX2ZpbmFsaXplOiBib29sO1xuICBtdXRhYmxlIHBhdXNlX2NvbmRpdGlvbjogKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sO1xuICBkdW1wSWZEZWFkbG9ja2VkOiBib29sO1xuICBtYXhDb25zZWN1dGl2ZUNsYXNoOiBpbnQ7XG4gIHBhdHRlcm5TaGFyaW5nOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWw7XG4gIGNvdW50ZXI6IENvdW50ZXIudDtcbiAgbG9nX2J1ZmZlcjogQnVmZmVyLnQ7XG4gIGxvZ19mb3JtOiBGb3JtYXQuZm9ybWF0dGVyO1xuICBtdXRhYmxlIHBsb3Q6IERhdGEucGxvdDtcbiAgbXV0YWJsZSBzbmFwc2hvdHM6IERhdGEuc25hcHNob3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBkaW5zOiAoc3RyaW5nICogRGF0YS5kaW4pIGxpc3Q7XG4gIG11dGFibGUgc3BlY2llczpcbiAgICAoZmxvYXQgKiBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnQpIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBmaWxlczogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudDtcbiAgbXV0YWJsZSBlcnJvcl9tZXNzYWdlczogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0O1xuICAoKm11dGFibGUqKSB0cmFjZTogQnVmZmVyLnQ7XG4gIGlucHV0c19idWZmZXI6IEJ1ZmZlci50O1xuICBpbnB1dHNfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWw7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICBtdXRhYmxlIGVudjogTW9kZWwudDtcbiAgbXV0YWJsZSBncmFwaDogUnVsZV9pbnRlcnByZXRlci50O1xuICBtdXRhYmxlIHN0YXRlOiBTdGF0ZV9pbnRlcnByZXRlci50O1xuICBpbml0X2w6IChQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUpIGxpc3Q7XG4gIG11dGFibGUgbGFzdHlpZWxkOiBmbG9hdDtcbn1cbigqKiBTdGF0ZSBvZiB0aGUgcnVubmluZyBzaW11bGF0aW9uLiAqKVxuXG5sZXQgY3JlYXRlX3QgfmxvZ19mb3JtIH5sb2dfYnVmZmVyIH5jb250YWN0X21hcCB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm1cbiAgICB+ZHVtcElmRGVhZGxvY2tlZCB+bWF4Q29uc2VjdXRpdmVDbGFzaCB+cGF0dGVyblNoYXJpbmcgfmVudiB+Y291bnRlciB+Z3JhcGhcbiAgICB+c3RhdGUgfmluaXRfbCB+bGFzdHlpZWxkIH5hc3QgOiB0ID1cbiAge1xuICAgIGlzX3J1bm5pbmcgPSBmYWxzZTtcbiAgICBydW5fZmluYWxpemUgPSBmYWxzZTtcbiAgICBjb3VudGVyO1xuICAgIGxvZ19idWZmZXI7XG4gICAgbG9nX2Zvcm07XG4gICAgcGF1c2VfY29uZGl0aW9uID0gQWxnX2V4cHIuRkFMU0U7XG4gICAgZHVtcElmRGVhZGxvY2tlZDtcbiAgICBtYXhDb25zZWN1dGl2ZUNsYXNoO1xuICAgIHBhdHRlcm5TaGFyaW5nO1xuICAgIHBsb3QgPSBEYXRhLmluaXRfcGxvdCBlbnY7XG4gICAgc25hcHNob3RzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZGlucyA9IFtdO1xuICAgIHNwZWNpZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBmaWxlcyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGVycm9yX21lc3NhZ2VzID0gW107XG4gICAgdHJhY2UgPSBCdWZmZXIuY3JlYXRlIDEwMjQ7XG4gICAgaW5wdXRzX2J1ZmZlcjtcbiAgICBpbnB1dHNfZm9ybTtcbiAgICBhc3Q7XG4gICAgY29udGFjdF9tYXA7XG4gICAgZW52O1xuICAgIGdyYXBoO1xuICAgIHN0YXRlO1xuICAgIGluaXRfbDtcbiAgICBsYXN0eWllbGQ7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSB+b3V0cHV0cyByYW5kb21fc3RhdGUgdCA9XG4gIGxldCAoKSA9IENvdW50ZXIucmVpbml0aWFsaXplIHQuY291bnRlciBpblxuICAoKiBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfZmx1c2ggdC5sb2dfZm9ybSAoKSBpblxuICAgICBsZXQgKCkgPSBCdWZmZXIucmVzZXQgdC5sb2dfYnVmZmVyIGluKilcbiAgdC5pc19ydW5uaW5nIDwtIGZhbHNlO1xuICB0LnJ1bl9maW5hbGl6ZSA8LSBmYWxzZTtcbiAgdC5wYXVzZV9jb25kaXRpb24gPC0gQWxnX2V4cHIuRkFMU0U7XG4gIHQucGxvdCA8LSBEYXRhLmluaXRfcGxvdCB0LmVudjtcbiAgdC5zbmFwc2hvdHMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZGlucyA8LSBbXTtcbiAgdC5maWxlcyA8LSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgdC5lcnJvcl9tZXNzYWdlcyA8LSBbXTtcbiAgdC5ncmFwaCA8LVxuICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2U6ZmFsc2UgcmFuZG9tX3N0YXRlIHQuZW52XG4gICAgICB0LmNvdW50ZXI7XG4gIHQuc3RhdGUgPC1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudlxuXG5sZXQgY2F0Y2hfZXJyb3IgaGFuZGxlciA9IGZ1bmN0aW9uXG4gIHwgRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpKVxuICB8IGV4biAtPlxuICAgIGxldCBtZXNzYWdlID1cbiAgICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZXhuIHdpdGggXyAtPiBcInVuc3BlY2lmaWVkIGV4Y2VwdGlvbiB0aHJvd25cIlxuICAgIGluXG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSlcblxubGV0IHBhcnNlIH5wYXR0ZXJuU2hhcmluZyAoYXN0IDogQXN0LnBhcnNpbmdfY29tcGlsKSB2YXJfb3ZlcndyaXRlXG4gICAgc3lzdGVtX3Byb2Nlc3MgPVxuICBsZXQgeWllbGQgPSBzeXN0ZW1fcHJvY2VzcyN5aWVsZCBpblxuICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgbGV0IGlucHV0c19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBpbnB1dHNfYnVmZmVyIGluXG4gIGxldCBjb25mLCBfLCBfLCBfID0gQ29uZmlndXJhdGlvbi5wYXJzZSBhc3QuQXN0LmNvbmZpZ3VyYXRpb25zIGluXG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gRGF0YS5wcmludF93YXJuaW5nIH5wb3MgbG9nX2Zvcm0gbXNnIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIEx3dC53cmFwMlxuICAgICAgICAoZnVuIHZhcl9vdmVyd3JpdGUgLT5cbiAgICAgICAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+dmFyX292ZXJ3cml0ZSlcbiAgICAgICAgdmFyX292ZXJ3cml0ZSBhc3RcbiAgICAgID4+PSBmdW4gKGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhKSAtPlxuICAgICAgeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgKCogVGhlIGxhc3QgeWllbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgbGFzdCB5aWVsZC5cbiAgICAgICAgIEl0IGlzIGdvdHRlbiBoZXJlIGZvciB0aGUgaW5pdGlhbCBsYXN0IHllaWxkIHZhbHVlLiAqKVxuICAgICAgbGV0IGxhc3R5aWVsZCA9IFN5cy50aW1lICgpIGluXG4gICAgICB0cnlcbiAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBjb21waWxlIG11c3QgaGF2ZSB1c2VkIEx3dC5mYWlsLlxuICAgICAgICAgICBTb21ldGhpbmcgaXMgd3JvbmcgZm9yIG5vdyAqKVxuICAgICAgICBsZXQgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGxvZ19mb3JtIFwiJXNALlwiIHNcbiAgICAgICAgICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGxvZ19mb3JtIG1zZ1xuICAgICAgICAgIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5ESU4gXyB8IERhdGEuU3BlY2llcyBfXG4gICAgICAgICAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfXG4gICAgICAgICAgfCBEYXRhLlByaW50IF8gLT5cbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBFdmFsLmNvbXBpbGUgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICB+cGF1c2U6KGZ1biBmIC0+IEx3dC5iaW5kICh5aWVsZCAoKSkgZilcbiAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gP3Jlc2NhbGVfaW5pdDpOb25lID9vdmVyd3JpdGVfdDA6Tm9uZVxuICAgICAgICAgIH5jb21waWxlX21vZGVfb246ZmFsc2Ugfm91dHB1dHMgfnNoYXJpbmc6cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgYXN0X2NvbXBpbGVkX2RhdGEucmVzdWx0XG4gICAgICAgID4+PSBmdW4gKGVudiwgd2l0aF90cmFjZSwgaW5pdF9sKSAtPlxuICAgICAgICBsZXQgY291bnRlciA9XG4gICAgICAgICAgQ291bnRlci5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0X3Q6KDAuIDogZmxvYXQpXG4gICAgICAgICAgICB+aW5pdF9lOigwIDogaW50KVxuICAgICAgICAgICAgP21heF90aW1lOk5vbmUgP21heF9ldmVudDpOb25lIH5wbG90X3BlcmlvZDooQ29uZmlndXJhdGlvbi5EVCAxLilcbiAgICAgICAgICAgIH5uYl9ydWxlczooTW9kZWwubmJfcnVsZXMgZW52KSAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhlU2VlZCA9XG4gICAgICAgICAgbWF0Y2ggY29uZi5Db25maWd1cmF0aW9uLnNlZWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgICAgICAgICAgbGV0IG91dCA9IFJhbmRvbS5iaXRzICgpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIlJhbmRvbSBzZWVkIHVzZWQ6ICVpQC5cIiBvdXQgaW5cbiAgICAgICAgICAgIG91dFxuICAgICAgICAgIHwgU29tZSB0aGVTZWVkIC0+IHRoZVNlZWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHRoZVNlZWQgfF0gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzID91dWlkOk5vbmVcbiAgICAgICAgICAgIHsgY29uZiB3aXRoIENvbmZpZ3VyYXRpb24uc2VlZCA9IFNvbWUgdGhlU2VlZCB9XG4gICAgICAgICAgICBlbnYgaW5wdXRzX2Zvcm0gaW5pdF9sXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uID1cbiAgICAgICAgICBjcmVhdGVfdCB+Y29udGFjdF9tYXA6YXN0X2NvbXBpbGVkX2RhdGEuY29udGFjdF9tYXAgfmxvZ19mb3JtXG4gICAgICAgICAgICB+bG9nX2J1ZmZlciB+aW5wdXRzX2J1ZmZlciB+aW5wdXRzX2Zvcm0gfmFzdCB+ZW52IH5jb3VudGVyXG4gICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDpjb25mLkNvbmZpZ3VyYXRpb24uZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6Y29uZi5Db25maWd1cmF0aW9uLm1heENvbnNlY3V0aXZlQ2xhc2hcbiAgICAgICAgICAgIH5wYXR0ZXJuU2hhcmluZ1xuICAgICAgICAgICAgfmdyYXBoOlxuICAgICAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52XG4gICAgICAgICAgICAgICAgIGNvdW50ZXIpXG4gICAgICAgICAgICB+c3RhdGU6XG4gICAgICAgICAgICAgIChTdGF0ZV9pbnRlcnByZXRlci5lbXB0eSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIGNvdW50ZXIgZW52KVxuICAgICAgICAgICAgfmluaXRfbCB+bGFzdHlpZWxkXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb24pXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgKGNhdGNoX2Vycm9yIChmdW4geCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIHggXSkpKSBlKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IG91dHB1dHMgKHNpbXVsYXRpb24gOiB0KSA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5ESU4gKGZsdXhfbmFtZSwgZmx1eF9tYXApIC0+XG4gICAgc2ltdWxhdGlvbi5kaW5zIDwtIChmbHV4X25hbWUsIGZsdXhfbWFwKSA6OiBzaW11bGF0aW9uLmRpbnNcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIC0+IGFzc2VydCBmYWxzZVxuICB8IERhdGEuUGxvdCBuZXdfb2JzZXJ2YWJsZXMgLT5cbiAgICBzaW11bGF0aW9uLnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBzaW11bGF0aW9uLnBsb3RcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peCkgLT5cbiAgICBsZXQgcCA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBmaWxlIHNpbXVsYXRpb24uc3BlY2llcyBpblxuICAgIHNpbXVsYXRpb24uc3BlY2llcyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGZpbGUgKCh0aW1lLCBtaXgpIDo6IHApIHNpbXVsYXRpb24uc3BlY2llc1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIC0+XG4gICAgKG1hdGNoIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgICB8IFNvbWUgbmEgLT5cbiAgICAgIGxldCBsaW5lcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBbXSBuYSBzaW11bGF0aW9uLmZpbGVzIGluXG4gICAgICBzaW11bGF0aW9uLmZpbGVzIDwtXG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBuYVxuICAgICAgICAgIChmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dCA6OiBsaW5lcylcbiAgICAgICAgICBzaW11bGF0aW9uLmZpbGVzKVxuICB8IERhdGEuU25hcHNob3QgKGZpbGVuYW1lLCBzbmFwc2hvdCkgLT5cbiAgICBsZXQgYWxyZWFkeV90aGVyZSB4ID0gTW9kcy5TdHJpbmdNYXAubWVtIHggc2ltdWxhdGlvbi5zbmFwc2hvdHMgaW5cbiAgICBsZXQgc25hcHNob3RfZmlsZSA9XG4gICAgICBUb29scy5maW5kX2F2YWlsYWJsZV9uYW1lIH5hbHJlYWR5X3RoZXJlIGZpbGVuYW1lXG4gICAgICAgIH5mYWN1bHRhdGl2ZTooc3RyaW5nX29mX2ludCBzbmFwc2hvdC5EYXRhLnNuYXBzaG90X2V2ZW50KVxuICAgICAgICB+ZXh0Ok5vbmVcbiAgICBpblxuICAgIHNpbXVsYXRpb24uc25hcHNob3RzIDwtXG4gICAgICBNb2RzLlN0cmluZ01hcC5hZGQgc25hcHNob3RfZmlsZSBzbmFwc2hvdCBzaW11bGF0aW9uLnNuYXBzaG90c1xuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgc2ltdWxhdGlvbi5sb2dfZm9ybSBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3Mgc2ltdWxhdGlvbi5sb2dfZm9ybSBtc2dcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc2ltdWxhdGlvbi50cmFjZVxuICAgICAgICAoaWYgQnVmZmVyLmxlbmd0aCBzaW11bGF0aW9uLnRyYWNlID0gMCB0aGVuXG4gICAgICAgICAgICdbJ1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICAnLCcpXG4gICAgaW5cbiAgICBUcmFjZS53cml0ZV9zdGVwIHNpbXVsYXRpb24udHJhY2Ugc3RcblxubGV0IGludGVyYWN0aXZlX291dHB1dHMgZm9ybWF0dGVyIHQgPSBmdW5jdGlvblxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJXNALlwiIHNcbiAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBmb3JtYXR0ZXIgbXNnXG4gIHwgRGF0YS5QcmludCBmaWxlX2xpbmUgd2hlbiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfbmFtZSA9IE5vbmUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlc0AuXCIgZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgfCAoIERhdGEuRElOIF8gfCBEYXRhLkRlbHRhQWN0aXZpdGllcyBfIHwgRGF0YS5QbG90IF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgIHwgRGF0YS5QcmludCBfIHwgRGF0YS5TbmFwc2hvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgXyApIGFzIHYgLT5cbiAgICBvdXRwdXRzIHQgdlxuXG5sZXQgdGltZV95aWVsZCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDogdW5pdCBMd3QudCA9XG4gIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgaWYgdGltZSAtLiB0Lmxhc3R5aWVsZCA+IHN5c3RlbV9wcm9jZXNzI21pbl9ydW5fZHVyYXRpb24gKCkgdGhlbiAoXG4gICAgbGV0ICgpID0gdC5sYXN0eWllbGQgPC0gdGltZSBpblxuICAgIHN5c3RlbV9wcm9jZXNzI3lpZWxkICgpXG4gICkgZWxzZVxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgZmluYWxpemVfc2ltdWxhdGlvbiB+KHQgOiB0KSA6IHVuaXQgPVxuICBTdGF0ZV9pbnRlcnByZXRlci5lbmRfb2Zfc2ltdWxhdGlvbiB+b3V0cHV0czoob3V0cHV0cyB0KSB0LmVudiB0LmNvdW50ZXJcbiAgICB0LmdyYXBoIHQuc3RhdGVcblxubGV0IHJ1bl9zaW11bGF0aW9uIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgc3RvcHBlZCA6XG4gICAgdW5pdCBMd3QudCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCByc3RvcCA9IHJlZiBzdG9wcGVkIGluXG4gICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgKHRyeVxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHdoaWxlXG4gICAgICAgICAgICAgICAobm90ICFyc3RvcClcbiAgICAgICAgICAgICAgICYmIFN5cy50aW1lICgpIC0uIHQubGFzdHlpZWxkXG4gICAgICAgICAgICAgICAgICA8IHN5c3RlbV9wcm9jZXNzI21pbl9ydW5fZHVyYXRpb24gKClcbiAgICAgICAgICAgICBkb1xuICAgICAgICAgICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnID1cbiAgICAgICAgICAgICAgICAgU3RhdGVfaW50ZXJwcmV0ZXIuYV9sb29wIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICAgICAgfmR1bXBJZkRlYWRsb2NrZWQ6dC5kdW1wSWZEZWFkbG9ja2VkXG4gICAgICAgICAgICAgICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2g6dC5tYXhDb25zZWN1dGl2ZUNsYXNoIHQuZW52IHQuY291bnRlclxuICAgICAgICAgICAgICAgICAgIHQuZ3JhcGggdC5zdGF0ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHJzdG9wIDo9XG4gICAgICAgICAgICAgICAgIHN0b3BcbiAgICAgICAgICAgICAgICAgfHwgUnVsZV9pbnRlcnByZXRlci52YWx1ZV9ib29sIHQuY291bnRlciBncmFwaCdcbiAgICAgICAgICAgICAgICAgICAgICB0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICAgICAgICAgICAgIHQuZ3JhcGggPC0gZ3JhcGgnO1xuICAgICAgICAgICAgICAgdC5zdGF0ZSA8LSBzdGF0ZSdcbiAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgd2l0aCBlIC0+IEx3dC5mYWlsIGUpXG4gICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgaWYgIXJzdG9wIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9IHQuaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICApIGVsc2UgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgICBzeXN0ZW1fcHJvY2VzcyN5aWVsZCAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgbGV0ICgpID0gdC5sYXN0eWllbGQgPC0gU3lzLnRpbWUgKCkgaW5cbiAgICAgICAgICBpdGVyICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGluXG4gICAgICBpdGVyICgpID4+PSBmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IGlmIHQucnVuX2ZpbmFsaXplIHRoZW4gZmluYWxpemVfc2ltdWxhdGlvbiB+dCBpblxuICAgICAgTHd0LnJldHVybl91bml0KVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIGxldCAoKSA9IHQuaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgbGV0ICgpID0gdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXSBpblxuICAgICAgICAgTHd0LnJldHVybl91bml0KSlcblxubGV0IHN0YXJ0IH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2VzcylcbiAgICB+KHBhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCBsZXhidWYgPVxuICAgIExleGluZy5mcm9tX3N0cmluZyBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb25cbiAgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgKCpsZXQgKCkgPVxuICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9tYXhfdGltZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgICBpbiopXG4gICAgICBsZXQgcmFuZG9tX3N0YXRlID1cbiAgICAgICAgbWF0Y2ggcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fc2VlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKClcbiAgICAgICAgfCBTb21lIHNlZWQgLT4gUmFuZG9tLlN0YXRlLm1ha2UgW3wgc2VlZCB8XVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHJlaW5pdGlhbGl6ZSByYW5kb21fc3RhdGUgfm91dHB1dHM6KG91dHB1dHMgdCkgdCBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwYXVzZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfYm9vbF9leHByIEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgIEx3dC53cmFwNFxuICAgICAgICAgIChFdmFsdWF0b3IuZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5ncmFwaCBwYXVzZVxuICAgICAgICA+Pj0gZnVuIChlbnYnLCBncmFwaCcsIGInJykgLT5cbiAgICAgICAgbGV0ICgpID0gdC5lbnYgPC0gZW52JyBpblxuICAgICAgICBsZXQgKCkgPSB0LmdyYXBoIDwtIGdyYXBoJyBpblxuICAgICAgICBsZXQgKCkgPSB0LnBhdXNlX2NvbmRpdGlvbiA8LSBiJycgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBDb3VudGVyLnNldF9wbG90X3BlcmlvZCB0LmNvdW50ZXJcbiAgICAgICAgICAgIChDb25maWd1cmF0aW9uLkRUIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Bsb3RfcGVyaW9kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgYnVpbGRfaW5pdGlhbF9zdGF0ZSBtdXN0IGhhdmUgYmVlblxuICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aXRoIEx3dC5mYWlsLiBTb21ldGhpbmcgaXMgd3JvbmcgZm9yIG5vdy4uLiAqKVxuICAgICAgICAgICAgICAgIEV2YWwuYnVpbGRfaW5pdGlhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgfmJpbmQ6KGZ1biB4IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgdGltZV95aWVsZCB+c3lzdGVtX3Byb2Nlc3MgfnQgPj49IGZ1biAoKSAtPiB4ID4+PSBmKVxuICAgICAgICAgICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICAgICB+d2l0aF90cmFjZTpwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zdG9yZV90cmFjZVxuICAgICAgICAgICAgICAgICAgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSB0LmNvdW50ZXIgdC5lbnYgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgICAgICB0LmluaXRfbFxuICAgICAgICAgICAgICAgID4+PSBmdW4gKHN0b3AsIGdyYXBoLCBzdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgdC5ncmFwaCA8LSBncmFwaDtcbiAgICAgICAgICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBmaXJzdF9vYnMgPVxuICAgICAgICAgICAgICAgICAgU3RhdGVfaW50ZXJwcmV0ZXIub2JzZXJ2YWJsZXNfdmFsdWVzIHQuZW52IGdyYXBoIHQuY291bnRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gdC5wbG90IDwtIERhdGEuYWRkX3Bsb3RfbGluZSBmaXJzdF9vYnMgdC5wbG90IGluXG4gICAgICAgICAgICAgICAgcnVuX3NpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH50IHN0b3BcbiAgICAgICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICAgICAgY2F0Y2hfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdIGluXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgICAgICAgIGUpXG4gICAgICAgIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPlxuICAgICAgICAgbGV0ICgpID0gdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXSBpblxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHBhdXNlIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgbGV0ICgpID1cbiAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgdC5pc19ydW5uaW5nIDwtIGZhbHNlXG4gICAgZWxzZVxuICAgICAgKClcbiAgaW5cbiAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbmxldCBzdG9wIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gdC5ydW5fZmluYWxpemUgPC0gdHJ1ZSBpblxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgcGF1c2UgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gZmluYWxpemVfc2ltdWxhdGlvbiB+dCBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcGVydHVyYmF0aW9uIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdClcbiAgICB+KHBlcnR1cmJhdGlvbiA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW50ZXJ2ZW50aW9uKSA6XG4gICAgKHN0cmluZywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcGVydHVyYmF0aW9uIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBtc2dfcHJvY2Vzc19ub3RfcGF1c2VkKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBsb2dfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgICAgICAgICBsZXQgbG9nX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBsb2dfYnVmZmVyIGluXG4gICAgICAgICAgTHd0LndyYXA2XG4gICAgICAgICAgICAoRXZhbHVhdG9yLmRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgICAgIH5vdXRwdXRzOihpbnRlcmFjdGl2ZV9vdXRwdXRzIGxvZ19mb3JtIHQpXG4gICAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuY291bnRlciB0LmdyYXBoIHQuc3RhdGUgZVxuICAgICAgICAgID4+PSBmdW4gKGUnLCAoZW52JywgKF8sIGdyYXBoJycsIHN0YXRlJykpKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LmdyYXBoIDwtIGdyYXBoJycgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LnN0YXRlIDwtIHN0YXRlJyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiB0LmxvZ19mb3JtIFwiJSVtb2Q6IFtFXSA9ICVpIGRvICVhQC5cIlxuICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcilcbiAgICAgICAgICAgICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczpmYWxzZSB+ZW52OnQuZW52KSlcbiAgICAgICAgICAgICAgZSdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiB0LmlucHV0c19mb3JtIFwiJSVtb2Q6IFtFXSA9ICVpIGRvICVhQC5cIlxuICAgICAgICAgICAgICAoQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcilcbiAgICAgICAgICAgICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uXG4gICAgICAgICAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczpmYWxzZSB+ZW52OnQuZW52KSlcbiAgICAgICAgICAgICAgZSdcbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChCdWZmZXIuY29udGVudHMgbG9nX2J1ZmZlcikpXG4gICAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgY29udGludWUgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KVxuICAgIH4ocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcGF1c2VfY29uZGl0aW9uIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBwYXVzZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfYm9vbF9leHByIEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgICAgTHd0LndyYXA0XG4gICAgICAgICAgICAoRXZhbHVhdG9yLmdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmdyYXBoIHBhdXNlXG4gICAgICAgICAgPj49IGZ1biAoZW52JywgZ3JhcGgnLCBiJycpIC0+XG4gICAgICAgICAgbGV0ICgpID0gdC5lbnYgPC0gZW52JyBpblxuICAgICAgICAgIGxldCAoKSA9IHQuZ3JhcGggPC0gZ3JhcGgnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5wYXVzZV9jb25kaXRpb24gPC0gYicnIGluXG4gICAgICAgICAgKCpsZXQgKCkgPVxuICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X3RpbWVcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9tYXhfZXZlbnRzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHJ1bl9zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dCBmYWxzZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHByb2dyZXNzIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgIChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnRcbiAgICBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBtYXRjaCB0LmVycm9yX21lc3NhZ2VzIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X3RpbWUgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgPVxuICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAoZnVuIHggLT4gaW50X29mX2Zsb2F0ICh4ICouIDEwMC4pKVxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLnRpbWVfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci5ldmVudF9yYXRpbyB0LmNvdW50ZXIpO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIudHJhY2tlZF9ldmVudHMgdC5jb3VudGVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gdC5pc19ydW5uaW5nO1xuICAgICAgICAgICAgIH0pKVxuICAgICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuICB8IF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgdC5lcnJvcl9tZXNzYWdlcylcblxubGV0IG91dHB1dHMgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3QgPSBTb21lIHQucGxvdDtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSB0LmRpbnM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gdC5maWxlcztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9IHQuc25hcHNob3RzO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID1cbiAgICAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIHQuaW5wdXRzX2J1ZmZlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9XG4gICAgICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyB0LmxvZ19idWZmZXI7XG4gICAgICAgICAgICAgfSkpXG4gICAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG4gIHwgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciB0LmVycm9yX21lc3NhZ2VzKVxuXG5sZXQgZWZmaWNpZW5jeSB0ID0gQ291bnRlci5nZXRfZWZmaWNpZW5jeSB0LmNvdW50ZXJcblxubGV0IGdldF9yYXdfdHJhY2UgdCA9XG4gIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgIChmdW4gb2IgdCAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaWN0XCJcbiAgICAgICAgICAoZnVuIG9iICgpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBBZ2VudC5qc29uX2RpY3Rpb25uYXJ5IGluXG4gICAgICAgICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgSW5zdGFudGlhdGlvbi5qc29uX2RpY3Rpb25uYXJ5IGluXG4gICAgICAgICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmpzb25fZGljdGlvbm5hcnlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgVHJhY2UuanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JylcbiAgICAgICAgICBvYiAoKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm1vZGVsXCIgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gb2JcbiAgICAgICAgICAoTW9kZWwudG9feW9qc29uIHQuZW52KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInRyYWNlXCIgQnVmZmVyLmFkZF9zdHJpbmcgb2JcbiAgICAgICAgICAoQnVmZmVyLmNvbnRlbnRzIHQudHJhY2UpXG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdfVwiKVxuICAgIHRcblxubGV0IGdldF9yYXdfYXN0IHQgPSBZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gdC5hc3QpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG4oKiBhZGRkIHNlZWQgdG8gcGFyYW1ldGVyICopXG5sZXQgcGF0Y2hfcGFyYW1ldGVyIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBpbnQgPVxuICBtYXRjaCBzaW11bGF0aW9uX3BhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgKCkgPSBSYW5kb20uc2VsZl9pbml0ICgpIGluXG4gICAgbGV0IHNlZWQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgIHsgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgd2l0aCBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgPSBTb21lIHNlZWQgfSwgc2VlZFxuICB8IFNvbWUgc2VlZCAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciwgc2VlZFxuXG5sZXQgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gaGFuZGxlciA9XG4gIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICB8IFNvbWUgKF8sIHNpbXVsYXRpb24pIC0+IGhhbmRsZXIgc2ltdWxhdGlvblxuICB8IE5vbmUgLT5cbiAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG5sZXQgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb25cbiAgICB+KHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocHJvamVjdGlvbiA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0KSA6XG4gICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOlxuICAgICAgICAgICAgICAoZnVuIChzaW11bGF0aW9uX2RldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAocHJvamVjdGlvbiBzaW11bGF0aW9uX2RldGFpbClcbiAgICAgICAgICAgICAgICA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmlsZV9saW5lIChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19maWxlX2xpbmUgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5maWxlX2xpbmVfY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVzIDogc3RyaW5nIGxpc3QgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfbGluZV9jYXRhbG9nIDogc3RyaW5nIGxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBmc3QgKE1vZHMuU3RyaW5nTWFwLmJpbmRpbmdzIGZpbGVfbGluZXMpXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmlsZV9saW5lX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZFxuICAgICAgICAoc3RhdHVzIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KSA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZpbGVfbGluZV9saXN0ID0gc3RhdHVzLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgaW5cbiAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGZpbGVfbGluZV9pZCBmaWxlX2xpbmVfbGlzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZpbGVfbGluZV9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuICAgICAgfCBTb21lIGxpbmVzIC0+IFJlc3VsdF91dGlsLm9rIChMaXN0LnJldiBsaW5lcylcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX2ZpbGVfbGluZVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSAoZmlsZV9saW5lX2lkIDogc3RyaW5nKVxuICAgICAgICA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9maWxlX2xpbmUgfmZpbGVfbGluZV9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9mbHV4X21hcCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmx1eF9tYXAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmbHV4X21hcF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgZmx1eF9tYXBfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X2ZsdXhfbWFwIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBzX2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyBpblxuICAgICAgdHJ5IFJlc3VsdF91dGlsLm9rIChMaXN0LmFzc29jIGZsdXhfbWFwX2lkIGZsdXhfbWFwc19saXN0KVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIGZsdXhfbWFwX2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2RpbiA6IEFwaV90eXBlc190LmRpbl9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19mbHV4X21hcFxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9mbHV4X21hcCBmbHV4X21hcF9pZClcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9sb2dfbWVzc2FnZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG4gID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGxvZ19tZXNzYWdlIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCA9XG4gICAgICBSZXN1bHRfdXRpbC5vayBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2VcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5sb2dfbWVzc2FnZSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvbjpzZWxmI2xvZ19tZXNzYWdlXG4gIGVuZFxuXG5sZXQgc2VsZWN0X29ic2VydmFibGVzIChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9saW1pdClcbiAgICAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIDogQXBpX3R5cGVzX3QucGxvdCA9XG4gIGxldCBwbG90X3RpbWVfc2VyaWVzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcGxvdC5EYXRhLnBsb3Rfc2VyaWVzIGluXG4gIGxldCBwbG90X2RldGFpbF9zaXplID0gQXJyYXkubGVuZ3RoIHBsb3RfdGltZV9zZXJpZXMgaW5cbiAgbGV0IHBsb3RfbGltaXRfb2Zmc2V0ID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X29mZnNldCBpblxuICBsZXQgcGxvdF9saW1pdF9wb2ludHMgPSBwbG90X2xpbWl0LkFwaV90eXBlc190LnBsb3RfbGltaXRfcG9pbnRzIGluXG4gIGxldCBzdGFydCwgbGVuID1cbiAgICBtYXRjaCBwbG90X2xpbWl0X29mZnNldCwgcGxvdF9saW1pdF9wb2ludHMgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwLCBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgTm9uZSAtPiBvZmZzZXQsIG1heCAwIChwbG90X2RldGFpbF9zaXplIC0gb2Zmc2V0KVxuICAgIHwgTm9uZSwgU29tZSBuYiAtPiBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG5iKSwgbWluIG5iIHBsb3RfZGV0YWlsX3NpemVcbiAgICB8IFNvbWUgb2Zmc2V0LCBTb21lIG5iIC0+IG9mZnNldCwgbWluIG5iIChtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldCkpXG4gIGluXG4gIGxldCBuZXdfcGxvdF90aW1lX3NlcmllcyA9XG4gICAgTGlzdC5yZXYgKEFycmF5LnRvX2xpc3QgKEFycmF5LnN1YiBwbG90X3RpbWVfc2VyaWVzIHN0YXJ0IGxlbikpXG4gIGluXG4gIHsgcGxvdCB3aXRoIERhdGEucGxvdF9zZXJpZXMgPSBuZXdfcGxvdF90aW1lX3NlcmllcyB9XG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9wbG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3Bsb3QgKHBsb3RfbGltaXQgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgPVxuICAgICAgbWF0Y2ggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3Qgd2l0aFxuICAgICAgfCBTb21lIHBsb3QgLT4gUmVzdWx0X3V0aWwub2sgKHNlbGVjdF9vYnNlcnZhYmxlcyBwbG90X2xpbWl0IHBsb3QpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBcInBsb3Qgbm90IGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5wbG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9wbG90IHBsb3RfcGFyYW1ldGVyKVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX3NuYXBzaG90IChzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcykgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgdmlydHVhbCBzaW11bGF0aW9uXG4gICAgICAgIDogKEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogS2FwcGFfZmFjYWRlLnQpIG9wdGlvblxuXG4gICAgbWV0aG9kIHByaXZhdGUgaW5mb19zbmFwc2hvdCAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgc25hcHNob3RzID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbGV0IHNuYXBzaG90X2NhdGFsb2cgPVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5mb2xkIChmdW4geCBfIGFjYyAtPiB4IDo6IGFjYykgc25hcHNob3RzIFtdXG4gICAgICBpblxuICAgICAgUmVzdWx0X3V0aWwub2sgc25hcHNob3RfY2F0YWxvZ1xuXG4gICAgbWV0aG9kIHByaXZhdGUgZ2V0X3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90X2xpc3QgPSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBzbmFwc2hvdF9pZCBzbmFwc2hvdF9saXN0IHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiaWQgJXMgbm90IGZvdW5kXCIgc25hcHNob3RfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246c2VsZiNpbmZvX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50KVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IChzbmFwc2hvdF9pZCA6IEFwaV90eXBlc190LnNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgKGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICAgfnByb2plY3Rpb246KHNlbGYjZ2V0X3NuYXBzaG90IHNuYXBzaG90X2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90IEFwaS5yZXN1bHQgTHd0LnQpXG4gIGVuZFxuXG5jbGFzcyBtYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBzaW11bGF0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgdGV4dCBvdmVyd3JpdGVzID1cbiAgICAgIGxldCBhc3QgPSB0ZXh0IGluXG4gICAgICBsZXQgaGFyYWtpcmksIF8gPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBwcm9qZWN0I3NldF9zdGF0ZVxuICAgICAgICAgIChMd3QucGlja1xuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXJzZSB+cGF0dGVyblNoYXJpbmcgYXN0IG92ZXJ3cml0ZXMgc3lzdGVtX3Byb2Nlc3M7XG4gICAgICAgICAgICAgICAoIGhhcmFraXJpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFwaV9jb21tb24uZXJyb3JfbXNnIFwiUGFyc2UgY2FuY2VsbGVkIGJ5IG1vZGlmaWVkIGZpbGVzXCI7XG4gICAgICAgICAgICAgICAgICAgICAgXSkgKTtcbiAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGVsZXRlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjc2ltdWxhdGlvbl9zdG9wID4+PSBmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gc2ltdWxhdGlvbiA8LSBOb25lIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3N0YXJ0XG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBsZXQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgIHBhdGNoX3BhcmFtZXRlciBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBDb25mbGljdFxuICAgICAgICAgICAgIFwiQSBzaW11bGF0aW9uIGFscmVhZHkgZXhpc3RzXCIpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcHJvamVjdCNnZXRfc3RhdGUgKCkgPj49ICggZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgXCJDYW5ub3Qgc3RhcnQgc2ltdWxhdGlvbjogUGFyc2Ugbm90IGRvbmVcIilcbiAgICAgICAgfCBTb21lIHBhcnNlIC0+XG4gICAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gKGZhY2FkZSA6IEthcHBhX2ZhY2FkZS50KSAtPlxuICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUuc3RhcnQgfnN5c3RlbV9wcm9jZXNzIH5wYXJhbWV0ZXI6c2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICB+dDpmYWNhZGVcbiAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbiA8LSBTb21lIChzaW11bGF0aW9uX3BhcmFtZXRlciwgZmFjYWRlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3NlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSlcbiAgICAgICAgICAgIHBhcnNlIClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbWF0Y2ggc2ltdWxhdGlvbiB3aXRoXG4gICAgICB8IFNvbWUgKHBhcmFtZXRlciwgXykgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGFyYW1ldGVyKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtID0gXCJObyBzaW11bGF0aW9uIGF2YWlsYWJsZVwiIGluXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcmF3X3RyYWNlIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5nZXRfcmF3X3RyYWNlIHQpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIGxldCBhZGRfc25hcHNob3QgZmlsZSBmaWxlbmFtZSBuYW1lIHNuYXBzaG90ID1cbiAgICAgICAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IG5hbWUgXCIuZG90XCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiXG4gICAgICAgICAgICAgICAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSlcbiAgICAgICAgICAgICAgIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCA/bGVuOk5vbmUgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuYW1lJyA9IFRvb2xzLmNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIFwiLmthXCIgaW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZScpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgYWRkX2RpbiBmaWxlIGZpbGVuYW1lIChkaW5fbmFtZSwgZmx1eCkgPVxuICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgRGF0YS5wcmludF9odG1sX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgICAgICAgRGF0YS5zdHJpbmdfb2ZfZGluIGZsdXhcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpIGZsdXgpXG4gICAgICAgICAgZmlsZVxuICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gZGluX25hbWUpXG4gICAgICBpblxuICAgICAgbGV0IHByb2plY3Rpb24gdCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwic2ltdWxhdGlvbl9vdXRwdXRzXCIgaW5cbiAgICAgICAgICBsZXQgZmlsZSA9IEZha2V6aXAub3Blbl9vdXQgKGZpbGVuYW1lIF4gXCIuemlwXCIpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvaW5wdXRzLmthXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnkgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgZmlsZVxuICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9sb2cudHh0XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHBsb3QgLT5cbiAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAoRGF0YS5leHBvcnRfcGxvdCB+aXNfdHN2OmZhbHNlIHBsb3QpXG4gICAgICAgICAgICAgICAgZmlsZSAoZmlsZW5hbWUgXiBcIi9kYXRhLmNzdlwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGZ1biBuYW1lIGNvbnRlbnQgLT5cbiAgICAgICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCJcXG5cIiAoTGlzdC5yZXYgY29udGVudCkpXG4gICAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUpKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMaXN0Lml0ZXIgKGFkZF9kaW4gZmlsZSBmaWxlbmFtZSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAgICAgICAoYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3V0ID0gRmFrZXppcC5jbG9zZV9vdXQgZmlsZSBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIG91dFxuICAgICAgICB3aXRoIEZha2V6aXAuRXJyb3IgKF8sIGYsIGUpIC0+XG4gICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIChcIlppcCBlcnJvciBpbiBcIiBeIGYgXiBcIjogXCIgXiBlKVxuICAgICAgaW5cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+cHJvamVjdGlvblxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGF1c2UgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuIF8gLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW11bGF0aW9uX3N0b3AgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnN0b3AgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgICAgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucGVydHVyYmF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgfnBlcnR1cmJhdGlvbjpzaW11bGF0aW9uX3BlcnR1cmJhdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZylcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLmNvbnRpbnVlIH5zeXN0ZW1fcHJvY2VzcyB+dCB+cGF1c2VfY29uZGl0aW9uXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgICAgICBLYXBwYV9mYWNhZGUucHJvZ3Jlc3MgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBwcm9ncmVzcyAtPlxuICAgICAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLm91dHB1dHMgfnN5c3RlbV9wcm9jZXNzIH50XG4gICAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gb3V0cHV0cyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFwaV9kYXRhLmFwaV9zaW11bGF0aW9uX3N0YXR1cyBwcm9ncmVzcyBvdXRwdXRzKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEthcHBhX2ZhY2FkZS5lZmZpY2llbmN5IHQpKSlcblxuICAgIGluaGVyaXQgbWFuYWdlcl9maWxlX2xpbmUgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfZmx1eF9tYXAgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfbG9nX21lc3NhZ2Ugc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfcGxvdCBzeXN0ZW1fcHJvY2Vzc1xuICAgIGluaGVyaXQgbWFuYWdlcl9zbmFwc2hvdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0X2NvbXByZXNzaW9uX21vZGUgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWsgPSBmYWxzZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT5cbiAgICB7IEFwaS5jYXVzYWwgPSBmYWxzZTsgQXBpLndlYWsgPSB0cnVlOyBBcGkuc3Ryb25nID0gZmFsc2UgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IGFkZF9jb21wcmVzc2lvbl9tb2RlIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfSA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5DYXVzYWwgLT4geyBBcGkuY2F1c2FsID0gdHJ1ZTsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uV2VhayAtPiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyB9XG4gIHwgU3RvcnlfanNvbi5TdHJvbmcgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyA9IHRydWUgfVxuXG5sZXQgcHJpbnRfY29tcHJlc3Npb25fbW9kZXMgZiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICBsZXQgKCkgPSBpZiBjYXVzYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJDQVVTQUxcIiBpblxuICBsZXQgKCkgPVxuICAgIGlmIHdlYWsgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgIChpZiBjYXVzYWwgdGhlblxuICAgICAgICAgICBcIiwgV0VBS1wiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiV0VBS1wiKVxuICBpblxuICBpZiBzdHJvbmcgdGhlblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgKGlmIGNhdXNhbCB8fCB3ZWFrIHRoZW5cbiAgICAgICAgIFwiLCBTVFJPTkdcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiU1RST05HXCIpXG5cbnR5cGUgc3RhdGVfdCA9IHtcbiAgcnVubmluZzogYm9vbDtcbiAgcHJvZ3Jlc3M6IFN0b3J5X2pzb24ucHJvZ3Jlc3NfYmFyIG9wdGlvbjtcbiAgbG9nOiBzdHJpbmcgbGlzdDtcbiAgc3RvcmllczpcbiAgICAoQXBpLmNvbXByZXNzaW9uX21vZGVzXG4gICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QgbGlzdFxuICAgICogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGgpXG4gICAgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBzdGF0ZSA9IHN0YXRlX3QgcmVmXG5cbigqbGV0IHN0YXRlX2VxIGEgYiA9XG4gIGEucnVubmluZyA9IGIucnVubmluZyAmJlxuICBPcHRpb25fdXRpbC5lcXVhbCAoPSkgYS5wcm9ncmVzcyBiLnByb2dyZXNzICYmXG4gICh0cnkgTGlzdC5mb3JfYWxsMiAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKSBhLmxvZyBiLmxvZ1xuICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICYmIE1vZHMuSW50TWFwLmVxdWFsICg9KSBhLnN0b3JpZXMgYi5zdG9yaWVzKilcblxubGV0IGluaXRpYWxfc3RhdGUgPVxuICB7IHJ1bm5pbmcgPSBmYWxzZTsgcHJvZ3Jlc3MgPSBOb25lOyBsb2cgPSBbXTsgc3RvcmllcyA9IE1vZHMuSW50TWFwLmVtcHR5IH1cblxubGV0IGNvbnRyb2xsZXIgcyA9IGZ1bmN0aW9uXG4gIHwgU3RvcnlfanNvbi5Qcm9ncmVzcyBwIC0+XG4gICAgeyBydW5uaW5nID0gcy5ydW5uaW5nOyBwcm9ncmVzcyA9IFNvbWUgcDsgbG9nID0gcy5sb2c7IHN0b3JpZXMgPSBzLnN0b3JpZXMgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3RhcnQsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHRydWU7XG4gICAgICBwcm9ncmVzcyA9IE5vbmU7XG4gICAgICBsb2cgPSBbIG0gXTtcbiAgICAgIHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5JbnByb2dyZXNzLCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5GYWlsbHVyZSwgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uU3VjY2VzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICBsb2cgPSBtIDo6IHMubG9nO1xuICAgICAgc3RvcmllcyA9IHMuc3RvcmllcztcbiAgICB9XG4gIHwgU3RvcnlfanNvbi5TdG9yeSBjIC0+XG4gICAgKG1hdGNoIGMuU3RvcnlfanNvbi5zdG9yeSB3aXRoXG4gICAgfCBTdG9yeV9qc29uLk5ldyBlIC0+XG4gICAgICB7XG4gICAgICAgIHJ1bm5pbmcgPSBzLnJ1bm5pbmc7XG4gICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgIHN0b3JpZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBlLlN0b3J5X2pzb24uaWRcbiAgICAgICAgICAgICggaW5pdF9jb21wcmVzc2lvbl9tb2RlIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICBbIGMuU3RvcnlfanNvbi5sb2dfaW5mbyBdLFxuICAgICAgICAgICAgICBlLlN0b3J5X2pzb24uZ3JhcGggKVxuICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgfVxuICAgIHwgU3RvcnlfanNvbi5TYW1lX2FzIGkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHMuc3RvcmllcyB3aXRoXG4gICAgICB8IFNvbWUgKGNtLCBpbmZvcywgZ3JhcGgpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgICAgICBsb2cgPSBzLmxvZztcbiAgICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpXG4gICAgICAgICAgICAgICggYWRkX2NvbXByZXNzaW9uX21vZGUgY20gYy5TdG9yeV9qc29uLnN0b3J5X21vZGUsXG4gICAgICAgICAgICAgICAgYy5TdG9yeV9qc29uLmxvZ19pbmZvIDo6IGluZm9zLFxuICAgICAgICAgICAgICAgIGdyYXBoIClcbiAgICAgICAgICAgICAgcy5zdG9yaWVzO1xuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSlcblxubGV0IHJlY2VpdmUgdXBkYXRlX3N0YXRlIHggPVxuICB1cGRhdGVfc3RhdGUgKFN0b3J5X2pzb24ubWVzc2FnZV9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbmxldCBpbml0X3N0YXRlICgpID1cbiAgbGV0IGN1cnJlbnRfc3RhdGUgPSByZWYgaW5pdGlhbF9zdGF0ZSBpblxuICBjdXJyZW50X3N0YXRlLCBmdW4geCAtPiBjdXJyZW50X3N0YXRlIDo9IGNvbnRyb2xsZXIgIWN1cnJlbnRfc3RhdGUgeFxuXG5jbGFzcyB2aXJ0dWFsIG5ld19jbGllbnQgfnBvc3QgY3VycmVudF9zdGF0ZSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIGNvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgXCJDT05GSUdcIjtcbiAgICAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJub25lXCIsIGBCb29sIGNhdXNhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZWFrXCIsIGBCb29sIHdlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgIFwic3Ryb25nXCIsIGBCb29sIHN0cm9uZztcbiAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlX3RleHQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBjdXJyZW50X3N0YXRlIDo9IHsgaW5pdGlhbF9zdGF0ZSB3aXRoIHJ1bm5pbmcgPSB0cnVlIH0gaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoXCJbXFxcIlJVTlxcXCIsIFwiIF4gdHJhY2VfdGV4dCBeIFwiXVwiKSBpblxuICAgICAgICBMd3QucmV0dXJuX29rICgpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBhZ2VudCBpcyBkZWFkXCJcblxuICAgIG1ldGhvZCBzdG9yeV9sb2cgPSAhY3VycmVudF9zdGF0ZS5sb2dcbiAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gIWN1cnJlbnRfc3RhdGUucnVubmluZ1xuICAgIG1ldGhvZCBzdG9yeV9wcm9ncmVzcyA9ICFjdXJyZW50X3N0YXRlLnByb2dyZXNzXG4gICAgbWV0aG9kIHN0b3J5X2xpc3QgPSAhY3VycmVudF9zdGF0ZS5zdG9yaWVzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtYWlsYm94ID1cbiAgKCBpbnQsXG4gICAgKFlvanNvbi5CYXNpYy50LCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIpIFJlc3VsdC5yZXN1bHRcbiAgICBMd3QudSApXG4gIEhhc2h0YmwudFxuXG5sZXQgcmVwbHlfb2Zfc3RyaW5nIHggPVxuICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gIHwgYEFzc29jIFsgKFwiaWRcIiwgYEludCBpZCk7IChcImNvZGVcIiwgYFN0cmluZyBcIkVSUk9SXCIpOyAoXCJkYXRhXCIsIGVycikgXSAtPlxuICAgIFNvbWUgaWQsIFJlc3VsdC5FcnJvciAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm9mX2pzb24gZXJyKVxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJTVUNDRVNTXCIpOyAoXCJkYXRhXCIsIGRhdGEpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuT2sgZGF0YVxuICB8IHggLT5cbiAgICAoIE5vbmUsXG4gICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgKFwiSW52YWxpZCByZXNwb25zZSBmcm9tIEthU2E6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcikgKVxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBtYXRjaCByZXBseV9vZl9zdHJpbmcgeCB3aXRoXG4gIHwgU29tZSBpZCwgb3V0IC0+XG4gICAgbGV0IHRocmVhZCA9IEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCBpblxuICAgIEx3dC53YWtldXAgdGhyZWFkIG91dFxuICB8IE5vbmUsIF8gLT4gKClcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIG5ld19jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS5tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcblxuICAgIG1ldGhvZCBwcml2YXRlIHJhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCA9XG4gICAgICBpZiBpc19ydW5uaW5nICgpIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgb3V0YnVmID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIntpZDpcIiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgKHN0cmluZ19vZl9pbnQgaWQpIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIixkYXRhOlwiIGluXG4gICAgICAgIGxldCAoKSA9IHJlcXVlc3Qgb3V0YnVmIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBcIn1cIiBpblxuICAgICAgICBsZXQgKCkgPSBwb3N0IChCdWZmZXIuY29udGVudHMgb3V0YnVmKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCBmZWVkZXIgaW5cbiAgICAgICAgbGV0ICgpID0gaWQgPC0gaWQgKyAxIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3JcbiAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvclxuICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCIgfm1lc3NhZ2U6XCJLYVNhIGFnZW50IGlzIGRlYWRcIiBFeGl0KVxuICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSByZXF1ZXN0ID1cbiAgICAgIHNlbGYjcmF3X21lc3NhZ2UgcG9zdCAoZnVuIG91dGIgLT4gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvdXRiIHJlcXVlc3QpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGNvbXBpbCA9XG4gICAgICBsZXQgcmVxdWVzdCBvdXRidWYgPVxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJbIFxcXCJJTklUXFxcIiwgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIGNvbXBpbCBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJdXCJcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI3Jhd19tZXNzYWdlIHBvc3QgcmVxdWVzdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgYE51bGwgLT4gUmVzdWx0Lk9rICgpXG4gICAgICAgIHwgeCAtPlxuICAgICAgICAgIFJlc3VsdC5FcnJvclxuICAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwia2FzYV9jbGllbnRcIlxuICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIChcIk5vdCBhIEthU2EgSU5JVCByZXNwb25zZTogXCIgXiBZb2pzb24uQmFzaWMudG9fc3RyaW5nIHgpXG4gICAgICAgICAgICAgICAgICBFeGl0KVxuICAgICAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIkNPTlRBQ1RfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPiBSZXN1bHQuT2sgeClcblxuICAgIG1ldGhvZCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9OT0RFU19MT0NBVElPTlwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnBvc19vZl9ydWxlc19hbmRfdmFyc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGEgLT4gWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGEgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjogKGZ1biBhY2N1cmFjeSBsIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gbFxuICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIDo6IGwpXG4gICAgICAgICAgICAgICBhY2N1cmFjeVxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICBvcmlnaW47XG4gICAgICAgICAgICAgICBdKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9IFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4IGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTkVYVF9OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCI7XG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBqc29uO1xuICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFU1wiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfUlVMRVNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiREVBRF9BR0VOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJOT05fV0VBS0xZX1JFVkVSU0lCTEVfVFJBTlNJVElPTlNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJDT05TVFJBSU5UU1wiIF0gaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLmxlbW1hc19saXN0X29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiUE9MWU1FUlNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5X2NtLCBhY2N1cmFjeV9zY2Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhLCBOb25lIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF1cbiAgICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgICAgICAgICBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYTsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiIF1cbiAgICAgICAgICB8IE5vbmUsIFNvbWUgYiAtPlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIFB1YmxpY19kYXRhLkxvdztcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBiO1xuICAgICAgICAgICAgXSkpXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2NjX29mX2pzb24geCkpXG4gIGVuZFxuXG5jbGFzcyBuZXdfdW5pZm9ybV9jbGllbnQgfmlzX3J1bm5pbmcgfnBvc3QgKG1haWxib3ggOiBtYWlsYm94KSA6XG4gIEFwaS51bmlmb3JtX21hbmFnZXJfc3RhdGljX2FuYWx5c2lzID1cbiAgbGV0IHJhdyA9IG5ldyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IG1haWxib3ggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgcmF3I2luaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeVxuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID0gcmF3I2dldF9pbml0aWFsX25vZGUgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9uZXh0X25vZGUganNvbiA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgcmF3I2dldF9wcmV2aW91c19ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICByYXcjZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID0gcmF3I2dldF9kZWFkX3J1bGVzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9IHJhdyNnZXRfZGVhZF9hZ2VudHMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHJhdyNnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgcmF3I2dldF9jb25zdHJhaW50c19saXN0ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgcmF3I2dldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjXG4gICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudSAtPiBib3hcblxudHlwZSBtYWlsYm94ID0gKGludCwgYm94KSBIYXNodGJsLnRcblxubGV0IG5ld19tYWlsYm94ICgpID0gSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgcmVhZF9yZXN1bHQgZiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW1cbiAgICAoUmVzdWx0X3V0aWwucmVhZF90IGYgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlKSlcbiAgICBwIGxiXG5cbmxldCByZWNlaXZlIG1haWxib3ggeCA9XG4gIEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBwIGxiIGlkIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCB3aXRoXG4gICAgICAgICAgIHwgQiAoTm90aGluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9udWxsIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQ2F0YWxvZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSlcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoSW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHRcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludClcbiAgICAgICAgICAgICAgICAgIHAgbGIpXG4gICAgICAgICAgIHwgQiAoQXN0LCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIpXG4gICAgICAgICBpblxuICAgICAgICAgSGFzaHRibC5yZW1vdmUgbWFpbGJveCBpZCkpXG4gICAgeFxuXG5sZXQgaXNfY29tcHV0aW5nIG1haWxib3ggPSBIYXNodGJsLmxlbmd0aCBtYWlsYm94IDw+IDBcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IG1haWxib3ggOiBBcGkubWFuYWdlcl9tb2RlbCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSBpZCA9IDBcbiAgICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgICAgICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpOyByZXF1ZXN0IF0pXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3N0IG1lc3NhZ2UgaW5cbiAgICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbWFpbGJveCBpZCAoQiAoaGFuZGxlLCBmZWVkZXIpKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlkIDwtIHN1Y2MgaWQgaW5cbiAgICAgICAgICByZXN1bHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQgPSBcImthbW9oYSBhZ2VudCBoYXMgZGllZFwiO1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBmaWxlX2lkID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVEZWxldGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVVcGRhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9tb3ZlIGZpbGVfcG9zaXRpb24gZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlTW92ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgYiBmaWxlX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9nZXQgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgSW5mbyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlR2V0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgZmlsZV9jb250ZW50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDcmVhdGVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9jb250ZW50KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jYXRhbG9nID1cbiAgICAgIHNlbGYjbWVzc2FnZSBDYXRhbG9nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIkZpbGVDYXRhbG9nXCIpIF0pXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIEFzdCAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0UGFyc2VcIikgXSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuY2xhc3Mgc2ltdWxhdGlvbiAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KVxuICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbiA9XG4gIG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIF9ydW50aW1lX3N0YXRlID0gcnVudGltZV9zdGF0ZVxuICAgIHZhbCBtdXRhYmxlIF9zaW11bGF0aW9uX3BhcmFtZXRlciA9IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgbWV0aG9kIGdldF9ydW50aW1lX3N0YXRlICgpID0gX3J1bnRpbWVfc3RhdGVcblxuICAgIG1ldGhvZCBzZXRfcnVudGltZV9zdGF0ZSAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfcnVudGltZV9zdGF0ZSA8LSBydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyICgpID0gX3NpbXVsYXRpb25fcGFyYW1ldGVyXG5cbiAgICBtZXRob2Qgc2V0X3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6IHVuaXQgPVxuICAgICAgX3NpbXVsYXRpb25fcGFyYW1ldGVyIDwtIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gIGVuZFxuXG5jbGFzcyBwcm9qZWN0IDogQXBpX2Vudmlyb25tZW50LnByb2plY3QgPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIHZhbCBtdXRhYmxlIF9zdGF0ZSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPVxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbiAgICBtZXRob2QgZ2V0X3NpbXVsYXRpb24gKCkgPSBfc2ltdWxhdGlvblxuICAgIG1ldGhvZCB1bnNldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb24gPC0gTm9uZVxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uXG4gICAgICAgIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICAocnVudGltZV9zdGF0ZSA6IEthcHBhX2ZhY2FkZS50KSA9XG4gICAgICBfc2ltdWxhdGlvbiA8LVxuICAgICAgICBTb21lXG4gICAgICAgICAgKG5ldyBzaW11bGF0aW9uIHJ1bnRpbWVfc3RhdGUgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgIDo+IEFwaV9lbnZpcm9ubWVudC5zaW11bGF0aW9uKVxuXG4gICAgbWV0aG9kIHNldF9zdGF0ZSAoc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgTHd0LnQpID1cbiAgICAgIGxldCAoKSA9IEx3dC5jYW5jZWwgX3N0YXRlIGluXG4gICAgICBfc3RhdGUgPC0gKHN0YXRlID4+PSBmdW4geCAtPiBMd3QucmV0dXJuIChTb21lIHgpKVxuXG4gICAgbWV0aG9kIGdldF9zdGF0ZSAoKSA6IEFwaV9lbnZpcm9ubWVudC5wYXJzZV9zdGF0ZSBvcHRpb24gTHd0LnQgPSBfc3RhdGVcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBnb29kIG9sZCBjYWtlIHBhdHRlcm4gKilcblxuY2xhc3MgbWFuYWdlciAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpIDpcbiAgQXBpLm1hbmFnZXJfc2ltdWxhdGlvbiA9XG4gIGxldCBwcm9qZWN0ID0gbmV3IEVudmlyb25tZW50X21lbW9yeS5wcm9qZWN0IGluXG4gIG9iamVjdFxuICAgIGluaGVyaXQgTWFuYWdlcl9zaW11bGF0aW9uLm1hbmFnZXJfc2ltdWxhdGlvbiBwcm9qZWN0IHN5c3RlbV9wcm9jZXNzXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSB0ID0ge1xuICBzdGF0ZV9lcnJvcl9lcnJvcnM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgX3N0YXRlX2Vycm9yX2xvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmxldCBzdGF0ZV9lcnJvciwgc2V0X3N0YXRlX2Vycm9yID0gUmVhY3QuUy5jcmVhdGUgKFtdIDogdCBsaXN0KVxuXG5sZXQgY2xlYXJfZXJyb3JzIGxvY2F0aW9uID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzZXRfc3RhdGVfZXJyb3IgW11cblxubGV0IGhhc19lcnJvcnMgKCkgPVxuICBtYXRjaCBSZWFjdC5TLnZhbHVlIHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnXG4gICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwic2V0X2Vycm9ycyB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGVfZXJyb3IgaW5cbiAgbGV0IG5ld19zdGF0ZV9lcnJvciA6IHQgbGlzdCA9XG4gICAgeyBzdGF0ZV9lcnJvcl9lcnJvcnMgPSBlcnJvcnM7IF9zdGF0ZV9lcnJvcl9sb2NhdGlvbiA9IGxvY2F0aW9uIH1cbiAgICA6OiBjdXJyZW50X3N0YXRlX2Vycm9yXG4gIGluXG4gIHNldF9zdGF0ZV9lcnJvciBuZXdfc3RhdGVfZXJyb3JcblxubGV0IGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gKHN0YXRlX2Vycm9yIDogdCBsaXN0KSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT4gdmFsdWUuc3RhdGVfZXJyb3JfZXJyb3JzIEAgYWNjKVxuICAgICAgICBbXSBzdGF0ZV9lcnJvcilcbiAgICBzdGF0ZV9lcnJvclxuXG5sZXQgd3JhcCA6XG4gICAgICAnYS4gP2FwcGVuZDpib29sIC0+IHN0cmluZyAtPiAnYSBBcGkucmVzdWx0IEx3dC50IC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biA/KGFwcGVuZCA9IGZhbHNlKSBsb2MgciAtPlxuICByXG4gID4+PVxuICBsZXQgKCkgPSBpZiBub3QgYXBwZW5kIHRoZW4gY2xlYXJfZXJyb3JzIGxvYyBpblxuICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgfm9rOihmdW4gciAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByKSlcbiAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgIGxldCAoKSA9IGFkZF9lcnJvciBsb2MgZXJyb3JzIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHVybF9hcmdzID8oZGVmYXVsdCA9IFtdKSBrZXkgOiBzdHJpbmcgbGlzdCA9XG4gICgqIEhvc3RzIHRoZSB1c2VyIHNwZWNpZmllZCBvbiB0aGUgdXJsIGluIHRoZSBmb3JtXG4gICAgIGtleT0uLi4ma2V5PS4uJi4uLlxuICAqKVxuICBsZXQgYXJncyA9IFVybC5DdXJyZW50LmFyZ3VtZW50cyBpblxuICBtYXRjaCBMaXN0Lm1hcCBzbmQgKExpc3QuZmlsdGVyIChmdW4gKGssIF8pIC0+IGsgPSBrZXkpIGFyZ3MpIHdpdGhcbiAgfCBbXSAtPiBkZWZhdWx0XG4gIHwgc29tZSAtPiBzb21lXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIHByb2Nlc3NfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY29tbWFuZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGFyZ3MgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkVycm9yIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgICA/KG9uU3Rkb3V0IDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uU3RkZXJyIDogKEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpIG9wdGlvbilcbiAgICA/KG9uQ2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pID8ob25FcnJvciA6ICh1bml0IC0+IHVuaXQpIG9wdGlvbilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIG5ldyVqcyBjb25zdHJ1Y3Rvcl9wcm9jZXNzX2NvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBjb25maWd1cmF0aW9uIyMuY29tbWFuZCA6PSBKcy5zdHJpbmcgY29tbWFuZDtcbiAgICBjb25maWd1cmF0aW9uIyMuYXJncyA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgSnMuc3RyaW5nIGFyZ3MpKTtcbiAgICAobWF0Y2ggb25TdGRvdXQgd2l0aFxuICAgIHwgU29tZSBvblN0ZG91dCAtPiBjb25maWd1cmF0aW9uIyMub25TdGRvdXQgOj0gb25TdGRvdXRcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvblN0ZGVyciB3aXRoXG4gICAgfCBTb21lIG9uU3RkZXJyIC0+IGNvbmZpZ3VyYXRpb24jIy5vblN0ZGVyciA6PSBvblN0ZGVyclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uQ2xvc2Ugd2l0aFxuICAgIHwgU29tZSBvbkNsb3NlIC0+IGNvbmZpZ3VyYXRpb24jIy5vbkNsb3NlIDo9IG9uQ2xvc2VcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkVycm9yIHdpdGhcbiAgICB8IFNvbWUgb25FcnJvciAtPiBjb25maWd1cmF0aW9uIyMub25FcnJvciA6PSBvbkVycm9yXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAoKVxuICBpblxuICBjb25maWd1cmF0aW9uXG5cbmNsYXNzIHR5cGUgcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2Qgd3JpdGUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGtpbGwgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgc3Bhd25fcHJvY2VzcyAoY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50KSA6XG4gICAgcHJvY2VzcyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcInNwYXduUHJvY2Vzc1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgY29uZmlndXJhdGlvbiB8XVxuXG5sZXQgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgY29tbWFuZCBhcmdzIGhhbmRsZXIgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IHJlYyBvblN0ZG91dCBtc2cgPVxuICAgIG1hdGNoIFRvb2xzLnN0cmluZ19zcGxpdF9vbl9jaGFyIG1lc3NhZ2VfZGVsaW1pdGVyIChKcy50b19zdHJpbmcgbXNnKSB3aXRoXG4gICAgfCBwcmVmaXgsIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeFxuICAgIHwgcHJlZml4LCBTb21lIHN1ZmZpeCAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeCBpblxuICAgICAgbGV0ICgpID0gaGFuZGxlciAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlcikgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5yZXNldCBidWZmZXIgaW5cbiAgICAgIG9uU3Rkb3V0IChKcy5zdHJpbmcgc3VmZml4KVxuICBpblxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uIH5vblN0ZG91dCB+b25DbG9zZSBjb21tYW5kIGFyZ3NcbiAgaW5cbiAgSnMuT3B0LmNhc2VcbiAgICAoc3Bhd25fcHJvY2VzcyBjb25maWd1cmF0aW9uKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IG9uQ2xvc2UgKCkgaW5cbiAgICAgIGZhaWx3aXRoIChcIkxhdW5jaGluZyAnXCIgXiBjb21tYW5kIF4gXCInIGZhaWxlZFwiKSlcbiAgICAoZnVuIHggLT4geClcblxuY2xhc3MgbWFuYWdlciA/KG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlcilcbiAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDpcbiAgQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQgc3dpdGNoX3JlID0gUmUuY29tcGlsZSAoUmUuc3RyIFwiS2FwcGFTd2l0Y2htYW5cIikgaW5cbiAgbGV0IHN0b3JfY29tbWFuZCA9IFJlLnJlcGxhY2Vfc3RyaW5nIHN3aXRjaF9yZSB+Ynk6XCJLYVN0b3JcIiBjb21tYW5kIGluXG4gIGxldCBzd2l0Y2hfbWFpbGJveCA9IFN3aXRjaG1hbl9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIGxldCBydW5uaW5nX3JlZiA9IHJlZiB0cnVlIGluXG4gIGxldCBvbkNsb3NlICgpID0gcnVubmluZ19yZWYgOj0gZmFsc2UgaW5cbiAgbGV0IHN0b3JfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgc3Rvcl9jb21tYW5kIGFyZ3NcbiAgICAgIChLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUpXG4gIGluXG4gIGxldCBzd2l0Y2hfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgY29tbWFuZCBhcmdzXG4gICAgICAoU3dpdGNobWFuX2NsaWVudC5yZWNlaXZlIHN3aXRjaF9tYWlsYm94KVxuICBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gIXJ1bm5pbmdfcmVmXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IHN3aXRjaF9wcm9jZXNzIyNraWxsIGluXG4gICAgICBsZXQgKCkgPSBzdG9yX3Byb2Nlc3MjI2tpbGwgaW5cbiAgICAgICgpXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIFN3aXRjaG1hbl9jbGllbnQuaXNfY29tcHV0aW5nIHN3aXRjaF9tYWlsYm94IHx8IHNlbGYjc3RvcnlfaXNfY29tcHV0aW5nXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzdG9yX3Byb2Nlc3MjI3dyaXRlXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIiVzJWNcIiBtZXNzYWdlX3RleHQgbWVzc2FnZV9kZWxpbWl0ZXIpKSlcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgaW5oZXJpdFxuICAgICAgU3dpdGNobWFuX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzd2l0Y2hfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzd2l0Y2hfbWFpbGJveFxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBCYWRSZXNwb25zZSBvZiBNcGlfbWVzc2FnZV9qLnJlc3RfcmVzcG9uc2VfY29udGVudFxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlQ29kZSBvZiBpbnRcbmV4Y2VwdGlvbiBUaW1lT3V0XG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZXF1ZXN0X3VwIHYgPSBpbmNyIHZcbmxldCByZXF1ZXN0X2Rvd24gdiA9IGRlY3IgdlxubGV0IGlzX2NvbXB1dGluZyB2ID0gIXYgPD4gMFxuXG5sZXQgc2VuZCA/KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIHJlcXVlc3RfY291bnQgKHVybCA6IHN0cmluZylcbiAgICAobWV0aCA6IENvbW1vbi5tZXRoKSA/KGRhdGEgOiBzdHJpbmcgb3B0aW9uKSAoaHlkcmF0ZSA6IHN0cmluZyAtPiAnYSkgOlxuICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVwbHksIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gIGxldCBoYW5kbGVyIHN0YXR1cyByZXNwb25zZV90ZXh0ID1cbiAgICBsZXQgcmVzdWx0X2NvZGUgOiBSZXN1bHRfdXRpbC5zdGF0dXMgb3B0aW9uID1cbiAgICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICB8IDIwMCAtPiBTb21lIGBPS1xuICAgICAgfCAyMDEgLT4gU29tZSBgQ3JlYXRlZFxuICAgICAgfCAyMDIgLT4gU29tZSBgQWNjZXB0ZWRcbiAgICAgIHwgNDAwIC0+IFNvbWUgYEJhZF9yZXF1ZXN0XG4gICAgICB8IDQwNCAtPiBTb21lIGBOb3RfZm91bmRcbiAgICAgIHwgNDA4IC0+IFNvbWUgYFJlcXVlc3RfdGltZW91dFxuICAgICAgfCA0MDkgLT4gU29tZSBgQ29uZmxpY3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIHJlc3VsdF9jb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlQ29kZSBzdGF0dXMpXG4gICAgICB8IFNvbWUgcmVzdWx0X2NvZGUgLT5cbiAgICAgICAgaWYgNDAwIDw9IHN0YXR1cyAmJiBzdGF0dXMgPCA1MDAgdGhlblxuICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIH5yZXN1bHRfY29kZVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4gICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzcG9uc2VfdGV4dCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXNwb25zZSA9IGh5ZHJhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIHJlc3BvbnNlXG4gICAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IHJlcXVlc3RfZG93biByZXF1ZXN0X2NvdW50IGluXG4gICAgbGV0ICgpID0gTHd0Lndha2V1cCBmZWVkZXIgcmVzdWx0IGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gcmVxdWVzdF91cCByZXF1ZXN0X2NvdW50IGluXG4gIGxldCAoKSA9IENvbW1vbi5hamF4X3JlcXVlc3QgfnVybCB+bWV0aCA/dGltZW91dCA/ZGF0YSB+aGFuZGxlciBpblxuICByZXBseVxuXG5sZXQga2FzYV9lcnJvciBsID1cbiAgTHd0LnJldHVybl9lcnJvclxuICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gYWNjIG0gLT5cbiAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcInJlc3RfYXBpXCIgfm1lc3NhZ2U6bS5SZXN1bHRfdXRpbC50ZXh0IEV4aXQpXG4gICAgICAgICAgIGFjYylcbiAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlciBsKVxuXG5jbGFzcyBtYW5hZ2VyIH4odGltZW91dCA6IGZsb2F0IG9wdGlvbikgfnVybCB+cHJvamVjdF9pZCA6IEFwaS5yZXN0X21hbmFnZXIgPVxuICBsZXQgcmVxdWVzdF9jb3VudCA9IHJlZiAwIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgYFByb2plY3RMb2FkIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICAgIFwibG93IGxldmVsIHByb2plY3RfbG9hZCBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vY29udGludWVcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgUFVUXG4gICAgICAgICAgfmRhdGE6KFlvanNvbi5TYWZlLnRvX3N0cmluZyAoYFN0cmluZyBwYXVzZV9jb25kaXRpb24pKVxuICAgICAgICAgIChmdW4gXyAtPiBgU2ltdWxhdGlvbkNvbnRpbnVlKVxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBERUxFVEVcbiAgICAgICAgICAoZnVuIF8gLT4gYFNpbXVsYXRpb25EZWxldGUpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZmlsZWxpbmVzLyVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCBmaWxlX2xpbmVfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfbGlzdCBZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgbGluZXMpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vRElOLyVzXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgICBmbHV4X21hcF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4gKE1waV9tZXNzYWdlX2ouZGluX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9sb2dtZXNzYWdlc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5sb2dfbWVzc2FnZV9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfbGltaXQgLT5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIFN0cmluZy5jb25jYXQgXCImXCJcbiAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoa2V5LCB2YWx1ZSkgLT4gRm9ybWF0LnNwcmludGYgXCIlcz0lc1wiIGtleSB2YWx1ZSlcbiAgICAgICAgICAgICAgICgobWF0Y2ggcGxvdF9saW1pdC5BcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgfCBTb21lIHBsb3RfbGltaXRfb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgICBbIFwicGxvdF9saW1pdF9vZmZzZXRcIiwgc3RyaW5nX29mX2ludCBwbG90X2xpbWl0X29mZnNldCBdKVxuICAgICAgICAgICAgICAgQFxuICAgICAgICAgICAgICAgbWF0Y2ggcGxvdF9saW1pdC5BcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgIHwgU29tZSBwbG90X2xpbWl0X3BvaW50cyAtPlxuICAgICAgICAgICAgICAgICBbIFwicGxvdF9saW1pdF9wb2ludHNcIiwgc3RyaW5nX29mX2ludCBwbG90X2xpbWl0X3BvaW50cyBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wbG90XCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCB+ZGF0YTphcmdzIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgKE1waV9tZXNzYWdlX2oucGxvdF9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3NuYXBzaG90cy8lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQgc25hcHNob3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkluZm8gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2VmZmljaWVuY3lcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9lZmZpY2llbmN5X29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vdHJhY2VcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcyAtPiBgU2ltdWxhdGlvblRyYWNlIHMpXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL291dHB1dHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcyAtPiBgU2ltdWxhdGlvbk91dHB1dHNaaXAgcylcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9maWxlbGluZXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5maWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vRElOXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIChNcGlfbWVzc2FnZV9qLmRpbl9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3NuYXBzaG90c1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wYXVzZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBQVVQgKGZ1biBfIC0+IGBTaW11bGF0aW9uUGF1c2UpXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGFyYW1ldGVyXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vaW50ZXJ2ZW50aW9uXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYFBVVFxuICAgICAgICAgIH5kYXRhOlxuICAgICAgICAgICAgKEFwaV90eXBlc19qLnN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvblxuICAgICAgICAgICAgICAoWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KSkpXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgUE9TVFxuICAgICAgICAgIH5kYXRhOlxuICAgICAgICAgICAgKEFwaV90eXBlc19qLnN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyByZXN1bHQpKVxuXG4gICAgaW5oZXJpdCBNcGlfYXBpLm1hbmFnZXJfYmFzZSAoKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgcmVzdF9tZXNzYWdlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IGBFbnZpcm9ubWVudEluZm8gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8gKE1waV9tZXNzYWdlX2ouZW52aXJvbm1lbnRfaW5mb19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0c1wiIHVybCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBsZXQgcHJvamVjdHMgPVxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgcHJvamVjdHMpXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHByb2plY3RfcGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0c1wiIHVybCkgYFBPU1RcbiAgICAgICAgICB+ZGF0YTooQXBpX3R5cGVzX2ouc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyIHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgICAgIChmdW4gXyAtPiBgUHJvamVjdENyZWF0ZSlcbiAgICAgIHwgYFByb2plY3REZWxldGUgcHJvamVjdF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lc1wiIHVybCBwcm9qZWN0X2lkKSBgREVMRVRFIChmdW4gXyAtPlxuICAgICAgICAgICAgYFByb2plY3REZWxldGUpXG5cbiAgICBtZXRob2QgZW52aXJvbm1lbnRfaW5mbyAoKSA6IEFwaV90eXBlc19qLmVudmlyb25tZW50X2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSBgRW52aXJvbm1lbnRJbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIChyZXN1bHQgOiBNcGlfbWVzc2FnZV90LmVudmlyb25tZW50X2luZm8pIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9kZWxldGUgcHJvamVjdF9pZCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSAoYFByb2plY3REZWxldGUgcHJvamVjdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2NhdGFsb2cgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RDYXRhbG9nIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfY3JlYXRlIChwcm9qZWN0X3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSAoYFByb2plY3RDcmVhdGUgcHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvcGFyc2UvJXMldFwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBwYXR0ZXJuU2hhcmluZyB3aXRoXG4gICAgICAgICAgIHwgUGF0dGVybi5Ob19zaGFyaW5nIC0+IFwibm9fc2hhcmluZ1wiXG4gICAgICAgICAgIHwgUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiXG4gICAgICAgICAgIHwgUGF0dGVybi5NYXhfc2hhcmluZyAtPiBcIm1heF9zaGFyaW5nXCIpXG4gICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0ZSB3aXRoXG4gICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIj8lYVwiXG4gICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCImXCIpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiAodnIsIHZhKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXM9JWFcIiB2ciBOYnIucHJpbnQgdmEpKVxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgYFBPU1RcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgdGVybWluYXRlID0gTHd0Lmlnbm9yZV9yZXN1bHQgKHNlbGYjcHJvamVjdF9kZWxldGUgcHJvamVjdF9pZClcbiAgICBtZXRob2QgaXNfcnVubmluZyA9IHRydWUgKCpUT0RPKilcblxuICAgIG1ldGhvZCBmaWxlX2NhdGFsb2cgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSkpXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgcG9zIGlkIGNvbnRlbnQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzL3Bvc2l0aW9uLyVpXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgaWQgcG9zKVxuICAgICAgICBgUFVUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChgU3RyaW5nIGNvbnRlbnQpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX2dldCBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGlkIGNvbnRlbnQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChgU3RyaW5nIGNvbnRlbnQpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX21vdmUgcG9zIGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lcy9wb3NpdGlvbi8laVwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIGlkIHBvcylcbiAgICAgICAgYFBPU1RcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBERUxFVEVcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL292ZXJ3cml0ZS8lc1wiIHVybCBwcm9qZWN0X2lkIGZpbGVfaWQpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gYXN0KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGRhdGEgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzXCIgdXJsIHByb2plY3RfaWQpIGBQVVQgfmRhdGFcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICAgICAgICAgIHwgYE51bGwgLT4gKClcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIEthU2EgSU5JVCByZXNwb25zZTogXCIsIHgpKSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb250YWN0X21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb250YWN0X21hcFwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPiBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeClcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvYW5hbHlzZXMvaW5mbHVlbmNlX21hcFwiIHVybClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT4geClcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChsZXQgcyA9XG4gICAgICAgICAgIG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgICAgXCImYWNjdXJhY3k9XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3lcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgIGluXG4gICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXA/dG90YWw9JWklcyVzJXMlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkIHRvdGFsXG4gICAgICAgICAgIChtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCImb3JpZ2luPV9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiJm9yaWdpbj1fdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChtYXRjaCBmd2Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgaSAtPiBcIiZmd2Q9XCIgXiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgICAgICAgIChtYXRjaCBid2Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgaSAtPiBcIiZid2Q9XCIgXiBzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvaW5pdGlhbF9ub2RlXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWQpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIHNob3J0X2lkX29wdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9uZXh0X25vZGUlc1wiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBzaG9ydF9pZF9vcHQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCJfcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIl92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUgc2hvcnRfaWRfb3B0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL3ByZXZpb3VzX25vZGUlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBzaG9ydF9pZF9vcHQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCJfcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIl92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgeyBMb2MubGluZTsgTG9jLmNociB9ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL25vZGVfYXQ/ZmlsZT0lcyZsaW5lPSVpJmNocj0laVwiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkIGZpbGVuYW1lIGxpbmUgY2hyKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9hbGxfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvYW5hbHlzZXMvYWxsX25vZGVzX29mX2luZmx1ZW5jZV9tYXBcIiB1cmwpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9kZWFkX3J1bGVzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9kZWFkX2FnZW50c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnN0cmFpbnRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgbWF0Y2ggYWNjdXJhY3lfY20sIGFjY3VyYWN5X3NjYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBhLCBOb25lIC0+IFwiP2FjY3VyYWN5X2NtPVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgfCBOb25lLCBTb21lIGEgLT4gXCI/YWNjdXJhY3lfc2NjPVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgIFwiP2FjY3VyYWN5X2NtPVwiXG4gICAgICAgICAgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICAgIF4gXCImYWNjdXJhY3lfc2NjPVwiXG4gICAgICAgICAgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYlxuICAgICAgaW5cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9wb3RlbnRpYWxfcG9seW1lcnMlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkIG9wdGlvbnMpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuc2NjX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSBpc19jb21wdXRpbmcgcmVxdWVzdF9jb3VudFxuXG4gICAgbWV0aG9kIGNvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgICAgICAgOiAodW5pdCwgc3RyaW5nKSBMd3RfcmVzdWx0LnQgPVxuICAgICAgbGV0IF9kb250Y2FyZSA9IGNhdXNhbCB8fCB3ZWFrIHx8IHN0cm9uZyBpblxuICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBpbiBub3QgYXZhaWxhYmxlIHRocm91Z2ggSFRUUFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiAoXyA6IHN0cmluZylcbiAgICAgICAgOiAodW5pdCwgc3RyaW5nKSBMd3RfcmVzdWx0LnQgPVxuICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBpbiBub3QgYXZhaWxhYmxlIHRocm91Z2ggSFRUUFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nIDogc3RyaW5nIGxpc3QgPSBbXVxuICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgIG1ldGhvZCBzdG9yeV9wcm9ncmVzcyA6IFN0b3J5X2pzb24ucHJvZ3Jlc3NfYmFyIG9wdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzdG9yeV9saXN0XG4gICAgICAgIDogKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAgICAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgICAgICAgIE1vZHMuSW50TWFwLnQgPVxuICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2xpZW50SWRQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcENsaWVudElkXCJcbmxldCBfY2xpZW50X2lkIDogc3RyaW5nIHJlZiA9IHJlZiBcIlwiXG5sZXQgZ2V0X2NsaWVudF9pZCAoKSA6IHN0cmluZyA9ICFfY2xpZW50X2lkXG5sZXQgc2V0X2NsaWVudF9pZCAoY2xpZW50X2lkIDogc3RyaW5nKSA6IHVuaXQgPSBfY2xpZW50X2lkIDo9IGNsaWVudF9pZFxubGV0IGZvbnRTaXplUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBGb250U2l6ZVwiXG5sZXQgY3VycmVudEZvbnRTaXplID0gcmVmIDEuNFxuXG5sZXQgaW5pdEZyb21TdG9yYWdlICgpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBjdXJyZW50Rm9udFNpemUgOj0gMS40IGluXG4gICAgICBfY2xpZW50X2lkIDo9IENvbW1vbi5ndWlkICgpKVxuICAgIChmdW4gc3QgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGN1cnJlbnRGb250U2l6ZSA6PVxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gZm9udFNpemVQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiAxLjQpXG4gICAgICAgICAgICBKcy5wYXJzZUZsb2F0XG4gICAgICBpblxuICAgICAgX2NsaWVudF9pZCA6PVxuICAgICAgICBKcy5PcHQuY2FzZSAoc3QjI2dldEl0ZW0gY2xpZW50SWRQYXJhbUlkKSBDb21tb24uZ3VpZCBKcy50b19zdHJpbmcpXG5cbmxldCBzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpID1cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgICBzdCMjc2V0SXRlbSBmb250U2l6ZVBhcmFtSWQgKEpzLnN0cmluZyB2JykpXG4gIGluXG4gIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIHN0IC0+XG4gICAgICBzdCMjc2V0SXRlbSBjbGllbnRJZFBhcmFtSWQgKEpzLnN0cmluZyAhX2NsaWVudF9pZCkpXG5cbmxldCB1cGRhdGVGb250U2l6ZSB+ZGVsdGEgPVxuICBsZXQgKCkgPSBjdXJyZW50Rm9udFNpemUgOj0gbWF4IDAuMiAobWluICghY3VycmVudEZvbnRTaXplICsuIGRlbHRhKSAzLikgaW5cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkjIy5zdHlsZSMjLmZvbnRTaXplIDo9IEpzLnN0cmluZyAodicgXiBcImVtXCIpXG4gIGluXG4gICgpXG5cbmxldCBzeW5jaCwgc2V0X3N5bmNoID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBhZ2VudF9jb2xvcmluZyA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgKCkgPSBpbml0RnJvbVN0b3JhZ2UgKCkgaW5cbiAgbGV0IGNsaWVudF9pZHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJjbGllbnRfaWRcIiBpblxuICBsZXQgc3luY2ggPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJzeW5jaFwiIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2xpZW50X2lkcyB3aXRoXG4gICAgfCBjbGllbnRfaWQgOjogXyAtPiBzZXRfY2xpZW50X2lkIGNsaWVudF9pZFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgbGV0ICgpID0gc2V0X3N5bmNoIChbIFwidHJ1ZVwiIF0gPSBzeW5jaCkgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBzeW5jICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuY2xhc3MgbWFuYWdlciAoKSA9XG4gIGxldCBrYXNhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthc2FfbWFpbGJveCA9IEthc2FfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYW1vaGFfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthTW9IYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYW1vaGFfbWFpbGJveCA9IEthbW9oYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthc3Rvcl93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTdG9yV29ya2VyLmpzXCIgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgc2ltX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNpbVdvcmtlci5qc1wiXG4gICAgdmFsIG11dGFibGUgaXNfcnVubmluZyA9IHRydWVcblxuICAgIGluaXRpYWxpemVyXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc2FfY2xpZW50LnJlY2VpdmUga2FzYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthbW9oYV9jbGllbnQucmVjZWl2ZSBrYW1vaGFfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzaW1fd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHNlbGYjcmVjZWl2ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNpbV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzbGVlcCB0aW1lb3V0ID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0aW1lb3V0XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBwb3N0X21lc3NhZ2UgKG1lc3NhZ2VfdGV4dCA6IHN0cmluZykgOiB1bml0ID1cbiAgICAgIHNpbV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dFxuXG4gICAgaW5oZXJpdCBNcGlfYXBpLm1hbmFnZXIgKClcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2FfY2xpZW50Lm5ld191bmlmb3JtX2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthc2Ffd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthc2FfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2Ftb2hhX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthbW9oYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2Ftb2hhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYXN0b3Jfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIHZhbCBtdXRhYmxlIGthc2FfbG9jYXRvciA9IFtdXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlcyA9XG4gICAgICBzZWxmI3NlY3JldF9wcm9qZWN0X3BhcnNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gb3V0IC0+XG4gICAgICAgICAgICAgIGxldCBsb2FkID1cbiAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgb3V0IG92ZXJ3cml0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluaXQgPSBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyIG91dCBpblxuICAgICAgICAgICAgICBsZXQgbG9jYXRvcnMgPVxuICAgICAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gaW5mb3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb2FkID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPiBsb2NhdG9ycykpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zIDogXyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgKGZ1biAoXywgeCkgLT4gTG9jLmlzX2luY2x1ZGVkX2luIGZpbGVuYW1lIHBvcyB4KVxuICAgICAgICBrYXNhX2xvY2F0b3JcbiAgICAgIHw+IE9wdGlvbl91dGlsLm1hcCBmc3RcbiAgICAgIHw+IFJlc3VsdF91dGlsLm9rID9zdGF0dXM6Tm9uZVxuICAgICAgfD4gTHd0LnJldHVyblxuXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSBpc19ydW5uaW5nXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IHNpbV93b3JrZXIjI3Rlcm1pbmF0ZSBpblxuICAgICAga2FzYV93b3JrZXIjI3Rlcm1pbmF0ZVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9XG4gICAgICBzZWxmI3NpbV9pc19jb21wdXRpbmdcbiAgICAgIHx8IEthc2FfY2xpZW50LmlzX2NvbXB1dGluZyBrYXNhX21haWxib3hcbiAgICAgIHx8IHNlbGYjc3RvcnlfaXNfY29tcHV0aW5nXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBjbGkgPSB7IHVybDogc3RyaW5nOyBjb21tYW5kOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyBsaXN0IH1cbnR5cGUgcHJvdG9jb2wgPSBIVFRQIG9mIHN0cmluZyB8IENMSSBvZiBjbGlcbnR5cGUgcmVtb3RlID0geyBsYWJlbDogc3RyaW5nOyBwcm90b2NvbDogcHJvdG9jb2wgfVxudHlwZSBzcGVjID0gV2ViV29ya2VyIHwgRW1iZWRkZWQgfCBSZW1vdGUgb2YgcmVtb3RlXG50eXBlIHN0YXRlID0geyBzdGF0ZV9jdXJyZW50OiBzcGVjOyBzdGF0ZV9ydW50aW1lczogc3BlYyBsaXN0IH1cbnR5cGUgbW9kZWwgPSB7IG1vZGVsX2N1cnJlbnQ6IHNwZWM7IG1vZGVsX3J1bnRpbWVzOiBzcGVjIGxpc3QgfVxuXG5sZXQgc3BlY19sYWJlbCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBXZWJXb3JrZXIgLT4gXCJXZWJXb3JrZXJcIlxuICB8IEVtYmVkZGVkIC0+IFwiRW1iZWRkZWRcIlxuICB8IFJlbW90ZSByZW1vdGUgLT4gcmVtb3RlLmxhYmVsXG5cbmxldCBzcGVjX2lkIDogc3BlYyAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFdlYldvcmtlciAtPiBcIldlYldvcmtlclwiXG4gIHwgRW1iZWRkZWQgLT4gXCJFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgaHR0cCB9IC0+IGh0dHBcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+IGNsaS51cmxcblxubGV0IHJlYWRfc3BlYyA6IHN0cmluZyAtPiBzcGVjIG9wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgXCJXZWJXb3JrZXJcIiAtPiBTb21lIFdlYldvcmtlclxuICB8IFwiRW1iZWRkZWRcIiAtPiBTb21lIEVtYmVkZGVkXG4gIHwgdXJsIC0+XG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwicGFyc2VfcmVtb3RlOiAlc1wiIHVybCkpIGluXG4gICAgbGV0IGZvcm1hdF91cmwgdXJsID1cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHVybCBpblxuICAgICAgaWYgbGVuZ3RoID4gMCAmJiBTdHJpbmcuZ2V0IHVybCAobGVuZ3RoIC0gMSkgPT0gJy8nIHRoZW5cbiAgICAgICAgU3RyaW5nLnN1YiB1cmwgMCAobGVuZ3RoIC0gMSlcbiAgICAgIGVsc2VcbiAgICAgICAgdXJsXG4gICAgaW5cbiAgICBsZXQgY2xlYW5lZF91cmwgaHR0cCA9XG4gICAgICBsZXQgY2xlYW5lZCA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXM6JWQvJXNcIiBodHRwLlVybC5odV9ob3N0IGh0dHAuVXJsLmh1X3BvcnRcbiAgICAgICAgICBodHRwLlVybC5odV9wYXRoX3N0cmluZ1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcImNsZWFuZWQgOiAlc1wiIGNsZWFuZWQpKVxuICAgICAgaW5cbiAgICAgIGZvcm1hdF91cmwgY2xlYW5lZFxuICAgIGluXG4gICAgKG1hdGNoIFVybC51cmxfb2Zfc3RyaW5nIHVybCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcGFyc2VkIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgOiBwcm90b2NvbCA9XG4gICAgICAgIG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBIVFRQIChcImh0dHA6Ly9cIiBeIGNsZWFuZWRfdXJsIGh0dHApXG4gICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IEhUVFAgKFwiaHR0cHM6Ly9cIiBeIGNsZWFuZWRfdXJsIGh0dHBzKVxuICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT5cbiAgICAgICAgICBDTElcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdXJsID0gXCJmaWxlOi8vXCIgXiBmaWxlLlVybC5mdV9wYXRoX3N0cmluZztcbiAgICAgICAgICAgICAgY29tbWFuZCA9IGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nO1xuICAgICAgICAgICAgICBhcmdzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5hc3NvYyBcImxhYmVsXCJcbiAgICAgICAgICAgIChtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gaHR0cHMuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+IGZpbGUuVXJsLmZ1X2FyZ3VtZW50cylcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAobWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gaHR0cC5VcmwuaHVfaG9zdFxuICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IGh0dHBzLlVybC5odV9ob3N0XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+IGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nKVxuICAgICAgaW5cbiAgICAgIFNvbWUgKFJlbW90ZSB7IGxhYmVsOyBwcm90b2NvbCB9KSlcblxuY2xhc3MgZW1iZWRkZWQgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlciA9XG4gIGxldCBrYXNhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthc2FfbWFpbGJveCA9IEthc2FfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYW1vaGFfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthTW9IYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYW1vaGFfbWFpbGJveCA9IEthbW9oYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthc3Rvcl93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTdG9yV29ya2VyLmpzXCIgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbml0aWFsaXplclxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzYV9jbGllbnQucmVjZWl2ZSBrYXNhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthbW9oYV9jbGllbnQucmVjZWl2ZSBrYW1vaGFfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgKClcblxuICAgIGluaGVyaXRcbiAgICAgIEFwaV9ydW50aW1lLm1hbmFnZXJcbiAgICAgICAgKG9iamVjdFxuICAgICAgICAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMVxuICAgICAgICAgICBtZXRob2QgeWllbGQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnlpZWxkXG5cbiAgICAgICAgICAgbWV0aG9kIGxvZyA/ZXhuIChtc2cgOiBzdHJpbmcpID1cbiAgICAgICAgICAgICBsZXQgKCkgPSBpZ25vcmUgZXhuIGluXG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcImVtYmVkZGVkX21hbmFnZXIjbG9nOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIGVuZFxuICAgICAgICAgIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzYV9jbGllbnQubmV3X3VuaWZvcm1fY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2FzYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2FzYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYW1vaGFfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2Ftb2hhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYW1vaGFfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthc3Rvcl93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IGthc2Ffd29ya2VyIyN0ZXJtaW5hdGUgaW5cbiAgICAgICgpICgqVE9ETyopXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID0gdHJ1ZSAoKlRPRE8qKVxuICAgIHZhbCBtdXRhYmxlIGthc2FfbG9jYXRvciA9IFtdXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlcyA9XG4gICAgICBzZWxmI3NlY3JldF9wcm9qZWN0X3BhcnNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gb3V0IC0+XG4gICAgICAgICAgICAgIGxldCBsb2FkID1cbiAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgb3V0IG92ZXJ3cml0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluaXQgPSBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyIG91dCBpblxuICAgICAgICAgICAgICBsZXQgbG9jYXRvcnMgPVxuICAgICAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gaW5mb3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb2FkID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPiBsb2NhdG9ycykpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zIDogXyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgKGZ1biAoXywgeCkgLT4gTG9jLmlzX2luY2x1ZGVkX2luIGZpbGVuYW1lIHBvcyB4KVxuICAgICAgICBrYXNhX2xvY2F0b3JcbiAgICAgIHw+IE9wdGlvbl91dGlsLm1hcCBmc3RcbiAgICAgIHw+IFJlc3VsdF91dGlsLm9rID9zdGF0dXM6Tm9uZVxuICAgICAgfD4gTHd0LnJldHVyblxuICBlbmRcblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPVxuICBSZWFjdC5TLmNyZWF0ZVxuICAgIHsgc3RhdGVfY3VycmVudCA9IFdlYldvcmtlcjsgc3RhdGVfcnVudGltZXMgPSBbIFdlYldvcmtlcjsgRW1iZWRkZWQgXSB9XG5cbmxldCBjcmVhdGVfbWFuYWdlciB+aXNfbmV3IHByb2plY3RfaWQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc3RhdGVfY3VycmVudCB3aXRoXG4gIHwgV2ViV29ya2VyIC0+XG4gICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgTHd0LnJldHVyblxuICAgICAgKFJlc3VsdF91dGlsLm9rIChuZXcgV2ViX3dvcmtlcl9hcGkubWFuYWdlciAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBFbWJlZGRlZCAtPlxuICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChuZXcgZW1iZWRkZWQgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgdXJsIH0gLT5cbiAgICBsZXQgdmVyc2lvbl91cmwgOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInNldF9ydW50aW1lX3VybDogJXNcIiB2ZXJzaW9uX3VybCkpXG4gICAgaW5cbiAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QucGVyZm9ybV9yYXdcbiAgICAgIH5yZXNwb25zZV90eXBlOlhtbEh0dHBSZXF1ZXN0LlRleHQgdmVyc2lvbl91cmxcbiAgICA+Pj0gZnVuIGZyYW1lIC0+XG4gICAgbGV0IGlzX3ZhbGlkX3NlcnZlciA6IGJvb2wgPVxuICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPSAyMDBcbiAgICBpblxuICAgIGlmIGlzX3ZhbGlkX3NlcnZlciB0aGVuIChcbiAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCB0cnVlIGluXG4gICAgICBsZXQgbWFuYWdlciA9IG5ldyBSZXN0X2FwaS5tYW5hZ2VyIH50aW1lb3V0Ok5vbmUgfnVybCB+cHJvamVjdF9pZCBpblxuICAgICAgKGlmIGlzX25ldyB0aGVuXG4gICAgICAgICBtYW5hZ2VyI3Byb2plY3RfY3JlYXRlXG4gICAgICAgICAgIHsgQXBpX3R5cGVzX2oucHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHByb2plY3RfaWQgfVxuICAgICAgIGVsc2VcbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobWFuYWdlciA6PiBBcGkuY29uY3JldGVfbWFuYWdlcikpKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCJCYWQgUmVzcG9uc2UgJWQgZnJvbSAlcyBcIlxuICAgICAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIHVybFxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgKVxuICB8IFJlbW90ZSB7IGxhYmVsOyBwcm90b2NvbCA9IENMSSBjbGkgfSAtPlxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChcInNldF9ydW50aW1lX3VybDogXCIgXiBjbGkudXJsKSkgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzX25vZGVfcnVudGltZSA9IG5ldyBKc05vZGUubWFuYWdlciBjbGkuY29tbWFuZCBjbGkuYXJncyBpblxuICAgICAgIGlmIGpzX25vZGVfcnVudGltZSNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJzZXRfcnVudGltZV91cmw6c3VjZXNzXCIpIGluXG4gICAgICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChqc19ub2RlX3J1bnRpbWUgOj4gQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICAgICAgICkgZWxzZSAoXG4gICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcInNldF9ydW50aW1lX3VybDpmYWlsdXJlXCIpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgICAgRm9ybWF0LnNwcmludGYgXCJDb3VsZCBub3Qgc3RhcnQgY2xpIHJ1bnRpbWUgJXMgXCIgbGFiZWxcbiAgICAgICAgIGluXG4gICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgIClcbiAgICAgd2l0aCBGYWlsdXJlIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIHgpKVxuXG5sZXQgc2V0X3NwZWMgcnVudGltZSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBzZXRfc3RhdGVcbiAgICB7IHN0YXRlX2N1cnJlbnQgPSBydW50aW1lOyBzdGF0ZV9ydW50aW1lcyA9IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXMgfVxuXG5sZXQgY3JlYXRlX3NwZWMgfmxvYWQgKGlkIDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCA9XG4gIG1hdGNoIHJlYWRfc3BlYyBpZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gY3JlYXRlIHNwZWM6IGNvdWxkIG5vdCBwYXJzZSBpZGVudGlmaWVyICVzXCIgaWRcbiAgICBpblxuICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2dcbiAgfCBTb21lIHJ1bnRpbWUgLT5cbiAgICBsZXQgY3VycmVudF9zdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbm90IChMaXN0Lm1lbSBydW50aW1lIGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXMpIHRoZW5cbiAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGVfY3VycmVudCA9IGN1cnJlbnRfc3RhdGUuc3RhdGVfY3VycmVudDtcbiAgICAgICAgICAgIHN0YXRlX3J1bnRpbWVzID0gcnVudGltZSA6OiBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzO1xuICAgICAgICAgIH1cbiAgICBpblxuICAgIGxldCAoKSA9IGlmIGxvYWQgdGhlbiBzZXRfc3BlYyBydW50aW1lIGluXG4gICAgUmVzdWx0X3V0aWwub2sgKClcblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5tYXBcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICB7XG4gICAgICAgIG1vZGVsX2N1cnJlbnQgPSBzdGF0ZS5zdGF0ZV9jdXJyZW50O1xuICAgICAgICBtb2RlbF9ydW50aW1lcyA9IHN0YXRlLnN0YXRlX3J1bnRpbWVzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG4oKiBydW4gb24gYXBwbGljYXRpb24gaW5pdCAqKVxubGV0IGluaXQgKCkgPVxuICAoKiBnZXQgdXJsIG9mIGhvc3QgKilcbiAgbGV0IGhvc3RzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwiaG9zdFwiIGluXG4gIGxldCByZWMgYWRkX3VybHMgdXJscyBsb2FkID1cbiAgICBtYXRjaCB1cmxzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB1cmwgOjogdXJscyAtPlxuICAgICAgKG1hdGNoIGNyZWF0ZV9zcGVjIH5sb2FkIHVybCB3aXRoXG4gICAgICB8IHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuT2sgKCk7IF8gfSAtPiBhZGRfdXJscyB1cmxzIGZhbHNlXG4gICAgICB8IHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IC0+IGFkZF91cmxzIHVybHMgbG9hZClcbiAgaW5cbiAgbGV0ICgpID0gYWRkX3VybHMgaG9zdHMgdHJ1ZSBpblxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc3RhdGVfY3VycmVudCB3aXRoXG4gIHwgUmVtb3RlIHsgcHJvdG9jb2wgPSBDTEkgXzsgXyB9IHwgV2ViV29ya2VyIHwgRW1iZWRkZWQgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCB2ZXJzaW9uX3VybCA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X3J1bnRpbWVfdXJsOiAlc1wiIHZlcnNpb25fdXJsKSlcbiAgICBpblxuICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5wZXJmb3JtX3Jhd1xuICAgICAgfnJlc3BvbnNlX3R5cGU6WG1sSHR0cFJlcXVlc3QuVGV4dCB2ZXJzaW9uX3VybFxuICAgID4+PSBmdW4gZnJhbWUgLT5cbiAgICBsZXQgaXNfdmFsaWRfc2VydmVyIDogYm9vbCA9XG4gICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSA9IDIwMFxuICAgIGluXG4gICAgaWYgaXNfdmFsaWRfc2VydmVyIHRoZW4gKFxuICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIHRydWUgaW5cbiAgICAgIGxldCBtYW5hZ2VyID0gbmV3IFJlc3RfYXBpLm1hbmFnZXIgfnRpbWVvdXQ6Tm9uZSB+dXJsIH5wcm9qZWN0X2lkOlwiXCIgaW5cbiAgICAgIG1hbmFnZXIjcHJvamVjdF9jYXRhbG9nXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gcHJvamVjdHMgLT4gTHd0LnJldHVybiBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl9uaWwpXG4gICAgKSBlbHNlXG4gICAgICBMd3QucmV0dXJuX25pbFxuXG4oKiB0byBzeW5jIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHN5bmMgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBwbG90UGVyaW9kUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBQbG90UGVyaW9kXCJcbmxldCBwYXVzZUNvbmRpdGlvblBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGF1c2VDb25kaXRpb25cIlxubGV0IHNlZWRQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcERlZmF1bHRTZWVkXCJcbmxldCBzdG9yZVRyYWNlUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTdG9yZVRyYWNlXCJcbmxldCBzaG93RGVhZFJ1bGVzUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTaG93RGVhZFJ1bGVzXCJcbmxldCBzaG93RGVhZEFnZW50c1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRBZ2VudHNcIlxuXG5sZXQgc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCA9XG4gIEpzLnN0cmluZyBcImthcHBhcHBTaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvblwiXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgcGxvdF9wZXJpb2Q6IGZsb2F0O1xuICBwYXVzZV9jb25kaXRpb246IHN0cmluZztcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgc3RvcmVfdHJhY2U6IGJvb2w7XG4gIHNob3dfZGVhZF9ydWxlczogYm9vbDtcbiAgc2hvd19kZWFkX2FnZW50czogYm9vbDtcbiAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM6IGJvb2w7XG59XG5cbnR5cGUgYV9wcm9qZWN0ID0ge1xuICBwcm9qZWN0X2lkOiBzdHJpbmc7XG4gIHByb2plY3RfaXNfY29tcHV0aW5nOiBib29sIFJlYWN0LlMudDtcbiAgcHJvamVjdF93YXRjaGVyX2NhbmNlbDogYm9vbCByZWY7XG4gIHByb2plY3RfbWFuYWdlcjogQXBpLmNvbmNyZXRlX21hbmFnZXI7XG59XG5cbnR5cGUgc3RhdGUgPSB7XG4gIHByb2plY3RfY3VycmVudDogYV9wcm9qZWN0IG9wdGlvbjtcbiAgcHJvamVjdF9jYXRhbG9nOiBhX3Byb2plY3QgbGlzdDtcbiAgcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIGRlZmF1bHRfcGFyYW1ldGVyczogcGFyYW1ldGVycztcbiAgcHJvamVjdF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIE1vZHMuU3RyaW5nTWFwLnQ7XG59XG5cbnR5cGUgcHJvamVjdF9tb2RlbCA9IHtcbiAgbW9kZWxfcHJvamVjdF9pZDogc3RyaW5nO1xuICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG59XG5cbnR5cGUgbW9kZWwgPSB7XG4gIG1vZGVsX2N1cnJlbnRfaWQ6IHN0cmluZyBvcHRpb247XG4gIG1vZGVsX2NhdGFsb2c6IHByb2plY3RfbW9kZWwgbGlzdDtcbiAgbW9kZWxfcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIG1vZGVsX3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG59XG5cbmxldCBwcm9qZWN0X2VxdWFsIGEgYiA9IGEucHJvamVjdF9pZCA9IGIucHJvamVjdF9pZFxuXG5sZXQgY2F0YWxvZ19lcXVhbCB4IHkgPVxuICB0cnkgTGlzdC5mb3JfYWxsMiBwcm9qZWN0X2VxdWFsIHggeSB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZVxuXG5sZXQgc3RhdGVfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWwgcHJvamVjdF9lcXVhbCBhLnByb2plY3RfY3VycmVudCBiLnByb2plY3RfY3VycmVudFxuICAmJiBhLnByb2plY3RfdmVyc2lvbiA9IGIucHJvamVjdF92ZXJzaW9uXG4gICYmIGEuZGVmYXVsdF9wYXJhbWV0ZXJzID0gYi5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgJiYgTW9kcy5TdHJpbmdNYXAuZXF1YWxcbiAgICAgICAoZnVuIHggeSAtPiBjb21wYXJlIHggeSA9IDApXG4gICAgICAgYS5wcm9qZWN0X3BhcmFtZXRlcnMgYi5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgJiYgY2F0YWxvZ19lcXVhbCBhLnByb2plY3RfY2F0YWxvZyBiLnByb2plY3RfY2F0YWxvZ1xuXG5sZXQgbW9kZWxfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWxcbiAgICAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKVxuICAgIGEubW9kZWxfY3VycmVudF9pZCBiLm1vZGVsX2N1cnJlbnRfaWRcbiAgJiYgKHRyeVxuICAgICAgICBMaXN0LmZvcl9hbGwyXG4gICAgICAgICAgKGZ1biB4IHkgLT4geC5tb2RlbF9wcm9qZWN0X2lkID0geS5tb2RlbF9wcm9qZWN0X2lkKVxuICAgICAgICAgIGEubW9kZWxfY2F0YWxvZyBiLm1vZGVsX2NhdGFsb2dcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBhLm1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IGIubW9kZWxfcHJvamVjdF92ZXJzaW9uXG4gICYmIGEubW9kZWxfcGFyYW1ldGVycyA9IGIubW9kZWxfcGFyYW1ldGVyc1xuXG5sZXQgaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnMgPVxuICB7XG4gICAgcGxvdF9wZXJpb2QgPSAxLjtcbiAgICBwYXVzZV9jb25kaXRpb24gPSBcIltmYWxzZV1cIjtcbiAgICBzZWVkID0gTm9uZTtcbiAgICBzdG9yZV90cmFjZSA9IGZhbHNlO1xuICAgIHNob3dfZGVhZF9ydWxlcyA9IHRydWU7XG4gICAgc2hvd19kZWFkX2FnZW50cyA9IHRydWU7XG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG5sZXQgaW5pdF9zdGF0ZSA9XG4gIHtcbiAgICBwcm9qZWN0X2N1cnJlbnQgPSBOb25lO1xuICAgIHByb2plY3RfY2F0YWxvZyA9IFtdO1xuICAgIHByb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgIHByb2plY3RfcGFyYW1ldGVycyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB9XG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgfmVxOnN0YXRlX2VxdWFsIGluaXRfc3RhdGVcblxubGV0IHVwZGF0ZV9wYXJhbWV0ZXJzIGhhbmRsZXIgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBkZWZhdWx0X3BhcmFtZXRlcnMsIHByb2plY3RfcGFyYW1ldGVycyA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gaGFuZGxlciBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAoIHN0LmRlZmF1bHRfcGFyYW1ldGVycyxcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgIChoYW5kbGVyXG4gICAgICAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzKSlcbiAgICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnMgKVxuICBpblxuICBzZXRfc3RhdGVcbiAgICB7XG4gICAgICBwcm9qZWN0X2N1cnJlbnQgPSBzdC5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICBwcm9qZWN0X2NhdGFsb2cgPSBzdC5wcm9qZWN0X2NhdGFsb2c7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb247XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgfVxuXG5sZXQgc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSA9XG4gIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgbGV0IHBhID1cbiAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdC5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0LmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gbHMgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwbG90UGVyaW9kUGFyYW1JZFxuICAgICAgICAgICAgKEpzLnN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHBhLnBsb3RfcGVyaW9kKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwYXVzZUNvbmRpdGlvblBhcmFtSWQgKEpzLnN0cmluZyBwYS5wYXVzZV9jb25kaXRpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcGEuc2VlZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxzIyNyZW1vdmVJdGVtIHNlZWRQYXJhbUlkXG4gICAgICAgICAgfCBTb21lIHZhIC0+IGxzIyNzZXRJdGVtIHNlZWRQYXJhbUlkIChKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgdmEpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc3RvcmVUcmFjZVBhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfcnVsZXMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZFxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID0gc3QucHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gcGE7XG4gICAgfVxuXG5sZXQgc2V0X3Bsb3RfcGVyaW9kIHBsb3RfcGVyaW9kID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGxvdF9wZXJpb2QgfSlcblxubGV0IHNldF9wYXVzZV9jb25kaXRpb24gcGF1c2VfY29uZGl0aW9uID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGF1c2VfY29uZGl0aW9uIH0pXG5cbmxldCBzZXRfc2VlZCBzZWVkID0gdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2VlZCB9KVxuXG5sZXQgc2V0X3N0b3JlX3RyYWNlIHN0b3JlX3RyYWNlID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc3RvcmVfdHJhY2UgfSlcblxubGV0IHNldF9zaG93X2RlYWRfcnVsZXMgc2hvd19kZWFkX3J1bGVzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX3J1bGVzIH0pXG5cbmxldCBzZXRfc2hvd19kZWFkX2FnZW50cyBzaG93X2RlYWRfYWdlbnRzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX2FnZW50cyB9KVxuXG5sZXQgc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+XG4gICAgICB7IHBhcmFtIHdpdGggc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgfSlcblxubGV0IHVwZGF0ZV9zdGF0ZSBtZSBwcm9qZWN0X2NhdGFsb2cgZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2plY3RfcGFyYW1ldGVycyA9XG4gIG1lLnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnNcbiAgICBbXVxuICA+Pj0gZnVuIG91dCAtPlxuICBsZXQgKCkgPVxuICAgIHNldF9zdGF0ZVxuICAgICAge1xuICAgICAgICBwcm9qZWN0X2N1cnJlbnQgPSBTb21lIG1lO1xuICAgICAgICBwcm9qZWN0X2NhdGFsb2c7XG4gICAgICAgIGRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAxO1xuICAgICAgfVxuICBpblxuICBMd3QucmV0dXJuIG91dFxuXG5sZXQgY29tcHV0aW5nX3dhdGNoZXIgbWFuYWdlciBzZXR0ZXIgPVxuICBsZXQgZGVsYXkgPSAxLiBpblxuICBsZXQgY2FuY2VsbGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0ICgpID0gc2V0dGVyIG1hbmFnZXIjaXNfY29tcHV0aW5nIGluXG4gICAgaWYgIWNhbmNlbGxlZCB0aGVuXG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIGRlbGF5ID4+PSBsb29wXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5hc3luYyBfX0xPQ19fIGxvb3AgaW5cbiAgY2FuY2VsbGVkXG5cbmxldCBhZGRfcHJvamVjdCBpc19uZXcgcHJvamVjdF9pZCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCBzdGF0ZV92YSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgKCogVE9ETzogSXMgaXQgb2sgdG8gZ2V0IHRoZSB2YWx1ZSBsaWtlIHRoaXMgPyAqKVxuICBsZXQgY2F0YWxvZyA9IHN0YXRlX3ZhLnByb2plY3RfY2F0YWxvZyBpblxuICAodHJ5XG4gICAgIEx3dC5yZXR1cm5cbiAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAoIExpc3QuZmluZCAoZnVuIHggLT4geC5wcm9qZWN0X2lkID0gcHJvamVjdF9pZCkgY2F0YWxvZyxcbiAgICAgICAgICAgIGNhdGFsb2csXG4gICAgICAgICAgICBzdGF0ZV92YS5wcm9qZWN0X3BhcmFtZXRlcnMgKSlcbiAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgIFN0YXRlX3J1bnRpbWUuY3JlYXRlX21hbmFnZXIgfmlzX25ldyBwcm9qZWN0X2lkXG4gICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBwcm9qZWN0X21hbmFnZXIgLT5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF9pc19jb21wdXRpbmcsIHNldF9jb21wdXRlcyA9IFJlYWN0LlMuY3JlYXRlIHRydWUgaW5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF93YXRjaGVyX2NhbmNlbCA9XG4gICAgICAgICAgICAgICBjb21wdXRpbmdfd2F0Y2hlciBwcm9qZWN0X21hbmFnZXIgKHNldF9jb21wdXRlcyA/c3RlcDpOb25lKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IG1lID1cbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9pZDtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9tYW5hZ2VyO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgICAgICAgcHJvamVjdF93YXRjaGVyX2NhbmNlbDtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZV92YS5kZWZhdWx0X3BhcmFtZXRlcnMgaW5cbiAgICAgICAgICAgICBsZXQgcGFyYW1zID1cbiAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBwcm9qZWN0X2lkIGRlZmF1bHRfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICBzdGF0ZV92YS5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChtZSwgbWUgOjogY2F0YWxvZywgcGFyYW1zKSkpKVxuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKG1lLCBjYXRhbG9nLCBwYXJhbXMpIC0+XG4gICAgICAgICAgdXBkYXRlX3N0YXRlIG1lIGNhdGFsb2cgc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIHBhcmFtcylcblxubGV0IGNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCB0cnVlIHByb2plY3RfaWRcbmxldCBzZXRfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgZmFsc2UgcHJvamVjdF9pZFxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgbW9kZWxfY3VycmVudF9pZCA9IE5vbmU7XG4gICAgbW9kZWxfY2F0YWxvZyA9IFtdO1xuICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIG1vZGVsX3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgfVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcCB+ZXE6bW9kZWxfZXF1YWxcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICBsZXQgbW9kZWxfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBwIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWQgPSBwLnByb2plY3RfaWQ7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nID0gcC5wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgICBpblxuICAgICAgbGV0IG1vZGVsX3BhcmFtZXRlcnMgPVxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgIHN0YXRlLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudF9pZCA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4LnByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY3VycmVudDtcbiAgICAgICAgbW9kZWxfY2F0YWxvZztcbiAgICAgICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gc3RhdGUucHJvamVjdF92ZXJzaW9uO1xuICAgICAgICBtb2RlbF9wYXJhbWV0ZXJzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG5sZXQgc3luYyAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU29tZSBjdXJyZW50IC0+XG4gICAgY3VycmVudC5wcm9qZWN0X21hbmFnZXIjcHJvamVjdF9wYXJzZVxuICAgICAgfnBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucyBbXVxuICAgID4+PSBmdW4gb3V0IC0+XG4gICAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9IHNldF9zdGF0ZSB7IHN0IHdpdGggcHJvamVjdF92ZXJzaW9uID0gc3VjYyBzdC5wcm9qZWN0X3ZlcnNpb24gfSBpblxuICAgIEx3dC5yZXR1cm4gb3V0XG5cbmxldCByZW1vdmVfZmlsZXMgbWFuYWdlciA9XG4gIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgTHd0X2xpc3QuaXRlcl9wXG4gICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBtLktmaWxlcy5pZCA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgID4+PSBmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgdHJ5XG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIHJlbW92ZV9maWxlcyBjdXJyZW50LnByb2plY3RfbWFuYWdlciA+Pj0gZnVuIG91dCcgLT5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgOj0gdHJ1ZSBpblxuICAgIGxldCBwcm9qZWN0X2NhdGFsb2cgPVxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA8PiBjdXJyZW50LnByb2plY3RfaWQpXG4gICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgbGV0IHByb2plY3RfY3VycmVudCA9XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdi5wcm9qZWN0X2lkID0gY3VycmVudC5wcm9qZWN0X2lkXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcHJvamVjdF9jYXRhbG9nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgaCA6OiBfIC0+IFNvbWUgaFxuICAgICAgKSBlbHNlXG4gICAgICAgIHN0YXRlLnByb2plY3RfY3VycmVudFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdF9jdXJyZW50O1xuICAgICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLnJlbW92ZSBwcm9qZWN0X2lkIHN0YXRlLnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X21hbmFnZXIjdGVybWluYXRlIGluXG4gICAgc3luYyAoKSA+Pj0gZnVuIG91dCcnIC0+XG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIG91dCc7IG91dCcnIF0pXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTHd0LnJldHVyblxuICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgKFwiUHJvamVjdCBcIiBeIHByb2plY3RfaWQgXiBcIiBkb2VzIG5vdCBleGlzdHNcIikpXG5cbmxldCByZWMgaW5pdF9wbG90X3BlcmlvZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGluaXRfcGxvdF9wZXJpb2QgJyVzJ1wiIGggaW5cbiAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9wbG90X3BlcmlvZCB0KVxuXG5sZXQgaW5pdF9wYXVzZV9jb25kaXRpb24gKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9wYXVzZV9jb25kaXRpb24gaFxuXG5sZXQgcmVjIGluaXRfbW9kZWxfc2VlZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIG1vZGVsX3NlZWQgJyVzJ1wiIGggaW5cbiAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9tb2RlbF9zZWVkIHQpXG5cbmxldCBpbml0X3N0b3JlX3RyYWNlIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc3RvcmVfdHJhY2UgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfcnVsZXMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfcnVsZXMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfYWdlbnRzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX2FnZW50cyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdCBleGlzdGluZ19wcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICBsZXQgYXJnX3Bsb3RfcGVyaW9kID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwbG90X3BlcmlvZFwiXG4gIGluXG4gIGxldCBhcmdfcGF1c2VfY29uZGl0aW9uID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGF1c2VfY29uZGl0aW9uXCJcbiAgaW5cbiAgbGV0IGFyZ19tb2RlbF9zZWVkID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2VlZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJtb2RlbF9zZWVkXCJcbiAgaW5cbiAgbGV0IGFyZ19zdG9yZV90cmFjZSA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic3RvcmVfdHJhY2VcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9ydWxlcyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX3J1bGVzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfYWdlbnRzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX2FnZW50c1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIlxuICBpblxuICBsZXQgKCkgPSBpbml0X3Bsb3RfcGVyaW9kIGFyZ19wbG90X3BlcmlvZCBpblxuICBsZXQgKCkgPSBpbml0X3BhdXNlX2NvbmRpdGlvbiBhcmdfcGF1c2VfY29uZGl0aW9uIGluXG4gIGxldCAoKSA9IGluaXRfbW9kZWxfc2VlZCBhcmdfbW9kZWxfc2VlZCBpblxuICBsZXQgKCkgPSBpbml0X3N0b3JlX3RyYWNlIGFyZ19zdG9yZV90cmFjZSBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9ydWxlcyBhcmdfc2hvd19kZWFkX3J1bGVzIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX2FnZW50cyBhcmdfc2hvd19kZWFkX2FnZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICBpblxuXG4gIGxldCBwcm9qZWN0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdDpbIFwiZGVmYXVsdFwiIF0gXCJwcm9qZWN0XCIgaW5cbiAgbGV0IHJlYyBhZGRfcHJvamVjdHMgcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBwcm9qZWN0cyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IHByb2plY3QgOjogcHJvamVjdHMgLT5cbiAgICAgIGFkZF9wcm9qZWN0XG4gICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IHggPD4gcHJvamVjdCkgZXhpc3RpbmdfcHJvamVjdHMpXG4gICAgICAgIHByb2plY3RcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBhZGRfcHJvamVjdHMgcHJvamVjdHMpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiY3JlYXRpbmcgcHJvamVjdCAlcyBlcnJvciBAWyVhQF1cIiBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIlN0YXRlX3Byb2plY3QuaW5pdCAyIDogJXNcIiBtc2cpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfcHJvamVjdHMgcHJvamVjdHMpXG4gIGluXG4gIGFkZF9wcm9qZWN0cyBleGlzdGluZ19wcm9qZWN0cyA+Pj0gZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0c1xuXG5sZXQgd2l0aF9wcm9qZWN0IDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCkgLT5cbiAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCAlcyBkdWUgdG8gdW5hdmFpbGFibGUgcHJvamVjdC5cIiBsYWJlbFxuICAgIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGN1cnJlbnQgLT4gaGFuZGxlciBjdXJyZW50LnByb2plY3RfbWFuYWdlclxuXG5sZXQgb25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgP2VxIH5vbiA/KG90aGVyc19lcSA9ICggPSApKSBpbml0X290aGVycyBvdGhlcnNcbiAgICBkZWZhdWx0IGhhbmRsZXIgPVxuICBsZXQgZXFfcGFpciA9IE1vZHMucGFpcl9lcXVhbCBzdGF0ZV9lcXVhbCBvdGhlcnNfZXEgaW5cbiAgUmVhY3QuUy5ob2xkID9lcSBkZWZhdWx0XG4gICAgKEx3dF9yZWFjdC5FLm1hcF9wXG4gICAgICAgKGZ1biAoc3QsIG90aCkgLT5cbiAgICAgICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiBkZWZhdWx0XG4gICAgICAgICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyIG90aClcbiAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgKFJlYWN0LlMub24gfmVxOmVxX3BhaXIgb24gKGluaXRfc3RhdGUsIGluaXRfb3RoZXJzKVxuICAgICAgICAgICAgIChSZWFjdC5TLlBhaXIucGFpciB+ZXE6ZXFfcGFpciBzdGF0ZSBvdGhlcnMpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHNsb3QgPSB7IGxvY2FsOiBzdHJpbmcgb3B0aW9uOyBuYW1lOiBzdHJpbmcgfVxudHlwZSBhY3RpdmUgPSB7IHJhbms6IGludDsgY3Vyc29yX3BvczogTG9jLnBvc2l0aW9uOyBvdXRfb2Zfc3luYzogYm9vbCB9XG50eXBlIG1vZGVsID0geyBjdXJyZW50OiBhY3RpdmUgb3B0aW9uOyBkaXJlY3Rvcnk6IHNsb3QgTW9kcy5JbnRNYXAudCB9XG5cbmxldCBkdW1teV9jdXJzb3JfcG9zID0geyBMb2MubGluZSA9IC0xOyBMb2MuY2hyID0gMCB9XG5sZXQgYmxhbmtfc3RhdGUgPSB7IGN1cnJlbnQgPSBOb25lOyBkaXJlY3RvcnkgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5sZXQgbW9kZWwsIHNldF9kaXJlY3Rvcnlfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSBibGFua19zdGF0ZVxuXG50eXBlIHJlZnJlc2ggPSB7IGZpbGVuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZzsgbGluZTogaW50IG9wdGlvbiB9XG5cbmxldCByZWZyZXNoX2ZpbGVfaG9vayA9IHJlZiBbXVxubGV0IHJlZ2lzdGVyX3JlZnJlc2hfZmlsZV9ob29rIHggPSByZWZyZXNoX2ZpbGVfaG9vayA6PSB4IDo6ICFyZWZyZXNoX2ZpbGVfaG9va1xuXG5sZXQgY3VycmVudF9maWxlbmFtZSA9XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBuYW1lKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBtb2RlbFxuXG5sZXQgd2l0aF9jdXJyZW50X3BvcyA/ZXEgPyhvbiA9IFJlYWN0LlMuY29uc3QgdHJ1ZSkgZiBkZWZhdWx0ID1cbiAgUmVhY3QuUy5mbWFwID9lcVxuICAgIChmdW4gbSAtPlxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIHsgbmFtZTsgXyB9IC0+IGYgbmFtZSB4LmN1cnNvcl9wb3MpXG4gICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geC5yYW5rIG0uZGlyZWN0b3J5KSlcbiAgICAgICAgbS5jdXJyZW50KVxuICAgIGRlZmF1bHRcbiAgICAoUmVhY3QuUy5vbiBvbiBibGFua19zdGF0ZSBtb2RlbClcblxubGV0IHdpdGhfY3VycmVudF9maWxlIGYgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID0gXCJBdHRlbXB0IHRvIGZldGNoIGZpbGUgd2l0aCBub25lIHNlbGVjdGVkLlwiIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIGFjdGl2ZSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiSW50ZXJuYWwgaW5jb25zaXN0ZW50Y3k6IE5vIGZpbGUgYXQgc2VsZWN0ZWQgcmFuay5cIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgfCBTb21lIHggLT4gZiBzdGF0ZSBhY3RpdmUgeClcblxubGV0IGdldF9maWxlICgpIDogKHN0cmluZyAqIHN0cmluZykgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gX3N0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwiZ2V0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZ2V0IG5hbWVcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHRleHQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgYWN0aXZlLnJhbmsgPSByYW5rJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID0gXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgZ2V0X2ZpbGUuXCIgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICAgICAgICAgICAgICkpKVxuICAgIHwgeyBsb2NhbCA9IFNvbWUgdGV4dDsgbmFtZSB9IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSkpXG5cbmxldCBzZW5kX3JlZnJlc2ggKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICgqIG9ubHkgc2VuZCByZWZyZXNoIGlmIHRoZXJlIGlzIGEgY3VycmVudCBmaWxlICopXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgeyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgaWYgb3V0X29mX3N5bmMgdGhlblxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgIFwiRmlsZSB3YXMgbm90IGluIHN5bmMuIFN3aXRjaGluZyBtYXkgbGVhZCB0byBkYXRhIGxvc3QuXCIpXG4gICAgZWxzZVxuICAgICAgZ2V0X2ZpbGUgKClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBjb250ZW50IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gZiB7IGZpbGVuYW1lOyBjb250ZW50OyBsaW5lIH0pXG4gICAgICAgICAgICAgICAgICAhcmVmcmVzaF9maWxlX2hvb2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQgY3VycmVudCBjYXRhbG9nID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgZGlyZWN0b3J5ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IGlkIH0gLT5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHBvc2l0aW9uIHsgbmFtZSA9IGlkOyBsb2NhbCA9IE5vbmUgfSBhY2MpXG4gICAgICAoaWYgcmVzZXQgdGhlblxuICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgICAgICBlbHNlXG4gICAgICAgICBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgICBjYXRhbG9nXG4gIGluXG4gIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfVxuXG5sZXQgY3JlYXRlX2ZpbGUgfihmaWxlbmFtZSA6IHN0cmluZykgfihjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudFxuICAgID1cbiAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwiY3JlYXRlX2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBsZXQgbWF0Y2hpbmdfZmlsZSA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZmlsZV9tZXRhZGF0YSAtPiBmaWxlbmFtZSA9IGZpbGVfbWV0YWRhdGEuS2ZpbGVzLmlkKVxuICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggbWF0Y2hpbmdfZmlsZSB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWF4X3BvcyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IC0+IG1heCBhY2MgcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSAoc3VjYyBtYXhfcG9zKSBmaWxlbmFtZSBjb250ZW50XG4gICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2cnLCBzdWNjIG1heF9wb3MpKSkpXG4gICAgICAgICAgICAgIHwgbWV0YWRhdGEgOjogXyAtPlxuICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgZmlsZW5hbWUgY29udGVudFxuICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2csIG1ldGFkYXRhLktmaWxlcy5wb3NpdGlvbikpKSlcbiAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChjYXRhbG9nLCBjdXJyZW50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuayA9IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIE5vbmUpKSlcblxubGV0IHJlYyBjaG9vc2VfZmlsZSBjaG9pY2UgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCB0byBzd2l0Y2ggZmlsZSAlcy5cIiBjaG9pY2VcbiAgICBpblxuICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2dcbiAgfCB7IEtmaWxlcy5pZDsgcG9zaXRpb24gfSA6OiB0IC0+XG4gICAgaWYgY2hvaWNlID0gaWQgdGhlblxuICAgICAgUmVzdWx0X3V0aWwub2sgcG9zaXRpb25cbiAgICBlbHNlXG4gICAgICBjaG9vc2VfZmlsZSBjaG9pY2UgdFxuXG5sZXQgc2VsZWN0X2ZpbGUgKGZpbGVuYW1lIDogc3RyaW5nKSAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkucmVzdWx0IEx3dC50XG4gICAgPVxuICBTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcmFuayAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIGxpbmUpXG4gICAgICAgICAgICAgICAgKGNob29zZV9maWxlIGZpbGVuYW1lIGNhdGFsb2cpKSlcblxubGV0IHNldF9jb250ZW50IChjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbnRlbnRcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIG5hbWUgY29udGVudCkpXG5cbmxldCBzZXRfY29tcGlsZSBmaWxlX2lkIChjb21waWxlIDogYm9vbCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIChyYW5rLCB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuIChcbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcmFuayB7IGxvY2FsID0gTm9uZTsgbmFtZSB9IHN0YXRlLmRpcmVjdG9yeVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH0gaW5cbiAgICAgIFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSByYW5rIG5hbWUgY29udGVudClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICBlbHNlXG4gICAgICBTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiByYW5rID0gcmFuaycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRpcmVjdG9yeVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT4gbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgc2V0X2NvbXBpbGUuXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICAgICAgICAgICAgICkpKVxuXG5sZXQgcmVtb3ZlX2ZpbGUgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX2N1cnJlbnRfZmlsZSAoZnVuIHN0YXRlIGFjdGl2ZSB7IGxvY2FsOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPSBNb2RzLkludE1hcC5yZW1vdmUgYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IGluXG4gICAgICBsZXQgY3VycmVudCA9XG4gICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgIChmdW4gKHJhbmssIF8pIC0+XG4gICAgICAgICAgICB7IHJhbms7IGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyA9IGZhbHNlIH0pXG4gICAgICAgICAgKE1vZHMuSW50TWFwLnJvb3QgZGlyZWN0b3J5KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgbGV0IHggPSBzZW5kX3JlZnJlc2ggTm9uZSBpblxuICAgICAgbWF0Y2ggbG9jYWwgd2l0aFxuICAgICAgfCBTb21lIF8gLT4geFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG5hbWUgPj49IGZ1biB5IC0+XG4gICAgICAgICAgICB4ID4+PSBmdW4geCAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgeDsgeSBdKSkpXG5cbmxldCBkb19hX21vdmUgc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2hcbiAgICBNb2RzLkludE1hcC5maWx0ZXJfb25lIChmdW4gXyB7IG5hbWU7IF8gfSAtPiBuYW1lID0gZmlsZV9pZCkgc3RhdGUuZGlyZWN0b3J5XG4gIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogTm8gZmlsZSBcIiBeIGZpbGVfaWQgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgKHJhbmsnLCAoeyBsb2NhbDsgXyB9IGFzIHgpKSAtPlxuICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmsgeCAoTW9kcy5JbnRNYXAucmVtb3ZlIHJhbmsnIHN0YXRlLmRpcmVjdG9yeSlcbiAgICBpblxuICAgIGxldCBjdXJyZW50ID1cbiAgICAgIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICAgICAgfCBTb21lIHsgcmFuayA9IHBvczsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfSB3aGVuIHBvcyA9IHJhbmsnIC0+XG4gICAgICAgIFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9XG4gICAgICB8IHggLT4geFxuICAgIGluXG4gICAgaWYgbG9jYWwgPSBOb25lIHRoZW5cbiAgICAgIFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX21vdmUgcmFuayBmaWxlX2lkXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHN0YXRlJyAtPlxuICAgICAgICAgICAgICBkb19hX21vdmUgc3RhdGUnIGZpbGVfaWQgcmFuaylcbiAgfCBOb25lIC0+IGRvX2FfbW92ZSBzdGF0ZSBmaWxlX2lkIHJhbmtcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgbWF0Y2ggZmlsZW5hbWVzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHN0YXRlIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IGZpbGVfaWQgOjogdGFpbCAtPlxuICAgICAgc2V0X3Bvc2l0aW9uIHN0YXRlIGZpbGVfaWQgaW5kZXhcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIGxldCBjYW5kID0gKFJlYWN0LlMudmFsdWUgbW9kZWwpLmN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHJlc2V0XG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIHsgS2ZpbGVzLnBvc2l0aW9uOyBfIH0gLT4geC5yYW5rID0gcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY2F0YWxvZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgeyBLZmlsZXMucG9zaXRpb247IF8gfSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYW5rID0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgY2FuZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldCBwb3MgY2F0YWxvZyBpblxuICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggTm9uZSkpXG5cbmxldCBsb2FkX2RlZmF1bHQgKCkgOiB1bml0IEx3dC50ID1cbiAgY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOlwibW9kZWwua2FcIiB+Y29udGVudDpcIlwiXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuICgpIC0+IEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgXCJTdGF0ZV9maWxlLmxvYWRfZGVmYXVsdCA6IGNyZWF0aW5nIGRlZmF1bHQgZmlsZSBlcnJvckAgQFs8dj4lYUBdXCJcbiAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0KVxuXG5sZXQgbG9hZF9tb2RlbHMgKCkgOiB1bml0IEx3dC50ID1cbiAgbGV0IG1vZGVscyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcIm1vZGVsXCIgaW5cbiAgbGV0IHJlYyBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBtb2RlbHMgd2l0aFxuICAgIHwgW10gLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBtb2RlbCA6OiBtb2RlbHMgLT5cbiAgICAgICgqIGZldGNoIG1vZGVsICopXG4gICAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuZ2V0IG1vZGVsXG4gICAgICA+Pj0gKGZ1biBjb250ZW50IC0+XG4gICAgICAgICAgICBpZiBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIDw+IDIwMCB0aGVuXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiYmFkIHJlc3BvbnNlIGNvZGUgJWQgZmV0Y2hpbmcgdXJsICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIG1vZGVsKSlcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFVybC51cmxfb2Zfc3RyaW5nIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnVybFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byByZXRyaWV2ZSB1cmwgJXNcIiBtb2RlbCkpXG4gICAgICAgICAgICAgIHwgU29tZSB1IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIExpc3RfdXRpbC5sYXN0XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB1IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBVcmwuSHR0cCBoIHwgVXJsLkh0dHBzIGggLT4gaC5VcmwuaHVfcGF0aFxuICAgICAgICAgICAgICAgICAgICB8IFVybC5GaWxlIGYgLT4gZi5VcmwuZnVfcGF0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBmaWxlY29udGVudCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb250ZW50XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoZmlsZW5hbWUsIGZpbGVjb250ZW50KSlcbiAgICAgICAgICAgICkpXG4gICAgICA+Pj0gKCogYWRkIGNvbnRlbnQgKilcbiAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChmaWxlbmFtZSwgY29udGVudCkgLT5cbiAgICAgICAgICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWUgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZpbGVuYW1lKSkpXG4gICAgICA+Pj0gKCogc2VsZWN0IG1vZGVsIGlmIG5lZWRlZCAqKVxuICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICB+b2s6KGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICAgIGlmIGxvYWRfZmlsZSB0aGVuXG4gICAgICAgICAgICBzZWxlY3RfZmlsZSBmaWxlbmFtZSBOb25lXG4gICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSlcbiAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBsb2FkaW5nIHVybCAlcyBlcnJvckAgQFs8dj4lYUBdXCIgbW9kZWxcbiAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiU3RhdGVfZmlsZS5sb2FkX21vZGVsICVzXCIgbXNnKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSlcbiAgaW5cbiAgbWF0Y2ggbW9kZWxzIHdpdGhcbiAgfCBbXSAtPiBsb2FkX2RlZmF1bHQgKClcbiAgfCBfIDo6IF8gLT4gYWRkX21vZGVscyBtb2RlbHMgdHJ1ZVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXQgPj49IGxvYWRfbW9kZWxzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHNpbXVsYXRpb25fc3RhdGUgPVxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAoKiBzaW11bGF0aW9uIGlzIHVuYXZhaWxhYmxlICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAoKiBzaW11bGF0aW9uIGlzIGJsb2NrZWQgb24gYW4gb3BlcmF0aW9uICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBvZiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9cbigqIHRoZSBzaW11bGF0aW9uIGlzIHJlYWR5ICopXG5cbnR5cGUgdCA9IHsgc2ltdWxhdGlvbl9zdGF0ZTogc2ltdWxhdGlvbl9zdGF0ZSB9XG5cbmxldCB0X3NpbXVsYXRpb25fc3RhdGUgc2ltdWxhdGlvbiA9IHNpbXVsYXRpb24uc2ltdWxhdGlvbl9zdGF0ZVxuXG5sZXQgdF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gPVxuICBtYXRjaCBzaW11bGF0aW9uLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAtPiBOb25lXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPiBOb25lXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT4gU29tZSBzaW11bGF0aW9uX2luZm9cblxudHlwZSBzdGF0ZSA9IHRcbnR5cGUgbW9kZWwgPSBzdGF0ZVxudHlwZSBtb2RlbF9zdGF0ZSA9IFNUT1BQRUQgfCBJTklUQUxJWklORyB8IFJVTk5JTkcgfCBQQVVTRURcblxubGV0IG1vZGVsX3N0YXRlX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgU1RPUFBFRCAtPiBcIlN0b3BwZWRcIlxuICB8IElOSVRBTElaSU5HIC0+IFwiSW5pdGFsaXppbmdcIlxuICB8IFJVTk5JTkcgLT4gXCJSdW5uaW5nXCJcbiAgfCBQQVVTRUQgLT4gXCJQYXVzZWRcIlxuXG5sZXQgZHVtbXlfbW9kZWwgPSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuXG5sZXQgbW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gIHRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsXG5cbmxldCBtb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsIDogbW9kZWxfc3RhdGUgPVxuICBtYXRjaCB0X3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAtPiBTVE9QUEVEXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPiBJTklUQUxJWklOR1xuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgaWZcbiAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgIHRoZW5cbiAgICAgIFJVTk5JTkdcbiAgICBlbHNlXG4gICAgICBQQVVTRURcblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSBkdW1teV9tb2RlbFxuXG5sZXQgdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgKHNpbXVsYXRpb25fc3RhdGUgOiBzaW11bGF0aW9uX3N0YXRlKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzaW11bGF0aW9uX3N0YXRlIH0gaW5cbiAgKClcblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID0gc3RhdGVcblxubGV0IHdpdGhfc2ltdWxhdGlvbiA6XG4gICAgICAnYS5cbiAgICAgIGxhYmVsOnN0cmluZyAtPlxuICAgICAgKEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCkgLT5cbiAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBsZXQgcHJvamVjdF9oYW5kbGVyIG1hbmFnZXIgPSBoYW5kbGVyIG1hbmFnZXIgKFJlYWN0LlMudmFsdWUgc3RhdGUpIGluXG4gIFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbCBwcm9qZWN0X2hhbmRsZXJcblxubGV0IGZhaWxfbHd0IGVycm9yX21zZyA9IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG5cbmxldCB3aXRoX3NpbXVsYXRpb25faW5mbyB+KGxhYmVsIDogc3RyaW5nKVxuICAgID8oc3RvcHBlZCA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIHN0b3BwZWRcIilcbiAgICA/KGluaXRpYWxpemluZyA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIGluaXRhbGl6aW5nXCIpXG4gICAgPyhyZWFkeSA6XG4gICAgICAgIEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+XG4gICAgICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGZ1biBfIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIHJlYWR5XCIpICgpID1cbiAgd2l0aF9zaW11bGF0aW9uIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgd2hlbl9yZWFkeSB+KGxhYmVsIDogc3RyaW5nKVxuICAgID8oaGFuZGxlciA6IHVuaXQgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgIChvcGVyYXRpb24gOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiB1bml0IEFwaS5yZXN1bHQgTHd0LnQpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIHdpdGhfc2ltdWxhdGlvbl9pbmZvIH5sYWJlbFxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCAtPiBvcGVyYXRpb24gbWFuYWdlcilcbiAgICAgICAgKClcbiAgICAgID4+PSBoYW5kbGVyKVxuXG4oKiB0byBzeW5jaCBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzbGVlcF90aW1lID0gMS4wXG5cbmxldCByZWMgc3luYyAoKSA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+XG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBfIC0+XG4gICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwic3luY1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAoKiBnZXQgY3VycmVudCBkaXJlY3RvcnkgKilcbiAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm9cbiAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgc2xlZXBfdGltZSA+Pj0gc3luY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCByZWZyZXNoICgpID1cbiAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwic3luY1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgKCogZ2V0IGN1cnJlbnQgZGlyZWN0b3J5ICopXG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mb1xuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgeyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzeW5jICgpKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9zdGF0ZSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXRcblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX3NpbXVsYXRpb25faW5mbyB+bGFiZWw6XCJjb250aW51ZV9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gY29udGludWUgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHBhdXNlX2NvbmRpdGlvblxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazpzeW5jKVxuICAgICgpXG5cbmxldCBwYXVzZV9zaW11bGF0aW9uICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgd2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOlwicGF1c2Vfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX3NpbXVsYXRpb25faW5mbyB+bGFiZWw6XCJzdG9wX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdG9wIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICgpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgd2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOlwic3RhcnRfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgb25fZXJyb3IgZXJyb3JfbXNncyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAoKiB0dXJuIHRoZSBsaWdodHMgb2ZmICopXG4gICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGZ1biBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9yX21zZ3MpXG4gICAgICBpblxuICAgICAgTHd0LmNhdGNoXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAoKiBzZXQgc3RhdGUgdG8gaW5pdGFsaXplICopXG4gICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyBpblxuICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9zdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNpbXVsYXRpb25fc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25fc3RhdHVzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgc2ltdWxhdGlvbl9zdGF0ZSBpblxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JfbXNnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgICAgICAgICAgIG9uX2Vycm9yIGVycm9yX21zZylcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOnN5bmMpXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiUnVudGltZSBlcnJvciAlc1wiIGVycm9yIGluXG4gICAgICAgICAgICBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIG1zZyBdXG4gICAgICAgICAgfCBTeXNfZXJyb3IgbWVzc2FnZSAtPiBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UgXVxuICAgICAgICAgIHwgXyAtPiBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIFwiSW5pdGlhbGl6YXRpb24gZXJyb3JcIiBdKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBfIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHJ1bm5pbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgICgpXG5cbmxldCBpbnRlcnZlbmVfc2ltdWxhdGlvbiAoY29kZSA6IHN0cmluZykgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfc2ltdWxhdGlvbl9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gY29kZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBzeW5jICgpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlZnJlc2ggciA9XG4gIGxldCByJyA9IFN0YXRlX2ZpbGUuc3luYyB+cmVzZXQ6dHJ1ZSAoKSBpblxuICBsZXQgcicnID0gU3RhdGVfc2ltdWxhdGlvbi5yZWZyZXNoICgpIGluXG4gIHInID4+PSBmdW4gcicgLT5cbiAgcicnID4+PSBmdW4gcicnIC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJzsgcicnIF0pXG5cbmxldCBjcmVhdGVfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfcHJvamVjdC5zZXRfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX3Byb2plY3QgcHJvamVjdF9pZCA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QucmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfbWFuYWdlciAocnVudGltZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgIChTdGF0ZV9ydW50aW1lLmNyZWF0ZV9zcGVjIH5sb2FkOnRydWUgcnVudGltZV9pZCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkID0gXCJzaW11bGF0aW9uX3NlZWRfaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX21vZGFsX2lkID0gXCJwcmVmZXJlbmNlc19tb2RhbFwiXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkID0gXCJzZXR0aW5ncy1jbGllbnQtaWQtaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX2J1dHRvbiA9IEh0bWwuYSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdXG5cbmxldCBvcHRpb25fc2VlZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBvcHRpb25fd2l0aHRyYWNlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRhZ2VudHMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgZGVjcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLXNtXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiLVwiIF1cblxubGV0IGluY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0bi1sZ1wiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIitcIiBdXG5cbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImNsaWVudCBpZFwiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRcblxubGV0IG9wdGlvbl9odHRwX3N5bmNoID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9ydW50aW1lLm1vZGVsKSA9XG4gIGxldCBjdXJyZW50X2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudCBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHNwZWMgOiBTdGF0ZV9ydW50aW1lLnNwZWMpIC0+XG4gICAgICBsZXQgc3BlY19pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBzcGVjIGluXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoSHRtbC5hX3ZhbHVlIHNwZWNfaWRcbiAgICAgICAgICA6OlxuICAgICAgICAgIChpZiBjdXJyZW50X2lkID0gc3BlY19pZCB0aGVuXG4gICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pKVxuICAgICAgICAoSHRtbC50eHQgKFN0YXRlX3J1bnRpbWUuc3BlY19sYWJlbCBzcGVjKSkpXG4gICAgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9ydW50aW1lc1xuXG5sZXQgYmFja2VuZF9vcHRpb25zID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwIChmdW4gbGlzdF90IC0+IGRyb3Bkb3duIGxpc3RfdCkgU3RhdGVfcnVudGltZS5tb2RlbClcblxubGV0IGJhY2tlbmRfc2VsZWN0ID1cbiAgVHl4bWxfanMuUi5IdG1sLnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGJhY2tlbmRfb3B0aW9uc1xuXG5sZXQlaHRtbCBib2RpZXMgPVxuICB7fFxuICAgIDxoND5BcHBsaWNhdGlvbjwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkZvbnQgc2l6ZTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGRlY3JlYXNlX2ZvbnQ7IGluY3JlYXNlX2ZvbnQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkJhY2tlbmQgZm9yIG5ldyBwcm9qZWN0czwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGJhY2tlbmRfc2VsZWN0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5Qcm9qZWN0PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWRcbiAgICB7fFwiPlNlZWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBvcHRpb25fc2VlZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRodHJhY2UgXVxuICAgIHt8U3RvcmUgdHJhY2VcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5IVFRQUyBiYWNrZW5kPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWRcbiAgICB7fFwiPkNsaWVudCBpZDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl9odHRwX3N5bmNoIF1cbiAgICB7fEF1dG8gc3luY2hcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5TdGF0aWMgYW5hbHlzZXM8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkcnVsZXMgXVxuICAgIHt8U2hvdyBkZWFkIHJ1bGVzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZGFnZW50cyBdXG4gICAge3xTaG93IGRlYWQgYWdlbnRzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIF1cbiAgICB7fFNob3cgbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbnx9XG5cbmxldCBzZXRfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNldFwiIF1cblxubGV0IHNhdmVfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uOyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNhdmUgYXMgZGVmYXVsdFwiIF1cblxubGV0IG1vZGFsID1cbiAgbGV0IGhlYWQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgSHRtbC5oNCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtdGl0bGVcIiBdIF0gWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGJvZHkgPSBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2RpZXMgaW5cbiAgbGV0IGZvb3QgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIHNldF9idXR0b247XG4gICAgICAgIHNhdmVfYnV0dG9uO1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50eHQgXCJDbG9zZVwiIF07XG4gICAgICBdXG4gIGluXG4gIEh0bWwuZm9ybVxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCI7IFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgWyBoZWFkOyBib2R5OyBmb290IF1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgcHJlZmVyZW5jZXNfYnV0dG9uO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgICBIdG1sLmFfaWQgcHJlZmVyZW5jZXNfbW9kYWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX3JvbGUgWyBcImRpYWxvZ1wiIF07XG4gICAgICAgICAgSHRtbC5hX3RhYmluZGV4ICgtMSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTsgSHRtbC5hX3JvbGUgWyBcImRvY3VtZW50XCIgXSBdXG4gICAgICAgICAgWyBtb2RhbCBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgc2V0X2FjdGlvbiAoKSA9XG4gIGxldCBzZXR0aW5nc19jbGllbnRfaWQgPSBKcy50b19zdHJpbmcgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSMjLnZhbHVlIGluXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9jbGllbnRfaWQgc2V0dGluZ3NfY2xpZW50X2lkIGluXG5cbiAgbGV0IHN5bmNoX2NoZWNrYm94X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25faHR0cF9zeW5jaCBpblxuICBsZXQgaXNfY2hlY2tlZCA9IEpzLnRvX2Jvb2wgc3luY2hfY2hlY2tib3hfZG9tIyMuY2hlY2tlZCBpblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggaXNfY2hlY2tlZCBpblxuXG4gIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICBsZXQgdmFsdWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXQjIy52YWx1ZSBpblxuICBsZXQgbW9kZWxfc2VlZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHZhbHVlKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lIGluXG4gIGxldCAoKSA9IFN0YXRlX3Byb2plY3Quc2V0X3NlZWQgbW9kZWxfc2VlZCBpblxuXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc3RvcmVfdHJhY2VcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9ydWxlc1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9hZ2VudHNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZClcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X21hbmFnZXJcbiAgICAgIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWUpXG4gIGluXG4gICgpXG5cbmxldCBzZXRfYW5kX3NhdmVfYWN0aW9uICgpID1cbiAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgaW5cbiAgbGV0ICgpID0gU3RhdGVfcHJvamVjdC5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpIGluXG5cbiAgKClcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIG1vZGFsKSMjLm9uc3VibWl0XG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIChfIDogXyBKcy50KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc2F2ZV9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBwcmVmZXJlbmNlc19idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBzcCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoU3RhdGVfc2V0dGluZ3MuZ2V0X2NsaWVudF9pZCAoKSlcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpbnB1dCMjLnZhbHVlIDo9XG4gICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnNlZWRcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1vZGVsX3NlZWQgLT4gc3RyaW5nX29mX2ludCBtb2RlbF9zZWVkKVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX2h0dHBfc3luY2gpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2wgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2V0dGluZ3Muc3luY2gpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWVcbiAgICAgICAgICAgICA6PSBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgIChTdGF0ZV9ydW50aW1lLnNwZWNfaWRcbiAgICAgICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3J1bnRpbWUubW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLiBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGluY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLjIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGRlY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTooLTAuMikgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdG9nZ2xlX2VsZW1lbnQgKHByb2plY3Rpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uIC0+IGJvb2wpXG4gICAgKGNvbnRlbnQgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIHByb2plY3Rpb24gKFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcInNob3dcIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdKSkpO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG9wdGlvbl9sYWJlbCBsYWJlbCA9XG4gIGlmIFN0cmluZy5sZW5ndGggbGFiZWwgPiAxMCB0aGVuXG4gICAgU3RyaW5nLnN1YiBsYWJlbCAwIDcgXiBcIi4uLlwiXG4gIGVsc2VcbiAgICBsYWJlbFxuXG5sZXQgZXhwb3J0X2NvbnRyb2xzIH4oZXhwb3J0X3NlbGVjdF9pZCA6IHN0cmluZykgfihleHBvcnRfZmlsZW5hbWVfaWQgOiBzdHJpbmcpXG4gICAgfihleHBvcnRfYnV0dG9uX2lkIDogc3RyaW5nKSB+KGV4cG9ydF9kYXRhX2xhYmVsIDogc3RyaW5nKSA9XG4gIGxldCBleHBvcnRfZm9ybWF0cyA6IHN0cmluZyBsaXN0ID0gWyBleHBvcnRfZGF0YV9sYWJlbCBdIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9maWxlbmFtZV9pZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2J1dHRvbl9pZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcInB1bGwtcmlnaHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGZvcm1hdCAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBmb3JtYXQge3xcIj58fSAoSHRtbC5jZGF0YSBmb3JtYXQpIHt8PC9vcHRpb24+fH1dKVxuICAgICAgZXhwb3J0X2Zvcm1hdHNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGlkPVwifH1cbiAgICAgIGV4cG9ydF9zZWxlY3RfaWRcbiAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cInBuZ1wiPnBuZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJzdmdcIj5zdmc8L29wdGlvbj58fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfYnV0dG9uIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj58fV1cblxubGV0IGRvY3VtZW50ID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnRcblxubGV0IGxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSBjb3VudGVyID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIHJlZlxuICAgICAgKGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgIGluXG4gICAgICAgY291bnRlciBzaW11bGF0aW9uX2luZm8pXG4gIGluXG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLmwyXG4gICAgICAgKGZ1biB0YWJfYWN0aXZlIG1vZGVsIC0+XG4gICAgICAgICBpZiB0YWJfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgIGxldCBjb3VudCA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICBpZiBjb3VudCA+IDAgdGhlblxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYmFkZ2VcIiBdIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9pbnQgY291bnQpIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgW10pXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGFyZ3VtZW50cyAoa2V5IDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrZXkgPSBrKSBVcmwuQ3VycmVudC5hcmd1bWVudHMpXG5cbmxldCB2ZXJzaW9uID8odGVzdCA6ICdhIG9wdGlvbiA9IE5vbmUpIH4ocHJvZCA6ICdhKSB+KGRldiA6ICdhKSA6ICdhID1cbiAgbGV0IHZlcnNpb24gOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcInZlcnNpb25cIiBpblxuICBtYXRjaCB0ZXN0LCB2ZXJzaW9uIHdpdGhcbiAgfCBTb21lIHRlc3QsIFsgXCJ0ZXN0XCIgXSAtPiB0ZXN0XG4gIHwgXywgWyBcImRldlwiIF0gLT4gZGV2XG4gIHwgXyAtPiBwcm9kXG5cbmxldCBuYXZsaSBsYWJlbCBmb3JjZV9jbGFzcyBkZWNvcmF0aW9ucyA9XG4gIGxldCBkZWZhdWx0X2F0dHJpYnV0ZXMgPVxuICAgIFsgSHRtbC5hX2lkIChcIm5hdlwiIF4gbGFiZWwpOyBIdG1sLmFfcm9sZSBbIFwicHJlc2VudGF0aW9uXCIgXSBdXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBmb3JjZV9jbGFzcyB3aXRoXG4gICAgfCBOb25lIC0+IGRlZmF1bHRfYXR0cmlidXRlc1xuICAgIHwgU29tZSBsIC0+IFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBsIDo6IGRlZmF1bHRfYXR0cmlidXRlc1xuICBpblxuICBsZXQgdGV4dCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdFxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5zaW5nbGV0b24gKEh0bWwuY2RhdGEgbGFiZWwpKVxuICAgICAgZGVjb3JhdGlvbnNcbiAgaW5cbiAgSHRtbC5saSB+YTphdHRyaWJ1dGVzXG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmFcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJ0YWJcIjtcbiAgICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJ0YWJcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtY29udHJvbHNcIiBsYWJlbDtcbiAgICAgICAgICAgIEh0bWwuYV9ocmVmIChcIiNcIiBeIGxhYmVsKTtcbiAgICAgICAgICBdXG4gICAgICAgIHRleHQ7XG4gICAgXVxuXG5sZXQgbmF2dGFicyBuYXZfdGFiX2lkID0gZnVuY3Rpb25cbiAgfCBbXSB8IChfLCBTb21lIF8sIF8pIDo6IF8gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2dGFicyA6IG1pc3NpbmcgdGFic1wiXG4gIHwgKHRpLCBOb25lLCBsKSA6OiB0IC0+XG4gICAgSHRtbC51bFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbmF2X3RhYl9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFibGlzdFwiO1xuICAgICAgICBdXG4gICAgICAobmF2bGkgdGkgKFNvbWUgKFJlYWN0LlMuY29uc3QgWyBcImFjdGl2ZVwiIF0pKSBsXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBhX2NsYXNzLCBsaSkgLT4gbmF2bGkgdCBhX2NsYXNzIGxpKSB0KVxuXG5sZXQgb25lbmF2Y29udGVudCBsYWJlbCBhY3RpdmUgY2xhc3NlcyBjb250ZW50ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGxhYmVsO1xuICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBcImFjdGl2ZVwiIDo6IGNsYXNzZXNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IGNsYXNzZXMpO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFicGFuZWxcIjtcbiAgICAgIF1cbiAgICBjb250ZW50XG5cbmxldCBuYXZjb250ZW50ID9pZCBjbGFzc2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZjb250ZW50IDogbWlzc2luZyBjb250ZW50XCJcbiAgfCAodCwgY2wsIGMpIDo6IGwgLT5cbiAgICBsZXQgaWQgOiBbPiBgSWQgXSBIdG1sLmF0dHJpYiBsaXN0ID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGlkIC0+IFsgSHRtbC5hX2lkIGlkIF1cbiAgICBpblxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgKFtcbiAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgKFsgXCJwYW5lbC1jb250ZW50XCI7IFwidGFiLWNvbnRlbnRcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIEAgY2xhc3Nlcyk7XG4gICAgICAgICBdXG4gICAgICAgIEAgaWQpXG4gICAgICAob25lbmF2Y29udGVudCB0IHRydWUgY2wgY1xuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgY2wsIGMpIC0+IG9uZW5hdmNvbnRlbnQgdCBmYWxzZSBjbCBjKSBsKVxuXG5sZXQgbGV2ZWwgP2RlYnVnID9pbmZvID9ub3RpY2UgP3dhcm5pbmcgP2Vycm9yID9mYXRhbCAoKSA6ICdhIGxpc3QgPVxuICBsZXQgbGV2ZWwgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImxldmVsXCIgaW5cbiAgbGV0IGV4dHJhY3Qga2V5IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBpZiBMaXN0Lm1lbSBrZXkgbGV2ZWwgdGhlblxuICAgICAgICBbIHZhbHVlIF1cbiAgICAgIGVsc2VcbiAgICAgICAgW11cbiAgaW5cbiAgZXh0cmFjdCBcImRlYnVnXCIgZGVidWcgQCBleHRyYWN0IFwiaW5mb1wiIGluZm8gQCBleHRyYWN0IFwibm90aWNlXCIgbm90aWNlXG4gIEAgZXh0cmFjdCBcIndhcm5pbmdcIiB3YXJuaW5nIEAgZXh0cmFjdCBcImVycm9yXCIgZXJyb3IgQCBleHRyYWN0IFwiZmF0YWxcIiBmYXRhbFxuICBAIFtdXG5cbmxldCBmZWF0dXJlcyA/KGRlZmF1bHQgPSBbXSkgKG9wdGlvbnMgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgbGlzdCA9XG4gIGxldCBmZWF0dXJlcyA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwiZmVhdHVyZVwiIGluXG4gIGxldCBtYXRjaGVzIDogJ2EgbGlzdCA9XG4gICAgTGlzdC5tYXAgc25kXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biAoZmVhdHVyZSwgXykgLT4gTGlzdC5tZW0gZmVhdHVyZSBmZWF0dXJlcykgb3B0aW9ucylcbiAgaW5cbiAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IF8gOjogXyAtPiBtYXRjaGVzXG5cbmxldCBpbnB1dF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIHR5cGUgTWVudSA9IHNpZ1xuICB2YWwgY29udGVudCA6XG4gICAgdW5pdCAtPlxuICAgIFs+IGBCdXR0b24gfCBgRGl2IHwgYFVsIHwgYEEgb2YgWz4gYFBDREFUQSB8IGBTcGFuIF0gXSBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgICBsaXN0XG5cbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERpdiA9IHNpZ1xuICB2YWwgaWQgOiBzdHJpbmdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhYiA9IHNpZ1xuICB2YWwgbmF2bGkgOlxuICAgIHVuaXQgLT5cbiAgICBIdG1sX3R5cGVzLmZsb3c1X3dpdGhvdXRfaW50ZXJhY3RpdmUgVHl4bWxfanMuSHRtbDUuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWw1LmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ViVGFiID0gc2lnXG4gIGluY2x1ZGUgVGFiXG5cbiAgdmFsIHBhcmVudF9oaWRlIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXJlbnRfc2hvd24gOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQYW5lbCA9IHNpZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXYgVHl4bWxfanMuSHRtbDUuZWx0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IGlkX2RvbSAoaWQgOiBzdHJpbmcpIDogJ2EgSnMudCA9XG4gIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAoSnMuT3B0LmdldFxuICAgICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgQ29tbW9uLnRvc3NcbiAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwidWlfY29tbW9uLmlkX2RvbSA6IGNvdWxkIG5vdCBmaW5kIGlkICVzXCIgaWQpKVxuICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpXG5cbmxldCBjcmVhdGVfbW9kYWwgfihpZCA6IHN0cmluZykgfih0aXRsZV9sYWJlbCA6IHN0cmluZylcbiAgICB+KGJvZHkgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKVxuICAgIH4oc3VibWl0X2xhYmVsIDogc3RyaW5nKSB+KHN1Ym1pdCA6ICgnc2VsZiBKcy50LCBfIEpzLnQpIERvbS5ldmVudF9saXN0ZW5lcilcbiAgICA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgPVxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgICAgWyBIdG1sLnR4dCBzdWJtaXRfbGFiZWwgXVxuICBpblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1sYWJlbFwiIFwiQ2xvc2VcIjtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGlkZGVuXCIgXCJ0cnVlXCIgXVxuICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIEh0bWwuaDQgWyBIdG1sLmNkYXRhIHRpdGxlX2xhYmVsIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9keTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICAgICAgKFtcbiAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIFwiQ2FuY2VsXCIgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgIEAgWyBidXR0b24gXSk7XG4gICAgICBdXG4gIGluXG4gIGxldCAoKSA9IChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtKSMjLm9uc3VibWl0IDo9IHN1Ym1pdCBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInRhYmluZGV4XCIgXCItMVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZGlhbG9nXCI7XG4gICAgICBdXG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRvY3VtZW50XCI7XG4gICAgICAgICAgXVxuICAgICAgICBbIGZvcm0gXTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcm9qZWN0X2lkX21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1wcm9qZWN0LWlkLW1vZGFsXCJcblxubGV0IHByb2plY3RfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInByb2plY3QgbmV3XCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBsaV9uZXcgPSBIdG1sLmxpIFsgSHRtbC5hIFsgSHRtbC5jZGF0YSBcIk5ldyBwcm9qZWN0XCIgXSBdXG5sZXQgbGlfcHJlZnMgPSBIdG1sLmxpIChNb2RhbF9wcmVmZXJlbmNlcy5jb250ZW50ICgpKVxubGV0IHByb2plY3RfaWRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHByb2plY3RfaWRfaW5wdXRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbDUudWxcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCI7IFwibmF2LWp1c3RpZmllZFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGN1cnJlbnRfcHJvamVjdF9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvamVjdF9pZCA9IG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Bhbl9jbG9zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNwYW5fY2xvc2UpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNsb3NlX3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gRG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uIGV2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1yZWZyZXNoXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLW9rXCIgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBjbGFzc2VzIF0gW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5jZGF0YSAoXCIgXCIgXiBtb2RlbF9wcm9qZWN0X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Nsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIGFfcHJvamVjdCkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwubGkgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3MgXSBbIGFfcHJvamVjdCBdKVxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2NhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgWyBsaV9uZXc7IGxpX3ByZWZzIF0pXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpKTtcbiAgICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWwgfmlkOnByb2plY3RfaWRfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IFByb2plY3RcIlxuICAgICAgICB+Ym9keTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbJWh0bWxcbiAgICAgICAgICAgICAge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIHByb2plY3RfaWRfaW5wdXQgXSB7fDwvZGl2Pnx9XTtcbiAgICAgICAgICBdXG4gICAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgUHJvamVjdFwiXG4gICAgICAgIH5zdWJtaXQ6XG4gICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwcm9qZWN0X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jcmVhdGVfcHJvamVjdCBzZXR0aW5nc19jbGllbnRfaWRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBNb2RhbF9wcmVmZXJlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKVxuICAgICAgXCJzaG93bi5icy5tb2RhbFwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gcHJvamVjdF9pZF9pbnB1dF9kb20jI2ZvY3VzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGxpX25ldykjIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBtb2RlbF9pbnRlcnZlbnRpb24sIHNldF9tb2RlbF9pbnRlcnZlbnRpb24gPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIHBhcmFtIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICB7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2Q7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3NlZWQgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnNlZWQ7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2U7XG4gIH1cblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgcGF1c2VfY29uZGl0aW9uID1cbiAgICAgICAgbGV0IG9wZW4gU3RhdGVfcHJvamVjdCBpblxuICAgICAgICAoUmVhY3QuUy52YWx1ZSBtb2RlbCkubW9kZWxfcGFyYW1ldGVycy5wYXVzZV9jb25kaXRpb25cbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uY29udGludWVfc2ltdWxhdGlvbiBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGF1c2Vfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5wYXVzZV9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0b3Bfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc3RvcFwiKSBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnN0b3Bfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgICAgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLnN0YXJ0X3NpbXVsYXRpb24gc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uID1cbiAgICAgICAgUmVhY3QuUy52YWx1ZSBTdGF0ZV9wZXJ0dXJiYXRpb24ubW9kZWxfaW50ZXJ2ZW50aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmludGVydmVuZV9zaW11bGF0aW9uIG1vZGVsX3BlcnR1cmJhdGlvbilcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biB0ZXh0IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgU3RhdGVfZXJyb3IuYWRkX2Vycm9yIF9fTE9DX19cbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5JbmZvO1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBmb2N1c19yYW5nZSAocmFuZ2UgOiBMb2MudCkgOiB1bml0ID1cbiAgbGV0IGZpbGVfaWQgPSByYW5nZS5Mb2MuZmlsZSBpblxuICBsZXQgbGluZSA9IHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uLkxvYy5saW5lIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCAoU29tZSBsaW5lKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaW11bGF0aW9uX3RyYWNlICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi53aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkYXRhX3N0cmluZyAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyBkYXRhX3N0cmluZyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJ0cmFjZS5qc29uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHNpbXVsYXRpb25fb3V0cHV0cyAoKSA9XG4gIFN0YXRlX3NpbXVsYXRpb24ud2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyBtYW5hZ2VyI3NpbXVsYXRpb25fb3V0cHV0c196aXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkYXRhX2JpZ3N0cmluZyAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhX2JpZ3N0cmluZyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL3ppcFwiXG4gICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJzaW11bGF0aW9uX291dHB1dHMuemlwXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5vcGVuIExpc3RfdXRpbC5JbmZpeFxuXG5sZXQgdmlzaWJsZV9vbl9zdGF0ZXMgPyhhX2NsYXNzID0gW10pXG4gICAgKHN0YXRlIDogU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zdGF0ZSBsaXN0KSA6IHN0cmluZyBsaXN0IFJlYWN0LnNpZ25hbCA9XG4gIGxldCBoaWRkZW5fY2xhc3MgPSBbIFwiaGlkZGVuXCIgXSBpblxuICBsZXQgdmlzaWJsZV9jbGFzcyA9IFsgXCJ2aXNpYmxlXCIgXSBpblxuICBSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICBsZXQgY3VycmVudF9zdGF0ZSA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCBpblxuICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAoaWYgTGlzdC5tZW0gY3VycmVudF9zdGF0ZSBzdGF0ZSB0aGVuXG4gICAgICAgICAgIGFfY2xhc3MgQCB2aXNpYmxlX2NsYXNzXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFfY2xhc3MgQCBoaWRkZW5fY2xhc3MpKVxuXG5tb2R1bGUgRm9ybVBlcnR1cmJhdGlvbiA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wZXJ0dXJiYXRpb25cIlxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiU2ltdWxhdGlvbiBQZXJ0dXJiYXRpb25cIjtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0gXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiaW50ZXJ2ZW50aW9uXCIgXVxuXG4gIGxldCBmb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiZm9ybS1ob3Jpem9udGFsXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xMFwiOyBcImNvbC14cy05XCIgXSBdIFsgaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXSBdIFsgYnV0dG9uIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cblxuICBsZXQgY29udGVudCAoKSA9IFsgZm9ybSBdXG5cbiAgbGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICAgIGxldCBmb3JtX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIGZvcm0gaW5cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0IGhhbmRsZXIgXyA9XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlIGluXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9wZXJ0dXJiYXRpb24uc2V0X21vZGVsX2ludGVydmVudGlvbiBtb2RlbF9wZXJ0dXJiYXRpb24gaW5cbiAgICAgIEpzLl90cnVlXG4gICAgaW5cblxuICAgIGxldCAoKSA9XG4gICAgICBmb3JtX2RvbSMjLm9uc3VibWl0IDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5pbnRlcnZlbmVfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgIGluXG4gICAgbGV0ICgpID0gaW5wdXRfZG9tIyMub25jaGFuZ2UgOj0gRG9tLmhhbmRsZXIgaGFuZGxlciBpblxuICAgICgpXG5lbmRcblxubGV0IHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIElucHV0UGF1c2VDb25kaXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGF1c2VfY29uZGl0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJbVF0gPiAxMDBcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV92YWx1ZVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgbS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5wYXVzZV9jb25kaXRpb24pXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgaW5wdXQgXVxuICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0XG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgdicgPVxuICAgICAgICAgICAgaWYgdmFsdWUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgXCJbZmFsc2VdXCJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3BhdXNlX2NvbmRpdGlvbiB2JylcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIElucHV0UGxvdFBlcmlvZCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wbG90X3BlcmlvZFwiXG5cbiAgbGV0IGZvcm1hdF9mbG9hdF9zdHJpbmcgdmFsdWUgPVxuICAgIGxldCBuID0gc3RyaW5nX29mX2Zsb2F0IHZhbHVlIGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggbiBpblxuICAgIGlmIGxlbmd0aCA+IDAgJiYgU3RyaW5nLmdldCBuIChsZW5ndGggLSAxKSA9ICcuJyB0aGVuXG4gICAgICBuIF4gXCIwXCJcbiAgICBlbHNlXG4gICAgICBuXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJ0aW1lIHVuaXRzXCI7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV92YWx1ZVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgZm9ybWF0X2Zsb2F0X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2QpXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgaW5wdXQgXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBpbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc2lnbmFsX2NoYW5nZSBpbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgIGxldCByZXNldF92YWx1ZSAoKSA9XG4gICAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgKHN0cmluZ19vZl9mbG9hdCBvbGRfdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBuZXdfdmFsdWUgPSBmbG9hdF9vZl9zdHJpbmcgdmFsdWUgaW5cbiAgICAgICAgICAgIGlmIG5ld192YWx1ZSA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgcmVzZXRfdmFsdWUgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5zZXRfcGxvdF9wZXJpb2QgbmV3X3ZhbHVlXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT4gcmVzZXRfdmFsdWUgKCkpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBEaXZFcnJvck1lc3NhZ2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwiY29uZmlndXJhdGlvbl9lcnJvcl9kaXZcIlxuICBsZXQgbWVzc2FnZV9uYXZfaW5jX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX25hdl9pbmNfaWRcIlxuICBsZXQgbWVzc2FnZV9uYXZfZGVjX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX25hdl9kZWNfaWRcIlxuICBsZXQgbWVzc2FnZV9maWxlX2xhYmVsX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX2ZpbGVfbGFiZWxcIlxuICBsZXQgZXJyb3JfaW5kZXgsIHNldF9lcnJvcl9pbmRleCA9IFJlYWN0LlMuY3JlYXRlIE5vbmVcblxuICBsZXQgZG9udF9nY19tZSA9XG4gICAgUmVhY3QuUy5sMVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBlcnJvcl9pbmRleCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldF9lcnJvcl9pbmRleCAoU29tZSAwKVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpKSlcbiAgICAgIFN0YXRlX2Vycm9yLmVycm9yc1xuXG4gICgqIGlmIHRoZXJlIGFyZSBsZXNzIG9yIG5vIGVycm9ycyB0aGUgaW5kZXggbmVlZHMgdG8gYmUgdXBkYXRlZCAqKVxuICBsZXQgc2FuaXRpemVfaW5kZXggKGluZGV4IDogaW50IG9wdGlvbikgZXJyb3JzIDogaW50IG9wdGlvbiA9XG4gICAgbGV0ICgpID0gaWdub3JlIGRvbnRfZ2NfbWUgaW5cbiAgICBtYXRjaCBpbmRleCwgZXJyb3JzIHdpdGhcbiAgICB8IE5vbmUsIFtdIC0+IE5vbmVcbiAgICB8IE5vbmUsIF8gOjogXyAtPiBTb21lIDBcbiAgICB8IFNvbWUgXywgW10gLT4gTm9uZVxuICAgIHwgU29tZSBpbmRleCwgZXJyb3IgLT5cbiAgICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBlcnJvciBpblxuICAgICAgaWYgaW5kZXggPiBsZW5ndGggdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHNldF9lcnJvcl9pbmRleCAoU29tZSAwKSBpblxuICAgICAgICBTb21lIDBcbiAgICAgICkgZWxzZSBpZiAwID4gaW5kZXggdGhlbiAoXG4gICAgICAgIGxldCBpbmRleCA9IFNvbWUgKExpc3QubGVuZ3RoIGVycm9yIC0gMSkgaW5cbiAgICAgICAgbGV0ICgpID0gc2V0X2Vycm9yX2luZGV4IGluZGV4IGluXG4gICAgICAgIGluZGV4XG4gICAgICApIGVsc2VcbiAgICAgICAgU29tZSBpbmRleFxuXG4gIGxldCBnZXRfbWVzc2FnZSAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgKGZ1biBuIC0+IFNvbWUgKExpc3QubnRoIGVycm9ycyBuKSlcbiAgICAgIChzYW5pdGl6ZV9pbmRleCBpbmRleCBlcnJvcnMpXG5cbiAgbGV0IG1lc2FnZV9uYXZfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBpbmRleCwgZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUsIFtdIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIF8sIFtdIC0+IFwiXCJcbiAgICAgICAgfCBOb25lLCBfIDo6IF8gLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaW5kZXgsIChfIDo6IF8gYXMgZXJyb3JzKSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJWQvJWRcIiAoaW5kZXggKyAxKSAoTGlzdC5sZW5ndGggZXJyb3JzKSlcbiAgICAgIGVycm9yX2luZGV4IFN0YXRlX2Vycm9yLmVycm9yc1xuXG4gIGxldCBhX2NsYXNzID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9lcnJvci5lcnJvcnMgKGZ1biBlcnJvciAtPlxuICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgKG1hdGNoIGVycm9yIHdpdGhcbiAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gWyBcImhpZGVcIiBdXG4gICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiBbIFwiZXJyb3Itc3BhblwiOyBcImNsaWNrYWJsZVwiIF0pKSlcblxuICBsZXQgbWVzc2FnZV9uYXZfZGVjID1cbiAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfaWQgbWVzc2FnZV9uYXZfZGVjX2lkOyBhX2NsYXNzIF0gWyBIdG1sLnR4dCBcIiDCqyBcIiBdXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2luYyA9XG4gICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2lkIG1lc3NhZ2VfbmF2X2luY19pZDsgYV9jbGFzcyBdIFsgSHRtbC50eHQgXCIgwrsgXCIgXVxuXG4gIGxldCBtZXNzYWdlX25hdiA9XG4gICAgWyBtZXNzYWdlX25hdl9kZWM7IFR5eG1sX2pzLlIuSHRtbC50eHQgbWVzYWdlX25hdl90ZXh0OyBtZXNzYWdlX25hdl9pbmMgXVxuXG4gIGxldCBmaWxlX2xhYmVsX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgIChnZXRfbWVzc2FnZSBpbmRleCBlcnJvcilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gRm9ybWF0LnNwcmludGYgXCJbJXNdXCIgcmFuZ2UuTG9jLmZpbGUpXG4gICAgICBlcnJvcl9pbmRleCBTdGF0ZV9lcnJvci5lcnJvcnNcblxuICBsZXQgZmlsZV9sYWJlbCA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBtZXNzYWdlX2ZpbGVfbGFiZWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGZpbGVfbGFiZWxfdGV4dCBdXG5cbiAgbGV0IGVycm9yX21lc3NhZ2VfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBnZXRfbWVzc2FnZSBpbmRleCBlcnJvciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBtZXNzYWdlIC0+IEZvcm1hdC5zcHJpbnRmIFwiICVzIFwiIG1lc3NhZ2UuUmVzdWx0X3V0aWwudGV4dClcbiAgICAgIGVycm9yX2luZGV4IFN0YXRlX2Vycm9yLmVycm9yc1xuXG4gIGxldCBlcnJvcl9tZXNzYWdlID1cbiAgICBIdG1sLnNwYW5cbiAgICAgIH5hOlsgSHRtbC5hX2lkIGlkOyBIdG1sLmFfY2xhc3MgWyBcImVycm9yLXNwYW5cIiBdIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBlcnJvcl9tZXNzYWdlX3RleHQgXVxuXG4gIGxldCBhbGVydF9tZXNzYWdlcyA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgW10gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIjsgXCJhbGVydC1kYW5nZXJcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICAobWVzc2FnZV9uYXYgQCBbIGZpbGVfbGFiZWw7IGVycm9yX21lc3NhZ2UgXSlcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgWyBhbGVydF9tZXNzYWdlcyBdXG5cbiAgbGV0IGZpbGVfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGZpbGVfbGFiZWwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwiZmlsZV9jbGlja19oYW5kbGVyXCIpIGluXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA6IEFwaV90eXBlc190Lm1lc3NhZ2Ugb3B0aW9uID1cbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2VcbiAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByYW5nZSAtPiBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLmZvY3VzX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gZGVsdGEgPVxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJpbmRleF9jbGlja19oYW5kbGVyXCIpIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICAgc2FuaXRpemVfaW5kZXhcbiAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGluZGV4ID0gT3B0aW9uX3V0aWwubWFwIGRlbHRhIGluZGV4IGluXG4gICAgICAgICAgICBsZXQgaW5kZXggOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICAgc2FuaXRpemVfaW5kZXggaW5kZXggKFJlYWN0LlMudmFsdWUgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHNldF9lcnJvcl9pbmRleCBpbmRleCBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBpbmNfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIG1lc3NhZ2VfbmF2X2RlYyBpblxuICAgIGxldCAoKSA9IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIChmdW4gaW5kZXggLT4gaW5kZXggKyAxKSBpblxuICAgICgpXG5cbiAgbGV0IGRlY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfaW5jIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCAtIDEpIGluXG4gICAgKClcblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgKCkgPSBmaWxlX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICBsZXQgKCkgPSBpbmNfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGRlY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uU3RhcnQgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3Nfc3RhcnRfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgICBTdGF0ZV9maWxlLmN1cnJlbnQgPSBTb21lIHsgU3RhdGVfZmlsZS5vdXRfb2Zfc3luYzsgXyB9O1xuICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmNcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInN0YXJ0XCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBzdGFydF9idXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RhcnRfYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnN0YXJ0X3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25DbGVhciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19jbGVhcl9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNsZWFyXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zdG9wX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uUGF1c2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGF1c2VfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJwYXVzZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5wYXVzZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblRyYWNlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2dldF90cmFjZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJkaXNhYmxlZFwiIF0pXG4gICAgICAgICAgICAgICAgIEAgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSlcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJnZXQgdHJhY2VcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc2ltdWxhdGlvbl90cmFjZSAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25PdXRwdXRzIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX291dHB1dHNfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJBbGwgb3V0cHV0c1wiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zaW11bGF0aW9uX291dHB1dHMgKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uQ29udGludWUgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfY29udGludWVfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJjb250aW51ZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5jb250aW51ZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIERpdlN0YXR1c0luZGljYXRvciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nX3N0YXR1c19pbmRpY2F0b3JcIlxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgZGVidWcgPVxuICAgICAgSHRtbC5kaXZcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zdGF0ZV90b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3QgbGFiZWwpKTtcbiAgICAgICAgXVxuICAgIGluXG4gICAgWyBIdG1sLmRpdiB+YTpbIEh0bWwuYV9pZCBpZCBdIChVaV9jb21tb24ubGV2ZWwgfmRlYnVnICgpKSBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubW9kdWxlIFJ1bm5pbmdQYW5lbExheW91dCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nc19ydW5ldGltZV9sYXlvdXRcIlxuXG4gIGxldCBwcm9ncmVzc19iYXIgKHBlcmNlbnRfc2lnbmFsIDogaW50IFR5eG1sX2pzLlIuSHRtbC53cmFwKVxuICAgICAgKHZhbHVlX3NpZ25hbCA6IHN0cmluZyBSZWFjdC5zaWduYWwpID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwicHJvZ3Jlc3NiYXJcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbm93XCIgcGVyY2VudF9zaWduYWw7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtaW5cIiAwO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbWF4XCIgMTAwO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBzIC0+IEZvcm1hdC5zcHJpbnRmIFwid2lkdGg6ICVkJSU7XCIgcylcbiAgICAgICAgICAgICAgIHBlcmNlbnRfc2lnbmFsKTtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcInByb2dyZXNzLWJhclwiIF07XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgdmFsdWVfc2lnbmFsIChmdW4gdmFsdWUgLT4gUmVhY3QuUy5jb25zdCB2YWx1ZSkpO1xuICAgICAgXVxuXG4gIGxldCB0aW1lX3Byb2dyZXNzX2JhciAoKSA9XG4gICAgcHJvZ3Jlc3NfYmFyXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHRpbWVfcGVyY2VudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAxMDAgdGltZV9wZXJjZW50IGluXG4gICAgICAgICAgIHRpbWVfcGVyY2VudClcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB0aW1lIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHRpbWUgOiBmbG9hdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLjAgdGltZSBpblxuICAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXQgdGltZSlcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IGV2ZW50X3Byb2dyZXNzX2JhciAoKSA9XG4gICAgcHJvZ3Jlc3NfYmFyXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnRfcGVyY2VudGFnZSA6IGludCA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIDEwMCBldmVudF9wZXJjZW50YWdlXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGV2ZW50X3BlcmNlbnRhZ2UpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50KVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAwIGV2ZW50IGluXG4gICAgICAgICAgIHN0cmluZ19vZl9pbnQgZXZlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50cyBzdGF0ZSA9XG4gICAgbGV0IHRyYWNrZWRfZXZlbnRzIDogaW50IG9wdGlvbiA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cylcbiAgICAgICAgc3RhdGVcbiAgICBpblxuICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB0cmFja2VkX2V2ZW50cyAtPlxuICAgICAgaWYgdHJhY2tlZF9ldmVudHMgPiAwIHRoZW5cbiAgICAgICAgU29tZSB0cmFja2VkX2V2ZW50c1xuICAgICAgZWxzZVxuICAgICAgICBOb25lXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzX2NvdW50ICgpID1cbiAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0cmFja2VkX2V2ZW50cyAtPiBzdHJpbmdfb2ZfaW50IHRyYWNrZWRfZXZlbnRzXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIiBcIilcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpID1cbiAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBfIC0+IFwidHJhY2tlZCBldmVudHNcIlxuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCB0ID1cbiAgICBsZXQgYWxsID1cbiAgICAgIGZsb2F0X29mX2ludFxuICAgICAgICAodC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24pXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBIdG1sLnBcbiAgICAgIFtcbiAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslLjJmJSUgb2YgZXZlbnQgbG9vcHMgd2VyZSBwcm9kdWN0aXZlLiV0QF1cIlxuICAgICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGlmIGFsbCA+IDAuIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAgTnVsbCBldmVudCBjYXVzZTpcIikpO1xuICAgICAgXVxuICAgIDo6ICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeSA+IDAgdGhlblxuICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgXCJWYWxpZCBlbWJlZGRpbmcgYnV0IG5vIGxvbmdlciB1bmFyeSB3aGVuIHJlcXVpcmVkOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50IHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkNsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAkJCBbXSkpKSlcblxuICBsZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG4gIGxldCBjb250ZW50ICgpIDogSHRtbF90eXBlcy5kaXZfY29udGVudCBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgc3RhdGVfbG9nLCBzZXRfc3RhdGVfbG9nID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNyZWF0ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb250X2djX21lIDo9XG4gICAgICAgIFtcbiAgICAgICAgICBMd3RfcmVhY3QuUy5tYXBfc1xuICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ud2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIHN0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBlZmYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfZXZlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgZWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nIFtdIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsO1xuICAgICAgICBdXG4gICAgaW5cblxuICAgIFtcbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICA8ZGl2IGNsYXNzPVwicm93XCIgaWQ9XCJ8fVxuICAgICAgICAgIGlkXG4gICAgICAgICAge3xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIHx9XG4gICAgICAgICAgWyBldmVudF9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPmV2ZW50czwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRpbWVfcHJvZ3Jlc3NfYmFyICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj50aW1lPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ2aXNpYmxlLW1kLWJsb2NrIHZpc2libGUtbGctYmxvY2tcIj5cbnx9XG4gICAgICAgICAgWyBUeXhtbF9qcy5SLkh0bWwuZGl2IHN0YXRlX2xvZyBdXG4gICAgICAgICAge3xcbjwvZGl2PlxuPC9kaXY+XG4gICB8fV07XG4gICAgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbmxldCBzdG9wcGVkX2JvZHkgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWw1LmVsdCA9XG4gIGxldCBzdG9wcGVkX3JvdyA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgICAgfmFfY2xhc3M6WyBcImZvcm0tZ3JvdXBcIjsgXCJmb3JtLWdyb3VwLXNtXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLW1kLTIgY29sLXhzLTIgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICAgSW5wdXRQbG90UGVyaW9kLmlkXG4gICAgICAgICAge3xcIj5QbG90IHBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXhzLTNcIj58fVxuICAgICAgICAgIChJbnB1dFBsb3RQZXJpb2QuY29udGVudCAoKSlcbiAgICAgICAgICB7fDwvZGl2Pnx9XVxuICBpblxuICBsZXQgcGF1c2VkX3JvdyA9IEZvcm1QZXJ0dXJiYXRpb24uY29udGVudCAoKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQ7IFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgXVxuICAgIChbJWh0bWxcbiAgICAgICB7fFxuICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLXNtLTIgaGlkZGVuLXhzIGNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ8fVxuICAgICAgICAgSW5wdXRQYXVzZUNvbmRpdGlvbi5pZFxuICAgICAgICAge3xcIj5QYXVzZSBpZjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXNtLTMgY29sLXhzLTVcIj58fVxuICAgICAgICAgKElucHV0UGF1c2VDb25kaXRpb24uY29udGVudCAoKSlcbiAgICAgICAgIHt8PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgY29sLW1kLTggY29sLXhzLTdcIj58fVxuICAgICAgICAgKERpdkVycm9yTWVzc2FnZS5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj58fVxuICAgICAgICAgWyBzdG9wcGVkX3JvdyBdIHt8PC9mb3JtPnx9XVxuICAgIDo6IHBhdXNlZF9yb3cpXG5cbmxldCBpbml0aWFsaXppbmdfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5JTklUQUxJWklORyBdKTtcbiAgICAgIF1cbiAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF1cblxubGV0IHJ1bm5pbmdfYm9keSAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgIF1cbiAgICAoUnVubmluZ1BhbmVsTGF5b3V0LmNvbnRlbnQgKCkpXG5cbmxldCBmb290ZXIgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgfH1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblN0YXJ0LmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25Db250aW51ZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uT3V0cHV0cy5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uVHJhY2UuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy00XCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25QYXVzZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC14cy0yXCI7IFwiY29sLXNtLTFcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRDsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25DbGVhci5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIjsgXCJjb2wteHMtM1wiIF0gXVxuICAgICAgICAgIChEaXZTdGF0dXNJbmRpY2F0b3IuY29udGVudCAoKSBAIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXSk7XG4gICAgICBdXG4gICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3Byb2plY3QubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSkpO1xuICAgICAgXVxuICAgIFsgc3RvcHBlZF9ib2R5ICgpOyBpbml0aWFsaXppbmdfYm9keSAoKTsgcnVubmluZ19ib2R5ICgpOyBmb290ZXIgKCkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEZvcm1QZXJ0dXJiYXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGF1c2VDb25kaXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGxvdFBlcmlvZC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2RXJyb3JNZXNzYWdlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25TdGFydC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uUGF1c2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbkNvbnRpbnVlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25UcmFjZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uT3V0cHV0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ2xlYXIub25sb2FkICgpIGluXG4gIGxldCAoKSA9IERpdlN0YXR1c0luZGljYXRvci5vbmxvYWQgKCkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG48aDI+VGhlIEthcHBhIExhbmd1YWdlPC9oMj5cbjxwPkNvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUY8cD5cbjxwPkthcHBhIExhbmd1YWdlIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbFwiPkdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDM8L2E+LlxuIFNvdXJjZSBjb2RlIGlzIHB1Ymxpc2hlZCBvbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiPmh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW08L2E+LjwvcD5cblxuPHA+VGhpcyB1c2VyIGludGVyZmFjZSB3YXMgZGV2ZWxvcGVkIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9mb250YW5hLmhtcy5oYXJ2YXJkLmVkdVwiPkZvbnRhbmEgTGFiPC9hPiB1bmRlciBEQVJQQSBncmFudCBXOTExTkYtMTQtMS0wMzY3LiBWaXN1YWxpemF0aW9ucyB3ZXJlIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb2Rpbmcuc29lLnVjc2MuZWR1L25ld3MucGhwXCI+Q3JlYXRpdmUgQ29kaW5nIExhYjwvYT4gb2YgQW5ndXMgRm9yYmVzPC9wPlxuXG48cD5SZWZlcmVuY2UgbWFudWFsIGlzIG9ubGluZSBhdCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmdcIj5odHRwczovL3d3dy5rYXBwYWxhbmd1YWdlLm9yZzwvYT4uPC9wPlxuXG48dWw+XG48bGk+V3JpdHRlbiBpbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jYW1sLm9yZ1wiPlxuICA8IS0tPGltZyBzcmM9XCJodHRwOi8vb2NhbWwub3JnL2xvZ28vQ29sb3VyL1NWRy9jb2xvdXItbG9nby5zdmdcIlxuICAgICAgIGFsdD1cIi0tPk9DYW1sPCEtLVwiXG4gICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7IHdpZHRoOiAxNTBweDtcIiAvPiAtLT5cbjwvYT4uIENvbXBpbGVkIGJ5IDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vb2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXCI+anNfb2Zfb2NhbWw8L2E+LjwvbGk+XG48bGk+VGV4dCBlZGl0b3IgdXNlZCBpcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2NvZGVtaXJyb3IubmV0XCI+Q29kZU1pcnJvcjwvYT4uIEl0IGNvbWVzIHdpdGggYSBsb3Qgb2YgZmVhdHVyZXMuIENoZWNrIG91dCBpdHMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldC9kb2MvbWFudWFsLmh0bWwjY29tbWFuZHNcIj5tYW51YWw8L2E+LjwvbGk+XG48bGk+VmlzdWFsaXphdGlvbiByZWxpZXMgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZDNqcy5vcmdcIj5kMzwvYT4uPC9saT5cbjxsaT5MYXlvdXQgdXNlcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2dldGJvb3RzdHJhcC5jb21cIj5ib290c3RyYXA8L2E+IGFuZCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9qcXVlcnl1aS5jb21cIj5qUXVlcnk8L2E+LjwvbGk+XG48L3VsPlxuXG48aDM+Tm9taW5hbCBjb250cmlidXRpb248L2gzPlxuPGRsIGNsYXNzPVwiZGwtaG9yaXpvbnRhbFwiPjxkdD5QaWVycmUgQm91dGlsbGllcjwvZHQ+PGRkPkdlbmVyYWwgZGVzaWduIGFuZCBtYWludGVuYW5jZSwgcHJvdG9jb2xzPC9kZD48ZHQ+WGluZyBMaTwvZHQ+PGRkPk91dHB1dHMgdmlzdWFsaXphdGlvbnMsIEdlbmVyYWwgbGF5b3V0PC9kZD48ZHQ+TXV0YWFtYmEgTWFhc2hhPC9kdD48ZGQ+VHJhbnNwYXJlbnQgbXVsdGkgYmFja2VuZCBhcmNoaXRlY3R1cmUsIHByb3RvY29scywgT3V0cHV0IHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PC9kbD5cbnx9XVxuXG5sZXQgb25sb2FkICgpID0gKClcbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBKcyB1dGlsICopXG4oKiByZWZlcmVuY2VzXG4gICBodHRwOi8vdG9zcy5zb3VyY2Vmb3JnZS5uZXQvb2NhbWwuaHRtbFxuICAgaHR0cDovL3BlcHBlcm1pbnQuanAvdGVtcC9hby9hby5tbFxuKilcbmxldCBwcm90b3R5cGUgPSBKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3IucHJvdG90eXBlXCJcblxubGV0IGNyZWF0ZV9oYW5kbGVyIGxhYmVsID1cbiAgbGV0IGhlYWQgOiBjaGFyID0gQ2hhci51cHBlcmNhc2VfYXNjaWkgKFN0cmluZy5nZXQgbGFiZWwgMCkgaW5cbiAgbGV0IHRhaWwgOiBzdHJpbmcgPSBTdHJpbmcuc3ViIGxhYmVsIDEgKFN0cmluZy5sZW5ndGggbGFiZWwgLSAxKSBpblxuICBsZXQgb25fbGFiZWwgPSBcIm9uXCIgXiBDaGFyLmVzY2FwZWQgaGVhZCBeIHRhaWwgaW5cbiAgbGV0IHdyYXBwZXIgaGFuZGxlciA9IChKcy5VbnNhZmUucHVyZV9qc19leHByIFwidGhpc1wiKSMjb24gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgKCkgPSBKcy5VbnNhZmUuc2V0IHByb3RvdHlwZSAoSnMuc3RyaW5nIG9uX2xhYmVsKSB3cmFwcGVyIGluXG4gICgpXG5cbigqIGFkZCBvbiBoYW5kbGVycyB0byB0aGUgcHJvdG90eXBlcyBzbyB0aGV5IGNhbiBiZSBzdHJvbmdseSB0eXBlZCAqKVxubGV0ICgpID1cbiAgTGlzdC5pdGVyIGNyZWF0ZV9oYW5kbGVyXG4gICAgW1xuICAgICAgXCJiZWZvcmVDaGFuZ2VcIjtcbiAgICAgIFwiYmVmb3JlQ3Vyc29yRW50ZXJcIjtcbiAgICAgIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCI7XG4gICAgICBcImJsdXJcIjtcbiAgICAgIFwiY2hhbmdlc1wiO1xuICAgICAgXCJjbGVhclwiO1xuICAgICAgXCJjb250ZXh0bWVudVwiO1xuICAgICAgXCJjb3B5XCI7XG4gICAgICBcImN1cnNvckFjdGl2aXR5XCI7XG4gICAgICBcImN1dFwiO1xuICAgICAgXCJkYmxjbGlja1wiO1xuICAgICAgXCJkZWxldGVcIjtcbiAgICAgIFwiZHJhZ2VudGVyXCI7XG4gICAgICBcImRyYWdsZWF2ZVwiO1xuICAgICAgXCJkcmFnb3ZlclwiO1xuICAgICAgXCJkcmFnc3RhcnRcIjtcbiAgICAgIFwiZHJvcFwiO1xuICAgICAgXCJlbGVjdHJpY0lucHV0XCI7XG4gICAgICBcImZvY3VzXCI7XG4gICAgICBcImd1dHRlckNsaWNrXCI7XG4gICAgICBcImd1dHRlckNvbnRleHRNZW51XCI7XG4gICAgICBcImhpZGVcIjtcbiAgICAgIFwiaW5wdXRSZWFkXCI7XG4gICAgICBcImtleUhhbmRsZWRcIjtcbiAgICAgIFwia2V5cHJlc3NcIjtcbiAgICAgIFwia2V5dXBcIjtcbiAgICAgIFwibW91c2Vkb3duXCI7XG4gICAgICBcInBhc3RlXCI7XG4gICAgICBcInJlZHJhd1wiO1xuICAgICAgXCJyZW5kZXJMaW5lXCI7XG4gICAgICBcInNjcm9sbFwiO1xuICAgICAgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiO1xuICAgICAgXCJzd2FwRG9jXCI7XG4gICAgICBcInRvdWNoc3RhcnRcIjtcbiAgICAgIFwidW5oaWRlXCI7XG4gICAgICBcInVwZGF0ZVwiO1xuICAgICAgXCJ2aWV3cG9ydENoYW5nZVwiO1xuICAgICAgXCJjaGFuZ2VcIjtcbiAgICAgIFwia2V5ZG93blwiO1xuICAgIF1cblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY2ggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgbGluZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaW1lbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlZnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgcmlnaHQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgdG9wIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIGJvdHRvbSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHBvc2l0aW9uIDogKGludCAtPiBpbnQgLT4gcG9zaXRpb24gSnMudCkgSnMuY29uc3RyID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLl9Qb3NcblxudHlwZSBzZXZlcml0eSA9IEVycm9yIHwgV2FybmluZ1xuXG5jbGFzcyB0eXBlIGxpbnQgPSBvYmplY3RcbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBzZXZlcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50IDogbGludCBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnQgfihtZXNzYWdlIDogc3RyaW5nKSB+KHNldmVyaXR5IDogc2V2ZXJpdHkpXG4gICAgfihmcm9tIDogcG9zaXRpb24gSnMudCkgfih0b18gOiBwb3NpdGlvbiBKcy50KSA6IGxpbnQgSnMudCA9XG4gIGxldCByZXN1bHQgPSBuZXclanMgY29uc3RydWN0b3JfbGludCBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5tZXNzYWdlIDo9IEpzLnN0cmluZyBtZXNzYWdlIGluXG4gIGxldCAoKSA9XG4gICAgcmVzdWx0IyMuc2V2ZXJpdHkgOj1cbiAgICAgIG1hdGNoIHNldmVyaXR5IHdpdGhcbiAgICAgIHwgRXJyb3IgLT4gSnMuc3RyaW5nIFwiZXJyb3JcIlxuICAgICAgfCBXYXJuaW5nIC0+IEpzLnN0cmluZyBcIndhcm5pbmdcIlxuICBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5mcm9tIDo9IGZyb20gaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMudG9fIDo9IHRvXyBpblxuICByZXN1bHRcblxuY2xhc3MgdHlwZSBjaGFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdGV4dCA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHJlbW92ZWQgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvcmlnaW4gOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2NoYW5nZSA6IGNoYW5nZSBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxubGV0IGNyZWF0ZV9jaGFuZ2UgKCkgOiBjaGFuZ2UgSnMudCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9jaGFuZ2VcblxuY2xhc3MgdHlwZSBjb2RlbWlycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIHNldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgSnMubWV0aFxuXG4gICgqIFByb2dyYW1tYXRpY2FsbHkgc2V0IHRoZSBzaXplIG9mIHRoZSBlZGl0b3IgKG92ZXJyaWRpbmcgdGhlXG4gICAgIGFwcGxpY2FibGUgQ1NTIHJ1bGVzKS4gd2lkdGggYW5kIGhlaWdodCBjYW4gYmUgZWl0aGVyIG51bWJlcnNcbiAgICAgKGludGVycHJldGVkIGFzIHBpeGVscykgb3IgQ1NTIHVuaXRzIChcIjEwMCVcIiwgZm9yIGV4YW1wbGUpLlxuICAgICBZb3UgY2FuIHBhc3MgbnVsbCBmb3IgZWl0aGVyIG9mIHRoZW0gdG8gaW5kaWNhdGUgdGhhdCB0aGF0XG4gICAgIGRpbWVuc2lvbiBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gICopXG4gIG1ldGhvZCBzZXRTaXplIDogaW50IEpzLnQgSnMub3B0IC0+IGludCBKcy50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBTY3JvbGwgdGhlIGVkaXRvciB0byBhIGdpdmVuIChwaXhlbCkgcG9zaXRpb24uIEJvdGggYXJndW1lbnRzXG4gICAgIG1heSBiZSBsZWZ0IGFzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGhhdmUgbm8gZWZmZWN0LiAqKVxuICBtZXRob2Qgc2Nyb2xsVG8gOiBpbnQgSnMub3B0IC0+IGludCBKcy5vcHQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNoYXJDb29yZHMgOlxuICAgIHBvc2l0aW9uIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IGRpbWVuc2lvbiBKcy50IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0U2Nyb2xsZXJFbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIG9uIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gKERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZmlyZWQgd2hlbiBjb250ZW50IGlzIGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uQ2hhbmdlIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiYXRjaGVkIGNoYW5nZWQgb3BlcmF0aW9uICopXG4gIG1ldGhvZCBvbkNoYW5nZXMgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLmpzX2FycmF5IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmVmb3JlIGEgY2hhbmdlIGlzIGFwcGxpZWQgKilcbiAgbWV0aG9kIG9uQmVmb3JlQ2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGN1cnNvciBtb3Zlcywgb3IgYW55IGNoYW5nZSAqKVxuICBtZXRob2Qgb25DdXJzb3JBY3Rpdml0eSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiBuZXcgaW5wdXQgaXMgcmVhZCAqKVxuICBtZXRob2Qgb25LZXlIYW5kbGVkIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbklucHV0UmVhZCA6IChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiB0ZXh0IG1hdGNoZXMgZWxlY3RyaWMgcGF0dGVybiAqKVxuICBtZXRob2Qgb25FbGVjdHJpY0lucHV0IDogKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBzZWxlY3Rpb24gaXMgbW92ZWQgVE9ETyAqKVxuICBtZXRob2Qgb25CZWZvcmVTZWxlY3Rpb25DaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogdGhlIHZpZXcgcG9ydCBjaGFuZ2VkICopXG4gIG1ldGhvZCBvblZpZXdwb3J0Q2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqICBkb2N1bWVudCBzd2FwcGVkICopXG4gIG1ldGhvZCBvblN3YXBEb2MgOiAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGd1dHRlciBjbGlja2VkICopXG4gIG1ldGhvZCBvbkd1dHRlckNsaWNrIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogY29udGV4dCBtZW51IGV2ZW50IGZyb20gZ3V0dGVyICopXG4gIG1ldGhvZCBvbkd1dHRlckNvbnRleHRNZW51IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogZm9jdXMgKilcbiAgbWV0aG9kIG9uRm9jdXMgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJsdXIgKilcbiAgbWV0aG9kIG9uQmx1ciA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogc2Nyb2xsICopXG4gIG1ldGhvZCBvblNjcm9sbCA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIHNjcm9sbGVkIGluIHZpZXcqKVxuICBtZXRob2Qgb25TY3JvbGxDdXJzb3JJbnRvVmlldyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGRvbSB1cGRhdGVkICopXG4gIG1ldGhvZCBvblVwZGF0ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogbGluZSByZW5kZXJlZCAqKVxuICBtZXRob2Qgb25SZW5kZXJMaW5lIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uTW91c2Vkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGJsY2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ub3VjaHN0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29udGV4dG1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5cHJlc3MgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXl1cCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkN1dCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkNvcHkgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25QYXN0ZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdzdGFydCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdlbnRlciA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdvdmVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2xlYXZlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJvcCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRlbGV0ZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25CZWZvcmVDdXJzb3JFbnRlciA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25DbGVhciA6IChwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uVW5oaWRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvblJlZHJhdyA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgc2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGdldEN1cnNvciA6IHBvc2l0aW9uIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0U2VsZWN0aW9uIDogcG9zaXRpb24gSnMudCAtPiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcGVyZm9ybUxpbnQgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbnRfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIGdldEFubm90YXRpb25zIDpcbiAgICAoSnMuanNfc3RyaW5nIC0+XG4gICAgbGludF9jb25maWd1cmF0aW9uIEpzLnQgLT5cbiAgICBjb2RlbWlycm9yIEpzLnQgLT5cbiAgICBsaW50IEpzLnQgSnMuanNfYXJyYXkgSnMudClcbiAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW50T25DaGFuZ2UgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24gOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBjb25maWd1cmF0aW9uID0gb2JqZWN0XG4gICgqIFRoZSBzdGFydGluZyB2YWx1ZSBvZiB0aGUgZWRpdG9yLiAqKVxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIG1vZGUgdG8gdXNlLiAqKVxuICBtZXRob2QgbW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBFeHBsaWNpdGx5IHNldCB0aGUgbGluZSBzZXBhcmF0b3IgZm9yIHRoZSBlZGl0b3IuICAqKVxuICBtZXRob2QgbGluZVNlcGFyYXRvciA6IEpzLmpzX3N0cmluZyBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHRoZW1lIHRvIHN0eWxlIHRoZSBlZGl0b3Igd2l0aC4gKilcbiAgbWV0aG9kIHRoZW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtYW55IHNwYWNlcyBhIGJsb2NrIHNob3VsZCBiZSBpbmRlbnRlZC4gICopXG4gIG1ldGhvZCBpbmRlbnRVbml0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZXRoZXIgdG8gdXNlIHRoZSBjb250ZXh0LXNlbnNpdGl2ZSBpbmRlbnRhdGlvbiAqKVxuICBtZXRob2Qgc21hcnRJbmRlbnQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSB3aWR0aCBvZiBhIHRhYiBjaGFyYWN0ZXIuICopXG4gIG1ldGhvZCB0YWJTaXplIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBmaXJzdCBOKnRhYlNpemUgaW4gaW5kZW50YXRpb24gc2hvdWxkIE4gdGFicy4gKilcbiAgbWV0aG9kIGluZGVudFdpdGhUYWJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgZWRpdG9yIHNob3VsZCByZS1pbmRlbnQgdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbWV0aG9kIGVsZWN0cmljQ2hhcnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHNwZWNpYWwgcGxhY2Vob2xkZXIuICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhcnMgOiBKcy5yZWdFeHAgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiBpZGVudGlmaWVzIHNwZWNpYWxDaGFycyBhbmQgcHJvZHVjZXMgYSBET00gbm9kZSAqKVxuICBtZXRob2Qgc3BlY2lhbENoYXJQbGFjZWhvbGRlciA6IChpbnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50KSBKcy5wcm9wXG5cbiAgKCogSG9yaXpvbnRhbCBjdXJzb3IgbW92ZW1lbnQgdGhyb3VnaCByaWdodC10by1sZWZ0LiAqKVxuICBtZXRob2QgcnRsTW92ZVZpc3VhbGx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDb25maWd1cmVzIHRoZSBrZXkgbWFwIHRvIHVzZS4gKilcbiAgbWV0aG9kIGtleU1hcCA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBzcGVjaWZ5IGV4dHJhIGtleSBiaW5kaW5ncyBmb3IgdGhlIGVkaXRvciAqKVxuICBtZXRob2QgZXh0cmFLZXlzIDogJ2EgSnMucHJvcFxuXG4gICgqIFNjcm9sbCBvciB3cmFwIGZvciBsb25nIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV3JhcHBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqICBTaG93IGxpbmUgbnVtYmVycyB0byB0aGUgbGVmdCBvZiB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBsaW5lTnVtYmVycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQXQgd2hpY2ggbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGxpbmVzLiBEZWZhdWx0IGlzIDEuICopXG4gIG1ldGhvZCBmaXJzdExpbmVOdW1iZXIgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcm1hdCBsaW5lIG51bWJlcnMuICopXG4gIG1ldGhvZCBsaW5lTnVtYmVyRm9ybWF0dGVyIDogKGludCBKcy50IC0+IEpzLmpzX3N0cmluZykgSnMudCBKcy5wcm9wXG5cbiAgKCogQWRkIGV4dHJhIGd1dHRlcnMgKilcbiAgbWV0aG9kIGd1dHRlcnMgOiBKcy5zdHJpbmdfYXJyYXkgSnMudCBKcy5wcm9wXG5cbiAgKCogR3V0dGVyIHNjcm9sbHMgYWxvbmcgd2l0aCB0aGUgY29udGVudCBob3Jpem9udGFsbHkgKilcbiAgbWV0aG9kIGZpeGVkR3V0dGVyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDaG9vc2VzIGEgc2Nyb2xsYmFyIGltcGxlbWVudGF0aW9uLiAqKVxuICBtZXRob2Qgc2Nyb2xsYmFyU3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogY292ZXIgZ3V0dGVyIHdpdGggd2l0aCBjbGFzcyBDb2RlTWlycm9yLWd1dHRlci1maWxsZXIuICopXG4gIG1ldGhvZCBjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogU2VsZWN0cyB0aGUgd2F5IENvZGVNaXJyb3IgaGFuZGxlcyBpbnB1dCBhbmQgZm9jdXMuICopXG4gIG1ldGhvZCBpbnB1dFN0eWxlIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIGRpc2FibGUgZWRpdGluZyBvZiB0aGUgZWRpdG9yIGNvbnRlbnQgKilcbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biB3aGVuIGEgc2VsZWN0aW9uIGlzIGFjdGl2ZS4gKilcbiAgbWV0aG9kIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBjb3B5IG9yIGN1dCB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB3aWxsIGNvcHkgb3IgY3V0IHdob2xlIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV2lzZUNvcHlDdXQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZW4gcGFzdGluZyBzb21ldGhpbmcgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UgKG5vdCBmcm9tIHRoZVxuICAgICBlZGl0b3IgaXRzZWxmKSwgaWYgdGhlIG51bWJlciBvZiBsaW5lcyBtYXRjaGVzIHRoZSBudW1iZXIgb2ZcbiAgICAgc2VsZWN0aW9uLCBDb2RlTWlycm9yIHdpbGwgYnkgZGVmYXVsdCBpbnNlcnQgb25lIGxpbmUgcGVyXG4gICAgIHNlbGVjdGlvbi4gWW91IGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHRoYXRcbiAgICAgYmVoYXZpb3IuICopXG4gIG1ldGhvZCBwYXN0ZUxpbmVzUGVyU2VsZWN0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBEZXRlcm1pbmVzIHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgam9pbmVkIGFzIHNvb24gYXNcbiAgICAgdGhleSB0b3VjaCAodGhlIGRlZmF1bHQpIG9yIG9ubHkgd2hlbiB0aGV5IG92ZXJsYXAgKHRydWUpLiAqKVxuICBtZXRob2Qgc2VsZWN0aW9uc01heVRvdWNoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBtYXhpbXVtIG51bWJlciBvZiB1bmRvICopXG4gIG1ldGhvZCB1bmRvRGVwdGggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogbWlsbGlzZWNvbmRzIG9mIGluYWN0aXZpdHkgdG8gY3JlYXRlIGEgbmV3IGhpc3RvcnkgZXZlbnQgKilcbiAgbWV0aG9kIGhpc3RvcnlFdmVudERlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRhYiBpbmRleCBvZiBlZGl0b3IgKilcbiAgbWV0aG9kIHRhYmluZGV4IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIENvZGVNaXJyb3IgZm9jdXMgaXRzZWxmIG9uIGluaXRpYWxpemF0aW9uICopXG4gIG1ldGhvZCBhdXRvZm9jdXMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGVuYWJsZSBkcmFnLWFuZC1kcm9wICopXG4gIG1ldGhvZCBkcmFnRHJvcCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogd2hlbiBzZXQgZmlsZXMgd2l0IG1pbWUgdHlwZSBjYW4gYmUgZHJvcHBlZCBpbnRvIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGFsbG93RHJvcEZpbGVUeXBlcyA6IEpzLnN0cmluZ19hcnJheSBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogSGFsZi1wZXJpb2QgaW4gbWlsbGlzZWNvbmRzIHVzZWQgZm9yIGN1cnNvciBibGlua2luZy4gKilcbiAgbWV0aG9kIGN1cnNvckJsaW5rUmF0ZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBIb3cgbXVjaCBleHRyYSBzcGFjZSB0byBhbHdheXMga2VlcCBhYm92ZSBhbmQgYmVsb3cgdGhlIGN1cnNvciAqKVxuICBtZXRob2QgY3Vyc29yU2Nyb2xsTWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgY3Vyc29yLiAqKVxuICBtZXRob2QgY3Vyc29ySGVpZ2h0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjb250ZXh0IG1lbnUgaXMgb3BlbmVkIHdpdGggYSBjbGljayBvdXRzaWRlIG9mIHRoZVxuICAgICBjdXJyZW50IHNlbGVjdGlvbiwgbW92ZSBjdXJzb3IgdG8gdGhlIHBvaW50IG9mIHRoZSBjbGljayopXG4gIG1ldGhvZCByZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRpbWUgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtUaW1lIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGRlbGF5IHRvIHJ1biBoaWdobGlnaHRpbmcgdGhyZWFkICopXG4gIG1ldGhvZCB3b3JrRGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogaG93IG9mdGVuIHRvIHBvbGwgZm9yIGNoYW5nZXMgKilcbiAgbWV0aG9kIHBvbGxJbnRlcnZhbCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBjb21iaW5lIHRva2VucyB0byBhIHNpbmdsZSBzcGFuICopXG4gIG1ldGhvZCBmbGF0dGVuU3BhbnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHByZWZpeCBjc3MgKilcbiAgbWV0aG9kIGFkZE1vZGVDbGFzcyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogbGVuZ3RoIHRvIGhpZ2hsaWdodCAqKVxuICBtZXRob2QgbWF4SGlnaGxpZ2h0TGVuZ3RoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBhbW91bnQgb2YgbGluZXMgdGhhdCBhcmUgcmVuZGVyZWQgYWJvdmUgYW5kIGJlbG93IHRoZVxuICAgICB2aXNpYmxlIGRvY3VtZW50KilcbiAgbWV0aG9kIHZpZXdwb3J0TWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIHNlbGVjdGlvbi9hY3RpdmUtbGluZS5qcyAqKVxuICBtZXRob2Qgc3R5bGVBY3RpdmVMaW5lIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBsaW50L2xpbnQuanMgKilcbiAgbWV0aG9kIGxpbnQgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gZWRpdC9tYXRjaGJyYWNrZXRzLmpzICopXG4gIG1ldGhvZCBtYXRjaEJyYWNrZXRzIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50ID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmRlZmF1bHRzXG5cbmxldCBmcm9tVGV4dEFyZWEgKGRvbSA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcbiAgICAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24gSnMudCkgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAoKiBsZXQgKCkgPSBKcy5kZWJ1Z2dlcigpIGluICopXG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjI2Zyb21UZXh0QXJlYVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGRvbSlcbiAgICAoSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uKVxuXG5jbGFzcyB0eXBlIGNvbW1hbmRzID0gb2JqZWN0XG4gIG1ldGhvZCBzYXZlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbW1hbmRzIDogY29tbWFuZHMgSnMudCA9IChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5jb21tYW5kc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGNyZWF0ZV9maWxlID8odGV4dCA9IEx3dC5yZXR1cm4gKEpzLnN0cmluZyBcIlwiKSkgKGZpbGVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIHRleHQgPj49IGZ1biB0eHQgLT5cbiAgICAgICAgICBsZXQgY29udGVudCA9IEpzLnRvX3N0cmluZyB0eHQgaW5cbiAgICAgICAgICBTdGF0ZV9maWxlLmNyZWF0ZV9maWxlIH5maWxlbmFtZTpmaWxlX2lkIH5jb250ZW50XG4gICAgICAgICAgPj49ICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgICAgICBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfZmlsZSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X2ZpbGU6JXNcIiBmaWxlX2lkKSkgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCBOb25lID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9maWxlICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUucmVtb3ZlX2ZpbGUgKCkgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlX2NvbXBpbGUgcmFuayAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2V0X2NvbXBpbGUgcmFuayBjb21waWxlID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUub3JkZXJfZmlsZXMgZmlsZW5hbWVzID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBleHBvcnRfY3VycmVudF9maWxlICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChkYXRhLCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGE6KEpzLnN0cmluZyBkYXRhKVxuICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZmlsZV9uZXdfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LW1vZGFsXCJcbmxldCBmaWxlX25ld19pbnB1dF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctaW5wdXRcIlxubGV0IGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1kcm9wZG93bi1tZW51XCJcbmxldCBmaWxlX25ld19saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbGlcIlxubGV0IGZpbGVfb3Blbl9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1vcGVuLWxpXCJcbmxldCBmaWxlX29wZW5fc2VsZWN0b3JfaWQgPSBcIm1lbnUtZWRpdG9yLW9wZW4tc2VsZWN0b3ItaWRcIlxubGV0IGZpbGVfY2xvc2VfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtY2xvc2UtbGlcIlxubGV0IGZpbGVfZXhwb3J0X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWV4cG9ydC1saVwiXG5sZXQgZmlsZV9jb21waWxlX2NoZWNrYm94ID0gXCJtZW51LWVkaXRvci1maWxlLWNvbXBpbGUtY2hlY2tib3hcIlxuXG4oKiBsaXN0IGZpbGVuYW1lIGFubm90YXRpb24gKilcbmxldCBlbGVtZW50X2dldF9maWxlbmFtZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIENvbW1vbi5lbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIFwiZmlsZS1pZFwiXG5cbmxldCBlbGVtZW50X3NldF9maWxlbmFtZSAobmFtZSA6IHN0cmluZykgPVxuICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1maWxlLWlkXCIgbmFtZVxuXG5sZXQgZmlsZV9uZXdfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX25ld19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmaWxlX25ld19pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZmlsZV9uZXdfaW5wdXRcblxubGV0IGZpbGVfY2hlY2tib3ggZmlsZV9pZCBpc19jaGVja2VkID1cbiAgbGV0IGNoZWNrZWRfYXR0cmlidXRlID1cbiAgICBpZiBpc19jaGVja2VkIHRoZW5cbiAgICAgIFsgSHRtbC5hX2NoZWNrZWQgKCkgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIChbXG4gICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7XG4gICAgICAgICBIdG1sLmFfY2xhc3MgWyBmaWxlX2NvbXBpbGVfY2hlY2tib3ggXTtcbiAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIGZpbGVfaWQ7XG4gICAgICAgXVxuICAgICAgQCBjaGVja2VkX2F0dHJpYnV0ZSlcbiAgICAoKVxuXG5sZXQgb3Blbl9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfb3Blbl9zZWxlY3Rvcl9pZDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJoaWRkZW5cIiBdO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiZmlsZVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYWNjZXB0XCIgXCIua2FcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfZmlsZS5tb2RlbCkgPVxuICAoKiBkaXJlY3RvcmllcyAqKVxuICBsZXQgaGlkZV9vbl9lbXB0eSBsID1cbiAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2VcbiAgICAgIGxcbiAgaW5cbiAgbGV0IGZpbGVfbGkgPVxuICAgIGxldCBjdXJyZW50X2ZpbGVfcG9zID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHsgU3RhdGVfZmlsZS5yYW5rOyBfIH0gLT4gcmFuaylcbiAgICAgICAgbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50XG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocmFuaywgeyBTdGF0ZV9maWxlLm5hbWU7IFN0YXRlX2ZpbGUubG9jYWwgfSkgLT5cbiAgICAgICAgbGV0IGNvbXBpbGUgPSBsb2NhbCA9IE5vbmUgaW5cbiAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAoaWYgY3VycmVudF9maWxlX3BvcyA9IFNvbWUgcmFuayB0aGVuXG4gICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKVxuICAgICAgICAgIEAgWyBcInVpLXN0YXRlLXNvcnRhYmxlXCIgXVxuICAgICAgICBpblxuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3M7IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICB+YTpbIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWRpdlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBmaWxlX2NoZWNrYm94IG5hbWUgY29tcGlsZTtcbiAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1sYWJlbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXSlcbiAgICAgIChNb2RzLkludE1hcC5iaW5kaW5ncyBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSlcbiAgaW5cbiAgbGV0IHNlcGFyYXRvcl9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJzZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgWyBcImRpdmlkZXJcIjsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG5ld19saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX25ld19saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk5ld1wiIF0gXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IG9wZW5fbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX29wZW5fbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJPcGVuXCIgXTtcbiAgICAgICAgICBvcGVuX2lucHV0O1xuICAgICAgICBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgY2xvc2VfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9jbG9zZV9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkNsb3NlXCIgXSBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZXhwb3J0X2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfZXhwb3J0X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiRXhwb3J0XCIgXSBdO1xuICAgICAgXVxuICBpblxuICBbXSBAIGZpbGVfbGkgQCBzZXBhcmF0b3JfbGkgQCBuZXdfbGkgQCBvcGVuX2xpIEAgY2xvc2VfbGkgQCBleHBvcnRfbGlcblxubGV0IGNvbnRlbnQgPVxuICBsZXQgbGlfbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAoUmVhY3QuUy5tYXAgKGZ1biBtb2RlbCAtPiBkcm9wZG93biBtb2RlbCkgU3RhdGVfZmlsZS5tb2RlbClcbiAgaW5cbiAgW1xuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0biBidG4tZGVmYXVsdFwiOyBcImRyb3Bkb3duLXRvZ2dsZVwiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJkcm9wZG93blwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhhc3BvcHVwXCIgXCJ0cnVlXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtZXhwYW5kZWRcIiBcImZhbHNlXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCBmaWxlIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGZpbGUuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH0gLT4gb3V0X29mX3N5bmMpKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIkZpbGVcIjsgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjYXJldFwiIF0gXSBbXSBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbC51bFxuICAgICAgfmE6WyBIdG1sLmFfaWQgZmlsZV9kcm9wZG93bl9tZW51X2lkOyBIdG1sLmFfY2xhc3MgWyBcImRyb3Bkb3duLW1lbnVcIiBdIF1cbiAgICAgIGxpX2xpc3Q7XG4gICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbCB+aWQ6ZmlsZV9uZXdfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IEZpbGVcIlxuICAgICAgfmJvZHk6XG4gICAgICAgIFsgWyVodG1sIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBmaWxlX25ld19pbnB1dCBdIHt8PC9kaXY+fH1dIF1cbiAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgRmlsZVwiXG4gICAgICB+c3VibWl0OlxuICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZmlsZV9uZXdfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGUgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gIF1cblxubGV0IG9yZGVyX2ZpbGVzIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCBmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCA9XG4gICAgQ29tbW9uLmNoaWxkcmVuX3ZhbHVlIGVsZW1lbnQgXCJsaVtkYXRhLWZpbGUtaWRdXCIgKGZ1biBlbGVtZW50IC0+XG4gICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBlbGVtZW50IGluXG4gICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgKGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZmlsZW5hbWVcIilcbiAgICAgICAgICBKcy50b19zdHJpbmcpXG4gIGluXG4gIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5vcmRlcl9maWxlcyBmaWxlbmFtZXMgaW5cbiAgKClcblxubGV0IGZpbGVfc2VsZWN0X2hhbmRsZXIgXyBfIDogdW5pdCBMd3QudCA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCBmaWxlcyA9IEpzLk9wdGRlZi5nZXQgb3Blbl9pbnB1dF9kb20jIy5maWxlcyAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGUgPSBKcy5PcHQuZ2V0IChmaWxlcyMjaXRlbSAwKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGVfaWQgPSBKcy50b19zdHJpbmcgZmlsZSMjLm5hbWUgaW5cbiAgbGV0ICgpID1cbiAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGVcbiAgICAgIH50ZXh0OihKc19vZl9vY2FtbF9sd3QuRmlsZS5yZWFkQXNUZXh0IGZpbGUpXG4gICAgICBmaWxlX2lkXG4gIGluXG4gIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgb3Blbl9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9uZXdfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gZmlsZV9uZXdfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfb3Blbl9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgKCogY2xpY2sgOiB1bml0IEpzLm1ldGg7ICopXG4gICAgICAgICAgIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyNjbGljayBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9jbG9zZV9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmNsb3NlX2ZpbGUgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfZXhwb3J0X2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCJzcGFuW2RhdGEtZmlsZS1pZF1cIiBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgKCogbGV0ICgpID0gQ29tbW9uLmRlYnVnIGV2ZW50IGluICopXG4gICAgICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgICAgbGV0IGZpbGVfaWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICAgICAgICAgICAgIEpzLk9wdC5iaW5kIHRhcmdldCAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgICAgICBlbGVtZW50X2dldF9maWxlbmFtZSBlbGVtZW50KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGUgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uY3JlYXRlX3NvcnQgZmlsZV9kcm9wZG93bl9tZW51X2lkIChmdW4gZXZlbnQgXyAoKiB1aSAqKSAtPlxuICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgIEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgbGV0IGlkIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGVsZW1lbnQjIy5pZCBpblxuICAgICAgICAgICAgaWYgZmlsZV9kcm9wZG93bl9tZW51X2lkID0gaWQgdGhlblxuICAgICAgICAgICAgICBvcmRlcl9maWxlcyBlbGVtZW50XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyAoRm9ybWF0LnNwcmludGYgXCJ1bmV4cGVjdGVkIGlkICVzXCIgaWQpKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoRm9ybWF0LnNwcmludGYgXCJpbnB1dC4lc1wiIGZpbGVfY29tcGlsZV9jaGVja2JveClcbiAgICAgIFwiY2hhbmdlXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICAgICBsZXQgZmlsZV9pZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gICAgICAgICAgICAgSnMuT3B0LmJpbmQgdGFyZ2V0IChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBpc19jaGVja2VkIDogYm9vbCA9XG4gICAgICAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgICAgICAgKEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IEpzLl9mYWxzZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChKcy5VbnNhZmUuY29lcmNlIGVsZW1lbnQgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCkjIy5jaGVja2VkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGZpbGVfaWQgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVfY29tcGlsZVxuICAgICAgICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmNoYW5nZXNcbiAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQpXG4gICAgICAgICAgZmlsZV9zZWxlY3RfaGFuZGxlcilcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCB3aXRoX2ZpbGUgKGhhbmRsZXIgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudClcbiAgICA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfZmlsZS5nZXRfZmlsZSAoKSA+Pj0gaGFuZGxlcikgPj49IGZ1biBfIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfY29udGVudCB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGZpbGVjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgPVxuICB3aXRoX2ZpbGVcbiAgICAoQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKF8sIGN1cnJlbnRfZmlsZW5hbWUpIC0+XG4gICAgICAgICBpZiBmaWxlbmFtZSA9IGN1cnJlbnRfZmlsZW5hbWUgdGhlblxuICAgICAgICAgICBTdGF0ZV9maWxlLnNldF9jb250ZW50IGZpbGVjb250ZW50ID4+PSBmdW4gciAtPlxuICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSlcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcImZpbGUgbmFtZSBtaXNtYXRjaCAlcyAlc1wiIGZpbGVuYW1lIGN1cnJlbnRfZmlsZW5hbWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIG1zZylcbiAgICAgICAgICkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDb2RlbWlycm9yXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBlZGl0b3JfZnVsbCwgc2V0X2VkaXRvcl9mdWxsID0gUmVhY3QuUy5jcmVhdGUgKGZhbHNlIDogYm9vbClcbmxldCBmaWxlbmFtZSwgc2V0X2ZpbGVuYW1lID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IG1vdmVfY3Vyc29yX2hvb2sgPSByZWYgTm9uZVxubGV0IHNldF9tb3ZlX2N1cnNvciBsb2MgPSBPcHRpb24uaXRlciAoZnVuIGYgLT4gZiBsb2MpICFtb3ZlX2N1cnNvcl9ob29rXG5cbmxldCBmaWxlX2xhYmVsID1cbiAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgIChSZWFjdC5TLm1hcCAoT3B0aW9uX3V0aWwudW5zb21lIFwiXCIpIFN0YXRlX2ZpbGUuY3VycmVudF9maWxlbmFtZSlcblxubGV0IHRvZ2dsZV9idXR0b25faWQgPSBcInRvZ2dsZV9idXR0b25cIlxuXG5sZXQgdG9nZ2xlX2J1dHRvbiA9XG4gIEh0bWwuYVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdG9nZ2xlX2J1dHRvbl9pZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwicHVsbC1yaWdodFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLmNkYXRhIFwidG9nZ2xlXCIgXVxuXG5sZXQgcGFuZWxfaGVhZGluZ19ncm91cF9pZCA9IFwicGFuZWxfaGVhZGluZ19ncm91cFwiXG5cbmxldCBwYW5lbF9oZWFkaW5nID1cbiAgbGV0IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0bi1ncm91cFwiIF07IEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJncm91cFwiO1xuICAgICAgICBdXG4gICAgICBNZW51X2VkaXRvcl9maWxlLmNvbnRlbnRcbiAgaW5cbiAgbGV0IGJ1dHRvbnMgPSBtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQgOjogWyB0b2dnbGVfYnV0dG9uIF0gaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBpZD1cInx9XG4gICAgICBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIHt8XCIgY2xhc3M9XCJjb2wtbWQtMTAgYnRuLWdyb3VwXCI+fH0gYnV0dG9uc1xuICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBvbmVsaW5lciBmaWxlbmFtZVwiPnx9XG4gICAgICBbIGZpbGVfbGFiZWwgXVxuICAgICAge3w8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+fH1dXG5cbmxldCBjb2RlbWlycm9yX2lkID0gXCJjb2RlLW1pcnJvclwiXG5sZXQgZWRpdG9yX3BhbmVsX2lkID0gXCJlZGl0b3ItcGFuZWxcIlxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCB0ZXh0YXJlYSA9IEh0bWwudGV4dGFyZWEgfmE6WyBIdG1sLmFfaWQgY29kZW1pcnJvcl9pZCBdIChIdG1sLnR4dCBcIlwiKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIjsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdIF1cbiAgICBbXG4gICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXSBbIHBhbmVsX2hlYWRpbmcgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5oaWRlX2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJuby1wYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uc2hvd19jb2RlbWlycm9yICgpIGluXG4gICAgICAgICAgICAgICAgICAgICBbIFwicGFuZWwtYm9keVwiOyBcImZsZXgtY29udGVudFwiIF0pXG4gICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICAgICAgSHRtbC5hX2lkIGVkaXRvcl9wYW5lbF9pZDtcbiAgICAgICAgICBdXG4gICAgICAgIFsgdGV4dGFyZWEgXTtcbiAgICBdXG5cbmxldCBlcnJvcl9saW50IGVycm9ycyA6IENvZGVtaXJyb3IubGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICBsZXQgcG9zaXRpb24gcCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChwLkxvYy5saW5lIC0gMSkgcC5Mb2MuY2hyIGluXG4gIGxldCBoeWRyYXRlIChlcnJvciA6IEFwaV90eXBlc19qLm1lc3NhZ2UpIDogbGludCBKcy50IG9wdGlvbiA9XG4gICAgbWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwucmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhbmdlIC0+XG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBTdGF0ZV9maWxlLmN1cnJlbnRfZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBmaWxlX2lkIC0+XG4gICAgICAgIGlmIHJhbmdlLkxvYy5maWxlID0gZmlsZV9pZCB0aGVuXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKENvZGVtaXJyb3IuY3JlYXRlX2xpbnRcbiAgICAgICAgICAgICAgIH5tZXNzYWdlOmVycm9yLlJlc3VsdF91dGlsLnRleHRcbiAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLi4uIGkgYW0gdHJ5aW5nIHRvIGtlZXBcbiAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBtaXJyb3IgY29kZSBpbmRlcGVuZGVudCBvZiB0aGUgYXBpIGNvZGUuXG4gICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICB+c2V2ZXJpdHk6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5zZXZlcml0eSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5BcHAgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuRXJyb3IgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuV2FybmluZyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkluZm8gLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5EZWJ1ZyAtPiBDb2RlbWlycm9yLldhcm5pbmcpXG4gICAgICAgICAgICAgICB+ZnJvbToocG9zaXRpb24gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24pXG4gICAgICAgICAgICAgICB+dG9fOihwb3NpdGlvbiByYW5nZS5Mb2MudG9fcG9zaXRpb24pKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZSlcbiAgaW5cbiAgSnMuYXJyYXlcbiAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIHZhbHVlIC0+XG4gICAgICAgICAgICBtYXRjaCBoeWRyYXRlIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZSA6OiBhY2MpXG4gICAgICAgICAgW10gZXJyb3JzKSlcblxubGV0IHNldHVwX2xpbnQgXyBfIF8gPSBlcnJvcl9saW50IChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcblxuKCogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDU3NTM0My9jb2RlbWlycm9yLWlzLWl0LXBvc3NpYmxlLXRvLXNjcm9sbC10by1hLWxpbmUtc28tdGhhdC1pdC1pcy1pbi10aGUtbWlkZGxlLW9mLXcgKilcbmxldCBqdW1wX3RvX2xpbmUgKGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQpIChsaW5lIDogaW50KSA6IHVuaXQgPVxuICBsZXQgcG9zaXRpb24gOiBwb3NpdGlvbiBKcy50ID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gbGluZSAwIGluXG4gIGxldCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID0gSnMuc29tZSAoSnMuc3RyaW5nIFwibG9jYWxcIikgaW5cbiAgbGV0IGNvb3JkcyA6IENvZGVtaXJyb3IuZGltZW5zaW9uIEpzLnQgPVxuICAgIGNvZGVtaXJyb3IjI2NoYXJDb29yZHMgcG9zaXRpb24gbW9kZVxuICBpblxuICBsZXQgdG9wIDogaW50ID0gY29vcmRzIyMudG9wIGluXG4gIGxldCBlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gY29kZW1pcnJvciMjZ2V0U2Nyb2xsZXJFbGVtZW50IGluXG4gIGxldCBtaWRkbGVIZWlnaHQgOiBpbnQgPSBlbGVtZW50IyMub2Zmc2V0SGVpZ2h0IC8gMiBpblxuICBsZXQgc2Nyb2xsTGluZSA6IGludCA9IHRvcCAtIG1pZGRsZUhlaWdodCAtIDUgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2Nyb2xsVG8gSnMubnVsbCAoSnMuc29tZSBzY3JvbGxMaW5lKSBpblxuICAoKVxuXG5sZXQgZG9udF9nY19tZV9zaWduYWxzID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZS5vbmxvYWQgKCkgaW5cbiAgbGV0IGxpbnRfY29uZmlnID0gQ29kZW1pcnJvci5jcmVhdGVfbGludF9jb25maWd1cmF0aW9uICgpIGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMuZ2V0QW5ub3RhdGlvbnMgOj0gc2V0dXBfbGludCBpblxuICBsZXQgKCkgPSBsaW50X2NvbmZpZyMjLmxpbnRPbkNoYW5nZSA6PSBKcy5fZmFsc2UgaW5cbiAgbGV0IGNvbmZpZ3VyYXRpb24gPSBDb2RlbWlycm9yLmRlZmF1bHRfY29uZmlndXJhdGlvbiBpblxuICBsZXQgZ3V0dGVyX29wdGlvbnMgPVxuICAgIEpzLnN0cmluZyBcImJyZWFrcG9pbnRzLENvZGVNaXJyb3ItbGludC1tYXJrZXJzLENvZGVNaXJyb3ItbGluZW51bWJlcnNcIlxuICBpblxuICBsZXQgZ3V0dGVyX29wdGlvbiA6IEpzLnN0cmluZ19hcnJheSBKcy50ID1cbiAgICBndXR0ZXJfb3B0aW9ucyMjc3BsaXQgKEpzLnN0cmluZyBcIixcIilcbiAgaW5cbiAgbGV0IHRleHRhcmVhIDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gVWlfY29tbW9uLmlkX2RvbSBcImNvZGUtbWlycm9yXCIgaW5cbiAgbGV0ICgpID1cbiAgICBjb25maWd1cmF0aW9uIyMubGluZU51bWJlcnMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmxpbmVXcmFwcGluZyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuc3R5bGVBY3RpdmVMaW5lIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tYXRjaEJyYWNrZXRzIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5hdXRvZm9jdXMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmd1dHRlcnMgOj0gZ3V0dGVyX29wdGlvbjtcbiAgICBjb25maWd1cmF0aW9uIyMubGludCA6PSBsaW50X2NvbmZpZztcbiAgICBjb25maWd1cmF0aW9uIyMubW9kZSA6PSBKcy5zdHJpbmcgXCJLYXBwYVwiXG4gIGluXG4gIGxldCBjb2RlbWlycm9yIDogY29kZW1pcnJvciBKcy50ID1cbiAgICBDb2RlbWlycm9yLmZyb21UZXh0QXJlYSB0ZXh0YXJlYSBjb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9IGNvZGVtaXJyb3IjI3NldFZhbHVlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgbGV0ICgpID1cbiAgICBTdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci53aXRoX2ZpbGVcbiAgICAgIChSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICB+b2s6KGZ1biAoY29udGVudCwgaWQpIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9maWxlbmFtZSAoU29tZSBpZCkgaW5cbiAgICAgICAgICAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBjb250ZW50KSBpblxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+XG4gICAgICAgICAgICgqIGlnbm9yZSBpZiBtaXNzaW5nIGZpbGUgKilcbiAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb2RlbWlycm9yLmNvbW1hbmRzIyMuc2F2ZSA6PVxuICAgICAgZnVuIF8gLT4gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmV4cG9ydF9jdXJyZW50X2ZpbGUgKClcbiAgaW5cbiAgbGV0IHRpbWVvdXQgOiBEb21faHRtbC50aW1lb3V0X2lkIG9wdGlvbiByZWYgPSByZWYgTm9uZSBpblxuICBsZXQgaGFuZGxlciBjb2RlbWlycm9yIGNoYW5nZSA9XG4gICAgbGV0ICgpID0gU3RhdGVfZmlsZS5vdXRfb2Zfc3luYyB0cnVlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoICF0aW1lb3V0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHRpbWVvdXQgLT4gRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgdGltZW91dFxuICAgIGluXG4gICAgbGV0IGRlbGF5IDogZmxvYXQgPVxuICAgICAgaWYgKEpzLnN0cl9hcnJheSBjaGFuZ2UjIy50ZXh0KSMjLmxlbmd0aCA+IDEgfHwgU3RhdGVfZXJyb3IuaGFzX2Vycm9ycyAoKVxuICAgICAgdGhlblxuICAgICAgICAxLjAgKi4gMTAwMC4wXG4gICAgICBlbHNlXG4gICAgICAgIDUuMCAqLiAxMDAwLjBcbiAgICBpblxuICAgIGxldCBoYW5kbGVfdGltZW91dCAoKSA9XG4gICAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIGZhbHNlIGluXG4gICAgICBtYXRjaCBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGZpbGVuYW1lIC0+XG4gICAgICAgIFN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLnNldF9jb250ZW50IH5maWxlbmFtZVxuICAgICAgICAgIH5maWxlY29udGVudDooSnMudG9fc3RyaW5nIGNvZGVtaXJyb3IjI2dldFZhbHVlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHRpbWVvdXQgOj1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXRcbiAgICAgICAgICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gaGFuZGxlX3RpbWVvdXQgKCkpKVxuICAgICAgICAgICAgIGRlbGF5KVxuICAgIGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjb25DaGFuZ2UgaGFuZGxlciBpblxuICBsZXQgKCkgPVxuICAgIGNvZGVtaXJyb3IjI29uQ3Vyc29yQWN0aXZpdHkgKGZ1biBfY29kZW1pcnJvciAtPlxuICAgICAgICBsZXQgcG9zID0gY29kZW1pcnJvciMjZ2V0Q3Vyc29yIGluXG4gICAgICAgIGxldCBsaW5lID0gcG9zIyMubGluZSBpblxuICAgICAgICBsZXQgY2ggPSBwb3MjIy5jaCBpblxuICAgICAgICBTdGF0ZV9maWxlLmN1cnNvcl9hY3Rpdml0eSB+bGluZSB+Y2gpXG4gIGluXG4gIGxldCB0b2dnbGVfYnV0dG9uX2RvbSA6IERvbV9odG1sLmxpbmtFbGVtZW50IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgIChKcy5PcHQuZ2V0XG4gICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIHRvZ2dsZV9idXR0b25faWQpKVxuICAgICAgICAgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIHRvZ2dsZV9idXR0b25fZG9tIyMub25jbGlja1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgZWRpdG9yX2Z1bGwgPSBSZWFjdC5TLnZhbHVlIGVkaXRvcl9mdWxsIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNldF9lZGl0b3JfZnVsbCAobm90IGVkaXRvcl9mdWxsKSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBkb250X2djX21lX3NpZ25hbHMgOj1cbiAgICAgIFsgUmVhY3QuUy5tYXAgKGZ1biBfIC0+IGNvZGVtaXJyb3IjI3BlcmZvcm1MaW50KSBTdGF0ZV9lcnJvci5lcnJvcnMgXVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX2ZpbGUucmVnaXN0ZXJfcmVmcmVzaF9maWxlX2hvb2sgKGZ1biByZWZyZXNoIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF9maWxlbmFtZSAoU29tZSByZWZyZXNoLlN0YXRlX2ZpbGUuZmlsZW5hbWUpIGluXG4gICAgICAgIGxldCBjYW5kID0gSnMuc3RyaW5nIHJlZnJlc2guU3RhdGVfZmlsZS5jb250ZW50IGluXG4gICAgICAgIGlmIGNhbmQgPD4gY29kZW1pcnJvciMjZ2V0VmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgY2FuZCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBtYXRjaCByZWZyZXNoLlN0YXRlX2ZpbGUubGluZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBsaW5lIC0+IGp1bXBfdG9fbGluZSBjb2RlbWlycm9yIGxpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbW92ZV9jdXJzb3JfaG9vayA6PVxuICAgICAgU29tZVxuICAgICAgICAoZnVuIHBvcyAtPlxuICAgICAgICAgIGlmIFNvbWUgcG9zLkxvYy5maWxlID0gUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBiZWcgPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChiZWcuTG9jLmxpbmUgLSAxKSBiZWcuTG9jLmNoclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlbiA9IHBvcy5Mb2MuZnJvbV9wb3NpdGlvbiBpblxuICAgICAgICAgICAgbGV0IGxhc3QgPVxuICAgICAgICAgICAgICBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiAoZW4uTG9jLmxpbmUgLSAxKSBlbi5Mb2MuY2hyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgY29kZW1pcnJvciMjc2V0U2VsZWN0aW9uIGZpcnN0IGxhc3RcbiAgICAgICAgICApKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJpbnRfc3RyaW5nIHMgbGlzdCA9IEh0bWwudHh0IHMgOjogbGlzdFxubGV0IHByaW50X25ld2xpbmUgbGlzdCA9IHByaW50X3N0cmluZyBcIlxcblwiIGxpc3RcblxubGV0IHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpIGxpc3QgPVxuICBsZXQgb3Blbl9yYW5nZSwgaW5mID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5taW51c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBhXG4gIGluXG4gIGxldCBjbG9zZV9yYW5nZSwgc3VwID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEucGx1c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBiIC0+IFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYlxuICBpblxuICBwcmludF9zdHJpbmcgb3Blbl9yYW5nZVxuICAgIChwcmludF9zdHJpbmcgaW5mXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgICAgKHByaW50X3N0cmluZyBzdXAgKHByaW50X3N0cmluZyBjbG9zZV9yYW5nZSBsaXN0KSkpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9zdGF0ZSAoYSwgYikgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpdGUgc2l0ZSBsaXN0ID1cbiAgbGV0IHNpdGVfbmFtZSwgcHJvcF9vcHQsIGJpbmRpbmdfb3B0LCBjb3VudGVyX29wdCA9IHNpdGUgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGJpbmRpbmdfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuRnJlZSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuZnJlZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLldpbGRjYXJkIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS53aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkJvdW5kX3RvX3Vua25vd24gLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2xcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBQdWJsaWNfZGF0YS5iaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgaW5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlXG4gICAgICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgICAgIH5zaXRlX25hbWUgKCkpXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIGkpIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSAoc3RyaW5nX29mX2ludCBpKSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBjb3VudGVyX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9jb3VudGVyX3N0YXRlIGEgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggcHJvcF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdFxuICBpblxuICBwcmludF9zdHJpbmcgc2l0ZV9uYW1lIGxpc3RcblxubGV0IHByaW50X2FnZW50IGFnZW50IGxpc3QgPVxuICBsZXQgYWdlbnRfbmFtZSwgaW50ZXJmYWNlID0gYWdlbnQgaW5cbiAgbGV0IGxpc3QgPSBwcmludF9zdHJpbmcgXCIpXCIgbGlzdCBpblxuICBsZXQgbGlzdCA9XG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKGIsIGxpc3QpIHNpdGUgLT5cbiAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBsaXN0ID0gcHJpbnRfc2l0ZSBzaXRlIGxpc3QgaW5cbiAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgIChmYWxzZSwgbGlzdCkgaW50ZXJmYWNlKVxuICBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IFwiKFwiIDo6IGxpc3QgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBhZ2VudF9uYW1lIDo6IGxpc3QgaW5cbiAgbGlzdFxuXG5sZXQgcHJpbnRfc2l0ZV9ncmFwaCBhZ2VudF9saXN0IGxpc3QgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChiLCBsaXN0KSBhZ2VudCAtPlxuICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGlzdFxuICAgICAgICAgaW5cbiAgICAgICAgIHRydWUsIHByaW50X2FnZW50IGFnZW50IGxpc3QpXG4gICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgYWdlbnRfbGlzdCkpXG5cbmxldCBwcmludF9tZXRob2RfaGFuZGxlciBtaCA9XG4gIGxldCB1bmNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBIdG1sLnBcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfY2F1Z2h0IHgpO1xuICAgICAgICBdXG4gICAgICA6OiBsKVxuICAgIGNhdWdodFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpO1xuICAgICAgICAgICBdKVxuICAgICAgIHVuY2F1Z2h0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbigqIHRvZG8gYWRkIGJ1dHRvbiB0byBzd2l0Y2ggb24vb2ZmIHRoZSBkaXNwbGF5IG9mIHRoZSBpbmZvcm1hdGlvbiBvZiBlYWNoIGFic3RyYWN0IGRvbWFpblxuICAgbGV0IG5vbl9yZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCByZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCBzaXRlX2FjY3Jvc3MgPSByZWYgdHJ1ZVxuICAgbGV0IHBhcmFsbGVsX2JvbmQgPSByZWYgdHJ1ZVxuKilcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgY29uc3RyYWludHNfZGl2ID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9jb25zdHJhaW50c19saXN0XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGNvbnN0cmFpbnRzIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFuZWxzIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKm1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHBhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+KilcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxlbW1hIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoeXAgPSBQdWJsaWNfZGF0YS5nZXRfaHlwIGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jbHVzaW9uID0gUHVibGljX2RhdGEuZ2V0X3JlZmluZW1lbnQgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbmNsdXNpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyBzaXRlX2dyYXBoIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBzaXRlX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiIF1cIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGJvb2wsIGxpc3QpIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgdiBcIiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggYSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBjb25jbHVzaW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiWyBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgID0+ICBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGh5cCBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSAoTGlzdC5yZXYgYilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgYSBdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgICAgICA6OiBwYW5lbHMpXG4gICAgICAgICAgICAgICAgICBbXSBjb25zdHJhaW50cylcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiS2FTYSBoYXMgZmFpbGVkXCIgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kYW5nZXJcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIG91dCBdKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIGNvbnN0cmFpbnRzX2Rpdik7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGNvbnRhY3RfbWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfY29udGFjdF9tYXAgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogY29udGFjdF9tYXAgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJDb250YWN0TWFwXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG50eXBlIGhhbmRsZXIgPSB7IHN1ZmZpeDogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBleHBvcnQ6IHN0cmluZyAtPiB1bml0IH1cblxudHlwZSBjb25maWd1cmF0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBoYW5kbGVyczogaGFuZGxlciBsaXN0O1xuICBzaG93OiBib29sIFJlYWN0LnNpZ25hbDtcbn1cblxubGV0IGV4cG9ydF9mb3JtYXRfaWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX3NlbGVjdFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9maWxlbmFtZV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZmlsZW5hbWVcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfYnV0dG9uX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19idXR0b25cIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZGF0YV9sYWJlbCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfbGFiZWxcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZm9ybV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZm9ybVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgPVxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgXVxuICAgICAgKClcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2J1dHRvbl9pZCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXAgbm90IGNvbmZpZ3VyYXRpb24uc2hvdyk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImV4cG9ydFwiIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXRzX3NlbGVjdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gaGFuZGxlciAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBoYW5kbGVyLmxhYmVsIHt8XCI+fH0gKEh0bWwuY2RhdGEgaGFuZGxlci5sYWJlbClcbiAgICAgICAgICAgIHt8PC9vcHRpb24+fH1dKVxuICAgICAgY29uZmlndXJhdGlvbi5oYW5kbGVyc1xuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH1cbiAgICAgIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fFwiPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9mb3JtYXRzX3NlbGVjdFxuICAgICAge3xcbiAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgPGxhYmVsIGZvcj18fVxuICAgICAgKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKVxuICAgICAge3w+PC9sYWJlbD5cbiAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9maWxlbmFtZSBdXG4gICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XVxuICBAIFsgZXhwb3J0X2J1dHRvbiBdXG5cbmxldCBjb250ZW50IGNvbmZpZ3VyYXRpb24gPVxuICBIdG1sLmZvcm1cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZm9ybV9pZCBjb25maWd1cmF0aW9uKTsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWlubGluZVwiIF07XG4gICAgICBdXG4gICAgKGlubGluZV9jb250ZW50IGNvbmZpZ3VyYXRpb24pXG5cbmxldCBvbmxvYWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfYnV0dG9uIDogRG9tX2h0bWwuYnV0dG9uRWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0IDogRG9tX2h0bWwuc2VsZWN0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSA6IHVuaXQgPVxuICAgIGxldCBpc19kaXNhYmxlZCA6IGJvb2wgSnMudCA9XG4gICAgICBKcy5ib29sXG4gICAgICAgICgobm90IChSZWFjdC5TLnZhbHVlIGNvbmZpZ3VyYXRpb24uc2hvdykpXG4gICAgICAgIHx8IGV4cG9ydF9maWxlbmFtZSMjLnZhbHVlIyN0cmltIyMubGVuZ3RoID0gMClcbiAgICBpblxuICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b24jIy5kaXNhYmxlZCA6PSBpc19kaXNhYmxlZCBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gIGxldCAoKSA9XG4gICAgZXhwb3J0X2ZpbGVuYW1lIyMub25pbnB1dCA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfYnV0dG9uIyMub25jbGljayA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgaGFuZGxlciA6IGhhbmRsZXIgPVxuICAgICAgICAgICAgTGlzdC5udGggY29uZmlndXJhdGlvbi5oYW5kbGVycyBleHBvcnRfZm9ybWF0IyMuc2VsZWN0ZWRJbmRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpbGVuYW1lIGRlZmF1bHQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IHJvb3QgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUgaW5cbiAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyByb290ICcuJyB0aGVuXG4gICAgICAgICAgICAgIHJvb3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcm9vdCBeIFwiLlwiIF4gZGVmYXVsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaGFuZGxlci5leHBvcnQgKGZpbGVuYW1lIGhhbmRsZXIuc3VmZml4KSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IGV4cG9ydF9zdmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInN2Z1wiO1xuICAgIGxhYmVsID0gXCJzdmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFNWRyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfcG5nID9zdmdfc3R5bGVfaWQgfihzdmdfZGl2X2lkIDogc3RyaW5nKSAoKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJwbmdcIjtcbiAgICBsYWJlbCA9IFwicG5nXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgQ29tbW9uLnBsb3RQTkcgP3Bsb3RTdHlsZUlkOnN2Z19zdHlsZV9pZCBzdmdfZGl2X2lkIGZpbGVuYW1lIGZpbGVuYW1lKTtcbiAgfVxuXG5sZXQgZXhwb3J0X2pzb24gfihzZXJpYWxpemVfanNvbiA6IHVuaXQgLT4gc3RyaW5nKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJqc29uXCI7XG4gICAgbGFiZWwgPSBcImpzb25cIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoc2VyaWFsaXplX2pzb24gKCkpIGluXG4gICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZGlzcGxheV9pZCA9IFwiY29udGFjdC1tYXAtZGlzcGxheVwiXG5sZXQgZXhwb3J0X2lkID0gXCJjb250YWN0LWV4cG9ydFwiXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIHRydWVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiB0cnVlXG5sZXQgYWNjdXJhY3ksIHNldF9hY2N1cmFjeSA9IFJlYWN0LlMuY3JlYXRlIChTb21lIFB1YmxpY19kYXRhLkxvdylcblxubGV0IGV4dHJhY3RfY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcImFjY3VyYWN5XCIsIGFjYyk7IChcIm1hcFwiLCBjb250YWN0KSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJtYXBcIiwgY29udGFjdCk7IChcImFjY3VyYWN5XCIsIGFjYykgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgXyAtPiBmYWlsd2l0aCBcIldyb25nIHVnbHkgY29udGFjdF9tYXAgZXh0cmFjdG9yXCJcblxubGV0IGNvbnRhY3RtYXAgOiBKc19jb250YWN0LmNvbnRhY3RfbWFwIEpzLnQgPVxuICBKc19jb250YWN0LmNyZWF0ZV9jb250YWN0X21hcCBkaXNwbGF5X2lkIFN0YXRlX3NldHRpbmdzLmFnZW50X2NvbG9yaW5nXG5cbmxldCBjb250YWN0X21hcF90ZXh0ID1cbiAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSBOb25lIGFjY3VyYWN5IFwibnVsbFwiXG4gICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSBhY2MgLT5cbiAgICAgIG1hbmFnZXIjZ2V0X2NvbnRhY3RfbWFwIGFjY1xuICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IFN0YXRlX2Vycm9yLmFkZF9lcnJvciBcInRhYl9jb250YWN0X21hcFwiIG1oIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGNvbnRhY3RtYXAjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICBcIm51bGxcIilcbiAgICAgICAgICAgIH5vazooZnVuIGNvbnRhY3RfanNvbiAtPlxuICAgICAgICAgICAgICBsZXQgXywgbWFwX2pzb24gPSBleHRyYWN0X2NvbnRhY3RfbWFwIGNvbnRhY3RfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFlvanNvbi5CYXNpYy50b19zdHJpbmcgbWFwX2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdG1hcCMjc2V0RGF0YSAoSnMuc3RyaW5nIGRhdGEpIGluXG4gICAgICAgICAgICAgIGRhdGEpKVxuXG5sZXQgY29uZmlndXJhdGlvbiA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFJlYWN0LlMudmFsdWUgY29udGFjdF9tYXBfdGV4dCk7XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiY29udGFjdF9tYXAtYWNjdXJhY3lcIlxuXG5sZXQgYWNjdXJhY3lfY2hvb3NlciA9XG4gIGxldCBvcHRpb25fZ2VuIHggPVxuICAgIEh0bWwub3B0aW9uXG4gICAgICB+YTpcbiAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICBpZiBSZWFjdC5TLnZhbHVlIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbHMpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF07XG4gICAgICAgICAgSHRtbC5hX2lkIFwiY29udGFjdF9tYXBfYWNjdXJhY3lfZm9ybVwiO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGNvbmZpZ3VyYXRpb247XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGNvbmZpZ3VyYXRpb24gaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBhY2N1cmFjeV9jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfYWNjdXJhY3kgKFB1YmxpY19kYXRhLmFjY3VyYWN5X29mX3N0cmluZyB2YSkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb250YWN0X21hcFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9IGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIGNvbnRhY3RtYXAjI3JlZHJhd1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBncmFwaF9sb2dnZXIgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfZ3JhcGhfbG9nZ2VyIChpZCA6IHN0cmluZykgKG9uX2NsaWNrIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgOlxuICAgIGdyYXBoX2xvZ2dlciBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIkdyYXBoTG9nZ2VyXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBvbl9jbGljayB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtb2RlbF9ncmFwaCA9IHsgZndkOiBpbnQgb3B0aW9uOyBid2Q6IGludCBvcHRpb247IHRvdGFsOiBpbnQgfVxuXG50eXBlIGluZmx1ZW5jZV9zcGhlcmUgPSB7XG4gIHBvc2l0aXZlX29uOlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIG5lZ2F0aXZlX29uOlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIHBvc2l0aXZlX2J5OlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIG5lZ2F0aXZlX2J5OlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG59XG5cbmxldCBlbXB0eV9zcGhlcmUgPVxuICB7IHBvc2l0aXZlX29uID0gW107IHBvc2l0aXZlX2J5ID0gW107IG5lZ2F0aXZlX29uID0gW107IG5lZ2F0aXZlX2J5ID0gW10gfVxuXG50eXBlIG1vZGVsX3JlbmRlcmluZyA9IERyYXdHcmFwaCBvZiBtb2RlbF9ncmFwaCB8IERyYXdUYWJ1bGFyIG9mIHVuaXRcblxudHlwZSBtb2RlbCA9IHtcbiAgcmVuZGVyaW5nOiBtb2RlbF9yZW5kZXJpbmc7XG4gIGFjY3VyYWN5OiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbCBvcHRpb247XG4gIG9yaWdpbjogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb247XG4gIG9yaWdpbl9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgdHJhY2tfY3Vyc29yLCBzZXRfdHJhY2tfY3Vyc29yID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcblxubGV0IGR1bW15X21vZGVsID1cbiAge1xuICAgIHJlbmRlcmluZyA9IERyYXdUYWJ1bGFyICgpO1xuICAgIGFjY3VyYWN5ID0gU29tZSBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgb3JpZ2luID0gTm9uZTtcbiAgICBvcmlnaW5fbGFiZWwgPSBOb25lO1xuICB9XG5cbmxldCBtb2RlbCwgc2V0X21vZGVsID0gUmVhY3QuUy5jcmVhdGUgZHVtbXlfbW9kZWxcbmxldCB0b3RhbF9pbnB1dF9pZCA9IFwidG90YWxfaW5wdXRcIlxubGV0IGZ3ZF9pbnB1dF9pZCA9IFwiZndkX2lucHV0XCJcbmxldCBid2RfaW5wdXRfaWQgPSBcImJ3ZF9pbnB1dFwiXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgUHVibGljX2RhdGEuUnVsZSByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsID0gXCJcIiB0aGVuXG4gICAgICByLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsXG4gIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICBpZiByLlB1YmxpY19kYXRhLnZhcl9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfbGFiZWxcblxubGV0IHVwZGF0ZV9tb2RlbF9ncmFwaCBmID1cbiAgbGV0IG0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIG0ucmVuZGVyaW5nIHdpdGhcbiAgfCBEcmF3VGFidWxhciBfIC0+ICgpXG4gIHwgRHJhd0dyYXBoIGcgLT4gc2V0X21vZGVsIHsgbSB3aXRoIHJlbmRlcmluZyA9IERyYXdHcmFwaCAoZiBnKSB9XG5cbmxldCB1cGRhdGVfbW9kZWwgZiA9IHNldF9tb2RlbCAoZiAoUmVhY3QuUy52YWx1ZSBtb2RlbCkpXG5sZXQgZGlzcGxheV9pZCA9IFwiaW5mbHVlbmNlX21hcF9kaXNwbGF5XCJcblxubGV0IGluZmx1ZW5jZW1hcCA9XG4gIEpzX2dyYXBobG9nZ2VyLmNyZWF0ZV9ncmFwaF9sb2dnZXIgZGlzcGxheV9pZCAoZnVuIHggLT5cbiAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyAoSnMudG9fc3RyaW5nIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIFN1YnBhbmVsX2VkaXRvci5zZXRfbW92ZV9jdXJzb3JcbiAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcmlnaW4gPSBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKSBpblxuICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKVxuXG5sZXQgdG90YWxfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b3RhbF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX3ZhbHVlIFwiMVwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGZ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBid2RfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBid2RfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgbmV4dF9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJOZXh0XCIgXVxuXG5sZXQgcHJldl9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJQcmV2aW91c1wiIF1cblxubGV0IHJlY2VudGVyID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJSZXNldFwiIF1cblxubGV0IHRyYWNrX2N1cnNvcl9zd2l0Y2ggPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgKGZ1biB0YyAtPlxuICAgICAgICAgICAgICAgXCJmb3JtLWNvbnRyb2xcIiA6OiBcImJ0blwiIDo6IFwiYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgIChpZiB0YyB0aGVuXG4gICAgICAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFtdKSlcbiAgICAgICAgICAgICB0cmFja19jdXJzb3IpO1xuICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHNldF90cmFja19jdXJzb3IgKG5vdCAoUmVhY3QuUy52YWx1ZSB0cmFja19jdXJzb3IpKSBpblxuICAgICAgICAgICAgdHJ1ZSk7XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlRyYWNrIGN1cnNvclwiIF1cblxubGV0IGV4cG9ydF9jb25maWcgPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IFwiaW5mbHVlbmNlLWV4cG9ydFwiO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICAgICAgICBMd3QuaWdub3JlX3Jlc3VsdFxuICAgICAgICAgICAgICAgICggU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfZXhwb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gaW5mbHVlbmNlc19zdHJpbmcgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGluZmx1ZW5jZXNfc3RyaW5nIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgICAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQgKSk7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgfVxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXJfaWQgPSBcImluZmx1ZW5jZS1yZW5kZXJpbmdcIlxuXG5sZXQgcmVuZGVyaW5nX2Nob29zZXIgPVxuICBsZXQgeyByZW5kZXJpbmc7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHJlbmRlcmluZ19jaG9vc2VyX2lkIF1cbiAgICBbXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJ0YWJ1bGFyXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiVGFidWxhclwiKTtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcImdyYXBoXCIgXSlcbiAgICAgICAgKEh0bWwudHh0IFwiR3JhcGhcIik7XG4gICAgXVxuXG5sZXQgYWNjdXJhY3lfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgYWNjdXJhY3kgPSBTb21lIHggdGhlblxuICAgICAgICAgICAgIEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpIF0pXG4gICAgICAoSHRtbC50eHQgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSlcbiAgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIGFjY3VyYWN5X2Nob29zZXJfaWQgXVxuICAgIChMaXN0Lm1hcCBvcHRpb25fZ2VuIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSA9XG4gIG1hdGNoIG9yaWdpbl9zaG9ydF9vcHQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gci5QdWJsaWNfZGF0YS5ydWxlX2lkID0gMFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gZmFsc2UpXG4gIHwgU29tZSBvcmlnaW4gLT5cbiAgICAobWF0Y2ggb3JpZ2luLCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQsIFB1YmxpY19kYXRhLlJ1bGUgYSAtPiBhLlB1YmxpY19kYXRhLnJ1bGVfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkLCBQdWJsaWNfZGF0YS5WYXIgYSAtPiBhLlB1YmxpY19kYXRhLnZhcl9pZCA9IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgXywgUHVibGljX2RhdGEuUnVsZSBfXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIF8sIFB1YmxpY19kYXRhLlZhciBfIC0+XG4gICAgICBmYWxzZSlcblxubGV0IGpzb25fdG9fZ3JhcGggbG9nZ2VyIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG9yaWdpbl9zaG9ydF9vcHQgPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5cbiAgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJcIiBpblxuICBsZXQgbm9kZXMgPSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzIGluXG4gIGxldCBkaXJlY3RpdmVzX29mX25vZGUgbm9kZSA9XG4gICAgbGV0IGpzb24gPSBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gbm9kZSBpblxuICAgIGxldCBsYWJlbCA9IGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUgaW5cbiAgICBtYXRjaCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gXCIgXCIgXiByLlB1YmxpY19kYXRhLnJ1bGVfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcucnVsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcucnVsZV9zaGFwZTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBbIHBvcyBdO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb247XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBjb250ZXh0dWFsX2hlbHA7XG4gICAgICBdXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgICAgbGV0IHBvcyA9IHIuUHVibGljX2RhdGEudmFyX3Bvc2l0aW9uIGluXG4gICAgICBsZXQgY29udGV4dHVhbF9oZWxwID0gTG9jLnRvX3N0cmluZyBwb3MgXiByLlB1YmxpY19kYXRhLnZhcl9hc3QgaW5cbiAgICAgIGxldCBmaWxsY29sb3IgPVxuICAgICAgICBpZiBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlIHRoZW5cbiAgICAgICAgICAhQ29uZmlnLmNlbnRlcl9jb2xvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgIUNvbmZpZy52YXJpYWJsZV9jb2xvclxuICAgICAgaW5cbiAgICAgIFtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWw7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICBpblxuICBsZXQgbWF4X3J1bGVfaWQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGJpZ2dlc3RfaWQgbiAtPlxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT4gbWF4IGJpZ2dlc3RfaWQgKDEgKyByLlB1YmxpY19kYXRhLnJ1bGVfaWQpXG4gICAgICAgIHwgUHVibGljX2RhdGEuVmFyIF8gLT4gYmlnZ2VzdF9pZClcbiAgICAgICgtMSkgbm9kZXNcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlX2lkIG5vZGVfaWQgPVxuICAgIG1hdGNoIG5vZGVfaWQgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSBpZCAtPiBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIGlkIC0+IGlkICsgbWF4X3J1bGVfaWRcbiAgaW5cbiAgbGV0IGdldF9pZF9vZl9ub2RlIG5vZGUgPVxuICAgIGdldF9pZF9vZl9ub2RlX2lkIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBub2RlIC0+XG4gICAgICAgIGxldCBkaXJlY3RpdmVzID0gZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgaW5cbiAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9ub2RlIGxvZ2dlciB+ZGlyZWN0aXZlc1xuICAgICAgICAgIChzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZSBub2RlKSkpXG4gICAgICBub2Rlc1xuICBpblxuICBsZXQgcHJpbnRfbWFwcyA/KGRpcmVjdGl2ZXMgPSBbXSkgbG9nZ2VyIG1hcCA9XG4gICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAoZnVuIHNvdXJjZSBtYXAgLT5cbiAgICAgICAgbGV0IHNvdXJjZV9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHNvdXJjZSkgaW5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5pdGVyXG4gICAgICAgICAgKGZ1biB0YXJnZXQgbGFiZWxfbGlzdCAtPlxuICAgICAgICAgICAgbGV0IHRhcmdldF9pZCA9IHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlX2lkIHRhcmdldCkgaW5cbiAgICAgICAgICAgICgqbGV0IGxhYmVsX3N0cmluZyA9IFwidG9kb1wiXG4gICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgIGxldCBsYWJlbF9zdHJpbmcgPSBQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfbGFiZWxfbGlzdCBsYWJlbF9saXN0IGluXG4gICAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsX3N0cmluZyA6OiBkaXJlY3RpdmVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciB+ZGlyZWN0aXZlcyBzb3VyY2VfaWQgdGFyZ2V0X2lkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgbWFwKVxuICAgICAgbWFwXG4gIGluXG4gIGxldCBkaXJlY3RpdmVzID1cbiAgICBbXG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfbWFwcyB+ZGlyZWN0aXZlcyBsb2dnZXIgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy5pbmhpYml0aW9uX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcuaW5oaWJpdGlvbl9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9mb290IGxvZ2dlciBpblxuICAoKVxuXG5sZXQgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uIChfLCBfLCBfLCBfLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXApID1cbiAgbGV0IG5hbWVyID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgZSAtPlxuICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmFkZFxuICAgICAgICAgIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBlKVxuICAgICAgICAgIGUgYWNjKVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5lbXB0eSBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5vZGVzXG4gIGluXG4gIGxldCBvcmlnaW5faWRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIG1hdGNoIG9yaWdpbl9pZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlfc3BoZXJlXG4gIHwgU29tZSBvcmlnaW5faWQgLT5cbiAgICBsZXQgcG9zaXRpdmVfb24sIHBvc2l0aXZlX2J5ID1cbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZFxuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZCAoZnVuIGRzdCBkYXRhICgob24sIGJ5KSBhcyBhY2MpIC0+XG4gICAgICAgICAgICAgIGlmIHNyYyA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIGRzdCBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2LCBkYXRhKSA6OiBvbiwgYnlcbiAgICAgICAgICAgICAgKSBlbHNlIGlmIGRzdCA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIHNyYyBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IG9uLCAodiwgZGF0YSkgOjogYnlcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5wb3NpdGl2ZSAoW10sIFtdKVxuICAgIGluXG4gICAgbGV0IG5lZ2F0aXZlX29uLCBuZWdhdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubmVnYXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfVxuXG5sZXQgcG9wX2NlbGwgPSBmdW5jdGlvblxuICB8IFtdIC0+IEh0bWwudGQgW10sIFtdXG4gIHwgKChub2RlLCBfbWFwcGluZ3MpLCBwb3NpdGl2ZSkgOjogdCAtPlxuICAgICggSHRtbC50ZFxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgU3VicGFuZWxfZWRpdG9yLnNldF9tb3ZlX2N1cnNvclxuICAgICAgICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHRydWUpO1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoaWYgcG9zaXRpdmUgdGhlblxuICAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBcImRhbmdlclwiKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBdXG4gICAgICAgIFsgSHRtbC5jZGF0YSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgXSxcbiAgICAgIHQgKVxuXG5sZXQgcmVjIGZpbGxfdGFibGUgYWNjIGJ5IG9uID1cbiAgaWYgb24gPSBbXSAmJiBieSA9IFtdIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSAoXG4gICAgbGV0IGIsIGJ5JyA9IHBvcF9jZWxsIGJ5IGluXG4gICAgbGV0IG8sIG9uJyA9IHBvcF9jZWxsIG9uIGluXG4gICAgbGV0IGxpbmUgPSBIdG1sLnRyIFsgYjsgbyBdIGluXG4gICAgZmlsbF90YWJsZSAobGluZSA6OiBhY2MpIGJ5JyBvbidcbiAgKVxuXG5sZXQgZHJhd190YWJsZSBvcmlnaW5fbGFiZWxcbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH0gPVxuICBsZXQgYnkgPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfYnlcbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX2J5KVxuICBpblxuICBsZXQgb24gPVxuICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZFxuICAgICAgKGZ1biB4IC0+IHgsIGZhbHNlKVxuICAgICAgbmVnYXRpdmVfb25cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgsIHRydWUpIHBvc2l0aXZlX29uKVxuICBpblxuICBsZXQgb3V0cyA9IGZpbGxfdGFibGUgW10gYnkgb24gaW5cbiAgSHRtbC50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIiBdIF1cbiAgICB+dGhlYWQ6XG4gICAgICAoSHRtbC50aGVhZFxuICAgICAgICAgW1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aFxuICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jb2xzcGFuIDIgXVxuICAgICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgKE9wdGlvbl91dGlsLnVuc29tZSBcIm9yaWdpblwiIG9yaWdpbl9sYWJlbCkgXTtcbiAgICAgICAgICAgICBdO1xuICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50aCBbIEh0bWwuY2RhdGEgXCJpcyBpbmZsdWVuY2VkIGJ5XCIgXTtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaW5mbHVlbmNlc1wiIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgIF0pXG4gICAgWyBIdG1sLnRib2R5IG91dHMgXVxuXG5sZXQgaW5mbHVlbmNlX3NwaGVyZSA9XG4gIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgZHVtbXlfbW9kZWwgbW9kZWxcbiAgICAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKVxuICAgIChmdW4gbWFuYWdlciB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZDpOb25lID9id2Q6Tm9uZSA/b3JpZ2luIH50b3RhbDoxXG4gICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCB0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb25cbiAgICAgIHwgRHJhd0dyYXBoIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZW1wdHlfc3BoZXJlKSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgYWNjdXJhY3lfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciByZW5kZXJpbmdfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJSZW5kZXJpbmdcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNFwiIF0gXSBbIHJlbmRlcmluZ19jaG9vc2VyIF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2xhYmVsX2ZvciBhY2N1cmFjeV9jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkFjY3VyYWN5XCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBhY2N1cmFjeV9jaG9vc2VyIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXTsgSHRtbC5hX2xhYmVsX2ZvciB0b3RhbF9pbnB1dF9pZCBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJOYXZpZ2F0ZVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcHJldl9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgbmV4dF9ub2RlIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgcmVjZW50ZXIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0cmFja19jdXJzb3Jfc3dpdGNoIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGdyYXBoX2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTNcIiBdIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIlNpemUgUmFkaXVzXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyB0b3RhbF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIiBdIF0gWyBIdG1sLnR4dCBcImZ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgZndkX2lucHV0IF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIEh0bWwudHh0IFwiYndkXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBid2RfaW5wdXQgXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBbXG4gICAgYWNjdXJhY3lfZm9ybTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gWyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IFtdKVxuICAgICAgICAgICAgICAgbW9kZWwpO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2hpZGRlbiAoKSlcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICBtb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgZ3JhcGhfZm9ybTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfaWQgZGlzcGxheV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIiBdIF0gW107XG4gICAgICBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgKGZ1biB7IHJlbmRlcmluZzsgb3JpZ2luX2xhYmVsOyBfIH0gc3BoZXJlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gW11cbiAgICAgICAgICAgICAgfCBEcmF3VGFidWxhciAoKSAtPlxuICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGQgc3BoZXJlXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBzcGhlcmUgLT4gWyBkcmF3X3RhYmxlIG9yaWdpbl9sYWJlbCBzcGhlcmUgXSlcbiAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IpKVxuICAgICAgICAgICAgbW9kZWwgaW5mbHVlbmNlX3NwaGVyZSkpO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBleHBvcnRfY29uZmlnO1xuICBdXG5cbmxldCBuZWl0aGVyX2djX21lID1cbiAgUmVhY3QuUy5sMlxuICAgIChmdW4gXyB7IHJlbmRlcmluZzsgYWNjdXJhY3k7IG9yaWdpbjsgb3JpZ2luX2xhYmVsID0gXyB9IC0+XG4gICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgfCBEcmF3R3JhcGggeyBmd2Q7IGJ3ZDsgdG90YWwgfSAtPlxuICAgICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcImluZmx1ZW5jZV9tYXBcIlxuICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5XG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mbHVlbmNlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1vZGU6TG9nZ2Vycy5Kc19HcmFwaCBmbXRcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlcl9ncmFwaCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ganNvbl90b19ncmFwaCBsb2dnZXJfZ3JhcGggaW5mbHVlbmNlcyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXJfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoX2pzb24gPSBHcmFwaF9qc29uLnRvX2pzb24gZ3JhcGggaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2VfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZW1hcCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyBncmFwaF9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluZmx1ZW5jZW1hcCMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIGUpKSkpXG4gICAgKFJlYWN0LlMub24gfmVxOlN0YXRlX3Byb2plY3QubW9kZWxfZXF1YWwgdGFiX2lzX2FjdGl2ZVxuICAgICAgIFN0YXRlX3Byb2plY3QuZHVtbXlfbW9kZWwgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgICBtb2RlbFxuXG5sZXQgbm9yX2djX21lID1cbiAgU3RhdGVfZmlsZS53aXRoX2N1cnJlbnRfcG9zXG4gICAgfm9uOihSZWFjdC5TLkJvb2wuKCAmJiApIHRhYl9pc19hY3RpdmUgdHJhY2tfY3Vyc29yKVxuICAgIChmdW4gZmlsZW5hbWUgY3Vyc29yX3BvcyAtPlxuICAgICAgU29tZVxuICAgICAgICAoU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgY3Vyc29yX3Bvc1xuICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW4nIC0+XG4gICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luID0gb3JpZ2luJzsgb3JpZ2luX2xhYmVsID0gTm9uZSB9KSkpKSlcbiAgICAoTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxubGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IGRvbnRfZ2NfbWUgOj0gWyBuZWl0aGVyX2djX21lOyBub3JfZ2NfbWUgXSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBleHBvcnRfY29uZmlnIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgcmVuZGVyaW5nX2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbSB3aXRoXG4gICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgIChpZiBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSA9IFwiZ3JhcGhcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3R3JhcGggeyBmd2QgPSBOb25lOyBid2QgPSBOb25lOyB0b3RhbCA9IDEgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdUYWJ1bGFyICgpKTtcbiAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IGFjY3VyYWN5ID1cbiAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgKEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIGFjY3VyYWN5IH0pIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgdG90YWxfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIHRvdGFsID0gaW50X29mX3N0cmluZyB2YSB9KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGZ3ZF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IGZ3ZCA9XG4gICAgICAgICAgICAgICBpZiB2YSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFNvbWUgKGludF9vZl9zdHJpbmcgdmEpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIGZ3ZCB9KSBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBid2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBid2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBid2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHJlY2VudGVyKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3JlY2VudGVyXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbml0aWFsX25vZGVcbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIG5leHRfbm9kZSkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gXyBfIC0+XG4gICAgICAgICAgIGxldCB7IG9yaWdpbjsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfbmV4dF9ub2RlXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9uZXh0X25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBwcmV2X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3ByZXZfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfcHJldmlvdXNfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2aW5mbHVlbmNlc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHNpdGUgYSA9IFsgYSwgTm9uZSwgU29tZSAoUHVibGljX2RhdGEuQm91bmRfdG8gMSksIE5vbmUgXVxuXG5sZXQgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QgPVxuICBVdGlsaXR5LnByaW50X25ld2xpbmUgKFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBbIGEsIHNpdGUgYjsgYywgc2l0ZSBkIF0gbGlzdClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgc2NjID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9wb3RlbnRpYWxfcG9seW1lcnMgKFNvbWUgUHVibGljX2RhdGEuSGlnaClcbiAgICAgICAgICAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAoKlRPRE86IG1ha2UgdGhlc2Ugb3B0aW9ucyB0dW5hYmxlICopXG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIChfLCBfLCBzY2MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNjYyA9IExpc3QucmV2X21hcCBMaXN0LnJldiBzY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgIGlmIHNjYyA9IFtdIHx8IHNjYyA9IFsgW10gXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgXCJUaGUgc2l6ZSBvZiBiaW9tb2xlY3VsYXIgY29tcG91bmRzIGlzIHVuaWZvcm1seSBib3VuZGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBsaXN0X2VkZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKChhLCBiKSwgKGMsIGQpKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCBsaXN0X2VkZ2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgW10gc2NjXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBmb2xsb3dpbmcgYm9uZHMgbWF5IGZvcm0gYXJiaXRyYXJ5IGxvbmcgY2hhaW5zIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRzOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFsgSHRtbC5wIG91dHB1dCBdKVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPlxuICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIG1oKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCI7IFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHNjYyk7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwb2x5bWVyc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwb2x5bWVyc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCByaWdodHN1YnBhbmVsX2lkIDogc3RyaW5nID0gXCJyaWdodHN1YnBhbmVsXCJcblxubGV0IHJpZ2h0c3VicGFuZWwgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIGVkaXRvcl9mdWxsIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcImhpZGRlblwiIF1cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC02XCI7IFwiaGlkZGVuLXhzXCI7IFwiaGlkZGVuLXNtXCI7IFwiZmxleC1jb250ZW50XCIgXSkpKTtcbiAgICAgIF1cbiAgICBbXG4gICAgICBVaV9jb21tb24ubmF2dGFicyBcInN1Ym5hdnRhYlwiXG4gICAgICAgIFtcbiAgICAgICAgICBcImNvbnRhY3RfbWFwXCIsIE5vbmUsIFRhYl9jb250YWN0X21hcC5uYXZsaSAoKTtcbiAgICAgICAgICBcImluZmx1ZW5jZXNcIiwgTm9uZSwgVGFiX2luZmx1ZW5jZXMubmF2bGkgKCk7XG4gICAgICAgICAgXCJjb25zdHJhaW50c1wiLCBOb25lLCBUYWJfY29uc3RyYWludHMubmF2bGkgKCk7XG4gICAgICAgICAgXCJwb2x5bWVyc1wiLCBOb25lLCBUYWJfcG9seW1lcnMubmF2bGkgKCk7XG4gICAgICAgIF07XG4gICAgICBVaV9jb21tb24ubmF2Y29udGVudCB+aWQ6cmlnaHRzdWJwYW5lbF9pZCBbXVxuICAgICAgICBbXG4gICAgICAgICAgXCJjb250YWN0X21hcFwiLCBbXSwgVGFiX2NvbnRhY3RfbWFwLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJpbmZsdWVuY2VzXCIsIFtdLCBUYWJfaW5mbHVlbmNlcy5jb250ZW50ICgpO1xuICAgICAgICAgIFwiY29uc3RyYWludHNcIiwgW10sIFRhYl9jb25zdHJhaW50cy5jb250ZW50ICgpO1xuICAgICAgICAgIFwicG9seW1lcnNcIiwgW10sIFRhYl9wb2x5bWVycy5jb250ZW50ICgpO1xuICAgICAgICBdO1xuICAgIF1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAgIChpZiBlZGl0b3JfZnVsbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC0xMlwiOyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtNlwiOyBcImZsZXgtY29udGVudFwiIF0pKSk7XG4gICAgICAgIF1cbiAgICAgIFsgU3VicGFuZWxfZWRpdG9yLmNvbnRlbnQgKCkgXTtcbiAgICByaWdodHN1YnBhbmVsICgpO1xuICBdXG5cbmxldCBjaGlsZHNfaGlkZSBiID1cbiAgaWYgYiB0aGVuIChcbiAgICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAucGFyZW50X2hpZGUgKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5wYXJlbnRfaGlkZSAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5wYXJlbnRfaGlkZSAoKSBpblxuICAgIFRhYl9wb2x5bWVycy5wYXJlbnRfaGlkZSAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMucGFyZW50X3Nob3duICgpIGluXG4gICAgVGFiX3BvbHltZXJzLnBhcmVudF9zaG93biAoKVxuICApXG5cbmxldCBpbml0X2RlYWRfcnVsZXMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfcnVsZVwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9kZWFkX3J1bGVzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBydWxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlYWQgcnVsZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBydWxlLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfZGVhZF9hZ2VudHMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfYWdlbnRcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBhZ2VudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIGFnZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyByYW5nZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBTb21lIHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9wb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChydWxlLCBjb250ZXh0X2xpc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBoaW50OiByZXZlcnNpYmxlIHJ1bGUgYXJlIGFsd2F5cyB3ZWFrbHkgcmV2ZXJzaWJsZSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGx1cmFsLCBza2lwLCB0YWIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY29udGV4dF9saXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBcIlwiLCBcIlwiLCBcIiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4gXCJzXCIsIFwiXFxuXCIsIFwiXFx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJ1bGUgJXMgbWF5IGluZHVjZSBub24gd2Vha2x5IHJldmVyc2libGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQlczolcyVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgJ1wiIF4gcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIF4gXCInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IHJ1bGUuUHVibGljX2RhdGEucnVsZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsIHNraXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIiBza2lwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGZtdCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlcyVzIC0+ICVzIFwiIHRhYiBhIGIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHRvIGRvLCBhZGQgdGhlIHBvdGVudGlhbCBjb250ZXh0cyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJ1bGUuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gU3VicGFuZWxfZWRpdG9yLm9ubG9hZCAoKSBpblxuICBsZXQgXyA9IGluaXRfZGVhZF9ydWxlcyAoKSBpblxuICBsZXQgXyA9IGluaXRfZGVhZF9hZ2VudHMgKCkgaW5cbiAgbGV0IF8gPSBpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9wb2x5bWVycy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBkb250X2djX21lIDo9IFsgUmVhY3QuUy5tYXAgY2hpbGRzX2hpZGUgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIF1cbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmVkaXRvclwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gY2hpbGRzX2hpZGUgdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmVkaXRvclwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+IGNoaWxkc19oaWRlIGZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gU3VicGFuZWxfZWRpdG9yLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3BvbHltZXJzLm9ucmVzaXplICgpIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGRpbl9pZCwgc2V0X2Rpbl9pZCA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcblxubGV0IGRpbl9saXN0ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gZGluX2lkcyAtPlxuICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gaWQgLT4gSHRtbC5vcHRpb24gfmE6WyBIdG1sLmFfdmFsdWUgaWQgXSAoSHRtbC50eHQgaWQpKVxuICAgICAgICAgICAgICAgICAgICBkaW5faWRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IG91dClcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ud2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluKVxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcblxubGV0IGRpbl9zZWxlY3QgPVxuICBUeXhtbF9qcy5SLkh0bWw1LnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGRpbl9saXN0XG5cbmxldCBkaW5fZGF0YSA9XG4gIFJlYWN0LlMuYmluZCAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpZ25hbCBkaW5fbGlzdCkgKGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBSZWFjdC5TLmNvbnN0IE5vbmVcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2V0X2Rpbl9pZCAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICBpblxuICAgICAgUmVhY3QuUy5iaW5kIGRpbl9pZCAoZnVuIGRpbl9pZCAtPlxuICAgICAgICAgIFJlYWN0LlMuaG9sZCBOb25lXG4gICAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZCB+b2s6KGZ1biB4IC0+IHgpIH5lcnJvcjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ud2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgT3B0aW9uLnNvbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWQpKVxuICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSlcblxubGV0IGRpbl9oZWFkZXIgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgfCBTb21lIGRpbiAtPlxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgICAgKEh0bWwudGggWyBIdG1sLnR4dCBcImFmZmVjdHNcIiBdXG4gICAgICAgICAgICAgICA6OiBBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gciBhY2MgLT4gSHRtbC50aCBbIEh0bWwudHh0IHIgXSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgIGRpbi5EYXRhLmRpbl9ydWxlcyBbXSk7XG4gICAgICAgICAgIF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW5fdGFibGUgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgfCBTb21lIGRpbiAtPlxuICAgICAgICAgICBsZXQgb3BlbiBEYXRhIGluXG4gICAgICAgICAgIGxldCBhbGwgPSBkaW4uZGluX2RhdGEuZGluX2tpbmQgPSBQcmltaXRpdmVzLlBST0JBQklMSVRZIGluXG4gICAgICAgICAgIGxldCBib2R5ID1cbiAgICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgICAgICAgICAgKGZ1biBpIGRhdGEgYWNjIC0+XG4gICAgICAgICAgICAgICAgIGlmIGFsbCB8fCBkaW4uZGluX2RhdGEuZGluX2hpdHMuKGkpID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgICAgICAgICAgKEh0bWwudGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGluLmRpbl9ydWxlcy4oaSkgXiBcIiAoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZGluLmRpbl9kYXRhLmRpbl9oaXRzLihpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gXCIgaGl0cylcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6OiBBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gdiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHYgPiAwLiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwic3VjY2Vzc1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHYgPCAwLiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiaW5mb1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9mbG9hdCB2KSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIFtdKVxuICAgICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgZGluLmRpbl9kYXRhLmRpbl9mbHV4cyBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBbIEh0bWwudGJvZHkgYm9keSBdKVxuICAgICAgIGRpbl9kYXRhKVxuXG5sZXQgZGluID1cbiAgbGV0IHRoZWFkID0gUmVhY3QuUy5jb25zdCAoVHl4bWxfanMuUi5IdG1sNS50aGVhZCBkaW5faGVhZGVyKSBpblxuICBUeXhtbF9qcy5SLkh0bWw1LnRhYmxleFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ0YWJsZVwiOyBcInRhYmxlLWNvbmRlbnNlZFwiOyBcInRhYmxlLWJvcmRlcmVkXCIgXSBdXG4gICAgfnRoZWFkIGRpbl90YWJsZVxuXG5sZXQgZXhwb3J0X2N1cnJlbnRfZGluIHRvX3N0cmluZyBtaW1lIGZpbGVuYW1lID1cbiAgbGV0IGRpbl9pZCA9IEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlIGluXG4gIFN0YXRlX3NpbXVsYXRpb24ud2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRpbiAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAodG9fc3RyaW5nIGRpbikgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZXhwb3J0X2NvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IFwiZGluLWV4cG9ydFwiO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpbiAoRGF0YS5zdHJpbmdfb2ZfZGluID9sZW46Tm9uZSkgXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpKVxuICAgICAgICAgICAgICBcInRleHQvdm5kLmdyYXBodml6XCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiaHRtbFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW5cbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIERhdGEucHJpbnRfaHRtbF9kaW4pXG4gICAgICAgICAgICAgIFwidGV4dC9odG1sXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICB9XG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZmxleF9jb250ZW50XCI7IFwidGFibGUtcmVzcG9uc2l2ZVwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmZvcm0gWyBkaW5fc2VsZWN0IF07XG4gICAgICAgIGRpbjtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGV4cG9ydF9jb25maWd1cmF0aW9uO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPlxuICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBzdGF0ZSAtPlxuICAgICAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X2RpbnMpXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMub25jaGFuZ2VcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBzZXRfZGluX2lkXG4gICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZ3VyYXRpb24gaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+IHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2RElOXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcblxubGV0IGxpbmVfY291bnQgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIGxldCBvcGVuIEFwaV90eXBlc190IGluXG4gICAgc3RhdGUuc2ltdWxhdGlvbl9pbmZvX291dHB1dC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSAoZnVuIHN0YXRlIC0+IGxpbmVfY291bnQgc3RhdGUpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHN0YXRlX2xvZyA9XG4gICAgUmVhY3QuUy5iaW5kXG4gICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpIChmdW4gXyAtPlxuICAgICAgICBSZWFjdC5TLmhvbGQgXCJcIlxuICAgICAgICAgIChMd3RfcmVhY3QuRS5mcm9tIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeC5SZXN1bHRfdXRpbC52YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPayB4IC0+IHhcbiAgICAgICAgICAgICAgICAgICB8IEVycm9yIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgXCJcXG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biBSZXN1bHRfdXRpbC57IHRleHQ7IF8gfSAtPiB0ZXh0KSBsaXN0KSlcbiAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ud2l0aF9zaW11bGF0aW9uX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9sb2dfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBcIlwiKSlcbiAgICAgICAgICAgICAgICAgICAgKCkpKSkpXG4gIGluXG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IHN0YXRlX2xvZyBdO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmxvZ1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgc2VsZWN0X2lkID0gXCJvdXRwdXQtc2VsZWN0LWlkXCJcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgY3VycmVudF9maWxlLCBzZXRfY3VycmVudF9maWxlID0gUmVhY3QuUy5jcmVhdGUgTm9uZVxuXG5sZXQgdXBkYXRlX291dHB1dHMga2V5IDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24ud2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGtleVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGxpbmVzIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHNldF9jdXJyZW50X2ZpbGUgKFNvbWUgKGtleSwgbGluZXMpKSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZmlsZV9jb3VudCBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcblxubGV0IG5hdmxpICgpID0gVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT4gZmlsZV9jb3VudCBzdGF0ZSlcbmxldCBkb250X2djX21lID0gcmVmIFtdXG5cbmxldCB4bWwgKCkgPVxuICBsZXQgc2VsZWN0IGZpbGVfbGluZV9pZHMgPVxuICAgIGxldCBsaW5lcyA9IFJlYWN0LlMudmFsdWUgY3VycmVudF9maWxlIGluXG4gICAgbGV0IGN1cnJlbnRfZmlsZV9pZCA6IHN0cmluZyA9XG4gICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzLCBsaW5lcyB3aXRoXG4gICAgICB8IFtdLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBmaWxlIDo6IF8sIE5vbmUgfCBfIDo6IF8sIFNvbWUgKGZpbGUsIF8pIC0+IGZpbGVcbiAgICBpblxuICAgIGxldCBmaWxlX29wdGlvbnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biBrZXkgLT5cbiAgICAgICAgICBIdG1sLm9wdGlvblxuICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgIChbIEh0bWwuYV92YWx1ZSBrZXkgXVxuICAgICAgICAgICAgICBAXG4gICAgICAgICAgICAgIGlmIGtleSA9IGN1cnJlbnRfZmlsZV9pZCB0aGVuXG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW10pXG4gICAgICAgICAgICAoSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSkpXG4gICAgICAgIGZpbGVfbGluZV9pZHNcbiAgICBpblxuICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGN1cnJlbnRfZmlsZV9pZCBpblxuICAgIFR5eG1sX2pzLkh0bWwuc2VsZWN0XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHNlbGVjdF9pZCBdXG4gICAgICBmaWxlX29wdGlvbnNcbiAgaW5cbiAgbGV0IGZpbGVfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibGlzdC1ncm91cC1pdGVtXCIgXSBdXG4gICAgICAobGV0IGxpc3QsIGhhbmRsZSA9IFJlYWN0aXZlRGF0YS5STGlzdC5jcmVhdGUgW10gaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgICAgZG9udF9nY19tZSA6PVxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLndoZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9saW5lX2lkcyA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0aXZlRGF0YS5STGlzdC5zZXQgaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZmlsZV9saW5lX2lkcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleSA6OiBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfb3V0cHV0cyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuaDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgc2VsZWN0IGZpbGVfbGluZV9pZHMgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgICAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICAgICAgICAgICBdXG4gICAgICAgaW5cbiAgICAgICBsaXN0KVxuICBpblxuICBsZXQgZmlsZV9jb250ZW50ID1cbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgfCBTb21lIChfLCBsaW5lcykgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QubWFwIChmdW4gbGluZSAtPiBIdG1sLnAgWyBIdG1sLnR4dCBsaW5lIF0pIGxpbmVzKVxuICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUpKTtcbiAgICBdXG4gIGluXG4gIFtcbiAgICBbJWh0bWxcbiAgICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlld1wiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrIGRpc3BsYXktaGVhZGVyXCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgIFsgZmlsZV9zZWxlY3QgXVxuICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XG4gICAgICAgIGZpbGVfY29udGVudFxuICAgICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PiB8fV07XG4gIF1cblxubGV0IHNlbGVjdF9vdXRwdXRzICgpIDogdW5pdCA9XG4gIGxldCBzZWxlY3RfZG9tID0gVWlfY29tbW9uLmlkX2RvbSBzZWxlY3RfaWQgaW5cbiAgbGV0IGZpbGVpbmRleCA9IEpzLnRvX3N0cmluZyBzZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgdXBkYXRlX291dHB1dHMgZmlsZWluZGV4XG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biB0IC0+IGZpbGVfY291bnQgdCA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZvdXRwdXRzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKEZvcm1hdC5zcHJpbnRmIFwiIyVzXCIgc2VsZWN0X2lkKSBcImNoYW5nZVwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyAoKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgKClcbigqIFRPRE9cbiAgICAgbGV0IHNlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgKChKcy5PcHQuZ2V0XG4gICAgICAgICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWRcbiAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIHNlbGVjdF9pZCkpXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSBpblxuICAgICBsZXQgKCkgPSBzZWxlY3RfZG9tIyMub25jaGFuZ2UgOj0gRG9tX2h0bWwuaGFuZGxlclxuICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyB0XG4gICAgIGluIEpzLl90cnVlKVxuICAgICBpblxuKilcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKm1vZHVsZSBBcGlUeXBlcyA9IEFwaV90eXBlc19qKilcblxuY2xhc3MgdHlwZSBvYnNlcnZhYmxlX3Bsb3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgbWFpbl9kaXZfaWQgOiBvYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYnNlcnZhYmxlUGxvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBtYWluX2Rpdl9pZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBkaXZfZGlzcGxheV9pZCA9IFwicGxvdC1tYWluX2RpdlwiXG5sZXQgZXhwb3J0X2lkID0gXCJwbG90LWV4cG9ydFwiXG5cbnR5cGUgb2Zmc2V0ID0geyBvZmZzZXRfY3VycmVudDogaW50OyBvZmZzZXRfbWF4OiBpbnQgfVxuXG5sZXQgb2Zmc2V0LCBzZXRfb2Zmc2V0ID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBvZmZzZXQgb3B0aW9uKVxubGV0IGRlZmF1bHRfcG9pbnQgPSAxMDAwXG5sZXQgcG9pbnQsIHNldF9wb2ludHMgPSBSZWFjdC5TLmNyZWF0ZSBkZWZhdWx0X3BvaW50XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHBsb3RfcmVmID0gcmVmIE5vbmVcblxubGV0IGhhc19wbG90IChzdGF0ZSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24pIDogYm9vbCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXQuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuICAgID4gMFxuXG5sZXQgZXhwb3J0X2pzb24gZmlsZW5hbWUgPVxuICBTdGF0ZV9zaW11bGF0aW9uLndoZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9wbG90IHBsb3QpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZXhwb3J0IG1pbWUgZmlsZW5hbWUgPVxuICBTdGF0ZV9zaW11bGF0aW9uLndoZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBKcy5zdHJpbmcgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjoobWltZSA9IFwidGV4dC90c3ZcIikgcGxvdClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXRfaWQgPSBcInBsb3RfcG9pbnRzX2lucHV0XCJcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9wb2ludHNfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgNTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXRfaWQgPSBcInBsb3Rfb2Zmc2V0X2lucHV0XCJcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFtdKSk7XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2lucHV0X21heFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgMClcbiAgICAgICAgICAgIHwgU29tZSBtYXhfb2Zmc2V0IC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgbWF4X29mZnNldC5vZmZzZXRfbWF4KSkpO1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9vZmZzZXRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBSYW5nZTtcbiAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwib2Zmc2V0XCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IChzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIDpcbiAgICBpbnQgPVxuICBsZXQgcGxvdF9zaXplID1cbiAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgaW5cbiAgbWF4IDAgKHBsb3Rfc2l6ZSAtIFJlYWN0LlMudmFsdWUgcG9pbnQpXG5cbmxldCB1cGRhdGVfb2Zmc2V0ICh1cGRhdGVfb2Zmc2V0X2lucHV0IDogYm9vbCkgOiB1bml0ID1cbiAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbl9tb2RlbCBpblxuICBtYXRjaCBzaW11bGF0aW9uX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNpbXVsYXRpb25faW5mbyAtPlxuICAgIGlmXG4gICAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcbiAgICB0aGVuXG4gICAgICAoKiBJZiBpdCBpcyBydW5uaW5nIG5vIHNsaWRlciBiZWNhdXNlIHVwZGF0ZSBjYXVzZXMgaml0dGVycy4gKilcbiAgICAgIHNldF9vZmZzZXQgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG9mZnNldF9tYXggPSBzaW11bGF0aW9uX2luZm9fb2Zmc2V0X21heCBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgIGxldCBvbGRfb2Zmc2V0ID0gUmVhY3QuUy52YWx1ZSBvZmZzZXQgaW5cbiAgICAgIGxldCBvZmZzZXRfY3VycmVudCA9XG4gICAgICAgIG1hdGNoIG9sZF9vZmZzZXQgd2l0aFxuICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+IG9mZnNldC5vZmZzZXRfY3VycmVudFxuICAgICAgICB8IE5vbmUgLT4gb2Zmc2V0X21heFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHVwZGF0ZV9vZmZzZXRfaW5wdXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9XG4gICAgICAgICAgICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KSkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCBvZmZzZXRfY3VycmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgICgpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19vZmZzZXQgPVxuICAgICAgICBpZiBvZmZzZXRfbWF4ID4gMCB0aGVuXG4gICAgICAgICAgU29tZSB7IG9mZnNldF9jdXJyZW50OyBvZmZzZXRfbWF4IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBzZXRfb2Zmc2V0IG5ld19vZmZzZXRcbiAgICApXG5cbmxldCBwbG90X3BhcmFtZXRlciAoKSA6IEFwaV90eXBlc19qLnBsb3RfcGFyYW1ldGVyID1cbiAgbGV0IHBvaW50ID0gUmVhY3QuUy52YWx1ZSBwb2ludCBpblxuICB7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4Lm9mZnNldF9jdXJyZW50KSAoUmVhY3QuUy52YWx1ZSBvZmZzZXQpO1xuICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gU29tZSBwb2ludDtcbiAgfVxuXG5sZXQgdXBkYXRlX3Bsb3QgKGpzX3Bsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50KSA6IHVuaXQgPVxuICBTdGF0ZV9zaW11bGF0aW9uLndoZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgKCkgPSB1cGRhdGVfb2Zmc2V0IHRydWUgaW5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgKCkpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBqc19wbG90IyNzZXREYXRhIGRhdGEgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBwbG90X3BvaW50c19pbnB1dF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3RfcG9pbnRzX2lucHV0XG4gIGluXG4gIGxldCBqc19wb2ludCA6IEpzLmpzX3N0cmluZyBKcy50ID1cbiAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgKFJlYWN0LlMudmFsdWUgcG9pbnQpKVxuICBpblxuICBsZXQgKCkgPSBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBqc19wb2ludCBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9ua2V5cHJlc3NcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlblxuICAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfc3RyaW5nIDogc3RyaW5nID1cbiAgICAgICAgICAgICBKcy50b19zdHJpbmcgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX29wdGlvbiA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgPSBpbnRfb2Zfc3RyaW5nIHBsb3RfcG9pbnRzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgaWYgcGxvdF9wb2ludCA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIHBsb3RfcG9pbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwbG90X3BvaW50c19vcHRpb24gd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBwbG90X3BvaW50cyAtPiBzZXRfcG9pbnRzIHBsb3RfcG9pbnRzXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA6IGludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50X3N0cmluZyA9IHN0cmluZ19vZl9pbnQgcGxvdF9wb2ludCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIHBsb3RfcG9pbnRfc3RyaW5nXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X3BvaW50cyBkZWZhdWx0X3BvaW50IGluXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBqc19wbG90IGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuXG5sZXQgY29uZmlndXJhdGlvbiAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0X2pzb247XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L2NzdlwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC90c3ZcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IG91dCA9IGhhc19wbG90IChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZiBvdXQgdGhlbiBPcHRpb24uaXRlciB1cGRhdGVfcGxvdCAhcGxvdF9yZWYgaW5cbiAgICAgICAgICBvdXQpXG4gICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKTtcbiAgfVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9IFdpZGdldF9leHBvcnQuaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIFslaHRtbFxuICAgIHt8XG4gIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXcgZmxleC1jb250ZW50XCIgaWQ9XCJ8fSBkaXZfZGlzcGxheV9pZFxuICAgICAge3xcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC1jb250cm9sc1wiPlxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiBpZD18fVxuICAgICAgZXhwb3J0X2lkXG4gICAgICB7fD5cbiAgICAgIHx9XG4gICAgICBleHBvcnRfY29udHJvbHNcbiAgICAgIHt8XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X3BvaW50c19pbnB1dF9pZFxuICAgICAge3w+Um93IHRvIHBsb3Q8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+UG9pbnRzPC9zcGFuPlxuICAgICAgICAgIHx9XG4gICAgICBbIHBsb3RfcG9pbnRzX2lucHV0IF1cbiAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X29mZnNldF9pbnB1dF9pZFxuICAgICAge3w+U2VsZWN0ZWQgd2luZG93PC9sYWJlbD5cbiAgICAgICAgfH1cbiAgICAgIFsgcGxvdF9vZmZzZXRfaW5wdXQgXVxuICAgICAge3xcbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8L2Rpdj4gfH1dXG5cbmxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCBsaXN0ID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzIC0+IGhhc19wbG90IHMpICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBwbG90X29mZnNldF9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXQgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIGxldCBwbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gICAgSnNfcGxvdC5jcmVhdGVfb2JzZXJ2YWJsZV9wbG90IGRpdl9kaXNwbGF5X2lkXG4gIGluXG4gICgqIFRoZSBlbGVtZW50cyBzaXplIHRoZW1zZWx2ZXMgdXNpbmcgdGhlIGRpdidzIGlmIHRoZXkgYXJlIGhpZGRlblxuICAgICBpdCB3aWxsIGRlZmF1bHQgdG8gc2l6ZSB6ZXJvLiAgc28gdGhleSBuZWVkIHRvIGJlIHNpemVkIHdoZW4gc2hvd24uXG4gICopXG4gIGxldCAoKSA9IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCBwbG90IGluXG4gIGxldCAoKSA9IHBsb3RfcmVmIDo9IFNvbWUgcGxvdCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cGxvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9tb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGhhc19wbG90IHNpbXVsYXRpb25faW5mbyB0aGVuXG4gICAgICAgICAgdXBkYXRlX3Bsb3QgcGxvdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVWlfY29tbW9uLmlucHV0X2NoYW5nZSBwbG90X29mZnNldF9pbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgc2V0X29mZnNldFxuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBvZmZzZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgU29tZSB7IG9mZnNldCB3aXRoIG9mZnNldF9jdXJyZW50ID0gaW50X29mX3N0cmluZyB2YWx1ZSB9KVxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IHBsb3QgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gICgpXG5cbmxldCBwbG90X2NvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSAoZnVuIHN0YXRlIC0+IHBsb3RfY291bnQgc3RhdGUpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gICgqIHJlY2FsY3VhdGUgc2l6ZSAqKVxuICBsZXQgKCkgPVxuICAgIG1hdGNoICFwbG90X3JlZiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHBsb3QgLT5cbiAgICAgIGxldCBtb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgKG1hdGNoIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gdXBkYXRlX3Bsb3QgcGxvdClcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc25hcHNob3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOlxuICAgIGNvbnRhY3RfbWFwOkpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc25hcHNob3QgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogc25hcHNob3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTbmFwc2hvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5cbmxldCBjdXJyZW50X3NuYXBzaG90LCBzZXRfY3VycmVudF9zbmFwc2hvdCA9XG4gIFJlYWN0LlMuY3JlYXRlIChOb25lIDogKHN0cmluZyAqIERhdGEuc25hcHNob3QpIG9wdGlvbilcblxudHlwZSBkaXNwbGF5X2Zvcm1hdCA9IEthcHBhIHwgR3JhcGhcblxubGV0IHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCA9IGZ1bmN0aW9uXG4gIHwgXCJLYXBwYVwiIC0+IFNvbWUgS2FwcGFcbiAgfCBcIkdyYXBoXCIgLT4gU29tZSBHcmFwaFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZGlzcGxheV9mb3JtYXQsIHNldF9kaXNwbGF5X2Zvcm1hdCA9IFJlYWN0LlMuY3JlYXRlIEthcHBhXG5cbmxldCBzbmFwc2hvdF9jb3VudCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGludCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuXG5sZXQgbmF2bGkgKCkgPSBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSlcbmxldCBzZWxlY3RfaWQgPSBcInNuYXBzaG90LXNlbGVjdC1pZFwiXG5sZXQgZGlzcGxheV9pZCA9IFwic25hcHNob3QtbWFwLWRpc3BsYXlcIlxuXG5sZXQgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBpZCBhZGRpdGlvbmFsX2hhbmRsZXJzIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uXG4gICAgPVxuICBsZXQganNvbl9oYW5kbGVyID1cbiAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIm51bGxcIlxuICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHMpXG4gIGluXG4gIGxldCBrYXBwYV9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwia2FcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImthcHBhXCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgIChmdW4gKGZpbGVuYW1lIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIChfLCBzKSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRvdF9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9kb3QgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcInRleHQvdm5kLmdyYXBodml6XCIgfmZpbGVuYW1lKTtcbiAgICB9XG4gIGluXG4gIGxldCBkZWZhdWx0X2hhbmRsZXJzID0gWyBqc29uX2hhbmRsZXI7IGthcHBhX2hhbmRsZXI7IGRvdF9oYW5kbGVyIF0gaW5cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9IGRlZmF1bHRfaGFuZGxlcnMgQCBhZGRpdGlvbmFsX2hhbmRsZXJzO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvID4gMClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbigqIE9ubHkgYWxsb3cgdGhlIGV4cG9ydCBvZiBub24tZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9rYXBwYSAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9rYXBwYVwiIFtdXG5cbigqIFRoZSBtYXBzIGFyZSByZW5kZXJlZCBzbyBhbGxvdyB0aGUgZXhwb3J0IG9mXG4gICBncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2dyYXBoICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2dyYXBoXCJcbiAgICBbXG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgIF1cblxubGV0IGZvcm1hdF9zZWxlY3RfaWQgPSBcImZvcm1hdF9zZWxlY3RfaWRcIlxuXG5sZXQgcmVuZGVyX3NuYXBzaG90X2dyYXBoIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90KSkgaW5cbiAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBkaXNwbGF5X2Zvcm1hdCB3aXRoXG4gIHwgR3JhcGggLT5cbiAgICBsZXQganNvbiA6IHN0cmluZyA9IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90IGluXG4gICAgbGV0IGNvbnRhY3RfbWFwID0gUmVhY3QuUy52YWx1ZSBUYWJfY29udGFjdF9tYXAuY29udGFjdF9tYXBfdGV4dCBpblxuICAgIHNuYXBzaG90X2pzIyNzZXREYXRhIH5jb250YWN0X21hcDooSnMuc3RyaW5nIGNvbnRhY3RfbWFwKSAoSnMuc3RyaW5nIGpzb24pXG4gIHwgS2FwcGEgLT4gKClcblxubGV0IHNlbGVjdF9zbmFwc2hvdCBzbmFwc2hvdF9qcyA9XG4gIGxldCBpbmRleCA9XG4gICAgSnMuT3B0LmJpbmRcbiAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgIChmdW4gZG9tIC0+XG4gICAgICAgIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZG9tXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWxlaW5kZXggPSBKcy50b19zdHJpbmcgc25hcHNob3Rfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgICAgIHRyeSBKcy5zb21lIChpbnRfb2Zfc3RyaW5nIGZpbGVpbmRleCkgd2l0aCBfIC0+IEpzLm51bGwpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBpbmRleCBpblxuICBsZXQgbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25fb3V0cHV0ID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9vdXRwdXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IGluZGV4ID0gSnMuT3B0LmdldCBpbmRleCAoZnVuIF8gLT4gMCkgaW5cbiAgICBpZiBzbmFwc2hvdF9jb3VudCAoU29tZSBzdGF0ZSkgPiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi53aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNuYXBzaG90X2lkIDogc3RyaW5nID0gTGlzdC5udGggc25hcHNob3RfaWRzIGluZGV4IGluXG4gICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBzbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY3VycmVudF9zbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lIChzbmFwc2hvdF9pZCwgc25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaCBzbmFwc2hvdF9qcyBzbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgZiAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZilcbiAgICAgICAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZikpKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgKVxuXG5sZXQgc2VsZWN0IChzbmFwc2hvdHMgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZCBsaXN0KSA9XG4gIExpc3QubWFwaVxuICAgIChmdW4gaSBzbmFwc2hvdF9pZCAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGkpIF1cbiAgICAgICAgICBAXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZW5hbWUsIF8pIC0+IGZpbGVuYW1lID0gc25hcHNob3RfaWRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgW10pXG4gICAgICAgIChIdG1sLnR4dCBzbmFwc2hvdF9pZCkpXG4gICAgc25hcHNob3RzXG5cbmxldCBzbmFwc2hvdF9jbGFzcyA6XG4gICAgZW1wdHk6KHVuaXQgLT4gJ2EpIC0+XG4gICAgc2luZ2xlOih1bml0IC0+ICdhKSAtPlxuICAgIG11bHRpcGxlOih1bml0IC0+ICdhKSAtPlxuICAgICdhIFJlYWN0LnNpZ25hbCA9XG4gZnVuIH5lbXB0eSB+c2luZ2xlIH5tdWx0aXBsZSAtPlxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgbWF0Y2ggc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgIHwgMCAtPiBlbXB0eSAoKVxuICAgICAgfCAxIC0+IHNpbmdsZSAoKVxuICAgICAgfCBfIC0+IG11bHRpcGxlICgpKVxuICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbmxldCBzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQgPVxuICBKc19zbmFwc2hvdC5jcmVhdGVfc25hcHNob3QgZGlzcGxheV9pZCBTdGF0ZV9zZXR0aW5ncy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgeG1sICgpID1cbiAgbGV0IGxpc3QgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4geCAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IHgpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi53aXRoX3NpbXVsYXRpb25faW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHNlbGVjdCBzbmFwc2hvdF9pZHMpKSkpXG4gICAgICAgICAgICAgICAgKCkpKVxuICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG4gIGluXG4gIGxldCBzbmFwc2hvdF9sYWJlbCA9XG4gICAgSHRtbC5oNFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJvbmVsaW5lclwiOyBcInZpc2libGVcIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSkpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChzbmFwc2hvdF9maWxlLCBfKSAtPiBzbmFwc2hvdF9maWxlKVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQgc25hcHNob3Rfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJ2aXNpYmxlXCI7IFwiZm9ybS1jb250cm9sXCIgXSkpO1xuICAgICAgICAgIEh0bWwuYV9pZCBzZWxlY3RfaWQ7XG4gICAgICAgIF1cbiAgICAgIGxpc3RcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2Nob29zZXIgPSBIdG1sLmRpdiBbIHNuYXBzaG90X2xhYmVsOyBzbmFwc2hvdF9zZWxlY3QgXSBpblxuICBsZXQgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYSB+Z3JhcGggPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IEthcHBhIC0+IGthcHBhXG4gICAgICAgICAgIHwgR3JhcGggLT4gZ3JhcGgpXG4gICAgICAgICBkaXNwbGF5X2Zvcm1hdClcbiAgaW5cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9XG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJ2aXNpYmxlXCIgXSB+Z3JhcGg6WyBcImhpZGRlblwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwiaGlkZGVuXCIgXSB+Z3JhcGg6WyBcInZpc2libGVcIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIF07XG4gICAgXVxuICBpblxuICBsZXQga2FwcGFfc25hcHNob3RfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcInBhbmVsLXNjcm9sbFwiIDo6IFwia2FwcGEtY29kZVwiIDo6IFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgc25hcHNob3QpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9ncmFwaF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICA8Zm9ybSAgY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPVwic25hcC1mb3JtXCI+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5TWFzc1wiIGNoZWNrZWQ+IE1hc3M8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeUNvdW50XCIgPiBDb3VudDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5U2l6ZVwiID4gU2l6ZTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWNlbnRlclNuYXBCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPlJlc2V0IFpvb208L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJvb3RCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPkJhY2sgdG8gcm9vdDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRlbnRcIiBpZD1cInx9XG4gICAgICAgICAgZGlzcGxheV9pZCB7fFwiPjwvZGl2Pnx9XVxuICBpblxuICBsZXQgZm9ybWF0X2Nob29zZXIgPVxuICAgIFslaHRtbFxuICAgICAge3wgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH0gZm9ybWF0X3NlbGVjdF9pZFxuICAgICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJLYXBwYVwiIHNlbGVjdGVkPmthcHBhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkdyYXBoXCI+Z3JhcGg8L29wdGlvbj48L3NlbGVjdD4gfH1dXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4gOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC14cy00XCI+XG4gICAgICAgICB8fVxuICAgICAgWyBmb3JtYXRfY2hvb3NlciBdXG4gICAgICB7fFxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC14cy04XCI+IHx9XG4gICAgICBbIHNuYXBzaG90X2Nob29zZXIgXVxuICAgICAge3wgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfH1cbiAgICAgIFsga2FwcGFfc25hcHNob3RfZGlzcGxheTsga2FwcGFfZ3JhcGhfZGlzcGxheSBdXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZFxuICBpblxuICBsZXQgZm9ybWF0X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBmb3JtYXRfc2VsZWN0X2lkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgc25hcHNob3Rfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIFwib25jaGFuZ2VcIiBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCB1cGRhdGVfZm9ybWF0ICgpID1cbiAgICBsZXQgZm9ybWF0X3RleHQgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZm9ybWF0X3NlbGVjdF9kb20jIy52YWx1ZSBpblxuICAgIG1hdGNoIHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCBmb3JtYXRfdGV4dCB3aXRoXG4gICAgfCBTb21lIGZvcm1hdCAtPlxuICAgICAgbGV0ICgpID0gc2V0X2Rpc3BsYXlfZm9ybWF0IGZvcm1hdCBpblxuICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoXywgc25hcHNob3QpIC0+XG4gICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaFxuICAgICAgICAgIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgICAgICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICAoKiBnZXQgaW5pdGlhbCB2YWx1ZSBmb3IgZGlzcGxheSBmb3JtYXQgKilcbiAgbGV0ICgpID0gdXBkYXRlX2Zvcm1hdCAoKSBpblxuICAoKiB1cGRhdGUgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9XG4gICAgZm9ybWF0X3NlbGVjdF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uX2thcHBhICgpKSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9ncmFwaCAoKSkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9IGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIHNuYXBzaG90X2pzIyNyZWRyYXdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc3RvcnlfcmVuZGVyaW5nID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIChpZCA6IHN0cmluZykgOiBzdG9yeV9yZW5kZXJpbmcgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTdG9yeVJlbmRlcmluZ1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IG5vbmVfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IHdlYWtfY2hlY2tib3ggPVxuICBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94OyBIdG1sLmFfY2hlY2tlZCAoKSBdICgpXG5cbmxldCBzdHJvbmdfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBub25lX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBub25lX2NoZWNrYm94XG5sZXQgd2Vha19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgd2Vha19jaGVja2JveFxubGV0IHN0cm9uZ19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgc3Ryb25nX2NoZWNrYm94XG5cbmxldCBsYXVuY2hfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdOyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdCBdXG4gICAgWyBIdG1sLnR4dCBcIkxhdW5jaFwiIF1cblxubGV0IHN0b3J5X2xpc3QsIGxpc3RfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5cbmxldCBzdG9yeV9saXN0X2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biAoaWQsIGNtKSAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6WyBIdG1sLmFfdmFsdWUgKHN0cmluZ19vZl9pbnQgaWQpIF1cbiAgICAgICAgKEh0bWwudHh0XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVpICglYSlAXVwiIGlkXG4gICAgICAgICAgICAgIEthc3Rvcl9jbGllbnQucHJpbnRfY29tcHJlc3Npb25fbW9kZXMgY20pKSlcbiAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHN0b3J5X2xpc3QpXG5cbmxldCBzZWxlY3Rfc3RvcmllcyA9IFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IHN0b3J5X2xpc3RfaHRtbFxubGV0IHNlbGVjdF9zdG9yaWVzX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3Qgc2VsZWN0X3N0b3JpZXNcblxubGV0JWh0bWwgc2V0dXBfZm9ybSA9XG4gIHt8PGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPkNvbXByZXNzaW9uIGxldmVsPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG5vbmVfY2hlY2tib3ggXVxuICAgIHt8IENhdXNhbDwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyB3ZWFrX2NoZWNrYm94IF1cbiAgICB7fCBXZWFrbHk8L2xhYmVsPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgc3Ryb25nX2NoZWNrYm94IF1cbiAgICB7fCBTdHJvbmdseTwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj58fVxuICAgIFsgbGF1bmNoX2J1dHRvbiBdXG4gICAge3w8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbD5TZWxlY3RlZCBzdG9yeTwvbGFiZWw+fH1cbiAgICBbIHNlbGVjdF9zdG9yaWVzIF1cbiAgICB7fFxuICAgIDwvZGl2PlxuICAgIDwvZm9ybT58fVxuXG5sZXQgc3RvcnlfbG9nLCBsb2dfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5sZXQgY3VycmVudF9pbmZvLCBzZXRfaW5mbyA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcblxubGV0IHN0b3J5X2xvZ19odG1sID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcFxuICAgIChmdW4gbGluZSAtPiBIdG1sLnR4dCAobGluZSBeIFwiXFxuXCIpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QucmV2IChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbG9nKSlcblxubGV0IGxvZ19kaXYgPVxuICBUeXhtbF9qcy5SLkh0bWw1LmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCIgXSBdIHN0b3J5X2xvZ19odG1sXG5cbmxldCBsb2dfcGFuZWwgPVxuICBbXG4gICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdG9yeWxvZ25hdnRhYlwiXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIE5vbmUsIFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICBdO1xuICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IFsgXCJwYW5lbC1zY3JvbGxcIiBdXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIFtdLCBbIGxvZ19kaXYgXTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBbIFwicGFuZWwtcHJlXCIgXSwgWyBUeXhtbF9qcy5SLkh0bWw1LnR4dCBjdXJyZW50X2luZm8gXTtcbiAgICAgIF07XG4gIF1cblxubGV0IGdyYXBoX2Rpc3BsYXlfaWQgPSBcInN0b3J5X2dyYXBoX2Rpc3BsYXlcIlxubGV0IHN0b3J5X2dyYXBoID0gSnNfc3RvcnkuY3JlYXRlX3N0b3J5X3JlbmRlcmluZyBncmFwaF9kaXNwbGF5X2lkXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTVcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIChzZXR1cF9mb3JtIDo6IGxvZ19wYW5lbCk7XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGdyYXBoX2Rpc3BsYXlfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtN1wiOyBcImZsZXgtY29udGVudFwiIF07XG4gICAgICAgIF1cbiAgICAgIFtdO1xuICBdXG5cbmxldCBsaWZ0X3Jlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlXG5cbmxldCBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6XCJDb25maWcgY29tcHJlc3Npb25cIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBjYXVzYWwgPSBKcy50b19ib29sIG5vbmVfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHdlYWsgPSBKcy50b19ib29sIHdlYWtfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHN0cm9uZyA9IEpzLnRvX2Jvb2wgc3Ryb25nX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIG1hbmFnZXIjY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgPnw9IGxpZnRfcmVzdWx0KVxuXG5sZXQgdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsID1cbiAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICBKcy5fZmFsc2UpXG5cbmxldCBzZXRfYV9zdG9yeSA9XG4gIGxldCBwcmVkX2lkID0gcmVmIG1heF9pbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHNlbGVjdF9zdG9yaWVzX2RvbSMjLnZhbHVlIGluXG4gICAgaWYgdmEgPSBcIlwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBtYXhfaW50IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGlkID0gaW50X29mX3N0cmluZyB2YSBpblxuICAgICAgaWYgIXByZWRfaWQgPD4gaWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gaWQgaW5cbiAgICAgICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1hbmFnZXIjc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IFNvbWUgKF9jbSwgZCwgdikgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfaW5mb1xuICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbaWRzOiBAWyVhQF1AIHQ9QFslYUBdQCBldmVudD1AWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmxvYXQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkpKVxuICAgICAgICAgICAgICAgICAgICAgZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzdG9yeV9ncmFwaCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoR3JhcGhfanNvbi50b19qc29uIHYpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIClcblxubGV0IHJlYyBpbnNwZWN0X3N0b3JpZXMgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LndpdGhfcHJvamVjdCB+bGFiZWw6XCJTdG9yaWVzIGxpc3RcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGxpc3RfY29udHJvbFxuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBpZCAoY20sIF8sIF8pIGFjYyAtPiAoaWQsIGNtKSA6OiBhY2MpXG4gICAgICAgICAgICAgbWFuYWdlciNzdG9yeV9saXN0IFtdKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGxvZ19jb250cm9sIG1hbmFnZXIjc3RvcnlfbG9nIGluXG4gICAgICBzZXRfYV9zdG9yeSAoKSlcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX3Byb2plY3Qud2l0aF9wcm9qZWN0IH5sYWJlbDpcIlN0b3JpZXMgY29tcHV0aW5nXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBtYW5hZ2VyI2lzX2NvbXB1dGluZykpXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGIgLT5cbiAgICAgICAgICBpZiBiICYmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuXG4gICAgICAgICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIDMuID4+PSBpbnNwZWN0X3N0b3JpZXNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c3Rvcmllc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICBsZXQgXyA9IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSBpblxuICAgICAgICBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzKVxuICBpblxuICBsZXQgKCkgPSBub25lX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPSB3ZWFrX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPSBzdHJvbmdfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9XG4gICAgc2VsZWN0X3N0b3JpZXNfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgXyA9IHNldF9hX3N0b3J5ICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBsYXVuY2hfYnV0dG9uKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfcHJvamVjdC53aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgaWYgbWFuYWdlciNzdG9yeV9pc19jb21wdXRpbmcgdGhlblxuICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNyYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gbGlmdF9yZXN1bHQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbmF2X3RhYl9pZCA9IFwibmF2dGFic1wiXG5cbmxldCBuYXZ0YWJzICgpID1cbiAgbGV0IHN0b3J5X2NsYXNzID1cbiAgICBTb21lXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICBpZiBzLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgICBbXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpXG4gIGluXG4gIFR5eG1sX2pzLlRvX2RvbS5vZl91bFxuICBAQCBVaV9jb21tb24ubmF2dGFicyBuYXZfdGFiX2lkXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgTm9uZSwgVGFiX2VkaXRvci5uYXZsaSAoKTtcbiAgICAgICAgIFwibG9nXCIsIE5vbmUsIFRhYl9sb2cubmF2bGkgKCk7XG4gICAgICAgICBcInBsb3RcIiwgTm9uZSwgVGFiX3Bsb3QubmF2bGkgKCk7XG4gICAgICAgICBcIkRJTlwiLCBOb25lLCBUYWJfZmx1eC5uYXZsaSAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgTm9uZSwgVGFiX3NuYXBzaG90Lm5hdmxpICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIE5vbmUsIFRhYl9vdXRwdXRzLm5hdmxpICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIHN0b3J5X2NsYXNzLCBUYWJfc3Rvcmllcy5uYXZsaSAoKTtcbiAgICAgICAgIFwiYWJvdXRcIiwgTm9uZSwgVGFiX2Fib3V0Lm5hdmxpICgpO1xuICAgICAgIF1cblxubGV0IG5hdmNvbnRlbnRzX2lkIDogc3RyaW5nID0gXCJuYXZjb250ZW50c1wiXG5cbmxldCBuYXZjb250ZW50cyAoKSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9kaXZcbiAgQEAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOm5hdmNvbnRlbnRzX2lkIFtdXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgWyBcInJvd1wiIF0sIFRhYl9lZGl0b3IuY29udGVudCAoKTtcbiAgICAgICAgIFwibG9nXCIsIFtdLCBUYWJfbG9nLmNvbnRlbnQgKCk7XG4gICAgICAgICBcInBsb3RcIiwgW10sIFRhYl9wbG90LmNvbnRlbnQgKCk7XG4gICAgICAgICBcIkRJTlwiLCBbXSwgVGFiX2ZsdXguY29udGVudCAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgW10sIFRhYl9zbmFwc2hvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIFtdLCBUYWJfb3V0cHV0cy5jb250ZW50ICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIFsgXCJyb3dcIiBdLCBUYWJfc3Rvcmllcy5jb250ZW50ICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBbIFwicGFuZWwtc2Nyb2xsXCIgXSwgVGFiX2Fib3V0LmNvbnRlbnQgKCk7XG4gICAgICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9mbHV4Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc25hcHNob3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2Fib3V0Lm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICBsZXQgKCkgPSBUYWJfZWRpdG9yLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9sb2cub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2ZsdXgub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3NuYXBzaG90Lm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9hYm91dC5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgU3RhdGVfc2V0dGluZ3Muc3luYyAoKSA+Pj0gU3RhdGVfcnVudGltZS5zeW5jID4+PSBTdGF0ZV9wcm9qZWN0LnN5bmNcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX2ZpbGUuc3luYyAoKSA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0XG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIEx3dC5yZXR1cm5fdW5pdCA+Pj0gU3RhdGVfc2V0dGluZ3MuaW5pdCA+Pj0gU3RhdGVfcnVudGltZS5pbml0XG4gID4+PSBTdGF0ZV9wcm9qZWN0LmluaXQgPj49IFN0YXRlX2ZpbGUuaW5pdCA+Pj0gU3RhdGVfc2ltdWxhdGlvbi5pbml0ID4+PSBzeW5jXG5cbmxldCByZWMgbG9vcCAoaCA6IHVuaXQgLT4gdW5pdCBMd3QudCkgKHQgOiBmbG9hdCkgKCkgOiB1bml0IEx3dC50ID1cbiAgaCAoKSA+Pj0gKGZ1biBfIC0+IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdCkgPj49IGxvb3AgaCB0XG5cbmxldCBsb29wX3N5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgaWYgUmVhY3QuUy52YWx1ZSBTdGF0ZV9zZXR0aW5ncy5zeW5jaCB0aGVuIChcbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImxvb3Agc3luY1wiKSBpblxuICAgIHN5bmMgKClcbiAgKSBlbHNlXG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgTHd0LnJldHVybl91bml0ID4+PSBpbml0ID4+PSBsb29wIGxvb3Bfc3luYyAyMC4wKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9ubG9hZCBfID1cbiAgbGV0ICgpID0gU3RhdGVfdWkub25sb2FkICgpIGluXG4gIGxldCBtYWluID0gVWlfY29tbW9uLmlkX2RvbSBcIm1haW5cIiBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9wcm9qZWN0cy5jb250ZW50ICgpKSlcbiAgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYi5uYXZ0YWJzICgpKSBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFiLm5hdmNvbnRlbnRzICgpKSBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9zZXR0aW5ncy5jb250ZW50ICgpKSlcbiAgaW5cblxuICBsZXQgKCkgPSBQYW5lbF9wcm9qZWN0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gUGFuZWxfdGFiLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbmxvYWQgKCkgaW5cblxuICBsZXQgXyA9XG4gICAgRG9tX2h0bWwud2luZG93IyMub25yZXNpemUgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF90YWIub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBKcy5fdHJ1ZVxuXG5sZXQgXyA9IERvbV9odG1sLndpbmRvdyMjLm9ubG9hZCA6PSBEb21faHRtbC5oYW5kbGVyIG9ubG9hZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsInN5bWJvbCIsInMxIiwiczIiLCJsMSIsImwyIiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInZhbGlkX2Zsb2F0X2xleGVtIiwibCIsImkiLCJpJDAiLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sJDAiLCJ0bCIsImhkIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIiLCJvcGVuX291dF9nZW4iLCJtb2RlIiwicGVybSIsIm5hbWUiLCJjIiwib3Blbl9vdXQiLCJvcGVuX291dF9iaW4iLCJmbHVzaF9hbGwiLCJhIiwib3V0cHV0X2J5dGVzIiwib2MiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0Iiwib2ZzIiwibGVuIiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF92YWx1ZSIsImNoYW4iLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiYWNjdSIsImJlZyIsImFjY3UkMCIsInJlcyIsImNsb3NlX2luX25vZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludCIsInJlYWRfaW50X29wdCIsInJlYWRfZmxvYXQiLCJyZWFkX2Zsb2F0X29wdCIsInN0cmluZ19vZl9mb3JtYXQiLCJzeW1ib2wkMSIsInN0cjIiLCJzdHIxIiwiZXhpdF9mdW5jdGlvbiIsImF0X2V4aXQiLCJmX3lldF90b19ydW4iLCJvbGRfZXhpdCIsImZfeWV0X3RvX3J1biQwIiwib2xkX2V4aXQkMCIsIm5ld19leGl0Iiwic3VjY2VzcyIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIm1heF9pbnQiLCJtaW5faW50IiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJzb21lIiwidmFsdWUiLCJvIiwiZGVmYXVsdCQwIiwiYmluZCIsImpvaW4iLCJmb2xkIiwibm9uZSIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJsb2dub3QiLCJjb3B5Iiwib2Zfc3RyaW5nIiwic3ViIiwic3ViX3N0cmluZyIsImV4dGVuZCIsImRzdG9mZiIsInNyY29mZiIsImNweWxlbiIsImZpbGwiLCJibGl0Iiwib2ZzMSIsIm9mczIiLCJibGl0X3N0cmluZyIsInNlcCIsInNlcGxlbiIsImRzdCIsInBvcyIsImhkJDAiLCJjYXQiLCJpc19zcGFjZSIsInRyaW0iLCJqIiwiYXBwbHkxIiwiY2FwaXRhbGl6ZV9hc2NpaSIsInVuY2FwaXRhbGl6ZV9hc2NpaSIsInN0YXJ0c193aXRoIiwicHJlZml4IiwibGVuX3MiLCJsZW5fcHJlIiwiZW5kc193aXRoIiwic3VmZml4IiwibGVuX3N1ZiIsImRpZmYiLCJpbmRleF9yZWMiLCJsaW0iLCJpJDEiLCJpbmRleCIsImluZGV4X3JlY19vcHQiLCJpbmRleF9vcHQiLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9vcHQiLCJyaW5kZXhfcmVjIiwicmluZGV4IiwicmluZGV4X2Zyb20iLCJyaW5kZXhfcmVjX29wdCIsInJpbmRleF9vcHQiLCJyaW5kZXhfZnJvbV9vcHQiLCJjb250YWluc19mcm9tIiwiY29udGFpbnMiLCJyY29udGFpbnNfZnJvbSIsInNwbGl0X29uX2NoYXIiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwidG9fc2VxaSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiZ2V0X2ludDgiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQxNl9uZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJidHMiLCJib3MiLCJvZl9ieXRlcyIsInRvX2J5dGVzIiwiZyIsInRvX2J1ZmZlciIsImJ1ZmYiLCJmbGFncyIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImluZm8iLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJleHRlbnNpb25fY29uc3RydWN0b3IiLCJleHRlbnNpb25fbmFtZSIsImV4dGVuc2lvbl9pZCIsIm1heF9lcGhlX2xlbmd0aCIsImNyZWF0ZSIsInJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IiwibXNnIiwiZ2V0X2tleSIsImdldF9rZXlfY29weSIsInNldF9rZXkiLCJ1bnNldF9rZXkiLCJjaGVja19rZXkiLCJibGl0X2tleSIsIm8yIiwibWFrZV9mbG9hdCIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImxhIiwibGIiLCJyZXMkMCIsImxpc3RfbGVuZ3RoIiwidCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJiMCIsImEwIiwiYmkiLCJhaSIsIm5hIiwibmIiLCJtYXhzb24iLCJpMzEiLCJpJDYiLCJlJDEiLCJpJDQiLCJlJDAiLCJpJDUiLCJqJDAiLCJpJDIiLCJpJDMiLCJmYXRoZXIiLCJzcmMxb2ZzIiwic3JjMWxlbiIsInNyYzIiLCJzcmMyb2ZzIiwic3JjMmxlbiIsImRzdG9mcyIsInNyYzFyIiwic3JjMnIiLCJzMiQxIiwiczEkMSIsImkxIiwiaTIiLCJkIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsIm5vX2FyZyQwIiwiZiQwIiwiZ2V0X2FyZyQwIiwiY29uc3VtZV9hcmckMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJ0cmVhdF9hY3Rpb24kMCIsImYkNCIsImFyZyQ1IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiYXJnJDYiLCJuZXdhcmciLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyIsInBhcnNlX2FyZ3ZfZHluYW1pYyIsImN1cnJlbnQkMCIsInBhcnNlX2FyZ3YiLCJtc2ckMCIsIm1zZyQxIiwicGFyc2VfZHluYW1pYyIsInBhcnNlX2V4cGFuZCIsInNlY29uZF93b3JkIiwibG9vcCIsIm1heF9hcmdfbGVuIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJ0b19zdHJpbmdfZGVmYXVsdCIsImNoYXIkMCIsImxpbmUiLCJjaGFyJDEiLCJsaW5lJDAiLCJmaWxlJDAiLCJjaGFyJDIiLCJsaW5lJDEiLCJmaWxlJDEiLCJjb25zdHJ1Y3RvciIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaXNfcmFpc2UiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImZsaXAiLCJuZWdhdGUiLCJwcm90ZWN0IiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsInByaW50X3N0YXQiLCJhbGxvY2F0ZWRfYnl0ZXMiLCJtYSIsInBybyIsIm1pIiwiY3JlYXRlX2FsYXJtIiwiZGVsZXRlX2FsYXJtIiwibnVsbF90cmFja2VyIiwic2FtcGxpbmdfcmF0ZSIsInRyYWNrZXIiLCJjYWxsc3RhY2tfc2l6ZSIsInN0cmluZyIsImJ5dGVzIiwic3Vic3RyaW5nIiwic3ViYnl0ZXMiLCJmaWxlbmFtZSIsImRpZ2VzdCIsImNoYXJfaGV4IiwidG9faGV4IiwiZnJvbV9oZXgiLCJkaWdpdCIsIm5ld19zdGF0ZSIsImFzc2lnbiIsInN0MSIsInN0MiIsImZ1bGxfaW5pdCIsInNlZWQiLCJzZWVkJDAiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJjdXJ2YWwiLCJuZXd2YWwiLCJuZXd2YWwzMCIsImludGF1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImIxIiwiYjIiLCJtYXhfaW50XzMyIiwiYnBvcyIsImIzIiwiaW50MzIiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJib29sIiwiYml0cyQwIiwiaW50JDEiLCJmdWxsX2ludCQwIiwiaW50MzIkMCIsIm5hdGl2ZWludCQwIiwiaW50NjQkMCIsImZsb2F0JDEiLCJzY2FsZSIsImJvb2wkMCIsImZ1bGxfaW5pdCQwIiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIiwib25nb2luZ190cmF2ZXJzYWwiLCJmbGlwX29uZ29pbmdfdHJhdmVyc2FsIiwicGFyYW1zIiwicmFuZG9taXplZF9kZWZhdWx0IiwicmFuZG9taXplZCIsInJhbmRvbWl6ZSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nIiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImIkMCIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInN6IiwiaGFzaF9wYXJhbSIsInNlZWRlZF9oYXNoIiwicmVidWlsZCIsImdldF9jb3B5IiwiYXIiLCJlbXB0eWJ1Y2tldCIsImdldF9pbmRleCIsImNyZWF0ZSQwIiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJhZGRfYXV4Iiwic2V0dGVyIiwiYnVja2V0JDAiLCJoYXNoZXMiLCJuZXdzeiIsIm5ld2J1Y2tldCQwIiwibmV3aGFzaGVzIiwiaGJ1Y2tldCIsInByZXZfbGVuIiwibGl2ZSIsImokMiIsIm5ld2J1Y2tldCIsIm9sZGxlbiIsIm5ld3QiLCJvYiIsIm9pIiwib2giLCJvaSQwIiwibmkiLCJmaW5kX29yIiwiaWZub3Rmb3VuZCIsImZpbmRfc2hhZG93IiwiaWZmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX2xpbmUiLCJicmVha19zYW1lX2xpbmUiLCJmb3JtYXRfcHBfdG9rZW4iLCJzaXplJDAiLCJ0YWJzIiwiYWRkX3RhYiIsImxzIiwidGFnX25hbWUiLCJtYXJrZXIiLCJicmVha3MiLCJmaXRzIiwib2ZmIiwiYm94X3R5cGUkMCIsIm9mZiQwIiwiaW5zZXJ0aW9uX3BvaW50IiwidGFicyQwIiwiZmlyc3QiLCJoZWFkIiwidGFiIiwib2ZmJDEiLCJpbnNlcnRpb25fcG9pbnQkMCIsIndpZHRoJDIiLCJib3hfdHlwZSQxIiwidGJveCIsInRhZ19uYW1lJDAiLCJtYXJrZXIkMCIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJlbnF1ZXVlX3N0cmluZ19hcyIsImluaXRpYWxpemVfc2Nhbl9zdGFjayIsInN0YWNrIiwicXVldWVfZWxlbSIsInNldF9zaXplIiwibGVmdF90b3RhbCIsInNjYW5fcHVzaCIsImVsZW0iLCJwcF9vcGVuX2JveF9nZW4iLCJicl90eSIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9vcGVuX3RhZyIsInBwX2Nsb3NlX3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJwcF9tYXJnaW4iLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl90YWciLCJjbG9zZV90YWciLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2xpc3QiLCJwcF92Iiwib3B0JDAiLCJwcF9zZXAiLCJvcHQkMSIsInBwX3ByaW50X3NlcSIsInNlcSQxIiwic2VxJDIiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwicHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1IiwicHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1Iiwic2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwiZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0IiwicHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwic3RyaW5naWZ5IiwicHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZnVucyIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsInByaW50X29wZW5fdGFnIiwicHJpbnRfY2xvc2VfdGFnIiwic2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJza2lwX2NoYXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJpYyQwIiwibWVtbyIsIm1lbW9fZnJvbV9jaGFubmVsIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuIiwic2NhbiQzIiwic2NhbiQ0IiwiY29udiQwIiwic2NhbiQ1IiwiY29udiQxIiwic2NhbiQ2IiwiY29udiQyIiwic2NhbiQ3Iiwic2NhbiQ4IiwiZm10aW5nX2xpdCQwIiwic3RwJDAiLCJzJDIiLCJzdHJfcmVzdCQwIiwiYXJnX3Jlc3QiLCJrc2NhbmYiLCJlZiIsImV4YyQwIiwiZXhjIiwiYXJncyQxIiwiYXJncyQwIiwiYnNjYW5mIiwia3NzY2FuZiIsInNzY2FuZiIsInNjYW5mIiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJrZnNjYW5mIiwiZnNjYW5mIiwicmVnaXN0ZXIiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJvJDAiLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJhcnIiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiYnVpbGRfcGF0aCIsImtleXMiLCJsb29rdXBfdGFibGVzIiwicm9vdCIsInJvb3RfZGF0YSIsInRhYmxlcyQwIiwidGFibGVzJDEiLCJ0YWJsZXNfZGF0YSIsIm5ld19jYWNoZSIsInNldF9tZXRob2RzIiwiY2xvIiwieCQyMCIsImNsbyQwIiwibiQzOCIsImUkMTAiLCJuJDM3IiwibiQzNiIsIm4kMiIsIm4kMzUiLCJmJDIwIiwieCQxOSIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ4JDE4IiwieSQwIiwibiQ2IiwiZiQxNSIsIngkMTciLCJuJDMxIiwieCQzIiwibiQ3IiwiZiQxNCIsIngkMTYiLCJlJDgiLCJuJDMwIiwieCQ0IiwibiQ4IiwiZiQxMyIsIngkMTUiLCJuJDI5IiwibiQ5IiwieCQ1IiwiZiQxMiIsIm4kMjgiLCJ4JDE0IiwiZiQ4IiwiZSQyIiwibiQxMCIsIngkNiIsImYkMTEiLCJlJDciLCJuJDI3IiwieCQxMyIsImYkOSIsIm4kMTEiLCJ4JDciLCJmJDEwIiwibiQyNiIsIngkMTIiLCJuJDEyIiwieCQ4IiwibiQyNSIsIngkMTEiLCJuJDEzIiwibiQyNCIsIm0kMTIiLCJuJDE0IiwiZSQzIiwibiQyMyIsImUkNiIsIm0kMTEiLCJuJDE1IiwibSQxIiwibiQyMiIsIm0kMTAiLCJtJDIiLCJ4JDkiLCJtJDkiLCJ4JDEwIiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwiaW5pdGlhbF9idWZmZXIiLCJidWZmZXIiLCJidWZwb3MiLCJyZXNldF9idWZmZXIiLCJzdG9yZSIsIm5ld2J1ZmZlciIsImdldF9zdHJpbmciLCJtYWtlX2xleGVyIiwia2V5d29yZHMiLCJrd2RfdGFibGUiLCJpZGVudF9vcl9rZXl3b3JkIiwia2V5d29yZF9vcl9lcnJvciIsIm5leHRfdG9rZW4iLCJlc2NhcGUiLCJjb21tZW50IiwibnVtYmVyIiwiaWRlbnQyIiwiZXhwb25lbnRfcGFydCIsImVuZF9leHBvbmVudF9wYXJ0IiwiYzMiLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwibmV3X2QiLCJidWNrZXRfbGVuZ3RoX2FsaXZlIiwic3RhdHNfYWxpdmUiLCJnZXRfZGF0YV9jb3B5Iiwic2V0X2RhdGEiLCJ1bnNldF9kYXRhIiwiY2hlY2tfZGF0YSIsImJsaXRfZGF0YSIsInNldF9rZXlfZGF0YSIsImdldF9rZXkxIiwiZ2V0X2tleTFfY29weSIsInNldF9rZXkxIiwidW5zZXRfa2V5MSIsImNoZWNrX2tleTEiLCJnZXRfa2V5MiIsImdldF9rZXkyX2NvcHkiLCJzZXRfa2V5MiIsInVuc2V0X2tleTIiLCJjaGVja19rZXkyIiwiYmxpdF9rZXkxIiwiYmxpdF9rZXkyIiwiYmxpdF9rZXkxMiIsImdldF9kYXRhJDAiLCJnZXRfZGF0YV9jb3B5JDAiLCJzZXRfZGF0YSQwIiwidW5zZXRfZGF0YSQwIiwiY2hlY2tfZGF0YSQwIiwiYmxpdF9kYXRhJDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJjcmVhdGUkMSIsImdldF9rZXkkMCIsImdldF9rZXlfY29weSQwIiwic2V0X2tleSQwIiwidW5zZXRfa2V5JDAiLCJjaGVja19rZXkkMCIsImJsaXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwiZ2V0X2RhdGFfY29weSQxIiwic2V0X2RhdGEkMSIsInVuc2V0X2RhdGEkMSIsImNoZWNrX2RhdGEkMSIsImJsaXRfZGF0YSQxIiwia2kiLCJrMCIsIm51bGwkMCIsImN1cnJlbnRfZGlyX25hbWUiLCJwYXJlbnRfZGlyX25hbWUiLCJkaXJfc2VwIiwicXVvdGVxdW90ZSIsIm51bGwkMSIsImN1cnJlbnRfZGlyX25hbWUkMCIsInBhcmVudF9kaXJfbmFtZSQwIiwiZGlyX3NlcCQwIiwibnVsbCQyIiwiY3VycmVudF9kaXJfbmFtZSQxIiwicGFyZW50X2Rpcl9uYW1lJDEiLCJkaXJfc2VwJDEiLCJnZW5lcmljX2Jhc2VuYW1lIiwiaXNfZGlyX3NlcCIsImdlbmVyaWNfZGlybmFtZSIsImlzX3JlbGF0aXZlIiwiaXNfaW1wbGljaXQiLCJjaGVja19zdWZmaXgiLCJzdWZmIiwiY2hvcF9zdWZmaXhfb3B0IiwibGVuX2YiLCJ0ZW1wX2Rpcl9uYW1lIiwicXVvdGUiLCJxdW90ZV9jb21tYW5kIiwiYmFzZW5hbWUiLCJkaXJuYW1lIiwiaXNfZGlyX3NlcCQwIiwiaXNfcmVsYXRpdmUkMCIsImlzX2ltcGxpY2l0JDAiLCJjaGVja19zdWZmaXgkMCIsImNob3Bfc3VmZml4X29wdCQwIiwidGVtcF9kaXJfbmFtZSQwIiwicXVvdGUkMCIsImxvb3AkMCIsImxvb3BfYnMiLCJhZGRfYnMiLCJxdW90ZV9jbWRfZmlsZW5hbWUiLCJxdW90ZV9jb21tYW5kJDAiLCJkcml2ZV9hbmRfcGF0aCIsImRpcm5hbWUkMCIsInBhdGgiLCJkcml2ZSIsImRpciIsImJhc2VuYW1lJDAiLCJiYXNlbmFtZSQxIiwiZGlybmFtZSQxIiwibnVsbCQzIiwiY3VycmVudF9kaXJfbmFtZSQyIiwicGFyZW50X2Rpcl9uYW1lJDIiLCJkaXJfc2VwJDIiLCJpc19kaXJfc2VwJDEiLCJpc19yZWxhdGl2ZSQxIiwiaXNfaW1wbGljaXQkMSIsImNoZWNrX3N1ZmZpeCQxIiwiY2hvcF9zdWZmaXhfb3B0JDEiLCJ0ZW1wX2Rpcl9uYW1lJDEiLCJxdW90ZSQxIiwicXVvdGVfY29tbWFuZCQxIiwiYmFzZW5hbWUkMiIsImRpcm5hbWUkMiIsImNob3Bfc3VmZml4IiwiZXh0ZW5zaW9uX2xlbiIsImkwIiwiZXh0ZW5zaW9uIiwiY2hvcF9leHRlbnNpb24iLCJyZW1vdmVfZXh0ZW5zaW9uIiwidGVtcF9maWxlX25hbWUiLCJ0ZW1wX2RpciIsInJuZCIsImN1cnJlbnRfdGVtcF9kaXJfbmFtZSIsInNldF90ZW1wX2Rpcl9uYW1lIiwiZ2V0X3RlbXBfZGlyX25hbWUiLCJ0ZW1wX2ZpbGUiLCJvcGVuX3RlbXBfZmlsZSIsInN0aCQwIiwicGVybXMiLCJzdGgkMSIsIm5lZyIsImNvbmoiLCJtdWwiLCJkaXYiLCJpbnYiLCJub3JtMiIsIm5vcm0iLCJxJDAiLCJwb2xhciIsInNxcnQiLCJ3JDAiLCJleHAiLCJsb2ciLCJwb3ciLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjbG9vcCIsImlkeCIsImNvbCIsImZsb29wIiwibGF5b3V0IiwiZGltcyIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImRpbSIsInNpemVfaW5fYnl0ZXMkMSIsInNsaWNlIiwiaW5pdCQwIiwib2ZfYXJyYXkiLCJiYSIsImRpbTEiLCJkaW0yIiwic2l6ZV9pbl9ieXRlcyQyIiwic2xpY2VfbGVmdCIsInNsaWNlX3JpZ2h0IiwiaW5pdCQxIiwib2ZfYXJyYXkkMCIsInJvdyIsImNyZWF0ZSQyIiwiZGltMyIsInNpemVfaW5fYnl0ZXMkMyIsInNsaWNlX2xlZnRfMSIsInNsaWNlX3JpZ2h0XzEiLCJzbGljZV9sZWZ0XzIiLCJzbGljZV9yaWdodF8yIiwiaW5pdCQyIiwib2ZfYXJyYXkkMSIsImFycmF5MF9vZl9nZW5hcnJheSIsImFycmF5MV9vZl9nZW5hcnJheSIsImFycmF5Ml9vZl9nZW5hcnJheSIsImFycmF5M19vZl9nZW5hcnJheSIsInJlc2hhcGVfMCIsInJlc2hhcGVfMSIsInJlc2hhcGVfMiIsInJlc2hhcGVfMyIsInZlcnNpb24iLCJnaXRfdmVyc2lvbiIsInJhaXNlIiwibWF4IiwieCIsInkiLCJtaW4iLCJlcXVhbCIsImVxdWFsJDAiLCJtYXgkMCIsIm1pbiQwIiwiZ2xvYmFsIiwibnVsbCQwIiwidW5kZWZpbmVkJDAiLCJyZXR1cm4kMCIsIm1hcCIsImYiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwieCQwIiwidG9fb3B0aW9uIiwicmV0dXJuJDEiLCJtYXAkMCIsImJpbmQkMCIsInRlc3QkMCIsIml0ZXIkMCIsImNhc2UkMSIsImdldCQwIiwib3B0aW9uJDAiLCJ0b19vcHRpb24kMCIsImNvZXJjZSIsImNvZXJjZV9vcHQiLCJ0cnVlJDAiLCJmYWxzZSQwIiwibmZjIiwibmZkIiwibmZrYyIsIm5ma2QiLCJzdHJpbmdfY29uc3RyIiwicmVnRXhwIiwib2JqZWN0X2NvbnN0cnVjdG9yIiwib2JqZWN0X2tleXMiLCJvIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJhIiwiaWR4IiwiYXJyYXlfbWFwaSIsInN0cl9hcnJheSIsIm1hdGNoX3Jlc3VsdCIsImRhdGVfY29uc3RyIiwibWF0aCIsImVycm9yX2NvbnN0ciIsImV4bl93aXRoX2pzX2JhY2t0cmFjZSIsIm5hbWUiLCJtZXNzYWdlIiwic3RhY2siLCJ0b19zdHJpbmciLCJlIiwicmFpc2VfanNfZXJyb3IiLCJzdHJpbmdfb2ZfZXJyb3IiLCJKU09OIiwiZGVjb2RlVVJJIiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVuY29kZVVSSSIsImVuY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInVuZXNjYXBlIiwiaXNOYU4iLCJpIiwicGFyc2VJbnQiLCJzJDAiLCJwYXJzZUZsb2F0IiwiZXhwb3J0X2pzIiwiZmllbGQiLCJleHBvcnQkMCIsImV4cG9ydF9hbGwiLCJvYmoiLCJrZXlzIiwia2V5IiwibGlzdF9vZl9ub2RlTGlzdCIsImxlbmd0aCIsImFjYyIsImkkMCIsImFjYyQwIiwiaSQxIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInAiLCJuIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJub2RlVHlwZSIsInQxMyIsImNhc3QiLCJ0MTQiLCJlbGVtZW50IiwidGV4dCIsImF0dHIiLCJub19oYW5kbGVyIiwiaGFuZGxlciIsInJlcyIsImZ1bGxfaGFuZGxlciIsInRoaXMkMCIsImludm9rZV9oYW5kbGVyIiwiZXZlbnQiLCJldmVudFRhcmdldCIsIm1ha2UiLCJhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMiLCJ0MjgiLCJ0eXAiLCJjYXB0dXJlIiwib25jZSIsInBhc3NpdmUiLCJoIiwiYiIsImV2IiwiY2FsbGJhY2siLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpZCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRldGFpbCIsIm9wdF9pdGVyIiwiY29uc3RyIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJ1aW50OEFycmF5IiwiaW50MTZBcnJheSIsInVpbnQxNkFycmF5IiwiaW50MzJBcnJheSIsInVpbnQzMkFycmF5IiwiZmxvYXQzMkFycmF5IiwiZmxvYXQ2NEFycmF5Iiwic2V0IiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwiYWIiLCJ1aW50OCIsImJsb2JfY29uc3RyIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJvcHRpb25zJDAiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJmaWxlbmFtZSIsIm5hbWUkMCIsImRvY19jb25zdHIiLCJkb2N1bWVudCIsImJsb2IiLCJzdHJpbmciLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwibG9hZGVuZCIsImZpbGVSZWFkZXIiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbGVmdCIsInRyeV9rZXlfY29kZV9yaWdodCIsInRyeV9rZXlfY29kZV9udW1wYWQiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJydW5fbmV4dCIsInZhbHVlIiwic3ltYm9sIiwib2ZfZXZlbnQiLCJjaGFyX29mX2ludCIsImVtcHR5X3N0cmluZyIsIm5vbmUiLCJvZl9ldmVudCQwIiwiZWxlbWVudCQwIiwidGFnZ2VkIiwidDEwNSIsIm9wdF90YWdnZWQiLCJ0YWdnZWRFdmVudCIsIm9wdF90YWdnZWRFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInJlcSIsImMiLCJub3ciLCJsYXN0IiwiZHQiLCJkdCQwIiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZm9ybV9lbGVtZW50cyIsImkkMiIsInN0aCIsIm5hbWUkMSIsImxpc3QiLCJmaWxlIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwiZW1wdHlfZm9ybV9jb250ZW50cyIsInBvc3RfZm9ybV9jb250ZW50cyIsImNvbnRlbnRzIiwiZ2V0X2Zvcm1fY29udGVudHMiLCJyZWFkeXN0YXRlY2hhbmdlIiwidGltZW91dCIsIndvcmtlciIsImNyZWF0ZSIsImltcG9ydF9zY3JpcHRzIiwic2NyaXB0cyIsInNldF9vbm1lc3NhZ2UiLCJqc19oYW5kbGVyIiwicG9zdF9tZXNzYWdlIiwibXNnIiwid2ViU29ja2V0IiwiaXNfc3VwcG9ydGVkIiwiZGVmYXVsdENvbnRleHRBdHRyaWJ1dGVzIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsImdldENvbnRleHQiLCJjdHgiLCJnZXRDb250ZXh0V2l0aEF0dHJpYnV0ZXMiLCJhdHRyaWJzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsX3JlIiwicXVvdGVfcmVwbCIsImdsb2JhbF9yZXBsYWNlIiwic19ieSIsInJlcGxhY2VfZmlyc3QiLCJ0MjkiLCJmbGFncyIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlX3JlIiwicXVvdGUiLCJyZWdleHBfc3RyaW5nIiwicmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQiLCJpbnRlcnJ1cHQiLCJwbHVzX3JlIiwidXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmciLCJ1cmxkZWNvZGUiLCJ1cmxlbmNvZGUiLCJvcHQiLCJ3aXRoX3BsdXMiLCJwYXRoX29mX3BhdGhfc3RyaW5nIiwiYXV4IiwiaiIsIndvcmQiLCJlbmNvZGVfYXJndW1lbnRzIiwiZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmciLCJsZW4iLCJpbmRleCIsImRlY29kZV9hcmd1bWVudHMiLCJ1cmxfcmUiLCJmaWxlX3JlIiwidXJsX29mX2pzX3N0cmluZyIsImhhbmRsZSIsInBhdGhfc3RyIiwicHJvdF9zdHJpbmciLCJzc2wiLCJ1cmwiLCJ1cmxfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3VybCIsImZyYWciLCJhcmdzIiwicGF0aCIsInBvcnQiLCJob3N0IiwiZnJhZyQwIiwiYXJncyQwIiwicGF0aCQwIiwicG9ydCQwIiwiaG9zdCQwIiwiZnJhZyQxIiwiYXJncyQxIiwicGF0aCQxIiwiZGVmYXVsdF9odHRwX3BvcnQiLCJkZWZhdWx0X2h0dHBzX3BvcnQiLCJwcm90b2NvbCIsInBhdGhfc3RyaW5nIiwiYXJndW1lbnRzJDAiLCJnZXRfZnJhZ21lbnQiLCJzZXRfZnJhZ21lbnQiLCJ1IiwiYXNfc3RyaW5nIiwidXBkYXRlX2ZpbGUiLCJjb250ZW50Iiwib2MiLCJzZXRfY2hhbm5lbF9mbHVzaGVyIiwib3V0X2NoYW5uZWwiLCJmJDAiLCJzZXRfY2hhbm5lbF9maWxsZXIiLCJpbl9jaGFubmVsIiwibW91bnQiLCJwcmVmaXgiLCJ1bm1vdW50IiwianNfb2Zfb2NhbWxfdmVyc2lvbiIsImVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zIiwicmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwibm9kZSIsImJveCIsIm9icyIsInBlcmZvcm1hbmNlT2JzZXJ2ZXIiLCJlbnRyeV90eXBlcyIsImVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsImsiLCJyZW1vdmUiLCJmaW5kIiwianNvbiIsInJldml2ZXIiLCJpbnB1dF9yZXZpdmVyIiwidW5zYWZlX2lucHV0IiwibWxJbnQ2NF9jb25zdHIiLCJvdXRwdXRfcmV2aXZlciIsIm91dHB1dCIsInN0cmluZ19vZl9uYW1lIiwibmFtZV9vZl9zdHJpbmciLCJyZ2Jfb2ZfbmFtZSIsInJnYiIsImhzbCIsInN0cmluZ19vZl90IiwiYiQwIiwiZyQwIiwiciQwIiwiYiQxIiwiZyQxIiwiciQxIiwiYiQyIiwiZyQyIiwiciQyIiwiYSQxIiwiaCQwIiwiaGV4X29mX3JnYiIsImJsdWUiLCJncmVlbiIsInJlZCIsImluX3JhbmdlIiwianNfdF9vZl9qc19zdHJpbmciLCJyZ2JfcmUiLCJyZ2JfcGN0X3JlIiwicmdiYV9yZSIsInJnYmFfcGN0X3JlIiwiaHNsX3JlIiwiaHNsYV9yZSIsImpzIiwiY24iLCJtbCIsImZhaWwiLCJyZV9yZ2IiLCJyZV9yZ2JfcGN0IiwicmVfaHNsIiwiaV9vZl9zX28iLCJmX29mX3MiLCJhbHBoYSIsInJlZCQwIiwiZ3JlZW4kMCIsImJsdWUkMCIsImFscGhhJDAiLCJyZWQkMSIsImdyZWVuJDEiLCJibHVlJDEiLCJhbHBoYSQxIiwic3RyaW5nX29mX3QkMCIsImYkMSIsImYkMiIsImYkMyIsImYkNCIsImYkNSIsImYkNiIsImYkNyIsImYkOCIsImYkOSIsImYkMTAiLCJmJDExIiwiZiQxMiIsImpzJDAiLCJtbCQwIiwicmUiLCJzdHJpbmdfb2ZfdCQxIiwianMkMSIsIm1sJDEiLCJsaXN0ZW4iLCJ0YXJnZXQiLCJzdG9wX2xpc3RlbiIsInhtbG5zIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsImVxdWFsIiwieCIsInkiLCJjb21wYXJlIiwidG9faW50IiwicHAiLCJpbnRlcnNlY3QiLCJzeW1ib2wiLCJsZXR0ZXIiLCJub3RfbGV0dGVyIiwiZnJvbV9jaGFyIiwic2V4cCIsImZtdCIsInMiLCJwYWlyIiwicHAxIiwicHAyIiwidjIiLCJ2MSIsInRyaXBsZSIsInBwMyIsInYzIiwib3B0aW50IiwiaSIsInF1b3RlIiwicHBfb2xpc3QiLCJwcF9lbGVtIiwicHBfc3RyX2xpc3QiLCJ0b190b19zdHJpbmciLCJiIiwiY2FueSIsInVuaW9uIiwibCQwIiwibCIsImwkMiIsImwkMSIsInIiLCJjMiIsImMxIiwiciQwIiwiYzIkMCIsImMxJDAiLCJsJDMiLCJsJDQiLCJpbnRlciIsImRpZmYiLCJyJDEiLCJzaW5nbGUiLCJjIiwiYWRkIiwic2VxIiwiYyQwIiwib2Zmc2V0IiwibyIsIm1lbSIsInMkMCIsInJlbSIsImhhc2hfcmVjIiwiaiIsImhhc2giLCJwcmludF9vbmUiLCJjaCIsIml0ZXIiLCJ0IiwiZiIsInQkMCIsInhzIiwib25lX2NoYXIiLCJ2IiwidSIsImZvbGRfcmlnaHQiLCJpbml0IiwiY3NpbmdsZSIsImlzX2VtcHR5IiwicHJlcGVuZCIsIngkMCIsImQiLCJkJDAiLCJwaWNrIiwiZ2VuIiwiZXBzX2V4cHIiLCJoYXNoX2NvbWJpbmUiLCJoIiwiYWNjdSIsImVtcHR5IiwibWVyZ2VfbWFya3Nfb2Zmc2V0Iiwib2xkIiwibnciLCJtZXJnZSIsIm0iLCJhY2N1JDEiLCJhY2N1JDIiLCJhIiwiYWNjdSQwIiwiaWR4IiwibWFya3MiLCJtYXJrc19zZXRfaWR4IiwicHBfbWFya3MiLCJwcF9zZW0iLCJrIiwicHBfcmVwX2tpbmQiLCJlIiwiZSQwIiwiZSQxIiwiZSQyIiwiayQwIiwiZSQzIiwiaSQwIiwiZmlyc3QiLCJyZXMiLCJjcmVhdGVfaWRzIiwibWtfZXhwciIsImlkcyIsImRlZiIsImVtcHR5JDAiLCJjc3QiLCJhbHQiLCJraW5kIiwiaXNfZXBzIiwiZXhwciIsImVwcyIsInJlcCIsInNlbSIsIm1hcmsiLCJwbWFyayIsImVyYXNlIiwibSQwIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZW5hbWUiLCJ6IiwieSQwIiwiZyIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsInIxIiwiZTEiLCJsMSQxIiwicjIiLCJlMiIsImwyJDEiLCJyMSQwIiwiZTEkMCIsIm1hcmtzMSIsInIyJDAiLCJlMiQwIiwibWFya3MyIiwicjEkMSIsIm1hcmtzMSQwIiwicjIkMSIsIm1hcmtzMiQwIiwiaGFzaCQwIiwibWFya3MkMCIsImFjY3UkMyIsInRzZXEiLCJwcmludF9zdGF0ZV9yZWMiLCJwcmludF9zdGF0ZV9sc3QiLCJwcCQwIiwiZHVtbXkiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInBwX3JlIiwicmUiLCJncm91cF9jb3VudCIsImdyb3VwX25hbWVzIiwiY2F0ZWdvcnkiLCJjb2xvciIsImR1bW15X25leHQiLCJ1bmtub3duX3N0YXRlIiwiYnJlYWskMCIsImZpbmRfc3RhdGUiLCJuY29sIiwiYnJlYWtfc3RhdGUiLCJpbmZvIiwicG9zIiwidmFsaWRhdGUiLCJnZXRfY29sb3IiLCJzbGVuIiwic2Nhbl9zdHIiLCJpbml0aWFsX3N0YXRlIiwiZ3JvdXBzIiwicG9zJDMiLCJsYXN0IiwiaW5mbyQwIiwic3QkNSIsInBvcyQ0Iiwic3QkMyIsInJlYWxfYyIsInN0JDQiLCJwb3MkMCIsInBvcyQxIiwic3QkMSIsInN0JDIiLCJwb3MkMiIsImZpbmFsX2JvdW5kYXJ5X2NoZWNrIiwiZmluYWxfY2F0IiwicmVzJDAiLCJtYXRjaF9zdHIiLCJwYXJ0aWFsIiwiaW5pdGlhbF9jYXQiLCJzdGF0dXMkMCIsInBtYXJrcyIsIm5vX21hdGNoX3N0YXJ0c19iZWZvcmUiLCJjc2VxIiwiY2FkZCIsInZpZXciLCJ2YXIkMCIsInJlbCIsInNxIiwicmUkMCIsInJlJDEiLCJjJDEiLCJjJDIiLCJjJDMiLCJjJDQiLCJjJDUiLCJjJDYiLCJpc19jaGFyc2V0IiwiY3VwcGVyIiwiY2xvd2VyIiwiY2FscGhhIiwiY2RpZ2l0IiwiY2FsbnVtIiwiY3dvcmQiLCJ4MSIsIngyIiwieDEkMCIsIngyJDAiLCJlcV9saXN0IiwiajIiLCJpMiIsIngyJDEiLCJqMSIsImkxIiwieDEkMSIsIngyJDIiLCJzZW0yIiwieDEkMiIsInNlbTEiLCJ4MiQzIiwiazIiLCJ4MSQzIiwiazEiLCJ4MiQ0IiwieDEkNCIsIngyJDUiLCJ4MSQ1IiwieDIkNiIsIngxJDYiLCJ4MiQ3IiwieDEkNyIsImwyJDIiLCJsMSQyIiwieDIkOCIsIngyJDkiLCJ4MSQ4IiwieDEkOSIsIm0yIiwic2VxdWVuY2UiLCJtZXJnZV9zZXF1ZW5jZXMiLCJlbmZvcmNlX2tpbmQiLCJjciIsInRyYW5zbGF0ZSIsImlnbl9jYXNlIiwibmFtZXMiLCJjYWNoZSIsImlnbl9ncm91cCQwIiwiZ3JlZWR5JDAiLCJ0cmFuc19zZXEiLCJtZXJnZWRfc2VxdWVuY2VzIiwia2luZCQxIiwiY3IkMCIsImokMCIsImtpbmQkMiIsImtpbmQkMyIsImNyJDEiLCJncmVlZHkkMSIsInAiLCJuYW1lIiwia2luZCQ0IiwiY3IkMiIsInIkNSIsImtpbmQkNSIsImNyJDMiLCJyJDYiLCJpJDEiLCJraW5kJDYiLCJjciQ0IiwiaWduX2dyb3VwIiwiZ3JlZWR5IiwiYXNfc2V0IiwiaGFuZGxlX2Nhc2UiLCJpZ25fY2FzZSQwIiwiciQ3IiwiciQ4IiwiciQ5IiwiciQxMCIsInIkMTEiLCJyJDEyIiwibCQ1IiwiciQxMyIsInIkMTQiLCJyJDE1IiwiYW5jaG9yZWQiLCJlcHNpbG9uIiwicmVwbiIsInJlcDEiLCJvcHQiLCJib3ciLCJlb3ciLCJ3b3JkIiwiYm9zIiwiZW9zIiwid2hvbGVfc3RyaW5nIiwibG9uZ2VzdCIsInNob3J0ZXN0Iiwibm9uX2dyZWVkeSIsImdyb3VwIiwibm9fZ3JvdXAiLCJuZXN0Iiwic2V0IiwicmciLCJjb21wbCIsImFueSIsIm5vdG5sIiwibG93ZXIiLCJ1cHBlciIsImFscGhhIiwiZGlnaXQiLCJhbG51bSIsIndvcmRjIiwiYXNjaWkiLCJibGFuayIsImNudHJsIiwiZ3JhcGgiLCJwcmludCIsInB1bmN0Iiwic3BhY2UiLCJ4ZGlnaXQiLCJjYXNlJDAiLCJub19jYXNlIiwiY29tcGlsZSIsInJlZ2V4cCQwIiwicmVnZXhwIiwibG5sIiwiY29sb3JpemUiLCJyZWdleHAkMSIsInJlZ2V4cCQyIiwibmVlZF9sbmwiLCJuY29sb3IiLCJjb2xvcnMiLCJsbmwkMCIsIm5jb2xvciQwIiwiaW5pdGlhbCIsImV4ZWNfaW50ZXJuYWwiLCJzdGgiLCJzdGgkMCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwic3RoJDEiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInN0aCQyIiwicGVyaW9kIiwic3RoJDMiLCJleHBhbmRfYnJhY2VzIiwic3RoJDQiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9zbGFzaCQwIiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld2xpbmUiLCJmbWFwIiwiZiIsIm5pbCIsInNpbmdsZXRvbiIsIngiLCJjb25zIiwieHMiLCJhcHBlbmQiLCJ5IiwibWFwIiwib2ZfbGlzdCIsImwiLCJhIiwiYiIsIm1rIiwiY2hpbGRyZW4iLCJzZXEiLCJjaGlsZHJlbiQwIiwic2VxJDAiLCJyZXN0IiwicSIsImF0dHJzIiwibmFtZSIsInYiLCJyZXN0JDAiLCJzdWJfY2hpbGRyZW4iLCJjaGlsZHJlbiQxIiwic2VxJDEiLCJzIiwiY2hpbGRyZW4kMiIsInNlcSQyIiwicyQwIiwiY2hpbGRyZW4kMyIsIm9mX3NlcSIsImFkZF91bnNhZmVfY2hhciIsImMiLCJlbmNvZGVfdW5zYWZlX2NoYXIiLCJlbmNvZGVfdW5zYWZlX2NoYXJfYW5kX2F0IiwiY29tcG9zZV9kZWNsIiwib3B0Iiwic3RoIiwidmVyc2lvbiIsInN0aCQwIiwiZW5jb2RpbmciLCJjb21wb3NlX2RvY3R5cGUiLCJkdCIsImFyZ3MiLCJwcF9hcmdzIiwiZm10IiwicmVfZW5kX2NvbW1lbnQiLCJwcF9udW1iZXIiLCJ2aW50IiwiczEiLCJzMiIsIm4iLCJpIiwiaSQwIiwibiQwIiwic3RyaW5nX29mX251bWJlciIsIm5vcm1hbGl6ZSIsInNyYyIsIndhcm4iLCJidWZmZXIiLCJkIiwiY29kZSIsIm5vcm1hbGl6ZV9odG1sIiwidSIsInUkMCIsInBwX25vb3AiLCJvcGVuX2JveCIsImluZGVudCIsImNsb3NlX2JveCIsInNwIiwiY3V0Iiwic2V0IiwiaXNfZW1wdHl0YWciLCJwcF9lbmNvZGUiLCJlbmNvZGUiLCJwcF9zZXAiLCJwcF9hdHRyaWJfdmFsdWUiLCJzbGlzdCIsInNlcCIsInBwX2F0dHJpYiIsInBwX2F0dHJpYnMiLCJwcF90YWdfYW5kX2F0dHJpYnMiLCJ0YWciLCJwcF9jbG9zZWR0YWciLCJwcF90YWciLCJwcF9lbHRzIiwicHBfZWx0IiwiZWx0IiwidGV4dGUiLCJnIiwidGV4dGUkMCIsInRleHRlJDEiLCJlIiwieGhfYXR0cnMiLCJ4aF90YWdsaXN0IiwieGhfYXR0cnMkMCIsIm5hbWUkMCIsInBwIiwic3ltYm9sIiwic2VwYXJhdG9yX3RvX3N0cmluZyIsImF0dHJpYl92YWx1ZV90b19zdHJpbmciLCJhdHRyaWJfdG9fc3RyaW5nIiwieGhfcHJpbnRfYXR0cnMiLCJxdWV1ZSIsImF0dHIiLCJ4aF9wcmludF9jbG9zZWR0YWciLCJ4aF9wcmludF90YWciLCJ0YWdsaXN0IiwieGhfcHJpbnRfdGFnbGlzdCIsInByaW50X25vZGVzIiwidGFnbGlzdCQwIiwidGFnbGlzdCQxIiwicHJpbnRfbGlzdCIsImZvcmV0IiwicHJpbnQiLCJkb2MiLCJhZHZlcnQiLCJkb2MkMCIsImEkMCIsImRvYyQxIiwiZW1wdHkiLCJjb25jYXQiLCJmMSIsImYyIiwicHV0IiwibWFrZSIsIm91dHB1dCIsImFtYXAxIiwiYXR0cmlicyIsImVsdHMiLCJhdHRyaWJzJDAiLCJhbWFwIiwiYWRkX2Zsb2F0X2F0dHJpYiIsInZhbHVlIiwiaGVhZCIsInRhaWwiLCJ0YWlsJDAiLCJtYXBfZmxvYXRfYXR0cmliIiwiaXNfYXR0cmliIiwiYXV4IiwiYWRkX2ludF9hdHRyaWIiLCJybV9hdHRyaWIiLCJtYXBfaW50X2F0dHJpYiIsImFkZF9zdHJpbmdfYXR0cmliIiwibWFwX3N0cmluZ19hdHRyaWIiLCJhZGRfc3BhY2Vfc2VwX2F0dHJpYiIsInZhbHVlcyIsImFkZF9jb21tYV9zZXBfYXR0cmliIiwicm1fYXR0cmliX2Zyb21fbGlzdCIsImlzX3ZhbHVlIiwidmFsdWVzJDAiLCJtYXBfc3RyaW5nX2F0dHJpYl9pbl9saXN0IiwiZm9sZCIsIm9mX2VtcHR5Iiwib2ZfY29tbWVudCIsIm9mX3R4dCIsIm9mX2VuY29kZWRwY2RhdGEiLCJvZl9lbnRpdHkiLCJvZl9sZWFmIiwib2Zfbm9kZSIsInMkMSIsInMkMiIsImFsbF9lbnRpdGllcyIsImVuYW1lIiwiZmxhdG1hcCIsInRyYW5zbGF0ZSIsInJvb3RfbGVhZiIsInJvb3Rfbm9kZSIsInN1Yl9sZWFmIiwic3ViX25vZGUiLCJ1cGRhdGVfc3RhdGUiLCJzdGF0ZSIsImNvbnRlbnRfdHlwZSIsInN0YW5kYXJkIiwibmFtZXNwYWNlIiwiY3N0JDEiLCJzdHJpbmdfb2ZfaXJpIiwidG9fc3RyaW5nIiwidW5pdCIsInVuaXQkMCIsImFuZ2xlX25hbWVzIiwic3RyaW5nX29mX2FuZ2xlIiwibGVuZ3RoX25hbWVzIiwic3RyaW5nX29mX2xlbmd0aCIsImxpc3QiLCJzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MiLCJzdHJpbmdfb2ZfcGFpbnQiLCJpcmkiLCJzdHJpbmdfb2ZfZmlsbF9ydWxlIiwiZG9jdHlwZSIsInN0cmluZ19vZl91cmkiLCJ1cmlfb2Zfc3RyaW5nIiwidG90IiwidG90bCIsInRvZWx0IiwidG9lbHRsIiwidG9fYXR0cmliIiwibnVsbGFyeSIsInVuYXJ5Iiwic3RhciIsInRvX3htbGF0dHJpYnMiLCJmbG9hdF9hdHRyaWIiLCJzdHJpbmdfYXR0cmliIiwic3RyaW5nX29mX2Nvb3JkIiwic3RyaW5nX29mX2xlbmd0aHMiLCJ1c2VyX2F0dHJpYiIsImNvbG9yX2F0dHJpYiIsIm1ldGFkYXRhIiwiZm9yZWlnbk9iamVjdCIsInR4dCIsImFfdmVyc2lvbiIsImFfYmFzZVByb2ZpbGUiLCJhX3giLCJhX3kiLCJhX3dpZHRoIiwiYV9oZWlnaHQiLCJhX3ByZXNlcnZlQXNwZWN0UmF0aW8iLCJhX2NvbnRlbnRTY3JpcHRUeXBlIiwiYV9jb250ZW50U3R5bGVUeXBlIiwiYV96b29tQW5kUGFuIiwiYV9ocmVmIiwiYV94bGlua19ocmVmIiwiYV9yZXF1aXJlZEZlYXR1cmVzIiwiYV9yZXF1aXJlZEV4dGVuc2lvbnMiLCJhX3N5c3RlbUxhbmd1YWdlIiwiYV9leHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZCIsImFfaWQiLCJhX3VzZXJfZGF0YSIsImFfeG1sX2Jhc2UiLCJhX3htbF9sYW5nIiwiYV94bWxfc3BhY2UiLCJhX3R5cGUiLCJhX21lZGlhIiwiYV94bGlua190aXRsZSIsImFfY2xhc3MiLCJhX3N0eWxlIiwiYV90cmFuc2Zvcm0iLCJhX3ZpZXdCb3giLCJhX2QiLCJhX3BhdGhMZW5ndGgiLCJhX3J4IiwiYV9yeSIsImFfY3giLCJhX2N5IiwiYV9yIiwiYV94MSIsImFfeTEiLCJhX3gyIiwiYV95MiIsImFfcG9pbnRzIiwiYV94X2xpc3QiLCJhX3lfbGlzdCIsImFfZHgiLCJhX2R5IiwiYV9keF9saXN0IiwiYV9keV9saXN0IiwiYV9sZW5ndGhBZGp1c3QiLCJhX3RleHRMZW5ndGgiLCJhX3RleHRfYW5jaG9yIiwiYV90ZXh0X2RlY29yYXRpb24iLCJhX3RleHRfcmVuZGVyaW5nIiwiYV9yb3RhdGUiLCJhX3N0YXJ0T2Zmc2V0IiwiYV9tZXRob2QiLCJhX3NwYWNpbmciLCJhX2dseXBoUmVmIiwiYV9mb3JtYXQiLCJhX21hcmtlclVuaXRzIiwiYV9yZWZYIiwiYV9yZWZZIiwiYV9tYXJrZXJXaWR0aCIsImFfbWFya2VySGVpZ2h0IiwiYV9vcmllbnQiLCJhX2xvY2FsIiwiYV9yZW5kZXJpbmdfaW50ZW50IiwiYV9ncmFkaWVudFVuaXRzIiwiYV9ncmFkaWVudFRyYW5zZm9ybSIsImFfc3ByZWFkTWV0aG9kIiwiYV9meCIsImFfZnkiLCJhX29mZnNldCIsImFfcGF0dGVyblVuaXRzIiwiYV9wYXR0ZXJuQ29udGVudFVuaXRzIiwiYV9wYXR0ZXJuVHJhbnNmb3JtIiwiYV9jbGlwUGF0aFVuaXRzIiwiYV9tYXNrVW5pdHMiLCJhX21hc2tDb250ZW50VW5pdHMiLCJhX3ByaW1pdGl2ZVVuaXRzIiwiYV9maWx0ZXJSZXMiLCJhX3Jlc3VsdCIsImFfaW4iLCJhX2luMiIsImFfYXppbXV0aCIsImFfZWxldmF0aW9uIiwiYV9wb2ludHNBdFgiLCJhX3BvaW50c0F0WSIsImFfcG9pbnRzQXRaIiwiYV9zcGVjdWxhckV4cG9uZW50IiwiYV9zcGVjdWxhckNvbnN0YW50IiwiYV9saW1pdGluZ0NvbmVBbmdsZSIsImFfbW9kZSIsImFfZmVDb2xvck1hdHJpeF90eXBlIiwiYV92YWx1ZXMiLCJhX3RyYW5zZmVyX3R5cGUiLCJhX3RhYmxlVmFsdWVzIiwiYV9pbnRlcmNlcHQiLCJhX2FtcGxpdHVkZSIsImFfZXhwb25lbnQiLCJhX3RyYW5zZmVyX29mZnNldCIsImFfZmVDb21wb3NpdGVfb3BlcmF0b3IiLCJhX2sxIiwiYV9rMiIsImFfazMiLCJhX2s0IiwiYV9vcmRlciIsImFfa2VybmVsTWF0cml4IiwiYV9kaXZpc29yIiwiYV9iaWFzIiwiYV9rZXJuZWxVbml0TGVuZ3RoIiwiYV90YXJnZXRYIiwiYV90YXJnZXRZIiwiYV9lZGdlTW9kZSIsImFfcHJlc2VydmVBbHBoYSIsImFfc3VyZmFjZVNjYWxlIiwiYV9kaWZmdXNlQ29uc3RhbnQiLCJhX3NjYWxlIiwiYV94Q2hhbm5lbFNlbGVjdG9yIiwiYV95Q2hhbm5lbFNlbGVjdG9yIiwiYV9zdGREZXZpYXRpb24iLCJhX2ZlTW9ycGhvbG9neV9vcGVyYXRvciIsImFfcmFkaXVzIiwiYV9iYXNlRnJlbnF1ZW5jeSIsImFfbnVtT2N0YXZlcyIsImFfc2VlZCIsImFfc3RpdGNoVGlsZXMiLCJhX2ZlVHVyYnVsZW5jZV90eXBlIiwiYV94bGlua19zaG93IiwiYV94bGlua19hY3R1YXRlIiwiYV90YXJnZXQiLCJhX3ZpZXdUYXJnZXQiLCJhX2F0dHJpYnV0ZU5hbWUiLCJhX2F0dHJpYnV0ZVR5cGUiLCJhX2JlZ2luIiwiYV9kdXIiLCJhX21pbiIsImFfbWF4IiwiYV9yZXN0YXJ0IiwiYV9yZXBlYXRDb3VudCIsImFfcmVwZWF0RHVyIiwiYV9maWxsIiwiYV9hbmltYXRpb25fZmlsbCIsImFfZmlsbF9ydWxlIiwiYV9jYWxjTW9kZSIsImFfYW5pbWF0aW9uX3ZhbHVlcyIsImFfa2V5VGltZXMiLCJhX2tleVNwbGluZXMiLCJhX2Zyb20iLCJhX3RvIiwiYV9ieSIsImFfYWRkaXRpdmUiLCJhX2FjY3VtdWxhdGUiLCJhX2tleVBvaW50cyIsImFfcGF0aCIsImFfYW5pbWF0ZVRyYW5zZm9ybV90eXBlIiwiYV9ob3Jpel9vcmlnaW5feCIsImFfaG9yaXpfb3JpZ2luX3kiLCJhX2hvcml6X2Fkdl94IiwiYV92ZXJ0X29yaWdpbl94IiwiYV92ZXJ0X29yaWdpbl95IiwiYV92ZXJ0X2Fkdl95IiwiYV91bmljb2RlIiwiYV9nbHlwaF9uYW1lIiwiYV9vcmllbnRhdGlvbiIsImFfYXJhYmljX2Zvcm0iLCJhX2xhbmciLCJhX3UxIiwiYV91MiIsImFfZzEiLCJhX2cyIiwiYV9rIiwiYV9mb250X2ZhbWlseSIsImFfZm9udF9zdHlsZSIsImFfZm9udF92YXJpYW50IiwiYV9mb250X3dlaWdodCIsImFfZm9udF9zdHJldGNoIiwiYV9mb250X3NpemUiLCJhX3VuaWNvZGVfcmFuZ2UiLCJhX3VuaXRzX3Blcl9lbSIsImFfc3RlbXYiLCJhX3N0ZW1oIiwiYV9zbG9wZSIsImFfY2FwX2hlaWdodCIsImFfeF9oZWlnaHQiLCJhX2FjY2VudF9oZWlnaHQiLCJhX2FzY2VudCIsImFfd2lkdGhzIiwiYV9iYm94IiwiYV9pZGVvZ3JhcGhpYyIsImFfYWxwaGFiZXRpYyIsImFfbWF0aGVtYXRpY2FsIiwiYV9oYW5naW5nIiwiYV92aWRlb2dyYXBoaWMiLCJhX3ZfYWxwaGFiZXRpYyIsImFfdl9tYXRoZW1hdGljYWwiLCJhX3ZfaGFuZ2luZyIsImFfdW5kZXJsaW5lX3Bvc2l0aW9uIiwiYV91bmRlcmxpbmVfdGhpY2tuZXNzIiwiYV9zdHJpa2V0aHJvdWdoX3Bvc2l0aW9uIiwiYV9zdHJpa2V0aHJvdWdoX3RoaWNrbmVzcyIsImFfb3ZlcmxpbmVfcG9zaXRpb24iLCJhX292ZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaW5nIiwiYV9uYW1lIiwiYV9hbGlnbm1lbnRfYmFzZWxpbmUiLCJhX2RvbWluYW50X2Jhc2VsaW5lIiwiYV9vbmFib3J0IiwiYV9vbmFjdGl2YXRlIiwiYV9vbmJlZ2luIiwiYV9vbmVuZCIsImFfb25lcnJvciIsImFfb25mb2N1c2luIiwiYV9vbmZvY3Vzb3V0IiwiYV9vbmxvYWQiLCJhX29ucmVwZWF0IiwiYV9vbnJlc2l6ZSIsImFfb25zY3JvbGwiLCJhX29udW5sb2FkIiwiYV9vbnpvb20iLCJhX29uY2xpY2siLCJhX29ubW91c2Vkb3duIiwiYV9vbm1vdXNldXAiLCJhX29ubW91c2VvdmVyIiwiYV9vbm1vdXNlb3V0IiwiYV9vbm1vdXNlbW92ZSIsImFfb250b3VjaHN0YXJ0IiwiYV9vbnRvdWNoZW5kIiwiYV9vbnRvdWNobW92ZSIsImFfb250b3VjaGNhbmNlbCIsImFfc3RvcF9jb2xvciIsImFfc3RvcF9vcGFjaXR5IiwiYV9zdHJva2UiLCJhX3N0cm9rZV93aWR0aCIsImFfc3Ryb2tlX2xpbmVjYXAiLCJhX3N0cm9rZV9saW5lam9pbiIsImFfc3Ryb2tlX21pdGVybGltaXQiLCJhX3N0cm9rZV9kYXNoYXJyYXkiLCJhX3N0cm9rZV9kYXNob2Zmc2V0IiwiYV9zdHJva2Vfb3BhY2l0eSIsInN2ZyIsImRlZnMiLCJkZXNjIiwidGl0bGUiLCJ1c2UiLCJpbWFnZSIsInN3aXRjaCQwIiwic3R5bGUiLCJwYXRoIiwicmVjdCIsImNpcmNsZSIsImVsbGlwc2UiLCJsaW5lIiwicG9seWxpbmUiLCJwb2x5Z29uIiwidGV4dCIsInRzcGFuIiwidHJlZiIsInRleHRQYXRoIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImdseXBoUmVmIiwibWFya2VyIiwiY29sb3JfcHJvZmlsZSIsImxpbmVhckdyYWRpZW50IiwicmFkaWFsR3JhZGllbnQiLCJzdG9wIiwicGF0dGVybiIsImNsaXBQYXRoIiwiZmlsdGVyIiwiZmVEaXN0YW50TGlnaHQiLCJmZVBvaW50TGlnaHQiLCJmZVNwb3RMaWdodCIsImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlRnVuY0EiLCJmZUZ1bmNHIiwiZmVGdW5jQiIsImZlRnVuY1IiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVGbG9vZCIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSIsImN1cnNvciIsInZpZXciLCJzY3JpcHQiLCJhbmltYXRlIiwiYW5pbWF0ZU1vdGlvbiIsIm1wYXRoIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImZvbnQiLCJnbHlwaCIsIm1pc3NpbmdfZ2x5cGgiLCJoa2VybiIsInZrZXJuIiwiZm9udF9mYWNlIiwiZm9udF9mYWNlX3NyYyIsImZvbnRfZmFjZV91cmkiLCJmb250X2ZhY2VfZm9ybWF0IiwiZm9udF9mYWNlX25hbWUiLCJkb2NfdG9lbHQiLCJkYXRhIiwibGVhZiIsIm5vZGUiLCJjb2VyY2VfZWx0IiwiZmxvYXRfYXR0cmliJDAiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiQwIiwidXJpX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJjb21tYV9zZXBfYXR0cmliIiwic3RyaW5nX29mX2FsaWdubWVudF9iYXNlbGluZSIsInN0cmluZ19vZl9iaWdfdmFyaWFudCIsInN0cmluZ19vZl9ib29sIiwic3RyaW5nX29mX2Nvb3JkcyIsInN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSIsInN0cmluZ19vZl9pbl92YWx1ZSIsInN0cmluZ19vZl9pbnQiLCJzdHJpbmdfb2ZfcGVyY2VudGFnZSIsInN0cmluZ19vZl9mb3VyZmxvYXRzIiwic3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iIiwic3RyaW5nX29mX251bWJlcnMiLCJzdHJpbmdfb2ZfbnVtYmVyc19zZW1pY29sb24iLCJzdHJpbmdfb2Zfb2Zmc2V0IiwieCQwIiwic3RyaW5nX29mX29yaWVudCIsInN0cmluZ19vZl9zdHJva2VkYXNoYXJyYXkiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtIiwieCQyIiwiYW5nbGUiLCJhbmdsZSQwIiwiYW5nbGUkMSIsIngkMSIsInN0cmluZ19vZl90cmFuc2Zvcm1zIiwiYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyIsImVtcHR5dGFncyIsImJvb2xfYXR0cmliIiwiY29uc3RhbnRfYXR0cmliIiwibGlua3R5cGVzX2F0dHJpYiIsIm1lZGlhZGVzY19hdHRyaWIiLCJzcmNzZXRfYXR0cmliIiwiYV90aXRsZSIsImFfcHJvcGVydHkiLCJhX29uYWZ0ZXJwcmludCIsImFfb25iZWZvcmVwcmludCIsImFfb25iZWZvcmV1bmxvYWQiLCJhX29uYmx1ciIsImFfb25jYW5wbGF5IiwiYV9vbmNhbnBsYXl0aHJvdWdoIiwiYV9vbmNoYW5nZSIsImFfb25jbG9zZSIsImFfb25kdXJhdGlvbmNoYW5nZSIsImFfb25lbXB0aWVkIiwiYV9vbmVuZGVkIiwiYV9vbmZvY3VzIiwiYV9vbmZvcm1jaGFuZ2UiLCJhX29uZm9ybWlucHV0IiwiYV9vbmhhc2hjaGFuZ2UiLCJhX29uaW5wdXQiLCJhX29uaW52YWxpZCIsImFfb25vZmZsaW5lIiwiYV9vbm9ubGluZSIsImFfb25wYXVzZSIsImFfb25wbGF5IiwiYV9vbnBsYXlpbmciLCJhX29ucGFnZWhpZGUiLCJhX29ucGFnZXNob3ciLCJhX29ucG9wc3RhdGUiLCJhX29ucHJvZ3Jlc3MiLCJhX29ucmF0ZWNoYW5nZSIsImFfb25yZWFkeXN0YXRlY2hhbmdlIiwiYV9vbnJlZG8iLCJhX29uc2Vla2VkIiwiYV9vbnNlZWtpbmciLCJhX29uc2VsZWN0IiwiYV9vbnNob3ciLCJhX29uc3RhbGxlZCIsImFfb25zdG9yYWdlIiwiYV9vbnN1Ym1pdCIsImFfb25zdXNwZW5kIiwiYV9vbnRpbWV1cGRhdGUiLCJhX29udW5kbyIsImFfb252b2x1bWVjaGFuZ2UiLCJhX29ud2FpdGluZyIsImFfb25sb2FkZWRkYXRhIiwiYV9vbmxvYWRlZG1ldGFkYXRhIiwiYV9vbmxvYWRzdGFydCIsImFfb25tZXNzYWdlIiwiYV9vbm1vdXNld2hlZWwiLCJhX29uY29udGV4dG1lbnUiLCJhX29uZGJsY2xpY2siLCJhX29uZHJhZyIsImFfb25kcmFnZW5kIiwiYV9vbmRyYWdlbnRlciIsImFfb25kcmFnbGVhdmUiLCJhX29uZHJhZ292ZXIiLCJhX29uZHJhZ3N0YXJ0IiwiYV9vbmRyb3AiLCJhX29ua2V5cHJlc3MiLCJhX29ua2V5ZG93biIsImFfb25rZXl1cCIsImFfeG1sbnMiLCJhX21hbmlmZXN0IiwiYV9jaXRlIiwiYV9hY2Nlc3NrZXkiLCJhX2NoYXJzZXQiLCJhX2FjY2VwdF9jaGFyc2V0IiwiYV9hY2NlcHQiLCJhX2hyZWZsYW5nIiwiYV9kb3dubG9hZCIsImZpbGUiLCJhX3JlbCIsImFfdGFiaW5kZXgiLCJhX21pbWVfdHlwZSIsImFfYWx0IiwicCIsImFfc3JjIiwiYV9sYWJlbF9mb3IiLCJhX291dHB1dF9mb3IiLCJhX3NlbGVjdGVkIiwiYV90ZXh0X3ZhbHVlIiwiYV9pbnRfdmFsdWUiLCJhX3ZhbHVlIiwiYV9mbG9hdF92YWx1ZSIsImFfYWN0aW9uIiwiYV9mb3JtbWV0aG9kIiwiYV9lbmN0eXBlIiwiYV9jaGVja2VkIiwiYV9kaXNhYmxlZCIsImFfcmVhZG9ubHkiLCJhX21heGxlbmd0aCIsImFfbWlubGVuZ3RoIiwiYV9hbGxvd2Z1bGxzY3JlZW4iLCJhX2FsbG93cGF5bWVudHJlcXVlc3QiLCJhX3JlZmVycmVycG9saWN5IiwiYV9hdXRvY29tcGxldGUiLCJhX2FzeW5jIiwiYV9hdXRvZm9jdXMiLCJhX2F1dG9wbGF5IiwiYV9tdXRlZCIsImFfY3Jvc3NvcmlnaW4iLCJhX2ludGVncml0eSIsImFfbWVkaWFncm91cCIsImFfY2hhbGxlbmdlIiwiYV9jb250ZW50ZWRpdGFibGUiLCJjZSIsImFfY29udGV4dG1lbnUiLCJhX2NvbnRyb2xzIiwiYV9kaXIiLCJhX2RyYWdnYWJsZSIsImFfZm9ybSIsImFfZm9ybWFjdGlvbiIsImFfZm9ybWVuY3R5cGUiLCJhX2Zvcm1ub3ZhbGlkYXRlIiwiYV9mb3JtdGFyZ2V0IiwiYV9oaWRkZW4iLCJhX2hpZ2giLCJhX2ljb24iLCJhX2lzbWFwIiwiYV9rZXl0eXBlIiwiYV9saXN0IiwiYV9sb29wIiwiYV9sb3ciLCJhX2lucHV0X21heCIsImFfaW5wdXRfbWluIiwiYV9pbnB1dG1vZGUiLCJhX25vdmFsaWRhdGUiLCJhX29wZW4iLCJhX29wdGltdW0iLCJhX3BhdHRlcm4iLCJhX3BsYWNlaG9sZGVyIiwiYV9wb3N0ZXIiLCJhX3ByZWxvYWQiLCJhX3B1YmRhdGUiLCJhX3JhZGlvZ3JvdXAiLCJhX3JlcXVpcmVkIiwiYV9yZXZlcnNlZCIsImFfc2FuZGJveCIsImFfc3BlbGxjaGVjayIsInNjIiwiYV9zY29wZWQiLCJhX3NlYW1sZXNzIiwiYV9zaXplcyIsInNpemVzIiwiYV9zcGFuIiwiYV9zcmNsYW5nIiwiYV9zcmNzZXQiLCJhX2ltZ19zaXplcyIsImFfc3RhcnQiLCJhX3N0ZXAiLCJzdGVwIiwiYV90cmFuc2xhdGUiLCJhX3dyYXAiLCJhX3NpemUiLCJhX2lucHV0X3R5cGUiLCJpdCIsImFfbWVudV90eXBlIiwiYV9jb21tYW5kX3R5cGUiLCJhX2J1dHRvbl90eXBlIiwiYnQiLCJhX3NjcmlwdF90eXBlIiwiYV9tdWx0aXBsZSIsImFfY29scyIsImFfcm93cyIsImFfc3VtbWFyeSIsImFfYWxpZ24iLCJhX2F4aXMiLCJhX2NvbHNwYW4iLCJhX2hlYWRlcnMiLCJhX3Jvd3NwYW4iLCJhX3Njb3BlIiwiYV9ib3JkZXIiLCJhX3J1bGVzIiwiYV9jaGFyIiwiYV9kYXRhIiwiYV9jb2RldHlwZSIsImFfZnJhbWVib3JkZXIiLCJhX21hcmdpbmhlaWdodCIsImFfbWFyZ2lud2lkdGgiLCJhX3Njcm9sbGluZyIsImFfY29udGVudCIsImFfaHR0cF9lcXVpdiIsImFfcm9sZSIsImFfYXJpYSIsInRlcm1pbmFsIiwicGx1cyIsIm9wdGlvbl9jb25zIiwiYm9keSIsImh0bWwiLCJjb250ZW50IiwiZm9vdGVyIiwiaGVhZGVyIiwic2VjdGlvbiIsIm5hdiIsImVudGl0eSIsInNwYWNlIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhncm91cCIsImFkZHJlc3MiLCJibG9ja3F1b3RlIiwiZGlhbG9nIiwiZGl2IiwicHJlIiwiYWJiciIsImJyIiwiY2l0ZSIsImRmbiIsImVtIiwia2JkIiwic2FtcCIsInNwYW4iLCJzdHJvbmciLCJ0aW1lIiwidmFyJDAiLCJkbCIsIm9sIiwidWwiLCJkZCIsImxpIiwiaHIiLCJzbWFsbCIsInN1YiIsInN1cCIsIm1hcmsiLCJycCIsInJ0IiwicnVieSIsIndiciIsImJkbyIsImRpciIsImFfZGF0ZXRpbWUiLCJhX3NoYXBlIiwiYV9jb29yZHMiLCJjb29yZHMiLCJhX3VzZW1hcCIsImFfZGVmZXIiLCJhX2xhYmVsIiwiYXJlYSIsImFsdCIsImRlbCIsImlucyIsIm5vc2NyaXB0IiwidGVtcGxhdGUiLCJhcnRpY2xlIiwiYXNpZGUiLCJtYWluIiwidmlkZW9fYXVkaW8iLCJzcmNzIiwidXJpIiwic3JjcyQwIiwiYXVkaW8iLCJ2aWRlbyIsImNhbnZhcyIsImNvbW1hbmQiLCJsYWJlbCIsIm1lbnUiLCJlbWJlZCIsInNvdXJjZSIsIm1ldGVyIiwib3V0cHV0X2VsdCIsImZvcm0iLCJpbnB1dCIsImtleWdlbiIsIm9wdGlvbiIsInNlbGVjdCIsInRleHRhcmVhIiwiYnV0dG9uIiwiZGF0YWxpc3QiLCJwcm9ncmVzcyIsImxlZ2VuZCIsImRldGFpbHMiLCJzdW1tYXJ5IiwiZmllbGRzZXQiLCJvcHRncm91cCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJjJDAiLCJjYXB0aW9uIiwidGFibGV4IiwiY29sdW1ucyIsInRoZWFkIiwidGZvb3QiLCJjb2x1bW5zJDAiLCJjb250ZW50JDAiLCJjb250ZW50JDEiLCJ0ZCIsInRoIiwidHIiLCJjb2xncm91cCIsImNvbCIsInRib2R5IiwiaWZyYW1lIiwib2JqZWN0IiwicGFyYW1zIiwiZWx0cyQwIiwiaW1nIiwicGljdHVyZSIsInRhaWxfbm9kZSIsIm1ldGEiLCJsaW5rIiwicmVsIiwiaHJlZiIsImJhc2UiLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwiZXZlbnQiLCJtc2ciLCJwIiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImNvbnMiLCJzbm9jIiwiaW5zZXJ0IiwidXBkYXRlIiwibW92ZSIsImluZGV4IiwiaGQiLCJ0bCIsInVwZGF0ZV9lcSIsImhhbmRsZSIsImRhdGEiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9lcSIsInNpbmdsZXRvbiIsInNpbmdsZXRvbl9zIiwiZmlyc3QiLCJlIiwicmVzdWx0IiwiY29uY2F0IiwidjEiLCJ2MiIsInNpemUxIiwic2l6ZTIiLCJzaXplX3dpdGhfcGF0Y2giLCJzaXpleCIsInNpemVfd2l0aF9zZXQiLCJ1cGRhdGVfcGF0Y2gxIiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMiIsInR1cGxlX2V2IiwicDEiLCJwMiIsIm1lcmdlZF9ldiIsInAyJDIiLCJwMiQzIiwicDEkMCIsInAyJDAiLCJzMiIsInMxIiwicDEkMSIsInMyJDAiLCJwMiQxIiwiaW52ZXJzZSIsInJldiIsInQiLCJmaWx0ZXIiLCJwcmVkIiwic2l6ZSIsImZpbHRlcl9saXN0IiwicmVzIiwidGhlaXJfaSIsIm15X2kiLCJteV9pJDAiLCJ0aGVpcl9pJDAiLCJyZXMkMCIsInRoZWlyX2kkMSIsIm5vcm1hbGlzZSIsInVwZGF0ZV9pbmRleF9pbnNlcnQiLCJpbnNlcnRfcG9zX2Z1bGxfbGlzdCIsInZpc2libGUiLCJpbnNlcnRfcG9zX2Z1bGxfbGlzdCQwIiwidXBkYXRhYmxlcyIsImRpc3BsYWNlZCIsImxlZnRfYWxvbmUiLCJkaXNwbGFjZWRfaW5fZmlsdGVyZWQiLCJ1cGRhdGFibGVzJDAiLCJ1cGRhdGVfaiIsImpfZnVsbF9saXN0Iiwial9maWx0ZXJlZF9saXN0IiwibmV3X2pfZmlsdGVyZWQiLCJpbnNlcnRfcG9zX2ZpbHRlcmVkIiwidXBkYXRlX2luZGV4X21vdmUiLCJmcm9tX2Z1bGxfbGlzdCIsInRvX2Z1bGxfbGlzdCIsInRvX2ZpbHRlcmVkIiwid2FzX3Zpc2libGUiLCJmb3J3YXJkIiwiaV9mdWxsIiwiZGVsdGEiLCJpX2ZpbHRlcmVkIiwibmV3X3ZhbCIsImlfZnVsbCQwIiwiZGVsdGEkMCIsImlfZmlsdGVyZWQkMCIsIm5ld192YWwkMCIsInRvX2ZpbHRlcmVkJDAiLCJjb252ZXJ0X3AiLCJyZW1vdmVfcG9zX2Z1bGxfbGlzdCIsInJldCIsIm5ld19qIiwibGFzdF9pIiwidXBkYXRlX3Bvc19mdWxsX2xpc3QiLCJvbGRfaiIsInVwZGF0ZV9qJDAiLCJ1cGRhdGFibGVzJDEiLCJub25lIiwidXBkYXRlX2okMSIsInByZXZpb3VzX3Bvc19maWx0ZXJlZCIsIm5ld19wb3NfZmlsdGVyZWRfbGlzdCIsIm9mZnNldF9mdWxsIiwib3JpZ2luX2Z1bGwiLCJvcmlnaW5fZnVsbCQwIiwiZGVzdF9mdWxsIiwib3JpZ2luX2ZpbHRlcmVkIiwiZGVzdF9maWx0ZXJlZCIsInNtYWxsX29uZXMiLCJmaWx0ZXJfZSIsImZvcl9hbGwiLCJmbiIsIm1heWJlX3VwZGF0ZSIsImluaXQiLCJ1cGRhdGVfaWR4X2FmdGVyIiwidXBkYXRlcyIsInYkMCIsImsiLCJrJDAiLCJnIiwia2V5IiwidyIsInckMCIsInYkMSIsImckMCIsImVtcHR5JDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaWFsb2ciLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaSQxIiwiaSIsImkkMCIsImluZGV4IiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsInByb21pc2UiLCJjbGVhcmVkJDAiLCJlbGVtZW50cyIsImVsZW1lbnQiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDIiLCJ4MSIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwidG9zcyQwIiwiZSIsImlkJDAiLCJ2YWx1ZSIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25fc3RyaW5nIiwiaWQiLCJwbG90UE5HJDAiLCJwbG90U3R5bGVJZCIsInBsb3REaXZJZCIsInRpdGxlIiwicGxvdE5hbWUiLCJwbG90U1ZHJDAiLCJzYXZlRmlsZSQwIiwiZGF0YSIsIm1pbWUiLCJmaWxlbmFtZSIsIm1ldGhvZF90b19zdHJpbmciLCJhamF4X3JlcXVlc3QiLCJ0aW1lb3V0IiwidXJsIiwibWV0aCIsInRpbWVvdXQkMCIsInN0YXR1cyIsInJlc3BvbnNlIiwiZGF0YSQwIiwiYXN5bmMiLCJsb2MiLCJ0YXNrIiwiZXhuIiwiZ3VpZCQwIiwibW9kYWwkMCIsImFjdGlvbiIsImVsZW1lbnRfZGF0YSIsImVsZW1lbnQiLCJsYWJlbCIsImNyZWF0ZV9zb3J0IiwiY2hpbGRyZW5fdmFsdWUiLCJtYXAiLCJoaWRlX2NvZGVtaXJyb3IiLCJzaG93X2NvZGVtaXJyb3IiLCJhdG9tIiwibGlzdCIsImxhYmVsIiwibGlzdF90cnVlIiwibGlzdF9mYWxzZSIsImxhYmVsX3RydWUiLCJsYWJlbF9mYWxzZSIsInNldF9lc2NhcGUiLCJmbXQiLCJlc2NhcGUiLCJmbHVzaDAiLCJwcmludDAiLCJ0YWdmMCIsImlzX3RhZyIsIm1vdCIsInRhZyIsIm1jdCIsInByaW50IiwicyIsInAiLCJuIiwidGFnZiIsImRlZmluZV9zdHlsZXMiLCJlc2NhcGUkMCIsImwiLCJ0YmwxIiwidGJsMiIsInN0eWxlIiwic3R5bGVfbmFtZSIsIm1hcmtfb3Blbl90YWciLCJtYXJrX2Nsb3NlX3RhZyIsImVzYyIsImVzYyQwIiwiczAiLCJzMSIsInBwX29wZW5feGJveCIsImluZGVudCIsImV4dHJhX2JveCIsIndyYXAiLCJvcGVuX3RhZyIsImNsb3NlX3RhZyIsInRhZ19zdHJpbmciLCJvIiwiZnByaW50X3QiLCJwYXJhbSQwIiwicCQwIiwiZnByaW50X2xpc3QiLCJwJDEiLCJjbCIsInNlcCIsIm9wIiwidGwiLCJoZCIsImZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCIsIngiLCJscCIsImxhYiIsImwkMCIsInAkMiIsImNsJDAiLCJzZXAkMCIsIm9wJDAiLCJpbmRlbnQkMCIsImYiLCJmcHJpbnRfb3B0X2xhYmVsIiwicGFyYW0iLCJjbCQxIiwib3AkMSIsImJhc2VfaW5kZW50Iiwic2VwX2luZGVudCIsImNsb3NlX2V4dHJhJDAiLCJvcGVuX2V4dHJhJDAiLCJjbG9zZV9leHRyYSIsIm9wZW5fZXh0cmEiLCJ0b19mb3JtYXR0ZXIiLCJpbml0X2FjYyIsIm1lcmdlX2FjYyIsImZvcmNlX2JyZWFrczEiLCJmb3JjZV9icmVha3MyIiwiZm9yY2VfYnJlYWtzMSQwIiwibWFwX25vZGUiLCJmb3JjZV9icmVha3MiLCJjaGlsZHJlbiIsImEiLCJiIiwibHAkMCIsImF1eCIsIngkMCIsImFjYyIsIm5ld19jaGlsZHJlbiIsImFjY3MiLCJhY2MkMCIsInh5cyIsInkiLCJ4MiIsIngxIiwicGFyYW0kMSIsImFjYzAiLCJhY2MxIiwibmV3X3gxIiwiYWNjMiIsIm5ld194MiIsImFjYyQxIiwiYWNjJDIiLCJuZXdfeCIsInRvX2J1ZmZlciIsIm9wdCIsImJ1ZiIsInN0aCIsInN0aCQwIiwic3R5bGVzIiwidG9fc3RyaW5nIiwidG9fY2hhbm5lbCIsIm9jIiwidG9fc3Rkb3V0IiwidG9fc3RkZXJyIiwiZnByaW50X3QkMCIsImxhYmVsJDAiLCJ0b19idWZmZXIkMCIsInRvX3N0cmluZyQwIiwidG9fZm9ybWF0dGVyJDAiLCJ0b19jaGFubmVsJDAiLCJ0b19zdGRvdXQkMCIsInRvX3N0ZGVyciQwIiwiZXJyb3IiLCJzIiwic3RyaW5nOF9vZl9pbnQiLCJ4IiwiaSIsInN0cmluZzRfb2ZfaW50IiwicHJpbnRfYml0cyIsIm9wdCIsImxlbiIsInN0aCIsInBvcyIsInNsZW4iLCJsZW4kMCIsImxlbiQxIiwiciIsImsiLCJqIiwiYyIsImludF9zaXplIiwiZHVtbXlfdHlwZV9pZCIsIm4iLCJjcmVhdGVfdHlwZV9pZCIsImVxdWFsIiwidDIiLCJ4MiIsInQxIiwieDEiLCJoYXNoIiwiY3JlYXRlIiwiY2xlYXIiLCJ0YmwiLCJwdXQiLCJwb3MwIiwiY3JlYXRlJDAiLCJjbGVhciQwIiwicHV0JDAiLCJnZXQiLCJ0cnlfcHJlcmVhZCIsImliIiwicmVhZCIsInBvcyQwIiwicmVhZF9jaGFyIiwiYyQwIiwicGVlayIsImZyb21fYnl0ZXMiLCJzdGgkMCIsInNocmxlbiIsImZyb21fc3RyaW5nIiwiZnJvbV9jaGFubmVsIiwiaWMiLCJuJDAiLCJyZW1fbGVuIiwidG9fcmVhZCIsImFjY3UiLCJhY2N1JDAiLCJyZWFsbHlfcmVhZCIsInJlYWxseV9leHRlbmQiLCJiIiwic2xlbjAiLCJyZXFsZW4iLCJmbHVzaF90b19vdXRwdXQiLCJhYnN0cmFjdF9vdXRwdXQiLCJmbHVzaF90b19jaGFubmVsIiwib2MiLCJtYWtlX3Jvb20iLCJjcmVhdGVfY2hhbm5lbF93cml0ZXIiLCJmbHVzaF9jaGFubmVsX3dyaXRlciIsImNyZWF0ZV9vdXRwdXRfd3JpdGVyIiwib3V0IiwiZXh0ZW5kIiwiYWxsb2MiLCJhZGRfc3ViIiwiYmxpdCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2NoYXIiLCJ1bnNhZmVfYWRkX2NoYXIiLCJhZGRfY2hhcjIiLCJjMSIsImMyIiwiYWRkX2NoYXI0IiwiYzMiLCJjNCIsInJlc2V0IiwiY29udGVudHMiLCJtIiwibWF4X2hpZ2hlc3RfYnl0ZSIsIm1heF92aW50X2J5dGVzIiwibSQwIiwiaCIsInVuc2lnbmVkX29mX3NpZ25lZCIsIndyaXRlX3V2aW50IiwiYnVmIiwiYnl0ZSQwIiwid3JpdGVfc3ZpbnQiLCJ1dmludF9vZl91aW50IiwiYnVmZmVyIiwic3ZpbnRfb2ZfaW50IiwicmVhZF91dmludCIsImF2YWlsIiwicmVhZF9zdmludCIsImNoZWNrX2VuZF9vZl9pbnB1dCIsInVpbnRfb2ZfdXZpbnQiLCJpbnRfb2Zfc3ZpbnQiLCJyZWFkX3N0cmVhbSIsIm9mX3N0cmluZyIsInN0IiwiaSQyIiwiaSQwIiwibiQxIiwiaSQxIiwiYSIsIm5leHQiLCJhJDAiLCJ3cml0ZV9zdHJlYW0iLCJ0b19zdHJpbmciLCJjaHVua19sZW4iLCJhY2MiLCJmbHVzaF9jaHVuayIsImwiLCJ0bCIsInRsJDAiLCJoZCIsIm4kMyIsIm4kMiIsInRlc3QiLCJzdCQwIiwibCQwIiwiYm9vbF90YWciLCJpbnQ4X3RhZyIsImludDE2X3RhZyIsImludDMyX3RhZyIsImludDY0X3RhZyIsImZsb2F0MzJfdGFnIiwiZmxvYXQ2NF90YWciLCJ1dmludF90YWciLCJzdmludF90YWciLCJzdHJpbmdfdGFnIiwiYXJyYXlfdGFnIiwidHVwbGVfdGFnIiwicmVjb3JkX3RhZyIsIm51bV92YXJpYW50X3RhZyIsInZhcmlhbnRfdGFnIiwidW5pdF90YWciLCJ0YWJsZV90YWciLCJzaGFyZWRfdGFnIiwibWFrZV9zaWduZWQiLCJoYXNoX25hbWUiLCJ3cml0ZV9oYXNodGFnIiwib2IiLCJoJDAiLCJoYXNfYXJnIiwiaCQxIiwiaCQyIiwiaCQzIiwic3RyaW5nX29mX2hhc2h0YWciLCJyZWFkX2hhc2h0YWciLCJjb250IiwieDAiLCJ4MyIsIng0IiwicmVhZF9maWVsZF9oYXNodGFnIiwid3JpdGVfbnVtdGFnIiwicmVhZF9udW10YWciLCJtYWtlX3VuaGFzaCIsInMkMCIsIndyaXRlX3RhZyIsIndyaXRlX3VudGFnZ2VkX3VuaXQiLCJ3cml0ZV91bnRhZ2dlZF9ib29sIiwid3JpdGVfdW50YWdnZWRfY2hhciIsIndyaXRlX3VudGFnZ2VkX2ludDgiLCJ3cml0ZV91bnRhZ2dlZF9pbnQxNiIsIndyaXRlX3VudGFnZ2VkX2ludDMyIiwiaGlnaCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0MzIiLCJmbG9hdF9lbmRpYW5uZXNzIiwicmVhZF91bnRhZ2dlZF9mbG9hdDY0IiwiaiQwIiwid3JpdGVfdW50YWdnZWRfZmxvYXQ2NCIsIndyaXRlX3VudGFnZ2VkX2ludDY0Iiwic2FmZXR5X3Rlc3QiLCJ5Iiwid3JpdGVfdW50YWdnZWRfc3RyaW5nIiwid3JpdGVfdW50YWdnZWRfdXZpbnQiLCJ3cml0ZV91bnRhZ2dlZF9zdmludCIsIndyaXRlX3VuaXQiLCJ3cml0ZV9ib29sIiwid3JpdGVfY2hhciIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQxNiIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9mbG9hdDMyIiwid3JpdGVfZmxvYXQ2NCIsIndyaXRlX3N0cmluZyIsIndyaXRlX3QiLCJ0YWdnZWQiLCJ0YWdnZWQkMCIsIngkMCIsIngkMSIsIngkMiIsIm8iLCJub2RlX3RhZyIsIngkMyIsIngkNCIsIngkNSIsImEkMSIsIngkNiIsInYiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDciLCJvJDAiLCJhJDIiLCJmaWVsZHMiLCJyb3dfbnVtIiwiY29sX251bSIsInRhZyIsImFpIiwieCQ4IiwidiQwIiwieCQ5Iiwib2Zmc2V0Iiwid3JpdGVfdHJlZSIsInN0cmluZ19vZl90cmVlIiwidGFnX29mX3RyZWUiLCJyZWFkX3RhZyIsInJlYWRfdW50YWdnZWRfdW5pdCIsInJlYWRfdW50YWdnZWRfYm9vbCIsInJlYWRfdW50YWdnZWRfY2hhciIsInJlYWRfdW50YWdnZWRfaW50OCIsInJlYWRfdW50YWdnZWRfaW50MTYiLCJyZWFkX3VudGFnZ2VkX2ludDMyIiwicmVhZF91bnRhZ2dlZF9mbG9hdDMyIiwicmVhZF91bnRhZ2dlZF9pbnQ2NCIsInJlYWRfdW50YWdnZWRfc3RyaW5nIiwic3RyIiwicmVtIiwiYnl0ZXNfcmVhZCIsInJlYWRfdW50YWdnZWRfdXZpbnQiLCJyZWFkX3VudGFnZ2VkX3N2aW50IiwicmVhZF91bml0IiwicmVhZF9ib29sIiwicmVhZF9pbnQ4IiwicmVhZF9pbnQxNiIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwicmVhZF9zdHJpbmciLCJyZWFkX3RyZWUiLCJ1bmhhc2giLCJyZWFkX2FycmF5IiwicmVhZGVyX29mX3RhZyIsInJlYWRfdHVwbGUiLCJyZWFkX3JlY29yZCIsIm5hbWUiLCJyZWFkX251bV92YXJpYW50X2NvbnQiLCJyZWFkX251bV92YXJpYW50IiwicmVhZF92YXJpYW50X2NvbnQiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX3RhYmxlIiwicmVhZGVycyIsInJlYWRfc2hhcmVkIiwidHJlZV9vZl9zdHJpbmciLCJza2lwX2J5dGVzIiwic2tpcF91bml0Iiwic2tpcF9ib29sIiwic2tpcF9pbnQ4Iiwic2tpcF9pbnQxNiIsInNraXBfaW50MzIiLCJza2lwX2ludDY0Iiwic2tpcF9mbG9hdDMyIiwic2tpcF9mbG9hdDY0Iiwic2tpcF91dmludCIsInNraXBfc3ZpbnQiLCJza2lwX3N0cmluZyIsInNraXBfYXJyYXkiLCJza2lwcGVyX29mX3RhZyIsInNraXBfdHVwbGUiLCJza2lwIiwic2tpcF9yZWNvcmQiLCJza2lwX251bV92YXJpYW50X2NvbnQiLCJza2lwX251bV92YXJpYW50Iiwic2tpcF92YXJpYW50X2NvbnQiLCJza2lwX3ZhcmlhbnQiLCJza2lwX3RhYmxlIiwiYXJyYXkiLCJyZWNvcmQiLCJ0dXBsZSIsIm1hcCIsImYiLCJmb3JtYXQiLCJzaGFyZWQiLCJvcHRfbmFtZSIsInN1ZmZpeCIsImNvbnMiLCJwIiwiYWEiLCJoZWFkZXIiLCJoZWFkZXIkMCIsInJlY29yZF9hcnJheSIsImluaXQiLCJ2aWV3X29mX3RyZWUiLCJ0IiwicHJpbnRfdmlld19vZl90cmVlIiwib3V0cHV0X3ZpZXdfb2ZfdHJlZSIsInZpZXciLCJwcmludF92aWV3Iiwib3V0cHV0X3ZpZXciLCJzcGxpdCIsInN0b3AiLCJzdGFydCIsImxvYWRfbGluZXMiLCJsb2FkIiwic3ltYm9sIiwiZGVmYXVsdF9kaWN0X3BhdGgiLCJsb2FkX2RpY3Rpb25hcnkiLCJkaWNfZmlsZSIsImZuIiwiZSQwIiwiZSIsIndyaXRlX3VuaXEiLCJsYXN0Iiwic2F2ZV9kaWN0aW9uYXJ5IiwiZmluYWxseSQwIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJyZWFkX2p1bmsiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJpbnB1dF9maWxlIiwiZm5hbWUiLCJyZWFkIiwiaWMiLCJ4IiwiZSQwIiwiZSIsIm91dHB1dF9maWxlIiwid3JpdGUiLCJvYyIsImZyb21fY2hhbm5lbCIsImxlbiIsIm9wdCIsInN0aCIsInNocmxlbiIsImliIiwiZnJvbV9maWxlIiwidG9fY2hhbm5lbCIsIm9iIiwidG9fZmlsZSIsImZyb21fbGV4YnVmIiwibHMiLCJsZXhidWYiLCJzdHJlYW0iLCJmcm9tX3N0cmluZyIsImJ1ZiIsImxudW0iLCJzIiwiZnJvbV9jaGFubmVsJDAiLCJmcm9tX2ZpbGUkMCIsInNyYyIsImZuYW1lMCIsInNlcV91bmZvbGQiLCJmIiwidSIsInUkMCIsInNlcV9mcm9tX2xleGJ1ZiIsImZpbiIsInYiLCJzZXFfZnJvbV9zdHJpbmciLCJzZXFfZnJvbV9jaGFubmVsIiwic2VxX2Zyb21fZmlsZSIsImZpbiQwIiwibGlzdF9mcm9tX3N0cmluZyIsInNlcSIsImxpc3RfZnJvbV9jaGFubmVsIiwibGlzdF9mcm9tX2ZpbGUiLCJ0b19zdHJpbmciLCJ0b19jaGFubmVsJDAiLCJ0b19maWxlJDAiLCJzZXFfdG9fc3RyaW5nIiwic3RoJDAiLCJsZiIsInNlcV90b19jaGFubmVsIiwic2VxX3RvX2ZpbGUiLCJsaXN0X3RvX3N0cmluZyIsImwiLCJsaXN0X3RvX2NoYW5uZWwiLCJsaXN0X3RvX2ZpbGUiLCJwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyIiwibG9jIiwibmFtZSIsIm1zZyIsInVua25vd25fZmllbGRfaGFuZGxlciIsInN0cmluZ19vZl9wYXRoIiwibiIsImVycm9yIiwicGF0aCIsInN0cmluZ19vZl9lcnJvciIsInZhbGlkYXRlX2xpc3QiLCJpIiwibCQwIiwic3VicGF0aCIsImVyciIsInZhbGlkYXRlX2FycmF5IiwiYSIsImkkMCIsInZhbGlkYXRlX29wdGlvbiIsImVycm9yX3dpdGhfbGluZSIsInAiLCJzMiIsImxpc3RfaXRlciIsInNlcCIsImwkMSIsInkkMCIsInkiLCJhcnJheV9pdGVyIiwid3JpdGVfY29tbWEiLCJ3cml0ZV9saXN0Iiwid3JpdGVfaXRlbSIsIndyaXRlX2FycmF5Iiwid3JpdGVfYXNzb2NfbGlzdCIsIndyaXRlX2tleSIsImsiLCJ3cml0ZV9hc3NvY19hcnJheSIsIndyaXRlX29wdGlvbiIsIndyaXRlX3N0ZF9vcHRpb24iLCJ3cml0ZV9udWxsYWJsZSIsIndyaXRlX2ludF9hc19zdHJpbmciLCJ3cml0ZV9pbnQ4Iiwid3JpdGVfaW50OF9hc19zdHJpbmciLCJ3cml0ZV9pbnQzMiIsIndyaXRlX2ludDMyX2FzX3N0cmluZyIsIndyaXRlX2ludDY0Iiwid3JpdGVfaW50NjRfYXNfc3RyaW5nIiwibWluX2Zsb2F0IiwibWF4X2Zsb2F0Iiwid3JpdGVfZmxvYXRfYXNfaW50Iiwid3JpdGVfZmxvYXRfYXNfaW50X3N0cmluZyIsInJlYWRfbnVsbCIsImxiIiwicmVhZF9ib29sIiwicmVhZF9pbnQiLCJyZWFkX2ludDgiLCJyZWFkX2ludDMyIiwicmVhZF9pbnQ2NCIsInJlYWRfbnVtYmVyIiwicmVhZF9zdHJpbmciLCJyZWFkX2pzb24iLCJyZWFkX2xpc3QiLCJyZWFkX2l0ZW0iLCJyZWFkX2FycmF5IiwicmVhZF9hc3NvY19saXN0X3JldiIsInJlYWRfa2V5IiwiYWNjIiwicmVhZF9hc3NvY19saXN0IiwicmVhZF9hc3NvY19hcnJheSIsInRsIiwiciIsInJlYWRfdW50aWxfZmllbGRfdmFsdWUiLCJtaXNzaW5nX3R1cGxlX2ZpZWxkcyIsInJlcV9maWVsZHMiLCJtaXNzaW5nIiwibWlzc2luZ19maWVsZCIsImZpZWxkX25hbWUiLCJtaXNzaW5nX2ZpZWxkcyIsImJpdF9maWVsZHMiLCJmaWVsZF9uYW1lcyIsInoiLCJqIiwiaW52YWxpZF92YXJpYW50X3RhZyIsInJlYWRfd2l0aF9hZGFwdGVyIiwibm9ybWFsaXplIiwicmVhZGVyIiwiYXN0IiwiYXN0JDAiLCJsYiQwIiwid3JpdGVfd2l0aF9hZGFwdGVyIiwicmVzdG9yZSIsIndyaXRlciIsIm9iX3RtcCIsInNfdG1wIiwicmVhZF9lcnJvciIsInJlYWRfZXJyb3JfYXQiLCJ0YWdfZXJyb3IiLCJ0YWciLCJ1bnN1cHBvcnRlZF92YXJpYW50IiwiaCIsImhhc19hcmciLCJnZXRfdW5pdF9yZWFkZXIiLCJyZWFkX3VuaXQiLCJnZXRfYm9vbF9yZWFkZXIiLCJnZXRfaW50X3JlYWRlciIsImdldF9jaGFyX3JlYWRlciIsInJlYWRfY2hhciIsImdldF9pbnQzMl9yZWFkZXIiLCJnZXRfaW50NjRfcmVhZGVyIiwiZ2V0X2Zsb2F0MzJfcmVhZGVyIiwiZ2V0X2Zsb2F0NjRfcmVhZGVyIiwicmVhZF9mbG9hdDMyIiwicmVhZF9mbG9hdDY0IiwiZ2V0X3N0cmluZ19yZWFkZXIiLCJyZWFkX2FycmF5X3ZhbHVlIiwiZ2V0X3JlYWRlciIsImdldF9hcnJheV9yZWFkZXIiLCJnZXRfbGlzdF9yZWFkZXIiLCJ3cml0ZV91bnRhZ2dlZF9vcHRpb24iLCJ4JDAiLCJhcnJheV9pbml0MiIsImFycmF5X2l0ZXIyIiwid3JpdGVfdW50YWdnZWRfYXJyYXkiLCJjZWxsX3RhZyIsIndyaXRlX3VudGFnZ2VkX2xpc3QiLCJzYWZlX3IiLCJ0eXBlX2ZpZWxkX25hbWUiLCJub3JtYWxpemVfdHlwZV9maWVsZCIsImZpZWxkcyIsInR5cGUiLCJyZXN0b3JlX3R5cGVfZmllbGQiLCJmaWVsZHMkMCIsIm5vcm1hbGl6ZSQwIiwidmFsdWUiLCJyZXN0b3JlJDAiLCJ0YmwiLCJpc19rbm93bl90YWciLCJpc19jYXRjaF9hbGxfdGFnIiwiY2F0Y2hfYWxsX3RhZyIsImZvdW5kIiwiZmllbGQiLCJ2YXJpYW50IiwiZmllbGRzJDEiLCJ0YWdnZWQiLCJ0YWckMCIsInJlYWxfdiIsInJlYWxfdGFnIiwib3B0X3ZhbHVlIiwidGFnJDEiLCJ2JDAiLCJjcmVhdGUiLCJuIiwiYSIsImxlbmd0aCIsImdldCIsImkiLCJzZXQiLCJ2IiwibiQxIiwibiQwIiwiYXJyYXkiLCJpbml0IiwiZiIsImFwcGVuZCIsImIiLCJsYiIsImxhIiwiYyIsIngiLCJjb25jYXQiLCJsIiwibCQwIiwidCIsImVsdCIsInNvbCIsIm0iLCJrIiwibCQxIiwicSIsInQkMCIsInMiLCJvZmZzZXQiLCJrJDAiLCJrJDEiLCJvZmZzZXQkMCIsInN1YiIsInN0YXJ0IiwibGVuIiwic2l6ZSIsImNvcHkiLCJmaWxsIiwiaSQwIiwib2ZfbGlzdCIsImRlZmF1bHQkMCIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJmb2xkX3JpZ2h0aSIsIm1hcCIsImJsaXQiLCJhMSIsIm9mczEiLCJhMiIsIm9mczIiLCJwcmludCIsInRyYWlsaW5nIiwicHJfcyIsInByX2EiLCJtYXhfYXJyYXlfc2l6ZTEiLCJtYXhfYXJyYXlfc2l6ZTIiLCJldWNsaWRlZW4iLCJwIiwicCQwIiwiYXV4IiwibSQwIiwiYSQwIiwiYSQxIiwiaiIsImcyIiwiZzEiLCJ5IiwiZSIsImciLCJjdXJyZW50IiwiaW5pdCQwIiwib3B0IiwicHJfc2VwIiwicHJfZWwiLCJzdGgiLCJjc3QiLCJmbG9hdF9pc196ZXJvIiwicG93IiwiYWNjdSIsImFjY3UkMCIsImFjY3UkMSIsImZhY3QiLCJpJDEiLCJnZXRfcHJvZHVjdF9pbWFnZV9vY2MiLCJjb21iaW5lIiwidCQxIiwib2xkJDEiLCJvbGQiLCJvY2MiLCJoIiwib2NjJDAiLCJvbGQkMCIsImdldF9wcm9kdWN0X2ltYWdlX29jY18yIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwiY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwiLCJoJDAiLCJsMSQxIiwibDIkMSIsImgyIiwiaDEiLCJvY2MxIiwibDEkMiIsIm9jYzIiLCJsMiQyIiwib2NjMiQwIiwibDIkMyIsIm9jYzEkMCIsImwxJDMiLCJhY2N1JDIiLCJkaXYyIiwicG93NjQiLCJjYW50b3JfcGFpcmluZyIsInJlYWRfaW5wdXQiLCJ1c2VyX2lucHV0IiwiYWNjIiwiYWNjJDAiLCJub3RfYW5faWQiLCJhcnJheV9mb2xkX2xlZnRfbWFwaSIsIm8iLCJvdXQiLCJ5JDAiLCJhcnJheV9tYXBfb2ZfbGlzdCIsIngkMCIsImFucyIsImFycmF5X3Jldl9vZl9saXN0IiwiYXJyYXlfcmV2X21hcF9vZl9saXN0IiwiYXJyYXlfZm9sZF9sZWZ0aSIsImFycmF5X2ZvbGRfcmlnaHRpIiwieCQxIiwiYXJyYXlfZm9sZF9sZWZ0MmkiLCJhcnJheV9maWx0ZXIiLCJhcnJheV9taW5fZXF1YWxfbm90X251bGwiLCJhZzEiLCJuYjEiLCJhZzIiLCJuYjIiLCJqJDAiLCJvdXQkMSIsImkkMiIsInZhIiwiYWcxJDAiLCJuYjEkMCIsImFnMiQwIiwibmIyJDAiLCJvdXQkMCIsImFycmF5X2NvbXBhcmUiLCJjb21wYXJlIiwiZCIsInJlY3RpIiwibWluX3Bvc19pbnRfbm90X3plcm8iLCJkYXRhYiIsImtleWIiLCJkYXRhYSIsImtleWEiLCJtYXhfcG9zX2ludF9ub3RfemVybyIsImZvbGRfb3Zlcl9wZXJtdXRhdGlvbnMiLCJ0b19kbyIsImRpc2NhcmRlZCIsInBlcm11dGF0aW9uIiwidG9fZG8kMCIsImRpc2NhcmRlZCQwIiwidG9fZG8kMSIsInRvX2RvMSIsImxpc3QiLCJkaXNjYXJkZWQkMSIsImdjZF8yIiwiYiQwIiwiYiQxIiwibGNtXzIiLCJsY20iLCJnZXRfaW50ZXJ2YWxfbGlzdCIsImFkZCIsIm91dHB1dCIsImN1cnJlbnQkMCIsIm91dHB1dCQwIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInN0cmluZ19zcGxpdF9vbl9jaGFyIiwiZGVsaW1pdGVyIiwiaW5kZXgiLCJzbWFzaF9kdXBsaWNhdGVfaW5fb3JkZXJlZF9saXMiLCJ0YWlsJDIiLCJub2NjJDIiLCJjdXJyZW50JDEiLCJ0YWlsIiwibm9jYyIsInRhaWwkMCIsIm5vY2MkMCIsInRhaWwkMSIsIm5vY2MkMSIsImNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiIsIm5hbWUiLCJleHQiLCJmaW5kX2F2YWlsYWJsZV9uYW1lIiwiYWxyZWFkeV90aGVyZSIsImZhY3VsdGF0aXZlIiwiZXh0JDAiLCJiYXNlIiwiYmFzZSQwIiwiZ2V0X3JlZiIsInJlZiIsInJlbW92ZV9kb3VibGVfZWxlbWVudHMiLCJzb3J0X2J5X3ByaW9yaXR5Iiwia2V5cyIsInNvcnQiLCJrZXkiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwid3JpdGVfdG9fY2hhbm5lbCIsInN0cmluZ19vZl93cml0ZSIsIm9iIiwicmVhZF9vZl9zdHJpbmciLCJsZXhfc3QiLCJsZXhfYnVmIiwicmVhZF9iZXR3ZWVuX3NwYWNlcyIsInJlYWRfbmV4dF9pdGVtIiwic3QiLCJidWlsZF9tc2ciLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcnJvcl9tc2ciLCJvZl9pbnQiLCJ0b19pbnQiLCJvZl9ib29sIiwidG9fYm9vbCIsIm9mX3VuaXQiLCJ0b191bml0Iiwib2Zfb3B0aW9uIiwidG9fanNvbiIsInRvX29wdGlvbiIsIndyaXRlX29wdGlvbiIsInJlYWRfb3B0aW9uIiwidG9fbGlzdCIsIm9mX2pzb24iLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJmX2VsdCIsIm9mX2FycmF5IiwidG9fYXJyYXkiLCJ3cml0ZV9hcnJheSIsIndyaXRlX3NlcXVlbmNlIiwicSQwIiwiZiQwIiwicmVhZF92YXJpYW50IiwicmVhZF9pZCIsInJlYWQiLCJzbWFydF9hc3NvYyIsIm9mX2Fzc29jIiwidG9fYXNzb2MiLCJqc29uIiwid3JpdGVfZmllbGQiLCJuYSIsIm9mX3BhaXIiLCJ0b19qc29uMSIsInRvX2pzb24yIiwibGFiMSIsInN0aCQwIiwibGFiMiIsInRvX3RyaXBsZSIsIm9mX2pzb24xIiwib2ZfanNvbjIiLCJvZl9qc29uMyIsInN0aCQxIiwibGFiMyIsInN0aCQyIiwib2ZfdHJpcGxlIiwidG9fanNvbjMiLCJ0b19wYWlyIiwid3JpdGVfY29tcGFjdF9wYWlyIiwicmVhZF9jb21wYWN0X3BhaXIiLCJjb21wYWN0X3RvX3BhaXIiLCJvZl9tYXAiLCJmb2xkIiwia2V5X3RvX2pzb24iLCJ2YWx1ZV90b19qc29uIiwibGFiX2tleSIsImxhYl92YWx1ZSIsInZhbHVlIiwidG9fbWFwIiwiZW1wdHkiLCJqc29uX3RvX2tleSIsImpzb25fdG9fdmFsdWUiLCJvZl91bml4X2xhYmVsIiwiaW50JDAiLCJ0b191bml4X2xhYmVsIiwib2ZfdW5peF9lcnJvciIsInRvX3VuaXhfZXJyb3IiLCJzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQiLCJzdWNjZXNzIiwic3RvcCIsInN1Y2Nlc3Nfb3Jfc3RvcCIsImhlaWdodCIsIm5vZGUiLCJsZWZ0IiwicmlnaHQiLCJobCIsImhyIiwiaGwkMCIsImlzX2VtcHR5Iiwic2luZ2xldG9uIiwiaXNfc2luZ2xldG9uIiwic2V0MiIsInNldDEiLCJiYWxhbmNlIiwiaGVpZ2h0X2xlZnQiLCJoZWlnaHRfcmlnaHQiLCJsZWZ0cmlnaHQiLCJsZWZ0dmFsdWUiLCJsZWZ0bGVmdCIsImxlZnRyaWdodHJpZ2h0IiwibGVmdHJpZ2h0dmFsdWUiLCJsZWZ0cmlnaHRsZWZ0IiwicmlnaHRyaWdodCIsInJpZ2h0dmFsdWUiLCJyaWdodGxlZnQiLCJyaWdodGxlZnRyaWdodCIsInJpZ2h0bGVmdHZhbHVlIiwicmlnaHRsZWZ0bGVmdCIsImJhbGFuY2Vfd2l0aF9sb2dzIiwid2FybiIsInBhcmFtZXRlcnMiLCJlcnJvciIsImxvYyIsImVycm9yJDAiLCJyIiwibyQwIiwiYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIiwibmV3X3ZhbCIsInZhbHVlX3NldCIsInJpZ2h0JDAiLCJib29sIiwic2V0JDAiLCJlcnJvciQxIiwibGVmdCQwIiwiYm9vbCQwIiwiZXJyb3IkMiIsInNldCQxIiwiZXJyb3IkMyIsImFkZF93aXRoX2xvZ3MiLCJuZXdfdmFsdWUiLCJhZGRfZXZlbl9pZl9pdF9leGlzdHMiLCJqb2luIiwicmlnaHRoZWlnaHQiLCJsZWZ0aGVpZ2h0Iiwic2FmZV9leHRyYWN0X21pbl9lbHQiLCJtaW4iLCJtaW5fZWx0X3dpdGhfbG9ncyIsInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyIsImpvaW5fd2l0aF9sb2dzIiwicmlnaHQyIiwidmFsdWUyIiwibGVmdDIiLCJzZXQyJDAiLCJtaW4yIiwiY29uY2F0X3dpdGhfbG9ncyIsImVsdF9vcHQiLCJzcGxpdF93aXRoX2xvZ3MiLCJzcGxpdF92YWwiLCJzZXRfdmFsIiwibGVmdGxlZnQkMCIsInJpZ2h0cmlnaHQkMCIsInJlbW92ZSIsInJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSIsImVycm9yJDQiLCJlcnJvciQ1IiwiZXJyb3IkNiIsImVycm9yJDciLCJlcnJvciQ4Iiwic2V0JDIiLCJlcnJvciQ5IiwicmVtb3ZlX3dpdGhfbG9ncyIsInNwbGl0Iiwic3BsaXRfdmFsdWUiLCJzZXRfdmFsdWUiLCJ1bmlvbiIsImhlaWdodDIiLCJoZWlnaHQxIiwicmlnaHQxIiwidmFsdWUxIiwibGVmdDEiLCJyaWdodDIkMCIsImxlZnQyJDAiLCJyaWdodDEkMCIsImxlZnQxJDAiLCJkaXNqb2ludF91bmlvbiIsInVuaW9uX2dlbiIsImFkZF9nZW4iLCJ1bmlvbl93aXRoX2xvZ3MiLCJ3IiwicyQwIiwiZGlzam9pbnRfdW5pb25fd2l0aF9sb2dzIiwic3V0dXJlX25vdCIsImludGVyIiwidHJpcGxlMiIsInN1dHVyZV9ub3Rfd2l0aF9sb2dzIiwiaW50ZXJfd2l0aF9sb2dzIiwiZGlmZiIsImRpZmZfd2l0aF9sb2dzIiwibWludXMiLCJtaW51c193aXRoX2xvZ3MiLCJtZW0iLCJzZWFyY2hlZF92YWx1ZSIsImZpbHRlciIsImZpbHQiLCJmaWx0ZXJfd2l0aF9sb2dzIiwicGFydGl0aW9uIiwicGFydCIsInBhcnRpdGlvbl93aXRoX2xvZ3MiLCJyaCIsImNvbnNfZW51bSIsImVudW0kMSIsImUyJDIiLCJlMSQyIiwiZTEiLCJlMiIsImUyJDAiLCJyMiIsInYyIiwiZTEkMCIsInIxIiwidjEiLCJlMiQxIiwiZTEkMSIsImVxdWFsIiwic3Vic2V0Iiwic2V0MSQwIiwiZm9sZF9pbnYiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZWxlbWVudHMiLCJlbGVtZW50c19hdXgiLCJhdXhfcHJpbnQiLCJrZXkkMSIsImtleSQwIiwibWluX2VsdCIsIm1heF9lbHQiLCJjaG9vc2UiLCJyYW5kb20iLCJycyIsImFpbV9hY2MiLCJhY2NfbCIsImFjY19yIiwiZW1wdHkkMCIsImhlaWdodCQwIiwic2l6ZSQwIiwibm9kZSQwIiwia2V5MCIsImRhdGEiLCJpc19lbXB0eSQwIiwicm9vdCIsIm1heF9rZXkiLCJiYWxhbmNlJDAiLCJyaWdodDAiLCJkYXRhMCIsImxlZnQwIiwiZGF0YTEiLCJrZXkxIiwicmlnaHQwJDAiLCJkYXRhMCQwIiwia2V5MCQwIiwibGVmdDAkMCIsImRhdGExJDAiLCJrZXkxJDAiLCJiYWxhbmNlX3dpdGhfbG9ncyQwIiwiYWRkJDAiLCJkYXRhX21hcCIsImtleV9tYXAiLCJjbXAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MkMCIsInBhcmFtZXRlciIsIm1hcCQwIiwiYWRkX3dpdGhfbG9ncyQwIiwiZXh0cmFjdF9taW5fYmluZGluZyIsImRhdGEyIiwia2V5MiIsImV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIiwibWVyZ2UiLCJtYXAxIiwibWFwMiIsImRhdGEzIiwia2V5MyIsIm1lcmdlX3dpdGhfbG9ncyIsInJlbW92ZSQwIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlJDAiLCJtYXAkMSIsIm1hcCQyIiwicmVtb3ZlX3dpdGhfbG9ncyQwIiwicG9wIiwiam9pbiQwIiwidmFsdWUkMCIsImpvaW5fd2l0aF9sb2dzJDAiLCJzcGxpdCQwIiwiZGF0YTIkMCIsImxlZnQyJDEiLCJyaWdodDIkMSIsInNwbGl0X3dpdGhfbG9ncyQwIiwiZGlmZiQwIiwib2xlZnQyIiwib2xlZnQxIiwib3JpZ2h0MiIsIm9yaWdodDEiLCJ1bmlvbiQwIiwib3BfZGF0YTIiLCJkMiIsImQyJDAiLCJvcF9kYXRhMSIsImQxIiwiZDEkMCIsInVuaW9uX3dpdGhfbG9ncyQwIiwidXBkYXRlIiwidXBkYXRlX3dpdGhfbG9ncyIsImRpZmZfcHJlZCIsInByZWQiLCJtaW5fZWx0JDAiLCJmaW5kX29wdGlvbiIsImZpbmRfZGVmYXVsdCIsImZpbmRfb3B0aW9uX3dpdGhfbG9ncyIsImZpbmRfZGVmYXVsdF93aXRoX2xvZ3MiLCJtZW0kMCIsImZpbHRlcl9vbmUiLCJpdGVyJDAiLCJmb2xkJDAiLCJ2YWx1ZSQxIiwib3V0cHV0bCIsImludGVycnVwdGVkIiwidmFsX29wdCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJtb25hZGljX2ZvbGQiLCJwYXJhbSIsImVyciIsImVyciQwIiwiZXJyJDEiLCJ2YWx1ZSQyIiwiZXJyJDIiLCJtb25hZGljX2ZvbGQyIiwicmVzIiwicmgkMCIsIm1hcDEkMCIsIm1hcDIkMCIsInJlcyQwIiwicmVzJDEiLCJyaCQxIiwicmVzJDIiLCJyaCQyIiwicmVzJDMiLCJyaCQzIiwicmVzJDQiLCJyaCQ0IiwibW9uYWRpY19mb2xkMl9zcGFyc2UiLCJpZCIsIm1vbmFkaWNfaXRlcjJfc3BhcnNlIiwibW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIiwibWFwaSIsIm1hcF93aXRoX2xvZ3MiLCJlcnJvcnMiLCJlcnJvcnMkMCIsImRhdGEkMCIsImVycm9ycyQxIiwibWFwMl93aXRoX2xvZ3MiLCJtYXAyel93aXRoX2xvZ3MiLCJmb2xkMl93aXRoX2xvZ3MiLCJmb2xkMnpfd2l0aF9sb2dzIiwiZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyIsIml0ZXIyX3NwYXJzZV93aXRoX2xvZ3MiLCJwYXIiLCJmb3JfYWxsJDAiLCJjb25zX2VudW0kMCIsImUkMCIsImUkMSIsImNvbXBhcmUkMCIsIm0xIiwibTIiLCJjJDAiLCJlcXVhbCQwIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJhdXhfcHJpbnQkMCIsInByIiwiZGF0YSQxIiwiZGF0YSQyIiwicHJpbnQkMCIsImRpZmZfd2l0aF9sb2dzJDAiLCJvMSQxIiwibzIkMSIsIm8xIiwibzIiLCJvMSQwIiwibzIkMCIsImRpZmZfcHJlZF93aXRoX2xvZ3MiLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyIsInByb2pfbWFwIiwiaWRlbnRpdHlfZWx0Iiwia2V5X2EiLCJkYXRhX2EiLCJtYXBfYiIsImtleV9iIiwicHJval9tYXBfbW9uYWRpYyIsImhhbmRsZXIiLCJtb25hZGljX21lcmdlIiwiaGFuZGxlciQwIiwicHJval9zZXQiLCJzZXRfYSIsInByb2pfc2V0X21vbmFkaWMiLCJzZXRfYiIsInBhcnRpdGlvbl9zZXQiLCJwYXJ0aXRpb25fc2V0X21vbmFkaWMiLCJwcm9qMiIsImtleV9jIiwic3VibWFwIiwic3VibWFwJDAiLCJwcm9qMl9tb25hZGljIiwiaW50X2NvbXBhcmUiLCJpbnRfcGFpcl9jb21wYXJlIiwic3RyaW5nX3BhaXJfY29tcGFyZSIsInBhaXJfZXF1YWwiLCJlcWEiLCJlcWIiLCJ5YiIsInlhIiwieGIiLCJ4YSIsInByaW50JDEiLCJwcmludCQyIiwicHJpbnQkMyIsInVuc29tZSIsInVuc29tZV9vcl9yYWlzZSIsImV4Y2VwIiwiYmluZCIsImVxIiwiZ2V0X2Fubm90IiwiYW5ub3QiLCJjb3B5X2Fubm90IiwibWFwX2Fubm90Iiwib2ZfcG9zIiwic3RhcnRfbG9jYXRpb24iLCJlbmRfbG9jYXRpb24iLCJkdW1teV9wb3NpdGlvbiIsImR1bW15IiwiYW5ub3Rfd2l0aF9kdW1teSIsImlzX2R1bW15IiwiaXNfYW5ub3RlZF93aXRoX2R1bW15IiwicHJfZiIsInByX2wiLCJwcmludF9hbm5vdGVkIiwicmVhZF9wb3NpdGlvbiIsImNociIsImxpbmUiLCJ3cml0ZV9wb3NpdGlvbiIsInRvX2NvbXBhY3RfeW9qc29uIiwiZGVjbHMiLCJvZl9jb21wYWN0X3lvanNvbiIsImZpbGVuYW1lcyIsImZpbGUiLCJ4JDIiLCJvZl9saW5lIiwieCQzIiwib2ZfY2hyIiwieCQ0IiwidG9fY2hyIiwieCQ1IiwidG9fbGluZSIsInlvanNvbl9vZl9hbm5vdGVkIiwianAiLCJhbm5vdGVkX29mX3lvanNvbiIsIndyaXRlX3JhbmdlIiwic3RyaW5nX29mX3JhbmdlIiwicmVhZF9yYW5nZSIsInJhbmdlX29mX3N0cmluZyIsImlzX2luY2x1ZGVkX2luIiwicmFuZ2UiLCJsaXN0aSIsImVsIiwiaGFzaHRibCIsInRibCIsImJvdHRvbSIsIm51IiwiZW1wdHlfc2V0IiwiY29tbWEiLCJkb3QiLCJjb21wYWN0X2NvbW1hIiwiY29sb24iLCJzcGFjZSIsImN1dCIsInVuaXQiLCJwYWlyIiwicHBhIiwicHBiIiwib3B0aW9uIiwid2l0aF9zcGFjZSIsInBsYWluX2FycmF5IiwibGlzdF90b19zdHJpbmciLCJzZXRfdG9fc3RyaW5nIiwiYWNjdmFsIiwiciQwIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwiYWNjX2xyciIsImFjY19sJDEiLCJhY2NfciQxIiwiYWNjX3IkMCIsInJyIiwicnYiLCJybCIsImFjY19sJDAiLCJybHIiLCJybHYiLCJybGwiLCJhY2NfcmxsIiwid2VpZ2h0Iiwid2VpZ2h0JDAiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ0MiIsInQxIiwic3RhdGUiLCJhaW1fYWNjJDEiLCJ3cml0ZV9zZXZlcml0eSIsIndyaXRlX3N0YXR1cyIsIndyaXRlX21lc3NhZ2UiLCJ0ZXh0Iiwic2V2ZXJpdHkiLCJyZWFkX21lc3NhZ2UiLCJwcmludF9tZXNzYWdlIiwicmFuZ2UkMCIsIndyaXRlX3QiLCJ3cml0ZV9vayIsIndyaXRlX2Vycm9yIiwibWVzc2FnZXMiLCJzdGF0dXMiLCJtZXNzYWdlcyQwIiwic3RhdHVzJDAiLCJzdHJpbmdfb2ZfdCIsInJlYWRfdF9jb250ZW50IiwicmVhZF90IiwicmVhZF9vayIsInJlYWRfZXJyb3IiLCJhdXhfcmVhZF90IiwiY2xvc2luZyIsInBvcyIsInYkMCIsInRfb2Zfc3RyaW5nIiwibGlmdCIsIm9rX3N0YXR1cyIsImVycm9yX3N0YXR1cyIsIm9rIiwib3ZlcndyaXRlX3N0YXR1cyIsInNwZWNpYWxfdmFsIiwiaWRlbnRpdHkiLCJtYXgiLCJpbW1lZGlhdGUiLCJpc19pZGVudGl0eSIsImNvbXB1dGUiLCJ2JDEiLCJmb3JjZSIsImltYWdlIiwiZGVidWdfbW9kZSIsIm5vdF9vayIsInVuc2FmZV9pbXBlcmF0aXZlX2FkZCIsImltcGVyYXRpdmVfYWRkIiwib3JpZ2luIiwiY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdCIsInN0b3BfYXQiLCJwcmUkMSIsInN1YnN0IiwicHJlIiwicHJlJDAiLCJhcHBseSIsImNvbXBvc2UiLCJleHRlbnNpYmxlIiwiaW52ZXJzZSIsInNyYyIsImRzdCIsInByaW50X2Z1bGwiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJtYXNrIiwidW5tYXNrIiwiaXNfaW5maW5pdGUiLCJmaW5kIiwiY29weV92ZWN0X2luIiwiY29weV9pbiIsImRlY2xhcmVfdW5iYWxhbmNlZCIsInVwZGF0ZV9zdHJ1Y3R1cmUiLCJuX2xheWVyIiwidXBkYXRlX3N0cnVjdHVyZV9hdXgiLCJmYXRoZXIiLCJ0X25vZGUiLCJ0X3N1YnRyZWUiLCJsYXllciIsImN1cnJlbnRfbGF5ZXIiLCJsYXllcl9lbmQiLCJ1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciIsInVuYmFsYW5jZWRfZXZlbnRzIiwibGF5ZXJfZW5kJDAiLCJjdXJyZW50X2xheWVyJDAiLCJ3JDAiLCJ0b3RhbCIsInJlcCIsInIkMSIsImxzb24iLCJyc29uIiwiciQyIiwiZGVidWdfcHJpbnQiLCJpbnYiLCJpbmYiLCJncmFwaF9wYWdlIiwidGl0bGUiLCJzdWJ0aXRsZSIsImRlcHMiLCJoZWFkZXIiLCJjb3JlIiwiZGVwZW5kZW5jeSIsImJpbl9hbGdfb3BfdG9fc3RyaW5nIiwiYmluX2FsZ19vcF9pc19wcmVmaXgiLCJwcmludF9iaW5fYWxnX29wIiwiZngiLCJmeSIsIm9wIiwiYmluX2FsZ19vcF90b19qc29uIiwiYmluX2FsZ19vcF9vZl9qc29uIiwidW5fYWxnX29wX3RvX3N0cmluZyIsInByaW50X3VuX2FsZ19vcCIsInVuX2FsZ19vcF90b19qc29uIiwidW5fYWxnX29wX29mX2pzb24iLCJzdGF0ZV9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfc3RhdGVfYWxnX29wIiwic3RhdGVfYWxnX29wX3RvX2pzb24iLCJzdGF0ZV9hbGdfb3Bfb2ZfanNvbiIsImJpbl9ib29sX29wX3RvX3N0cmluZyIsInByaW50X2Jpbl9ib29sX29wIiwiYmluX2Jvb2xfb3BfdG9fanNvbiIsImJpbl9ib29sX29wX29mX2pzb24iLCJ1bl9ib29sX29wX3RvX3N0cmluZyIsInByaW50X3VuX2Jvb2xfb3AiLCJ1bl9ib29sX29wX3RvX2pzb24iLCJ1bl9ib29sX29wX29mX2pzb24iLCJjb21wYXJlX29wX3RvX3N0cmluZyIsInByaW50X2NvbXBhcmVfb3AiLCJjb21wYXJlX29wX3RvX2pzb24iLCJjb21wYXJlX29wX29mX2pzb24iLCJwcmludF9yZXZfZGVwIiwiaWQkMCIsImlkJDEiLCJyZXZfZGVwX3RvX3lvanNvbiIsInJldl9kZXBfb2ZfeW9qc29uIiwiZGVwc2V0X3RvX3lvanNvbiIsImRlcHNldF9vZl95b2pzb24iLCJ6ZXJvIiwib25lIiwiY2FzdF9iaW5fb3AiLCJvcF9mIiwib3BfaSIsIm9wX2k2NCIsInkkMSIsInkkMiIsInkkMyIsInkkNCIsIm9wX2kkMCIsInkkNSIsIm9wX2k2NCQwIiwieSQ2IiwieSQ3Iiwib3BfaTY0JDEiLCJ5JDgiLCJvcF9pNjQkMiIsImNhc3RfdW5fb3AiLCJvcF9mJDAiLCJvcF9pJDEiLCJvcF9mJDEiLCJvcF9mJDIiLCJuMSIsIm4yIiwiaXNfZ3JlYXRlciIsImlzX3NtYWxsZXIiLCJpc19lcXVhbCIsIm11bHQiLCJyZW0iLCJpbnRlcm5hbF9kaXYiLCJzdWNjIiwibmVnIiwidG9fZmxvYXQiLCJpc196ZXJvIiwiaXNfc3RyaWN0bHlfcG9zaXRpdmUiLCJwb3NfcG93IiwicHJldHR5X3ByaW50IiwicHJpbnRfb3B0aW9uIiwibWF5YmVfaXRlcmkiLCJvZl9iaW5fYWxnX29wIiwib2ZfdW5fYWxnX29wIiwib2ZfY29tcGFyZV9vcCIsIndhcm5pbmdfYnVmZmVyIiwiZm9yYmlkZGVuIiwiYmFkIiwiY3JlYXRlX2Zyb21fbGlzdCIsImNyZWF0ZV9ub19sb2MiLCJuZCIsImVsdF9uYW1lIiwiZWx0X2lkIiwia2luZCIsInNlcCIsInBwIiwiZWx0X3ZhbCIsInJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1ciIsImxpc3QkMCIsImJ1ZmZlciIsImxpc3QkMSIsImxpc3QkMiIsImJ1ZmZlciQwIiwibGFzdCIsInBvcF9sYXN0IiwiY29uc19vcHRpb24iLCJzbWFydF9maWx0ZXIiLCJzbWFydF9tYXAiLCJyZXZfbWFwaSIsIm1hcF9vcHRpb24iLCJleGlzdHNfdW5pcSIsIm1lcmdlX3VuaXEiLCJrJDMiLCJ0MiQwIiwiaDIkMCIsInQxJDAiLCJoMSQwIiwiayQyIiwicmV2X21hcF9hcHBlbmQiLCJhY2MkMSIsIm1hcF9mbGF0dGVuIiwicmVtb3ZlX2NvbnNlY3V0aXZlX2RvdWJsZSIsInEkMSIsImxhc3QkMSIsImxhc3QkMCIsImZvbGRfcmlnaHRfbWFwIiwiZm9sZF9sZWZ0MiIsImNsZWFuIiwiaW50X29mX2hhc2hlZF9saXN0IiwiZnN0X2VsdF9pZCIsImZzdF9saXN0X2lkIiwiY29ucyIsImNhY2hlJDAiLCJoZWFkIiwiaGFzaF9oZWFkIiwiY2FjaGUkMSIsInN1YnRhYiIsInN1YnRhYiQwIiwic3VidGFiJDEiLCJoYXNoJDAiLCJoYXNoIiwiY2FjaGUiLCJmb3JtYXR0ZXIiLCJwcmludF9jYWNoZSIsIm9wdCQwIiwic2ltcGxpZnkiLCJnY2QiLCJkaXYiLCJiX2ludiIsInB1c2giLCJjcmNfdGFibGUiLCJzdHJpbmciLCJzdHIiLCJjcmMiLCJ0cmlwbGVfb2ZfY29sb3IiLCJjcmVhdGVfaW5maW5pdGUiLCJ0JDIiLCJ0JDQiLCJ0JDMiLCJvdmVyd3JpdHRlbl92YWx1ZSIsIm92ZXJ3cml0dGVuX3ZhbHVlJDAiLCJjb250ZW50cyIsIm50aCIsIm9mcyIsImNsZWFyIiwicmVzZXQiLCJyZXNpemUiLCJtb3JlIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImFkZF9zdWJzdHJpbmciLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJhZGRfc3RyaW5nIiwiZGVmYXVsdF9hbHBoYWJldCIsInVyaV9zYWZlX2FscGhhYmV0IiwicGFkZGluZyIsIm9mX2NoYXIiLCJhbHBoYWJldCIsInRvX2NoYXIiLCJkZWNvZGUiLCJpbnB1dCIsImlucHV0JDAiLCJsZW5ndGgkMCIsIndvcmRzIiwicGFkZGluZyQwIiwieiIsImVuY29kZSIsInBhZCIsInBhZGRpbmdfbGVuIiwicHJpbnQiLCJjb21wYXJlIiwieSIsIngiLCJ5JDAiLCJ4JDAiLCJjIiwicHJpbnRfYWdlbnQiLCJ3aXRoX2lkIiwid2l0aF9saW5rIiwibm9kZSIsImYiLCJhZyIsImlkIiwic2kiLCJpIiwicCQwIiwicGFjayIsInAiLCJmcmVlX2lkIiwiZGFuZ2xpbmciLCJ0eSIsImwiLCJteXNlbGYiLCJ2YSIsInZhJDAiLCJwcmludF9jYyIsIm1peCIsImxpbmsiLCJhbCIsImFyIiwic3RvcmUiLCJwcmludF9kb3RfY2MiLCJuYl9jYyIsImlsIiwiaXIiLCJ2IiwicyIsImxpbmtzIiwicyQwIiwiYXIkMCIsImFsJDAiLCJ3cml0ZV9zaXRlIiwib2IiLCJ3cml0ZV9jY19zaXRlIiwibGlua3Nfb2ZfeW9qc29uIiwiYiIsImVycm9yX21zZyIsInJlYWRfY2Nfc2l0ZSIsImxiIiwia2V5JDAiLCJuIiwia2V5Iiwib3V0IiwicG9ydF9zdGF0ZXMiLCJwb3J0X2xpbmtzIiwic2l0ZV90eXBlIiwic2l0ZV9uYW1lIiwid3JpdGVfY2Nfbm9kZSIsIm5vZGVfaWQiLCJyZWFkX2NjX25vZGUiLCJub2RlX3NpdGVzIiwibm9kZV90eXBlIiwid3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCIsInJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCIsInN0cmluZ19vZl9jb25uZWN0ZWRfY29tcG9uZW50Iiwib3B0Iiwic3RoIiwibGVuIiwiY29ubmVjdGVkX2NvbXBvbmVudF9vZl9zdHJpbmciLCJmb2xkIiwibyIsIm51bV9vZl9zaXRlIiwiYWdlbnRfbmFtZSIsInNpZ25hdHVyZSIsImFnZW50X25hbWUkMCIsImtpbmQiLCJzaXRlX29mX251bSIsImFkZHIiLCJudW1fb2ZfaW50ZXJuYWxfc3RhdGUiLCJzaXRlX2lkIiwic3RhdGUiLCJzaXRlX3NpZyIsImludGVybmFsX3N0YXRlX29mX3NpdGVfaWQiLCJ2YWxfaWQiLCJjb3VudGVyX29mX3NpdGVfaWQiLCJoYXNfY291bnRlciIsInBfaWQiLCJvayIsIm9rJDAiLCJvbmVfdG9fanNvbiIsImMyIiwiYzEiLCJhIiwiYWNjIiwib25lX29mX2pzb24iLCJzaXplIiwic2lncyIsImdldCIsImFnZW50X2lkIiwiYXJpdHkiLCJtYXhfYXJpdHkiLCJhZ2VudF9vZl9udW0iLCJudW1fb2ZfYWdlbnQiLCJuYW1lIiwiaWRfb2Zfc2l0ZSIsImFnZW50X3R5Iiwic2l0ZV9vZl9pZCIsImlkX29mX2ludGVybmFsX3N0YXRlIiwiaW50ZXJuYWxfc3RhdGVfb2ZfaWQiLCJpZF9zaXRlIiwiaWRfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIiwiZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSIsImFsbG93ZWRfbGluayIsImFnMSIsInMxIiwiYWcyIiwiczIiLCJhZzEkMCIsInMxJDAiLCJhZzIkMCIsInMyJDAiLCJjcmVhdGUiLCJjb3VudGVyc19wZXJfYWdlbnQiLCJhZ2VudF9zaWdzIiwiaXNfY291bnRlcl9hZ2VudCIsIm5faWQiLCJhZ2VudF9pbmZvIiwicG9ydHNfaWZfY291bnRlcl9hZ2VudCIsInNpdGVfaXNfY291bnRlciIsImFnX3R5IiwiZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInByaW50X3NpdGUiLCJwcmludF9pbnRlcm5hbF9zdGF0ZSIsInNpdGUiLCJwcmludF9zaXRlX2ludGVybmFsX3N0YXRlIiwicHJpbnRfY291bnRlciIsInBwX2ludCIsIm5hIiwicHBfY291bnRzIiwidG9fanNvbiIsIm9mX2pzb24iLCJhZ2VudF9zaWduYXR1cmUiLCJwb3J0cyIsImVtcHR5IiwiaW5jcmVtZW50X2luX3NuYXBzaG90IiwicmF3IiwiY2J0X2EiLCJjbGFzc2lmeSIsImFncyIsIm5iIiwiaHMiLCJhdXhfaW5jcmVtZW50IiwidCIsImgiLCJjYnRfeSIsImgxIiwiYm9vbCIsImRvbiIsInEiLCJpX29rIiwiYiQwIiwiZG9uJDEiLCJ0b2RvIiwiYSQwIiwiYWdzJDAiLCJjb3VudGVyX3ZhbHVlIiwiY2MiLCJjb3VudCIsInNpZCIsIm5pZCIsImNjX3RvX3VzZXJfY2MiLCJkZWJ1Z19tb2RlIiwiciIsInBvcyIsImluZGV4ZXMiLCJpbmRleGVzJDAiLCJjY19saXN0IiwiY2Nfd2l0aG91dF9jb3VudGVycyIsImRuX2lkIiwiZG5faWQkMCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJpZDIiLCJpZDEiLCJ3cml0ZV9qc29uIiwicmVhZF9qc29uIiwicHJpbnQkMCIsImxvb3BpbmciLCJpbnRfbCIsIm1hcmsiLCJvbGQiLCJ0ZXN0IiwicmVzZXQiLCJpdGVyaV9yZXNldCIsImsiLCJqIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwiaSQwIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJzaW5nbGV0b25fcGF0aCIsIm4kMCIsInJldl9wYXRoIiwiaXNfdmFsaWRfcGF0aCIsImFyZV9jb25uZWN0ZWQiLCJtYXhfZGlzdGFuY2UiLCJub2Rlc194Iiwibm9kZXNfeSIsInByZXBhcmUiLCJkZXB0aCIsIm91dCQxIiwiaWQkMSIsImFjYyQxIiwic2l0ZSQ0IiwicGF0aCIsInBhdGgkMCIsIm91dCQwIiwiYWNjJDAiLCJuZXh0JDIiLCJvdXQkMiIsInN0b3AiLCJkIiwicHJpbnRfaWQiLCJwcmludF9pZF9zaXRlIiwic291cmNlIiwiZmluZF90eSIsInR5JDEiLCJwb3J0X3RvX3lvanNvbiIsInBvcnRfb2ZfeW9qc29uIiwic3RlcF90b195b2pzb24iLCJzdGVwX29mX3lvanNvbiIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsImV4dGVuZCIsInBvcnQiLCJ0JDEiLCJjb21wYXRpYmxlX2ZyZXNoX3BvaW50IiwiZSIsInNzaXRlIiwiYXJyb3ciLCJzdHkiLCJpbmokMCIsImluaiQzIiwic3NpdGUkMSIsInN0eSQxIiwic2lkJDEiLCJpZCQyIiwiaW5qJDEiLCJpbmokMiIsInNzaXRlJDAiLCJzdHkkMCIsInNpZCQwIiwiY29tcGF0aWJsZV9wb2ludCIsImUkMCIsImlkJDMiLCJ0eSQyIiwiaWQkNCIsInNpdGUkNSIsInR5JDMiLCJpZCQ1Iiwic3NpdGUkMiIsInNpZCQyIiwiaW5qJDQiLCJzaXRlJDYiLCJ0eSQ0IiwiaWQkNiIsImlzX3N1Ym5hdmlnYXRpb24iLCJuYXYkMCIsImdvYWwiLCJuYXYkMSIsInJlbmFtZV9pZCIsImluajJjYyIsImltZyIsIngkMSIsInQkMiIsImNoZWNrX2VkZ2UiLCJkc3RfaXNfb2theSIsImluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSIsImRzdCIsImRzdCQwIiwicnR5IiwicnR5JDAiLCJyb290JDAiLCJpbXBlcmF0aXZlX2RzdF9pc19va2F5IiwiaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIiwiY29uY3JldGl6ZV9wb3J0IiwiY29uY3JldGl6ZSIsIm5hdiIsInN0ZXAiLCJzdCIsImNvcHlfYWdlbnQiLCJhZ2VudCIsImNyZWF0ZSIsIm4iLCJpIiwiZmluZF9hdXgiLCJhIiwiYWkiLCJyb290IiwiZmluZCIsImgiLCJ4IiwiY29tYmluZV9yYW5rcyIsImJ5IiwiaXkiLCJieCIsIml4IiwiYnkkMCIsInVuaW9uIiwieSIsInJvb3RfeCIsInJvb3RfeSIsInJhbmtfeCIsInJhbmtfeSIsInVuaW9uX2ZpbmRfY291bnRlcnMiLCJzaWdzIiwibWl4IiwidCIsInNpZ3MkMCIsImFnIiwiYWZ0ZXIiLCJiZWZvcmUiLCJiIiwibG5rX2IiLCJsbmtfYSIsInMiLCJwcmludCIsIm5vQ291bnRlcnMiLCJjcmVhdGVkIiwiaW5pdGlhbF9jb21tYSIsImYiLCJjb3VudGVyX2FnZW50cyIsInNvbWUiLCJhZ190eSIsImFnX3R5JDAiLCJpbnRzIiwicG9ydHMiLCJlbXB0eSIsImkkMSIsImlzX2NvdW50ZXIiLCJjb3VudGVyIiwiaSQwIiwiYWdlbnRfdG9fanNvbiIsImFjYyIsImFnZW50X29mX2pzb24iLCJwIiwidG9fanNvbiIsIm0iLCJvZl9qc29uIiwibCIsImVfdG9feW9qc29uIiwiZmlsZW5hbWVzIiwiZl9taXgiLCJmX2lkIiwib3AiLCJhJDAiLCJvcCQwIiwib3AkMSIsImNjIiwibm8iLCJ5ZXMiLCJjb25kIiwiYm9vbF90b195b2pzb24iLCJ0b2tlbiIsImV4cHIiLCJtaXh0dXJlIiwiZXhwciQwIiwiYiQwIiwiYSQxIiwiZV9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInRvayIsInByX21peCIsInByX3RvayIsInByX3ZhciIsImxhYiIsImFzdCIsInRrIiwicHJpbnRfYm9vbCIsImNvbnN0JDAiLCJpbnQkMCIsImZsb2F0JDAiLCJhZGQiLCJlMSIsImUyIiwibWludXMiLCJtdWx0IiwiZGl2IiwicG93IiwibG9nIiwibG4iLCJzaW4iLCJjb3MiLCJ1bWludXMiLCJzcXJ0IiwiYWRkX2RlcCIsImQiLCJ4JDAiLCJvdXQiLCJ0b2tzX2QiLCJpbl9lIiwiaW5fdCIsImoiLCJhZGRfZGVwX2Jvb2wiLCJoYXNfbWl4JDAiLCJ2YXJfZGVjbHMiLCJoYXNfbWl4IiwiYm9vbF9oYXNfbWl4JDAiLCJib29sX2hhc19taXgiLCJpc19jb25zdGFudCIsImMiLCJib29sX2lzX2NvbnN0YW50IiwiaXNfdGltZV9ob21vZ2VuZW91cyIsImJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyIsImF1eF9leHRyYWN0X2NjIiwiYWNjJDAiLCJleHRyYWN0X2NjX2Jvb2wiLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19iIiwic2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCIsInRva3MiLCJ2YXJzIiwicHJvcGFnYXRlX2NvbnN0YW50Iiwid2FybmluZyIsIm1heF90aW1lIiwibWF4X2V2ZW50cyIsInVwZGF0ZWRfdmFycyIsInBvcyIsImMxIiwiYzIiLCJwb3MkMCIsImEkMiIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiY29uZCQwIiwicHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wiLCJwb3MkNSIsInQkMCIsImEkMyIsImEkNCIsInBvcyQ2IiwiYSQ1IiwiYSQ2IiwiYiQxIiwiYiQyIiwibjEiLCJuMiIsImhhc19wcm9ncmVzc19kZXAiLCJvbmx5X3RpbWUiLCJ2YXJzX2RlcHMiLCJkZXBzIiwiYXV4IiwiayIsImJvb2xfaGFzX3Byb2dyZXNzX2RlcCIsImlzX2VxdWFsaXR5X3Rlc3RfdGltZSIsIm1hcF9vbl9taXh0dXJlIiwibyIsInAkMCIsIngkMSIsIm8kMCIsInAkMSIsInAkMiIsInkkMCIsIngkMiIsIm1hcF9ib29sX29uX21peHR1cmUiLCJwJDMiLCJvJDEiLCJmb2xkX29uX21peHR1cmUkMCIsImZvbGRfb25fbWl4dHVyZSIsInYiLCJ1IiwiZm9sZF9ib29sX29uX21peHR1cmUkMCIsImZvbGRfYm9vbF9vbl9taXh0dXJlIiwiZXF1YWwiLCJhMiIsImExIiwib3BhIiwiYjIiLCJiMSIsIm9wYiIsImExJDAiLCJvcGEkMCIsImIxJDAiLCJvcGIkMCIsIm9wYSQxIiwib3BiJDEiLCJpZDEiLCJpZDIiLCJtaXgxIiwibWl4MiIsImlkMSQwIiwiaWQyJDAiLCJhMiQwIiwiYTEkMSIsImNvbmRhIiwiYjIkMCIsImIxJDEiLCJjb25kYiIsImVxdWFsX2Jvb2wiLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJhcnJheV9vZl9qc29uIiwibHMiLCJhcnJheTEiLCJhcnJheTIiLCJwcmludF9rYXBwYSIsImludGYiLCJpcyIsInNkIiwiYWQiLCJwcmludF9jeWNsZXMiLCJmb3JtIiwiY29udGFjdF9tYXAiLCJkZnMiLCJwYXRoIiwibGFzdF9zIiwia25vd24iLCJrbm93biQwIiwicyQwIiwidHkiLCJhY2MkMSIsImFnJDAiLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwib2IiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsIm9wdCIsInJlYWRfc2hhcmluZ19sZXZlbCIsImxiIiwic2hhcmluZ19sZXZlbF9vZl9zdHJpbmciLCJkZWJ1Z19wcmludF9pZCIsImZtdCIsImlkIiwic2l6ZV9vZl9jYyIsImNvbXBhcmVfY2Fub25pY2FscyIsImNjJDAiLCJpc19lcXVhbF9jYW5vbmljYWxzIiwiY29hcnNlX2hhc2giLCJwbHVzX2ludGVybmFsIiwibm9kZV9zaGFwZSIsImUiLCJuJDAiLCJleHRyYSIsImlkX3RvX3lvanNvbiIsImlkX29mX3lvanNvbiIsImR1bW15IiwiZW1wdHlfY2MiLCJuYnQiLCJyYXdfZmluZF90eSIsInR5cyIsImZpbmRfdHkiLCJhZGRfb3JpZ2luIiwicmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiIsImFscmVhZHlfc3BlY2lmaWVkIiwicmF3X2ZpbmRfcm9vdCIsIm5vZGVzX2J5X3R5cGUiLCJ0eSQwIiwiZmluZF9yb290Iiwid2VpZ2h0IiwibCQwIiwiZCQwIiwibCQxIiwiZG91YmxlJDAiLCJsaW5rcyIsImFyZV9jb21wYXRpYmxlIiwiZGVidWdfbW9kZSIsInBvc3NpYmlsaXRpZXMiLCJzdHJpY3QiLCJyb290MSIsImNjMSIsInJvb3QyIiwiY2MyIiwicmVuYW1lJDEiLCJhdF9sZWFzdF9vbmVfZWRnZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UiLCJyZW5hbWUiLCJ0b2RvcyIsInBhaXIiLCJseSIsImx4IiwicmVuIiwidG9kbyIsIm9uZV9lZGdlIiwib25lX2VkZ2UkMSIsInMxIiwiczIiLCJyIiwib25lX2VkZ2UkMCIsImNvbmZsaWN0IiwicmVuYW1lJDAiLCJ0b2RvcyQwIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMCIsImFncyIsImgxIiwiYm9vbCIsImFncyQwIiwiYXV0b21vcnBoaXNtcyIsInBvdGVudGlhbF9wYWlyaW5nIiwibGEiLCJtYXRjaGluZ3MiLCJyYXdfdG9fbmF2aWdhdGlvbiIsImZ1bGwiLCJub2RlcyIsImRvbiIsImZpcnN0IiwiZG9uJDEiLCJoJDAiLCJyZSIsImFucyIsImFucyQwIiwiZmlyc3QkMCIsIm91dCQwIiwiaW5mcyIsImNhbmRfbm9kZXMiLCJsbmsxIiwibG5rMSQwIiwiaXkkMCIsIml5JDYiLCJpeSQyIiwiaXkkNSIsIml5JDMiLCJpeSQ0IiwiaXkkMSIsIm91dGwiLCJjYW5kX25vZGVzJDAiLCJub2Rlc19ieV90eXBlJDAiLCJyZWZfbmJ0IiwicmVmX25idCQwIiwicmUkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmVfaW1nIiwicmVfaW1nJDAiLCJyZSQxIiwic2l0ZXMiLCJzaXRlcyQwIiwiY291bnRlcl92YWx1ZSIsImNvdW50Iiwic2lkIiwibmlkIiwiZWwiLCJkaSIsImRuIiwiY291bnRlcl92YWx1ZV9jYyIsImRvdGNvbW1hIiwiZG90bmV0IiwicHJpbnRfY2MiLCJjY19pZCIsIndpdGhfaWQiLCJzdGgiLCJzdGgkMCIsImZ1bGxfc3BlY2llcyIsImNjX2lkJDAiLCJuZWlnaCIsImxpbmtfaWRzIiwibm90X2VtcHR5IiwiYWdfeCIsImFnX2kiLCJzdCIsImZyZWUiLCJkc3RfcCIsImRzdF9hIiwiZHN0X3R5Iiwib3V0JDEiLCJwcmludF9jY19hc19pZCIsIm5vdF9lbXB0eSQwIiwibWVyZ2VfY29tcGF0aWJsZSIsInJlc2VydmVkX2lkcyIsImZyZWVfaWQiLCJpbmoxX3RvXzIiLCJpbWciLCJhdmFpbGFibGVfaWRzIiwidXNlZF9pZHMiLCJhdmFpbGFibGVfaW5fY2MxIiwiZnJlZV9pZF9mb3JfY2MxIiwiZ2V0X2NjMiIsInBhY2siLCJ0b2RvczIiLCJ0b2RvczEiLCJpbmoyIiwiaW5qMSIsImZyZWVfaWQkMCIsImZyZWVfaWQkMSIsImdldF9jYzEiLCJub2Rlc2kiLCJub2Rlc28iLCJub2Rlc2oiLCJub2Rlc28kMCIsIm5vZGVzaiQwIiwic3RpJDEiLCJuJDEiLCJzdGokMyIsInN0byQwIiwibiQyIiwic3RqIiwic3RpIiwic3RqJDIiLCJzdG8iLCJzdGokMCIsInN0aSQwIiwic3RqJDEiLCJpbmoyJDAiLCJwYWNrJDAiLCJ0b2RvczIkMCIsImokMCIsIm5vZGVzaSQwIiwiaW5qMiQxIiwicGFjayQxIiwiY29udGVudCIsInJvb3RzIiwic29ucyIsInNpZ25hdHVyZXMiLCJlbnYiLCJwcmludCQwIiwicHBfcG9pbnQiLCJwX2lkIiwiZ2V0X3NpbmdsZV9hZ2VudCIsImdldCQwIiwidG9fbmF2aWdhdGlvbiIsInRyYW5zaXRpb25fdG9feW9qc29uIiwidHJhbnNpdGlvbl9vZl95b2pzb24iLCJkc3QiLCJzb3J0cyIsInNpZ19kZWNsIiwibCQyIiwicyQxIiwibCQzIiwibmV3X29ic19tYXAiLCJnZXRfZWxlbWVudGFyeSIsImRvbWFpbiIsIm5vZGUiLCJhcnJvdyIsInNhIiwidGFpbCIsImluaiIsInByaW50JDEiLCJlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCIsImFfaWQiLCJmcmVzaCIsImlkX2J5X3R5cGUiLCJuYl9pZCIsImluc2VydF9uYXZpZ2F0aW9uIiwiZHN0X2lkIiwiY2NfZCIsImluajJkc3QiLCJpbmoyZHN0JDAiLCJwX2lkJDAiLCJwb2ludCIsInQkMyIsIm5hdiQwIiwic2kiLCJzaSQwIiwidCQxIiwic2kkMSIsImFnJDEiLCJuJDMiLCJzaWwiLCJhZ2wiLCJpbmokMCIsInQkMiIsIm4kNCIsInN1cCIsImlual9lMnN1cCIsImlual9zdXAyZHN0IiwiaW5qX2RfdG9fbyIsImNjX28iLCJpbnRlciIsImRpc2MiLCJub2Rlc2QiLCJkaXNjJDAiLCJub2Rlc28kMSIsImRzIiwiZGwiLCJvcyIsIm9sIiwibGkiLCJkaXMiLCJpbnQkMSIsImludGVybiQxIiwiYWxsX2xpbmtzIiwiZGlzY292ZXJlZCQyIiwiZGlzY292ZXJlZCIsIm5leHRfcm91bmQiLCJyZWNvZ24iLCJpbnRlcm4iLCJpbnRlcm4kMCIsInJlY29nbiQwIiwicmVjb2duJDEiLCJuYXYiLCJpbmpfcF8yZHN0IiwicF9pZCQxIiwiaW5qMmRzdCQxIiwiYWRkX2NjIiwidG9wbGV2ZWwiLCJvcmlnaW4iLCJlbGVtZW50IiwidyIsImhhc2giLCJydHkkMCIsInJpZCQwIiwicm9vdHMkMCIsInJ0eSIsInJpZCIsImVudl93Iiwib3V0X2lkIiwiZW52X3dfaCIsIm9mX2VudiIsImFjY193IiwiZGVidWdfcHJpbnQiLCJjaGVja19kYW5nbGluZyIsIndrIiwiYmVnaW5fbmV3IiwiZnJlc2hfY2NfaWQiLCJyYXdfZmluaXNoX25ldyIsImNjX2NhbmRpZGF0ZSIsInByZWVudiIsImZpbmlzaF9uZXciLCJuZXdfbGluayIsInhfbiIsInlfbiIsInN0eSIsInN0eCIsIm5ld19mcmVlIiwibmV3X2ludGVybmFsX3N0YXRlIiwidmEiLCJuZXdfbm9kZSIsInR5cGVfaWQiLCJhcml0eSIsIm5vZGUkMCIsImZvbGRfYnlfdHlwZSIsImFnZW50X3R5cGUiLCJsaXN0X3BvcyIsImZvbGQiLCJmaW5hbGl6ZSIsInNoYXJpbmciLCJlbnYkMCIsInckMCIsInckMSIsInckMiIsInckMyIsInckNCIsInckNSIsImRvbWFpbiQxIiwibGV2ZWwkNCIsImFjYyQzIiwibGV2ZWwkMSIsImRvbWFpbiQwIiwibGlzdCIsImFjYyQyIiwidGhpcyQwIiwibGV2ZWwiLCJ0aGlzJDEiLCJuZXdzIiwicmVuYW1pbmciLCJhY2NuIiwibm9kZXMxIiwibm9kZXMyIiwiaTIiLCJsMiIsImkxIiwibDEiLCJpbWFnZSIsIm1pZCIsImlkJDAiLCJpZCQxIiwibGV2ZWwkMiIsImxldmVsJDMiLCJjb21wbGV0ZV9kb21haW4iLCJkb21haW4kMiIsInNpbmdsZXMiLCJzaWdzJDEiLCJlbGVtZW50YXJpZXMiLCJzdGVwIiwiYXJyIiwidHkxIiwic2ExIiwiczIkMCIsInR5MiIsInNhMiIsInN0YXRfbmF2X3N0ZXBzIiwiZG9tYWluX2xldmVsIiwiYWNjX2xldmVsIiwibGwiLCJhY2NsIiwiaW5qcyIsImlual9lX3giLCJsZXZlbDAiLCJzaW5nbGVfYWdlbnRfcG9pbnRzIiwibWVyZ2Vfb25faW5mIiwiZzEiLCJnMiIsIm1fbGlzdCIsInBhaXJpbmciLCJtJDAiLCJwdXNob3V0IiwibGVuZ3RoIiwiY28iLCJjbyQwIiwibm0iLCJjY2lkIiwicmVjb25zdHJ1Y3RfcmVuYW1pbmciLCJncmFwaCIsInJpZHMiLCJpbmplY3RpdmUiLCJyZWNvbnN0cnVjdCIsImlzX3Jvb3Rfb2YiLCJyb290JDAiLCJyb290c19vZiIsImdldCIsImVsZW1lbnRzX3dpdGhfdHlwZXMiLCJjY3MiLCJtYXAiLCJjb21wYXJlIiwiZW1wdHlfY2FjaGUiLCJmcm9tX2VkZ2UiLCJzaXRlIiwiY2FjaGUiLCJjYWNoZSQwIiwicmV2X2RlcHMiLCJvYnMiLCJyZW1haW5zIiwiaW5qX3BvaW50MmdyYXBoIiwicGlkIiwiaW5qX3BvaW50MmdyYXBoJDAiLCJwaWQkMCIsInNvbiIsImNhIiwiY2EkMCIsIm5leHQiLCJjYWNoZSQxIiwicmVtYWlucyQwIiwib2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCIsInJkZXBzIiwib2JzZXJ2YWJsZXNfZnJvbV9mcmVlIiwib2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCIsIm9ic2VydmFibGVzX2Zyb21fbGluayIsInNpdGUkMCIsInByaW50X3NpdGUiLCJwbGFjZSIsInByaW50X2ludGVybmFsIiwiZ2V0X3R5cGUiLCJnZXRfaWQiLCJpc19mcmVzaCIsImNvbmNyZXRpemUiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJlbXB0eV9ldmVudCIsImpzb25fZGljdGlvbm5hcnkiLCJhY3Rpb24iLCJ3ZWlnaHRfcmV2ZXJzZSIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmUiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0Iiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdF9yZXZlIiwiY29uY3JldGl6ZV90ZXN0IiwiaW5qMmdyYXBoIiwicGwiLCJwbCQwIiwicGwkMSIsInBsJDIiLCJzJDIiLCJwbCQzIiwicyQzIiwicGwkNCIsInMkNCIsInBsJDUiLCJjb25jcmV0aXplX2FjdGlvbiIsInBsJDYiLCJ0cnlfY29uY3JldGl6ZV9hY3Rpb24iLCJhY3Rpb25zIiwiY29uY3JldGl6ZV9ldmVudCIsImJ0IiwibWFwX3Rlc3QiLCJtYXBfYWN0aW9uIiwibWF0Y2hfdGVzdHMiLCJiJDMiLCJjJDAiLCJtYXRjaF9hY3Rpb25zIiwiYmxzIiwiYWxzIiwib2siLCJnZXRfaWRzIiwibWF0Y2hfcXVhcmtzIiwiYV9xdWFya3MiLCJjX3F1YXJrcyIsImZtYXRjaCIsImFfcXVhcmtzJDAiLCJjX3F1YXJrcyQwIiwiYV9xdWFya3MkMSIsImFxIiwiYXEkMCIsImNxIiwiY19xdWFya3MkMSIsImNxcyIsIm1hdGNoaW5nX2Fic3RyYWN0X2NvbmNyZXRlIiwiYWUiLCJjZSIsImFlX3Rlc3RzIiwiY2VfdGVzdHMiLCJhYnN0cmFjdF9pZHMiLCJjb25jcmV0ZV9pZHMiLCJwYXJ0aXRpb24iLCJmbWFwIiwibWF0Y2hpbmciLCJ0ZXN0cyIsImNhY3Rpb25zJDAiLCJ0bCIsImNpZCIsImNpZCQwIiwiY3Rlc3RzIiwidGVzdCIsImNhY3Rpb25zIiwiYWN0Iiwic3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IiwibmEiLCJhZ2VudCQwIiwic3Vic3RfbWFwX3NpdGUiLCJzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCIsImludGVybmFsX3N0YXRlIiwic2l0ZSQxIiwic2l0ZSQyIiwic2l0ZSQzIiwic2l0ZSQ0IiwiYmluZGluZ190eXBlIiwic2l0ZSQ1Iiwic2l0ZSQ2Iiwic2l0ZTIiLCJzaXRlMSIsInNpdGUxJDAiLCJzaXRlMiQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3RlIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfdGVzdCIsInJlbmFtZV9hYnN0cmFjdF90ZXN0Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9hY3Rpb24iLCJmJDAiLCJzMSQwIiwiczIkMSIsInMxJDEiLCJzMSQyIiwiczIkMiIsImFnZW50JDEiLCJhZ2VudCQyIiwic3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hYyIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiIsInJlbmFtZV9hYnN0cmFjdF9hY3Rpb24iLCJzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QiLCJic3RhdGUiLCJic3RhdGUkMCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9zaSIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZSIsInJlbmFtZV9hYnN0cmFjdF9zaWRlX2VmZmVjdCIsInN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCIsInN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldiIsInN1YnN0X21hcDJfYWdlbnRfaW5fY29uY3JldGVfZSIsImYkMSIsImYkMiIsInN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IiwicmVuYW1lX2Fic3RyYWN0X2V2ZW50IiwicHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSIsInByaW50X2NvbmNyZXRlX3Rlc3QiLCJwcmludF9jb25jcmV0ZV9hY3Rpb24iLCJwcmludF9jb25jcmV0ZV9iaW5kaW5nX3N0YXRlIiwiYWdfaWQiLCJzaWdzJDIiLCJzaWdzJDMiLCJ3cml0ZV9iaW5kaW5nX3R5cGUiLCJyZWFkX2JpbmRpbmdfdHlwZSIsImJpbmRpbmdfdHlwZV90b19qc29uIiwid3JpdGVfcXVhcmsiLCJyZWFkX3F1YXJrIiwicXVhcmtfdG9fanNvbiIsInF1YXJrX29mX2pzb24iLCJ3cml0ZV90ZXN0IiwicmVhZF90ZXN0IiwiYmkiLCJ0ZXN0X3RvX2pzb24iLCJ0ZXN0X29mX2pzb24iLCJ3cml0ZV9hY3Rpb24iLCJpbmZvIiwicmVhZF9hY3Rpb24iLCJhY3Rpb25fdG9fanNvbiIsImFjdGlvbl9vZl9qc29uIiwid3JpdGVfZXZlbnQiLCJiZiIsInJlYWRfZXZlbnQiLCJzaWRlX2VmZmVjdHNfc3JjIiwic2lkZV9lZmZlY3RzX2RzdCIsImNvbm5lY3Rpdml0eV90ZXN0cyIsImV2ZW50X3RvX2pzb24iLCJjY3QiLCJldmVudF9vZl9qc29uIiwiY190Iiwic19lX2RzdCIsInNfZV9zcmMiLCJjY2wiLCJwMiIsInAxIiwicDEkMCIsInAyJDAiLCJwJDQiLCJwJDUiLCJwJDYiLCJwJDciLCJwJDgiLCJuJDUiLCJtYXBfZm9sZF9hZ2VudCIsImFjYyQ0IiwiYWNjJDUiLCJhJDciLCJhY2MkNiIsImEkOCIsIm1hcF9hZ2VudCIsImZvbGRfYWdlbnQiLCJzJDUiLCJzJDYiLCJhJDkiLCJnZXRfbmVnYXRpdmVfcGFydCIsImNyZWF0ZWRfYWdlbnRzIiwibG5rX2RzdCIsImFnZW50c19jcmVhdGVkX2J5X2FjdGlvbiIsIm5lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hYyIsInNpZGVfZWZmZWN0X2RzdHMiLCJyZW0iLCJyZXYiLCJleHRyYWN0X2NjX2lkcyIsImV4dHJhY3RfYWJzdHJhY3RfZXZlbnQiLCJhbGdfZXhwcl90b195b2pzb24iLCJhbGdfZXhwcl9vZl95b2pzb24iLCJydWxlX3RvX3lvanNvbiIsInJ1bGVfb2ZfeW9qc29uIiwiZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zIiwidHIiLCJnIiwiZW1iIiwiZyQwIiwiZW1iJDAiLCJwcmludF9leHByX3RvX3lvanNvbiIsImZfdmFyIiwicHJpbnRfZXhwcl9vZl95b2pzb24iLCJtYXBfZXhwcl9wcmludCIsImZvbGRfZXhwcl9wcmludCIsImRpbl9raW5kX3RvX3lvanNvbiIsImRpbl9raW5kX29mX3lvanNvbiIsIndyaXRlX2Rpbl9raW5kIiwic3RyaW5nX29mX2Rpbl9raW5kIiwibGVuIiwicmVhZF9kaW5fa2luZCIsImRpbl9raW5kX29mX3N0cmluZyIsInByaW50X3RfZXhwcl90b195b2pzb24iLCJwcmludF90X2V4cHJfb2ZfeW9qc29uIiwibW9kaWZpY2F0aW9uX3RvX3lvanNvbiIsInJhdyIsIm5hbWUiLCJraW5kIiwiaWRzJDAiLCJuYW1lJDAiLCJmJDMiLCJ0ZXN0cyQwIiwiaWRzJDEiLCJmJDQiLCJmJDUiLCJtb2RpZmljYXRpb25fb2ZfeW9qc29uIiwicmF3JDAiLCJib29sX2V4cHJfdG9feW9qc29uIiwiYm9vbF9leHByX29mX3lvanNvbiIsInBlcnR1cmJhdGlvbl90b195b2pzb24iLCJwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIiwiZXhpc3RzX21vZGlmaWNhdGlvbiIsImNoZWNrIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19lIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19wIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tIiwiZSQwIiwiZm4iLCJleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX20kMCIsIm1hcF9leHByX3J1bGUiLCJmb2xkX2V4cHJfcnVsZSIsIm1hcF9leHByX3BlcnR1cmJhdGlvbiIsImZfYWxnIiwiZl9ib29sIiwiZm9sZF9leHByX3BlcnR1cmJhdGlvbiIsInByaW50X2xpbmsiLCJwcl9wb3J0IiwicHJfdHlwZSIsInByX2Fubm90IiwibGlua190b19qc29uIiwicG9ydF90b19qc29uIiwidHlwZV90b19qc29uIiwiYW5ub3RfdG9fanNvbiIsImxpbmtfb2ZfanNvbiIsInBvcnRfb2ZfanNvbiIsInR5cGVfb2ZfanNvbiIsImFubm90ZWRfb2ZfanNvbiIsInByaW50X2xpbmtfYW5ub3QiLCJsdHlwZXMiLCJydWxlX2ludGVybmFsX29mX2pzb24iLCJwcmludF9jb3VudGVyX3Rlc3QiLCJwcmludF9ydWxlX21peHR1cmUiLCJjcmVhdGVkX2NvdW50ZXJzIiwic2hvd19lcmFzZWQiLCJzaG93X2VyYXNlZCQwIiwiY291bnRlcnMiLCJzd2l0Y2gkMCIsImlzX2NvdW50ZXIkMCIsImVxIiwiZGVsdGEiLCJwcmludF9yYXRlcyIsIm1heF9kaXN0IiwicmEiLCJtZCIsInByaW50X3J1bGUiLCJuYiIsImx0eXBlcyQwIiwicnVsZV9taXh0dXJlX3RvX2pzb24iLCJydWxlX21peHR1cmVfb2ZfanNvbiIsImxhbGdfZXhwcl90b19qc29uIiwibGFsZ19leHByX29mX2pzb24iLCJydWxlX3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJyYWlzZV9pZl9tb2RpZmljYXRpb24iLCJyYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyIsInJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIiwic3RhdHVzIiwic2lkZSIsImFnZW50X25hbWUiLCJyYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXQiLCJyYWlzZV9jb3VudGVyX21pc3VzZWQiLCJyYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSIsInJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQiLCJjb3B5X3J1bGVfYWdlbnQiLCJhZ2VudF90b19lcmFzZWQiLCJyYV9wb3J0cyIsInJhX2ludHMiLCJ0b19lcmFzZWQiLCJ0b19tYWludGFpbmVkIiwidG9fcmF3X21peHR1cmUiLCJpbnRlcm5hbHMiLCJwb3J0X25hbWUiLCJtYXhfbGlua19pZCIsIm1heF9zIiwibWF4X2xpbmtfaWRfc2l0ZXMiLCJtYXhfaWQiLCJsaW5rX29jY3VyZW5jZV9mYWlsdXJlIiwia2V5IiwicG9ydHNfZnJvbV9jb250YWN0X21hcCIsInR5X2lkIiwiYWRkX29uZV9pbXBsaWNpdF9pbmZvIiwibGluayIsInByZXZzIiwicF9zd2l0Y2giLCJkc3RfaW5mbyIsImFnX3RhaWwiLCJvdXRfdGFpbCIsInBvcnQiLCJwb3J0cyQwIiwic3ciLCJ0b2RvJDAiLCJwb3J0cyQxIiwiaXNfbGlua2VkX29uX3BvcnQiLCJtZSIsImlzX2xpbmtlZF9vbiIsImRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIiwidHJhbnNmIiwibGlua3NfdHJhbnNmIiwiY2FuZCIsImFkZGVkIiwicmVtb3ZlZCIsImxpbmtzX3RyYW5zZiQwIiwibGlua3NfdHJhbnNmJDEiLCJkZWZpbmVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJhZGRfaW5zdGFudGlhdGlvbl9mcmVlIiwiYWRkX3NpZGVfc2l0ZSIsInNpZGVfc2l0ZXMiLCJhZGRfZnJlZWRfc2lkZV9lZmZlY3QiLCJzaWRlX2VmZmVjdHMiLCJhZGRfYWdlbnRzX2luX2NjIiwicmVnaXN0ZXJlZF9saW5rcyIsImluc3RhbnRpYXRpb25zIiwiYWdfbCIsIndrJDAiLCJ0cmFuc2YkMCIsImhhbmRsZV9wb3J0cyIsInJfbCIsImNfbCIsImxfdCIsInNpdGVfaWQkNCIsInJfbCQwIiwibGlua3MkMiIsImxfdCQwIiwic2l0ZV9pZCQ1IiwiaXNfZXJhc2VkIiwicmVmX3BvcnRzIiwib19jY190ZXN0cyIsInRoaXNfY2NfdGVzdHMiLCJzaWRlX2VmZmVjdHNfZHN0JDEiLCJzaWRlX2VmZmVjdHNfc3JjJDEiLCJhY3Rpb25zJDMiLCJ0ZXN0cyQyIiwic2l0ZV9pZCQyIiwiaW5zdGFudGlhdGlvbnMkMCIsImFjdGlvbnMkMCIsImxpbmtzJDAiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJzaWRlX2VmZmVjdHNfc3JjJDAiLCJhY3Rpb25zJDIiLCJ0ZXN0cyQxIiwic2lkZV9lZmZlY3RzJDEiLCJhY3Rpb25zJDEiLCJzaXRlX2lkJDMiLCJzaWRlX2VmZmVjdHMkMiIsInNpdGVfaWQkMSIsInNpdGVfaWQiLCJzaXRlX2lkJDAiLCJzaWRlX2VmZmVjdHMkMCIsIndrJDEiLCJqJDEiLCJqJDIiLCJpJDMiLCJpJDQiLCJ3ayQ2IiwidHJhbnNmJDciLCJ3ayQyIiwibF90JDIiLCJ0cmFuc2YkMSIsInNpdGVfaWQkNyIsImxfdCQxIiwic2l0ZV9pZCQ2IiwiaSQyIiwiZHN0X3BsYWNlIiwid2skMyIsImNfbCQwIiwibF90JDMiLCJ0cmFuc2YkMiIsInNpdGVfaWQkOCIsInJfbCQxIiwicl9sJDIiLCJsX3QkNyIsInRyYW5zZiQ2IiwicmUkMiIsInNpdGVfaWQkMTIiLCJzaXRlX2lkJDExIiwic2l0ZV9pZCQ5IiwibF90JDUiLCJ0cmFuc2YkNCIsIndrJDQiLCJsX3QkNiIsInRyYW5zZiQ1IiwiY19sJDEiLCJzaXRlX2lkJDEwIiwiaW5jcl9vcmlnaW4iLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0iLCJjb21waWxlX21vZGVfb24iLCJwcmVjb21wX21peHMiLCJuZXdfc3dpdGNoIiwiYXV4X29uZSQwIiwicHJldmlvdXMiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiYXV4X2FncyQwIiwiaSQ1Iiwib3JfdHkiLCJwcmV2IiwiYXV4X29uZSIsImkkNiIsIm9yX3R5JDAiLCJpJDciLCJ0b2RvcyQxIiwiYXV4X2FncyIsImFsbF9taXhzIiwidHJhbnNmb3JtYXRpb25zJDAiLCJldmVudCIsImFkZGVkJDUiLCJ3a19vdXQiLCJlbnYkMSIsImFkZGVkJDYiLCJyZW1vdmVkJDAiLCJpbnN0YW50aWF0aW9ucyQxIiwibGlua3NfdHJhbnNmJDIiLCJhZGRlZCQ3IiwicmVtb3ZlZCQxIiwiYWN0aW9ucyQ0IiwiYWNzIiwiYXkiLCJheCIsInJlbW92ZWQkMiIsInRyYW5zZm9ybWF0aW9ucyQyIiwiY3JlYXRlX2FjdGlvbnMiLCJhZGRlZCQ0IiwiYWRkZWQkMCIsImFkZGVkJDEiLCJwb2ludCQwIiwiYWRkZWQkMiIsImFkZGVkJDMiLCJpbnRmJDAiLCJjcmVhdGVfYWN0aW9ucyQwIiwidHJhbnNmb3JtYXRpb25zJDMiLCJhY3Rpb25zJDUiLCJjb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW0kMCIsImNjX2VudiIsInJ1bGVzIiwibGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSIsIm5iX2NjIiwibWl4cyIsImxua19wYWNrIiwibG5rX3BhY2skMCIsImtub3duX3NyYyIsImRzdF9zIiwic3JjX2luZm8iLCJ0cmFuc2ZzIiwiZnIiLCJmaWQiLCJhX3R5cGUiLCJlZGl0IiwiY2NfaWQxIiwiY2NfaWQyIiwiZWRpdCQwIiwidGVzdCQwIiwiZWRpdCQxIiwidGVzdCQxIiwiZWlkIiwiZWRpdCQyIiwidGVzdCQyIiwiaWQkMyIsImNjX2lkJDEiLCJpZCQyIiwidHJhbnNmcyQwIiwicl9taXgiLCJyX2NyZWF0ZWQiLCJwYXR0ZXJuc19vZl9taXh0dXJlIiwicHJlX2VudiIsInNuYXAiLCJjY19jYWNoZSIsInJhX3R5cGUiLCJhciIsImRhbmdsaW5nIiwiZGFuZ2xpbmckMCIsImRhbmdsaW5nJDEiLCJjY19jYWNoZSQwIiwicHJlX2VudiQwIiwiaW5pdCIsInRva2VucyIsImFsZ3MiLCJvYnNlcnZhYmxlcyIsImludGVydmVudGlvbnMiLCJhc3RfcnVsZXMiLCJhbGdfcmQiLCJ0b2tfcmQiLCJkZXBzX2luX2UiLCJkZXBzX2luX3QiLCJkZWNvbnN0cnVjdCIsImdldF9vYnMiLCJnZXRfcnVsZXMiLCJuZXdfZG9tYWluIiwidG9rZW5zX2ZpbmRlciIsImFsZ3NfZmluZGVyIiwibnVtX29mX2FnZW50Iiwibm1lIiwiZm9sZF9ydWxlcyIsInJ1bGUiLCJmb2xkX3BlcnR1cmJhdGlvbnMiLCJnZXRfcnVsZSIsImdldF9hc3RfcnVsZV93aXRoX2xhYmVsIiwiZ2V0X2FzdF9ydWxlIiwiZm9sZF9hc3RfcnVsZXMiLCJsa2FwcGFfcnVsZSIsImdldF9hc3RfcnVsZV9yYXRlX3BvcyIsInVuYXJ5IiwibmJfcnVsZXMiLCJudW1zX29mX3J1bGUiLCJuYl9zeW50YWN0aWNfcnVsZXMiLCJudW1fb2ZfYWxnIiwiZ2V0X2FsZyIsImdldF9hbGdzIiwibmJfYWxncyIsIm51bV9vZl90b2tlbiIsInN0ciIsIm5iX3Rva2VucyIsImdldF9wZXJ0dXJiYXRpb24iLCJuYl9wZXJ0dXJiYXRpb25zIiwiZ2V0X2FsZ19yZXZlcnNlX2RlcGVuZGVuY2llcyIsImdldF90b2tlbl9yZXZlcnNlX2RlcGVuZGVuY2llcyIsImFsbF9kZXBlbmRlbmNpZXMiLCJwcmludF9hZ2VudCIsInByaW50X2FsZyIsInNwZWNpYWwiLCJwcmludF90b2tlbiIsInByaW50X2FzdF9ydWxlIiwibWFwX29ic2VydmFibGVzIiwicHJfYWxnIiwicHJfcnVsZSIsInByX3BlcnQiLCJwcl9ydWxlJDAiLCJjaGVja19pZl9jb3VudGVyX2lzX2ZpbGxlZF9lbm8iLCJvdmVyd3JpdGVfdmFycyIsImFsZ19vdmVyd3JpdGUiLCJmb2xkX21peHR1cmVfaW5fZXhwciIsIngxIiwieDIiLCJ4MyIsImthcHBhX2luc3RhbmNlX3RvX3lvanNvbiIsImZpbGVzIiwia2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uIiwidW5hcnlfcGF0dGVybnMiLCJjY19taXgiLCJhbGdfZXhwciIsImJvb2xfZXhwciIsInByaW50X2V4cHIiLCJhbGciLCJwcmludF9leHByX3ZhbCIsImFsZ192YWwiLCJkZWNvbXBpbGVkX3J1bGUiLCJkaXN0IiwicmF0ZSIsImVsZW1lbnRhcnlfcnVsZSIsInByX3RyYW5zIiwiYm94ZWRfY2MiLCJtb2RpZmljYXRpb24iLCJmbiQwIiwiZm4kMSIsImZuJDIiLCJ2YSQwIiwiY2MkMSIsImZuJDMiLCJmbiQ0IiwicGVydHVyYmF0aW9uIiwicGVydCIsImF1eF9hbGFybSIsImVudl9rYXBwYSIsImRlY29tcGlsZWRfZW52IiwicGFyc2UiLCJyZXN1bHQiLCJnZXRfdmFsdWUiLCJwb3NfcCIsInBhcmFtIiwidmFsdWVfbGlzdCIsInBhcmFtJDAiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwiY29uZiIsInNwIiwidXAiLCJmb3JtYXRDZmxvdyQwIiwidmFsdWUiLCJwb3NfdiIsImVycm9yIiwidGwkMCIsInRsJDEiLCJkaXZpZGVfZXhwcl9ieV9pbnQiLCJvcHQkMCIsInJvb3Rfb25seSIsImxvYyIsImIkMjAiLCJhJDEzIiwicm9vdF9vbmx5JDAiLCJiJDciLCJiJDYiLCJsb2NfY3N0JDAiLCJsb2NfY3N0JDEiLCJjJDEiLCJjJDIiLCJiJDQiLCJsb2NfY3N0JDIiLCJiJDUiLCJsb2NfY3N0IiwiZXhwciQzIiwib3B0JDMiLCJleHByJDIiLCJvcHQkMiIsImV4cHIkMSIsIm9wdCQxIiwiYiQ5IiwiYiQ4IiwibG9jZGl2IiwiYyQ1IiwiYiQxMyIsImV4cHIkNiIsIm9wdCQ2IiwiYiQxNCIsImIkMTAiLCJjJDQiLCJsb2NfYmluJDAiLCJiJDExIiwiZXhwciQ1Iiwib3B0JDUiLCJjJDMiLCJsb2NfYmluIiwiZXhwciQ0Iiwib3B0JDQiLCJhJDEwIiwiYiQxMiIsImIkMTYiLCJhJDExIiwiYiQxNSIsImIkMTgiLCJhJDEyIiwiYiQxNyIsImIkMTkiLCJsb2MkMCIsImEkMTQiLCJhJDE1IiwiYSQxOCIsImEkMTYiLCJhJDE3IiwibG9jJDEiLCJubyQwIiwieWVzJDAiLCJzaW1wbGlmeV9ib29sIiwibG9jJDIiLCJleHByJDciLCJleHByJDgiLCJsb2MkMyIsImV4cHIkOSIsImV4cHIkMTAiLCJleHByX2Jvb2wiLCJzaW1wbGlmeSIsImNsZWFuIiwiY2xlYW5fYm9vbCIsImR0IiwiZHQkMCIsImNzdCIsImNvcnJlY3RlZF9yYXRlIiwiY29ycmVjdGVkX3JhdGUxIiwiY29ycmVjdGVkX3JhdGUyIiwiZSQxIiwiY3N0JDAiLCJjb3JyZWN0ZWRfcmF0ZSQwIiwiY3N0JDEiLCJnZXRfY29ycmVjdGVkX3JhdGUkMCIsImNvcnJlY3RlZF9yYXRlX2NvbnN0IiwibmVjZXNzYXJpbHlfZXF1YWwiLCJhX29wdCIsImJfb3B0IiwiZGVwIiwiYWRkX21peHR1cmUiLCJhZGRfdG9rZW4iLCJkZXBfZW52IiwidGltZV92YXIiLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZGlmZl9nZW4iLCJmX3Rva2VuIiwiZl9zeW1iIiwiZl90aW1lIiwiZTIkMCIsImRpZmZfdG9rZW4iLCJkaWZmX21peHR1cmUiLCJmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIiwiYXJyYXlfaWQiLCJmb2xkX292ZXJfbWl4dHVyZXNfaW5fYWxnX2V4cHIiLCJtb2RlbCIsImFsZ3NfZXhwciIsImFjY3UkMiIsInVuYXJ5X3JhdGUiLCJkZWx0YV90b2tlbnMiLCJqc29uX2RpY3Rpb25uYXJ5IiwianNvbl9kaWN0aW9ubmFyeSQwIiwidXBkYXRlX3Byb2ZpbGluZ19pbmZvIiwiYSIsImluZm8iLCJldmVudCIsInN0b3J5X2lkIiwiY29tcGFyZV9ieV9zdG9yeV9pZCIsIngiLCJ5IiwidG9fanNvbiIsImYiLCJvZl9qc29uIiwic3RvcnlfZXZlbnQiLCJzdG9yeV90aW1lIiwid3JpdGVfanNvbiIsIm9iIiwibyIsInJlYWRfanNvbiIsInN0IiwiYiIsInByb2ZpbGluZ19pbmZvIiwicHJpbnRfZXZlbnRfa2luZCIsImVudiIsImkiLCJsIiwicyQxIiwiZW52JDAiLCJyX2lkIiwicyIsInMkMCIsInByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90Iiwic3Vic19zdGVwIiwiZHVtbXlfc3RlcCIsInByaW50X2V2ZW50IiwiY29tcGFjdCIsImxvZyIsImUiLCJldl9raW5kIiwic2lncyIsInN0YXRlIiwic2l0ZSIsImFnIiwiYWdfaWQiLCJwcmludF9zdGVwIiwib3B0IiwiZW52JDEiLCJzdGgiLCJ5JDAiLCJ4JDAiLCJhY3Rpb25zIiwidGVzdHMiLCJzaWdzJDAiLCJnZXRfdHlwZXNfZnJvbV9pbml0IiwiYWNjIiwiYWN0aW9uIiwiYXR5cGUiLCJwcmludF9sYWJlbF9vZl9zdGVwIiwieCQzIiwieCQ0IiwiYSQwIiwibCQwIiwieCQ1IiwieCQxIiwieCQyIiwid3JpdGVfc3RlcCIsInoiLCJ6JDAiLCJ6JDEiLCJ5JDEiLCJyZWFkX3N0ZXAiLCJiJDAiLCJzdGVwX3RvX3lvanNvbiIsInJldl9hY3Rpb25zIiwid3JpdGVfanNvbiQwIiwicmVhZF9qc29uJDAiLCJzdHJpbmdfb2Zfc3RlcCIsImxlbiIsInN0ZXBfb2Zfc3RyaW5nIiwic3RlcF9pc19vYnMiLCJzdGVwX2lzX2luaXQiLCJzdGVwX2lzX3N1YnMiLCJzdGVwX2lzX3J1bGUiLCJzdGVwX2lzX3BlcnQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCIsImNyZWF0aW9uX29mX2FjdGlvbnMiLCJvcCIsImNyZWF0aW9uX29mX3N0ZXAiLCJhYyIsImhhc19jcmVhdGlvbl9vZl9zdGVwIiwidGVzdHNfb2Zfc3RlcCIsImFjdGlvbnNfb2Zfc3RlcCIsInNpZGVfZWZmZWN0c19vZl9zdGVwIiwiaW5pdF90cmFjZV9maWxlIiwidXVpZCIsImRlc2MiLCJhc3NlcnRfZmllbGQiLCJpZGVudCIsInJlYWRfdHJhY2VfaGVhZGVycyIsImxleF9zdCIsImxleF9idWYiLCJ1dWlkJDAiLCJ1dWlkJDEiLCJpZGVudCQwIiwiZm9sZF90cmFjZSIsImluaXQiLCJvdXQiLCJmb2xkX3RyYWNlX2ZpbGUiLCJmbmFtZSIsImdldF9oZWFkZXJzX2Zyb21fZmlsZSIsInNpemUiLCJuYiIsInQiLCJ3cml0ZV90Iiwic3RyaW5nX29mX3QiLCJyZWFkX3QiLCJwIiwibGIiLCJ0X29mX3N0cmluZyIsImN1cnJlbnRfc3RvcnkiLCJjIiwiY3VycmVudF90aW1lIiwiY3VycmVudF9ldmVudCIsIm5iX251bGxfZXZlbnQiLCJjb25zZWN1dGl2ZV9udWxsX2V2ZW50IiwicnVsZV9pZCIsImNvbnNlY3V0aXZlX2Jsb2NrZWQiLCJpbmNfc3RvcmllcyIsImNoZWNrX3RpbWUiLCJtYXgiLCJjaGVja19ldmVudHMiLCJvbmVfdGltZV9hZHZhbmNlIiwiZHQiLCJvbmVfY29uc3RydWN0aXZlX2V2ZW50IiwidCQwIiwib25lX25vX21vcmVfYmluYXJ5X2V2ZW50Iiwib25lX25vX21vcmVfdW5hcnlfZXZlbnQiLCJvbmVfY2xhc2hpbmdfaW5zdGFuY2VfZXZlbnQiLCJvbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IiwidGkiLCJ0aSQwIiwib25lX2Jsb2NrZWRfZXZlbnQiLCJnZXRfZWZmaWNpZW5jeSIsInByaW50X2VmZmljaWVuY3kiLCJhbGwiLCJpbml0X3RpbWUiLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJwbG90X3BlcmlvZCIsInRpbWVfcmF0aW8iLCJ0bWF4IiwiZXZlbnRfcmF0aW8iLCJlbWF4Iiwic2V0X21heF90aW1lIiwic2V0X21heF9ldmVudHMiLCJ0cmFja2VkX2V2ZW50cyIsImNvdW50ZXIiLCJzZXRfcGxvdF9wZXJpb2QiLCJjcmVhdGUiLCJtYXhfZXZlbnQiLCJuYl9ydWxlcyIsImluaXRfdCIsInN0aCQwIiwiaW5pdF9lIiwicmVpbml0aWFsaXplIiwibmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyIsImN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIiwibmV4dF9zdG9yeSIsInBvc2l0aXZlX3Bsb3RfcGVyaW9kIiwiZmlsbCIsIm91dHB1dHMiLCJkRSIsIm5leHQiLCJkVCIsImxhc3QiLCJuIiwiZFQkMCIsInRpbWUiLCJjb3VudGVyJDAiLCJwb2ludHMiLCJmYWtlX3RpbWUiLCJhcnJvd2hlYWQiLCJjb2xvciIsInByaW50X2luaXRpYWxfaW5wdXRzIiwiY29uZiIsImlucHV0c19mb3JtIiwibm9Db3VudGVycyIsInIiLCJpbnNfZnJlc2giLCJ0ayIsInByaW50X3NuYXBzaG90IiwiZWwiLCJuYSIsIm1peCIsInByaW50X2RvdF9zbmFwc2hvdCIsIndyaXRlX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsImtleSIsInNuYXBzaG90X3Rva2VucyIsInNuYXBzaG90X2FnZW50cyIsInNuYXBzaG90X3RpbWUiLCJzbmFwc2hvdF9ldmVudCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsIndyaXRlX2RpbiIsInJlYWRfZGluIiwiaCIsImsiLCJkaW5fZW5kIiwiZGluX3J1bGVzIiwiZGluX2ZsdXhzIiwiZGluX2hpdHMiLCJkaW5fc3RhcnQiLCJkaW5fa2luZCIsInN0cmluZ19vZl9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwicHJpbnRfZG90X2RpbiIsImZsdXgiLCJkIiwidiIsImFycm93aGVhZCQwIiwiY29sb3IkMCIsInByaW50X2h0bWxfZGluIiwiYWRkX3Bsb3RfbGluZSIsIm5ld19vYnNlcnZhYmxlcyIsInBsb3QiLCJuZXdfdmFsdWVzIiwibmJyIiwiaW5pdF9wbG90IiwicGxvdF9sZWdlbmQiLCJ3cml0ZV9wbG90IiwicmVhZF9wbG90IiwicGxvdF9zZXJpZXMiLCJzdHJpbmdfb2ZfcGxvdCIsInBsb3Rfb2Zfc3RyaW5nIiwicHJpbnRfcGxvdF9zZXAiLCJpc190c3YiLCJwcmludF9wbG90X2xlZ2VuZCIsInByaW50X3Bsb3RfbGluZSIsInBwIiwiZXhwb3J0X3Bsb3QiLCJwcmludF93YXJuaW5nIiwicG9zIiwibXNnIiwicHIiLCJwb3MkMCIsImNyZWF0ZV9mbHV4IiwiaW5jcl9mbHV4X2ZsdXgiLCJvZl9ydWxlIiwib25fcnVsZSIsImluY3JfZmx1eF9oaXQiLCJzdG9wX2ZsdXgiLCJkaW5fZGF0YSIsImoiLCJlbXB0eSIsImluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4iLCJwYXR0ZXJuIiwibWF0Y2hpbmdzIiwiYWRkX2ludHNldF9pbl9pbnRtYXAiLCJpZCIsInNldCIsIm1hcCIsImJyZWFrX2FwYXJ0X2NjIiwiZWRnZXMiLCJtb2RfY29ubmVjdGl2aXR5X3N0b3JlIiwibmV3X2NjIiwib3JpZ2luX2NjIiwibW9kX2Nvbm4iLCJjY19pZCIsImNjX21hcCIsIm9zZXQiLCJvc2V0JDAiLCJuc2V0IiwibWVyZ2VfY2MiLCJjYzIiLCJjYzEiLCJtb2RfY29ubmVjdGl2aXR5IiwiY2NfbWFwJDAiLCJzZXQyIiwic2V0MSIsInVwZGF0ZV9yb290cyIsImlzX2FkZCIsInVuYXJ5X2NjcyIsInJvb3QiLCJ2YSIsInNldCQwIiwibnVtYmVyIiwicGF0IiwiZGVidWdfcHJpbnQiLCJkb21haW4iLCJyb290c19vZl9wYXR0ZXJucyIsInJvb3RzIiwicm9vdHNfb2ZfcGF0dGVybnMkMCIsInJvb3RfbWFwcyIsIm9mX3BhdHRlcm4iLCJwYXRfaWQiLCJvZl91bmFyeV9wYXR0ZXJuIiwicmVjZWl2ZV9tZXNzYWdlIiwiY2NzIiwiaXNfdmFsaWQiLCJudW1iZXJfb2ZfaW5zdGFuY2VzIiwicGF0cyIsIm51bWJlcl9vZl91bmFyeV9pbnN0YW5jZXNfaW5fYyIsInBhdDIiLCJwYXQxIiwibWFwMSIsIm1hcDIiLCJjYyIsInBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MiLCJyYW5kb21fc3RhdGUiLCJyb290MSIsInJvb3QyIiwiZm9sZF9waWNrZWRfaW5zdGFuY2UiLCJhY2MkMiIsImFjYyQwIiwicm9vdF9vcHQiLCJhY2MkMSIsImkkMCIsIm5vX25vX25vIiwiZm9sZF9pbnN0YW5jZXMiLCJleGNwIiwic2VudF90b19maXhlZF9yb290IiwiZXhjcF9yb290Iiwic2VudF90b19leGNwX3Jvb3QiLCJ0YWIiLCJhdXgiLCJpdGhfcm9vdHMiLCJpJDEiLCJmb2xkX3VuYXJ5X2luc3RhbmNlcyIsImV4ZWNfYWxnJDAiLCJ0aW1lJDAiLCJnZXRfYWxnIiwiZ2V0X21peCIsImdldF90b2siLCJhbGciLCJzayIsImFsZyQwIiwic2skMCIsImFsZyQxIiwic2skMSIsImFsZyQyIiwib3AkMCIsInNrJDIiLCJ3aXRoX3ZhbHVlIiwiYWxnJDMiLCJuJDAiLCJubyIsInllcyIsImNvbmQiLCJleGVjX2Jvb2wkMCIsImV4ZWNfYWxnIiwiZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsIm9wJDEiLCJleGVjX2Jvb2wiLCJ5ZXMkMCIsInNrJDQiLCJzayQzIiwic2skNSIsIm4xIiwic2skNiIsIm4xJDAiLCJvcCQyIiwic2skNyIsIm9wJDMiLCJzayQ4IiwidmFsdWVfYm9vbCIsInZhbHVlX2FsZyIsImdldF9lZGdlcyIsInN1bV9pbnN0YW5jZXNfbnVtYmVycyIsImluc3RzIiwicGF0dGVybnMiLCJyZWNvbXB1dGUiLCJvdmVyd3IiLCJhY3Rpdml0eSIsInNldF9hY3Rpdml0eSIsInJ1bGUiLCJ3aXRoX3RyYWNlIiwiYWN0aXZpdHlfdHJlZSIsInVuYXJ5X3BhdHRlcm5zIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiYWx3YXlzX291dGRhdGVkIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsInZhcmlhYmxlc19vdmVyd3JpdGUiLCJ2YXJpYWJsZXNfY2FjaGUiLCJyYXRlIiwiaXNfYmxvY2tlZCIsImRlYnVnX21vZGUiLCJtYXRjaGluZyIsInRvX2Jsb2NrIiwiYWJzdHJhY3RfYWN0aW9ucyIsImluaiIsImFic3RyYWN0X3Rlc3RzIiwiaW5qJDAiLCJzZXRfZXZlbnRzX3RvX2Jsb2NrIiwicHJlZGljYXRlIiwiYWxsX2luamVjdGlvbnMiLCJ1bmFyeV9yYXRlIiwic3RhdGVfaW5zdHMiLCJwYXR0ZXJuYSIsImluc3RhbmNlIiwibWF0Y2hpbmckMCIsInJldl9yb290cyIsIm1heF9kaXN0YW5jZSIsIm5vZGVzIiwicjIiLCJyMSIsInBpY2tfYV9ydWxlX2luc3RhbmNlIiwiZnJvbV9wYXR0ZXJucyIsInByaW50Iiwic3RhdHMiLCJwcmludF9zdGF0cyIsImFwcGx5X25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5zdGFuY2VzIiwic2lkZV9lZmZlY3RzIiwiZWRnZXMkMCIsImlkJDAiLCJlZGdlcyQxIiwiaWQkMSIsImlkJDIiLCJjY19tb2RpZiIsImVkZ2VzJDIiLCJzJDIiLCJpZCQzIiwic2lkZV9lZmZlY3RzJDAiLCJzJDMiLCJuYyIsImlkJDQiLCJjY19tb2RpZiQwIiwiZWRnZXMkMyIsInMkNCIsImlkJDUiLCJlZGdlcyQ0IiwiYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24iLCJpbmoyZ3JhcGgiLCJ0eSIsImZyZWVfaWQiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJpbmoyZ3JhcGgkMCIsIm5jJDAiLCJuJDEiLCJuJDIiLCJuYyQxIiwibmMkMiIsIm1vZGlmX2NjIiwic2lkZV9lZmZlY3RzJDEiLCJuJDMiLCJuYyQzIiwiYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmIiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb24iLCJuYyQ0IiwibmMkNSIsInMkNSIsIm5jJDYiLCJvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMiLCJ0cmFucyIsImdldF9zcGVjaWVzX29icyIsIm9icyIsInRyYWNrZWQiLCJmbiIsIm9rIiwicGlkIiwic3BlYyIsInVwZGF0ZV9lZGdlc19mcm9tX2FjdGlvbnMiLCJzaWRlX2VmZmVjdF9kc3QiLCJsbmtfZHN0IiwiY29uY3JldGVfcmVtb3ZlZCIsImRlbF9kZXBzIiwiZGVsX29icyIsImVkZ2VzX2FmdGVyX25lZyIsImNvbmNyZXRlX2luc2VydGVkIiwibmV3X2RlcHMiLCJuZXdfb2JzIiwic3BlY2llcyIsIm1peHR1cmUiLCJmaWxlIiwicmV2X2RlcHMiLCJtYXhfZGlzdF90b19pbnQiLCJzdG9yZV9hY3Rpdml0eSIsInN0b3JlIiwic3ludGF4X2lkIiwiY2NfdmEiLCJyYXRlJDAiLCJhY3QiLCJ1bmFyeSIsIm9sZF9hY3QiLCJ1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyIsImtub3duX3BlcnRzIiwiZGVwIiwicGVydHMiLCJtYXRjaGluZ3Nfb2ZfcnVsZSIsInJ1bGUkMCIsInBhdHRlcm5fdmEiLCJ1bmFyeV9jYW5kaWRhdGVzIiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjIiwibW9kaWZpZWRfY2NzIiwicGFjayQwIiwidW5yYXRlIiwib2xkX3BhY2siLCJuZXdfcGFjayIsImlfaW5zdCIsIm5ld192IiwibmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjJDAiLCJ1bmFyeV9jYW5kaWRhdGVzJDAiLCJwYWNrIiwib3ZlcndyaXRlX3ZhciIsInRyYW5zZm9ybV9ieV9hX3J1bGUiLCJzdGF0ZSQxIiwiZXZlbnRfa2luZCIsInBhdGgkMCIsImluamVjdGVkJDAiLCJpbmplY3RlZCIsInJkZXBzIiwiZGVwcyIsInN0YXRlJDAiLCJoJDAiLCJyZW1haW5pbmdfc2lkZV9lZmZlY3RzIiwiZmluYWxfaW5qMmdyYXBoIiwiY29uY3JldGVfaW5zZXJ0ZWQkMCIsIm5ld190cmFja2VkX29ic19pbnN0YW5jZXMiLCJldiIsInRlc3RzJDAiLCJjZXZlbnQiLCJwYXRoIiwia25vd25fYWdlbnRzIiwicHJldGVzdHMiLCJwYXRoX3Rlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwiZnVsbF9jb25jcmV0ZV9ldmVudCIsImFwcGx5X2dpdmVuX2luc3RhbmNlIiwiZGlzdCIsImRpc3QkMCIsInJvb3QwIiwiYXBwbHlfZ2l2ZW5fcnVsZSIsImluc3QiLCJmb3JjZV9ydWxlIiwib3V0JDEiLCJkaXN0X29wdCIsImxvYyIsIm91dCQwIiwic25hcHNob3QiLCJyYXciLCJwaWNrX2FuX2luc3RhbmNlIiwicnQiLCJjaG9pY2UiLCJwYXR0ZXJuMSIsInBhdHRlcm4yIiwiaW5qMSIsImlual9vdXQiLCJpc19jb3JyZWN0X2luc3RhbmNlIiwiZ3JhcGgiLCJpc191bmFyeSIsImludl9yb290cyIsImFwcGx5X2luc3RhbmNlIiwibWF4Q29uc2VjdXRpdmVCbG9ja2VkIiwibWF4Q29uc2VjdXRpdmVDbGFzaCIsImdyYXBoJDAiLCJjYXVzZSIsImFwcGx5X2dpdmVuIiwiZ3JhcGgkMSIsImZpbmFsX3N0ZXAiLCJjb250aW51ZSQwIiwiZG9tYWluJDAiLCJsaXN0IiwiY2FuZHMiLCJtYXRjaGVzIiwibWF0Y2hlcyQwIiwiYXV4X2FkZF90cmFja2VkIiwibmFtZSIsInRwYXR0ZXJuIiwiYWRkX3RyYWNrZWQiLCJyZW1vdmVfdHJhY2tlZCIsIm5hbWUkMCIsInRlc3RlciIsInBsaXN0IiwidGVzdGVyJDAiLCJhZGRfdHJhY2tlZF9zcGVjaWVzIiwicmVtb3ZlX3RyYWNrZWRfc3BlY2llcyIsImdldF9yYW5kb21fc3RhdGUiLCJzZW5kX2luc3RhbmNlc19tZXNzYWdlIiwiYWRkX291dGRhdGVkX2RlcGVuZGVuY2llcyIsIm91dGRhdGVkX2VsZW1lbnRzIiwiZGVidWdfcHJpbnRfaW5zdGFuY2VzIiwiY29tcGFyZV9zdG9wcyIsInAyIiwidDIiLCJwMSIsInQxIiwid2l0aF9kZWx0YV9hY3Rpdml0aWVzIiwidDAiLCJhbGdzX2RlcHMiLCJzdG9wcGluZ190aW1lcyIsInN0b3BzIiwidGltZV9kZXBlbmRlbnRfcGVydHMiLCJvYnNlcnZhYmxlc192YWx1ZXMiLCJkb19tb2RpZmljYXRpb24iLCJleHRyYSIsIm1vZGlmaWNhdGlvbiIsInByaW50X2V4cHJfdmFsIiwidGV4dCIsImciLCJleHRyYSQwIiwiZ3JhcGgkMiIsImV4dHJhJDEiLCJncmFwaCQzIiwicGV4cHIiLCJwZXhwciQwIiwiZmlsZSQwIiwicmVsIiwiZmlsZSQxIiwiZmlsZSQyIiwib3RoZXJzIiwidGhlc2UiLCJjYyQwIiwibmFtZSQxIiwicGVfZXhwciIsInBlX2ZpbGUiLCJmaWxlX29wdCIsImxpbmUiLCJjYyQxIiwiZmlsZSQzIiwiZmlsZSQ0IiwicGVydHVyYmF0ZSIsImlzX2FsYXJtJDAiLCJtaXhfY2hhbmdlZCQwIiwidGFpbCIsInBlcnQiLCJtb2RfYWxhcm0iLCJtaXhfY2hhbmdlZCQxIiwiZWZmZWN0Iiwic3RvcCIsInRhaWwkMCIsImFsaXZlIiwibWl4X2NoYW5nZWQkMiIsImRvX21vZGlmaWNhdGlvbnMiLCJpbml0aWFsaXplIiwiYmluZCIsInJldHVybiQwIiwiZ3JhcGgwIiwic3RhdGUwIiwiaW5pdF9sIiwibWdyYXBoIiwibXN0YXRlIiwiY29tcGlsZWRfcnVsZSIsInZhbHVlIiwiY3JlYXRpb25zX3NvcnQiLCJtaWRfZ3JhcGgiLCJtaXhfY2hhbmdlZCIsInBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2siLCJwZSIsIm91dHB1dHMkMCIsImNhbmQiLCJyZWd1bGFyX2xvb3BfYm9keSIsInBpY2tlZF9pbnN0YW5jZSIsInN0b3AkMCIsInByZXZfYWN0aXZpdHkiLCJhY3Rfc3RhY2siLCJhcHBsaWVkX3JpZF9zeW50YXgiLCJteV9zeW50YXhfcmRfaWQiLCJyZWdpc3Rlcl9uZXdfYWN0aXZpdHkiLCJzeW50YXhfcmRfaWQiLCJuZXdfYWN0IiwiZmwiLCJjdCIsImZvcmNlX3Rlc3RlZCIsImV4dHJhX3BlcnQiLCJuX2FjdGl2aXR5IiwiZmluYWxfc3RlcCQwIiwiYV9sb29wIiwiZHVtcElmRGVhZGxvY2tlZCIsInN0YXRlJDIiLCJyZCIsImR0JDIiLCJkdGkiLCJkdCQwIiwiZHQkMSIsInN0b3AkMSIsIm5lZWRzX2JhY2t0cmFjayIsImVuZF9vZl9zaW11bGF0aW9uIiwiaW5pdF9zdGF0ZSIsImNjX29mX3N0YXRlIiwiY2NfbWFwcyIsImFnZW50IiwiZSQwIiwid29yayQ1IiwiZm9sZF9hcml0eV9saXN0IiwiYXJpdHkiLCJhZGRfYWdlbnQiLCJ0b2RvcyIsIm1vcnBoaXNtIiwid29yayIsImFpZCIsIndvcmskMCIsIndfYWdlbnQiLCJ0b2RvcyQwIiwid29yayQxIiwidyIsImludGVybmFsIiwibSIsInRvZG9zJDMiLCJtb3JwaGlzbSQwIiwid29yayQzIiwicG9ydCIsImFpZCQwIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJlbXB0eV9jb21waWwiLCJtZXJnZV92ZXJzaW9uIiwiYSIsImIiLCJmbGlwX2xhYmVsIiwic3RyIiwibm9fbW9yZV9zaXRlX29uX3JpZ2h0IiwiZXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJwIiwicCQwIiwicHJpbnRfY291bnRlcl90ZXN0IiwiZiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJwcmludF9jb3VudGVyIiwiYyIsInRlc3QiLCJkZWx0YSIsInByaW50X2FzdF9zaXRlIiwibW9kX2wiLCJtb2RfaSIsImwiLCJpIiwic3RyaW5nX2Fubm90X3RvX2pzb24iLCJmaWxlbmFtZXMiLCJzdHJpbmdfYW5ub3RlZF9vZl9qc29uIiwic3RyaW5nX29wdGlvbl9hbm5vdGVkX29mX2pzb24iLCJjb3VudGVyX3Rlc3RfdG9fanNvbiIsImNvdW50ZXJfdGVzdF9vZl9qc29uIiwieCQzIiwiYnVpbGRfcG9ydF9vZl9qc29uIiwibiIsImkkMCIsInBvcnRfaW50X21vZCIsInBvcnRfaW50IiwibSQxIiwiaSQxIiwibSQyIiwicG9ydF9pbnRfbW9kJDAiLCJwb3J0X2ludCQwIiwibCQwIiwicG9ydF9saW5rX21vZCIsInBvcnRfbGluayIsIm0iLCJsJDEiLCJtJDAiLCJwb3J0X2xpbmtfbW9kJDAiLCJwb3J0X2xpbmskMCIsInNpdGVfb2ZfanNvbiIsIm4kMiIsIm4kMCIsIm4kMSIsImQiLCJ0IiwibiQzIiwicHJpbnRfYWdlbnRfbW9kIiwicHJpbnRfYXN0X2FnZW50IiwiYWdlbnRfbmFtZSIsImFnZW50X21vZF9vZl95b2pzb24iLCJhZ2VudF90b19qc29uIiwibmEiLCJhZ2VudF9vZl9qc29uIiwicyIsInMkMCIsInByaW50X2FzdF9taXgiLCJwb3MiLCJ0b19lcmFzZWRfbWl4dHVyZSIsInRvX2NyZWF0ZWRfbWl4dHVyZSIsInRvX2R1bW15X3VzZXJfc2l0ZSIsImNvdW50ZXJfbmFtZSIsInBvcnRfbmFtZSIsInN0Iiwic2kiLCJ0eSIsInRvX2R1bW15X3VzZXJfYWdlbnQiLCJzZXR1cF9saW5rIiwidmEiLCJzaXRlIiwicm93IiwibGluZSIsIm5vZGVfc2l0ZXMiLCJtaXh0dXJlX3RvX3VzZXJfZ3JhcGgiLCJvdXQiLCJhY2MiLCJpZCIsImFjYyQwIiwidmEkMCIsImFjYyQxIiwicHJpbnRfb25lX3NpemUiLCJ0ayIsIm1peCIsInByX3ZhciIsInByX3RvayIsInByX21peCIsIm5iIiwicHJpbnRfYXJyb3ciLCJiaWRpciIsInByaW50X2FzdF9hbGdfZXhwciIsInByaW50X3JhdGVzX29uZV9kaXIiLCJ1biIsImRlZiIsIm1heF9kaXN0IiwibWQiLCJwcmludF9ydWxlX2NvbnRlbnQiLCJiaWRpcmVjdGlvbmFsIiwiciIsInIkMCIsInByaW50X2FzdF9ydWxlIiwicHJpbnRfY29uZmlndXJhdGlvbiIsInByaW50X2luaXQiLCJwcmludF9hc3RfYm9vbF9leHByIiwicHJpbnRfcHJpbnRfZXhwciIsImF1eCIsImFsZyIsImUiLCJwcmludF9tb2RpZiIsInJhdyIsImZpbGUiLCJvbiIsInAkMSIsIm9uJDAiLCJwJDIiLCJrIiwicCQzIiwicCQ0Iiwib24kMSIsInByaW50X3BlcnR1cmJhdGlvbiIsInJlcCIsIm1vZGlmIiwiY29uZCIsImFsYXJtIiwicHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEiLCJydWxlX3RvX2pzb24iLCJmX21peCIsImZfdmFyIiwiciQxIiwibWl4X3RvX2pzb24iLCJydWxlX29mX2pzb24iLCJtaXhfb2ZfanNvbiIsIm1vZGlmX29mX2pzb24iLCJleHByIiwiZmlsZSQwIiwiZmlsZSQxIiwiZmlsZSQyIiwiYiQwIiwiaWQkMCIsImIkMSIsImIkMiIsImFsZyQwIiwibWVyZ2VfaW50ZXJuYWxzIiwieSIsIm1lcmdlX3NpdGVzX2NvdW50ZXIiLCJoIiwiYyQwIiwibWVyZ2Vfc2l0ZXNfcG9ydCIsImgkMCIsInhfb3AiLCJ0JDAiLCJtZXJnZV9zaXRlcyIsIm5hJDAiLCJtZXJnZV9hZ2VudHMiLCJtZXJnZV90b2tlbnMiLCJ0b2siLCJvIiwic2lnX2Zyb21faW5pdHMiLCJ0b2tzIiwiYWdzIiwic2lnX2Zyb21fcnVsZSIsInRva3MkMSIsImFncyQwIiwic2lnX2Zyb21fcnVsZXMiLCJzaWdfZnJvbV9wZXJ0cyIsImluZmVyX2FnZW50X3NpZ25hdHVyZXMiLCJzcGxpdF9taXh0dXJlIiwicmhzIiwibGhzIiwiYWciLCJwYWNrIiwiaW50ZiIsInBvcyQwIiwiaW50ZnIiLCJpbnRmbCIsInJyIiwibGwiLCJjb21waWxfdG9fanNvbiIsImZpbGVzIiwibWFwIiwidmFyX3RvX2pzb24iLCJwb3N0IiwicHJlIiwiY29tcGlsX29mX2pzb24iLCJ2YXJfb2ZfanNvbiIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwiYXN0IiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsImxiIiwiY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCIsImxzMSIsImxzMiIsImNzIiwiZHMiLCJ1cGRhdGVfcmF0ZSIsImNvdW50ZXJfdmFyX3ZhbHVlcyIsInVwZGF0ZV9ib29sX2V4cHIiLCJhMiIsImsyIiwiYTEiLCJrMSIsIm9wIiwiayQwIiwib3AkMCIsImEyJDAiLCJrMiQwIiwiYTEkMCIsImsxJDAiLCJvcCQxIiwidXBkYXRlX2V4cHIiLCJhMyIsImszIiwiYTEkMSIsImsxJDEiLCJrMiQxIiwiYTEkMiIsImsxJDIiLCJjb3VudGVyc19tYXRjaGluZ19zIiwibmFtZV9tYXRjaCIsImhhc19jb3VudGVycyIsImNvbXBpbCIsInNpdGVzIiwic3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zIiwid2FybmluZyIsImRlYnVnX21vZGUiLCJzaWduYXR1cmVzIiwicnVsZXMkMSIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsImlkcyIsImNvdW50ZXJfZGVmcyIsInZhbHVlIiwiYW5ub3QiLCJ2YWx1ZSQwIiwidmFyX25hbWUiLCJhbm5vdCQwIiwiY291bnRlcl9kZWYiLCJjb3VudGVyIiwiY291bnRlcl9kZWx0YSIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsIm1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbCIsInZhbHVlJDEiLCJjb3VudGVyX2RlbHRhJDAiLCJzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwkMCIsImFzdF9hZ2VudCIsInNpdGVzJDAiLCJzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWwiLCJ2YXJfdmFsdWVzIiwidXBkYXRlX29wdF9yYXRlIiwidXBkYXRlX3BhaXJfcmF0ZSIsInIyIiwicjEiLCJjaGVja19zeW50YXgiLCJwcmVwYXJlX2xoc19ydWxlIiwicnNpdGVzIiwicm5hIiwibHNpdGVzJDAiLCJsbmEiLCJwcmVwYXJlX3NpdGUiLCJ0bCIsImhkIiwiY291bnRlcnMiLCJyc2l0ZSIsImxzaXRlcyIsImxhZ2VudCQwIiwibHNpdGVzJDEiLCJsYWdlbnQiLCJydWxlcyIsInJ1bGUiLCJjb250ZW50IiwicnVsZV9hbm5vdGVkIiwicnVsZV9uYW1lIiwibWl4X2xocyIsImNvbnRlbnQkMCIsInJfa19vcF91bl9yYXRlcyIsInJfa3VuX3JhdGVzIiwiZXhwcnNfZnJvbV9yYXRlcyIsImF1eF9leHByIiwiZXhwciQwIiwiZXhwciQxIiwiZXhwciQyIiwiZXhwciQzIiwiYWNjJDIiLCJhdXhfYm9vbCIsImV4cHJfb3B0IiwibWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92Iiwia19kZWYiLCJrX3VuIiwia19vcCIsImtfb3BfdW4iLCJsaHMkMCIsIm5ld19ydWxlX25hbWUiLCJjb3VudGVyc19pZHNfYXNfc3RyaW5nIiwibG9jYWxpdHkiLCJydWxlX25hbWVfc3RyaW5nIiwicnVsZXMkMCIsImxhYmVsIiwiYWRkX2luY3IiLCJmaXJzdF9saW5rIiwibGFzdF9saW5rIiwiZXF1YWwiLCJzaWdzIiwiaXNfZmlyc3QiLCJpc19sYXN0IiwiaiIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInBvcnRfYSIsInBvcnRfYiIsInBvcnRzIiwiaW50ZXJuYWxzIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyYXdfaW5jciIsImxpbmtfaW5jciIsImFnX2luZm8iLCJsaW5rIiwibG9jIiwiY3JlYXRlZCIsInJhX2VyYXNlZCIsImRzdCIsInJhX3R5cGUiLCJyYV9wb3J0cyIsImJlZm9yZV9zd2l0Y2giLCJyYV9pbnRzIiwicmFfYWdlbnQiLCJlcmFzZV9pbmNyIiwiaW5jcnMiLCJpbmNyX3MiLCJpbmNyIiwicnVsZV9hZ2VudCIsImNvbXBpbGVfY291bnRlcl9pbl9ydWxlIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwicF9pZCIsInN0YXJ0X2xpbmtfbmIiLCJhY2NfaW5jcnMiLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJpbmNyc19jcmVhdGVkJDAiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsInJ1bGVfYWdlbnRfbWl4IiwicmF3X21peCIsImNvdW50ZXJzX3BlcnR1cmJhdGlvbnMiLCJhc3Rfc2lncyIsImFnX3R5IiwiZmlsZW5hbWUiLCJzdG9wX21lc3NhZ2UiLCJtb2RzIiwiYWdfaWQiLCJzaWduIiwiYXJpdHkiLCJjX25hIiwiY19pZCIsIm1heF92YWwiLCJtYXhfdmFsJDAiLCJ2YWxfb2ZfY291bnRlciIsIm1ha2VfY291bnRlciIsIm5hbWUiLCJhZGRfY291bnRlcl90b19jb250YWN0X21hcCIsImFkZF9saW5rX2NvbnRhY3RfbWFwIiwiYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyIsImFzdF9jb3VudGVycyIsInJhX2NvdW50ZXJzIiwicHNldCIsInBzZXQkMCIsImFubm90YXRlX2VkaXRfY291bnRlcnMiLCJhbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYiLCJsYyIsInJjIiwicmNfciIsImNzZXQiLCJjc2V0JDAiLCJyYyQwIiwiYyQxIiwiYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyIsIm1pbiIsImNfbmFtZSIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IiwiYnVpbGRfbF90eXBlIiwiZHN0X3R5IiwiZHN0X3AiLCJ0eV9pZCIsImNvbnRhY3RfbWFwIiwic3R5Iiwic3AiLCJkdHkiLCJkcCIsImNvbnRhY3RfbWFwJDAiLCJzbCIsImRsIiwiZGkiLCJydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiIsInNvcnQiLCJ3YXJuaW5nX2Zvcl9jb3VudGVycyIsInNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSIsImJ1aWxkX2xpbmsiLCJ3YXJuX29uX3N3YXAiLCJsaW5rc190d28iLCJsaW5rc19vbmUiLCJvbmUkMCIsIm5ld19saW5rIiwib25lIiwic3dpdGNoJDEiLCJkc3RfaWQiLCJtYWludGFpbmVkIiwibGlua19zd2FwIiwiYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCIsInN5bnRheF92ZXJzaW9uIiwicl9lZGl0X3N0eWxlIiwibGlua3NfYW5ub3QiLCJjb3VudHMiLCJsYW5ub3QiLCJwX3BvcyIsInBvcyQ1IiwicG9zJDEiLCJwb3NfbGluayIsInBvcyQyIiwicG9zJDMiLCJsYW5ub3QkMCIsInBvc19saW5rJDAiLCJwb3MkNCIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuIiwicmhzX2xpbmtzIiwibGhzX2xpbmtzIiwicG9zX2oiLCJyaHNfbGlua3MkMCIsImFubm90YXRlX2FnZW50X3dpdGhfZGlmZiIsImxwIiwicnAiLCJyZWdpc3Rlcl9wb3J0X21vZGlmIiwibG5rMSIsInJoc19saW5rcyQxIiwicG9zJDYiLCJuYSQxIiwicmhzX2xpbmtzJDIiLCJwb3MkNyIsImkkMiIsImxoc19saW5rcyQyIiwidmEkMSIsImxoc19saW5rcyQwIiwibGhzX2xpbmtzJDEiLCJyaHNfbGlua3MkMyIsInBvc19saW5rJDEiLCJkc3RfdHkkMCIsImRzdF9wJDAiLCJwb3MkMTEiLCJuYSQ0IiwicG9zJDgiLCJuYSQyIiwicG9zJDkiLCJpJDMiLCJwb3MkMTAiLCJuYSQzIiwicmhzX2xpbmtzJDQiLCJkc3RfdHkkMSIsImRzdF9wJDEiLCJwb3MkMTIiLCJpJDQiLCJyaHNfbGlua3MkNSIsInJlZ2lzdGVyX2ludGVybmFsX21vZGlmIiwiaW50MSIsInZhcG9zIiwidmFwb3MkMCIsInZhJDIiLCJhbm5vdGVkIiwicnAkMCIsImFubm90ZWQkMCIsInJwX3IiLCJzZXBhcmF0ZV9zaXRlcyIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJhZ190eSQwIiwibGFnZW50X25hbWUkMCIsImxocyQyIiwibG1vZCQwIiwibHBvcyQwIiwicmhzJDMiLCJyYSQxIiwibWl4JDIiLCJsaW5rc19hbm5vdCQ0IiwicmhzJDIiLCJybW9kJDAiLCJyYWdfcyQwIiwicnBvcyQwIiwicmFnZW50X25hbWUkMCIsImxhZ19jJDAiLCJsYWdfcCQwIiwicmFnX2MkMCIsInJhZ19wJDAiLCJsaW5rc19hbm5vdCQzIiwibWl4JDEiLCJsaHMkMyIsInJocyQ0Iiwicm1vZCQxIiwiY291bnRzJDAiLCJpbnRmJDAiLCJjbWl4JDEiLCJsaW5rc19hbm5vdCQ1IiwicmhzJDUiLCJhbm5vdGF0ZV9lZGl0X21peHR1cmUiLCJpc19ydWxlIiwibmV3cyIsInNjYW5fcG9ydCIsIm1vZGlmJDAiLCJtb2RpZiQxIiwibW9kaWYkMiIsIm1vZGlmJDMiLCJ2YSQzIiwibW9kaWYkNCIsImlfaWQiLCJtaXh0dXJlX29mX2FzdCIsImNvbnZlcnRfdG9rZW5fbmFtZSIsInRrX25hbWUiLCJhbGdfZXhwcl9vZl9hc3QiLCJhbGdzIiwibWF4X2FsbG93ZWRfdmFyIiwiYSQwIiwibGFiIiwibm8iLCJ5ZXMiLCJib29sX2V4cHJfb2ZfYXN0IiwidGtfbmFtZSQwIiwiYXN0JDAiLCJ5JDAiLCJwcmludF9leHByX29mX2FzdCIsImFzc2VtYmxlX3J1bGUiLCJyX2NyZWF0ZWQiLCJyX21peCIsImFsIiwicl9kZWx0YV90b2tlbnMiLCJyX3JhdGUiLCJyX3VuX3JhdGUiLCJkaXN0IiwidW5fcmF0ZSIsInVuX3JhdGUkMCIsIm1vZGlmX2V4cHJfb2ZfYXN0IiwiYXN0X3J1bGUiLCJydWxlX2NvbnRlbnQiLCJjcmVhdGVkX21peCIsIm1peHR1cmUiLCJydWxlX2NvbnRlbnQkMCIsImNyZWF0ZWRfbWl4JDAiLCJtaXh0dXJlJDAiLCJob3ciLCJyZWwiLCJwJDUiLCJhZGRfdW5fdmFyaWFibGUiLCJyYXRlX3ZhciIsImskMSIsImFjY191biIsImFnZW50X3NpZ3Nfb2ZfYWdlbnRfc2lnc193aXRoXyIsImJ1aWxkX2NvbnRhY3RfbWFwIiwiYWdlbnRfc2lnc19wcmUiLCJzaXplX3NpZ3MiLCJhZ19uYW1lIiwic2l0ZV9uYW1lX2FnMSIsInNpdGVfc2lnIiwic2l0ZV9saW5rcyIsImFnMl9uYW1lIiwic2l0ZV9uYW1lIiwic2l0ZV9uYW1lX2FnMiIsImFnMl9pZCIsInNpdGVfaWQiLCJzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayIsImluaXRfb2ZfYXN0IiwiaW5pdHMiLCJpbmkiLCJ3aG8iLCJjb21waWxfb2ZfYXN0IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWwkMCIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cyIsImFjYzEiLCJydWxlX2RlZiIsImFjYzIiLCJhZ2VudF9saXN0IiwiYWNjMyIsImFnZW50Iiwic2l0ZV9saXN0IiwiYWNjNCIsImNvdW50ZXJfbmFtZTIiLCJhZ2VudF9uYW1lMiIsImFnZW50X21vZCIsImNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tXyIsImFnZW50X25hbWVfY291bnRlciIsIm5ld19jb3VudGVyX3NpdGVzIiwic3VtX2JvdW5kc19yZWYiLCJjb3VudGVyX29yaWciLCJjb3VudGVyX25hbWUkMCIsImluZl9ib3VuZCIsInN1cF9ib3VuZCIsInJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQiLCJjbHRlX3ZhbHVlX29yX25vbmUiLCJuZXdfc2l0ZSIsIm9yaWdpbmFsX2NvdW50ZXJfc2l0ZSIsImludmVydGVkX2NvdW50ZXJfc2l0ZSIsInNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyIsImFkZGVkX3NpdGVzIiwibmV3X3NpdGVfbGlzdCIsInJld3JpdGUiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJpbml0IiwiaW5pdF9raW5kIiwicXVhbnRpdHlfYWxnX2V4cHIiLCJhc3RfY29tcGlsIiwiYWdlbnRfc2lnX2lzX2ltcGxpY2l0IiwiYXN0X2NvbXBpbCQxIiwiYXN0X2NvbXBpbCQyIiwiYWNjMCIsImFjY19jb3VudGVyc19wZXJfYWdlbnQiLCJhY2Nfc2lncyIsImFjY19jb3VudGVyX25hbWVzIiwiYWNjX3NpdGVfc2lncyIsImFjY19saW5rcyIsImNvdW50ZXJzX2FnZW50Iiwic2l0ZV9zaWdzX3ByZV9uYW1lZGRlY2xzIiwic2l0ZV9zaWdzX25kIiwiY291bnRlcnNfcGVyX2FnZW50Iiwic2lnc193aXRoX2xpbmtzX2FzX2xpc3RzIiwic2lnc193aXRoX2xpbmtzX2FzX2xpc3RzJDAiLCJjb3VudGVyX2FnZW50X25hbWUiLCJhX3BvcnRfbmFtZSIsImJfcG9ydF9uYW1lIiwiYV9wb3J0X3NpZyIsImJfbGlua3MiLCJjb3VudGVyc19mcm9tX2FnZW50IiwiYWdlbnRfY291bnRlcl9wb3J0X25hbWUiLCJiX3BvcnRfc2lnIiwic2l0ZV9zaWdzX2NvdW50ZXJfYWdlbnQiLCJhZ2VudF9zaWdzIiwiYWdlbnRzX3NpZyIsImFjYyQzIiwicl9wb3MiLCJsYWJlbF9vcHQiLCJwcmludGVyIiwic2V0Iiwic2V0JDAiLCJzZXQkMSIsInJ1bGVfbGFiZWwiLCJydWxlX25hbWVzIiwia19kZWYkMCIsImtfZGVmJDEiLCJyYXRlX3ZhciQwIiwicmF0ZV92YXJfdW4iLCJjcmVhdGVkX21peCQxIiwibWl4dHVyZSQxIiwicmF0ZV92YXJfdW4kMCIsImtfb3BfdW4kMCIsImFjY191biQwIiwiY3JlYXRlZF9taXgkMiIsIm1peHR1cmUkMiIsImNsZWFuZWRfcnVsZXMiLCJleHRyYV92YXJzIiwidmFycyIsInZhciQwIiwiYWNjX3ZhcnMiLCJvdmVyd3JpdGVfdmFyc19yZW1haW5pbmciLCJvdGhlcl9vdmVyd3JpdGVfdmFycyIsIm1hdGNocyIsInYiLCJhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3AiLCJyZXZfYWxnX3ZhcnMiLCJ2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIiwiYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyIsImFsZ192YXJzX2FycmF5IiwiYWxnX3ZhcnNfZmluZGVyIiwidG9rZW5fbmFtZXMiLCJ0b2tlbnNfZmluZGVyIiwidXBfdmFycyQwIiwidXBfdmFycyIsInVwZGF0ZWRfYWxnX3ZhcnMiLCJwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycyIsInBlcnR1cmJhdGlvbnMiLCJ2YXJpYWJsZXMiLCJvYnNlcnZhYmxlcyIsImluaXQkMCIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwiYWRkX3BvcyIsInJoc19wb3MiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwiaW50ZXJuYWxfbWVtb3J5IiwiYWRkIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsIl81IiwiXzMiLCJfNyIsIl80IiwiXzgiLCJhbiIsInBlbmQiLCJfOSIsIl8xMSIsInoiLCJybV90b2tlbiIsImFkZF90b2tlbiIsImRlbHRhX3Rva2VuIiwiXzYiLCJrYmFjazEiLCJrYmFjayIsInBvc19lbmQiLCJlcGF0IiwicGF0IiwicGVuZHAiLCJwYXVzZSIsImVmZiIsInl5dGFibGVzIiwibW9kZWwiLCJsZXhmdW4iLCJsZXhidWYiLCJpbnRlcmFjdGl2ZV9jb21tYW5kIiwic3RhbmRhbG9uZV9lZmZlY3RfbGlzdCIsInN0YW5kYWxvbmVfYm9vbF9leHByIiwiYXBwZW5kX3RvX2FzdF9jb21waWwiLCJyZXZfaW5zdHIiLCJzdHJfcG9zIiwidm9sX3BhcmFtIiwidm9sIiwidm9sX3R5cGUiLCJpbml0X3QiLCJ2YXIkMSIsImxibCIsIm9wdCIsImVmZmVjdCIsInZhbHVlX2xpc3QiLCJwYXJhbV9uYW1lIiwicnUiLCJvY2FtbF9sZXhfdGFibGVzIiwia2V5d29yZHMiLCJ0b2tlbiIsIm9jYW1sX2xleF90b2tlbl9yZWMiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwiaW5saW5lX2NvbW1lbnQiLCJzJDEiLCJsYWIkMCIsInMkMiIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsIngkNCIsImFjYyQ3IiwieCQ1IiwiYWNjJDgiLCJhY2MkOSIsImVyciIsImVyciQwIiwiY29tcGlsZSIsImxvZ2dlciIsImZpYyIsImNvbXBpbCQwIiwibXNnIiwid3JpdGVfY2F0YWxvZ19pdGVtIiwib2IiLCJwb3NpdGlvbiIsInJlYWRfY2F0YWxvZ19pdGVtIiwia2V5IiwiY291bnQiLCJjcmVhdGUiLCJwdXQiLCJyYW5rIiwiY2F0YWxvZyIsImFpZSIsImZpbGVfY3JlYXRlIiwiZmlsZV9tb3ZlIiwiZmlsZV9wYXRjaCIsImZpbGVfZGVsZXRlIiwiZmlsZV9nZXQiLCJwYXJzZSIsInlpZWxkJDAiLCJjb21waWxlJDAiLCJpbnN0cyIsImV4biIsInJhbmdlIiwibWVzc2FnZSIsIm1lc3NhZ2UkMCIsInRleHQiLCJvdmVyd3JpdGUiLCJpdCIsInN0YXJ0X3J1bGUiLCJzcGFjZV9jaGFycyIsInJlc2V0X2VvZiIsInRva2VuJDAiLCJyZWFkX2xhYmVsIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJvY2FtbF9sZXhfc3RhdGUkMyIsInN0ciQwIiwiY2hhcl9saXN0IiwicmVwbHkiLCJ3cml0ZV92Iiwid3JpdGVfY2F0YWxvZ19pdGVtcyIsImxpZnRfYW5zd2VyIiwib25fbWVzc2FnZSIsImN1cnJlbnRfaWQiLCJtc2dfaWQiLCJvdXQkNCIsInBvc2l0aW9uJDAiLCJpZCQ0IiwiY29udGVudCQxIiwib3V0JDMiLCJpZCQzIiwib3V0JDIiLCJpZCQyIiwib3V0JDEiLCJpZCQxIiwib3V0JDAiLCJhbnN3ZXIiLCJtc2dfaWQkMCIsIm1zZ19pZCQxIiwibXNnX2lkJDIiLCJlJDAiLCJjb21waWxlX21vZGVfb24iLCJkb21haW4iLCJkb21haW4kMCIsImRvbWFpbiQxIiwiYSQxIiwiYSQyIiwiZG9tYWluJDIiLCJkb21haW4kMyIsIm9yaWdpbiIsImNjcyIsImRvbWFpbiQ0Iiwib3V0X2NjcyIsImNvbmQkMCIsImRvbWFpbiQ1IiwieWVzJDAiLCJkb21haW4kNiIsIm5vJDAiLCJkb21haW4kNyIsImEkMyIsImEkNCIsImNvbXBpbGVfcHVyZV9hbGciLCJjb21waWxlX2FsZyIsImNvbXBpbGVfYm9vbCIsInJ1bGVzX29mX2FzdCIsImRlcHNfbWFjaGluZXJ5Iiwic3ludGF4X3JlZiIsImFsZ19leHByIiwiZGVsdGFfdG9rcyIsImRlcHMiLCJjcnAiLCJyYXRlIiwiZCQwIiwiZCQxIiwiZGlzdCQwIiwidW5yYXRlIiwidW5hcnlfaW5mb3MiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwiZGVwc19hbGdzIiwidXIiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJpbml0X2wiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImUkMSIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImVycm9yX21zZyIsImFnZW50IiwiY29udGFjdG1hcCIsImFjY3VyYWN5X3N0cmluZyIsImRlYWRfcnVsZXMiLCJkZWFkX2FnZW50cyIsIm1hcCIsImludGVyZmFjZSQwIiwic2l0ZSIsInN0YXRlc2xpc3QiLCJzaXRlbmFtZSIsInNpdGV0eXBlIiwic2l0ZWxpbmtzIiwic2l0ZXN0YXRlcyIsInNpdGVub2RlbmFtZSIsInNpdGVub2RlaWQiLCJzaXRlbm9kZXNpdGVzIiwiaHlwIiwicmVmaW5lbWVudCIsImRvbWFpbl9uYW1lIiwicmVmaW5lbWVudHNfbGlzdCIsInJlZmluZW1lbnRfbGVtbWFzIiwicnVsZV9pZCIsImFnZW50X2lkIiwibGFiZWwiLCJhc3QiLCJwb3NpdGlvbiIsInBvc2l0aW9uX2xpc3QiLCJ2YXJpYWJsZSIsInJ1bGUiLCJkaXJlY3QiLCJzaWRlX2VmZmVjdCIsInNvdXJjZSIsInRhcmdldF9tYXAiLCJ0YXJnZXQiLCJsb2NhdGlvbl9wYWlyX2xpc3QiLCJyaHMiLCJsaHMiLCJpbmZsdWVuY2VtYXAiLCJub2Rlc29maW5mbHVlbmNlbWFwIiwid2FrZXVwIiwiaW5oaWJpdGlvbiIsIm5vZGVzIiwidG90YWxfc3RyaW5nIiwiZndkX3N0cmluZyIsImJ3ZF9zdHJpbmciLCJvcmlnaW4iLCJkaXJlY3Rpb24iLCJydWxlX2hpZGRlbiIsInNjYyIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiY29udGFjdG1hcHNjYyIsImNvdW50ZXIiLCJpbmYiLCJzdXAiLCJrZXkiLCJsb2NhbGl0eSIsImFjY3VyYWN5X2xldmVscyIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwicmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyIsImZyZWUiLCJ3aWxkY2FyZCIsImJvdW5kIiwiYm9uZF9pZCIsImJvdW5kX3RvIiwiYmluZGluZ190eXBlIiwicHJvcCIsImJpbmQiLCJiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wiLCJmcmVlX2JhY2tlbmRfc3ltYm9sIiwibWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zIiwid2lsZGNhcmRfYmFja2VuZF9zeW1ib2wiLCJib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm8iLCJpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmEiLCJpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2UiLCJiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW4iLCJiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmQiLCJpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmQiLCJjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3kiLCJvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm8iLCJvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm8iLCJwbHVzX2luZmluaXR5X3N5bWJvbCIsIm1pbnVzX2luZmluaXR5X3N5bWJvbCIsImFjY3VyYWN5X3RvX3N0cmluZyIsImFjY3VyYWN5X3RvX2pzb24iLCJ4IiwiYWNjdXJhY3lfb2Zfc3RyaW5nIiwiYWNjdXJhY3lfb2ZfanNvbiIsImpzb24iLCJjb21wYXJlIiwiYSIsImIiLCJwcmludCIsImYiLCJzaXRlX3RvX2pzb24iLCJwIiwibCIsInkiLCJ4ciIsInhsIiwidHkiLCJzaSIsImkiLCJzaXRlX29mX2pzb24iLCJsJDAiLCJqc29uJDEiLCJzaXRlX25hbWUiLCJqc29uJDIiLCJwb3J0X2xpbmtzIiwianNvbiQwIiwicG9ydF9zdGF0ZXMiLCJzaXRlX3R5cGUiLCJzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiIsInNpdGVfbm9kZV90b19qc29uIiwibm9kZSIsImxpc3QiLCJzaXRlX25vZGVfb2ZfanNvbiIsIm5vZGVfaWQiLCJub2RlX3R5cGUiLCJub2RlX3NpdGVzIiwiY29udGFjdF9tYXBfdG9fanNvbiIsImNvbnRhY3RfbWFwIiwiY29udGFjdF9tYXBfb2ZfanNvbiIsInN0cmluZ19wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvXyIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mXyIsInNjY190b19qc29uIiwic2NjX2FjYyIsImNtX2FjYyIsInNjY19vZl9qc29uIiwicnVsZV90b19qc29uIiwiZCIsImpzb25fdG9fcnVsZSIsInMiLCJ2YXJfdG9fanNvbiIsInZhciQwIiwianNvbl90b192YXIiLCJpbmZsdWVuY2Vfbm9kZV90b19qc29uIiwiaSQwIiwiaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwibG9jIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX3RvX2pzb24iLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIiwicG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2VfIiwiciIsInYiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiciQwIiwiZHVtcF9sb2NhdGlvbiIsImZtdCIsImludCQwIiwiaW50JDEiLCJkdW1wX2xvY2F0aW9uX3BhaXIiLCJkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCIsInN0cmluZ19vZl9sYWJlbF9saXN0IiwibG9jYXRpb25fdG9fanNvbiIsImxvY2F0aW9uX29mX2pzb24iLCJvcHQiLCJzdGgiLCJoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibm9kZXNfbGlzdF90b19qc29uIiwibm9kZXNfbGlzdF9vZl9qc29uIiwiaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsIm5vZGVzX2xpc3QiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwJDAiLCJvcmlnaW5fb3B0IiwiZndkIiwiYndkIiwidG90YWwiLCJhY2N1cmFjeSIsImluZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImVycm9yX21zZyQwIiwib3JpZ2luJDAiLCJ4JDAiLCJsJDEiLCJkZWFkX3J1bGVzX3RvX2pzb24iLCJkZWFkX3J1bGVzX29mX2pzb24iLCJqc29uX3RvX2FnZW50X2tpbmQiLCJhZ2VudF9raW5kX3RvX2pzb24iLCJhZ2VudF9raW5kIiwianNvbl9vZl9kZWFkX2FnZW50cyIsImpzb25fdG9fZGVhZF9hZ2VudHMiLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24iLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24iLCJsZW1tYV90b19qc29uIiwic2l0ZV9ncmFwaF90b19qc29uIiwibGVtbWFfb2ZfanNvbiIsInNpdGVfZ3JhcGhfb2ZfanNvbiIsImdldF9oeXAiLCJoIiwiZ2V0X3JlZmluZW1lbnQiLCJzdHJpbmdfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJqIiwiYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uIiwiYm9uZF9pbmRleCIsImNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiIsImludGVyZmFjZV9saWdodF90b19qc29uIiwiaW50ZiIsImMiLCJrIiwiaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiIsImludGVyZmFjZV9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbiIsImxlbW1hc19saXN0X3RvX2pzb25fZ2VuIiwiaW50ZXJmYWNlX3RvX2pzb24iLCJjb25zdHJhaW50cyIsImxlbW1hc19saXN0X3RvX2pzb24iLCJyYXdfdmVyc2lvbl9zdHJpbmciLCJleHRyYWN0X3RhZ19yZSIsImdyIiwidmVyc2lvbl9zdHJpbmciLCJ2ZXJzaW9uX21zZyIsInZlcnNpb25fa2FzYV9mdWxsX25hbWUiLCJ2ZXJzaW9uX2thZGVfZnVsbF9uYW1lIiwidGtfaXNfaW5pdGlhbGl6ZWQiLCJleHBlcnRfbW9kZSIsImNvbXBhcmUiLCJkIiwiYyIsImIiLCJhIiwiY21wIiwicHJpbnQiLCJmbXQiLCJtYXhfbGV2ZWxfb3B0IiwiYiQwIiwic2hvd19sZXZlbCIsImx2bCIsImFjY2VwdF9sZXZlbF9kaXNwbGF5IiwiYWNjZXB0X2xldmVsX3VzZSIsIm5va2V5IiwiayIsImN1dF9saXN0IiwicyIsImRvaXQiLCJhY2N1bSIsInBvcyIsImkiLCJwIiwibCIsImwkMCIsImkkMCIsIm9yZGVyIiwib3JkZXJlZCIsImNhdCIsIm9sZF9sdmwiLCJhc3NvIiwiY2hlY2siLCJvcHRzIiwia2V5IiwidCIsImYiLCJwcmludF9tc2ciLCJwcmludF9vcHRpb24iLCJ2ZXJib3NlIiwibXNnIiwic3BlYyIsImtleTIiLCJyIiwiciQwIiwiciQxIiwiciQyIiwiciQzIiwicyQwIiwiciQ0IiwiciQ1IiwibGlzdCIsImxpc3QkMCIsInRhaWwiLCJoMiIsImgxIiwiciQ2IiwiciQ3IiwidiIsInIkOCIsInIkOSIsImwkMSIsInByaW50X2hlbHAiLCJoZWFkZXIiLCJuYiIsImhlYWRlciQwIiwibHZsJDAiLCJsdmxfb3B0IiwieCIsInZlcmJvc2UkMCIsInZlcmJvc2UkMSIsInBhcnNlX2xpc3QiLCJ3aXRoX3RrIiwidGl0bGUiLCJsb25nX2hlbHAiLCJzaG9ydF9oZWxwIiwic2hvd192ZXJzaW9uIiwiYWNjdW0kMCIsInJlbSIsIm9wdCIsIm9wdCQwIiwiYWEiLCJyZW0kMyIsInJlbSQyIiwicmVtJDEiLCJ2JDAiLCJyZW0kNyIsInJlbSQ1IiwicmVtJDQiLCJyZW0kNiIsInJlbSQ4IiwidiQxIiwicmVtJDkiLCJ2JDIiLCJyZW0kMTMiLCJyZW0kMTEiLCJyZW0kMTAiLCJyZW0kMTIiLCJ2JDMiLCJyZW0kMTciLCJyZW0kMTUiLCJyZW0kMTQiLCJyZW0kMTYiLCJ2JDQiLCJyZW0kMjIiLCJyZW0kMjAiLCJyZW0kMTgiLCJ2JDUiLCJyZW0kMTkiLCJyZW0kMjEiLCJ2JDYiLCJyZW0kMjUiLCJyZW0kMjQiLCJyZW0kMjMiLCJ2JDciLCJyZW0kMjkiLCJyZW0kMjciLCJyZW0kMjYiLCJyZW0kMjgiLCJyZW0kMzAiLCJ2JDgiLCJyZW0kMzEiLCJ2JDkiLCJyZW0kMzIiLCJyJDEwIiwieSIsInJlbSQzMyIsInYkMTAiLCJyZW0kMzQiLCJsJDIiLCJyZW0kMzUiLCJ2JDExIiwicmVtJDM2IiwicmVtJDAiLCJmaWxlbmFtZXMiLCJ4JDAiLCJwYXJzZSIsImRlZiIsImFyZ3MiLCJkYXRhX3NldCIsIm91dHB1dCIsInNlbWFudGljcyIsImludGVncmF0aW9uX3NldHRpbmdzIiwibW9kZWxfcmVkdWN0aW9uIiwic3RhdGljX2FuYWx5c2lzIiwiZGVidWdfbW9kZSIsImRlZmF1bHQkMCIsImRlZmF1bHRfZ3VpIiwiZG9fdmVyc2lvbiIsImRvX2dsdXR0b255IiwiY29weV9mcm9tX2d1aSIsInRfZ3VpIiwib3B0aW9uc19nZW4iLCJvcHRpb25zIiwib3B0aW9uc19ndWkiLCJlIiwiYXV4IiwiYWNjdSIsImFjY3UkMCIsInZhcl92YWwiLCJhY2N1JDEiLCJmaWMiLCJ0aW1lIiwicG9pbnROdW1iZXJWYWx1ZSIsIm91dHB1dERhdGFGaWxlIiwib3V0cHV0RGlyZWN0b3J5IiwibSIsImNyZWF0ZSIsImJhcl9zaXplIiwiYmFyX2NoYXIiLCJmb3IkMCIsInBwX25vdF9udWxsIiwicHBfdGV4dCIsImRlbHRhX3QiLCJ0X3IiLCJldmVudCIsImVfciIsInN0cmluZyIsImR0IiwiYXV4X3RpY2siLCJzb21ldGhpbmciLCJuIiwic29tZXRoaW5nJDAiLCJuJDAiLCJuJDEiLCJ0aWNrIiwiZWZmaWNpZW5jeSIsIm5fdCIsIm5fZSIsInJ1biIsImNvbXBsZXRlX3Byb2dyZXNzX2JhciIsInQkMCIsIm91dHB1dERpck5hbWUiLCJtYXJzaGFsaXplZE91dEZpbGUiLCJjZmxvd0ZpbGVOYW1lIiwiZmx1eEZpbGVOYW1lIiwibWtfZGlyX3IiLCJvdmVyd3JpdGVfcGVybWlzc2lvbiIsInBhdGgiLCJvcGVuX291dCIsIm9wZW5fb3V0X2ZyZXNoIiwibmFtZSIsImNvbmNhdF9saXN0IiwiZmFjdWx0YXRpdmUiLCJleHQiLCJuYW1lJDAiLCJ0bXBfbmFtZSIsImJhc2UiLCJvdmVyX2ZsYWciLCJmbGFncyIsImJhc2UkMCIsInNldCIsImV4dF9vcHQiLCJmbmFtZSIsImNoZWNrX25vdF9leGlzdHMiLCJmaWxlIiwiZmlsZSQwIiwiYW5zd2VyIiwic2V0Q2hlY2tGaWxlRXhpc3RzIiwiYmF0Y2htb2RlIiwib3V0cHV0RmlsZSIsIndpdGhfY2hhbm5lbCIsInN0ciIsImRlc2MiLCJ3cmFwX2Zvcm1hdHRlciIsImZyIiwic2V0X2RpciIsImdldF9kaXIiLCJzZXRfbWFyc2hhbGl6ZWQiLCJ3aXRoX21hcnNoYWxpemVkIiwic2V0X2NmbG93Iiwid2l0aF9jZmxvd19maWxlIiwib3Blbl90YXNrc19wcm9maWxpbmciLCJvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm8iLCJzZXRfZmx1eCIsIm5tZSIsIndpdGhfZmx1eCIsInN0ciQwIiwid2l0aF9zbmFwc2hvdCIsInNpemUiLCJib3JkZXIkMCIsImJvcmRlciIsImR1bW15X3ZhbHVlcyIsImNvbG9ycyIsInN0eWxlcyIsImdyYWR1YXRpb25fc3RlcCIsImRyYXdfbCIsIm1pbl9ncmFkX2wiLCJ2YV9taW4iLCJ2YV9tYXgiLCJuYnJfZGVsdGEiLCJkZWx0YV92YSIsIm5iX2dyYWQiLCJleGFjdF9zdGVwIiwiZGVsdGFfZ3JhZCIsInZhX21pbiQwIiwidmFfbWF4JDAiLCJkcmF3IiwiaCQwIiwidyQwIiwiYl9oIiwiemVyb193IiwiYl9vcCIsImgiLCJ3IiwidmEkMCIsInRfbWF4IiwicSIsInZhIiwidmFfbWF4JDEiLCJ2YV9taW4kMiIsInRfbWF4JDEiLCJkYXRhX3ciLCJkYXRhX2giLCJ0X21heCQyIiwiZ3JhZF93IiwibmJfdyIsInZhX21heCQyIiwiZ3JhZF9oIiwibmJfaCIsInZhX21pbiQzIiwiemVyb19oIiwiZHJhd19mdW4iLCJ5JDAiLCJwcF9saW5lIiwidG9fc3RyaW5nIiwic3RoIiwid2lkdGgiLCJ0b19maWxlIiwiY2hhbiIsImZvcm0iLCJ4bHN3ZWFrRmlsZU5hbWUiLCJ4bHNzdHJvbmdGaWxlTmFtZSIsImRlZmF1bHRFeHRBcnJheVNpemUiLCJkZWZhdWx0R3JhcGhTaXplIiwiZGVmYXVsdExpZnRTZXRTaXplIiwiZGVmYXVsdEhlYXBTaXplIiwiZGVidWdfbW9kZU9uIiwidGltZV9pbmRlcGVuZGVudCIsImJsYWNrbGlzdF9ldmVudHMiLCJnZXRfY2FjaGVfc2l6ZSIsInByaW50X2Rlc2MiLCJzcGVjaWVzX2Rlc2MiLCJ1dWlkIiwiZ2V0X2Rlc2MiLCJ0YmwiLCJkX2NoYW4iLCJhY3RzRGVzY3IiLCJlbXB0eUFjdHMiLCJwbG90RGVzY3IiLCJ0cmFjZURlc2NyIiwidHJhY2VOb3RFbXB0eSIsImluaXRpYWxpemUiLCJhY3Rpdml0aWVzX2ZpbGUiLCJ0cmFjZV9maWxlIiwicGxvdFBhY2siLCJlbnYiLCJkZXNjJDAiLCJub0NvdW50ZXJzIiwibmJfciIsInBhY2siLCJ3YXJuaW5nX2J1ZmZlciIsImdvIiwiZmx1eCIsImRpbl9uYW1lIiwiZmx1eCQwIiwibGFzdCIsImskMCIsImhlYWQiLCJmaWxlbmFtZSIsImZvcm1hdCIsImlzX3RzdiIsImZkIiwicCQwIiwic3RlcCIsImQkMCIsInMkMSIsIm1peHR1cmUiLCJmaWxlJDEiLCJpbnB1dHNEZXNjIiwiZmx1c2hfd2FybmluZyIsImNsb3NlIiwiZXZlbnQkMCIsInBsb3QiLCJpbnB1dHMiLCJpbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbml0IiwiaW5wdXRzX2Zvcm0iLCJpbnB1dF9tb2RpZmljYXRpb25zIiwibW9kcyIsInRtcF92YXJfbmFtZSIsIm1hcnNoYWxpemVPdXRGaWxlIiwiZG9tYWluT3V0cHV0RmlsZSIsInRyYWNlRmlsZSIsImxvZ0ZpbGUiLCJwcmVwcm9jZXNzX2FzdCIsIndhcm5pbmciLCJrYXNpbV9hcmdzIiwiY2xpX2FyZ3MiLCJhc3QiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwic3ludGF4X3ZlcnNpb24iLCJrYXNpbV9hcmdzJDAiLCJpbml0aWFsTWl4IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWxlZF9kYXRhIiwiY29tcGlsIiwiY29uZiQwIiwib3ZlcndyaXRlX3QwJDAiLCJvdmVyd3JpdGVfaW5pdCIsImdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIiwiZmlsZV9saXN0IiwiY29tcGlsaW5nX2Z1bmN0aW9uIiwiZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIiwiZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfIiwiZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IiwiY29tcGlsZV9tb2RlX29uIiwicHJlcHJvY2Vzc2VkX2FzdCIsImluaXRfbCIsImhhc190cmFja2luZyIsImdldF9jb21waWxhdGlvbl9mcm9tX3BhY2siLCJpbml0X3RfZnJvbV9maWxlcyIsInBsb3RfcGVyaW9kJDAiLCJtYXhfZXZlbnQkMCIsImluaXRfZSIsIm1heF90aW1lIiwiaW5pdF90IiwiYSQwIiwicGxvdF9wZXJpb2QkMSIsIm1heF90aW1lJDAiLCJpbml0X3QkMCIsImNvdW50ZXIiLCJnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXMiLCJzdGgkMCIsImdldF9jb21waWxhdGlvbiIsIm1hcnNoYWxpemVkX2ZpbGUiLCJjb21waWxhdGlvbl9yZXN1bHQiLCJhbGdfb3ZlcndyaXRlIiwib3ZlcndyaXRlX3QwIiwicmF3X2luaXRzIiwiZSQwIiwiZCQxIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJleG5fdG9fanNvbiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJjIiwiYiIsImEiLCJjJDAiLCJiJDAiLCJhJDAiLCJ4JDMiLCJ4JDQiLCJjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24iLCJ4JDUiLCJ1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwiZXhuX29mX2pzb24iLCJqc29uIiwibCIsImwkMCIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImJ1aWxkX2NhdWdodF9leGNlcHRpb24iLCJzdGFjayIsInJhaXNlX2V4Y2VwdGlvbiIsImtleSIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ5IiwiZXIiLCJ5JDAiLCJlciQwIiwieCQ2IiwicHBfdW5jYXVnaHQiLCJ4JDciLCJwcF9jYXVnaHQiLCJ3aXRoX3NwYWNlIiwic3RyaW5nbGlzdF9vZl9leGNlcHRpb24iLCJzdHJpbmdsaXN0X29mX2NhdWdodCIsInN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQiLCJzb2wiLCJzdHJpbmciLCJzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCIsInN0YWNrJDAiLCJ0b19qc29uIiwibWV0aG9kX2hhbmRsZXIiLCJvZl9qc29uIiwiY2F1Z2h0X3RvX3VpIiwidW5jYXVnaHRfdG9fdWkiLCJhZGRfdW5jYXVnaHRfZXJyb3IiLCJ0b191aSIsImVycm9yJDAiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsImRhdGUiLCJ2ZXJzaW9uIiwib3V0cHV0X2RpcmVjdG9yeSIsIm91dHB1dF9jbV9kaXJlY3RvcnkiLCJvdXRwdXRfaW1fZGlyZWN0b3J5Iiwib3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsInVuc2FmZSIsInRyYWNlIiwic3ludGF4X3ZlcnNpb24iLCJkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2MiLCJsb2ciLCJmb3JtYXR0ZXIiLCJmaWxlIiwibGlua19tb2RlIiwiZG9faW5mbHVlbmNlX21hcCIsInJ1bGVfc2hhcGUiLCJydWxlX2NvbG9yIiwidmFyaWFibGVfc2hhcGUiLCJ2YXJpYWJsZV9jb2xvciIsImNlbnRlcl9jb2xvciIsIndha2VfdXBfY29sb3IiLCJpbmhpYml0aW9uX2NvbG9yIiwid2FrZV91cF9hcnJvdyIsImluaGliaXRpb25fYXJyb3ciLCJpbmZsdWVuY2VfbWFwX2ZpbGUiLCJpbmZsdWVuY2VfbWFwX2Zvcm1hdCIsInByb21wdF9mdWxsX3Zhcl9kZWYiLCJwcm9tcHRfZnVsbF9ydWxlX2RlZiIsIm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kbyIsImRvX2NvbnRhY3RfbWFwIiwiZG9fc2NjIiwicHVyZV9jb250YWN0IiwiY29udGFjdF9tYXBfZmlsZSIsImNvbnRhY3RfbWFwX2Zvcm1hdCIsImJpbmRpbmdfc2l0ZV9zaGFwZSIsImJpbmRpbmdfc2l0ZV9jb2xvciIsImludGVybmFsX3NpdGVfc2hhcGUiLCJpbnRlcm5hbF9zaXRlX2NvbG9yIiwiY291bnRlcl9zaXRlX3NoYXBlIiwiY291bnRlcl9zaXRlX2NvbG9yIiwiYWdlbnRfc2hhcGVfYXJyYXkiLCJhZ2VudF9jb2xvcl9hcnJheSIsImFnZW50X3NoYXBlX2RlZiIsImFnZW50X2NvbG9yX2RlZiIsImxpbmtfY29sb3IiLCJpbmZsdWVuY2VfY29sb3IiLCJpbmZsdWVuY2VfYXJyb3ciLCJkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdCIsImRvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3JlcyIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5biIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsIiwiaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlIiwiaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0Iiwic21hc2hfcmVsYXRpb25zIiwidXNlX25hdHVyYWxfbGFuZ3VhZ2UiLCJjb21wdXRlX2xvY2FsX3RyYWNlcyIsInNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZSIsInVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsXyIsImFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZyIsImxvY2FsX3RyYWNlX3ByZWZpeCIsImxvY2FsX3RyYWNlX2Zvcm1hdCIsImNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyIsIndpdGhfdmlld3NfYW5hbHlzaXMiLCJ3aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2kiLCJ3aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwid2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIiwid2l0aF9jb3VudGVyc19hbmFseXNpcyIsImNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIiwidmlld19hY2N1cmFjeV9sZXZlbCIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsInNjY19hY2N1cmFjeV9sZXZlbCIsImRvX3N5bW1ldHJpZXMiLCJyYXRlX2NvbnZlbnRpb24iLCJwcmludF9lZmZpY2llbmN5IiwiYmFja2Rvb3JfbmJyX29mX3NjYyIsImJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MiLCJiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImJhY2tkb29yX25icl9vZl9ydWxlcyIsImJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uIiwiYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2IiwiYmFja2Rvb3JfdGltaW5nIiwiYmFja2Rvb3JfZmlsZSIsImJhY2tkb29yX2RpcmVjdG9yeSIsImNzdF90ZXgiLCJjc3RfaHRtbCQwIiwiYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tIiwiZXh0Iiwic2l6ZV9hIiwic2l6ZV9leHQiLCJvcGVuX291dCIsImQiLCJvcGVuX2FwcGVuZCIsImNvbXBvc2UiLCJnIiwiZXh0X2Zvcm1hdCIsImZldGNoX2xldmVsX2dlbiIsInMiLCJyIiwiZmV0Y2hfZ3JhcGhfZm9ybWF0IiwiZmV0Y2hfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc3ludGF4X3ZlcnNpb24iLCJyZWFjaGFiaWxpdHlfbWFwXzAiLCJyZWFjaGFiaWxpdHlfbWFwXzEiLCJyZWFjaGFiaWxpdHlfbWFwXzIiLCJyZWFjaGFiaWxpdHlfbWFwXzMiLCJyZWFjaGFiaWxpdHlfbWFwXzQiLCJnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMiLCJjYWNoZSIsImdldF9wYXJhbWV0ZXJzIiwib3B0IiwiY2FsbGVkX2Zyb20iLCJzdGgiLCJodG1sX21vZGUiLCJjb21tYW5kJDAiLCJjaGFubmVsX2JhY2tkb29yJDAiLCJjaGFubmVsX2VyciQwIiwiY2hhbm5lbCQxIiwiY2hhbm5lbCIsImNoYW5uZWwkMCIsImNvbW1hbmQkMiIsInJlYWNoYWJpbGl0eSQwIiwicmVhY2hhYmlsaXR5IiwibWFwIiwiYSQxIiwiZm10IiwiY2hhbm5lbCQyIiwiZHVtbXlfcGFyYW1ldGVycyIsInAiLCJwJDAiLCJnZXRfYm91bmRfc3ltYm9sXzEiLCJzeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2xpbmtfdG9fYW55XzEiLCJnZXRfbGlua190b19zb21lXzEiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfZnJlZV8xIiwiZ2V0X2F0X3N5bWJvbF8xIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbF8xIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSIsImdldF91bmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMSIsImdldF9vcGVuX2NvdW50ZXJjZXFfMSIsImdldF9vcGVuX2NvdW50ZXJjdmFyXzEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhXzEiLCJnZXRfb3Blbl9jb3VudGVydmFsXzEiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSIsImdldF9jbG9zZV9jb3VudGVyY3Zhcl8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEiLCJnZXRfY2xvc2VfY291bnRlcnZhbF8xIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSIsImdldF9jb3VudGVydmFsX3N5bWJvbF8xIiwiZ2V0X2ltX2Zvcm1hdF8xIiwiaW5mbHVlbmNlIiwiZ2V0X2ltX2ZpbGVfMSIsImdldF9pbV9kaXJlY3RvcnlfMSIsImdldF9ydWxlX3NoYXBlXzEiLCJnZXRfcnVsZV9jb2xvcl8xIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlXzEiLCJnZXRfdmFyaWFibGVfY29sb3JfMSIsImdldF93YWtlX3VwX2NvbG9yXzEiLCJnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfYXJyb3dfMSIsImdldF9pbmhpYml0aW9uX2Fycm93XzEiLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzEiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xIiwiZ2V0X3B1cmVfY29udGFjdF8xIiwiY20iLCJnZXRfY21fZm9ybWF0XzEiLCJnZXRfY21fZmlsZV8xIiwiZ2V0X2NtX2RpcmVjdG9yeV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzEiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlXzEiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yXzEiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMSIsImdldF9hZ2VudF9jb2xvcl9hcnJheV8xIiwiZ2V0X2FnZW50X3NoYXBlX2RlZl8xIiwiZ2V0X2FnZW50X2NvbG9yX2RlZl8xIiwiZ2V0X2xpbmtfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfYXJyb3dfMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQwIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDQiLCJnZXRfc21hc2hfcmVsYXRpb25zXzEiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8iLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8iLCJnZXRfcG9zdF9wcm9jZXNzaW5nXzEiLCJnZXRfYmFja2VuZF9tb2RlXzEiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzEiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsImdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90IiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIiwiZ2V0X3ZpZXdfYW5hbHlzaXNfMSIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMSIsImdldF9jb3VudGVyc19hbmFseXNpc18xIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIiwibWFyc2hhbGlzYWJsZSIsImdldF9yYXRlX2NvbnZlbnRpb25fMSIsImdldF9lbXB0eV9oYXNodGJsX3NpemVfMSIsImdldF9zeW1ib2xzXzEiLCJnZXRfZmlsZV8xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfMSIsImdldF9jb250YWN0X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSIsImdldF91bnNhZmVfMSIsImdldF90cmFjZV8xIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5IiwiZ2V0X3ByZWZpeF8xIiwiZ2V0X2NhbGxfc3RhY2tfMSIsImdldF9saW5rX21vZGVfMSIsImdldF9rYXNhX3N0YXRlXzEiLCJnZXRfZG9fY29udGFjdF9tYXBfMSIsImdldF9zeW50YXhfdmVyc2lvbl8xIiwiZ2V0X2RvX3NjY18xIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfbGF1bmNoaW5nX2RhdGVfMSIsInQiLCJnbXQiLCJnZXRfc2hvcnRfdmVyc2lvbl8xIiwiZ2V0X2Z1bGxfdmVyc2lvbl8xIiwiZ2V0X2xhdW5jaGVkX3doZXJlXzEiLCJnZXRfY29tbWFuZF9saW5lXzEiLCJnZXRfbWFyc2hhbGlzYWJsZSIsInBhcmFtZXRlciIsImdldF9sb2dnZXIiLCJnZXRfbG9nZ2VyX2VyciIsImdldF9sb2dnZXJfYmFja2Rvb3IiLCJ1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCIsImdldF9jb21tYW5kX2xpbmUiLCJnZXRfc2hvcnRfdmVyc2lvbiIsImdldF9sYXVuY2hlZF93aGVyZSIsImdldF9mdWxsX3ZlcnNpb24iLCJnZXRfbGF1bmNoaW5nX2RhdGUiLCJnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUiLCJwYXJhbWV0ZXJzIiwiZ2V0X2RvX2NvbnRhY3RfbWFwIiwiZ2V0X3N5bnRheF92ZXJzaW9uJDAiLCJnZXRfZG9fc2NjIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXAiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24kMCIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyQwIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfc3ltYm9scyIsImdldF9maWxlIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyIsImdldF9yYXRlX2NvbnZlbnRpb24iLCJnZXRfaW5mbHVlbmNlX21hcCIsImdldF9jb250YWN0X21hcCIsImdldF9yZWFjaGFiaWxpdHlfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhJDAiLCJnZXRfdW5zYWZlIiwiZ2V0X3RyYWNlIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5JDAiLCJnZXRfcHJlZml4IiwiZ2V0X2NhbGxfc3RhY2siLCJnZXRfbGlua19tb2RlIiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsJDAiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2JDAiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbCIsImdldF9lbXB0eV9oYXNodGJsX3NpemUiLCJ1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWUiLCJ1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQiLCJ1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwXyIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbCIsImdldF9ib3VuZF9zeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGUiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlIiwiZ2V0X2xpbmtfdG9fYW55IiwiZ2V0X2xpbmtfdG9fc29tZSIsImdldF9mcmVlX3N5bWJvbCIsImdldF9hdF9zeW1ib2wiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2wiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2wiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbCIsImdldF9kb193ZV9zaG93X2dob3N0IiwiZ2V0X3VuaV9hcnJvd19zeW1ib2wiLCJnZXRfcmV2X2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQkMCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbCIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0kMCIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGUiLCJnZXRfb3Blbl9jb3VudGVyY2VxIiwiZ2V0X29wZW5fY291bnRlcmNndGUiLCJnZXRfb3Blbl9jb3VudGVyY3ZhciIsImdldF9vcGVuX2NvdW50ZXJkZWx0YSIsImdldF9vcGVuX2NvdW50ZXJ2YWwiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSIsImdldF9jbG9zZV9jb3VudGVyY2VxIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YSIsImdldF9jbG9zZV9jb3VudGVydmFsIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbCIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sIiwiZ2V0X2ltX2Zvcm1hdCIsImdldF9pbV9maWxlIiwiZ2V0X2ltX2RpcmVjdG9yeSIsImdldF9ydWxlX3NoYXBlIiwiZ2V0X3J1bGVfY29sb3IiLCJnZXRfdmFyaWFibGVfc2hhcGUiLCJnZXRfdmFyaWFibGVfY29sb3IiLCJnZXRfd2FrZV91cF9jb2xvciIsImdldF9pbmhpYml0aW9uX2NvbG9yIiwiZ2V0X3dha2VfdXBfYXJyb3ciLCJnZXRfaW5oaWJpdGlvbl9hcnJvdyIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0IiwiZ2V0X3B1cmVfY29udGFjdCIsImdldF9jbV9mb3JtYXQiLCJnZXRfY21fZmlsZSIsImdldF9jbV9kaXJlY3RvcnkiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvciIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3IiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciIsImdldF9hZ2VudF9zaGFwZV9hcnJheSIsImdldF9hZ2VudF9jb2xvcl9hcnJheSIsImdldF9hZ2VudF9zaGFwZV9kZWYiLCJnZXRfYWdlbnRfY29sb3JfZGVmIiwiZ2V0X2xpbmtfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9hcnJvdyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ1IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDYiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ4IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDkiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMTAiLCJnZXRfcG9zdF9wcm9jZXNzaW5nIiwiZ2V0X2JhY2tlbmRfbW9kZSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyQwIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfJDAiLCJnZXRfc21hc2hfcmVsYXRpb25zIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCQwIiwic2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiciQwIiwiciQxIiwic2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90JDAiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8kMCIsImdldF9pZ25vcmVfbG9jYWxfbG9zYW5nZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImdldF9sb2NhbF90cmFjZV9wcmVmaXgiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwiZ2V0X3ZpZXdfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMkMCIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbiIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJzZXRfcHJlZml4XzEiLCJwcmVmaXgiLCJzZXRfY2FsbF9zdGFja18xIiwiY2FsbF9zdGFjayIsInNldF90cmFjZV8xIiwiYm9vbCIsInVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSIsInNldF9wcmVmaXgiLCJzZXRfY2FsbF9zdGFjayIsInNldF90cmFjZSIsInVwZGF0ZV9wcmVmaXgiLCJzdWZmaXgiLCJ1cGRhdGVfY2FsbF9zdGFjayIsIm5hbWUiLCJyZXBfYm9vbCIsIm9wZW5faW5mbHVlbmNlX21hcF9maWxlIiwibWF0Y2gkMSIsImZvcm1hdCIsImxvZ2dlciIsIm9wZW5fY29udGFjdF9tYXBfZmlsZSIsImxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubCIsImdldF9jYWxsZWRfZnJvbSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEiLCJiYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzEiLCJnZXRfYmFja2Rvb3JfZmlsZV8xIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIiwiZ2V0X2JhY2tkb29ycyIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMCIsImdldF9iYWNrZG9vcl90aW1pbmdfMiIsImdldF9iYWNrZG9vcl9maWxlXzIiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2MiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMSIsImdldF9iYWNrZG9vcl90aW1pbmciLCJnZXRfYmFja2Rvb3JfZmlsZSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnkiLCJnZXRfcHJvZmlsZXIiLCJnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciIsImdldF9rYXNhX3N0YXRlIiwic2V0X3ByaW50X2VmZmljaWVuY3kiLCJnZXRfcHJpbnRfZWZmaWNpZW5jeSIsInNldF9sb2dnZXIiLCJzYXZlX2Vycm9yX2xpc3QiLCJzYXZlX3Byb2dyZXNzX2JhciIsImJhciIsInJlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkZWZhdWx0JDAiLCJjb21iaW5lIiwibDEiLCJsMiIsImxpc3QiLCJhMSIsImEyIiwib3B0aW9ucyIsImdldF9vcHRpb24iLCJ0aXRsZSIsImlucHV0IiwiYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIiwidF9jb21tb24iLCJkb3RfY29tbWVudCIsImRvdF90b19wZGYiLCJoZWFkIiwicSIsImhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QiLCJoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCIsIm91dHB1dCIsImFjdGlvbnMiLCJzeW50YXgiLCJ0cmFjZXMiLCJjb250YWN0X21hcCIsImluZmx1ZW5jZV9tYXAiLCJmbG93IiwiZGVidWciLCJlbXB0eV9lcnJvcl9oYW5kbGVyIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsIndhcm5fYXV4IiwicGFyYW1ldGVycyIsImVycm9yX2hhbmRsZXIiLCJ0b191aSIsImZpbGVfbmFtZSIsIm1lc3NhZ2UiLCJleG4iLCJkZWZhdWx0JDAiLCJ1bmNhdWdodCQwIiwiZGZ0IiwiZXJyb3IiLCJ1bmNhdWdodCIsInN0cmluZ2xpc3QiLCJ3YXJuX3dpdGhfZXhuIiwib3B0IiwibGluZSIsImZpbGUiLCJzdGgiLCJzdGgkMCIsInBvcyIsImxpYWlzb24iLCJzIiwicG9zJDAiLCJ3YXJuIiwiZmlsZV9saW5lIiwicHJpbnRfZm9yX0thU2ltIiwiaGFuZGxlcnMiLCJwYXJhbWV0ZXJzJDAiLCJjYXVnaHQiLCJwcmludCIsInByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0iLCJ3cmFwIiwic3RyaW5nIiwic3RyaW5nX29wdCIsImNoZWNrX3BvaW50IiwicGFyYW1ldGVyIiwiZXJyb3IkMCIsImVycm9yJDEiLCJmb3JfS2FTaW0iLCJmIiwibGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0iLCJhIiwiYiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2ZvciIsImMiLCJiJDAiLCJsaWZ0X2dlbmVyaWNfdGVybmFyeV9mb3JfS2FTaW0iLCJsaWZ0X2dlbl91bmFyeSIsImR1bXAiLCJvdXRwdXQiLCJsaWZ0X2dlbl9iaW5hcnkiLCJsaWZ0X2dlbl90ZXJuYXJ5IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iIiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ190IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ19iaW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5Iiwic3RyaW5nX29mX3N0ZXBfa2luZCIsIngiLCJpbnQkMCIsImludCQxIiwic3RyaW5nIiwiaW50JDIiLCJpbnQkMyIsImludCQ0IiwiaW50JDUiLCJzdHJpbmckMCIsInN0cmluZyQxIiwicHJpbnRfc3RlcF9raW5kIiwicGFyYW1ldGVycyIsInByaW50X3Rhc2siLCJwYXJhbWV0ZXIiLCJiIiwiYSIsImsiLCJsIiwib3V0cHV0IiwicSIsInQiLCJvdXRwdXQkMCIsImskMCIsImskMSIsIm91dHB1dCQxIiwib3V0cHV0JDIiLCJrJDIiLCJiJDAiLCJ0YWIiLCJpIiwiaSQwIiwidGltZSIsImNsb3NlX2xvZ2dlciIsImZsdXNoX2xvZ2dlciIsImlzX2R1bW15Iiwic3RlcF9raW5kIiwiYWRkX2V2ZW50IiwiZXJyb3IiLCJmIiwibG9nX2luZm8iLCJlcnJvciQwIiwibmV4dF9kZXB0aCIsImYkMCIsInRhc2siLCJ0ZXJtaW5hdGVkX3Rhc2siLCJjdXJyZW50X3Rhc2siLCJjbG9zZV9ldmVudCIsImxvZ19pbmZvJDAiLCJlcnJvciQxIiwiaW50ZXJydXB0ZWQiLCJlcnJvciQyIiwidGFpbCIsInRhaWwkMCIsInRlcm1pbmF0ZWRfdGFzayQwIiwibG9nX2luZm8kMSIsInNpemVfYWZ0ZXIiLCJnZW5fb3B0IiwiZ2VuIiwiZSIsImFkZF9ldmVudF9vcHQiLCJjbG9zZV9ldmVudF9vcHQiLCJwcm9wYWdhdGlvbl9sYWJlbHMiLCJwcm9wYWdhdGlvbl9jYXNlcyIsImNvcHkiLCJpbml0X2xvZ19pbmZvIiwibG9nX2luZm9fdG9fanNvbiIsImZsb2F0X29mX2pzb24iLCJpbnRfb2ZfanNvbiIsImxvZ19pbmZvX29mX2pzb24iLCJpbml0IiwiZHVtcF9zaG9ydF9sb2ciLCJyZXNldF9sb2ciLCJsb2ciLCJlbGxhcHNlZF90aW1lIiwiZWxsYXBzZWRfZ2xvYmFsX3RpbWUiLCJzZXRfdGltZSIsInNldF9zdGVwX3RpbWUiLCJzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSIsInN0Iiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uIiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fIiwic2V0X2dyaWRfZ2VuZXJhdGlvbiIsInNldF9jYW5vbmljYWxpc2F0aW9uIiwiYWRkX2Nhc2UiLCJhZGRfbG9va19kb3duX2Nhc2UiLCJhZGRfbG9va191cF9jYXNlIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIiwiaW5jX2N1dCIsImluY19icmFuY2giLCJpbmNfbl9rYXNpbV9ldmVudHMiLCJpbmNfbl9vYnNfZXZlbnRzIiwiaW5jX25fc2lkZV9ldmVudHMiLCJpbmNfbl9pbml0X2V2ZW50cyIsImluY19jdXRfZXZlbnRzIiwiaW5jX2tfY3V0X2V2ZW50cyIsInJlc2V0X2N1dF9ldmVudHMiLCJpbmNfc2VsZWN0ZWRfZXZlbnRzIiwiaW5jX3JlbW92ZWRfZXZlbnRzIiwiZHVtcF9jb21wbGV0ZV9sb2ciLCJsb2dnZXIiLCJ0aWNrIiwic2V0X2dsb2JhbF9jdXQiLCJuIiwic2V0X3BzZXVkb19pbnYiLCJsaWZ0IiwiZiIsImVtcHR5IiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJhZGQiLCJhZGRfd2hlbl9ub3RfaW4iLCJwIiwiZSIsIngiLCJzIiwicyQwIiwiZSQwIiwicmVtb3ZlIiwidW5pb24iLCJkaXNqb2ludF91bmlvbiIsImludGVyIiwiZGlmZiIsIm1pbnVzIiwiY2FyZGluYWwiLCJtZW0iLCJleGlzdHMiLCJmaWx0ZXIiLCJmb3JfYWxsIiwicGFydGl0aW9uIiwiY29tcGFyZSIsImVxdWFsIiwic3Vic2V0IiwiaXRlciIsImZvbGQiLCJmb2xkX2ludiIsImVsZW1lbnRzIiwiY2hvb3NlIiwibWluX2VsdCIsIm1heF9lbHQiLCJlbXB0eSQwIiwiaXNfZW1wdHkkMCIsIm1pbl9lbHQkMCIsIm1lbSQwIiwiZmluZF9vcHRpb24iLCJhIiwiYiIsImMiLCJkIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyIsImFkZCQwIiwib3ZlcndyaXRlIiwicGFyYW1ldGVyIiwiZXJyb3IiLCJtYXAiLCJib29sIiwiZXJyb3IkMCIsImFkZF9vcl9vdmVyd3JpdGUiLCJyZW1vdmUkMCIsInJlbW92ZV9vcl9ub3QiLCJ1cGRhdGUiLCJtYXAyIiwibWFwMnoiLCJmb2xkMnoiLCJmb2xkMiIsIml0ZXIyIiwiZyIsImgiLCJtYXBmIiwibWFwZyIsImZvbGQyX3NwYXJzZSIsIml0ZXIyX3NwYXJzZSIsImRpZmYkMCIsImRpZmZfcHJlZCIsIm1lcmdlIiwidW5pb24kMCIsImZvbGRfcmVzdHJpY3Rpb24iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJpdGVyJDAiLCJmb2xkJDAiLCJtYXBpIiwiZm9yX2FsbCQwIiwiZmlsdGVyX29uZSIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJiaW5kaW5ncyIsInRvX2pzb24iLCJvZl9qc29uIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJvbGQiLCJtb25hZGljX3Byb2pfbWFwX2kiLCJlcnJvciQxIiwiZGF0YSIsImVycm9yJDIiLCJkYXRhJDAiLCJlcnJvciQzIiwibW9uYWRpY19wcm9qX21hcCIsInBhcnRpdGlvbl9zZXQiLCJzZXQiLCJuZXdzZXQiLCJtb25hZGljX3BhcnRpdGlvbl9zZXQiLCJwcm9qX3NldCIsInNldF9hIiwic2V0X2IiLCJtb25hZGljX3Byb2pfc2V0IiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImhhbmRsZXIiLCJtdmJkdV9oYW5kbGVyIiwiaGFuZGxlciQwIiwiaGFuZGxlciQxIiwibXZiZHVfaGFuZGxlciQwIiwiaGFuZGxlciQyIiwiaGFuZGxlciQzIiwiaGFuZGxlciQ0IiwicG9vbCIsInB1c2giLCJvdXRfbGlzdCIsImluX2xpc3QiLCJhZGRfZWx0IiwiZm9sZF9sZWZ0IiwiYWNjIiwicHJpbnRfd2wiLCJwYXJhbWV0ZXJzIiwid2wiLCJpIiwicG9wIiwieCQwIiwidGwiLCJyZW1vdmVfZWx0IiwieCQxIiwiaW52YWxpZF9hcmciLCJtaCIsInBvcyIsImV4biIsInZhbHVlIiwiZGltZW5zaW9uIiwia2V5X2xpc3QiLCJwYXJlbWV0ZXJzIiwidCIsInNpemUiLCJhcnJheSIsImsiLCJzb2wiLCJzb2wkMCIsImskMCIsImskMSIsImNyZWF0ZSIsImNyZWF0ZV9iaWdnZXN0X2tleSIsImV4cGFuZF9hbmRfY29weSIsImRpbWVuc2lvbiQwIiwiYXJyYXkkMCIsImtleSIsImluaXQiLCJhcnJheSQyIiwiZXJyb3IkNCIsImFycmF5JDEiLCJnZXQiLCJmcmVlIiwidW5zYWZlX2dldCIsInByaW50IiwicHJpbnRfZWx0IiwiZWx0IiwicGFyYW1ldGVycyQwIiwiaSQwIiwicmVtYW5lbnQkMSIsInJlbWFuZW50IiwicmVtYW5lbnQkMCIsImZvbGRfd2l0aF9pbnRlcnJ1cHRpb24iLCJvdXRwdXRfb3B0IiwiZm9sZDJfY29tbW9uIiwidDEiLCJ0MiIsImFycmF5MSIsImFycmF5MiIsIngyIiwieDEiLCJyZW1hbmVudCQ0IiwieDIkMCIsInJlbWFuZW50JDIiLCJrJDIiLCJyZW1hbmVudCQzIiwiayQzIiwiZnJlZV9hbGwiLCJvbGRfZGltZW5zaW9uIiwibWF0cml4IiwibWF0cml4JDAiLCJleHRfbGlzdCIsImxpc3QiLCJ0MiQwIiwibDIiLCJrZXkyIiwiZGltIiwiaiIsIm9sZF91bmRlcmx5aW5nIiwib2xkX3VuZGVybHlpbmckMCIsIm9sZF91bmRlcmx5aW5nJDEiLCJvbGRfdW5kZXJseWluZyQyIiwibmV3X3VuZGVybHlpbmciLCJuZXdfbWF0cml4IiwidW5kZXJseWluZyIsInVuZGVybHlpbmckMCIsInByaW50X29mIiwiZm9sZF9nZW4iLCJmb2xkMSIsImIkMCIsImMkMCIsImJhc2ljIiwibiIsImtleXMiLCJuZXdfYXJyYXkiLCJuZXdfYmFzaWMiLCJpbSIsImltJDAiLCJsIiwidCQwIiwib3V0cHV0JDEiLCJsaXN0JDAiLCJvdXRwdXQiLCJ0YWlsIiwiaGVhZCIsIm91dHB1dCQwIiwiZmluZFNldCIsInBhcmVudCIsInJvb3QiLCJsJDAiLCJnZXRfcmVwcmVzZW50ZW50IiwidW5pb25fbGlzdCIsInRvX3Zpc2l0IiwidCQxIiwidG9fdmlzaXQkMCIsImEkMCIsInRvX3Zpc2l0JDEiLCJ0JDIiLCJyb290X3giLCJyb290X3kiLCJ1bmlvbl9hcnJheSIsIml0ZXJpIiwiZnN0X29wdGlvbiIsInNuZF9vcHRpb24iLCJlc2NhcGVfbGFiZWxfaW5fZG90IiwibWFrZV9pZF9jb21wYXRpYmxlX3dpdGhfZG90X2ZvIiwic3RyaW5nIiwidGFiIiwicG9zJDIiLCJjaGFyJDAiLCJsaXN0ZV9jaGFyIiwicG9zJDAiLCJsJDEiLCJwb3MkMSIsInNvcnRlZF9wYXJ0c19vZl9saXN0IiwiYXV4Iiwic3VmZml4IiwibGlzdCQxIiwic29ydF9saXN0IiwicmVmaW5lZF9saXN0Iiwia2V5JDAiLCJyZWZpbmVkX3NvcnRlZF9saXN0IiwiY29uc3RfdW5pdCIsImFycmF5X29mX2xpc3QiLCJxIiwiYSQxIiwidW5zb21lIiwidHJhY2UiLCJpbnRlcl9saXN0IiwibDEkMSIsImwyJDEiLCJsMSIsInJlcCIsImwyJDAiLCJsMSQwIiwicmVwJDAiLCJsaXN0XzBfbiIsImxpc3RfbWludXMiLCJxMiIsInExIiwicTEkMCIsInByaW50X2NvbW1hIiwiY29tbWEiLCJmZXRjaF9hcnJheSIsImRlZiIsImkkMSIsImFzc28iLCJpbnQkMCIsImZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5Iiwibm9kZV9vZl9pbnQiLCJpbnRfb2Zfbm9kZSIsImxvY2FsX3RyYWNlIiwibm9kZV9vZl9ub2RlX2xhYmVsIiwibm9kZV9saXN0IiwiZWRnZV9saXN0IiwibWF4X25vZGUiLCJtIiwibm9kZXMiLCJub2RlcyQwIiwiZWRnZXMiLCJlZGdlIiwibjIiLCJsYWJlbCIsIm4xIiwiZWRnZXMkMCIsImNvbXB1dGVfc2NjIiwibG93IiwicHJlIiwib25fc3RhY2siLCJuX3RvX3N0cmluZyIsImdyYXBoIiwib25fc3RhY2skMCIsInByZSQwIiwibG93JDAiLCJvbl9zdGFjayQxIiwicHJlJDEiLCJsb3ckMSIsImVycm9yJDgiLCJsb3ckNCIsImxvdyQ1IiwiZXJyb3IkOSIsImxvdyQ2IiwiZXJyb3IkMTQiLCJwcmUkNCIsInByZSQ1IiwiZXJyb3IkMTAiLCJwcmUkNiIsImVycm9yJDEzIiwib25fc3RhY2skNCIsIm9uX3N0YWNrJDUiLCJlcnJvciQxMSIsIm9uX3N0YWNrJDYiLCJlcnJvciQxMiIsInNjY19saXN0Iiwic3RhY2siLCJjb3VudGVyIiwidiIsInN0YWNrJDAiLCJjb3VudGVyJDAiLCJlZGdlc192IiwidyIsInByZV93Iiwic2NjX2xpc3QkMCIsImxvd192IiwibG93X3ciLCJlcnJvciQ1Iiwic3RhY2skMSIsInNjY19saXN0JDEiLCJjb3VudGVyJDEiLCJsb3ckMiIsImVycm9yJDYiLCJsb3dfdiQwIiwiZXJyb3IkNyIsInByZV93JDAiLCJsb3ckMyIsInByZV92Iiwib25fc3RhY2skMiIsInN0YWNrJDIiLCJjYyIsInN0YWNrJDMiLCJvbl9zdGFjayQzIiwiY2MkMCIsInByZSQyIiwicHJlJDMiLCJhZGRfYnJpZGdlcyIsInNjYyIsInN0cmluZ19vZl9uIiwic3RyaW5nX29mX2UiLCJicmlkZ2VzIiwic2NjJDAiLCJzY2MkMSIsInNjYyQ0Iiwibm9kZSIsIm4kMCIsInNjYyQyIiwibmkiLCJzY2NpIiwic2NjaSQwIiwic2NjaSQxIiwibmoiLCJzY2NqIiwic2NjaiQwIiwic2NjaiQxIiwibnN0cmluZ2kiLCJuc3RyaW5naiIsImJyaWRnZXMkMCIsInNjYyQzIiwiaW52YWxpZCIsIlBPUyIsIm1lc3NhZ2UiLCJpbnZhbGlkX2FyZ19ib29sIiwibWVtYmVyIiwiZGljdGlvbmFyeSIsImluX2NvbnN0cnVjdGlvbiIsInN0YWJpbGl6ZSIsImFzc28kMCIsInRyYW5zbGF0ZSIsImRpY3Rpb25hcnkkMCIsInN0YWJpbGl6ZWQiLCJhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QiLCJ1bmlxdWVseSIsImJ1aWxkIiwiZnJlc2giLCJhc3NvX2lkJDEiLCJoYXNoX3RhYmxlIiwiaGFzaCIsImRpY3Rpb25hcnkkMSIsImFzc29faWQiLCJhc3NvX2lkJDAiLCJhbGxvY2F0ZSIsImFhIiwiYWxsb2NhdGVfdW5pcXVlbHkiLCJhbGxvY2F0ZV9ib29sIiwidW5zYWZlX2FsbG9jYXRlIiwiZGljIiwiZGljJDAiLCJsYXN0X2VudHJ5IiwidGlja19zdG9yaWVzIiwiZiIsImNvbmYiLCJzYXZlX3Byb2dyZXNzX2JhciIsIm5fc3RvcmllcyIsImNvdW50ZXIiLCJsYXN0IiwiaW5pdCIsImMiLCJuIiwibmMiLCJubCIsIm4kMCIsImJhciIsIm4kMSIsInRpY2skMCIsInRpY2siLCJjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3MiLCJjb25maWdfc21hbGxfZ3JhcGgiLCJjb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3IiLCJzd2FwIiwiYSIsImIiLCJpZ25vcmVfZnN0IiwiY29tcGFyZV9zdWNjIiwicCIsImwiLCJsJDAiLCJxIiwic3RyaWN0bHlfaW5jcmVhc2luZyIsInN0cmljdGx5X2RlY3JlYXNpbmciLCJjb25jYXQiLCJwcmludF9saXN0IiwiY2hlY2siLCJmb3JtIiwic3RyaW5nIiwicmVwIiwiaXNfc3RyaWN0X3N1Ymxpc3QiLCJhJDAiLCJiJDAiLCJoIiwidCIsImgkMCIsInQkMCIsInQkMSIsImluc2VydF9lbHQiLCJlIiwiZGlmZl9saXN0IiwiYWNjdSIsImFjY3UkMCIsImNvbXBhcmVfYm9vbCIsImRpZmZfbGlzdF9kZWNyZWFzaW5nIiwibWVyZ2VfbGlzdF9kZWNyZWFzaW5nIiwieCIsInkiLCJjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQiLCJwYXJhbWV0ZXIiLCJoYW5kbGVyIiwibG9nX2luZm8iLCJlcnJvciIsImV2ZW50IiwiY29uZmlnIiwicHJlYyIsImlzX29icyIsImVycl9sb2dnZXIiLCJpc19vYnMkMCIsIm1heF9pbmRleCIsImkiLCJuX2VkZ2VzIiwiZiQwIiwiY2xvc2UiLCJjbG9zZV90aWNrIiwidGljayQxIiwiZG9fdGljayIsImNsb3NlX3RpY2skMCIsImRvX3RpY2skMCIsInNfcHJlZF9zdGFyIiwibWF4X3N1Y2MiLCJzdWNjIiwicHJlZCIsImlzX2xhc3Rfc3VjY19vZiIsImFkZCIsIm5vZGUiLCJvbGRfbCIsImxvZ19pbmZvJDAiLCJlcnJvciQwIiwib3V0cHV0Iiwic19wcmVkIiwibF9wcmVkIiwiaiIsInByZWRfc3RhciIsIm5ld19sIiwiZGlmZiIsImsiLCJjbG9zdXJlX2JvdHRvbV91cCIsImV2ZW50X29wdCIsInMiLCJncmFwaCIsImNsb3N1cmVfdG9wX2Rvd24iLCJkZWx0YSIsInByZWMkMCIsIm1lcmdlX3RhaW50cyIsImwxIiwibDIiLCJxJDAiLCJ0YWludGluZyIsIm91dHB1dCQxIiwiZGVsdGEkMCIsIm91dHB1dCQwIiwiZGVsdGEkMSIsIm5ld190YWludCIsInRhaW50cyIsInRhaW50Iiwic2hpZnRlZF90YWludHMiLCJnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3ciLCJtb2RlIiwibSIsImNsb3N1cmVfY2hlY2siLCJsb2dfaW5mbyQxIiwiZXJyb3IkMSIsInMkMCIsInMkMSIsImNsb3N1cmUiLCJyZWR1Y3Rpb25fdG9wX2Rvd24iLCJwcmVjX3N0YXIiLCJlaWQiLCJuZWlnaCIsIm91dCIsInRvX3JlbW92ZSIsImwxJDAiLCJsMiQwIiwibDEkMSIsImNtcCIsImwxJDIiLCJzZXQiLCJsb2dfaW5mbyQyIiwiZXJyb3IkMiIsImF0b21fdGVzdGVkIiwiYXRvbV9tb2RpZmllZCIsImVtcHR5X2NvbmZpZyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJkZWJ1Z19wcmludF9jYXVzYWwiLCJkZWJ1Z19wcmludF9hdG9tIiwiZGVidWdfcHJpbnRfZ3JpZCIsImciLCJzaXRlX2lkIiwibm9kZV9pZCIsImVtcHR5X2dyaWQiLCJncmlkX2ZpbmQiLCJncmlkIiwicXVhcmsiLCJpc19saW5rIiwidmEiLCJldmVudF9udW1iZXIiLCJraW5kIiwiYXR0JDAiLCJhdHQiLCJhdHRyaWJ1dGUiLCJwaWQiLCJlaWRfaW5pdCIsIm9sZCIsImFkZF9hY3Rpb25zIiwiYWN0aW9ucyIsImdyaWQkMCIsInNpdGUiLCJxJDEiLCJzaXRlMiIsInNpdGUxIiwiZ3JpZCQ0IiwicSQyIiwic2l0ZTEkMCIsInEkMyIsInNpdGUkMCIsImFnIiwibmEiLCJzaWdzIiwiYWdfaW50ZiIsImdyaWQkMSIsImFnJDAiLCJuYSQwIiwic2lncyQwIiwiZ3JpZCQyIiwiYWRkX3Rlc3RzIiwidGVzdHMiLCJyZWNvcmQiLCJyZWNvcmRfb2JzIiwic2lkZV9lZmZlY3RzIiwicmVjb3JkX2luaXQiLCJsYmwiLCJjdXQiLCJvcHQiLCJhdHRyaWJ1dGVfaWRzIiwic3RoIiwid2l0aF9yZWR1Y3Rpb24iLCJhdHRyaWJ1dGVfaWRzJDAiLCJjZmciLCJhdHRyaWJ1dGVfaWRzJDEiLCJ0eXBlX2kiLCJzaXRlX2kiLCJub2RlX2kiLCJhdHRyaWJ1dGUkMSIsImF0dHJpYnV0ZSQyIiwiYXRvbSQwIiwiZXZlbnRzX2tpbmQkMSIsInByZWRzJDAiLCJwcmVjXzEkMCIsImxhc3RfdGVzdGVkJDIiLCJsYXN0X21vZGlmJDEiLCJjb25maWckMyIsImxhc3RfbW9kaWYiLCJsYXN0X3Rlc3RlZCIsImF0dHJpYnV0ZSQwIiwiYXRvbSIsImV2ZW50c19raW5kJDAiLCJwcmVkcyIsInByZWNfMSIsImNvbmZpZyQwIiwiZXZlbnRzX2tpbmQiLCJjZmxjdF9zZXQiLCJjZmxjdCIsImNvbmZpZyQyIiwibGFzdF90ZXN0ZWQkMSIsImNvbmZpZyQxIiwicHJlZF9pZCIsInByZWRfc2V0IiwibGFzdF90ZXN0ZWQkMCIsImxhc3RfbW9kaWYkMCIsImNmZyQwIiwicmVkdWN0aW9uIiwicmVkdWN0aW9uJDAiLCJpZHNfb2ZfZ3JpZCIsImtleSIsInByZWNfc3Rhcl9vZl9jb25maWciLCJlbnJpY2hfZ3JpZCIsImNvbmZpZ19jbG9zdXJlIiwia2VlcF9sIiwidG9fa2VlcCIsImlkcyIsInByZWNfZWlkcyIsImVtYXAiLCJkIiwiZCQwIiwiZGVwdGgiLCJkZXB0aF9vZl9ldmVudCIsImZvbGRfb3Zlcl9jYXVzYWxfcGFzdF9vZl9vYnMiLCJjaGVja19jcmVhdGVfcXVhcmtzIiwiYWlkIiwic2l0ZXMiLCJxdWFya3MiLCJpbnRlcm5hbCIsImNoZWNrX21vZGlmaWVkX3F1YXJrcyIsIm1vZGlmIiwiY2hlY2tfdGVzdGVkX3F1YXJrcyIsImNoZWNrX2V2ZW50X3F1YXJrcyIsImFzaXRlIiwiYXNpdGUkMCIsImFpZCQwIiwiYXNpdGUyIiwiYXNpdGUxIiwicHJldHR5X3ByaW50IiwiZG90Rm9ybWF0IiwiY29tcHJlc3Npb25fdHlwZSIsImxhYmVsIiwiZ3JpZF9saXN0IiwiZXJyX2ZtdCIsImNvbXByZXNzaW9uX3R5cGUkMCIsInoiLCJsaXN0IiwieCQwIiwic3RvcnlfbGlzdCIsInN0b3J5X2xpc3QkMCIsImNwdCIsInN0b3JpZXMiLCJlbnJpY2hlZF9jb25maWciLCJzdGVwcyIsImluZm8iLCJhdl90IiwiZ3JpZF9zdG9yeSIsInRibCIsImF0dF9scyIsInNvcnRlZF9ldmVudHMiLCJkbWFwIiwibm9kZV90b19qc29uIiwiZXZlbnRfa2luZCIsInN0cCIsInJpZCIsInN0cCQwIiwicmlkJDAiLCJzdHAkMSIsInBlcnQiLCJzdHAkMiIsInBlcnQkMCIsIm5vZGVzX3RvX2xpc3QiLCJlaWRzX2F0X2QiLCJscyIsImxzJDAiLCJub2Rlc190b19qc29uIiwiZWRnZV90b19qc29uIiwiZWlkJDAiLCJwcmVjX2VkZ2VzIiwicHJlY19lZGdlc190b19qc29uIiwiY29uZmxfZWRnZXMiLCJwcmVjJDEiLCJwcmVjJDIiLCJib29sIiwiY29uZmxfZWRnZXNfdG9fanNvbiIsInByb2ZpbGluZyIsImRlc2MiLCJ0aXRsZSIsImF0b21fa2luZCIsInByb2ZpbGluZyQwIiwibmFtZSIsInN0b3J5Iiwic2l6ZSIsInRpbWUiLCJwcmludF9zdGF0IiwiZW5yaWNoZWRfZ3JpZCIsImNvdW50X29icyIsIm5fc3RlcCIsImxvbmdlc3Rfc3RvcnkiLCJuX25vbmVtcHR5IiwibGVuZ3RoX3N1bSIsImxlbmd0aF9zcXVhcmVfc3VtIiwiY2MiLCJjYyQwIiwibGVuZ3RoX3NxdWFyZV9zdW0kMCIsImxlbmd0aF9zdW0kMCIsIm5fbm9uZW1wdHkkMCIsImxvbmdlc3Rfc3RvcnkkMCIsIm5fc3RlcCQwIiwiayQwIiwic3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIiwicGkiLCJhZyQxIiwiY29tcGFyZSIsInByaW50IiwiZW1wdHkiLCJpdGVyIiwiaGFzaCIsInByZWRpY2F0ZSIsImxpZnQiLCJwcmVkaWNhdGVfaWQiLCJ0YWIiLCJmaW5kX2RlZmF1bHQiLCJkZWYiLCJmaW5kX29wdGlvbiIsIm1lbSIsInJlY3ljbGUiLCJwcmVkaWNhdGVfbWF4IiwiZW1wdHkkMCIsIml0ZXIkMCIsImZpbmRfZGVmYXVsdCQwIiwiZmluZF9vcHRpb24kMCIsIm1lbSQwIiwiYWRkJDAiLCJjYXVzYWwiLCJ3ZWFrIiwic3Ryb25nIiwibWluX2xldmVsIiwic3RyaW5nX29mX2xldmVsIiwibGV2ZWwiLCJsb3dlciIsImhpZ2hlciIsIm5fc3RvcnkiLCJuX2JyYW5jaCIsInN0YXJ0IiwiaW5wcm9ncmVzcyIsInN1Y2Nlc3MiLCJmYWlsbHVyZSIsImludF9vZl9qc29uIiwibWVzc2FnZV90b19qc29uIiwicHJvZ3Jlc3NfYmFyIiwib25lX2NvbXByZXNzaW9uIiwibG9nX2luZm9fdG9fanNvbiIsIm5ld19zdG9yeSIsImludCQwIiwibWVzc2FnZV9vZl9qc29uIiwieCQzIiwibG9nX2luZm9fb2ZfanNvbiIsImwkMSIsImwkMiIsIngkMSIsImwkMyIsIngkMiIsInAkMCIsImdldF9jYXVzYWxfdHJhY2UiLCJnZXRfY2F1c2FsX3RyYWNlX29ubHkiLCJnZXRfd2Vha19jb21wcmVzc2lvbiIsImdldF9zdHJvbmdfY29tcHJlc3Npb24iLCJnZXRfY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIiwiYnVpbGRfcGFyYW1ldGVyIiwiY2FsbGVkX2Zyb20iLCJub25lIiwic2VuZF9tZXNzYWdlIiwibG9nX3N0ZXBfY2hhbm5lbCQwIiwib3V0X2NoYW5uZWxfcHJvZmlsaW5nJDAiLCJvdXRfY2hhbm5lbF9lcnIkMCIsIm91dF9jaGFubmVsJDAiLCJvdXRfc2VydmVyIiwic2VydmVyIiwiY2hhbm5lbCIsImxvZ19zdGVwX2NoYW5uZWwkMSIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQxIiwib3V0X2NoYW5uZWxfZXJyJDEiLCJvdXRfY2hhbm5lbCQxIiwib3V0X3NlcnZlciQwIiwic2V0X2NvbXByZXNzaW9uX3dlYWsiLCJzZXRfY29tcHJlc3Npb25fc3Ryb25nIiwic2V0X2NvbXByZXNzaW9uX25vbmUiLCJpbml0X2hhbmRsZXIiLCJuX3J1bGVzIiwicnVsZV9uYW1lX2NhY2hlIiwiciIsIm5fYWdlbnRzIiwiYWdlbnRfbmFtZV9jYWNoZSIsInN0ZXBzX2J5X2NvbHVtbiIsInN0cmluZ19vZl9leG4iLCJnZXRfcHJpb3JpdGllcyIsInNldF9maXJzdF9zdG9yeV9wZXJfb2JzIiwic2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfYWxsX3N0b3JpZXNfcGVyX29icyIsImdldF9kZWJ1Z2dpbmdfbW9kZSIsInNldF9kZWJ1Z2dpbmdfbW9kZSIsImdldF9sb2dfc3RlcCIsInNldF9sb2dfc3RlcCIsImdldF9sb2dnZXIiLCJzZXRfbG9nZ2VyIiwiZm10IiwiZ2V0X291dF9jaGFubmVsIiwic2V0X291dF9jaGFubmVsIiwiZ2V0X2RlYnVnZ2luZ19jaGFubmVsIiwic2V0X2RlYnVnZ2luZ19jaGFubmVsIiwiZ2V0X2thc2FfcGFyYW1ldGVycyIsInNldF9rYXNhX3BhcmFtZXRlcnMiLCJwYXJhbWV0ZXIkMCIsImRvX3dlX3VzZV9idWNrZXRfc29ydCIsInVzZV9idWNrZXRfc29ydCIsInVzZV9mdXNpb25fc29ydCIsImFsd2F5c19kaXNhbWJpZ3VhdGUiLCJzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSIsImRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyIsInNldF9pdHRlcmF0aW9uX2JvdW5kIiwiZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIiwiZ2V0X3Byb2ZpbGluZ19sb2dnZXIiLCJzdHJpbmdfb2ZfcnVsZV9pZCIsInN0cmluZ19vZl9hZ2VudF9pZCIsImdldF9wcmVkaWNhdGVfbWFwIiwiZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQiLCJnZXRfYmxhY2tsaXN0X2V2ZW50cyIsImlzX3NlcnZlcl9tb2RlIiwiZ2V0X3NlcnZlcl9jaGFubmVsIiwic2h1dF9kb3duX3NlcnZlcl9jaGFubmVsIiwiaXNfc2VydmVyX2NoYW5uZWxfb24iLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkdW1wX2pzb24iLCJtZXNzYWdlIiwicmVzZXRfcHJvZ3Jlc3NfYmFyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfcmVzZXRfY3VycmVudF9waGFzZV90aXRsZSIsInNldF9zYXZlX3Byb2dyZXNzX2JhciIsInNldF9yZXNldF9wcm9ncmVzc19iYXIiLCJzYXZlX2Vycm9yX2xvZyIsInNldF9zYXZlX2Vycm9yX2xvZyIsInB1c2hfanNvbiIsImpzb24iLCJyZWYiLCJwb3BfanNvbiIsImVsdF9vcHQiLCJmaWZvIiwiY29tcG9zZV93aXRoX2hhbmRsZXIiLCJzaXRlX25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUiLCJhZ2VudF9pZF9vZl9hZ2VudCIsImFnZW50X25hbWVfb2ZfYWdlbnQiLCJhZ2VudF9vZl9zaXRlIiwiYWdlbnRfaWRfb2Zfc2l0ZSIsImFnZW50X25hbWVfb2Zfc2l0ZSIsInNpdGVfbmFtZV9vZl9zaXRlIiwiZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAiLCJnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIiwiYnVpbGRfZ3JpZCIsImVtcHR5X3NldCIsInNpZGUiLCJzdWJzIiwic2lkZV9lZmZlY3QiLCJtYXliZV9zaWRlX2VmZmVjdCIsInNlIiwidHJhbnNsYXRlIiwiaWQiLCJldmVudCQwIiwic2lkZV9lZmZlY3RzX2RzdCIsImluZm8kMCIsImV2ZW50JDEiLCJpZCQwIiwiZXZlbnQkMiIsInNpZGVfZWZmZWN0c19kc3QkMCIsImFjdGlvbnMkMCIsImluZm8kMSIsImlkJDEiLCJ0ZXN0cyQwIiwiY2xlYW5fZXZlbnRzIiwicHJpbnRfc2lkZV9lZmZlY3QiLCJsb2ciLCJzaWRlX2VmZmVjdF9vZl9saXN0IiwibGV2ZWxfb2ZfZXZlbnQiLCJwcmlvcml0eV9vcHQiLCJwcmlvcml0aWVzIiwicHJpb3JpdHkiLCJhZ19pZCIsImRpc2FtYmlndWF0ZSIsImV2ZW50X2xpc3QiLCJldmVudF9saXN0X3JldiIsIm1hcHBpbmciLCJ1c2VkIiwibWF4X2lkIiwibWFwcGluZyQwIiwidXNlZCQwIiwibWF4X2lkJDAiLCJhJDEiLCJjb252ZXJ0X2luaXQiLCJyZW1hbmVudCIsInN0ZXBfbGlzdCIsImFjdGlvbl9saXN0IiwicmVjdXIiLCJhY2MiLCJzb3VwIiwiYWNjJDIiLCJzaXRlX2xpc3QiLCJzb3VwJDAiLCJ0aGlzJDAiLCJzdGFuZGFsb25lIiwidGhpcyQxIiwibWFwIiwidSIsImFnZW50X2luZm8iLCJhc19pbml0IiwicmVzdHJpY3Rpb25fbWFwIiwiYWdpZCIsInJlc3RyaWN0aW9uIiwidW5iaW5kIiwicmVtIiwic19uYW1lIiwiYWdfaW5mbyIsImFnX2luZm8kMCIsInJlbWFuZW50JDAiLCJiaW5kIiwic3BsaXRfaW5pdCIsInJlZmluZWRfc3RlcF9saXN0IiwicmVmaW5lZF9zdGVwIiwiYWRkX2luX3Njb3BlIiwic2NvcGUiLCJvbGRfc2V0IiwibmV3X3NldCIsImRlYWxfd2l0aF90ZXN0cyIsImZpbGxfc2lwaG9uIiwicmV2X3RyYWNlIiwicmVmaW5lZF9zdGVwX3dpdGhfc2NvcGVfbGlzdCIsInNjb3BlJDEiLCJzY29wZSQwIiwic3RhdGUiLCJzdGF0ZV9yZWYiLCJhZ19pbmZvJDEiLCJyZW1hbmVudCQxIiwic2V0JDAiLCJhZ2VudF9pZF9pbl9vYnMiLCJwcmVkaWNhdGVzX29mX3NpZGVfZWZmZWN0cyIsInNpZGVzIiwic19pZCIsImluaXRfY3V0IiwiZmluYWxpemVfY3V0IiwiY3V0X3N0ZXAiLCJuX2N1dCIsImtlcHQiLCJzZWVuIiwic2VlbiQwIiwiYWN0aW9uIiwiaW50ZXJmYWNlJDAiLCJsaXN0JDAiLCJlbHQiLCJxMCIsImFnX2lkJDAiLCJzMiIsInMxIiwicTEiLCJ0MSIsImtlcHQkMCIsInNlZW4kMSIsInRlc3QiLCJhZ2VudCIsInByZWRpY2F0ZV9pbmZvIiwic2VlbiQyIiwiY3V0X3Jldl90cmFjZSIsInJldl9ldmVudF9saXN0IiwidHJhY2UiLCJjbGVhbiIsImNvbHVtbiIsImJsYWNrYm9hcmQiLCJ0YWlsIiwiaGVhZCIsImNvbHVtbiQwIiwiYmxhY2tib2FyZCQwIiwicG9wIiwicHJlZGljYXRlX2xpc3QiLCJibGFja2JvYXJkJDEiLCJuX3N0ZXBzIiwic3RlcCIsImJsYWNrYm9hcmQkMyIsInByZV9ldmVudCIsInRlc3RfbGlzdCIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyIsImJ1aWxkX21hcF90ZXN0IiwidGVzdF9tYXAiLCJwcmVkaWNhdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQxIiwiYWdfaWQkMSIsInNpdGVfaWQkMCIsInByZWRpY2F0ZV9pZCQyIiwiYWdfaWQkMiIsInNpdGVfaWQkMSIsInByZWRpY2F0ZV9pZCQzIiwiYWdfaWQxIiwiYWdfaWQyIiwic2l0ZV9pZDEiLCJzaXRlX2lkMiIsInByZWRpY2F0ZV9pZDEiLCJwcmVkaWNhdGVfaWQyIiwiYm9vbF9jcmVhdGlvbiIsImFjdGlvbl9tYXAiLCJsaXN0MiIsImxpc3QxIiwibGlzdDEkMCIsImxpc3QyJDAiLCJhZ2VudF9uYW1lMSIsImFnZW50X25hbWUyIiwiczIkMCIsInMxJDAiLCJhZ19pZDEkMCIsImFnX2lkMiQwIiwiYWdlbnRfbmFtZTIkMCIsInNpdGVfaWQxJDAiLCJzaXRlX2lkMiQwIiwicHJlZGljYXRlX2lkMSQwIiwiYm9vbF9jcmVhdGlvbiQwIiwiYm9vbCQwIiwiYm9vbF9jcmVhdGlvbiQxIiwiYm9vbCQxIiwidmFsdWUiLCJpc19yZW1vdmVfYWN0aW9uIiwidGVzdF9tYXAkMCIsIm1lcmdlZF9tYXAiLCJtZXJnZWRfbWFwJDAiLCJtYXAkMCIsImFjdGlvbiQwIiwidGVzdCQwIiwidGVzdCQxIiwiYWN0aW9uJDEiLCJuc2lkIiwibW9kX3dpdGhvdXRfdGVzdCIsIm5fbW9kaWZpY2F0aW9ucyIsIm9sZF9saXN0IiwidiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsIm1vZF93aXRob3V0X3Rlc3QkMCIsIm1vZF93aXRob3V0X3Rlc3QkMSIsImJvb2xfYWN0aW9uIiwibl9tb2RpZmljYXRpb25zJDAiLCJwcmVfc3RlcHNfYnlfY29sdW1uIiwiYmxhY2tib2FyZCQyIiwicHJlZGljYXRlX2xpc3QkMCIsInByZWRpY2F0ZV9saXN0JDEiLCJ5JDAiLCJjYW5kaWRhdGVzIiwiZWlkYiIsImVpZGEiLCJjb2x1bW4kMSIsImNvbHVtbiQyIiwidG9fcG9wIiwiZTIiLCJlMSIsImJsYWNrYm9hcmQkNCIsImJsYWNrYm9hcmQkNSIsImVycm9yJDMiLCJrJDIiLCJsaXN0JDEiLCJrJDEiLCJkZWJ1Z19tb2RlIiwid2FybiIsInBvcyIsImV4biIsImRlZmF1bHQkMCIsImludF9vZl9zdGVwX2lkIiwic3RlcF9pZF9vZl9pbnQiLCJkZWNfc3RlcF9pZCIsImluY19zdGVwX2lkIiwiaW50X29mX3N0ZXBfc2hvcnRfaWQiLCJzdGVwX3Nob3J0X2lkX29mX2ludCIsImluY19zdGVwX3Nob3J0X2lkIiwiZGVjX3N0ZXBfc2hvcnRfaWQiLCJ3ZWFrZW5pbmciLCJpc191bmtub3duIiwiaXNfdW5kZWZpbmVkIiwiY29tcGFyZSQwIiwicHJpbnQkMCIsImNvbXBhcmUkMSIsInByaW50JDEiLCJsZXZlbHMiLCJnZXRfcHJlX2NvbHVtbl9tYXBfaW52IiwiZ2V0X3ByZV9ldmVudCIsInByaW50X3ByZWRpY2F0ZV9pbmZvIiwiaSQwIiwiaSQxIiwiaW50NCIsImludDMiLCJpbnQyIiwiaW50MiQwIiwiaW50JDEiLCJpbnQyJDEiLCJpbnQkMiIsImludDMkMCIsImludDIkMiIsImludCQzIiwiaWQyIiwiaWQxIiwicHJpbnRfa25vd24iLCJzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIiwiYWdlbnRfaWQiLCJpbnRlcm5hbF9zdGF0ZSIsImFnZW50X25hbWUiLCJhZ2VudF9pZCQwIiwicHJpbnRfcHJlZGljYXRlX3ZhbHVlIiwicHJpbnRfcHJlZGljYXRlX2lkIiwicHJpbnRfcHJlYmxhY2tib2FyZCIsIm5ldmVudHMiLCJzZWlkIiwic3RyaWN0bHlfbW9yZV9yZWZpbmVkIiwibW9yZV9yZWZpbmVkIiwiY29uaiIsImNvbXBhdGlibGUiLCJkaXNqdW5jdGlvbiIsImFsbG9jYXRlIiwibWFwX2ludiIsInNpZCQwIiwic2lkIiwiY3JlYXRlX2FnZW50IiwibmV3X2xpc3QiLCJmcmVlX2FnZW50IiwiZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9ub19zdWJzIiwibG9nX2luZm8kMyIsImVycm9yJDQiLCJsb2dfaW5mbyQ0IiwiZXJyb3IkNSIsImJsYWNrYm9hcmQkNiIsImxvZ19pbmZvJDUiLCJlcnJvciQ2IiwiYmxhY2tib2FyZCQ3IiwibG9nX2luZm8kNiIsImVycm9yJDciLCJwcmVkaWNhdGVfaWQyJDAiLCJibGFja2JvYXJkJDgiLCJsb2dfaW5mbyQ3IiwiZXJyb3IkOCIsImJsYWNrYm9hcmQkOSIsImxvZ19pbmZvJDgiLCJlcnJvciQ5IiwiYmxhY2tib2FyZCQxMCIsImxvZ19pbmZvJDkiLCJlcnJvciQxMCIsImJsYWNrYm9hcmQkMTEiLCJsb2dfaW5mbyQxMCIsImVycm9yJDExIiwicHJlZGljYXRlaWQiLCJibGFja2JvYXJkJDEyIiwiZXJyb3IkMTIiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzIiwicHJlZGljYXRlc19vZl9hY3Rpb24iLCJwcmVkaWNhdGVzX29mX3Rlc3QiLCJzaXRlX25hbWUiLCJ0eXBlX29mX3N0ZXAiLCJnZXRfbGV2ZWxfb2ZfZXZlbnQiLCJpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIiwiaW5pdF9zdGVwIiwibnNpZCQwIiwiYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIiwidmFsdWUkMCIsInByZWRpY2F0ZV90YXJnZXRfaWQiLCJzbmFtZSIsInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YSIsImJ0IiwicG90ZW50aWFsX3RhcmdldCIsImJpbmRpbmdfc3RhdGUiLCJmb3JtZXJfc3RhdGVzIiwiYnQkMCIsImluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nIiwiYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyIsImRhdGFfc3RydWN0dXJlIiwiYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUkMCIsImFkZF9zdXJlX3Rlc3QiLCJhZGRfc3Vic190ZXN0IiwiYWRkX3N1YnNfdGVzdF9saW5rIiwibGluayIsImxpbmskMCIsImRhdGFfc3RydWN0dXJlJDEiLCJhZGRfc3VyZV9hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb25fbGluayIsImFkZF9zdGVwX3N0cm9uZyIsInN0ZXBfaWQiLCJhZzFfaWQiLCJhZzJfaWQiLCJzaXRlMV9pZCIsInNpdGUyX2lkIiwidGVzdGVkX3NpdGVzIiwibW9kX3NpdGVzIiwicHJpb3JpdHlfc2l0ZXMiLCJzdXJlX2FnZW50cyIsInN1cmVfYWdlbnQiLCJkYXRhX3N0cnVjdHVyZSQyIiwiYWdlbnQxIiwiYWdlbnQyIiwibWl4X3NpdGUxIiwibWl4X3NpdGUyIiwiZGF0YV9zdHJ1Y3R1cmUkMyIsImRhdGFfc3RydWN0dXJlJDQiLCJhZ2VudCQwIiwic2l0ZV9uYW1lMSIsInNpdGVfbmFtZTIiLCJ3ZWFrMSIsIndlYWsyIiwiYWdlbnQkMSIsImRhdGFfc3RydWN0dXJlJDUiLCJkYXRhX3N0cnVjdHVyZSQ2IiwiYTIiLCJhMSIsInNpZGVfZWZmZWN0JDAiLCJhY3Rpb25fbGlzdCQwIiwidGVzdF9saXN0JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QiLCJmaWN0aXRpb3VzX2xpc3QiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4IiwicnVsZV9hZ2VudF9pZF9zdWJzIiwicnVsZV9hZ2VudF9pZF9tdXRleCIsImluaXRfc3RlcCQwIiwicnVsZV9hZ2VudF9pZF9tdXRleCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDAiLCJmaWN0aXRpb3VzX2xpc3QkMCIsInByZWRpY2F0ZV9pbmZvJDAiLCJydWxlX2FnZW50X2lkX3N1YnMkMCIsImluaXRfc3RlcCQxIiwiaW5pdF9zdGVwJDIiLCJydWxlX2FnZW50X2lkX3N1YnMkMSIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgkMCIsImluaXRfc3RlcCQzIiwibGlua3NfbXV0ZXgiLCJsaW5rc19tdXRleCQwIiwiZmljdGl0aW91c19saXN0JDEiLCJidWlsZF9tYXAiLCJhZGRfc3RhdGUiLCJmYWRkIiwibnNpZF92b2lkIiwibnNpZF9uZXh0IiwicG90ZW50aWFsX3RhcmdldCQwIiwicnVsZV9hZ19pZCIsImZpY3RpdGlvdXNfbGlzdCQyIiwic2lkZV9lZmZlY3QkMSIsInN0ZXBfaWQkMCIsInByZV9zdGVwc19ieV9jb2x1bW4kMCIsIm9ic2VydmFibGVfbGlzdCQwIiwiYmxhY2tib2FyZCQxNCIsIm5saXN0IiwibWl4dHVyZV9hZ19pZCIsInBpZF9ydWxlX2FnZW50X211dGV4IiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgkMCIsInRlc3RfbWFwJDEiLCJhY3Rpb25fbWFwJDAiLCJtX2lkIiwiYWN0aW9uX21hcCQyIiwidGVzdF9tYXAkMiIsIm5saXN0JDAiLCJtZXJnZWRfbWFwJDEiLCJtZXJnZWRfbWFwJDIiLCJsaW5rX211dGV4IiwicnVsZV9hZ19pZDIiLCJydWxlX2FnX2lkMSIsImxfYWdfMSIsImxfYWdfMiIsIm1peHR1cmVfYWdfMSIsInN1YnMkMCIsIm1peHR1cmVfYWdfMiIsImFjdGlvbl9saXN0JDEiLCJ0ZXN0X2xpc3QkMSIsIm1faWQkMCIsImZpY3RpdGlvdXNfbGlzdCQzIiwidW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzJDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QkMSIsImZpY3RpdGlvdXNfbGlzdCQ0IiwibG9nX2luZm8kMTEiLCJlcnJvciQxMyIsIm1lcmdlZF9tYXAkMyIsIm1lcmdlZF9tYXAkNCIsInNpZGVfZWZmZWN0JDIiLCJvYnNlcnZhYmxlX2xpc3QiLCJibGFja2JvYXJkJDEzIiwiYWRkX3N0ZXAiLCJmaW5hbGl6ZSIsImhldXJpc3RpYyIsImFnZW50c19pbl9vYnMiLCJuX3ByZWRpY2F0ZXMiLCJldmVudF9saXN0X29mX3ByZWRpY2F0ZSIsIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUiLCJuX2V2ZW50cyIsIm1hbmRhdG9yeV9ldmVudHMiLCJnZXRfZmljdGl0aW91c19vYnNlcnZhYmxlIiwiZ2V0X3NpZGVfZWZmZWN0IiwiaXNfaWdub3JlZCIsImlzX2ZhaWxlZCIsImlzX3N1Y2NlZWRlZCIsIm51bGxfcG9pbnRlciIsInBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQiLCJpc19iZWZvcmVfYmxhY2tib2FyZCIsImJ1aWxkX3BvaW50ZXIiLCJwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIiwiaXNfYm91bmRhcnkiLCJldmVudF9hZGRyZXNzIiwiYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiaXNfZXhpc3RfZXZlbnQiLCJuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uXyIsInBvaW50ZXJfdG9fbmV4dCIsInZhbHVlX2FmdGVyIiwicG9pbnRlcl90b19wcmV2aW91cyIsIm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwiLCJleGlzdCIsInN0cmluZ19vZl9wb2ludGVyIiwicHJlZGljYXRlX3ZhbHVlIiwicG9pbnRlciIsImJvb2xlYW4kMCIsImNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZCIsInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIiwiY2FzZV92YWx1ZSIsInkkMSIsImxpbmUiLCJmaWxlIiwiZHVtbXlfY2FzZV9pbmZvX3N0YXRpYyIsImR1bW15X2Nhc2VfaW5mb19keW5hbWljIiwiY29ycmVjdF9wb2ludGVyIiwiaW50X3NlaWQiLCJkdW1teV9jYXNlX2luZm8iLCJwcm9maWxpbmdfaW5mbyIsImdldF9ldmVudCIsImdldF9uX2VpZCIsImdldF9zdGFja19kZXB0aCIsImZvcmNlZF9ldmVudHMiLCJzaWRlX2VmZmVjdF9vZl9ldmVudCIsImNhc2VfbGlzdF9vZl9laWQiLCJnZXRfY2FzZSIsImNhc2VfYWRkcmVzcyIsImdldF9zdGF0aWMiLCJhZGRyZXNzIiwiY2FzZSQwIiwic3RhdGljJDAiLCJwcmludF9ldmVudF9jYXNlX2FkZHJlc3MiLCJnZXRfbnByZWRpY2F0ZV9pZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCQwIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMiLCJmb2xsb3dfcG9pbnRlcl9kb3duIiwiZm9sbG93X3BvaW50ZXJfdXAiLCJnZXRfZmlyc3RfbGlua2VkX2V2ZW50IiwiZ2V0X2xhc3RfbGlua2VkX2V2ZW50IiwicHJpbnRfa25vd25fY2FzZSIsInByZWYiLCJpbmYiLCJzdWYiLCJzdHJpbmdfb2ZfdmFsdWUiLCJwYiIsInByaW50X2Fzc2lnbm1lbnQiLCJpJDIiLCJpJDMiLCJpJDQiLCJpJDUiLCJpJDYiLCJpJDciLCJsb2ckMCIsImkkOCIsInByaW50X2JsYWNrYm9hcmQiLCJlcnIiLCJhcnJheSIsImokMiIsImokMCIsInN0YXR1cyIsImokMSIsInN0YWNrIiwiZW1wdHlfc3RhY2siLCJwcmVfYmxhY2tib2FyZCIsImV2ZW50X2Nhc2VfbGlzdCIsIm5fc2VpZCIsInVuc29sdmVkX2J5X2xldmVsIiwibGV2ZWxfb3B0JDEiLCJsZXZlbF9vcHQiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmUiLCJsZXZlbF9vcHQkMCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWQiLCJsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGUiLCJwX2lkJDEiLCJwX2lkIiwic2l6ZSQwIiwic2VpZCQxIiwidHJpcGxlIiwic2l6ZSQxIiwibGV2ZWwkMCIsIm9sZCQwIiwidW5zb2x2ZWQiLCJldmVudF9jYXNlX2FkZHJlc3MiLCJzZWlkJDAiLCJwcmVkX3NpemUiLCJwX2lkJDAiLCJ1bnNvbHZlZF9ieV9sZXZlbCQwIiwibGV2ZWwkMSIsIm1hcCQxIiwibG9nX2luZm8kMTIiLCJmaWN0aXRpb3VzX29icyIsImxvZ19pbmZvJDEzIiwiZXhpc3RfY2FzZSIsInNldF9jYXNlIiwiY2FzZV9hZGRyZXNzJDAiLCJjYXNlX3ZhbHVlJDAiLCJjYXNlX2FkZHJlc3MkMSIsImNhc2VfdmFsdWUkMSIsImNhc2VfYWRkcmVzcyQyIiwib2xkJDEiLCJjYXNlX3ZhbHVlJDIiLCJjYXNlX2FkZHJlc3MkMyIsIm9sZCQyIiwiY2FzZV92YWx1ZSQzIiwiaXNfc2VsZWN0ZWRfZXZlbnQiLCJnZXQiLCJjYXNlJDEiLCJjYXNlJDIiLCJjYXNlX2FkZHJlc3MkNCIsImNhc2VfYWRkcmVzcyQ1IiwiY2FzZSQzIiwibHZsIiwiY2FzZV9hZGRyZXNzJDYiLCJjYXNlJDQiLCJleHBvcnRfYmxhY2tib2FyZF90b194bHMiLCJwcmVmaXgiLCJmaWxlX25hbWUiLCJkZXNjX2NoYW4iLCJyb3dfb2ZfcHJlY29uZGl0aW9uIiwiY29sb3JzIiwiYmFja2NvbG9yIiwiY29sb3IiLCJjb2xvciQwIiwidGV4dGNvbG9yIiwiZ2V0Y2VsbCIsInJvdyIsImNvbCIsInByaW50X2Nhc2UiLCJjb2xvcl9mb250IiwiY29sb3JfYmFjayIsInByaW50X2Nhc2VfZnVuIiwicF9pbmZvIiwicm93X3ByZWNvbmRpdGlvbiIsInJvd19wb3N0Y29uZGl0aW9uIiwibWF5YmVrZXB0IiwiZWlkJDEiLCJzdHJpbmdfZWlkIiwidmFsdWVfYmVmb3JlIiwiY2FuZCIsInN0cmluZ19laWQkMCIsInN0YWNrJDAiLCJzdGFjayQxIiwicmVjb3JkX21vZGlmIiwicmVmaW5lIiwib3ZlcndyaXRlIiwiZGVjIiwiYnJhbmNoIiwicmVzZXRfbGFzdF9icmFuY2hpbmciLCJyZXNldF9pbml0IiwiaXNfbWF4aW1hbF9zb2x1dGlvbiIsInRyYW5zbGF0ZV9ibGFja2JvYXJkIiwic3RlcF9hcnJheSIsInNpZGVfYXJyYXkiLCJwcmludF9zdGFjayIsImV2ZW50X2xpc3QkMiIsImV2ZW50X2FycmF5Iiwia2VwdF9ldmVudHMiLCJrZXB0X2V2ZW50cyQwIiwiZXZlbnRfbGlzdCQwIiwicG9pbnRlciQwIiwicHJldl9ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2X2Nhc2UiLCJwcmV2X2VpZCIsInBvaW50ZXIkMSIsInByZXZfZWlkJDAiLCJrZXB0X2V2ZW50cyQxIiwiZXZlbnRfbGlzdCQxIiwiZXZlbnRzX3RvX2tlZXAiLCJuX2V2ZW50c19yZW1vdmVkIiwiY3V0X2NhdXNhbF9mbG93IiwiaW1wb3J0JDAiLCJwcmVibGFja2JvYXJkIiwicmVmaW5lZF9ldmVudCIsInByZWJsYWNrYm9hcmQkMCIsInRvX3hscyIsInByZWJsYWNrYm9hcmQkMSIsInByZWJsYWNrYm9hcmQkMyIsInRvX3hscyQwIiwic3RyaW5nJDAiLCJwcmVibGFja2JvYXJkJDQiLCJwcmVibGFja2JvYXJkJDIiLCJsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0IiwibG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0IiwiZm9yYmlkZGVuX2V2ZW50cyIsInBhcmFtdGVyIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpIiwiZmlyc3QiLCJzdG9wIiwia19pbml0Iiwia19lbmQiLCJnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnQiLCJuZXh0X2Nob2ljZSIsInByaW9yaXR5JDAiLCJuX3BfaWQiLCJsZXZlbF9vcHQkMiIsImJlc3QkMSIsImJlc3QiLCJncmFkZSIsImJlc3QkMCIsInN0ZXAkMCIsImV2ZW50X2lkIiwiZXZlbnRfaWQkMCIsInByb3BhZ2F0ZV9kb3duIiwiaW5zdHJ1Y3Rpb25fbGlzdCIsInByb3BhZ2F0ZV9saXN0IiwibmV4dF9ldmVudF9jYXNlX2FkZHJlc3MiLCJib29sMiIsIm5leHRfYWN0aW9uIiwibmV4dF90ZXN0IiwicHJlZGljYXRlX3ZhbHVlJDAiLCJjb25qJDAiLCJsb2dfaW5mbyQxNCIsImxvZ19pbmZvJDE1IiwibmV4dF9hY3Rpb24kMCIsIm5leHRfdGVzdCQwIiwibmV4dF9laWQiLCJsb2dfaW5mbyQxNiIsImxvZ19pbmZvJDE3IiwibG9nX2luZm8kMTgiLCJsb2dfaW5mbyQxOSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNCIsImxvZ19pbmZvJDI1IiwiY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUiLCJsb2dfaW5mbyQyMCIsImxvZ19pbmZvJDIxIiwibG9nX2luZm8kMjIiLCJsb2dfaW5mbyQyMyIsImxhc3RfY2hhbmNlX3VwIiwiZXZlbnRfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV9hZGRyZXNzIiwicHJldmlld19jYXNlX3ZhbHVlIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV92YWx1ZSQwIiwicHJldmlld19wcmVkaWNhdGVfdmFsdWUkMCIsImR1bW15X3VwZGF0ZV9vcmRlciIsImxhc3RfY2hhbmNlX3VwJDAiLCJwcm9wYWdhdGVfdXAiLCJsb2dfaW5mbyQzMSIsIm5ld19wcmVkaWNhdGVfdmFsdWUiLCJwcmV2IiwibG9nX2luZm8kMjkiLCJlcnJvciQxNiIsImxvZ19pbmZvJDMwIiwibmV3X3Rlc3QiLCJlcnJvciQxNCIsIm5ld19wcmVkaWNhdGVfdmFsdWUkMCIsImxvZ19pbmZvJDI2IiwiZXJyb3IkMTUiLCJsb2dfaW5mbyQyNyIsImxvZ19pbmZvJDI4IiwibG9nX2luZm8kMzIiLCJsb2dfaW5mbyQzMyIsInByb3BhZ2F0ZSIsImN1dF9jYXNlIiwicG9pbnRlcl9uZXh0IiwicG9pbnRlcl9wcmV2aW91cyIsInJlc3VsdCIsImxvb2tfZG93biIsImxpc3RfdmFsdWVzIiwiY2EiLCJuZXh0X2Nhc2UiLCJwcm9wYWdhdGVfbGlzdCQwIiwibG9va19kb3duJDAiLCJyZWZpbmVfdmFsdWVfYWZ0ZXIiLCJyZWZpbmVfdmFsdWVfYmVmb3JlIiwiZGlzY2FyZF9jYXNlIiwicmVzdWx0JDAiLCJpbnN0cnVjdGlvbl9saXN0JDAiLCJwcm9wYWdhdGVfbGlzdCQxIiwiZ2VuX2V2ZW50IiwiZl9jYXNlIiwic3VjY2VzcyQxIiwic3VjY2VzcyQwIiwic3VjY2VzczIiLCJzdWNjZXNzJDIiLCJhcHBseV9pbnN0cnVjdGlvbiIsImluc3RydWN0aW9uIiwiaW5zdHJ1Y3Rpb25fbGlzdCQzIiwicHJvcGFnYXRlX2xpc3QkMiIsInJlc3VsdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQxIiwiaW5zdHJ1Y3Rpb25fbGlzdCQyIiwic3RlcF9pZCQxIiwiYWRkcmVzcyQwIiwiZW1wdHlfY2hvaWNlX2xpc3QiLCJhc3NpZ25fcmVzdWx0IiwiYXNzaWduX3Jlc3VsdCQwIiwiYmFja3RyYWNrIiwiY2hvaWNlX2xpc3QiLCJjaG9pY2VfbGlzdCQwIiwiY2hvaWNlX2xpc3QkMSIsInN1Ymxpc3QiLCJkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIiwibGlzdF9laWQiLCJ0cmFuc2xhdGVfcmVzdWx0IiwiZmlsdGVyIiwic29sIiwic29sJDAiLCJzb2wkMSIsImV2ZW50c190b19yZW1vdmUiLCJzdWIiLCJjb21wcmVzcyIsImxpc3Rfb3JkZXIiLCJjaG9pY2VfbGlzdCQyIiwiY2hvaWNlX2xpc3QkMyIsImNob2ljZV9saXN0JDQiLCJjaG9pY2VfbGlzdCQ1IiwiY2hvaWNlIiwiY2hvaWNlX2xpc3QkNiIsImNob2ljZV9saXN0JDciLCJzdG9yeV9saXN0JDEiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJnb29kb25lcyIsImdvb2RvbmVzJDAiLCJ0b192aXNpdCQxIiwiYmxhY2tfbGlzdCIsImlzX2JsYWNrX2xpc3RlZCIsImR1bW15X2dyYXBoIiwiY29tcGFyZV9lbHQiLCJxdWlja19jb21wYXJlIiwidDIiLCJhdXgiLCJsMiQxIiwiY29tcGFyZV9jYW5vbmljIiwiZ3JhcGhfb2ZfZ3JpZCIsInN1Y2Nfc2l6ZSIsImxhYmVscyIsImNvbmZsaWN0X3ByZWQiLCJsaXN0MiQyIiwibGlzdDIkMSIsImxpc3QxJDEiLCJjb21wYXJlX25vZGUiLCJwcmVoYXNoIiwid2VpZ2h0JDIiLCJmb3JtZXIkMSIsImZvcm1lciIsIndlaWdodCIsImZvcm1lciQwIiwid3QiLCJ3ZWlnaHQkMCIsIndlaWdodCQxIiwiY2Fub25pY2FsaXplIiwiYXNzbyIsImNhbmRpZGF0ZSIsInRvX2JlYXQiLCJjYW5kaWRhdGUkMCIsInRvX2JlYXQkMCIsImNhbmRpZGF0ZSQxIiwicXIiLCJ0ciIsInRvX2JlYXQkMSIsInZpc2l0IiwiZnJlc2hfcG9zIiwiZnJlc2hfcG9zJDAiLCJzaWJibGluZzEiLCJzaWJibGluZzIiLCJtJDAiLCJjYW5kaWRhdGVzJDEiLCJub3RfYmVzdCIsImNhbmRpZGF0ZXMkMCIsInJlc2lkdWUiLCJmcmVzaCIsImVuY29kaW5nIiwidG9fYmVhdF9hZnRlciIsIm5vdF9iZXN0JDAiLCJyZWNvcmQkMCIsIm5vdF9iZXN0JDEiLCJyZWNvcmQkMSIsInJlY29yZCQyIiwibm90X2Jlc3QkMiIsInRvX2JlYXRfYWZ0ZXIkMCIsInNpYmJsaW5nMSQwIiwidG9fYmVhdCQyIiwiZnJlc2hfcG9zJDEiLCJ0b19iZWF0JDMiLCJnJDAiLCJzaWJibGluZzIkMCIsInRvX2JlYXQkNCIsImxpc3QkMiIsImZyZXNoX3BvcyQyIiwibWFwJDIiLCJ0b19iZWF0JDUiLCJsaXN0JDMiLCJzb3J0X291dGVyIiwic29ydF9pbm5lciIsImNvbXBhcmUkMiIsImdldF9jYW5ub25pY2FsX2Zvcm0iLCJ0YWJsZSIsImFzc29jIiwiY2Fubm9uaWMiLCJjYW5ub25pYyQwIiwidGFibGUkMCIsImNob29zZV9mc3QiLCJpbml0X3RhYmxlIiwicGFyYW1ldGVycyIsImFkZF9zdG9yeSIsInByZXRyYWNlIiwic3RvcnlfaW5mbyIsInRhYmxlJDIiLCJ0YWJsZSQzIiwiZ3JhcGgkMCIsInByZWhhc2gkMSIsImxvZ2dlciQwIiwibG9nZ2VyIiwibm9kZV9raW5kIiwiZGlyZWN0aXZlcyIsImFkZF9zdG9yeV9pbmZvIiwiYXNzb19vcHQiLCJjYW5vbmljIiwidXBkYXRlX2Fzc29jIiwiY2Fub25pY19mb3JtIiwiYXV4X2lubmVyMiIsImNhbm9uaWNfZm9ybSQwIiwidHJlZSIsInRhYmxlJDEiLCJpZCQyIiwidGFibGUkNCIsImF1eF9vdXRlcjIiLCJwcmVoYXNoJDAiLCJjYW5ub25pY19mb3JtIiwiYXNzb2MkMCIsImNhbm5vbmljX2Zvcm0kMCIsImlubmVyIiwidGFibGUkNSIsImF1eF9pbm5lciIsInN1ZmZpeCIsImlubmVyX3RyZWUiLCJpbm5lcl90cmVlJDAiLCJpbm5lcl90cmVlJDEiLCJpbm5lcl90cmVlJDIiLCJpZCQzIiwiaWQkNCIsImF1eF9vdXRlciIsIm91dGVyX3RyZWUiLCJpZCQ1IiwidGFibGUkOCIsImlkJDciLCJpZCQ2IiwiZ3JhcGgkMSIsImFzc29jJDEiLCJ0YWJsZSQ2IiwiaW5uZXIkMCIsInRhYmxlJDciLCJpZCQ4IiwidGFibGUkOSIsImlubmVyJDEiLCJzdWZmaXgkMCIsImFzc29jJDIiLCJpbm5lciQyIiwidGFibGUkMTAiLCJvdXRlcl90cmVlJDAiLCJvdXRlcl90cmVlJDEiLCJoYXNoX2xpc3QiLCJlbGVtZW50c190b19zdG9yZSQyIiwiZWxlbWVudHNfdG9fc3RvcmUkMyIsInN0b3JlZF9lbGVtZW50cyQxIiwibGFzdF9lbGVtZW50JDIiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMyIsImVsZW1lbnRzX3RvX3N0b3JlJDQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ1IiwibGFzdF9lbGVtZW50JDMiLCJzdG9yZWRfZWxlbWVudHMkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ2IiwibGFzdF9lbGVtZW50JDQiLCJkYWciLCJkYWckMCIsImRhZyQxIiwiZGFnJDIiLCJlbGVtZW50c190b19zdG9yZSIsImVsZW1lbnRzX3RvX3N0b3JlJDAiLCJzdG9yZWRfZWxlbWVudHMiLCJsYXN0X2VsZW1lbnQiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMiLCJlbGVtZW50c190b19zdG9yZSQxIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMSIsImxhc3RfZWxlbWVudCQwIiwic3RvcmVkX2VsZW1lbnRzJDAiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMiIsImxhc3RfZWxlbWVudCQxIiwiYWNjJDAiLCJzb3J0X2xpc3QiLCJmbGF0X2xpc3QiLCJsaXN0X291dCIsInR1cGxlIiwiY29tcGFyZV9wYWlyIiwiZmxhdF9saXN0JDAiLCJjb3VudF9zdG9yaWVzIiwiZm9sZF90YWJsZSIsIndlX3NoYWxsIiwid2Vfc2hhbGxfbm90IiwiZ2V0X3ByZXRyYWNlX29mX3RyYWNlIiwic2l6ZV9vZl9wcmV0cmFjZSIsInNldF9hbWJpZ3VpdHlfbGV2ZWwiLCJnZXRfY29tcHJlc3NlZF90cmFjZSIsImlzX2NvbXByZXNzZWRfdHJhY2UiLCJ0cmFjZV9vZl9wcmV0cmFjZV93aXRoX2FtYmlndWkiLCJ3aXRoX2FtYmlndWl0eSIsInRyYWNlX29mX3ByZXRyYWNlIiwiZ2V0X2lkX29mX2V2ZW50IiwiZ2V0X3NpbXVsYXRpb25fdGltZV9vZl9ldmVudCIsInByaW50X3RyYWNlIiwidHJhbnNmb3JtX3RyYWNlX2dlbiIsImxvZ19tZXNzYWdlIiwiZGVidWdfbWVzc2FnZSIsInByb2ZpbGluZ19ldmVudCIsImthcHBhX2hhbmRsZXIiLCJzaGFsbF93ZV9jb21wdXRlIiwic3RoJDAiLCJwcmludF9pZl96ZXJvIiwicHJvZmlsaW5nX2luZm8kMCIsImxvZ19tZXNzYWdlJDAiLCJwcmV0cmFjZSQwIiwicHJvZmlsaW5nX2luZm8kMSIsInRyYWNlJDAiLCJ0cmFjZSQxIiwicHJvZmlsaW5nX2luZm8kMiIsIm1vbmFkaWNfbGlmdCIsIm1ha2VfdW5hbWJpZ3VvdXMiLCJzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmYiLCJzdGgkMSIsImxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyIsInJlcXVpcmVtZW50IiwiZWZmZWN0IiwidHJhY2UkMiIsIm9uX3RoZV9mbHlfY3V0X2luaXQiLCJvbl90aGVfZmx5X2N1dF9zdGVwIiwib25fdGhlX2ZseV9jdXRfZmluYWxpemUiLCJjdXRfc3RhdGUiLCJyZW1vdmVfb2JzX2JlZm9yZSIsImxhc3RfaW5mbyIsImxhc3RfaW5mbyQwIiwibGFzdF9laWQiLCJzY29yZSIsInNjb3JlJDAiLCJyZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIiwicmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyIsInN0b3J5X3RhYmxlIiwiZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFiIiwiZXJyb3JfaW5pdCIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRzX2Zyb21fbSIsImV4dHJhY3Rfb2JzZXJ2YWJsZV9oaXRfZnJvbV9tdSIsImMkMCIsImNhdXNhbF9wcmVmaXhfb2ZfYW5fb2JzZXJ2YWJsZSIsIm9ic2VydmFibGVfaWQiLCJldmVudF9pZF9saXN0IiwiZXhwb3J0X211c2ljYWxfZ3JpZF90b194bHMiLCJwcmludF9tdXNpY2FsX2dyaWQiLCJjcmVhdGVfc3RvcnlfdGFibGUiLCJjbG9zZV9wcm9ncmVzc19iYXJfb3B0IiwicHJpbnRfZmFpbHMiLCJpbmNfZmFpbHMiLCJmb2xkX3N0b3J5X3RhYmxlX2dlbiIsIm5fc3Rvcmllc19pbnB1dCIsIm5fZmFpbHMiLCJwcm9ncmVzc19iYXIkMCIsIm5fZmFpbHMkMCIsImZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzcyIsImZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9nciIsImdldF9jb3VudGVyIiwic3RvcmVfdHJhY2UiLCJjb21wdXRhdGlvbl9pbmZvJDEiLCJvYnNfaW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMiIsInRyYWNlMiIsImNvbXB1dGF0aW9uX2luZm8iLCJjb21wdXRhdGlvbl9pbmZvJDAiLCJjb21wdXRhdGlvbl9pbmZvJDMiLCJjb21wdXRhdGlvbl9pbmZvJDQiLCJzdG9yeV90YWJsZSQwIiwiY29tcHV0YXRpb25faW5mbyQ1IiwiZmxhdHRlbl9zdG9yeV90YWJsZSIsImxpc3Rfb3JkZXIkMCIsInN0cm9uZ2x5X2NvbXByZXNzIiwid2Vha2x5X2NvbXByZXNzIiwiY29udmVydF90cmFjZV9pbnRvX2dyaWQiLCJjb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3QiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2wiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEiLCJlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGEkMCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQxIiwic29ydF9zdG9yeV9saXN0IiwiZXhwb3J0X3N0b3J5X3RhYmxlIiwiaGFzX29icyIsImZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiIsInN0aCQyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOSIsIm5fZmFpbCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQxIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNCIsImJhciQwIiwibl9mYWlsJDAiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNSIsIm91dHB1dF9vcHQiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ2IiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDciLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kOCIsImZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2ZfbyIsImxvZ19zdGVwIiwib2JzZXJ2YWJsZV9oaXQiLCJjYXVzYWxfcGFzdCIsImluZm8kMiIsImNvcHlfbG9nX2luZm8iLCJjb21wYXJlX2Nhbm9uaWNhbF9mb3JtIiwiY29tcHV0ZV9jYW5vbmljYWxfZm9ybSIsImtleV9vZl9ldmVudCIsImNyZWF0ZV9ibGFja19saXN0IiwiYmxhY2tsaXN0IiwiYmxhY2tsaXN0JDAiLCJyZW1vdmVfYmxhY2tsaXN0ZWRfZXZlbnQiLCJsYXN0X2VpZF9pbl9wcmV0cmFjZSIsInByb2ZpbGluZ19zdGF0ZV90b19qc29uIiwiZXJyb3JfbGlzdF90b19qc29uIiwiY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiIsImNtcF9vcHQiLCJjbXBfZmxvYXRfb3B0IiwiY21wX2ludF9vcHQiLCJnZW5fYmluX29wdCIsIm9wIiwiYWRkX2Zsb2F0X29wdCIsIm11bHRfZmxvYXRfb3B0IiwibXVsdF9pbnRfb3B0IiwibWF4X29wdCIsImNmbG93X3BhcmFtZXRlcnMiLCJuZXZlciIsImdsb2JhbF90cmFjZV9zaW1wbGlmaWNhdGlvbiIsInN0b3JlX3Jlc3VsdCIsImdsb2JhbF9zdGF0dXMiLCJzdG9wX25leHQiLCJnbG9iYWxfc3RhdHVzJDAiLCJzdG9wJDAiLCJnbG9iYWxfc3RhdHVzJDEiLCJnbG9iYWxfc3RhdHVzJDIiLCJzdGFydF9pdGVyYXRpb24iLCJlbmRfc2ltcGxpZmljYXRpb24iLCJnZXRfc3RkX2J1ZmZlciIsImNmbG93X3N0YXRlIiwiZ2V0X2Vycl9idWZmZXIiLCJnZXRfcHJvZmlsaW5nX2J1ZmZlciIsImdldF9icmFuY2hfYW5kX2N1dF9zdGF0dXMiLCJnZXRfcHJvZ3Jlc3NfYmFyIiwiZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJnZXRfY2F1c2FsX2Zsb3dfdGFibGUiLCJnZXRfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSIsImdldF93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSIsImdldF9lcnJvcl9saXN0Iiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCIsImNmbG93X3N0YXRlX3B0ciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4Iiwic2F2ZV9wcm9ncmVzc19iYXJfYXV4IiwicmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4Iiwic2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlX2F1Iiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGVfIiwic2F2ZV9lcnJvcl9sb2dfYXV4IiwicmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXgiLCJsb2dnZXJzIiwicmVkaXJlY3RfZXJyX2J1ZmZlcl9hdXgiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyX2F1eCIsInJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciIsImNmbG93X3N0YXRlX3B0cl9vcHQiLCJkYXRhIiwibGlmdF9yZXNldCIsInNhdmVfY2F1c2FsX2Zsb3dfdGFibGUiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUkMCIsInNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSIsInNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9lcnJvcl9saXN0IiwicmVkaXJlY3Rfc3RkX2J1ZmZlciIsInJlZGlyZWN0X2Vycl9idWZmZXIiLCJyZWRpcmVjdF9wcm9maWxpbmdfYnVmZmVyIiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyJDAiLCJpbml0X3NlY3JldF9sb2dfaW5mbyIsImRvX25vdF9sb2ciLCJjb21wcmVzc19hbmRfcHJpbnQiLCJqc19pbnRlcmZhY2UiLCJwYXJhbWV0ZXIkMSIsInBhcmFtZXRlciQxMiIsInBhcmFtZXRlciQyIiwiY2F1c2FsX3RyYWNlX29uIiwid2Vha19jb21wcmVzc2lvbl9vbiIsInN0cm9uZ19jb21wcmVzc2lvbl9vbiIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInBhcmFtZXRlciQzIiwicGFyYW1ldGVyJDQiLCJwYXJhbWV0ZXIkNSIsInBhcmFtZXRlciQ2IiwicGFyYW1ldGVyJDciLCJwYXJhbWV0ZXIkOCIsInBhcmFtZXRlciQ5IiwicGFyYW1ldGVyX2NhdXNhbCIsInBhcmFtZXRlcl93ZWFrIiwicGFyYW1ldGVyX3N0cm9uZyIsInN0ZXBfbGlzdCQwIiwic3Ryb25nJDAiLCJlcnJvciQxOSIsInN0ZXBfbGlzdCQxIiwic3RlcF9saXN0JDIiLCJzdGVwX2xpc3QkMyIsInRyYWNlX2JlZm9yZV9jb21wcmVzc2lvbiIsImNhdXNhbF9zdG9yeV9hcnJheSIsImNhdXNhbF9zdG9yeV9saXN0IiwiY2F1c2FsX3N0b3J5X2xpc3QkMCIsImNhdXNhbF90YWJsZSIsInBhcmFtZXRlcl9kZWVwZXIiLCJldmVudF9saXN0JDMiLCJ3ZWFrbHlfc3RvcnlfdGFibGUiLCJ0YWJsZTIkMCIsInRhYmxlMyQwIiwid2Vha19zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSIsImNhdXNhbF9zdG9yeV90YWJsZSQwIiwid2Vha19zdG9yeV90YWJsZSQwIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDEiLCJlcnJvciQyOSIsImNhdXNhbF9zdG9yeV90YWJsZSQyIiwiZXJyb3IkMzAiLCJuX2NhdXNhbF9zdG9yaWVzIiwicGFyYW1ldGVyJDExIiwibGlzdF9pbmZvIiwid2Vha2x5X3N0b3J5X3RhYmxlJDAiLCJlcnJvciQzMSIsIndlYWtseV9zdG9yeV90YWJsZSQxIiwiZXJyb3IkMzIiLCJuX3dlYWtfc3RvcmllcyIsInBhcmFtZXRlciQxMCIsInJlZmluZWRfZXZlbnRfbGlzdCIsInN0cm9uZ2x5X3N0b3J5X3RhYmxlIiwic3Ryb25nbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDE3IiwiZXJyb3IkMTgiLCJleHBvcnQkMCIsImVycm9yJDIwIiwiZXJyb3IkMjEiLCJlcnJvciQyMiIsImV4cG9ydCQxIiwiZXJyb3IkMjMiLCJlcnJvciQyNCIsImVycm9yJDI1IiwiZXhwb3J0JDIiLCJlcnJvciQyNiIsImVycm9yJDI3IiwiZXJyb3IkMjgiLCJvbl9tZXNzYWdlIiwidGV4dCIsInN0Iiwibm9uZSQwIiwiYiQxIiwid2VhayQwIiwiYiQyIiwiZSQwIiwiZm9sZCIsImNvbXBhcmVfbGlzdCIsImgxIiwiaDIiLCJjb21wYXJlX3N1cGVybGlzdCIsInNvcnQiLCJzdXBlcmxpc3QiLCJkdW1wX3N1cGVyX2xpc3QiLCJjb21wYXJlX2ZzdF90cmlwbGUiLCJzbWFzaCIsImFjY3UkMSIsInRvX2RvJDEiLCJjdXJyZW50JDIiLCJ0b19kbyIsImN1cnJlbnQiLCJ0b19kbyQwIiwiY3VycmVudCQwIiwiY3VycmVudCQxIiwiZXJyb3JfbXNnIiwib3B0IiwicmFuZ2UiLCJ0ZXh0Iiwic3RoIiwic2V2ZXJpdHkiLCJyZXN1bHRfZXJyb3JfbXNnIiwicmVzdWx0X2NvZGUiLCJtZXNzYWdlIiwicmVzdWx0X21lc3NhZ2VzIiwibWVzc2FnZXMiLCJyZXN1bHRfZXJyb3JfZXhjZXB0aW9uIiwiZSIsIm1ldGhvZF9oYW5kbGVyX2Vycm9ycyIsIm1oIiwidW5jYXVnaHQiLCJjYXVnaHQiLCJ4IiwibCIsIm1ldGhvZF9oYW5kbGVyX21lc3NhZ2VzIiwicmVzdWx0X2thc2EiLCJyZXN1bHRfYmluZF9sd3QiLCJvayIsInN0YXR1cyIsInZhbHVlIiwiZGF0YSIsInJlc3VsdF9mb2xkX2x3dCIsImYiLCJpZCIsInQiLCJoIiwicmVzdWx0IiwicmVzdWx0X2NvbWJpbmUiLCJkYXRhXzEiLCJkYXRhX3IiLCJtZDVzdW0iLCJ3cml0ZV9zbmFwc2hvdF9pZCIsInN0cmluZ19vZl9zbmFwc2hvdF9pZCIsImxlbiIsIm9iIiwicmVhZF9zbmFwc2hvdF9pZCIsInNuYXBzaG90X2lkX29mX3N0cmluZyIsInMiLCJ3cml0ZV9zbmFwc2hvdCIsInN0cmluZ19vZl9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc25hcHNob3RfZGV0YWlsIiwic25hcHNob3RfZGV0YWlsX29mX3N0cmluZyIsIndyaXRlX3NuYXBzaG90X2lkX2xpc3QiLCJyZWFkX3NuYXBzaG90X2lkX2xpc3QiLCJzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyIsInNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfc2l0ZV9ncmFwaCIsInN0cmluZ19vZl9zaXRlX2dyYXBoIiwicmVhZF9zaXRlX2dyYXBoIiwic2l0ZV9ncmFwaF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3N0YXRlIiwic3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUiLCJyZWFkX3NpbXVsYXRpb25fc3RhdGUiLCJwIiwibGIiLCJ4JDAiLCJ4JDEiLCJzaW11bGF0aW9uX3N0YXRlX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc2VlZCIsInN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQiLCJyZWFkX3NpbXVsYXRpb25fc2VlZCIsInNpbXVsYXRpb25fc2VlZF9vZl9zdHJpbmciLCJ3cml0ZV9pbnRfbnVsbGFibGUiLCJyZWFkX2ludF9udWxsYWJsZSIsIndyaXRlX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJpc19maXJzdCIsInN0cmluZ19vZl9zaW11bGF0aW9uX3Byb2dyZXNzIiwicmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lJDAiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW4iLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW4kMCIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhYyIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfciIsInBvcyIsImkiLCJmJDAiLCJpJDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJ4JDciLCJ4JDgiLCJ4JDkiLCJ4JDEwIiwic2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUiLCJyZWFkX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSIsIndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwic3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwicmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciIsImZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QiLCJmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGkiLCJmaWVsZF9zaW11bGF0aW9uX3NlZWQiLCJmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQiLCJ3cml0ZV9wbG90Iiwid3JpdGVfZGlucyIsIndyaXRlX2ZpbGVfbGluZXMiLCJ3cml0ZV9zbmFwc2hvdHMiLCJ3cml0ZV9pbnB1dHMiLCJ3cml0ZV9sb2dfbWVzc2FnZXMiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQiLCJyZWFkX3NpbXVsYXRpb25fb3V0cHV0IiwicmVhZF9wbG90IiwicmVhZF9kaW5zIiwicmVhZF9maWxlX2xpbmVzIiwicmVhZF9zbmFwc2hvdHMiLCJyZWFkX2lucHV0cyIsInJlYWRfbG9nX21lc3NhZ2VzIiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2wiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2giLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9sb2dfbWUiLCJzaW11bGF0aW9uX291dHB1dF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiIsInN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudCIsInJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJzaW11bGF0aW9uX2ludGVydmVudGlvbl9vZl9zdHIiLCJ3cml0ZV9vdXRwdXRfOTM0MGFkNiIsInJlYWRfb3V0cHV0XzkzNDBhZDYiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHAiLCJzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmkiLCJ3cml0ZV9zaW11bGF0aW9uX2luZm8iLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvIiwicmVhZF9zaW11bGF0aW9uX2luZm8iLCJmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MiLCJmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0Iiwic2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25faWQiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pZCIsInJlYWRfc2ltdWxhdGlvbl9pZCIsInNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdCIsInN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0IiwicmVhZF9zaW11bGF0aW9uX2FydGlmYWN0IiwiZmllbGRfc2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11Iiwic2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmciLCJ3cml0ZV9zaGFyaW5nX2xldmVsIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJzaGFyaW5nX2xldmVsX29mX3N0cmluZyIsIndyaXRlX3Jlc3VsdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJzdHJpbmdfb2ZfcmVzdWx0IiwicmVhZF9yZXN1bHQiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsInJlc3VsdF9vZl9zdHJpbmciLCJ3cml0ZV9wYXJzaW5nX2NvbXBpbCIsInN0cmluZ19vZl9wYXJzaW5nX2NvbXBpbCIsInJlYWRfcGFyc2luZ19jb21waWwiLCJwYXJzaW5nX2NvbXBpbF9vZl9zdHJpbmciLCJ3cml0ZV9uYnIiLCJzdHJpbmdfb2ZfbmJyIiwicmVhZF9uYnIiLCJuYnJfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX25icl9saXN0IiwicmVhZF9zdHJpbmdfbmJyX2xpc3QiLCJzdGRfdHVwbGUiLCJlbmRfb2ZfdHVwbGUiLCJ4MCIsIngxIiwid3JpdGVfcHJvamVjdF9wYXJzZSIsInN0cmluZ19vZl9wcm9qZWN0X3BhcnNlIiwicmVhZF9wcm9qZWN0X3BhcnNlIiwiZmllbGRfcGF0dGVybl9zaGFyaW5nIiwiZmllbGRfYXN0IiwiZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4iLCJwcm9qZWN0X3BhcnNlX29mX3N0cmluZyIsIndyaXRlX3Byb2plY3RfcGFyYW1ldGVyIiwic3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyIiwicmVhZF9wcm9qZWN0X3BhcmFtZXRlciIsImZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plYyIsInByb2plY3RfcGFyYW1ldGVyX29mX3N0cmluZyIsIndyaXRlX3Bsb3RfbGltaXQiLCJzdHJpbmdfb2ZfcGxvdF9saW1pdCIsInJlYWRfcGxvdF9saW1pdCIsImZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IiwiZmllbGRfcGxvdF9saW1pdF9wb2ludHMiLCJwbG90X2xpbWl0X29mX3N0cmluZyIsInN0cmluZ19vZl9wbG90X3BhcmFtZXRlciIsInBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyIsInN0cmluZ19vZl9wbG90IiwicGxvdF9vZl9zdHJpbmciLCJ3cml0ZV9tZXNzYWdlIiwic3RyaW5nX29mX21lc3NhZ2UiLCJyZWFkX21lc3NhZ2UiLCJtZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2xvZ19tZXNzYWdlIiwic3RyaW5nX29mX2xvZ19tZXNzYWdlIiwicmVhZF9sb2dfbWVzc2FnZSIsImxvZ19tZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2thcHBhX2NvZGUiLCJzdHJpbmdfb2Zfa2FwcGFfY29kZSIsInJlYWRfa2FwcGFfY29kZSIsImthcHBhX2NvZGVfb2Zfc3RyaW5nIiwid3JpdGVfc3RyaW5nX251bGxhYmxlIiwicmVhZF9zdHJpbmdfbnVsbGFibGUiLCJ3cml0ZV9maWxlX2xpbmUiLCJzdHJpbmdfb2ZfZmlsZV9saW5lIiwicmVhZF9maWxlX2xpbmUiLCJmaWVsZF9maWxlX2xpbmVfbmFtZSIsImZpZWxkX2ZpbGVfbGluZV90ZXh0IiwiZmlsZV9saW5lX29mX3N0cmluZyIsIndyaXRlX2ZpbGVfbGluZV9saXN0IiwicmVhZF9maWxlX2xpbmVfbGlzdCIsInN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsIiwiZmlsZV9saW5lX2RldGFpbF9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbGlzdCIsInJlYWRfc3RyaW5nX2xpc3QiLCJzdHJpbmdfb2ZfZmlsZV9saW5lX2NhdGFsb2ciLCJmaWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9lbnZpcm9ubWVudF9pbmZvIiwic3RyaW5nX29mX2Vudmlyb25tZW50X2luZm8iLCJyZWFkX2Vudmlyb25tZW50X2luZm8iLCJmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyIsImZpZWxkX2Vudmlyb25tZW50X2J1aWxkIiwiZW52aXJvbm1lbnRfaW5mb19vZl9zdHJpbmciLCJ3cml0ZV9kaW5faWQiLCJzdHJpbmdfb2ZfZGluX2lkIiwicmVhZF9kaW5faWQiLCJkaW5faWRfb2Zfc3RyaW5nIiwid3JpdGVfZGluX2lkX2xpc3QiLCJyZWFkX2Rpbl9pZF9saXN0Iiwic3RyaW5nX29mX2Rpbl9jYXRhbG9nIiwiZGluX2NhdGFsb2dfb2Zfc3RyaW5nIiwid3JpdGVfZGluIiwic3RyaW5nX29mX2RpbiIsInJlYWRfZGluIiwiZGluX29mX3N0cmluZyIsIm5ld19tYWlsYm94IiwicmVjZWl2ZSIsIm1haWxib3giLCJ0aHJlYWQiLCJ0aHJlYWQkMCIsIm91dCIsInRocmVhZCQxIiwidGhyZWFkJDIiLCJ0aHJlYWQkMyIsInRocmVhZCQ0IiwidGhyZWFkJDUiLCJ0aHJlYWQkNiIsImpzb24iLCJ0aHJlYWQkNyIsImpzb24kMCIsInRocmVhZCQ4IiwianNvbiQxIiwidGhyZWFkJDkiLCJqc29uJDIiLCJ0aHJlYWQkMTAiLCJqc29uJDMiLCJ0aHJlYWQkMTEiLCJqc29uJDQiLCJ0aHJlYWQkMTIiLCJqc29uJDUiLCJ0aHJlYWQkMTMiLCJqc29uJDYiLCJ0aHJlYWQkMTQiLCJqc29uJDciLCJ0aHJlYWQkMTUiLCJ0aHJlYWQkMTYiLCJ0aHJlYWQkMTciLCJ0aHJlYWQkMTgiLCJ0aHJlYWQkMTkiLCJ0aHJlYWQkMjAiLCJ0aHJlYWQkMjEiLCJpc19jb21wdXRpbmciLCJzZWxmXzEiLCJoYW5kbGUiLCJyZXF1ZXN0IiwiZmVlZGVyIiwiYiIsImZpbGVfaWQiLCJmaWxlX2NvbnRlbnQiLCJmaWxlX3Bvc2l0aW9uIiwiYXN0IiwiY29tcGlsIiwiYWNjdXJhY3kiLCJmd2QiLCJid2QiLCJvcmlnaW4iLCJ0b3RhbCIsImZpbGVuYW1lIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJwYXR0ZXJuU2hhcmluZyIsIm92ZXJ3cml0ZXMiLCJwYXVzZSIsInBhcmFtZXRlciIsImludGVydmVudGlvbiIsIndyaXRlX3NuYXBzaG90X2RldGFpbCIsInJlYWRfc25hcHNob3RfZGV0YWlsIiwid3JpdGVfc25hcHNob3RfY2F0YWxvZyIsInJlYWRfc25hcHNob3RfY2F0YWxvZyIsIndyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeSIsInN0cmluZ19vZl9zaW11bGF0aW9uX2VmZmljaWVuYyIsInJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5Iiwic2ltdWxhdGlvbl9lZmZpY2llbmN5X29mX3N0cmluIiwid3JpdGVfYXBpX3Jlc3VsdCIsInN0cmluZ19vZl9hcGlfcmVzdWx0IiwicmVhZF9hcGlfcmVzdWx0IiwiYXBpX3Jlc3VsdF9vZl9zdHJpbmciLCJ3cml0ZV9hcGlfbWVzc2FnZSIsInN0cmluZ19vZl9hcGlfbWVzc2FnZSIsInJlYWRfYXBpX21lc3NhZ2UiLCJhcGlfbWVzc2FnZV9vZl9zdHJpbmciLCJ3cml0ZV9hcGlfbWVzc2FnZV9saXN0IiwicmVhZF9hcGlfbWVzc2FnZV9saXN0Iiwid3JpdGVfZmlsZV9saW5lX2NhdGFsb2ciLCJyZWFkX2ZpbGVfbGluZV9jYXRhbG9nIiwid3JpdGVfZGluX2NhdGFsb2ciLCJyZWFkX2Rpbl9jYXRhbG9nIiwid3JpdGVfcmVzdF9yZXNwb25zZV9jb250ZW50IiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwic3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVuIiwicmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQiLCJ4JDM1IiwieCQxNyIsIngkMjYiLCJ4JDI1IiwieCQyNCIsIngkMjMiLCJ4JDIyIiwieCQyMSIsIngkMjAiLCJ4JDE5IiwieCQxOCIsIngkMzQiLCJ4JDMzIiwieCQzMiIsIngkMzEiLCJ4JDMwIiwieCQyOSIsIngkMjgiLCJ4JDI3IiwicmVzdF9yZXNwb25zZV9jb250ZW50X29mX3N0cmluIiwid3JpdGVfcmVzdWx0XzRjYTZiOGYiLCJyZWFkX3Jlc3VsdF80Y2E2YjhmIiwic3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UiLCJyZXN0X3Jlc3BvbnNlX29mX3N0cmluZyIsIndyaXRlX3Bsb3RfcGFyYW1ldGVyIiwicmVhZF9wbG90X3BhcmFtZXRlciIsIndyaXRlX3Jlc3RfcmVxdWVzdCIsInN0cmluZ19vZl9yZXN0X3JlcXVlc3QiLCJyZWFkX3Jlc3RfcmVxdWVzdCIsInJlc3RfcmVxdWVzdF9vZl9zdHJpbmciLCJ3cml0ZV9yZXNwb25zZV9jb250ZW50Iiwic3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQiLCJyZWFkX3Jlc3BvbnNlX2NvbnRlbnQiLCJyZXNwb25zZV9jb250ZW50X29mX3N0cmluZyIsIndyaXRlX3Jlc3VsdF84OTBkOWZlIiwicmVhZF9yZXN1bHRfODkwZDlmZSIsInN0cmluZ19vZl9yZXNwb25zZSIsInJlc3BvbnNlX29mX3N0cmluZyIsIndyaXRlX3JlcXVlc3QiLCJzdHJpbmdfb2ZfcmVxdWVzdCIsInJlYWRfcmVxdWVzdCIsInJlcXVlc3Rfb2Zfc3RyaW5nIiwid3JpdGVfaWQiLCJzdHJpbmdfb2ZfaWQiLCJyZWFkX2lkIiwiaWRfb2Zfc3RyaW5nIiwid3JpdGVfZGF0YSIsInJlYWRfZGF0YSIsImZpZWxkX2lkIiwiZmllbGRfZGF0YSIsIndyaXRlX2ZpbGVfbGluZV9kZXRhaWwiLCJyZWFkX2ZpbGVfbGluZV9kZXRhaWwiLCJvbl9tZXNzYWdlIiwibWFuYWdlciIsInBvc3RfbWVzc2FnZSIsInRleHRfbWVzc2FnZSIsImhhbmRsZXIiLCJwYWNrIiwibWVzc2FnZSQwIiwiZmlsZV9saW5lX2lkIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJkaW5faWQiLCJ2YXJpYWJsZV9vdmVyd3JpdHRlbiIsInBhdHRlcm5fc2hhcmluZyIsInBsb3RfcGFyYW1ldGVyIiwic25hcHNob3RfaWQiLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsInNpbXVsYXRpb25fcGFyYW1ldGVyJDAiLCJyZXNwb25zZSIsInBhdXNlX2NvbmRpdGlvbiIsImZpbGVfbGluZV9saXN0IiwiZmx1eF9tYXBfaWQiLCJmbHV4X21hcCIsImxvZ19tZXNzYWdlIiwicGxvdCIsInNuYXBzaG90Iiwic2ltdWxhdGlvbl9zdGF0dXMiLCJlZmZpY2llbmN5IiwiaW5mbyIsInNpbXVsYXRpb25faWQiLCJzZWxmXzIiLCJyZXNwb25zZV90ZXh0IiwibWFpbGJveGVzIiwibWFpbGJveGVzJDAiLCJtZXNzYWdlX3RleHQiLCJhcGlfc25hcHNob3RfZG90IiwiYXBpX3NuYXBzaG90X2thcHBhIiwiYXBpX3NpbXVsYXRpb25fc3RhdHVzIiwicHJvZ3Jlc3MiLCJkZXRhaWwiLCJvdXRwdXQiLCJhZ2VudF9jb3VudCIsInNwZWNpZXMiLCJ3cml0ZTEiLCJvYyIsIm4iLCJ3cml0ZTIiLCJ3cml0ZTQiLCJ3cml0ZTRfaW50Iiwid3JpdGVzdHJpbmciLCJkb3N0aW1lX29mX3VuaXh0aW1lIiwidG0iLCJvcGVuX291dCIsImNvbW1lbnQiLCJjbG9zZV9vdXQiLCJvZmlsZSIsInN0YXJ0X2NkIiwidmVyc2lvbiIsImRhdGUiLCJ0aW1lIiwiY2Rfc2l6ZSIsIm51bV9lbnRyaWVzIiwiYWRkX2VudHJ5X2hlYWRlciIsImV4dHJhIiwibGV2ZWwiLCJtdGltZSIsImFkZF9kYXRhX2Rlc2NyaXB0b3IiLCJjcmMiLCJjb21wcl9zaXplIiwidW5jb21wcl9zaXplIiwiZW50cnkiLCJhZGRfZW50cnkiLCJuYW1lIiwic3RoJDAiLCJzdGgkMSIsInN0aCQyIiwiY3JjJDAiLCJlJDAiLCJhZGRfZW50cnlfZ2VuZXJhdG9yIiwiZmluaXNoZWQiLCJjaGVjayIsImJ1ZiIsIm1zZ19wcm9jZXNzX25vdF9wYXVzZWQiLCJleG4iLCJjYXRjaF9lcnJvciIsInJhbmdlJDAiLCJyYW5nZSQxIiwibWVzc2FnZSQxIiwiZXJyb3IiLCJtZXNzYWdlJDIiLCJwYXJzZSIsInZhcl9vdmVyd3JpdGUiLCJzeXN0ZW1fcHJvY2VzcyIsInlpZWxkJDAiLCJsb2dfYnVmZmVyIiwibG9nX2Zvcm0iLCJpbnB1dHNfYnVmZmVyIiwiaW5wdXRzX2Zvcm0iLCJjb25mIiwid2FybmluZyIsIm1zZyIsImFzdF9jb21waWxlZF9kYXRhIiwibGFzdHlpZWxkIiwib3V0cHV0cyIsImluaXRfbCIsIndpdGhfdHJhY2UiLCJlbnYiLCJjb3VudGVyIiwidGhlU2VlZCIsInRoZVNlZWQkMCIsInJhbmRvbV9zdGF0ZSIsInN0YXRlIiwiZ3JhcGgiLCJtYXhDb25zZWN1dGl2ZUNsYXNoIiwiZHVtcElmRGVhZGxvY2tlZCIsImNvbnRhY3RfbWFwIiwic2ltdWxhdGlvbiIsImZsdXhfbmFtZSIsIm5ld19vYnNlcnZhYmxlcyIsImZpbGVfbGluZSIsIm5hIiwibGluZXMiLCJzdCIsImFscmVhZHlfdGhlcmUiLCJzbmFwc2hvdF9maWxlIiwibWl4IiwiZmlsZSIsImZpbmFsaXplX3NpbXVsYXRpb24iLCJydW5fc2ltdWxhdGlvbiIsInN0b3BwZWQiLCJyc3RvcCIsIml0ZXIiLCJzdG9wIiwic3RvcCQwIiwic3RhcnQiLCJsZXhidWYiLCJzZWVkIiwiZmlyc3Rfb2JzIiwicGVydHVyYmF0aW9uIiwiZm9ybWF0dGVyIiwidiIsImNvbnRpbnVlJDAiLCJnZXRfcmF3X3RyYWNlIiwiZ2V0X3Jhd19hc3QiLCJtJDEiLCJtJDAiLCJtIiwiYmluZF9zaW11bGF0aW9uIiwic2ltdWxhdGlvbiQwIiwiZGV0YWlsX3Byb2plY3Rpb24iLCJwcm9qZWN0aW9uIiwic2ltdWxhdGlvbl9kZXRhaWwiLCJlcnJvcnMiLCJmaWxlX2xpbmVzIiwiZmlsZV9saW5lX2NhdGFsb2ciLCJmbHV4X21hcF9jYXRhbG9nIiwiZmx1eF9tYXBzX2xpc3QiLCJzZWxmXzMiLCJzZWxmXzQiLCJwbG90X2xpbWl0IiwicGxvdF90aW1lX3NlcmllcyIsInBsb3RfZGV0YWlsX3NpemUiLCJwbG90X2xpbWl0X29mZnNldCIsInBsb3RfbGltaXRfcG9pbnRzIiwib2Zmc2V0IiwibmIiLCJuYiQwIiwibmV3X3Bsb3RfdGltZV9zZXJpZXMiLCJzZWxmXzUiLCJzbmFwc2hvdHMiLCJzbmFwc2hvdF9jYXRhbG9nIiwiYWNjIiwic25hcHNob3RfbGlzdCIsInNlbGZfNiIsImhhcmFraXJpIiwic2VlZCQwIiwic2ltdWxhdGlvbl9zZWVkIiwiZmFjYWRlIiwiY29udGVudCIsImZsdXgiLCJkaW5fbmFtZSIsIm5hbWUkMCIsInNpbXVsYXRpb25fcGVydHVyYmF0aW9uIiwicHJpbnRfY29tcHJlc3Npb25fbW9kZXMiLCJzdHJvbmciLCJ3ZWFrIiwiY2F1c2FsIiwiaW5pdGlhbF9zdGF0ZSIsInVwZGF0ZV9zdGF0ZSIsImluaXRfc3RhdGUiLCJjdXJyZW50X3N0YXRlIiwibSQyIiwiYyIsImluZm9zIiwiY20iLCJ0cmFjZV90ZXh0IiwicmVxdWVzdCQ0IiwicmVxdWVzdCQzIiwicmVxdWVzdCQyIiwicmVxdWVzdCQxIiwicmVxdWVzdCQwIiwiZXJyIiwiaWQkMCIsInBvc3QiLCJvdXRidWYiLCJvdXRiIiwiYSIsIm8iLCJiJDAiLCJpc19ydW5uaW5nIiwicnVudGltZV9zdGF0ZSIsInNldF9zdGF0ZV9lcnJvciIsInN0YXRlX2Vycm9yIiwiaGFzX2Vycm9ycyIsImFkZF9lcnJvciIsImxvY2F0aW9uIiwiZXJyb3JzIiwiY3VycmVudF9zdGF0ZV9lcnJvciIsIm5ld19zdGF0ZV9lcnJvciIsImFjYyIsInZhbHVlIiwid3JhcCIsIm9wdCIsInIiLCJzdGgiLCJhcHBlbmQiLCJ1cmxfYXJncyIsIm9wdCIsImtleSIsInN0aCIsImRlZmF1bHQkMCIsImFyZ3MiLCJrIiwic29tZSIsImNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdCIsImxhdW5jaF9hZ2VudCIsIm9uQ2xvc2UiLCJtZXNzYWdlX2RlbGltaXRlciIsImNvbW1hbmQiLCJhcmdzIiwiaGFuZGxlciIsImJ1ZmZlciIsIm1zZyIsIm1zZyQwIiwicHJlZml4Iiwic3VmZml4IiwibXNnJDEiLCJjb25maWd1cmF0aW9uIiwieCIsInNlbGZfMSIsInRpbWVvdXQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInN3aXRjaF9yZSIsInN0b3JfY29tbWFuZCIsInN3aXRjaF9tYWlsYm94IiwidXBkYXRlX3N0b3Jfc3RhdGUiLCJzdG9yX3N0YXRlIiwicnVubmluZ19yZWYiLCJzdG9yX3Byb2Nlc3MiLCJtZXNzYWdlX3RleHQiLCJyZXF1ZXN0X3VwIiwidiIsInJlcXVlc3RfZG93biIsImlzX2NvbXB1dGluZyIsInNlbmQiLCJ0aW1lb3V0IiwicmVxdWVzdF9jb3VudCIsInVybCIsIm1ldGgiLCJkYXRhIiwiaHlkcmF0ZSIsImZlZWRlciIsInJlcGx5IiwiaGFuZGxlciIsInN0YXR1cyIsInJlc3BvbnNlX3RleHQiLCJyZXN1bHRfY29kZSIsInJlc3VsdF9jb2RlJDAiLCJyZXNwb25zZSIsInJlc3VsdCIsImthc2FfZXJyb3IiLCJsIiwiYWNjIiwibSIsInNlbGZfMSIsInMiLCJmaWxlX2xpbmVfaWQiLCJsaW5lcyIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwiZmx1eF9tYXBfaWQiLCJzbmFwc2hvdF9pZCIsInBsb3RfbGltaXQiLCJwbG90X2xpbWl0X3BvaW50cyIsInBsb3RfbGltaXRfb2Zmc2V0IiwidmFsdWUiLCJrZXkiLCJhcmdzIiwicGF1c2VfY29uZGl0aW9uIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJwcm9qZWN0cyIsInByb2plY3RfcGFyYW1ldGVyIiwicHJvamVjdF9pZCIsInBhdHRlcm5TaGFyaW5nIiwiZiIsInZhIiwidnIiLCJwb3MiLCJpZCIsImNvbnRlbnQiLCJmaWxlX2lkIiwiYXN0IiwieCIsIngkMCIsImNvbXBpbCIsImFjY3VyYWN5IiwiYWNjdXJhY3kkMCIsImZ3ZCIsImJ3ZCIsIm9yaWdpbiIsInRvdGFsIiwiaSIsImkkMCIsImkkMSIsImkkMiIsInNob3J0X2lkX29wdCIsImZpbGVuYW1lIiwibGluZSIsImNociIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiYSIsImIiLCJvcHRpb25zIiwiYSQwIiwid2VhayIsImNhdXNhbCIsImNsaWVudF9pZCIsImdldF9jbGllbnRfaWQiLCJzZXRfY2xpZW50X2lkIiwiY2xpZW50X2lkJDAiLCJjdXJyZW50Rm9udFNpemUiLCJzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0IiwidiIsInN0IiwidXBkYXRlRm9udFNpemUiLCJkZWx0YSIsInNldF9zeW5jaCIsInN5bmNoIiwiYWdlbnRfY29sb3JpbmciLCJpbml0IiwiY2xpZW50X2lkcyIsInN5bmMiLCJzZWxmXzEiLCJ0aW1lb3V0IiwibWVzc2FnZV90ZXh0IiwicmVzcG9uc2VfdGV4dCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsIm91dCIsImxvYWQiLCJpbml0IiwiaW5mb3MiLCJlIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsIngiLCJrYXNhX3dvcmtlciIsImthc2FfbWFpbGJveCIsImthbW9oYV93b3JrZXIiLCJrYW1vaGFfbWFpbGJveCIsImthc3Rvcl93b3JrZXIiLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJzcGVjX2xhYmVsIiwicmVtb3RlIiwic3BlY19pZCIsImh0dHAiLCJjbGkiLCJyZWFkX3NwZWMiLCJ1cmwiLCJjbGVhbmVkX3VybCIsImNsZWFuZWQiLCJsZW5ndGgiLCJwYXJzZWQiLCJwcm90b2NvbCIsImh0dHBzJDEiLCJmaWxlJDEiLCJodHRwJDEiLCJodHRwcyQwIiwiZmlsZSQwIiwibGFiZWwiLCJodHRwJDAiLCJodHRwcyIsImZpbGUiLCJzZWxmXzEiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJpbmZvcyIsImUiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwieCIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsImV4biIsIm1zZyIsIm1lc3NhZ2VfdGV4dCIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwidmVyc2lvbl91cmwiLCJmcmFtZSIsImlzX3ZhbGlkX3NlcnZlciIsImVycm9yX21zZyIsIm1hbmFnZXIiLCJqc19ub2RlX3J1bnRpbWUiLCJjcmVhdGVfc3BlYyIsImlkIiwicnVudGltZSIsImN1cnJlbnRfc3RhdGUkMCIsImN1cnJlbnRfc3RhdGUiLCJtb2RlbCIsImhvc3RzIiwidXJscyIsInVybHMkMCIsInVybCQwIiwicHJvamVjdHMiLCJzeW5jIiwiaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnMiLCJwcm9qZWN0X2VxdWFsIiwiYSIsImIiLCJzdGF0ZV9lcXVhbCIsIngiLCJ5IiwibW9kZWxfZXF1YWwiLCJpbml0X3N0YXRlIiwic2V0X3N0YXRlIiwic3RhdGUiLCJ1cGRhdGVfcGFyYW1ldGVycyIsImhhbmRsZXIiLCJzdCIsInByb2oiLCJwcm9qZWN0X3BhcmFtZXRlcnMiLCJkZWZhdWx0X3BhcmFtZXRlcnMiLCJwcm9qZWN0X3BhcmFtZXRlcnMkMCIsImRlZmF1bHRfcGFyYW1ldGVycyQwIiwic2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCIsInBhIiwibHMiLCJ2YSIsInNldF9wbG90X3BlcmlvZCIsInBsb3RfcGVyaW9kIiwicGFyYW0iLCJzZXRfcGF1c2VfY29uZGl0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwic2V0X3NlZWQiLCJzZWVkIiwic2V0X3N0b3JlX3RyYWNlIiwic3RvcmVfdHJhY2UiLCJzZXRfc2hvd19kZWFkX3J1bGVzIiwic2hvd19kZWFkX3J1bGVzIiwic2V0X3Nob3dfZGVhZF9hZ2VudHMiLCJzaG93X2RlYWRfYWdlbnRzIiwic2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlIiwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhIiwiYWRkX3Byb2plY3QiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwic3RhdGVfdmEiLCJjYXRhbG9nIiwicHJvamVjdF9jYXRhbG9nIiwibWUiLCJvdXQiLCJwcm9qZWN0X21hbmFnZXIiLCJzZXRfY29tcHV0ZXMiLCJwcm9qZWN0X2lzX2NvbXB1dGluZyIsInNldHRlciIsInByb2plY3Rfd2F0Y2hlcl9jYW5jZWwiLCJkZWxheSIsImxvb3AiLCJwYXJhbXMiLCJjcmVhdGVfcHJvamVjdCIsInNldF9wcm9qZWN0IiwiZHVtbXlfbW9kZWwiLCJtb2RlbCIsIm1vZGVsX2NhdGFsb2ciLCJwIiwibW9kZWxfcGFyYW1ldGVycyIsInN5bmMiLCJjdXJyZW50IiwicmVtb3ZlX3Byb2plY3QiLCJzdGF0ZSQwIiwibWFuYWdlciIsIm0iLCJ2IiwiaCIsInByb2plY3RfY3VycmVudCIsIm91dCQwIiwiaW5pdCIsImV4aXN0aW5nX3Byb2plY3RzIiwiZGVmYXVsdCQwIiwiYXJnX3Bsb3RfcGVyaW9kIiwiZGVmYXVsdCQxIiwiYXJnX3BhdXNlX2NvbmRpdGlvbiIsImRlZmF1bHQkMiIsImFyZ19tb2RlbF9zZWVkIiwiZGVmYXVsdCQzIiwiYXJnX3N0b3JlX3RyYWNlIiwiZGVmYXVsdCQ0IiwiYXJnX3Nob3dfZGVhZF9ydWxlcyIsImRlZmF1bHQkNSIsImFyZ19zaG93X2RlYWRfYWdlbnRzIiwiZGVmYXVsdCQ2IiwiYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpIiwiYXJnIiwiYXJnJDAiLCJtc2ciLCJoJDAiLCJhcmckMSIsImFyZyQyIiwiaCQxIiwibXNnJDAiLCJoJDIiLCJoJDMiLCJoJDQiLCJoJDUiLCJwcm9qZWN0cyIsImFkZF9wcm9qZWN0cyIsInByb2plY3RzJDAiLCJwcm9qZWN0IiwiZXJyb3JzIiwiZXZhbF93aXRoX3Byb2plY3QiLCJsYWJlbCIsImVycm9yX21zZyIsIm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIiwiZXEiLCJvbiIsIm9wdCIsImluaXRfb3RoZXJzIiwib3RoZXJzIiwic3RoIiwib3RoZXJzX2VxIiwiZXFfcGFpciIsIm90aCIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ciLCJlcnJvcl9tc2ckMCIsImR1bW15X2N1cnNvcl9wb3MiLCJibGFua19zdGF0ZSIsInNldF9kaXJlY3Rvcnlfc3RhdGUiLCJtb2RlbCIsInJlZnJlc2hfZmlsZV9ob29rIiwicmVnaXN0ZXJfcmVmcmVzaF9maWxlX2hvb2siLCJ4IiwiY3VycmVudF9maWxlbmFtZSIsIm0iLCJuYW1lIiwid2l0aF9jdXJyZW50X3BvcyIsImVxIiwib3B0IiwiZiIsImRlZmF1bHQkMCIsInN0aCIsIm9uIiwid2l0aF9jdXJyZW50X2ZpbGUiLCJzdGF0ZSIsImFjdGl2ZSIsImdldF9maWxlIiwidGV4dCIsIm5hbWUkMCIsIm1hbmFnZXIiLCJyYW5rIiwic2VuZF9yZWZyZXNoIiwibGluZSIsIm91dF9vZl9zeW5jIiwiZmlsZW5hbWUiLCJjb250ZW50IiwidXBkYXRlX2RpcmVjdG9yeSIsInJlc2V0IiwiY3VycmVudCIsImNhdGFsb2ciLCJkaXJlY3RvcnkiLCJhY2MiLCJpZCIsInBvc2l0aW9uIiwiY3JlYXRlX2ZpbGUiLCJtYXRjaGluZ19maWxlIiwiZmlsZV9tZXRhZGF0YSIsIm1ldGFkYXRhIiwibWF4X3BvcyIsInNlbGVjdF9maWxlIiwidCIsInNldF9jb250ZW50Iiwic2V0X2NvbXBpbGUiLCJmaWxlX2lkIiwiY29tcGlsZSIsInJhbmskMCIsInJlbW92ZV9maWxlIiwibG9jYWwiLCJ5IiwiZG9fYV9tb3ZlIiwieCQwIiwiY3Vyc29yX3BvcyIsInBvcyIsInNldF9wb3NpdGlvbiIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwib3JkZXJfZmlsZSIsImluZGV4IiwidGFpbCIsImN1cnNvcl9hY3Rpdml0eSIsImNoIiwidiIsInN5bmMiLCJjYW5kIiwibG9hZF9tb2RlbHMiLCJtb2RlbHMiLCJhZGRfbW9kZWxzIiwibG9hZF9maWxlIiwibW9kZWxzJDAiLCJlcnJvcnMiLCJtc2ciLCJ1IiwiaCIsImZpbGVjb250ZW50IiwiaW5pdCIsImVycm9yX21zZyQ4IiwiZXJyb3JfbXNnJDciLCJlcnJvcl9tc2ckNiIsImVycm9yX21zZyQ1IiwiZXJyb3JfbXNnJDQiLCJlcnJvcl9tc2ckMyIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ckMCIsImVycm9yX21zZyIsImR1bW15X21vZGVsIiwidF9zaW11bGF0aW9uX2luZm8iLCJzaW11bGF0aW9uIiwic2ltdWxhdGlvbl9pbmZvIiwibW9kZWxfc3RhdGVfdG9fc3RyaW5nIiwibW9kZWxfc2ltdWxhdGlvbl9pbmZvIiwibW9kZWwiLCJtb2RlbF9zaW11bGF0aW9uX3N0YXRlIiwic2V0X3N0YXRlIiwic3RhdGUiLCJ1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb25fc3RhdGUiLCJldmFsX3dpdGhfc2ltX21hbmFnZXIiLCJsYWJlbCIsImhhbmRsZXIiLCJwcm9qZWN0X2hhbmRsZXIiLCJtYW5hZ2VyIiwiZmFpbF9sd3QiLCJldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8iLCJvcHQiLCJzdGgiLCJzdG9wcGVkIiwic3RoJDAiLCJpbml0aWFsaXppbmciLCJzdGgkMSIsInJlYWR5IiwicyIsImV2YWxfd2hlbl9yZWFkeSIsInNsZWVwX3RpbWUiLCJzeW5jIiwicmVmcmVzaCIsImluaXQiLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsIm9uX2Vycm9yIiwiZXJyb3JfbXNncyIsInNpbXVsYXRpb25fc3RhdHVzIiwiZXJyb3IiLCJtc2ciLCJtZXNzYWdlIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJjb2RlIiwib3V0IiwicmVmcmVzaCIsInIiLCJyJDAiLCJyJDEiLCJjcmVhdGVfcHJvamVjdCIsInByb2plY3RfaWQiLCJzZXRfcHJvamVjdCIsImNsb3NlX3Byb2plY3QiLCJzZXRfbWFuYWdlciIsInJ1bnRpbWVfaWQiLCJjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19tb2RhbF9pZCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZCIsInByZWZlcmVuY2VzX2J1dHRvbiIsIm9wdGlvbl9zZWVkX2lucHV0Iiwib3B0aW9uX3dpdGh0cmFjZSIsIm9wdGlvbl93aXRoZGVhZHJ1bGVzIiwib3B0aW9uX3dpdGhkZWFkYWdlbnRzIiwib3B0aW9uX3dpdGhpcnJldmVyc2libGUiLCJkZWNyZWFzZV9mb250IiwiaW5jcmVhc2VfZm9udCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCIsIm9wdGlvbl9odHRwX3N5bmNoIiwibGlzdF90IiwiY3VycmVudF9pZCIsInNwZWMiLCJzcGVjX2lkIiwiYmFja2VuZF9vcHRpb25zIiwiYmFja2VuZF9zZWxlY3QiLCJib2RpZXMiLCJzZXRfYnV0dG9uIiwic2F2ZV9idXR0b24iLCJoZWFkIiwiYm9keSIsImZvb3QiLCJtb2RhbCIsImNvbnRlbnQiLCJzZXRfYWN0aW9uIiwic2V0dGluZ3NfY2xpZW50X2lkIiwiaXNfY2hlY2tlZCIsInZhbHVlIiwibW9kZWxfc2VlZCIsIm9ubG9hZCIsInNwIiwidG9nZ2xlX2VsZW1lbnQiLCJwcm9qZWN0aW9uIiwiY29udGVudCIsIm1vZGVsIiwib3B0aW9uX2xhYmVsIiwibGFiZWwiLCJleHBvcnRfY29udHJvbHMiLCJleHBvcnRfc2VsZWN0X2lkIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiZXhwb3J0X2Zvcm1hdHMiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwiZm9ybWF0IiwiZG9jdW1lbnQiLCJsYWJlbF9uZXdzIiwidGFiX2lzX2FjdGl2ZSIsImNvdW50ZXIiLCJzaW11bGF0aW9uX2luZm8iLCJsYXN0X3ZhbHVlIiwidGFiX2FjdGl2ZSIsInYiLCJiYWRnZSIsImNvdW50IiwiYXJndW1lbnRzJDAiLCJrZXkiLCJrIiwidmVyc2lvbiIsIm9wdCIsInN0aCIsInRlc3QiLCJkZXYiLCJ0ZXN0JDAiLCJuYXZsaSIsImZvcmNlX2NsYXNzIiwiZGVjb3JhdGlvbnMiLCJkZWZhdWx0X2F0dHJpYnV0ZXMiLCJsIiwiYXR0cmlidXRlcyIsInRleHQiLCJuYXZ0YWJzIiwibmF2X3RhYl9pZCIsInQiLCJ0aSIsImxpIiwiYV9jbGFzcyIsIm9uZW5hdmNvbnRlbnQiLCJhY3RpdmUiLCJjbGFzc2VzIiwibmF2Y29udGVudCIsImlkIiwiYyIsImNsIiwiaWQkMCIsImlkJDEiLCJsZXZlbCIsImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImZhdGFsIiwiZXh0cmFjdCIsInZhbHVlIiwidmFsdWUkMCIsImZlYXR1cmVzIiwiZGVmYXVsdCQwIiwiZmVhdHVyZSIsIm1hdGNoZXMiLCJpbnB1dF9jaGFuZ2UiLCJzaWduYWxfaGFuZGxlciIsImlkX2RvbSIsImNyZWF0ZV9tb2RhbCIsInRpdGxlX2xhYmVsIiwiYm9keSIsInN1Ym1pdF9sYWJlbCIsImJ1dHRvbiIsImZvcm0iLCJwcm9qZWN0X2lkX21vZGFsX2lkIiwicHJvamVjdF9pZF9pbnB1dCIsImxpX25ldyIsImxpX3ByZWZzIiwiY29udGVudCIsInNldHRpbmdzX2NsaWVudF9pZCIsIm1vZGVsIiwiYWNjIiwibW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmciLCJtb2RlbF9wcm9qZWN0X2lkIiwiY3VycmVudF9wcm9qZWN0X2lkIiwibGlfY2xhc3MiLCJzcGFuX2Nsb3NlIiwiZXZlbnQiLCJjbGFzc2VzIiwiYiIsImNvbXB1dGluZyIsImFfcHJvamVjdCIsIm9ubG9hZCIsIm9ucmVzaXplIiwic2V0X21vZGVsX2ludGVydmVudGlvbiIsIm1vZGVsX2ludGVydmVudGlvbiIsImNvbnRpbnVlX3NpbXVsYXRpb24iLCJwYXVzZV9jb25kaXRpb24iLCJwYXVzZV9zaW11bGF0aW9uIiwic3RvcF9zaW11bGF0aW9uIiwic3RhcnRfc2ltdWxhdGlvbiIsInBhcmFtJDAiLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsImludGVydmVuZV9zaW11bGF0aW9uIiwibW9kZWxfcGVydHVyYmF0aW9uIiwidGV4dCIsImZvY3VzX3JhbmdlIiwicmFuZ2UiLCJmaWxlX2lkIiwibGluZSIsInNpbXVsYXRpb25fdHJhY2UiLCJtYW5hZ2VyIiwiZGF0YV9zdHJpbmciLCJkYXRhIiwic2ltdWxhdGlvbl9vdXRwdXRzIiwiZGF0YV9iaWdzdHJpbmciLCJoaWRkZW5fY2xhc3MiLCJ2aXNpYmxlX2NsYXNzIiwiaWQiLCJpZCQwIiwiaWQkMSIsIm1lc3NhZ2VfbmF2X2luY19pZCIsIm1lc3NhZ2VfbmF2X2RlY19pZCIsIm1lc3NhZ2VfZmlsZV9sYWJlbF9pZCIsImlkJDIiLCJpZCQzIiwiaWQkNCIsImlkJDUiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwidmlzaWJsZV9vbl9zdGF0ZXMiLCJvcHQiLCJzdGgiLCJhX2NsYXNzIiwibW9kZWwiLCJjdXJyZW50X3N0YXRlIiwiaW5wdXQiLCJidXR0b24iLCJmb3JtIiwic2lnbmFsX2NoYW5nZSIsInNpZ25hbF9oYW5kbGVyIiwibSIsImlucHV0JDAiLCJkb20iLCJ2YWx1ZSIsIm4iLCJsZW5ndGgiLCJpbnB1dCQxIiwic2V0X2Vycm9yX2luZGV4IiwiZXJyb3JfaW5kZXgiLCJzYW5pdGl6ZV9pbmRleCIsImluZGV4IiwiZXJyb3JzIiwiaW5kZXgkMCIsImluZGV4JDEiLCJnZXRfbWVzc2FnZSIsIm1lc2FnZV9uYXZfdGV4dCIsImVycm9yIiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJmaWxlX2xhYmVsX3RleHQiLCJyYW5nZSIsIm1lc3NhZ2UiLCJyYW5nZSQwIiwiZmlsZV9sYWJlbCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsIm91dF9vZl9zeW5jIiwiYnV0dG9uJDAiLCJidXR0b24kMSIsImJ1dHRvbiQyIiwiYnV0dG9uJDMiLCJidXR0b24kNCIsImJ1dHRvbiQ1IiwicHJvZ3Jlc3NfYmFyIiwicGVyY2VudF9zaWduYWwiLCJ2YWx1ZV9zaWduYWwiLCJzIiwidHJhY2tlZF9ldmVudHMiLCJzdGF0ZSIsInN0YXR1cyIsInRyYWNrZWRfZXZlbnRzJDAiLCJjb250ZW50Iiwic2V0X3N0YXRlX2xvZyIsInN0YXRlX2xvZyIsIm1hbmFnZXIiLCJlZmYiLCJjdXJyZW50X2V2ZW50IiwiYWxsIiwiZiIsInNpbXVsYXRpb25faW5mbyIsInRpbWUiLCJ0aW1lJDAiLCJ0aW1lX3BlcmNlbnQiLCJ0aW1lX3BlcmNlbnQkMCIsImV2ZW50IiwiZXZlbnQkMCIsImV2ZW50X3BlcmNlbnRhZ2UiLCJldmVudF9wZXJjZW50YWdlJDAiLCJzdG9wcGVkX2JvZHkiLCJzdG9wcGVkX3JvdyIsInBhdXNlZF9yb3ciLCJmb290ZXIiLCJsYWJlbCIsImRlYnVnIiwiY29udGVudCQwIiwib25sb2FkIiwiaGFuZGxlciIsIm1vZGVsX3BlcnR1cmJhdGlvbiIsInYiLCJyZXNldF92YWx1ZSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImRvbSQxIiwiZG9tJDIiLCJvbnJlc2l6ZSIsIm5hdmxpIiwiY29udGVudCIsIm9ubG9hZCIsIm9ucmVzaXplIiwicHJvdG90eXBlIiwiY3JlYXRlX2hhbmRsZXIiLCJsYWJlbCIsImhlYWQiLCJ0YWlsIiwib25fbGFiZWwiLCJ3cmFwcGVyIiwiaGFuZGxlciIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInQxMSIsImNvbnN0cnVjdG9yX2NoYW5nZSIsImNyZWF0ZV9jaGFuZ2UiLCJjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24iLCJjcmVhdGVfbGludF9jb25maWd1cmF0aW9uIiwiZGVmYXVsdF9jb25maWd1cmF0aW9uIiwiZnJvbVRleHRBcmVhIiwiZG9tIiwiY29uZmlndXJhdGlvbiIsImNvbW1hbmRzIiwiY3JlYXRlX2ZpbGUiLCJvcHQiLCJzdGgiLCJ0ZXh0IiwidHh0IiwiY29udGVudCIsInIiLCJyJDAiLCJzZXRfZmlsZSIsImZpbGVfaWQiLCJjbG9zZV9maWxlIiwic2V0X2ZpbGVfY29tcGlsZSIsInJhbmsiLCJjb21waWxlIiwib3JkZXJfZmlsZXMiLCJmaWxlbmFtZXMiLCJleHBvcnRfY3VycmVudF9maWxlIiwiZmlsZW5hbWUiLCJkYXRhIiwiZmlsZV9uZXdfbW9kYWxfaWQiLCJmaWxlX25ld19pbnB1dF9pZCIsImZpbGVfZHJvcGRvd25fbWVudV9pZCIsImZpbGVfbmV3X2xpX2lkIiwiZmlsZV9vcGVuX2xpX2lkIiwiZmlsZV9vcGVuX3NlbGVjdG9yX2lkIiwiZmlsZV9jbG9zZV9saV9pZCIsImZpbGVfZXhwb3J0X2xpX2lkIiwiZmlsZV9jb21waWxlX2NoZWNrYm94IiwiZWxlbWVudF9nZXRfZmlsZW5hbWUiLCJlbGVtZW50IiwiZWxlbWVudF9zZXRfZmlsZW5hbWUiLCJuYW1lIiwiZmlsZV9uZXdfaW5wdXQiLCJvcGVuX2lucHV0IiwibW9kZWwiLCJoaWRlX29uX2VtcHR5IiwibCIsImN1cnJlbnRfZmlsZV9wb3MiLCJyYW5rIiwiZmlsZV9saSIsImZpbGVfaWQiLCJsb2NhbCIsImlzX2NoZWNrZWQiLCJsaV9jbGFzcyIsImNoZWNrZWRfYXR0cmlidXRlIiwic2VwYXJhdG9yX2xpIiwibmV3X2xpIiwib3Blbl9saSIsImNsb3NlX2xpIiwiZXhwb3J0X2xpIiwibGlfbGlzdCIsImZpbGVuYW1lIiwiZmlsZSIsIm91dF9vZl9zeW5jIiwiY29udGVudCIsImZpbGVfc2VsZWN0X2hhbmRsZXIiLCJmaWxlcyIsIm9ubG9hZCIsIm9wZW5faW5wdXRfZG9tIiwidGFyZ2V0IiwiaWQiLCJmaWxlbmFtZXMiLCJ3aXRoX2ZpbGUiLCJoYW5kbGVyIiwic2V0X2NvbnRlbnQiLCJmaWxlbmFtZSIsImZpbGVjb250ZW50IiwiY3VycmVudF9maWxlbmFtZSIsInIiLCJyJDAiLCJtc2ciLCJ0b2dnbGVfYnV0dG9uX2lkIiwicGFuZWxfaGVhZGluZ19ncm91cF9pZCIsImNvZGVtaXJyb3JfaWQiLCJlZGl0b3JfcGFuZWxfaWQiLCJzZXRfZWRpdG9yX2Z1bGwiLCJlZGl0b3JfZnVsbCIsInNldF9maWxlbmFtZSIsImZpbGVuYW1lIiwibW92ZV9jdXJzb3JfaG9vayIsInNldF9tb3ZlX2N1cnNvciIsImxvYyIsImYiLCJmaWxlX2xhYmVsIiwidG9nZ2xlX2J1dHRvbiIsIm1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCIsImJ1dHRvbnMiLCJwYW5lbF9oZWFkaW5nIiwiY29udGVudCIsInRleHRhcmVhIiwibW9kZWwiLCJlcnJvcnMiLCJwb3NpdGlvbiIsInAiLCJhY2MiLCJ2YWx1ZSIsInJhbmdlIiwiZmlsZV9pZCIsInZhbHVlJDAiLCJvbmxvYWQiLCJjb2RlbWlycm9yIiwiaWQiLCJ0aW1lb3V0IiwiaGFuZGxlciIsImNoYW5nZSIsInRpbWVvdXQkMCIsImRlbGF5IiwiZmlsZW5hbWUkMCIsImNvZGVtaXJyb3IkMCIsImxpbmUiLCJjaCIsImVkaXRvcl9mdWxsJDAiLCJyZWZyZXNoIiwiY2FuZCIsIm1vZGUiLCJ0b3AiLCJtaWRkbGVIZWlnaHQiLCJzY3JvbGxMaW5lIiwicG9zIiwiYmVnIiwiZmlyc3QiLCJlbiIsImxhc3QiLCJvbnJlc2l6ZSIsInByaW50X3N0cmluZyIsInMiLCJsaXN0IiwicHJpbnRfbmV3bGluZSIsInByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIiwiYSIsInByaW50X3NpdGVfZ3JhcGgiLCJhZ2VudF9saXN0IiwiYWdlbnQiLCJsaXN0JDMiLCJiIiwibGlzdCQ0IiwiaW50ZXJmYWNlJDAiLCJhZ2VudF9uYW1lIiwibGlzdCQwIiwic2l0ZSIsImIkMSIsImxpc3QkNSIsImNvdW50ZXJfb3B0IiwiYmluZGluZ19vcHQiLCJwcm9wX29wdCIsInNpdGVfbmFtZSIsImkiLCJzaXRlX25hbWUkMCIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJhJDEiLCJiJDAiLCJhJDAiLCJpbmYiLCJvcGVuX3JhbmdlIiwiaW5mJDAiLCJvcGVuX3JhbmdlJDAiLCJzdXAiLCJjbG9zZV9yYW5nZSIsInN1cCQwIiwiY2xvc2VfcmFuZ2UkMCIsImxpc3QkMSIsImEkMiIsImxpc3QkMiIsInByaW50X21ldGhvZF9oYW5kbGVyIiwibWgiLCJ1bmNhdWdodCIsImNhdWdodCIsIngiLCJsIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImNvbnRlbnQiLCJjb25zdHJhaW50c19kaXYiLCJtYW5hZ2VyIiwiY29uc3RyYWludHMiLCJwYW5lbHMiLCJiIiwiYSIsInRleHRzIiwibGlzdCIsImxlbW1hIiwiaHlwIiwiY29uY2x1c2lvbiIsInNpdGVfZ3JhcGgiLCJsaXN0JDQiLCJsaXN0JDAiLCJsaXN0JDEiLCJsaXN0JDIiLCJib29sIiwibGlzdCQzIiwibGlzdCQ1IiwibGlzdCQ2IiwidGl0bGUiLCJyIiwibSIsIm91dCIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJjcmVhdGVfY29udGFjdF9tYXAiLCJpZCIsImNvbG9yaW5nIiwiZXhwb3J0X2Zvcm1hdF9pZCIsImNvbmZpZ3VyYXRpb24iLCJleHBvcnRfZmlsZW5hbWVfaWQiLCJleHBvcnRfYnV0dG9uX2lkIiwiZXhwb3J0X2RhdGFfbGFiZWwiLCJpbmxpbmVfY29udGVudCIsImV4cG9ydF9maWxlbmFtZSIsImV4cG9ydF9idXR0b24iLCJleHBvcnRfZm9ybWF0c19zZWxlY3QiLCJoYW5kbGVyIiwiY29udGVudCIsIm9ubG9hZCIsImV4cG9ydF9idXR0b25fdG9nZ2xlIiwiZGVmYXVsdCQwIiwicm9vdCIsImV4cG9ydF9zdmciLCJzdmdfc3R5bGVfaWQiLCJzdmdfZGl2X2lkIiwiZmlsZW5hbWUiLCJleHBvcnRfcG5nIiwiZXhwb3J0X2pzb24iLCJzZXJpYWxpemVfanNvbiIsImRhdGEiLCJkaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzZXRfYWNjdXJhY3kiLCJhY2N1cmFjeSIsImNvbnRhY3RfbWFwX2pzIiwiY29udGFjdF9tYXBfdGV4dCIsIm1hbmFnZXIiLCJhY2MiLCJjb250YWN0X2pzb24iLCJjb250YWN0IiwiY29udGFjdCQwIiwibWFwX2pzb24iLCJkYXRhIiwibWgiLCJjb25maWd1cmF0aW9uIiwib3B0aW9uX2dlbiIsIngiLCJsIiwiYWNjdXJhY3lfY2hvb3NlciIsImNvbnRlbnQiLCJhY2N1cmFjeV9mb3JtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSQwIiwib25yZXNpemUiLCJjcmVhdGVfZ3JhcGhfbG9nZ2VyIiwiaWQiLCJvbl9jbGljayIsImVtcHR5X3NwaGVyZSIsImR1bW15X21vZGVsIiwidG90YWxfaW5wdXRfaWQiLCJmd2RfaW5wdXRfaWQiLCJid2RfaW5wdXRfaWQiLCJkaXNwbGF5X2lkIiwicmVuZGVyaW5nX2Nob29zZXJfaWQiLCJhY2N1cmFjeV9jaG9vc2VyX2lkIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNldF90cmFja19jdXJzb3IiLCJ0cmFja19jdXJzb3IiLCJzZXRfbW9kZWwiLCJtb2RlbCIsImluZmx1ZW5jZV9ub2RlX2xhYmVsIiwiciIsInIkMCIsInVwZGF0ZV9tb2RlbF9ncmFwaCIsImYiLCJtIiwiZyIsInVwZGF0ZV9tb2RlbCIsImluZmx1ZW5jZW1hcCIsIngiLCJub2RlIiwib3JpZ2luIiwib3JpZ2luX2xhYmVsIiwidG90YWxfaW5wdXQiLCJmd2RfaW5wdXQiLCJid2RfaW5wdXQiLCJuZXh0X25vZGUiLCJwcmV2X25vZGUiLCJyZWNlbnRlciIsInRjIiwidHJhY2tfY3Vyc29yX3N3aXRjaCIsImV4cG9ydF9jb25maWciLCJmaWxlbmFtZSIsIm1hbmFnZXIiLCJhY2N1cmFjeSIsImluZmx1ZW5jZXNfc3RyaW5nIiwiZGF0YSIsInJlbmRlcmluZyIsImwiLCJsJDAiLCJyZW5kZXJpbmdfY2hvb3NlciIsIm9wdGlvbl9nZW4iLCJhY2N1cmFjeV9jaG9vc2VyIiwiaXNfY2VudGVyIiwib3JpZ2luX3Nob3J0X29wdCIsImlkIiwiYSIsImlkJDAiLCJhJDAiLCJ0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24iLCJpbmZsdWVuY2VfbWFwIiwibmFtZXIiLCJhY2MiLCJlIiwib3JpZ2luX2lkX29wdCIsIm9yaWdpbl9pZCIsInNyYyIsImRzdCIsImJ5Iiwib24iLCJ2IiwidiQwIiwicG9zaXRpdmVfYnkiLCJwb3NpdGl2ZV9vbiIsIm5lZ2F0aXZlX2J5IiwibmVnYXRpdmVfb24iLCJwb3BfY2VsbCIsInQiLCJwb3NpdGl2ZSIsImluZmx1ZW5jZV9zcGhlcmUiLCJjb250ZW50IiwiYWNjdXJhY3lfZm9ybSIsImdyYXBoX2Zvcm0iLCJzcGhlcmUiLCJieSQxIiwib24kMSIsImJ5JDAiLCJiIiwib24kMCIsIm8iLCJsaW5lIiwiYWNjJDAiLCJvdXRzIiwiZXJyb3IiLCJ0b3RhbCIsImJ3ZCIsImZ3ZCIsImluZmx1ZW5jZXMiLCJidWYiLCJmbXQiLCJsb2dnZXIiLCJsb2dnZXJfZ3JhcGgiLCJub2RlcyIsIm1heF9ydWxlX2lkIiwiYmlnZ2VzdF9pZCIsIm4iLCJnZXRfaWRfb2Zfbm9kZV9pZCIsIm5vZGVfaWQiLCJqc29uIiwibGFiZWwiLCJwb3MiLCJjb250ZXh0dWFsX2hlbHAiLCJmaWxsY29sb3IiLCJkaXJlY3RpdmVzIiwicG9zJDAiLCJjb250ZXh0dWFsX2hlbHAkMCIsImZpbGxjb2xvciQwIiwicHJpbnRfbWFwcyIsIm9wdCIsIm1hcCIsInN0aCIsInNvdXJjZSIsInNvdXJjZV9pZCIsInRhcmdldCIsImxhYmVsX2xpc3QiLCJ0YXJnZXRfaWQiLCJsYWJlbF9zdHJpbmciLCJkaXJlY3RpdmVzJDAiLCJncmFwaCIsImdyYXBoX2pzb24iLCJjdXJzb3JfcG9zIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSQwIiwidmEiLCJvcmlnaW5fcmVmaW5lZCIsIm9ucmVzaXplIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNpdGUiLCJhIiwiY29udGVudCIsInNjYyIsIm1hbmFnZXIiLCJzY2MkMCIsImxpc3QiLCJsaXN0X2VkZ2VzIiwibGlzdCQwIiwiZCIsImMiLCJiIiwibGlzdCQxIiwib3V0cHV0IiwibWgiLCJtIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInRhYiIsInNraXAiLCJwbHVyYWwiLCJyaWdodHN1YnBhbmVsX2lkIiwibmF2bGkiLCJjaGlsZHNfaGlkZSIsImIiLCJjb250ZW50IiwiZWRpdG9yX2Z1bGwiLCJvbmxvYWQiLCJtb2RlbCIsIm1hbmFnZXIiLCJsaXN0Iiwid2FybmluZ3MiLCJhY2MiLCJydWxlIiwidGV4dCIsIm1oIiwiYWdlbnQiLCJyYW5nZSIsImNvbnRleHRfbGlzdCIsInRhYiQwIiwic2tpcCQwIiwicGx1cmFsJDAiLCJmbXQiLCJhIiwib25yZXNpemUiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfZGluX2lkIiwiZGluX2lkIiwibWFuYWdlciIsImRpbl9pZHMiLCJvdXQiLCJpZCIsImRpbl9saXN0IiwiZGluX3NlbGVjdCIsImRpbl9kYXRhIiwieCIsImRpbiIsInIiLCJhY2MiLCJkaW5faGVhZGVyIiwiYWxsIiwiYm9keSIsImkiLCJkYXRhIiwidiIsImRpbl90YWJsZSIsInRoZWFkIiwiZXhwb3J0X2N1cnJlbnRfZGluIiwidG9fc3RyaW5nIiwibWltZSIsImZpbGVuYW1lIiwiZXhwb3J0X2NvbmZpZ3VyYXRpb24iLCJjb250ZW50IiwibmF2bGkiLCJzdGF0ZSIsInN0YXRlJDAiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJzdGF0ZSQwIiwic3RhdGUiLCJjb250ZW50Iiwic3RhdGVfbG9nIiwibWFuYWdlciIsIngiLCJ4JDAiLCJsaXN0IiwidGV4dCIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJzZWxlY3RfaWQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfY3VycmVudF9maWxlIiwiY3VycmVudF9maWxlIiwidXBkYXRlX291dHB1dHMiLCJrZXkiLCJtYW5hZ2VyIiwibGluZXMiLCJmaWxlX2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwibmF2bGkiLCJ4bWwiLCJ4IiwiZmlsZV9saW5lX2lkcyIsImN1cnJlbnRfZmlsZV9pZCIsImZpbGVfb3B0aW9ucyIsInNlbGVjdF9maWxlIiwiZmlsZV9zZWxlY3QiLCJsaW5lIiwiZmlsZV9jb250ZW50IiwiY29udGVudCIsInQiLCJvbmxvYWQiLCJmaWxlaW5kZXgiLCJvbnJlc2l6ZSIsImNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QiLCJtYWluX2Rpdl9pZCIsImRpdl9kaXNwbGF5X2lkIiwiZXhwb3J0X2lkIiwicGxvdF9wb2ludHNfaW5wdXRfaWQiLCJwbG90X29mZnNldF9pbnB1dF9pZCIsInNldF9vZmZzZXQiLCJvZmZzZXQiLCJkZWZhdWx0X3BvaW50Iiwic2V0X3BvaW50cyIsInBvaW50Iiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwicGxvdF9yZWYiLCJoYXNfcGxvdCIsInN0YXRlIiwic3RhdGUkMCIsImV4cG9ydF9qc29uIiwiZmlsZW5hbWUiLCJtYW5hZ2VyIiwicGxvdCIsImRhdGEiLCJleHBvcnQkMCIsIm1pbWUiLCJwbG90X3BvaW50c19pbnB1dCIsIm1heF9vZmZzZXQiLCJwbG90X29mZnNldF9pbnB1dCIsInVwZGF0ZV9wbG90IiwianNfcGxvdCIsInNpbXVsYXRpb25fbW9kZWwiLCJzaW11bGF0aW9uX2luZm8iLCJzaW11bGF0aW9uX2luZm8kMCIsInBsb3Rfc2l6ZSIsIm9mZnNldF9tYXgiLCJvbGRfb2Zmc2V0Iiwib2Zmc2V0JDAiLCJvZmZzZXRfY3VycmVudCIsIm5ld19vZmZzZXQiLCJwb2ludCQwIiwieCIsImNvbmZpZ3VyYXRpb24iLCJtb2RlbCIsIm91dCIsInhtbCIsImV4cG9ydF9jb250cm9scyIsImNvbnRlbnQiLCJzIiwib25sb2FkIiwicGxvdF9vZmZzZXRfaW5wdXRfZG9tIiwicGxvdF9wb2ludHNfc3RyaW5nIiwicGxvdF9wb2ludCQwIiwicGxvdF9wb2ludHNfb3B0aW9uIiwicGxvdF9wb2ludHMiLCJwbG90X3BvaW50IiwicGxvdF9wb2ludF9zdHJpbmciLCJ2YWx1ZSIsIm5hdmxpIiwib25yZXNpemUiLCJjcmVhdGVfc25hcHNob3QiLCJpZCIsImNvbG9yaW5nIiwic2VsZWN0X2lkIiwiZGlzcGxheV9pZCIsImZvcm1hdF9zZWxlY3RfaWQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJzZXRfY3VycmVudF9zbmFwc2hvdCIsImN1cnJlbnRfc25hcHNob3QiLCJzZXRfZGlzcGxheV9mb3JtYXQiLCJkaXNwbGF5X2Zvcm1hdCIsInNuYXBzaG90X2NvdW50Iiwic3RhdGUiLCJzdGF0ZSQwIiwibmF2bGkiLCJjb25maWd1cmF0aW9uX3RlbXBsYXRlIiwiaWQiLCJhZGRpdGlvbmFsX2hhbmRsZXJzIiwianNvbl9oYW5kbGVyIiwicyIsImthcHBhX2hhbmRsZXIiLCJmaWxlbmFtZSIsImRhdGEiLCJkb3RfaGFuZGxlciIsImRlZmF1bHRfaGFuZGxlcnMiLCJtb2RlbCIsInNpbXVsYXRpb25faW5mbyIsImNvbmZpZ3VyYXRpb25fa2FwcGEiLCJjb25maWd1cmF0aW9uX2dyYXBoIiwicmVuZGVyX3NuYXBzaG90X2dyYXBoIiwic25hcHNob3RfanMiLCJzbmFwc2hvdCIsImpzb24iLCJjb250YWN0X21hcCIsInNlbGVjdF9zbmFwc2hvdCIsImluZGV4IiwiZmlsZWluZGV4Iiwic2ltdWxhdGlvbl9vdXRwdXQiLCJpbmRleCQwIiwibWFuYWdlciIsInNuYXBzaG90X2lkcyIsInNuYXBzaG90X2lkIiwiZiIsImYkMCIsInNuYXBzaG90X2NsYXNzIiwiZW1wdHkiLCJzaW5nbGUiLCJtdWx0aXBsZSIsInhtbCIsIngiLCJpIiwibGlzdCIsInNuYXBzaG90X2ZpbGUiLCJzbmFwc2hvdF9sYWJlbCIsInNuYXBzaG90X3NlbGVjdCIsInNuYXBzaG90X2Nob29zZXIiLCJ0b2dnbGVfY29udHJvbHMiLCJrYXBwYSIsImdyYXBoIiwiZXhwb3J0X2NvbnRyb2xzIiwic25hcHNob3QkMCIsImthcHBhX3NuYXBzaG90X2Rpc3BsYXkiLCJrYXBwYV9ncmFwaF9kaXNwbGF5IiwiZm9ybWF0X2Nob29zZXIiLCJjb250ZW50Iiwib25sb2FkIiwidXBkYXRlX2Zvcm1hdCIsImZvcm1hdF90ZXh0IiwiZm9ybWF0Iiwib25yZXNpemUiLCJjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIiwiaWQiLCJncmFwaF9kaXNwbGF5X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJuYXZsaSIsIm5vbmVfY2hlY2tib3giLCJ3ZWFrX2NoZWNrYm94Iiwic3Ryb25nX2NoZWNrYm94IiwibGF1bmNoX2J1dHRvbiIsImxpc3RfY29udHJvbCIsInN0b3J5X2xpc3QiLCJzdG9yeV9saXN0X2h0bWwiLCJjbSIsImlkIiwic2VsZWN0X3N0b3JpZXMiLCJzZXR1cF9mb3JtIiwibG9nX2NvbnRyb2wiLCJzdG9yeV9sb2ciLCJzZXRfaW5mbyIsImN1cnJlbnRfaW5mbyIsInN0b3J5X2xvZ19odG1sIiwibGluZSIsImxvZ19kaXYiLCJsb2dfcGFuZWwiLCJzdG9yeV9ncmFwaCIsImNvbnRlbnQiLCJsaWZ0X3Jlc3VsdCIsIngiLCJlIiwiZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIiwibWFuYWdlciIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJwcmVkX2lkIiwic2V0X2Ffc3RvcnkiLCJ2YSIsInYiLCJkIiwiZiIsImluc3BlY3Rfc3RvcmllcyIsImFjYyIsImIiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInRyYWNlIiwib25yZXNpemUiLCJuYXZfdGFiX2lkIiwibmF2Y29udGVudHNfaWQiLCJuYXZ0YWJzIiwic3RvcnlfY2xhc3MiLCJzIiwibmF2Y29udGVudHMiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInN5bmMiLCJpbml0IiwibG9vcCIsImgiLCJ0IiwibG9vcF9zeW5jIiwib25sb2FkIiwib25sb2FkIiwibWFpbiJdLCJzb3VyY2VzIjpbIi9idWlsdGluLytpbnQ2NC5qcyIsIi9idWlsdGluLyttbEJ5dGVzLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8ranNsaWIuanMiLCIvYnVpbHRpbi8rZm9ybWF0LmpzIiwiL2J1aWx0aW4vK2llZWVfNzU0LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2J1aWx0aW4vK2ZzLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytuYXQuanMiLCIvYnVpbHRpbi8rZ3JhcGhpY3MuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8rbWFyc2hhbC5qcyIsIi9idWlsdGluLytpby5qcyIsIi9idWlsdGluLytnYy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK2ludHMuanMiLCIvYnVpbHRpbi8raGFzaC5qcyIsIi9idWlsdGluLytvYmouanMiLCIvYnVpbHRpbi8rY29tcGFyZS5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK3N0ci5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvYnVpbHRpbi8rZG9tYWluLmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rd2Vhay5qcyIsIi9idWlsdGluLytwcm5nLmpzIiwiL2J1aWx0aW4vK3pzdGQuanMiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsQXRvbWljLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdGRsaWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3BlcnZhc2l2ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NlcS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2hhci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvdW5pdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9sZXhpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYXJnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9nYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZGlnZXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3dlYWsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbGxiYWNrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9nZW5sZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZmlsZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NvbXBsZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2JpZ2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanNfb2Zfb2NhbWxfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93b3JrZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3dlYkdMLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9yZWdleHAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvc3lzX2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9yZXNpemVPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvbXV0YXRpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanN0YWJsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvY1NTLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb21fZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9ldmVudFNvdXJjZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZmlyZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ludGVyc2VjdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbnRsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jYXRlZ29yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZm10Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wbWFyay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvYXV0b21hdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvZ3JvdXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2NvcmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9zdHIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2dsb2IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3BjcmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL3Bvc2l4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF93cmFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL2Z1bmN0b3IveG1sX3ByaW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9pdGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3N2Z19mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL2h0bWxfZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfeG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX2h0bWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlYWN0aXZlRGF0YS9yZWFjdGl2ZURhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL2pzX29mX29jYW1sX3R5eG1sX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvdHl4bWxfY2FzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtdHl4bWwvdHl4bWxfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc3dpdGNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3NlcS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3BxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3Bvb2wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbXZhci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9tdXRleC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9jb25kaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dF9yZWFjdC9sd3RfcmVhY3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9qc19vZl9vY2FtbF9sd3RfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9qc29ucC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2x3dF9qc19ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtbHd0L2pzX29mX29jYW1sX2x3dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9lYXN5LWZvcm1hdC9lYXN5X2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9zaGFyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2luYnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfb3V0YnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2lvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfZHVtcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIveW9qc29uL2NvZGVjLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL292X3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb2pfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9vYl9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL2pzb25fYWRhcHRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2R5bmFtaWNBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xhcmdlQXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy90b29scy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2pzb25VdGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvc3RvcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3NldE1hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL21vZHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9vcHRpb25fdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xvYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3BwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvdmFsTWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmVzdWx0X3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yZW5hbWluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3JhbmRvbV90cmVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcHBfaHRtbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL29wZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbmJyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvRXhjZXB0aW9uRGVmbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL25hbWVkRGVjbHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9saXN0X3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9pbnRDb2xsZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaW5maW5pdGVfYnVmZmVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2hhc2hlZF9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZnJhY3Rpb25zLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZmlmby5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NyYzMyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY29sb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jaXJjdWxhcl9idWZmZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY2FjaGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9iaWdidWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9iYXNlNjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3VzZXJfZ3JhcGgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL3NpZ25hdHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2FnZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9lZGdlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvbmF2aWdhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcmF3X21peHR1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2FsZ19leHByLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9jb250YWN0X21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbWF0Y2hpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2luc3RhbnRpYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL3ByaW1pdGl2ZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2xLYXBwYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybl9jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcGF0dGVybl9kZWNvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9tb2RlbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0va2FwcGFfcHJpbnRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vY29uZmlndXJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vYWxnX2V4cHJfZXh0cmEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3RyYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9kYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9mbHV4bWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9yb290cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vaW5zdGFuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9leHByX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9nZW5lcmljX3J1bGVfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3N0YXRlX2ludGVycHJldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9yZXBsYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2FzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvY291bnRlcnNfY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2xLYXBwYV9jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva3BhcnNlcjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seSIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvY3N0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2xleGVyNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2ZpbGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5IiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva2Ftb2hhX21waS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvZXZhbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvZXZhbHVhdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvdHlwZV9pbnRlcmZhY2UvcHVibGljX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS92ZXJzaW9uL3ZlcnNpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvc3VwZXJhcmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvc3VwZXJhcmdUay5ub3RrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2NvbW1vbl9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3J1bl9jbGlfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcm9ncmVzc19yZXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FwcGFfZmlsZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcHBfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3BhcmFtZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL2thc2ltX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY2xpX2luaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvYWdlbnRfYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2xvZ2dpbmcvbG9nZ2Vycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2xvZ2dpbmcvbG9nZ2Vyc19zdHJpbmdfb2Zfb3AubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2xvZ2dlcnNfc2lnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9sb2dnZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xhc3NpY2FsX2dyYXBocy9ncmFwaF9qc29uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9zeW1ib2xfdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3JlbWFuZW50X3N0YXRlX3NpZ25hdHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3JlbWFuZW50X3BhcmFtZXRlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL29kZV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9oZWFkZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9maWxlTmFtZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2dldF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9lcnJvcl9oYW5kbGVycy9saWZ0X2Vycm9yX2xvZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wcm9maWxpbmcvc3RvcnlQcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21hcF93cmFwcGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy93b3JraW5nX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2ludF9zdG9yYWdlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy90b29sc19rYXNhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9taXNjX3NhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9oYXNoLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvS2FTYV9yZXAvbW9yZV9kYXRhc3RydWN0dXJlcy9ncmFwaHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2RpY3Rpb25hcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy90aWNrX3N0b3JpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ncmFwaF9jbG9zdXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2F1c2FsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJlZGljYXRlX21hcHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmlvcml0eS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3N0b3J5X2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FwcGFfaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BvX2N1dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3BzZXVkb19pbnZlcnNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZF9nZW5lcmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tib2FyZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3Byb3BhZ2F0aW9uX2hldXJpc3RpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9nZW5lcmljX2JyYW5jaF9hbmRfY3V0X3NvbHZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2JsYWNrX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy91dGlsaXRpZXNfZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY2Zsb3dfanNfaW50ZXJmYWNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvY29tcHJlc3Npb25fbWFpbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2thc3Rvcl9tcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9kYWcyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2FwaV9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3R5cGVzX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvc3dpdGNobWFuX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tcGlfbWVzc2FnZV9qLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21waV9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvZmFrZXppcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXBwYV9mYWNhZGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbWFuYWdlcl9zaW11bGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thc3Rvcl9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzYV9jbGllbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2Ftb2hhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9lbnZpcm9ubWVudF9tZW1vcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9jb21tb25fc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL0pzTm9kZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcmVzdF9hcGkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3NldHRpbmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS93ZWJfd29ya2VyX2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcHJvamVjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfZmlsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfc2ltdWxhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbW9kYWxfcHJlZmVyZW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3VpX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfcHJvamVjdHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3BlcnR1cmJhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfc2V0dGluZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9hYm91dC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29kZW1pcnJvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvbWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tZW51X2VkaXRvcl9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3VicGFuZWxfZWRpdG9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS91dGlsaXR5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfY29uc3RyYWludHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX2NvbnRhY3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3dpZGdldF9leHBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9jb250YWN0X21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfZ3JhcGhsb2dnZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9pbmZsdWVuY2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfcG9seW1lcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9mbHV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfbG9nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfb3V0cHV0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfcGxvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX3Bsb3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3NuYXBzaG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2pzX3N0b3J5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfc3Rvcmllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvcGFuZWxfdGFiLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV91aS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNTaW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0EwT0EsU0FBU0EsbUJBQW1CQyxHQUFLLFNBQVFBLFdBQVk7R0N6THJELFNBQVNDLGdCQUFnQkMsR0FBR0M7SUFDMUIsR0FBR0QsUUFBUTtJQUNYLEdBQUlDLFVBQVUsT0FBUUEsU0FBU0Q7SUFDL0IsSUFBSUUs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O0ksTztHOztJOztHO0c7SSxRO0ksUTs7Ozs7Ozs7Ozs7Ozs7STtLLFE7Ozs7Ozs7Ozs7Ozt3RDswRDswRDs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7STtHOztJOzs7Ozs7Rzs7SSxzQjtHOztJO0ssTTtLLE07O0k7STtJLFc7SSxzQjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQixzQixnQzs7O0ssTTs7O08sYTs7TztRLEs7USxLOzs7OztPO1EsTztRLE87USxLOztnQzs7dUM7UTs7OztzQztPOztPO1EsTztRLE87USxPO1EsSzs7Ozs7d0M7Uzs7Ozt1QztROztPOztHOztJO0ssSztLLEs7Ozs7NEI7O0ksc0I7Rzs7STtLLEs7SyxLOzs7Szs7YTs7STtxQztHOzs7SyxtQjtJO0ksSSxpQixtQjs7O00sTTs7TSxNO0s7Ozs7Ozs7OzhCOzs7OzhCOzs7Ozs7TSxZOzs7Ozs7OEI7Ozs7O007O0ksZ0Q7Z0I7O0ssTTtJO0c7O0k7O2U7ZTs7O0ssTyx5Qjs7SSxtQixJO0k7Yyx5QjtJLEksa0I7Ozs7TSx5QjtNOzs7OztJLE87O3FCLGlDOztJOzs7O0c7O0k7Ozs7STtHOztJOzZDOztLOztNLEs7SztLLE87O0k7SSxPO0c7NEIsK0I7OztLOzs7O0k7STtJLFksTzs7Ozs7b0M7OEI7Rzs7STs7SSxPO0c7O0k7STs7O0k7O0ssSzs7Szs7O3lCO0k7Rzs7STtJOzs7O0k7Ozs7Yyw0Qjs7O0c7O0k7O0s7OztJO0c7O0k7STtJLHlCO21CLGlCOztJOzs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Rzs7SSxrQjs7STtHOztJLHNCO0ksZTtJOzs7Szs7STtJLDRCO0c7O0k7STs7OztLOztJO0k7Rzs7STs7Ozs7Ozs7Rzs7SSxrQjs7STtHOztJLHNCO0ksZTtJOzs7Szs7STtJLDRCO0c7O0k7STs7OztLOztJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O3dDOzs7STs7O0s7NEI7NkI7Ozs7O0s7NEI7Ozs7STs7Syx5Qjs7OzZCOztJOzs7OztHOzs7SyxJOzs7OztNOzs7Ozs7TTs7Ozs7eUI7O007O007TyxLO087Ozs7Ozs7OztLOztNO08sSzs7TztrQjtrQjs7TTs7O08seUI7Ozs7TTtLO0s7TSxLOztNOztNLE07OztROztROzs7Ozs7Ozs7c0I7O1E7O2lDOztROztJO0k7STtHO3FCLHlDO29CLDhCO3NCLDhCO3FCLGtCOztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7Uzs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxROzs7Ozs7OztPO087TztPOzs7Ozs7O1M7O21COzs7OztpQixVLFcsVTs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJOzs7Ozs7Rzs7STs7Ozs7Ozs7OztLO00sTzs7Ozs7Ozs7OzttQzs7Szs7TSxVO00sTTs7Ozs7STs7Ozs7Ozs7WTs7Ozs7Ozs7OzthOzs7YyxPOzthLGMsUTs7Ozs7YyxPOzs7Ozs7O2MsTzs7OzthLE87OztHO3NCLE8scUI7NEIsYTsyQixhO2tDLGE7NkIsYTttQyxhOzJCLFk7MkIsWTtnQyxZOztJOzs7RztxQixpQzs7STs7Ozs7OztZOzs7OztHOztJOzs7O087USxPO08sTzs7Szs7OztLOztLLE87O0ksa0IsSTtJOztJLE87Rzs0Qiw2Qjs7O0s7Ozs7STtJLEk7O2lEOzZCO0c7O2tCLHFCLGE7O0ksYyxNLGlDO0k7OztpQywwQjs7Ozs7Ozs7TTs4Qjs7SztLO0s7Ozs7Ozs7OztNOzhCOztLO0s7SztLO0s7Ozs7Ozs7O0s7NkI7O0k7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNOzhCOztLO007OztLO0s7SztLO0s7Ozs7Ozs7O0s7NkI7O0k7STtJO0c7O2tCLHdCLGE7O0ksYyxNLGlDO0k7Ozs7Ozs7TTs4Qjs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLOzZCOztJO0k7STtHOztJOzs7SyxJLE07Ozs7OztJOzs7Ozs7WTs7OztHO3lCLE8sdUI7Z0MsWTsyQixZO0c7O0k7SyxNO0s7O2lCOzs7O0s7Ozs7Szs7O0k7Rzs7STs7Ozs7STs7SyxNOzs7STtrQjtLLHlCO0s7TTs7TyxROzs7OztxQixPO007O08sUTs7Ozs7Rzs7STs7Ozs7STs7SyxNOzs7STtrQjs7SyxZLE87Szs7TTs7TyxROzs7OztNLFksTztNOztPO1M7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHO0c7O0ksVTt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxVO3VCLE8seUM7STtLO007OztLO0s7Szs7O0k7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O1lJN0hBYSxNQUFPQyxHQUFVQyxHQUFXLE9BQXJCRCxNQUFVQyxVQUFnQjtPQUNqQ0M7WUFDQUMsT0FBT0gsR0FBSSxPQUFKQSxFQUFLO09BQ1pJO1lBRUFDLFVBQVVMLEdBQUVDLEdBQUksY0FBTkQsSUFBRUMsV0FBaUI7WUFDN0JLLE9BQUtOLEdBQUVDLEdBQUksT0FBTkQsSUFBRUMsRUFBVztPQUlsQk0sWUFDQUM7WUFLQUM7SUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7WUFHQUM7WUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztJQ2xsQ0U3WDtJQUNBOFg7O0lBQ0FwZ0I7SUFDQXVJO0lBQ0FDO0lBR0E2WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUIsVyxxQzs7SSxPOzs7RztzQixPLG9DOztJLFE7STtJLE87Rzs7SSxXOztLLFU7Szs7O0k7OztHOztJOztJLE87Rzs7SSxJLHVDOzs7O00sWTs2QztNOzs7Ozs7Rzs7SSxJLHFCOzs7a0I7OztHOztJO0k7SztNOztNO007a0I7Ozs7O0s7OztHO0csK0I7NEIsb0IsdUI7O0ksaUI7OztJO0ksSTtJOztLLDZCLG1CO2lCOzs7Ozs7TTs7O1U7O0c7O0ksbUM7Ozs7TSxZOztNOzs7Ozs7RzsyQiwrQjtnQyxtQjs7STs7OztNO007Ozs7OztHOztJOztJO0s7TTs7Uzt5QyxPLGtCOzs7UTtNOztTO3lDLE8sa0I7OztRO00scUIscUM7Szs7Ozs7O1E7UztTO1M7UztVO1UsVztVO1U7OztVOzs7Ozs7OztrQixTLFM7OztNOztLO0s7OztLLHdDLG1CO0s7b0MsTyxzQjtLO0s7OztHOztJOzs7Ozs7Ozs7O1E7UyxhOzs7Ozs7Ozs7O0c7O3VCLFM7Z0MsUzs7STtHOztJO0k7Ozs7O08sWTs7OztTO1MsTTs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7STtJOzs7OztZO1E7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0ksNkIsbUI7RzswQiw2Qjs7STtJOzs7OztJLGdCOzs7STs7Ozs7TTs7O087Ozs7O1UsRztXLE07Ozs7OztRLEk7Ozs7Ozs7TztRLFk7OztRO1EsSTs7Ozs7OztpQjs7Ozs7Ozs7OztHO0c7STs7O3lCLCtCOztJOzs7Ozs7O0c7O0ksSSxnQjs7Rzs7SSxjOzs7STtpQjs7Ozs7O1MsMkQ7UztROzs7Rzs7STs7SyxNOztJO0c7dUIsbUM7MkIsa0IsYzs7STs7SSxrQjs7O0c7O0k7O0ssTTs7STtHOzJCLGtDOztJOztJLHdCO2tCLCtCO0k7Rzs7STs7O0ksRywwQjs7OztHOztJOzs7Rzs7Ozs7OztJO0k7OzthO2M7O2M7Yzs7OztjOzs7O2M7YTs7Rzs7STs7O0k7Rzs7SSxZOztJOzs7STs7O2lCO0k7Rzs7STtJO2tCO2E7Szs7TTswQixvQjs7O1M7UztTO1E7SztLOzs7SSxRO0ksZ0I7d0Isa0M7O0s7aUI7O0ssYTtLO0k7STtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O0s7Szs7STtJO0k7Rzs7SSxZO0ksa0I7c0Isb0I7O21CLGtDO0s7STtJO0k7Rzs7SSxZOztJLFM7SSxnQjtzQixnQzs7Szs7O00sZTs7SztJO0k7STtJOzs7SSxZO0ksa0I7c0Isb0I7a0IsZSxrQztJO0k7OztJLFE7SSxjO3NCLG9CO2tCLDBCO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLLE87STtJO0k7OztJLFk7SSxrQjtzQixvQjs7SyxZO2lCOztLO0k7STtJOzs7SSxZO0ksa0IseUI7c0Isb0I7O0ssSSxlOzs7O00sZTs7OztJO0k7STs7O0k7SSxZO0ksa0IseUI7c0Isb0I7O0ssSSxlOzs7O00sTzs7O0s7STtJO0k7OztJLFE7O0k7SSxlO3NCLGdDOztLO0k7STtJO0k7OztJLFE7O0ksUTtJLGU7c0IsZ0M7a0IsaUQ7STtJO0k7OztJLFE7O0ksUTtJLGU7c0IsZ0M7O0s7Ozs7OztJO0k7STtJOzs7SSxTO0ksZSx5QjtzQixvQjs7SztjO0s7STtJO0k7Rzs7SSxZO0ksa0IseUI7c0Isb0I7O0s7YztLO0k7STtJOztzQiw2Qjs7STs7O007TSxXOzs7O007OztPO087Ozs7Ozs7Rzs7STtLOzs7Szs7SyxPLHdDLFk7STs7SztNOzt3QjtNOzs7OztPLE07OztJO0k7cUMsNEI7STtHOztJO0s7OztLOztLLE8sd0MsWTtJOztLOztrQjs7TTtPO1EsUTs7Ozs7O0k7STtxQyw0QjtJO0c7O0ksWTs7STtJLEksZTs7SztpQjs7SztJOztLOzs7O08sTTs7TTs7SyxrQjtxQzs7YSx5QiwyQjs7SztLO0s7TTtNOzs7bUI7O0s7STswQjtJO0k7OztJO0s7Szs7O3lCLFM7O1UsTTtTO0ssTzs7bUM7O21DO3NCLFM7O0s7OztLLDBCOztJO0k7STtJO0c7O0ksUzthO0ksNEIsMEI7c0IsaUM7O0s7OztNLGU7O0s7STtJO0k7STtHOztJLFM7YTthO0k7Ozs7SztLO0s7c0IsNkM7O0s7OztNLGU7O0s7STtJO0k7STtJO0c7O0ksUzthO2E7YTtJOzs7OztLO0s7Szs7SztJOztLOzs7TSxlOztLO0k7STtJO0k7STtJO0c7O0ksUzthO2E7YTthO0k7Ozs7OztLO0s7SztLOztLO0k7O0s7Ozs7Ozs7Ozs7Ozs7TSxlOztLO0k7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7YTtJOzs7Ozs7O0s7SztLO0s7O0s7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7TSxlOztLO0k7STtJO0k7STtJO0k7STtHO29CLHVCLGMsTTs7SSxnQix3QixTOzs7O0s7O2UsWTs7ZTtjOzs7O0ksUTtJLGM7c0IsZ0M7O0s7Z0I7O2lCOztLO0k7STtJO0k7RztHO0k7Ozs7STs7O3VDLFM7SSx3QjtrQix1QixPOztLOztLO0s7SztLLE87STtJO0c7dUIsYzs7STtJOztJOzs7YTthLEcsMkI7O2M7OztjO2M7Ozs7Yzs7OztjOzs7O0c7O0k7OztJO0c7O0ksbUI7O0k7Rzs7STs7OztnQixPOzs7STtHOztJLG1COzs7SSx3Qjs7SyxNOzJCLDBCO0k7OztJO0k7O29DLE87Ozs7OztJO0c7O0k7STtrQjtrQyxrQjtLOztNO007TSxvQixvQjs7O1M7UztTO1E7SztLOzs7STtLOztNOzRCLHFCOzs7UyxhO1M7O1E7SztLOztJLGdCLGU7d0Isa0M7O0ssSSxlO21DLEcsNEI7SyxhO0s7STtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLO0k7STtJOzs7STtJLHFDLFc7SSxrQjtzQixvQjtrQixlLGdDO0k7STs7O0k7STs7cUI7O0ssVzs7OztLOztNOzBCLHFCO3NCLGUsaUM7SztLOztJLGdCO3dCLGlDOztLO0ssZTtJO0k7STtJO0c7O0k7SSw2QixPO0ksYztzQixvQjs7SztLLE87STtJO0k7Rzs7STtJO0s7O007MEIsb0I7OztTLFk7cUI7O1M7UTtLO0s7O0ksa0IsUTtnQjs7STs7O0ksbUI7SSxrQix5QjtzQixvQjs7SyxJLGE7O00sTTs7O0ssZTtJO2dDLGlDO0k7STs7O0ksbUI7SSxrQjtzQixvQjtrQixnQztJO0k7Rzs7STs7Syx3QixPLHFCOzs7SSxRO0ksZTtzQixpQzs7SztpQjs7SyxlO0k7STtJO0k7OztJO0k7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUTs7STtLOztNOzBCLHFCO3NCLHVDO0s7Szs7SSxlO3dCLGlDO29CLGdEO0k7STtJO0c7O0k7SSxTO0ksZTtzQixvQjs7SztpQjs7SyxlO0k7STtJO0c7O0k7SSxZO0ksa0I7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STs7O0k7STtLLG1COztLOztJO0ssbUI7O0s7O0ksbUI7c0IsaUQ7O0s7Yzs7O2lCOztrQixPOzs7aUIsTzs7Ozs7O0k7O0ssbUI7O0s7STtJO0k7Rzs7STtJLHFDO0k7O0s7SztLOztLO3dCOztLO0k7O0s7Ozt5Qjs7TTs7O2dEO0s7OztNLG9CO007TTs7O0s7O007TTtNOzs7SztLOzs7STtJO0k7STs7O0k7Ozt3Qzs7O0c7O0k7O0s7SzttQjtLO0s7SztJO0k7SztLOztvQyxTLG1CLFM7SyxPOzs7Szs7OzBCLFM7c0Isd0I7TTtLO0s7OzttQzt3QixTO29CLGdDO0k7STtJO0k7Rzs7STtJOztvQyxXO0s7O007MEIsb0I7c0IsZSxtQztLO0s7Ozs7Szs7TTs0QixxQjt3QixlLHNDO0s7Szs7SSxlO3dCLGlDOztLO0ssZTtJO0k7STtJO0c7O0k7STs7OztzQyxXOzs7Ozs7OztPOztRO1E7UTs0Qiw2Qzs7O1csSSxpQjtXLGU7VTtPO087TztPOzs7O0k7Ozt3Qzs7Ozs7Rzs7STtJOzs7Ozs7OztRLFc7Ozs7Ozs7Ozs7OztROztTO1M7Uzs7O1k7Vzs7O1ksSSxpQixpQjtZLGU7VztRO1E7UTtRO1E7Ozs7O0k7Ozt3Qzs7Ozs7O0c7O0k7STs7Ozs7Ozs7OztTLFc7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VTtVOzs7YTs7O1k7OzthO2M7YztjO2M7YyxJO2E7WTtTO1M7UztTO1M7Uzs7Ozs7O0k7Ozt3Qzs7Ozs7OztHOztJO0k7Ozs7Ozs7Ozs7OztVLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztXO1c7VztXO1c7OztjOzs7OzthOzs7YztlO2U7ZTtlO2U7ZSxJO2M7YTtVO1U7VTtVO1U7VTtVOzs7Ozs7O0k7Ozt3Qzs7Ozs7Ozs7Rzs2QjtnQzttQiwwQzs7STs7Ozs7Rzs7STs7Ozs7RztvQixvQjs7SSxtQjtJLGtCO3NCLG9COztLLFc7SztJO0k7STs7b0IseUI7b0IseUI7O0ksWTtJOztLOzhDO3NCLG9CO2tCLG9EO0k7STs7Z0M7O0ksMEM7Rzs7SSwwQztHOztJLDBDO0c7O0k7O2tDOzs7Rzs7STs7a0M7OztHOztJO0c7d0Isb0Q7bUIsMEM7RyxJLDJCOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHO29CLDBDOztJO2dEO0c7O0k7O2tDOzs7Rzs7STtnRDtHO2dDOztJLDBDO0c7O0k7Z0Q7Rzs7STtnRDtHOztJLDhDO0c7O0ksNkM7Rzs7STs7Z0M7OztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHO3FCLHdEOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJOztnQzs7O0c7b0IsdUQ7b0IsdUQ7b0IsdUQ7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0ksNkM7Rzs7STtHOztJO0c7O0k7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHO0c7STtJO0k7STtJO0k7O0k7b0M7OztHOztJLCtCLGlCO0c7dUIsK0Isb0I7dUIsK0Isb0I7RyxJOztJOztLOztNOztTOztVLE87O1MsTTtROzs7O0ksK0IsYztHOztJO0k7O2lDOzBEOztLLCtCO0ssZTttQjtLO007MEIscUI7OztTO1M7O1E7SztLOzs7Ozs7O00sbUMsUzs7Syx1Qjs7TTtPOzZCLHNCOzs7VTtzQjs7VTtTO007TTs7SztNO00sc0Isc0I7OztTO3FCOztTO1E7Z0Msb0M7OztTO1M7OztVOzs7VTtTO1E7SztLO0s7Ozs7O0s7OztlLFk7O2U7Yzs7O0ksdUI7d0Isb0M7O0s7aUI7O0s7STtJO0k7STtHO0c7OEIsOEM7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O2dDOzs7Rzs7STs7Z0M7OztHOzs7dUIsNEI7MkIsZ0M7MEIsMkI7eUIsOEI7dUIsNEI7O0s7SyxxQjtJOztLO0sscUI7STsyQiw4Qjs7SztLLHFCO0k7MEIsK0I7O0s7SyxxQjtJOzZCLGtDO3lCLDRCO3lCLDhCOztLO0sscUI7STsyQixnQzsrQixvQzttQyx3Qzs7SztJOztLO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSS9oQ1EsSUFuQlJpRCxjQUNBQyxrQkFDQUMsaUJBaUJBQzthQUVBQyxPQUFPQztLQUNUO01BQXlCLFFBQUE7TUFBUEM7TUFBZEM7TUFDQUMsY0FGS0g7TUFHTEk7UUFBUTs7bUJBQWlCQztXQUN6QixTQUR5QkE7Z0JBR2ZDLElBSGVEO1lBRHpCRixhQUkwQixXQTNCNUJSLE9BMkJZVyxHQUpWSDs7b0JBR1FILElBRmlCSyxRQUR6QkYsYUFHUUg7V0FHUixPQUx5Qks7VUFLdEI7VUFQSEg7S0FRSixtQkFQSUMsU0FDQUMsU0FGY0g7SUFRTTthQUV0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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7STs7O0c7O0k7SSxJLDJEOzs7O00sUTs7O087Ozs7Ozs7Ozs7YTs7YTs7YTs7YTs7YTs7YTs7Ozs7Ozs7Ozs7O087TztPO087TztPOzs7TTs7Ozs7STtLOzs7Ozs7Ozs7Szs7Ozs7O0ssTTs7SSxPO0c7O0ksUztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7SSxZOztJO0k7SyxJO0ssTztJLE87Rzs7STs7OztnQjtpQjtHOztJOzs7OztPLFk7Ozs7Ozs7USxNOzs7Ozs7O0s7Szs7Ozs0Qjs7O0c7O0ksWTs7O0ssTzs7bUIsTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0k7O2E7Ozs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjt3Qjs7STtJO0ksYztHOztJLFk7OztlOzs7SSxPO0c7O0ksWTs7Ozs7OztLLE87OztLLE87STtLLEs7O087O1U7STtJO0ksYztHOztJLFk7OztlOzs7Ozs7O0ksTztHOztJLGM7O0k7OztpQjs7SztLOzs7O3NCLE8sc0M7O0ksMEI7Ozt1Qzs7Szs7O3lDOztLOzt3Qzs7STtHOzs7O0s7SztLOztJO0k7SSxPO0c7O0k7STtJLE87Rzs7SSwwQjs7O3VDOztLOzs7Ozs7Ozs7VTtVO1U7O007TTtNLE87OztLO0s7SyxPOzt3Qzs7STtHOztJO0k7SSxRLDRCO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7STtJO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksVztJOzs7TTs7O0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7STtJLE87OzRCOztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7SSxPOzs7YztjO2MsTzthOztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7OztNLGMsTztNLHNCOzs7TTs7TztTOzs7WTtZO1c7O08sTTtNOztjOzs7aUI7aUIsTztnQjs7OztJO0c7OztLLE87STtJLE87Rzs7STs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STtLLE87Ozs7TSxnQixPO00sTzs7SyxnQjtLLE87Ozs7O00sTzs7O0s7TSxXO007Yzs7O00sUztNO2M7O0ssTzs7OzthLE87d0I7Szs7O1M7Ozs7VTtTLE87Ozs7O3VDOzs7Szs7Ozs0Qjs7O21COzs7YyxPO3VCO0ksRztLOztNLDRCO0s7Ozs7NEI7Ozs7Szs7TSw0QjtLOzs7OzRCOzs7O2tCO0c7O0k7O0ksTzs7OztrQzs7Rzs7STtLLE87Ozs7O007TTtNLE87OztLO0s7SyxPOzs7OztNO007TTs7O1M7UyxRO1M7UztTO1M7UztTO1E7OztNO00sTzs7O0s7SztLOzs7USxRO1E7UTtPOzs7SztLLE87Ozs7SztLO0ssTzs7O0k7STtJLE87O29CLE8sOEM7O0k7NEM7Ozs7Ozs7O1EsTzs7Ozs7OztTO1UsYTtVOzs7O29DOzs7Ozs7O1E7OztTOztZO1ksTztXO1MsTztTLE87UTtTOztZOzs7ZTs7Ozs7c0I7OztjOzs7Uzs7OzttQzs7Ozs7Ozs7O1EsTzs7Ozs7OztTLE87Ozs7dUcsTzs7STtHO3NDLHVCOztJLE87OztrQzs7Rzs7SSxVO0ksTzs7OztrQzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sVzs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVOzs7O1E7UztTOzs7OztVOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTs7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O2lCO1MsTTs7aUIsTTtTO2lCOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7aUI7UyxNOztpQixNO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtRLGlCO1E7UTtRO2lCOztTO1M7UztTLG1CO1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtTO1M7UztTO1M7UztTO1M7VTtVO1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztROztROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztROztROztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7OztJO0k7STtLLE07STs7Szs7TTs7STtHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7SSxTO0k7SztLO0s7Ozs7SztLLE07O0c7Rzs7STs7OytCLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7Rzs7SSxRO0ksNkI7Rzs7STtLLFM7SyxJO0k7Rzs7SSxTO0ksb0IsTywyQjtJO0s7SyxTO0ssSTtJO0c7O0k7OzsrQixPO0k7SSx1Qjs7SztNO08sTztPO087Ozt5QjtNOzs7OzJCLG9CO007TSwyQzs7STtJLHNCO0c7O0ksUztJLG9CLE8sMkI7STtJO0c7O0k7Rzs7STtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7O0s7O0c7O0k7Szs7TSxNO007O00sTztLO00sTztNLE87SyxNOzRCOztJO0ssTztLLE87SSxjOzs7STs7SyxzQjs7STs7O0ksbUU7STtHOztJLGlDOzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7STs7eUM7MkM7O0k7Rzs7STswQjs7Ozt5QzsyQzs7STtHOztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJLCtEO0k7Rzs7STswQjs7OEM7STtHOztJLGlFO0k7Rzs7SSxrRTtJO0c7O0k7MEI7O2lEO0k7Rzs7STs7SyxPOztJOzs7STtJO2EsTztLLHlCLFE7O00sa0I7Ozs7Rzs7STtJO2EsTzs7O007O08sUTs7Ozs7OztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yyx3RTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztzRDswRDs7YzthOztHOztJOztjLDJFO2M7YTs7Rzs7STtJLE87YTs7K0Isb0IsVzs7Rzs7STtJLE87YTs7K0Isc0IsYTs7Rzs7STs7Ozs7O0ssc0I7O0ksTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1E7O1M7Vzs7O2M7YzthOztRLHNCOztPLGdCLE87TyxzQjs7Ozs0Qzs7O21COztPOzs7O0k7Rzs7STtJLE87Rzs7STtJOzs7Rzs7STtJLEksMkQ7Ozs7TSxROzs7Tzs7Ozs7Ozs7OzthOzthOzthOzthOzthOzthOzs7Ozs7Ozs7Ozs7TztPO087TztPO087OztNOzs7OztJO0s7Ozs7Ozs7OztLOzs7Ozs7SyxNOztJLE87Rzs7SSxTO0k7SSxPO0c7O0ksTztHOztJO0ksTztHOztJLFk7O0k7STtLLEk7SyxPO0ksTztHOztJOzs7O2dCO2lCO0c7O0k7Ozs7O08sWTs7Ozs7OztRLE07Ozs7Ozs7SztLOzs7OzRCOzs7Rzs7SSxZOzs7SyxPOzttQixPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7STs7YTs7OztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCO3dCOztJO0k7SSxjO0c7O0ksWTs7O2U7OztJLE87Rzs7SSxZOzs7Ozs7O0ssTzs7O0ssTztJO0ssSzs7Tzs7VTtJO0k7SSxjO0c7O0ksWTs7O2U7Ozs7Ozs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksYzs7STs7O2lCOztLO0s7Ozs7c0IsTyxzQzs7SSwwQjs7OzBDOzs0Qzs7TTs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7OzswQzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNO007TSxPOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7STtJO0ksTztHOztJLFE7O0k7STtJO0k7SSxPO0c7O0k7STtJLFEsNEI7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJO0k7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxXO0k7OztNOzs7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STtJO0ksTzs7NEI7O0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJLE87OztjO2M7YyxPO2E7O0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STs7OztPLGMsTztPLHNCOzs7Tzs7UTtVOzs7YTthO1k7O1EsTTtPOztlOzs7a0I7a0IsTztpQjs7Ozs7OztPLCtCOzs7OztNLGdCLE87TSxzQjs7O0k7Rzs7O0ssTztJO0ksTztHOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJO0k7O00sTzs7Ozs7USxrQixPO1EsTzs7O087USxXO1E7a0I7OztRLFM7UTtrQjs7TyxPOzs7O08sTzs7TSxrQjtNLE87Ozs7TTttQixPOzBCO087O1EsNEI7Tzs7Ozs4Qjs7O3FCOztNLEk7Ozs7OztrQixPOzJCO1E7OztZOzs7O2E7WSxPOzs7OzswQzs7O1E7Ozs7K0I7OztzQjs7O2lCLE87MEI7TyxHO1E7O1MsNEI7UTs7OzsrQjs7OztROztTLDRCO1E7Ozs7K0I7Ozs7cUI7Ozs7TyxPOzs7OztPO1EsSTtRLE87Ozs7O3NDOzs7TztRO1E7Ozs7O1E7USxPOztPLEk7Ozs7Rzs7STs7SSxPOzs7O2tDOztHOztJO0ssTzs7Ozs7TTtNO007OztTLFE7UztTO1E7OztNO00sTzs7Ozs7TztPO087OztVO1UsUTtVO1U7VTtVO1U7VTtTOzs7TztPLE87OztNO007TTs7O1MsUTtTO1M7UTs7O007TSxPOzs7O007TTtNLE87OztLO0s7SztLOzs7TTtNO007OztNO0s7SyxPOzs7OztNO007TSxPOzs7SztLO0ssTzs7OztLO0s7SyxPOzs7STtJO0ksTzs7b0IsTyw4Qzs7STtJOzs7aUQ7Ozs7Ozs7Ozs7Uzs7O1U7O2E7YSxPO1k7VSxPO1UsTztTO1U7O2E7OztnQjs7Ozs7dUI7OztlOzs7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGE7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7O2dILE87Ozs7OztTLE87Ozs7Ozs7USxPOzs7Szs7RztzQyx1Qjs7SSxPOzs7a0M7O0c7O0ksVTtJLE87Ozs7a0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksTTtHOztJOztLOztLLE87Szs7bUM7OztJOzs7VTtVO0ssTTtJLE87Rzs7SSxXO0k7YTtHOztJO0ssTztLO0ssTTtJO0ksaUI7STthOzs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7OztJLE07Rzs7STs7SztLO0s7Szs7Ozt3QixNO00sVzs7TTs7Ozs7aUIsTTs7Rzs7STs7O0c7O0k7SSxPO0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTtROztRO1M7Uzs7Ozs7VSx1Qjs7OztRO1M7Uzs7Ozs7VSx1Qjs7OztROztnQixxQjs7UTtRO1M7UztTO1M7UztTOzs7O1U7VTtVO1U7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtTO1M7Ozs7VTtVO1U7Ozs7Ozs7O1Usc0I7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7OztROztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7OztRLGMsTztRLE8sYzs7UTs7UTtnQjs7O0c7O0k7STtLOztROztLOzs7OztPLFE7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TztRLEk7USxJO1EsTTtRLEk7UTtRO1E7Ozs7UTtTOztZOztTOzs7OztXO1ksTTtZLE07WSxNO1ksTTtZO1k7WTs7O1ksTztXOztXOztXOzs7TyxPOztPO2U7O0c7O0k7STtLOztROzs7O1M7O1UsSTtTO1M7UyxPOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1Msb0M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTtpQztpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1MsSSx5Qzs7OztXOzs7O1MsSSx5Qzs7OztXOzs7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxtQjtVOztxQjs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLHFCO1U7O3FCOztTO1M7UyxJLFcseUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7UyxPLHFCOztTO1M7UyxJLFcseUI7Ozs7Ozs7Ozs7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTLFE7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7OztTLE87O2tCOzs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtpQjs7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTs7cUI7O1M7UztTOztzQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPLEksYztPO1E7UTtpQjs7O1M7UztTO2tCOzs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O2lCO1MsTTs7aUIsTTtTO2lCOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7aUI7UyxNOztpQixNO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TztPO1E7UTtRLGlCO1E7UTtRO2lCOztTO1M7UztTLG1CO1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztNLE07aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtTO1M7UztTO1M7UztTO1M7VTtVO1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7OztROztROzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztTO1M7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTtVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1E7UTtROztRO1M7O1k7O1M7Ozs7O1c7VztXOztXO1k7O2U7Ozs7Z0IsTzs7Z0I7O2dCOztZOzs7OztXLE87O1c7O1c7Ozs7UTs7UTtROzs7USx5Qzs7UTs7UTtnQjs7O0c7O0k7STtLOztROzs7O1M7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsMEI7O1E7UTs7O1EseUM7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTLE87O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1EsTzs7UTs7USx5QztnQjs7O0c7O0k7MkIsTztJO0c7O0k7SSxPO0c7O0k7WTtJOzs7SyxNO0ssSTtLO0s7Ozs7TSxXO007YTtNOzs7OztJO0c7O0k7SztHOzs7STtJO0k7SyxNO0k7O0s7O007O0k7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7O0k7OzsrQixPOztLLEksbUQ7OztpQyxvQjtNLEk7OztPLE07O00sTTs7STtJO0c7O0ksUTtJLDZCO0c7O0k7SyxTO0ssSTtJO0c7O0ksUztJLG9CLE8sMkI7STtLO0ssUztLLEk7STtHOztJOzs7K0IsTztJO0ksdUI7O0s7TTtPLE87TztPOzs7eUI7TTs7OzsyQixvQjtNO00sMkM7O0k7SSxzQjtHOztJLFM7SSxvQixPLDJCO0k7STtHOztJO0c7O0k7RztHOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs0QjtHO0c7O0k7O0ssSSxXLHdDOzs7NkI7Ozs7SSxXO0ksYzs7O0k7STtlOzs7O00sSSxZOzs7OEI7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSxpQzs7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0k7O3lDOzJDOztJO0c7O0k7MEI7Ozs7eUM7MkM7O0k7Rzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7SSwrRDtJO0c7O0k7MEI7OzhDO0k7Rzs7SSxpRTtJO0c7O0ksa0U7STtHOztJOzBCOztpRDtJO0c7O0k7O0ssTzs7STs7O0k7STthLE87Syx5QixROztNLGtCOzs7O0c7O0k7STthLE87OztNOztPLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGM7O0k7OztpQjs7SztLOzs7O3NCLE8sc0M7O0ksMEI7Ozs7NEM7O007OzswQzs7TSxPOzsyQzs7Szs7OztLLE87Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7Ozs7NEM7O007Ozs7Ozs7OztXO1c7Vzs7TztPO08sTzs7O00sTzs7OztNO007TSxPOzs7Szs7OztLLE87Ozt5Qzs7Szs7OztLLE87OztJO0c7O0k7STtJLE87Rzs7SSxROztJO0k7STtJO0ksTztHOztJO0k7SSxRLDRCO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7STtJO0ksTztHOztJO0k7STs7Szs7OztnQjtJO0ksVztJOzs7TTs7O0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7STtJLE87OzRCOztHOztJO0k7STs7Szs7OztnQjtJO0ksUTtJO0k7Rzs7STtJO0k7O0s7Ozs7Z0I7SSxPOzs7YztjO2MsTzthOztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087O1E7VTs7O2E7YTtZOztRLE07Tzs7ZTs7O2tCO2tCLE87aUI7Ozs7Ozs7TywrQjs7Ozs7TSxnQixPO00sc0I7OztJO0c7O0k7SyxPOzs7Ozs7TztPO087OztVLFE7VTtVO1M7OztPO08sTzs7O007TTtNO007OztPO087Tzs7O087TTtNLE87Ozs7O087TztPOzs7VTtVLFE7VTtVO1U7VTtVO1U7Uzs7O087TyxPOzs7TTtNO00sTzs7OztNO007TTs7O1MsUTtTO1M7UTs7O007TSxPOzs7SztLO0ssTzs7OztLO0s7SyxPOzs7OztNO007TSxPOzs7SztLO0ssTzs7OztLO0s7SyxPOzs7STtJO0ksTzs7b0IsTyw0Qzs7STtJOzs7aUQ7Ozs7Ozs7Ozs7UyxPOzs7OztTOzs7VTs7YTthLE87WTtVLE87VSxPO1M7VTs7YTs7O2dCOzs7Ozt1Qjs7O2U7OztVOzs7O29DOzs7Ozs7Ozs7Ozs7Ozs7VSxPOzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGU7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7Ozs7O1UsTzs7Ozs7OztTLE87Ozs7Ozs7UyxPOzs7Ozs7O1EsTzs7O0s7O0c7OztLLE87STtJLE87Rzs7STs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7STtJOztNLE87Ozs7O08sTzs7OztRLGtCLE87USxPOzs7TztRLFc7UTtrQjs7O1EsUztRO2tCOztPLE87Ozs7TyxPOztNLGtCO00sTzs7Ozs7O1EsTzs7O2UsTzswQjtPOzs7Vzs7OztZO1csTzs7Ozs7eUM7OztPOzs7OzhCOzs7cUI7Ozs7TyxPOzs7Z0IsTzt5QjtNLEc7Tzs7USw0QjtPOzs7OzhCOzs7O087O1EsNEI7Tzs7Ozs4Qjs7OztvQjs7OztNO3FCLE87MEI7Tzs7USw0QjtPOzs7OzhCOzs7cUI7O00sSTs7Ozs7O087USxJO1EsTzs7Ozs7c0M7OztPO1E7UTs7Ozs7UTtRLE87O08sSTs7OztHOztJOztJLE87Ozs7a0M7O0c7c0MseUI7O0ksTzs7O2tDOztHOztJLFU7SSxPOzs7O2tDOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHR25GSjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7O1lBS0ltRSxNQUFNdkMsR0FBSSxNQUFBLHVDQUFKQSxPQUFtQjtZQUV6Qm1ELGdCQUFnQkMsR0FBRXBEO0lBQ3BCLFlBRGtCb0Q7O1NBR1Q5QyxjQUZMK0MsS0FFVSxr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UTtZQUVWQyxtQkFBbUJDLFNBQVFDLFFBQU9uSSxJQUFHZDtJQUMxQixJQUFUa0osU0FBUztJQUNiLFdBRjZCRCxRQUN6QkMsUUFEbUNsSjtJQUczQjtLQUFSbUosUUFBUSw2QkFGUkQ7S0FHQU4sTUFBTSxxQ0FETk87S0FFQU4sUUFBTyxXQUxVRyxTQUlqQko7SUFFSixPQUFBLGlDQU5vQzlILElBS2hDK0g7R0FDeUI7Ozs7O09BNVAzQi9FO09Bc0NBc0I7T0FLQUU7T0E0RUFpQjtPQVlBQztPQW5GQWpCO09BVUFHO09BV0FDO09BT0FDO09BT0FDO09BSUFDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BS0FDO09BR0FDO09BMkJBSztPQUlBRTtPQUlBQztPQUlBQztPQUlBQztPQUlBQztPQVFBRTtPQUlBQztPQVFBRztPQVNBSTtPQWdCQUM7T0FHQUc7T0FoQ0FWO09BWkFIO09BMEVBd0I7T0F6QkFWO09BVUFHO09BR0FFO09Bc0JBWTtPQVBBTjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7O00sNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCO00sVztLOzs7SSxJLFcsb0I7Ozs7Szs7OztNO0s7SztLO0s7O007TTtNOztLO0ssVztLO0ssTzs7Rzs7Ozs7Ozs7OztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGlCO0c7O0ksd0I7Rzs7STtJLE87O0c7O0ksVztJLE87Rzs0QixPLDZCOzZCLCtDO0c7SSxnQjtJLHFCO0ksaUI7SSxzQjs7Ozs7Ozs7Ozs7Ozs7OztJLG1COztJO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGdCO0c7O0k7aUI7RztnQyxPLG9DOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztpQyxPLGtDOztJO0s7TSxPO00sTztLOzs7OztLLEksdUI7Szs7O1E7Ozs7Ozs7O1E7Tzs7Szs7O1MsRyxtQztTO1UsdUI7VTs7Ozs7O1U7Vzs7MEI7Vzs7OztrQzs7OztRO007Ozs7Ozs7O2M7Ozs7TTtPO087ZTtLO007UTtXOzs7O21CO007UTs7O1c7VyxPOzs7cUI7cUI7b0I7O1U7O0ssTzs7Rzs7SSxJLFcsc0M7Ozs7d0M7O0s7TSxHO08sTTtNLEksTzs7Ozs7TSxHO08sTTtxQjs7SztNLEc7TyxNO007TyxPO08sTzs7Ozs7O29COztLOztHOztJO0ssSSxXLDhCOzs7Ozs7Ozs7Rzs7STs7Tzs7STtHOzs7STs7SyxPOzs7ZSxJLFcsd0I7OzsyQzs7O2M7O0k7STtLO0s7b0I7TSxXOzs7O0k7STs7OztLO0ksTzs7OztjLE87YTtHOztJO0c7OztJOztHO0c7SSxrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SyxROzs7SyxTO0ksSTs7O0s7SztLLE07O0k7STtHOztJO0ssUTs7O0ssVTtJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztJLEksYzs7O0s7SztLLE07O0k7OztLLFM7SyxVO0k7Szs7Ozs7SztLO0s7SztLLE07O0k7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOzs7SSxJLGM7OztLO0s7SztLO0ssTTs7STs7O0ssUztLLFU7SyxVO0k7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxNOztJO0k7STtJO0c7O0ksTztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7SyxXO0s7Ozs7O00sTTs7OztHOztJLE87Rzs7STtHOztJO0c7OztJOzs7O0k7OztJLEksb0I7STtJO0k7Rzs7SSxJLHFCO0k7SSxJOzs7OztJO0c7O0k7OztLO0s7STtJO0ksSTs7Ozs7STs7O0k7Ozs7SztLO0k7STtJLEk7Ozs7O0k7STs7O0ksVztJO0s7SztNLE87TSxXO0s7Ozs7SztLLE07O0c7O0ksTyxzQjtHOztJLFc7STtJO0k7O0s7TSxJLFk7Ozs7Ozs7OztLLGtCLEs7O2Usc0I7TTtNO08sUztPLFU7TTtNOztVLHVCOztHOzs7OztzQjs7c0I7c0I7Ozs0Qjs0Qjs7UTs7NEI7O1E7O3NCO3NCOzRCOztzQjtzQjtzQjtzQjs7OztrQztzQjtzQjs7Ozs7O3NCO3NCOzs7O1E7OzRCOzRCOzs7c0I7Ozs7Uzs7NkI7NkI7Ozt1Qjs7OzRCO2tDO3NCOzRCOzRCOztROzs7UTs7c0I7NEI7NEI7a0M7c0I7c0I7c0I7c0I7OztzQjtzQjtzQjs7Ozs7NEI7NEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztROzs0Qjs0QjtzQjtzQjs7c0I7c0I7Ozs7c0I7O3NCO3NCOztROztzQjs0Qjs7c0I7c0I7c0I7c0I7c0I7c0I7c0I7NEI7c0I7c0I7c0I7O3NCO3NCO3NCOzs7Ozs7O1E7Ozs7UTs7MEI7MEI7MEI7MEI7MEI7cUI7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7cUI7cUI7cUI7cUI7MEI7MEI7OztxQjsrQjswQjtxQjswQjswQjtxQjs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDRDLGU7O0s7WTtLOzs7O0k7Ozs7OztLLFU7TTtNOztvQjtNO007Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsZ0I7O0k7O087O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztROztROztROztRO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7O3lDOzs7Ozs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO0ksTzswQyx1QjtHO0c7STs7STs7Ozs7Ozs7Ozs7Ozs7O0k7STs7SyxtQjs7SztJO3dCLHNCOztJO0c7c0IsWTtxQixZO3VCLFk7O0k7RzswQixXOzs7SSxPOzs7Ozs7RztJOzs7Ozs7Ozs7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7SSxPOztxQyxPLHNCOzs7Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs7OzRCLDBCOzhCLG1COzs7SztLLE87STtJO0ksTztHOzs7STs7O2U7O0ksTzs7Ozs7Ozs7Ozs7O1k7O0k7SztTOzs7O0k7YTs7SyxPOztZLE87O0ksTzs7O0k7Ozs7STs7OztJOzs7Ozt5QixxQixPLGlCO0ssTzs7O2U7O2dCLE07Z0IsTTtlLE87Ozs7Ozs7YztJO0k7RztHOytCLG9CO2tDLHlCO0c7Z0MscUI7bUMsMEI7d0IsUzs7STtJO2dCLE87Ozs7SyxPOzs7STtHO3lCLFM7a0MscUM7MkIsaUM7MkIsaUM7NEIsaUM7NEIsaUM7NkIsaUM7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QztPQUdBQztPQUVBQztPQUVBQztPQUdBQztPQUVBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUlBQztPQUVBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBQztPQUVBQztPQUdBQztPQUdBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUdBQztPQUNBQztPQUdBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJOztHOzhCLE8sdUM7O0ksTzs7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O08sTztPLGM7TTs7STtHOzs7Ozs7Ozs7NEIsc0I7OEIsaUM7O0k7STs7OEIsaUIsa0I7OztROzs0QixPOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLE87OzRCOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7OztHOzZCOztJOzs7Ozs7Ozs7Szs7TTtLLE87O0ksTTtHO0c7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLHFCO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzBDOzs7USxrQixRO3dCOztTO1UsUTtVO1U7VTtVOzs7Ozs7OztrQzs7OzswQiwyQjtRLFU7USwrQjs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksbUI7STs7O087TztNOzs7Ozs7STtZOzs7Ozs7Rzs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7O1UsSSxtQjs7VSxJLG1COzs7Ozs7OztTOzs7UTs7Ozs7O007TSxlOztJOztLLEk7SztxQjtnQix3QyxxQjtNLFM7TTs7O2dCO21CO08sUzs7OztTLE87Uzs7Ozs7TyxJOzs7TTtNLEk7O0k7SSxJOzs7YztHO3NCLDRCO2dDLDRCOztJOztLLE07SztLO0s7Ozs7TSxJLEksdUI7Ozs7OztTOzs7Ozs7UTtROzs7O087OztNOzs7OztJLE87Rzs2QiwwQjt1QywwQjtHOztJLFU7OztHOztJLFU7OztHOztJLFU7OzZCLE07STtHOztJLFU7OzZCLE07STtHOztJOztLO0ssZSxNO0s7O0ksTztHOztJOztLO007TTtLLGUsTTtLOztJLE87Rzs7STs7SztNO007TTtLLGEsTTtLLE87O0ksTztHO21DLDBCOzZCLG9CO2dDLDZCOztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxHLGdDOztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7O0k7Rzs7STtJOzs7Ozs7TTs7TyxvQjs7UTtTO1M7Uzs7OztpQjs7Ozs7OztPO1E7UTtROzs7Ozs7OztLLE87O0c7bUMseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7O0l1QnhEQWk0QztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFoRkFDLFlBRUE3VDtJQUZjLFVBRWRBLDhCQUFBQSxVQURLMkMsSUFDTDNDLE1BRFUsT0FBTDJDO0lBQ0EsTUFBQTs0REFBTDNDO0dBQWtFO1lBZ0lsRThUO0lBQWtCOztXQUNSL1AsY0FBSDNGLHdD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QUFBO2NBQXVCLE9BQUE7d0RBQVMsZUFBZTthQUFBO0dBQUE7WUFFN0NDO0lBQ0Y7Ozs7O0tBQUEsTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7dUNBTkVEO0dBTzJFO1lBRXZFRSxLQUFNQyxHQUF5QkM7SUFDckM7S0FBQSxNQUFBLFdBRFlEO0tBQ1o7T0FBQTs7O3lCQUFtQixPQUFvQyxzQ0FEbEJDLEdBQ1k7SUFBTSxPQUFBLDBDLE9BRGpERixLQUFNQyxHQUF5QkM7R0FDMEI7WUFFN0RDO0lBQ0YsT0FBRztlQUNRLGlEQWRUTDs7R0FpQmU7WUFFZk07SUFDRixPQUFxQjs7OztjQUNqQixJQUFBLFdBQUEsTUFBQSxnQ0FoQkZMO2NBZ0IrQixPQUFBOzs7cUMsT0FaM0JDLEtBR0pHO2FBU2tEO0dBQUM7K0JBckJuREwsTUFLQUMsTUFjQUs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDckJBQztJQUNPO0lBQ0U7S0FBUEMsT0FBTztLQUVvQyxNQUFBO0tBQXhCLE1BQUE7SUFBckIsK0JBRkVBO0lBSTBCLFVBQUE7SUFBckIsK0JBSkxBO0lBSzBCLFVBQUE7SUFBckIsK0JBTExBO0lBTzJDO0tBQUEsTUFBQTtLQUF4QixNQUFBO0lBQXJCLCtCQVBFQTtJQVVLO0lBQ0E7SUFDQTtJQUlMO0tBQUE7T0FBQTs7O1VBQ2E7VUFDQTtVQUNBO1VBQ1Q7U0FBUTtLQUpaOztJQURGO0dBT007R0FFMEI7SUFBQSxLQUFBLHFDQTFCaENEO0lBMEJnQzs7R0FBNUI7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7O0dDakJBO0dBQUE7OztFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gTWxJbnQ2NCAobG8sbWksaGkpIHtcbiAgdGhpcy5sbyA9IGxvICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSBtaSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX2pcIlxuTWxJbnQ2NC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8sdGhpcy5taSx0aGlzLmhpKTtcbn1cblxuTWxJbnQ2NC5wcm90b3R5cGUudWNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICBpZiAodGhpcy5oaSA+IHguaGkpIHJldHVybiAxO1xuICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICB2YXIgeGhpID0geC5oaSA8PCAxNjtcbiAgaWYgKGhpID4geGhpKSByZXR1cm4gMTtcbiAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsbyA9IC0gdGhpcy5sbztcbiAgdmFyIG1pID0gLSB0aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gLSB0aGlzLmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyArIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgKyB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvIC0geC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpIC0geC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICB2YXIgbWkgPSAoKGxvICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLm1pICogeC5sbyArIHRoaXMubG8gKiB4Lm1pO1xuICB2YXIgaGkgPSAoKG1pICogY2FtbF9pbnQ2NF9vZmZzZXQpIHwgMCkgKyB0aGlzLmhpICogeC5sbyArIHRoaXMubWkgKiB4Lm1pICsgdGhpcy5sbyAqIHguaGk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmxvfHRoaXMubWl8dGhpcy5oaSkgPT0gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMuaGkgPDwgMTYpIDwgMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvICYgeC5sbywgdGhpcy5taSAmIHgubWksIHRoaXMuaGkgJiB4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG98eC5sbywgdGhpcy5taXx4Lm1pLCB0aGlzLmhpfHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG9eeC5sbywgdGhpcy5taV54Lm1pLCB0aGlzLmhpXnguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfbGVmdCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmxvIDw8IHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCBzKSB8ICh0aGlzLmxvID4+ICgyNCAtIHMpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpKTtcbiAgfVxuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG8gPDwgKHMgLSAyNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5taSA8PCAocyAtIDI0KSkgfCAodGhpcy5sbyA+PiAoNDggLSBzKSkpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSlcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAodGhpcy5oaSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiBzKSk7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IChzIC0gMjQpKSxcbiAgICAgIDApO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgdmFyIGggPSAodGhpcy5oaSA8PCAxNikgPj4gMTY7XG4gIGlmIChzIDwgMjQpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMubWkgPj4gcykgfCAoaCA8PCAoMjQgLSBzKSksXG4gICAgICAoKHRoaXMuaGkgPDwgMTYpID4+IHMpID4+PiAxNik7XG4gIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAyNCkgPj4gMTYsXG4gICAgICBzaWduICYgMHhmZmZmKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNsMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oaSA9ICh0aGlzLmhpIDw8IDEpIHwgKHRoaXMubWkgPj4gMjMpO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pIDw8IDEpIHwgKHRoaXMubG8gPj4gMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzcjEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG8gPSAoKHRoaXMubG8gPj4+IDEpIHwgKHRoaXMubWkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gKCh0aGlzLm1pID4+PiAxKSB8ICh0aGlzLmhpIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG59XG5NbEludDY0LnByb3RvdHlwZS51ZGl2bW9kID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBtb2R1bHVzID0gdGhpcy5jb3B5KCk7XG4gIHZhciBkaXZpc29yID0geC5jb3B5KCk7XG4gIHZhciBxdW90aWVudCA9IG5ldyBNbEludDY0KDAsMCwwKTtcbiAgd2hpbGUgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPiAwKSB7XG4gICAgb2Zmc2V0Kys7XG4gICAgZGl2aXNvci5sc2wxKCk7XG4gIH1cbiAgd2hpbGUgKG9mZnNldCA+PSAwKSB7XG4gICAgb2Zmc2V0IC0tO1xuICAgIHF1b3RpZW50LmxzbDEoKTtcbiAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICBxdW90aWVudC5sbyArKztcbiAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICB9XG4gICAgZGl2aXNvci5sc3IxKCk7XG4gIH1cbiAgcmV0dXJuIHsgcXVvdGllbnQgOiBxdW90aWVudCwgbW9kdWx1cyA6IG1vZHVsdXMgfTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGkgXiB5LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHEgPSB4LnVkaXZtb2QoeSkucXVvdGllbnQ7XG4gIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgcmV0dXJuIHE7XG59XG5NbEludDY0LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpO1xuICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gIGlmICh5LmhpICYgMHg4MDAwKSB5ID0geS5uZWcoKTtcbiAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgaWYgKHNpZ24gJiAweDgwMDApIHIgPSByLm5lZygpO1xuICByZXR1cm4gcjtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvSW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvRmxvYXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMuaGkgPDwgMTYpICogTWF0aC5wb3coMiwgMzIpICsgdGhpcy5taSAqIE1hdGgucG93KDIsIDI0KSkgKyB0aGlzLmxvO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFt0aGlzLmhpID4+IDgsXG4gICAgICAgICAgdGhpcy5oaSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICAgICAodGhpcy5taSA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5taSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICAgICAodGhpcy5sbyA+PiA4KSAmIDB4ZmYsXG4gICAgICAgICAgdGhpcy5sbyAmIDB4ZmZdO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubG8zMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAoKHRoaXMubWkgJiAweGZmKSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5oaTMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdWx0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3VsdCh4LHkpIHsgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jb21wYXJlKHgseSwgdG90YWwpIHsgcmV0dXJuIHguY29tcGFyZSh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbmVnIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X25lZyAoeCkgeyByZXR1cm4geC5uZWcoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCAoeCwgeSkgeyByZXR1cm4geC5hZGQoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3N1YiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zdWIgKHgsIHkpIHsgcmV0dXJuIHguc3ViKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tdWwgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2ludDY0X211bCh4LHkpIHsgcmV0dXJuIHgubXVsKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc196ZXJvIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX3plcm8oeCkgeyByZXR1cm4gK3guaXNaZXJvKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7IHJldHVybiAreC5pc05lZygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYW5kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FuZCAoeCwgeSkgeyByZXR1cm4geC5hbmQoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vciAoeCwgeSkgeyByZXR1cm4geC5vcih5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3hvciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF94b3IgKHgsIHkpIHsgcmV0dXJuIHgueG9yKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfbGVmdChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHRfdW5zaWduZWQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9kaXYgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZGl2ICh4LCB5KSB7IHJldHVybiB4LmRpdih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCAoeCwgeSkgeyByZXR1cm4geC5tb2QoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2ludDMyIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh4ICYgMHhmZmZmZmYsICh4ID4+IDI0KSAmIDB4ZmZmZmZmLCAoeCA+PiAzMSkgJiAweGZmZmYpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9faW50MzIgKHgpIHsgcmV0dXJuIHgudG9JbnQoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQgKHgpIHsgcmV0dXJuIHgudG9GbG9hdCAoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0ICh4KSB7XG4gIGlmICh4IDwgMCkgeCA9IE1hdGguY2VpbCh4KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIHggJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmZmZixcbiAgICBNYXRoLmZsb29yKHggKiBjYW1sX2ludDY0X29mZnNldCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZm9ybWF0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdCAoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7IHggPSBjYW1sX2ludDY0X25lZyh4KTtcbiAgfVxuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgdmFyIHdiYXNlID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihmLmJhc2UpO1xuICB2YXIgY3Z0YmwgPSBcIjAxMjM0NTY3ODlhYmNkZWZcIjtcbiAgZG8ge1xuICAgIHZhciBwID0geC51ZGl2bW9kKHdiYXNlKTtcbiAgICB4ID0gcC5xdW90aWVudDtcbiAgICBidWZmZXIgPSBjdnRibC5jaGFyQXQoY2FtbF9pbnQ2NF90b19pbnQzMihwLm1vZHVsdXMpKSArIGJ1ZmZlcjtcbiAgfSB3aGlsZSAoISBjYW1sX2ludDY0X2lzX3plcm8oeCkpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBidWZmZXI7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgYnVmZmVyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9mYWlsd2l0aCwgY2FtbF9wYXJzZV9kaWdpdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF91bHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9uZWdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCxjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBiYXNlNjQgPSBjYW1sX2ludDY0X29mX2ludDMyKGJhc2UpO1xuICB2YXIgdGhyZXNob2xkID1cbiAgICAgIG5ldyBNbEludDY0KDB4ZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZikudWRpdm1vZChiYXNlNjQpLnF1b3RpZW50O1xuICB2YXIgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gbXVsdGlwbGljYXRpb24gYmFzZSAqIHJlcyAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdCh0aHJlc2hvbGQsIHJlcykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKGJhc2UgPT0gMTAgJiYgY2FtbF9pbnQ2NF91bHQobmV3IE1sSW50NjQoMCwgMCwgMHg4MDAwKSwgcmVzKSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgaWYgKHNpZ24gPCAwKSByZXMgPSBjYW1sX2ludDY0X25lZyhyZXMpO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkobG8sIG1pLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKVxufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGxvLCBoaSl7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgbG8gJiAweGZmZmZmZixcbiAgICAoKGxvID4+PiAyNCkgJiAweGZmKSB8ICgoaGkgJiAweGZmZmYpIDw8IDgpLFxuICAgIChoaSA+Pj4gMTYpICYgMHhmZmZmKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpeyByZXR1cm4gdi5sbzMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KXsgcmV0dXJuIHYuaGkzMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChhWzddIDw8IDAgfCAoYVs2XSA8PCA4KSB8IChhWzVdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbNF0gPDwgMCB8IChhWzNdIDw8IDgpIHwgKGFbMl0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVsxXSA8PCAwIHwgKGFbMF0gPDwgOCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19ieXRlcyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19ieXRlcyh4KSB7IHJldHVybiB4LnRvQXJyYXkoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpe1xuICByZXR1cm4gKHYubG8zMigpKSBeICh2LmhpMzIoKSlcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIGEgPSBuZXcgVWludDhBcnJheShhKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL0FsaWFzOiBjYW1sX2ZpbGxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gcy5jaGFyQ29kZUF0KGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gcy5sZW5ndGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPy0xOihzMSA+IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8PSBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhbiBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMuYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNhbWxfanNieXRlc19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSB7XG4gIGlmKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIHM7XG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICBpZiAoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKVxuICBlbHNlIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfdXRmOF9vZl91dGYxNihzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIG5ldyBNbEJ5dGVzKDAscyxzLmxlbmd0aCk7IH1cblxuXG4vLyBUaGUgc2VjdGlvbiBiZWxvdyBzaG91bGQgYmUgdXNlZCB3aGVuIHVzZS1qcy1zdHJpbmc9ZmFsc2VcblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocyxpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocyxpLGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19jb21wYXJlXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19jb21wYXJlKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9zdHJpbmcocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB7IHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKXtcbiAgcmV0dXJuIHMudG9VdGYxNigpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiAocyBpbnN0YW5jZW9mIE1sQnl0ZXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfY29udGVudChzKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgY2FzZSAwOiAvKiBCWVRFUyAqL1xuICAgIHJldHVybiBzLmM7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcy5jXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gKHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3QocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9pc19tbF9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9pc19tbF9ieXRlcyhzKTtcbn1cblxuLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgZGVwcmVjYXRlZFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbmV3X3N0cmluZyAocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19mcm9tX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3RvX2pzX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdG9fc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9ieXRlcyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHgpIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUmFpc2UgZXhjZXB0aW9uXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9jb25zdGFudCAodGFnKSB7IHRocm93IHRhZzsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBhcmcpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWcsIGFyZ10pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzIChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX2FyZ3MgKHRhZywgYXJncykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZ10uY29uY2F0KGFyZ3MpKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nICh0YWcsIG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aCAobXNnKSB7XG4gIGlmKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlPVsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksLTNdO1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSwgbXNnKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkludmFsaWRfYXJndW1lbnQsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkRpdmlzaW9uX2J5X3plcm8pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub3RfZm91bmQgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuTm90X2ZvdW5kKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKVxuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciBnID0gZi5hcHBseShudWxsLGFyZ3Muc2xpY2UoMCxuKSk7XG4gICAgaWYodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGc7XG4gICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZyxhcmdzLnNsaWNlKG4pKTtcbiAgfVxuICBlbHNlIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3MubGVuZ3RoK2V4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIG5hcmdzW2FyZ3MubGVuZ3RoK2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpO1xuICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICBpZiAoZCA9PSAwKSB7XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbiAtIDFdO1xuICAgIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIG4pO1xuICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gayhnKTtcbiAgICAgIHZhciBhcmdzID0gcmVzdC5zbGljZSgpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdID0gaztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3MpOyB9O1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NMZW4tLTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSwgeil7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDJdID0gejtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIGV4dHJhX2FyZ3MpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrIClcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQgKyAxO1xuICAgIHJldHVybiBrKGcpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLHYpIHtcbiAgY2FtbF9uYW1lZF92YWx1ZXNbY2FtbF9qc2J5dGVzX29mX3N0cmluZyhubSldID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG5mdW5jdGlvbiBjYW1sX25hbWVkX3ZhbHVlKG5tKSB7XG4gIHJldHVybiBjYW1sX25hbWVkX3ZhbHVlc1tubV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nbG9iYWxfZGF0YVxudmFyIGNhbWxfZ2xvYmFsX2RhdGEgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnVpbGRfc3ltYm9scyhzeW1iKSB7XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpIHtcbiAgICAgIGlmKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV1cbiAgICAgIGlmKG5pZCA+PSAwKVxuICAgICAgICBuID0gbmlkXG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfcmVnaXN0ZXJfZ2xvYmFsOiBjYW5ub3QgbG9jYXRlIFwiICsgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNhbWxfZ2xvYmFsX2RhdGFbbiArIDFdID0gdjtcbiAgaWYobmFtZV9vcHQpIGNhbWxfZ2xvYmFsX2RhdGFbbmFtZV9vcHRdID0gdjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfZ2xvYmFsX2RhdGEgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9nZXRfZ2xvYmFsX2RhdGEgKCkgeyByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3ByaW50YWJsZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2lzX3ByaW50YWJsZShjKSB7IHJldHVybiArKGMgPiAzMSAmJiBjIDwgMTI3KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX3ByaW50X3N0YXRzXG5mdW5jdGlvbiBjYW1sX21heWJlX3ByaW50X3N0YXRzKHVuaXQpIHsgcmV0dXJuIDAgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydFxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IodGFyZ2V0KSB7XG4gIHJldHVybiB7fTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19mcmVlX2N1cnNvcihjdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbChjdXJzb3IsIGNhbGxiYWNrcywgbnVtKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBVSW50OEFycmF5UmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IHM7IHRoaXMuaSA9IGk7IH1cblVJbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK10gPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCA4KSB8IHNbaSArIDFdXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAgICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM107XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHZhciBzID0gdGhpcy5zO1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0KGkpO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5kYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHZhciBtYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHN3aXRjaChtYWdpYyl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAwO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSBkYXRhX2xlbjtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gcmVhZGVyLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDE7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIpO1xuICAgIGJyZWFrXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWs7XG4gIH1cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZihjb21wcmVzc2VkKSB7XG4gICAgaWYoY2FtbF9kZWNvbXByZXNzX2lucHV0KSB7XG4gICAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkX2RhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBjYW1sX2RlY29tcHJlc3NfaW5wdXQoZGF0YSwgcmVzKTtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNvbXByZXNzZWQgb2JqZWN0LCBjYW5ub3QgZGVjb21wcmVzc1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAyMFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNlxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIHZhciByID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKSwgb2ZzKTtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBzd2l0Y2goci5yZWFkMzJ1KCkpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgIGJyZWFrO1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWtcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5NYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLk1hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuIEl0IHNlZW1zIGJldHRlciB0b1xuICAgICAgICAgIC8vIHN5c3RlbWF0aWNhbGx5IGZhaWwgb24gbWFyc2hhbGxpbmcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICAvLyAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEIgLypjc3QuQ09ERV9ET1VCTEVfQklHKi8pO1xuICAgICAgICAgIC8vICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0W2ldKX1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Zkc1xudmFyIGNhbWxfc3lzX2ZkcyA9IG5ldyBBcnJheSgzKTtcblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlKSBmaWxlLmNsb3NlKCk7XG4gIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLGlkeCkge1xuICBpZihpZHggPT0gdW5kZWZpbmVkKXtcbiAgICBpZHggPSBjYW1sX3N5c19mZHMubGVuZ3RoO1xuICB9XG4gIGNhbWxfc3lzX2Zkc1tpZHhdID0gZmlsZTtcbiAgcmV0dXJuIGlkeCB8IDA7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoZmlsZSwgdW5kZWZpbmVkKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGZpbGUoZmQsIGZsYWdzKSB7XG4gICAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIG5ldyBNbEZha2VGZF9vdXQoZmQsIGZsYWdzKVxuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgwLHtyZG9ubHk6MSxhbHRuYW1lOlwiL2Rldi9zdGRpblwiLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMCk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgxLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMSk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgyLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMik7XG59KSgpXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCAoKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBjID0gMDsgYyA8IGNhbWxfbWxfY2hhbm5lbHMubGVuZ3RoOyBjKyspe1xuICAgIGlmKGNhbWxfbWxfY2hhbm5lbHNbY10gJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vcGVuZWQgJiYgY2FtbF9tbF9jaGFubmVsc1tjXS5vdXQpXG4gICAgICBsPVswLGNhbWxfbWxfY2hhbm5lbHNbY10uZmQsbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQgKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy5yZG9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgcmVhZG9ubHlcIik7XG4gIHZhciBidWZmZXJlZCA9IChmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQpID8gZmlsZS5mbGFncy5idWZmZXJlZCA6IDE7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDp0cnVlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICBidWZmZXJlZDpidWZmZXJlZFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4gKGZkKSAge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3Mud3Jvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHdyaXRlb25seVwiKTtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6ZmlsZSxcbiAgICBvZmZzZXQ6ZmlsZS5mbGFncy5hcHBlbmQ/ZmlsZS5sZW5ndGgoKTowLFxuICAgIGZkOmZkLFxuICAgIG9wZW5lZDp0cnVlLFxuICAgIG91dDogZmFsc2UsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXJfbWF4OjAsXG4gICAgYnVmZmVyOm5ldyBVaW50OEFycmF5KDY1NTM2KSxcbiAgICByZWZpbGw6cmVmaWxsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vQWxpYXM6IHdpbl9maWxlZGVzY3Jfb2ZfY2hhbm5lbFxuZnVuY3Rpb24gY2FtbF9jaGFubmVsX2Rlc2NyaXB0b3IoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLG1vZGUpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5maWxlLmZsYWdzLnRleHQgPSAhbW9kZVxuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYmluYXJ5X21vZGUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5maWxlLmZsYWdzLmJpbmFyeVxufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoY2hhbi5vcGVuZWQpIHtcbiAgICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG4vL1ZlcnNpb246ID49IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbi8vUmVxdWlyZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICByZXR1cm4gY2FtbF9nY19xdWlja19zdGF0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFydG91dCwgSU5SSUEgUGFyaXMtU2FjbGF5ICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDYW1saW50ZXJuYWxBdG9taWMgaXMgYSBkZXBlbmRlbmN5IG9mIFN0ZGxpYiwgc28gaXQgaXMgY29tcGlsZWQgd2l0aFxuICAgLW5vcGVydmFzaXZlcy4gKilcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBXZSBhcmUgbm90IHJldXNpbmcgKCdhIHJlZikgZGlyZWN0bHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uXG4gICBhYm91dCBhdG9taWNpdHkgaWYgd2Ugd2lzaCB0bzogZXZlbiBpbiBhIHNlcXVlbnRpYWwgaW1wbGVtZW50YXRpb24sXG4gICBzaWduYWxzIGFuZCBvdGhlciBhc3luY2hyb25vdXMgY2FsbGJhY2tzIG1pZ2h0IGJyZWFrIGF0b21pY2l0eS4gKilcbnR5cGUgJ2EgdCA9IHttdXRhYmxlIHY6ICdhfVxuXG5sZXQgbWFrZSB2ID0ge3Z9XG5sZXQgZ2V0IHIgPSByLnZcbmxldCBzZXQgciB2ID0gci52IDwtIHZcblxuKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHNldCB0byBuZXZlciBiZSBpbmxpbmVkOiBGbGFtYmRhIGlzXG4gICBhbGxvd2VkIHRvIG1vdmUgc3Vycm91bmRpbmcgY29kZSBpbnNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sXG4gICBpbmNsdWRpbmcgYWxsb2NhdGlvbnMuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBleGNoYW5nZSByIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gdjtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNvbXBhcmVfYW5kX3NldCByIHNlZW4gdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIGlmIGN1ciA9PSBzZWVuIHRoZW4gKFxuICAgIHIudiA8LSB2O1xuICAgICgqIEVORCBBVE9NSUMgKilcbiAgICB0cnVlXG4gICkgZWxzZVxuICAgIGZhbHNlXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmZXRjaF9hbmRfYWRkIHIgbiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSAoY3VyICsgbik7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0IHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGhkIDo6IHRsIC0+IGhkIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICBsZXQgbW9kdWxlIEF0b21pYyA9IENhbWxpbnRlcm5hbEF0b21pYyBpblxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IEF0b21pYy5tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgQXRvbWljLmNvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19hdF9leGl0ICgpID0gKENhbWxpbnRlcm5hbEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCA6IHVuaXQgLT4gYm9vbFxuICA9IFwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZFwiXG5sZXQgKCkgPSBpZiBuYWtlZF9wb2ludGVyc19jaGVja2VkICgpIHRoZW4gYXRfZXhpdCBtYWpvclxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICA9IENvbXBsZXhcbm1vZHVsZSBEaWdlc3QgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgID0gR2Ncbm1vZHVsZSBHZW5sZXggICAgICAgPSBHZW5sZXhcbm1vZHVsZSBIYXNodGJsICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBQYXJzaW5nICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUGVydmFzaXZlcyAgID0gUGVydmFzaXZlc1xubW9kdWxlIFByaW50ZXhjICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlcSAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyZWFtICAgICAgID0gU3RyZWFtXG5tb2R1bGUgU3RyaW5nICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBKYW5lIFN0cmVldCBHcm91cCBMTEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogQGRlcHJlY2F0ZWQgVXNlIHshU3RkbGlifSAqKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcbmxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG5sZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuZXhjZXB0aW9uIEV4aXRcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IG1pbiA9IG1pblxubGV0IG1heCA9IG1heFxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKCYmKSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICh8fCkgaW5zdGVhZC5cIl1cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmxldCBhYnMgPSBhYnNcbmxldCBtYXhfaW50ID0gbWF4X2ludFxubGV0IG1pbl9pbnQgPSBtaW5faW50XG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxub3QgPSBsbm90XG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxubGV0IGluZmluaXR5ID0gaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBuZWdfaW5maW5pdHlcbmxldCBuYW4gPSBuYW5cbmxldCBtYXhfZmxvYXQgPSBtYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBtaW5fZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gZXBzaWxvbl9mbG9hdFxudHlwZSBub25yZWMgZnBjbGFzcyA9IGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmxldCAoIF4gKSA9ICggXiApXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50ID0gY2hhcl9vZl9pbnRcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxubGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcbmxldCBib29sX29mX3N0cmluZyA9IGJvb2xfb2Zfc3RyaW5nXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gYm9vbF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IGludF9vZl9zdHJpbmdfb3B0ID0gaW50X29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfZmxvYXQgPSBzdHJpbmdfb2ZfZmxvYXRcbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxubGV0ICggQCApICA9ICggQCApXG50eXBlIG5vbnJlYyBpbl9jaGFubmVsID0gaW5fY2hhbm5lbFxudHlwZSBub25yZWMgb3V0X2NoYW5uZWwgPSBvdXRfY2hhbm5lbFxubGV0IHN0ZGluID0gc3RkaW5cbmxldCBzdGRvdXQgPSBzdGRvdXRcbmxldCBzdGRlcnIgPSBzdGRlcnJcbmxldCBwcmludF9jaGFyID0gcHJpbnRfY2hhclxubGV0IHByaW50X3N0cmluZyA9IHByaW50X3N0cmluZ1xubGV0IHByaW50X2J5dGVzID0gcHJpbnRfYnl0ZXNcbmxldCBwcmludF9pbnQgPSBwcmludF9pbnRcbmxldCBwcmludF9mbG9hdCA9IHByaW50X2Zsb2F0XG5sZXQgcHJpbnRfZW5kbGluZSA9IHByaW50X2VuZGxpbmVcbmxldCBwcmludF9uZXdsaW5lID0gcHJpbnRfbmV3bGluZVxubGV0IHByZXJyX2NoYXIgPSBwcmVycl9jaGFyXG5sZXQgcHJlcnJfc3RyaW5nID0gcHJlcnJfc3RyaW5nXG5sZXQgcHJlcnJfYnl0ZXMgPSBwcmVycl9ieXRlc1xubGV0IHByZXJyX2ludCA9IHByZXJyX2ludFxubGV0IHByZXJyX2Zsb2F0ID0gcHJlcnJfZmxvYXRcbmxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxubGV0IHByZXJyX25ld2xpbmUgPSBwcmVycl9uZXdsaW5lXG5sZXQgcmVhZF9saW5lID0gcmVhZF9saW5lXG5sZXQgcmVhZF9pbnQgPSByZWFkX2ludFxubGV0IHJlYWRfaW50X29wdCA9IHJlYWRfaW50X29wdFxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0XG5sZXQgcmVhZF9mbG9hdF9vcHQgPSByZWFkX2Zsb2F0X29wdFxudHlwZSBub25yZWMgb3Blbl9mbGFnID0gb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xubGV0IG9wZW5fb3V0ID0gb3Blbl9vdXRcbmxldCBvcGVuX291dF9iaW4gPSBvcGVuX291dF9iaW5cbmxldCBvcGVuX291dF9nZW4gPSBvcGVuX291dF9nZW5cbmxldCBmbHVzaCA9IGZsdXNoXG5sZXQgZmx1c2hfYWxsID0gZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBvdXRwdXRfY2hhclxubGV0IG91dHB1dF9zdHJpbmcgPSBvdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gb3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gb3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IG91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYnl0ZSA9IG91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBvdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF92YWx1ZSA9IG91dHB1dF92YWx1ZVxubGV0IHNlZWtfb3V0ID0gc2Vla19vdXRcbmxldCBwb3Nfb3V0ID0gcG9zX291dFxubGV0IG91dF9jaGFubmVsX2xlbmd0aCA9IG91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX291dCA9IGNsb3NlX291dFxubGV0IGNsb3NlX291dF9ub2VyciA9IGNsb3NlX291dF9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9vdXQgPSBzZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgb3Blbl9pbiA9IG9wZW5faW5cbmxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fYmluXG5sZXQgb3Blbl9pbl9nZW4gPSBvcGVuX2luX2dlblxubGV0IGlucHV0X2NoYXIgPSBpbnB1dF9jaGFyXG5sZXQgaW5wdXRfbGluZSA9IGlucHV0X2xpbmVcbmxldCBpbnB1dCA9IGlucHV0XG5sZXQgcmVhbGx5X2lucHV0ID0gcmVhbGx5X2lucHV0XG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmdcbmxldCBpbnB1dF9ieXRlID0gaW5wdXRfYnl0ZVxubGV0IGlucHV0X2JpbmFyeV9pbnQgPSBpbnB1dF9iaW5hcnlfaW50XG5sZXQgaW5wdXRfdmFsdWUgPSBpbnB1dF92YWx1ZVxubGV0IHNlZWtfaW4gPSBzZWVrX2luXG5sZXQgcG9zX2luID0gcG9zX2luXG5sZXQgaW5fY2hhbm5lbF9sZW5ndGggPSBpbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX2luID0gY2xvc2VfaW5cbmxldCBjbG9zZV9pbl9ub2VyciA9IGNsb3NlX2luX25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX2luID0gc2V0X2JpbmFyeV9tb2RlX2luXG5tb2R1bGUgTGFyZ2VGaWxlID0gTGFyZ2VGaWxlXG50eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG50eXBlIG5vbnJlYyAoJ2EsJ2IpIHJlc3VsdCA9ICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5sZXQgc3RyaW5nX29mX2Zvcm1hdCA9IHN0cmluZ19vZl9mb3JtYXRcbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcbmxldCAoIF5eICkgPSAoIF5eIClcbmxldCBleGl0ID0gZXhpdFxubGV0IGF0X2V4aXQgPSBhdF9leGl0XG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gPSB2YWxpZF9mbG9hdF9sZXhlbVxubGV0IGRvX2F0X2V4aXQgPSBkb19hdF9leGl0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBpdGVyIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJ1xuICB8ICdcXDE5MicgLi4gJ1xcMjE0J1xuICB8ICdcXDIxNicgLi4gJ1xcMjIyJyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6J1xuICB8ICdcXDIyNCcgLi4gJ1xcMjQ2J1xuICB8ICdcXDI0OCcgLi4gJ1xcMjU0JyBhcyBjIC0+XG4gICAgdW5zYWZlX2Nocihjb2RlIGMgLSAzMilcbiAgfCBjIC0+IGNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuOztcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcbjs7XG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCByZWMgZGlyZWN0IGRlcHRoIHNlcSA6IF8gbGlzdCA9XG4gICAgaWYgZGVwdGg9MFxuICAgIHRoZW5cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIHNlcVxuICAgICAgfD4gcmV2ICgqIHRhaWxyZWMgKilcbiAgICBlbHNlIG1hdGNoIHNlcSgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbXVxuICAgICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT4geCA6OiBkaXJlY3QgKGRlcHRoLTEpIG5leHRcbiAgaW5cbiAgZGlyZWN0IDUwMCBzZXFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBjb3B5IHMgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPSBtYXAgQ2hhci51cHBlcmNhc2Ugc1xubGV0IGxvd2VyY2FzZSBzID0gbWFwIENoYXIubG93ZXJjYXNlIHNcblxubGV0IGNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgdW5jYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2Ugc1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IGNvcHkgcyA9XG4gIEIuY29weSAoYm9zIHMpIHw+IGJ0c1xubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBmaWxsID1cbiAgQi5maWxsXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IHJlYyBlc2NhcGVfaWZfbmVlZGVkIHMgbiBpID1cbiAgICBpZiBpID49IG4gdGhlbiBzIGVsc2VcbiAgICAgIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcMDAwJy4uJ1xcMDMxJyB8ICdcXDEyNycuLiAnXFwyNTUnIC0+XG4gICAgICAgICAgYnRzIChCLmVzY2FwZWQgKGJvcyBzKSlcbiAgICAgIHwgXyAtPiBlc2NhcGVfaWZfbmVlZGVkIHMgbiAoaSsxKVxuICBpblxuICBlc2NhcGVfaWZfbmVlZGVkIHMgKGxlbmd0aCBzKSAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID1cbiAgQi51cHBlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2UgcyA9XG4gIEIubG93ZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZSBzID1cbiAgQi5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplIHMgPVxuICBCLnVuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2V0X3RhZyA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3NldF90YWdcIlxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBtYXJzaGFsIChvYmogOiB0KSA9XG4gIE1hcnNoYWwudG9fYnl0ZXMgb2JqIFtdXG5sZXQgdW5tYXJzaGFsIHN0ciBwb3MgPVxuICAoTWFyc2hhbC5mcm9tX2J5dGVzIHN0ciBwb3MsIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZSBzdHIgcG9zKVxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDVcblxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5sZXQgZmluYWxfdGFnID0gY3VzdG9tX3RhZ1xuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbFxubGV0IGV4dGVuc2lvbl9uYW1lID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm5hbWVcbmxldCBleHRlbnNpb25faWQgPSBFeHRlbnNpb25fY29uc3RydWN0b3IuaWRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIjs7XG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbmxldCBtYWtlX2Zsb2F0ID0gY3JlYXRlX2Zsb2F0XG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeFxuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiBpbnQgLT4gZmxvYXQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbmxldCByYWlzZV91bmRlZmluZWQgPSBPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIFVuZGVmaW5lZClcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogT2JqLnQgLT4gT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkXCJcblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmFpc2UgZVxuXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV92YWxfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gIHJlc3VsdFxuXG5cbigqIFtmb3JjZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpcyBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZVxuICAgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmxcbiAgIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5cbmxldCBmb3JjZSAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXRzIHRhZyBjb3VsZCBoYXZlXG4gICAgICAgY2hhbmdlZCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKVxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9sYXp5X2Jsb2NrIGx6dlxuXG5cbmxldCBmb3JjZV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfdmFsX2xhenlfYmxvY2sgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxuXG5sZXQgZm9yY2VfdmFsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV92YWxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IGxhenlfZnJvbV9mdW4gPSBmcm9tX2Z1blxuXG5sZXQgbGF6eV9mcm9tX3ZhbCA9IGZyb21fdmFsXG5cbmxldCBsYXp5X2lzX3ZhbCA9IGlzX3ZhbFxuXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gbGF6eV9mcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIGNlbGwgb3B0aW9uXG5hbmQgJ2EgY2VsbCA9IHsgbXV0YWJsZSBjb3VudCA6IGludDsgbXV0YWJsZSBkYXRhIDogJ2EgZGF0YSB9XG5hbmQgJ2EgZGF0YSA9XG4gICAgU2VtcHR5XG4gIHwgU2NvbnMgb2YgJ2EgKiAnYSBkYXRhXG4gIHwgU2FwcCBvZiAnYSBkYXRhICogJ2EgZGF0YVxuICB8IFNsYXp5IG9mICdhIGRhdGEgTGF6eS50XG4gIHwgU2dlbiBvZiAnYSBnZW5cbiAgfCBTYnVmZmlvIDogYnVmZmlvIC0+IGNoYXIgZGF0YVxuYW5kICdhIGdlbiA9IHsgbXV0YWJsZSBjdXJyIDogJ2Egb3B0aW9uIG9wdGlvbjsgZnVuYyA6IGludCAtPiAnYSBvcHRpb24gfVxuYW5kIGJ1ZmZpbyA9XG4gIHsgaWMgOiBpbl9jaGFubmVsOyBidWZmIDogYnl0ZXM7IG11dGFibGUgbGVuIDogaW50OyBtdXRhYmxlIGluZCA6IGludCB9XG5cbmV4Y2VwdGlvbiBGYWlsdXJlXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBjb3VudCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSB7IGNvdW50IH0gLT4gY291bnRcbmxldCBkYXRhID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFNlbXB0eVxuICB8IFNvbWUgeyBkYXRhIH0gLT4gZGF0YVxuXG5sZXQgZmlsbF9idWZmIGIgPVxuICBiLmxlbiA8LSBpbnB1dCBiLmljIGIuYnVmZiAwIChCeXRlcy5sZW5ndGggYi5idWZmKTsgYi5pbmQgPC0gMFxuXG5cbmxldCByZWMgZ2V0X2RhdGEgOiB0eXBlIHYuIGludCAtPiB2IGRhdGEgLT4gdiBkYXRhID0gZnVuIGNvdW50IGQgLT4gbWF0Y2ggZCB3aXRoXG4gKCogUmV0dXJucyBlaXRoZXIgU2VtcHR5IG9yIFNjb25zKGEsIF8pIGV2ZW4gd2hlbiBkIGlzIGEgZ2VuZXJhdG9yXG4gICAgb3IgYSBidWZmZXIuIEluIHRob3NlIGNhc2VzLCB0aGUgaXRlbSBhIGlzIHNlZW4gYXMgZXh0cmFjdGVkIGZyb21cbiB0aGUgZ2VuZXJhdG9yL2J1ZmZlci5cbiBUaGUgY291bnQgcGFyYW1ldGVyIGlzIHVzZWQgZm9yIGNhbGxpbmcgYFNnZW4tZnVuY3Rpb25zJy4gICopXG4gICBTZW1wdHkgfCBTY29ucyAoXywgXykgLT4gZFxuIHwgU2FwcCAoZDEsIGQyKSAtPlxuICAgICBiZWdpbiBtYXRjaCBnZXRfZGF0YSBjb3VudCBkMSB3aXRoXG4gICAgICAgU2NvbnMgKGEsIGQxMSkgLT4gU2NvbnMgKGEsIFNhcHAgKGQxMSwgZDIpKVxuICAgICB8IFNlbXB0eSAtPiBnZXRfZGF0YSBjb3VudCBkMlxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2dlbiB7Y3VyciA9IFNvbWUgTm9uZX0gLT4gU2VtcHR5XG4gfCBTZ2VuICh7Y3VyciA9IFNvbWUoU29tZSBhKX0gYXMgZykgLT5cbiAgICAgZy5jdXJyIDwtIE5vbmU7IFNjb25zKGEsIGQpXG4gfCBTZ2VuIGcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZy5mdW5jIGNvdW50IHdpdGhcbiAgICAgICBOb25lIC0+IGcuY3VyciA8LSBTb21lKE5vbmUpOyBTZW1wdHlcbiAgICAgfCBTb21lIGEgLT4gU2NvbnMoYSwgZClcbiAgICAgICAgICgqIFdhcm5pbmc6IGFueW9uZSB1c2luZyBnIHRoaW5rcyB0aGF0IGFuIGl0ZW0gaGFzIGJlZW4gcmVhZCAqKVxuICAgICBlbmRcbiB8IFNidWZmaW8gYiAtPlxuICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICBpZiBiLmxlbiA9PSAwIHRoZW4gU2VtcHR5IGVsc2VcbiAgICAgICBsZXQgciA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmIGIuaW5kIGluXG4gICAgICAgKCogV2FybmluZzogYW55b25lIHVzaW5nIGcgdGhpbmtzIHRoYXQgYW4gaXRlbSBoYXMgYmVlbiByZWFkICopXG4gICAgICAgYi5pbmQgPC0gc3VjYyBiLmluZDsgU2NvbnMociwgZClcbiB8IFNsYXp5IGYgLT4gZ2V0X2RhdGEgY291bnQgKExhenkuZm9yY2UgZilcblxuXG5sZXQgcmVjIHBlZWtfZGF0YSA6IHR5cGUgdi4gdiBjZWxsIC0+IHYgb3B0aW9uID0gZnVuIHMgLT5cbiAoKiBjb25zdWx0IHRoZSBmaXJzdCBpdGVtIG9mIHMgKilcbiBtYXRjaCBzLmRhdGEgd2l0aFxuICAgU2VtcHR5IC0+IE5vbmVcbiB8IFNjb25zIChhLCBfKSAtPiBTb21lIGFcbiB8IFNhcHAgKF8sIF8pIC0+XG4gICAgIGJlZ2luIG1hdGNoIGdldF9kYXRhIHMuY291bnQgcy5kYXRhIHdpdGhcbiAgICAgICBTY29ucyhhLCBfKSBhcyBkIC0+IHMuZGF0YSA8LSBkOyBTb21lIGFcbiAgICAgfCBTZW1wdHkgLT4gTm9uZVxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgIGVuZFxuIHwgU2xhenkgZiAtPiBzLmRhdGEgPC0gKExhenkuZm9yY2UgZik7IHBlZWtfZGF0YSBzXG4gfCBTZ2VuIHtjdXJyID0gU29tZSBhfSAtPiBhXG4gfCBTZ2VuIGcgLT4gbGV0IHggPSBnLmZ1bmMgcy5jb3VudCBpbiBnLmN1cnIgPC0gU29tZSB4OyB4XG4gfCBTYnVmZmlvIGIgLT5cbiAgICAgaWYgYi5pbmQgPj0gYi5sZW4gdGhlbiBmaWxsX2J1ZmYgYjtcbiAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIGJlZ2luIHMuZGF0YSA8LSBTZW1wdHk7IE5vbmUgZW5kXG4gICAgIGVsc2UgU29tZSAoQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmYgYi5pbmQpXG5cblxubGV0IHBlZWsgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgcyAtPiBwZWVrX2RhdGEgc1xuXG5cbmxldCByZWMganVua19kYXRhIDogdHlwZSB2LiB2IGNlbGwgLT4gdW5pdCA9IGZ1biBzIC0+XG4gIG1hdGNoIHMuZGF0YSB3aXRoXG4gICAgU2NvbnMgKF8sIGQpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IHMuZGF0YSA8LSBkXG4gIHwgU2dlbiAoe2N1cnIgPSBTb21lIF99IGFzIGcpIC0+IHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGcuY3VyciA8LSBOb25lXG4gIHwgU2J1ZmZpbyBiIC0+XG4gICAgICBpZiBiLmluZCA+PSBiLmxlbiB0aGVuIGZpbGxfYnVmZiBiO1xuICAgICAgaWYgYi5sZW4gPT0gMCB0aGVuIHMuZGF0YSA8LSBTZW1wdHlcbiAgICAgIGVsc2UgKHMuY291bnQgPC0gKHN1Y2Mgcy5jb3VudCk7IGIuaW5kIDwtIHN1Y2MgYi5pbmQpXG4gIHwgXyAtPlxuICAgICAgbWF0Y2ggcGVla19kYXRhIHMgd2l0aFxuICAgICAgICBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiBqdW5rX2RhdGEgc1xuXG5cbmxldCBqdW5rID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkYXRhIC0+IGp1bmtfZGF0YSBkYXRhXG5cbmxldCByZWMgbmdldF9kYXRhIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuIFtdLCBzLmRhdGEsIDBcbiAgZWxzZVxuICAgIG1hdGNoIHBlZWtfZGF0YSBzIHdpdGhcbiAgICAgIFNvbWUgYSAtPlxuICAgICAgICBqdW5rX2RhdGEgcztcbiAgICAgICAgbGV0IChhbCwgZCwgaykgPSBuZ2V0X2RhdGEgKHByZWQgbikgcyBpbiBhIDo6IGFsLCBTY29ucyAoYSwgZCksIHN1Y2Mga1xuICAgIHwgTm9uZSAtPiBbXSwgcy5kYXRhLCAwXG5cblxubGV0IG5wZWVrX2RhdGEgbiBzID1cbiAgbGV0IChhbCwgZCwgbGVuKSA9IG5nZXRfZGF0YSBuIHMgaW5cbiAgcy5jb3VudCA8LSAocy5jb3VudCAtIGxlbik7XG4gIHMuZGF0YSA8LSBkO1xuICBhbFxuXG5cbmxldCBucGVlayBuID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBkIC0+IG5wZWVrX2RhdGEgbiBkXG5cbmxldCBuZXh0IHMgPVxuICBtYXRjaCBwZWVrIHMgd2l0aFxuICAgIFNvbWUgYSAtPiBqdW5rIHM7IGFcbiAgfCBOb25lIC0+IHJhaXNlIEZhaWx1cmVcblxuXG5sZXQgZW1wdHkgcyA9XG4gIG1hdGNoIHBlZWsgcyB3aXRoXG4gICAgU29tZSBfIC0+IHJhaXNlIEZhaWx1cmVcbiAgfCBOb25lIC0+ICgpXG5cblxubGV0IGl0ZXIgZiBzdHJtID1cbiAgbGV0IHJlYyBkb19yZWMgKCkgPVxuICAgIG1hdGNoIHBlZWsgc3RybSB3aXRoXG4gICAgICBTb21lIGEgLT4ganVuayBzdHJtOyBpZ25vcmUoZiBhKTsgZG9fcmVjICgpXG4gICAgfCBOb25lIC0+ICgpXG4gIGluXG4gIGRvX3JlYyAoKVxuXG5cbigqIFN0cmVhbSBidWlsZGluZyBmdW5jdGlvbnMgKilcblxubGV0IGZyb20gZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNnZW4ge2N1cnIgPSBOb25lOyBmdW5jID0gZn19XG5cbmxldCBvZl9saXN0IGwgPVxuICBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biB4IGwgLT4gU2NvbnMgKHgsIGwpKSBsIFNlbXB0eX1cblxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgICgqIFdlIGNhbm5vdCB1c2UgdGhlIGluZGV4IHBhc3NlZCBieSB0aGUgW2Zyb21dIGZ1bmN0aW9uIGRpcmVjdGx5XG4gICAgICAgYmVjYXVzZSBpdCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmVhbSBjb3VudCwgd2l0aCBhYnNvbHV0ZWx5IG5vXG4gICAgICAgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBzdGFydCBmcm9tIDAuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZVxuICAgICAgIG9mIFtTdHJlYW0uaWNvbnMgJ2MnIChTdHJlYW0uZnJvbV9zdHJpbmcgXCJhYlwiKV0sIHRoZSBmaXJzdFxuICAgICAgIGFjY2VzcyB0byB0aGUgc3RyaW5nIHdpbGwgYmUgbWFkZSB3aXRoIGNvdW50IFsxXSBhbHJlYWR5LlxuICAgICopXG4gICAgbGV0IGMgPSAhY291bnQgaW5cbiAgICBpZiBjIDwgU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSBzLltjXSlcbiAgICBlbHNlIE5vbmUpXG5cblxubGV0IG9mX2J5dGVzIHMgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBmcm9tIChmdW4gXyAtPlxuICAgIGxldCBjID0gIWNvdW50IGluXG4gICAgaWYgYyA8IEJ5dGVzLmxlbmd0aCBzXG4gICAgdGhlbiAoaW5jciBjb3VudDsgU29tZSAoQnl0ZXMuZ2V0IHMgYykpXG4gICAgZWxzZSBOb25lKVxuXG5cbmxldCBvZl9jaGFubmVsIGljID1cbiAgU29tZSB7Y291bnQgPSAwO1xuICAgICAgICBkYXRhID0gU2J1ZmZpbyB7aWMgPSBpYzsgYnVmZiA9IEJ5dGVzLmNyZWF0ZSA0MDk2OyBsZW4gPSAwOyBpbmQgPSAwfX1cblxuXG4oKiBTdHJlYW0gZXhwcmVzc2lvbnMgYnVpbGRlcnMgKilcblxubGV0IGlhcHAgaSBzID0gU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2FwcCAoZGF0YSBpLCBkYXRhIHMpfVxubGV0IGljb25zIGkgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNjb25zIChpLCBkYXRhIHMpfVxubGV0IGlzaW5nIGkgPSBTb21lIHtjb3VudCA9IDA7IGRhdGEgPSBTY29ucyAoaSwgU2VtcHR5KX1cblxubGV0IGxhcHAgZiBzID1cbiAgU29tZSB7Y291bnQgPSAwOyBkYXRhID0gU2xhenkgKGxhenkoU2FwcCAoZGF0YSAoZiAoKSksIGRhdGEgcykpKX1cblxubGV0IGxjb25zIGYgcyA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBkYXRhIHMpKSl9XG5sZXQgbHNpbmcgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KFNjb25zIChmICgpLCBTZW1wdHkpKSl9XG5cbmxldCBzZW1wdHkgPSBOb25lXG5sZXQgc2xhenkgZiA9IFNvbWUge2NvdW50ID0gMDsgZGF0YSA9IFNsYXp5IChsYXp5KGRhdGEgKGYgKCkpKSl9XG5cbigqIEZvciBkZWJ1Z2dpbmcgdXNlICopXG5cbmxldCByZWMgZHVtcCA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiB0IC0+IHVuaXQgPSBmdW4gZiBzIC0+XG4gIHByaW50X3N0cmluZyBcIntjb3VudCA9IFwiO1xuICBwcmludF9pbnQgKGNvdW50IHMpO1xuICBwcmludF9zdHJpbmcgXCI7IGRhdGEgPSBcIjtcbiAgZHVtcF9kYXRhIGYgKGRhdGEgcyk7XG4gIHByaW50X3N0cmluZyBcIn1cIjtcbiAgcHJpbnRfbmV3bGluZSAoKVxuYW5kIGR1bXBfZGF0YSA6IHR5cGUgdi4gKHYgLT4gdW5pdCkgLT4gdiBkYXRhIC0+IHVuaXQgPSBmdW4gZiAtPlxuICBmdW5jdGlvblxuICAgIFNlbXB0eSAtPiBwcmludF9zdHJpbmcgXCJTZW1wdHlcIlxuICB8IFNjb25zIChhLCBkKSAtPlxuICAgICAgcHJpbnRfc3RyaW5nIFwiU2NvbnMgKFwiO1xuICAgICAgZiBhO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQ7XG4gICAgICBwcmludF9zdHJpbmcgXCIpXCJcbiAgfCBTYXBwIChkMSwgZDIpIC0+XG4gICAgICBwcmludF9zdHJpbmcgXCJTYXBwIChcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQxO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiLCBcIjtcbiAgICAgIGR1bXBfZGF0YSBmIGQyO1xuICAgICAgcHJpbnRfc3RyaW5nIFwiKVwiXG4gIHwgU2xhenkgXyAtPiBwcmludF9zdHJpbmcgXCJTbGF6eVwiXG4gIHwgU2dlbiBfIC0+IHByaW50X3N0cmluZyBcIlNnZW5cIlxuICB8IFNidWZmaW8gXyAtPiBwcmludF9zdHJpbmcgXCJTYnVmZmlvXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbnR5cGUgdCA9XG4ge211dGFibGUgYnVmZmVyIDogYnl0ZXM7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5sZW5ndGhdXG4gICAtIFtiLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmJ1ZmZlcl1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7YnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdCBzcmMuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBiLnBvc2l0aW9uIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBiLmJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBiLmJ1ZmZlciA8LSBiLmluaXRpYWxfYnVmZmVyO1xuICBiLmxlbmd0aCA8LSBCeXRlcy5sZW5ndGggYi5idWZmZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuYnVmZmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IubGVuZ3RoXS5cblxuICAgSW4gcGFydGljdWxhciwgYWZ0ZXIgW3Jlc2l6ZSBiIG1vcmVdIGlzIGNhbGxlZCwgYSBkaXJlY3QgYWNjZXNzIG9mXG4gICBzaXplIFttb3JlXSBhdCBbYi5wb3NpdGlvbl0gd2lsbCBhbHdheXMgYmUgaW4tYm91bmRzLCBzbyB0aGF0XG4gICAodW5zYWZlX3tnZXQsc2V0fSkgbWF5IGJlIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuO1xuICBhc3NlcnQgKGIucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgYXNzZXJ0IChvbGRfcG9zICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gICgpXG4gICgqIE5vdGU6IHRoZXJlIGFyZSB2YXJpb3VzIHNpdHVhdGlvbnMgKHByZWVtcHRpdmUgdGhyZWFkcywgc2lnbmFscyBhbmRcbiAgICAgZ2MgZmluYWxpemVycykgd2hlcmUgT0NhbWwgY29kZSBtYXkgYmUgcnVuIGFzeW5jaHJvbm91c2x5OyBpblxuICAgICBwYXJ0aWN1bGFyLCB0aGVyZSBtYXkgYmUgYSByYWNlIHdpdGggYW5vdGhlciB1c2VyIG9mIFtiXSwgY2hhbmdpbmdcbiAgICAgaXRzIG11dGFibGUgZmllbGRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIFtyZXNpemVdIGNhbGwuIFRoZSBCdWZmZXJcbiAgICAgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgYW55IGNvcnJlY3RuZXNzIGd1YXJhbnRlZSBpZiB0aGF0IGhhcHBlbnMsXG4gICAgIGJ1dCB3ZSBtdXN0IHN0aWxsIGVuc3VyZSB0aGF0IHRoZSBkYXRhc3RydWN0dXJlIGludmFyaWFudHMgaG9sZCBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAtLSBhcyB3ZSBwbGFuIHRvIHVzZSBbdW5zYWZlX3tnZXQsc2V0fV0uXG5cbiAgICAgVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgYWxsb2NhdGlvbiBwb2ludHMgaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgW3JlZl0gYW5kIFtCeXRlcy5jcmVhdGVdLCBidXQgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGZpZWxkc1xuICAgICBvZiBbYl0gaGFwcGVuIGJlZm9yZSBib3RoIG9mIHRoZW0gb3IgYWZ0ZXIgYm90aCBvZiB0aGVtLlxuXG4gICAgIFdlIHRoZXJlZm9yZSBhc3N1bWUgdGhhdCBbYi5wb3NpdGlvbl0gbWF5IGNoYW5nZSBhdCB0aGVzZSBhbGxvY2F0aW9ucyxcbiAgICAgYW5kIGNoZWNrIHRoYXQgdGhlIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gcG9zdGNvbmRpdGlvblxuICAgICBob2xkcyBmb3IgYm90aCB2YWx1ZXMgb2YgW2IucG9zaXRpb25dLCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uXG4gICAgIGlzIGNhbGxlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQgaWYgdGhlXG4gICAgIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdGx5LCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgYnVmZmVyIGludmFyaWFudHM6XG4gICAgIC0gW29sZChiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbbmV3KGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtvbGQoYi5sZW5ndGgpIDw9IG5ldyhiLmxlbmd0aCldXG5cbiAgICAgTm90ZTogW2IucG9zaXRpb24gKyBtb3JlIDw9IG9sZChiLmxlbmd0aCldIGRvZXMgKm5vdCpcbiAgICAgaG9sZCBpbiBnZW5lcmFsLCBhcyBpdCBpcyBwcmVjaXNlbHkgdGhlIGNhc2Ugd2hlcmUgeW91IG5lZWRcbiAgICAgdG8gY2FsbCBbcmVzaXplXSB0byBpbmNyZWFzZSBbYi5sZW5ndGhdLlxuXG4gICAgIE5vdGU6IFthc3NlcnRdIGFib3ZlIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBrbm93IHRoZSBjb25kaXRpb25zXG4gICAgIGFsd2F5cyBob2xkLCBidXQgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IHJldHVybiBjb3JyZWN0bHlcbiAgICAgb25seSBpZiB0aGV5IGhvbGQuXG5cbiAgICAgTm90ZTogdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBuZWVkXG4gICAgIHRvIGJlIGNoZWNrZWQgd2l0aCB0aGlzIGxldmVsIG9mIHNjcnV0aW55LCBnaXZlbiB0aGF0IHRoZXlcbiAgICAgcmVhZC93cml0ZSB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIHRoYXRcbiAgICAgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkIG9yIGNhbGxpbmcgW3Jlc2l6ZV0uXG4gICopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAoKiBUaGUgYXNzZXJ0aW9uIGJlbG93IG1heSBmYWlsIGluIHdlaXJkIHNjZW5hcmlvIHdoZXJlXG4gICAgIHRocmVhZGVkL2ZpbmFsaXplciBjb2RlLCBydW4gYXN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZVxuICAgICBbcmVhbGx5X2lucHV0X3VwX3RvXSBjYWxsLCByYWNlcyBvbiB0aGUgYnVmZmVyOyB3ZSBkb24ndCBlbnN1cmVcbiAgICAgY29ycmVjdG5lc3MgaW4gdGhpcyBjYXNlLCBidXQgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAoc2VlIGRpc2N1c3Npb24gb2YgW3Jlc2l6ZV0pLiAqKVxuICBhc3NlcnQgKGIucG9zaXRpb24gKyBuIDw9IGIubGVuZ3RoKTtcbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgdW5zYWZlX3NldF9pbnQ4IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICB1bnNhZmVfc2V0X2ludDE2IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICB1bnNhZmVfc2V0X2ludDMyIGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA4O1xuICB1bnNhZmVfc2V0X2ludDY0IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pbmVcbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdC4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gICAgICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgICAgIGNvbnN0cnVjdG9yIF4gKGZpZWxkcyB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxudHlwZSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICAgOiBzdHJpbmc7XG4gICAgICBsaW5lX251bWJlciA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICAgOiBpbnQ7XG4gICAgICBpc19pbmxpbmUgICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbigqIHRvIGF2b2lkIHdhcm5pbmcgKilcbmxldCBfID0gW0tub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZTsgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IDA7IHN0YXJ0X2NoYXIgPSAwOyBlbmRfY2hhciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lubGluZSA9IGZhbHNlOyBkZWZuYW1lID0gXCJcIiB9O1xuICAgICAgICAgVW5rbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2UgfV1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGwubGluZV9udW1iZXIgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwubGluZV9udW1iZXI7XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgdmVyYm9zZSA6IGludDtcbiAgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuZXh0ZXJuYWwgZ2V0X2J1Y2tldCA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2J1Y2tldFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBnZXRfY3JlZGl0IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2NyZWRpdFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBodWdlX2ZhbGxiYWNrX2NvdW50IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFwiXG5leHRlcm5hbCBldmVudGxvZ19wYXVzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19wYXVzZVwiXG5leHRlcm5hbCBldmVudGxvZ19yZXN1bWUgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcmVzdW1lXCJcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIHJlZlxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgIShhcmVjLmFjdGl2ZSkgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSByZWYgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gYSA6PSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gYnVja2V0cyBiZWNvbWUgdG9vIGxvbmcuICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IHJlZiByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IHJhbmRvbWl6ZWQgOj0gdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSAhcmFuZG9taXplZFxuXG5sZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlciAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX29wZW5fdGFnIHN0YXRlIHMgPSBwcF9vcGVuX3N0YWcgc3RhdGUgKFN0cmluZ190YWcgcylcbmxldCBwcF9jbG9zZV90YWcgc3RhdGUgKCkgPSBwcF9jbG9zZV9zdGFnIHN0YXRlICgpXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2VfdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94ID0gcHBfb3Blbl9oYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3Zib3ggPSBwcF9vcGVuX3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faHZib3ggPSBwcF9vcGVuX2h2Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2hvdmJveCA9IHBwX29wZW5faG92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2JveCA9IHBwX29wZW5fYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9ib3ggPSBwcF9jbG9zZV9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdGFnID0gcHBfb3Blbl90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3RhZyA9IHBwX2Nsb3NlX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9zdGFnID0gcHBfb3Blbl9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9zdGFnID0gcHBfY2xvc2Vfc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYXMgPSBwcF9wcmludF9hcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3RyaW5nID0gcHBfcHJpbnRfc3RyaW5nIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ieXRlcyA9IHBwX3ByaW50X2J5dGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pbnQgPSBwcF9wcmludF9pbnQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Zsb2F0ID0gcHBfcHJpbnRfZmxvYXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2NoYXIgPSBwcF9wcmludF9jaGFyIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ib29sID0gcHBfcHJpbnRfYm9vbCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnJlYWsgPSBwcF9wcmludF9icmVhayBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY3V0ID0gcHBfcHJpbnRfY3V0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zcGFjZSA9IHBwX3ByaW50X3NwYWNlIHN0ZF9mb3JtYXR0ZXJcbmFuZCBmb3JjZV9uZXdsaW5lID0gcHBfZm9yY2VfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmx1c2ggPSBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfbmV3bGluZSA9IHBwX3ByaW50X25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2lmX25ld2xpbmUgPSBwcF9wcmludF9pZl9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIG9wZW5fdGJveCA9IHBwX29wZW5fdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGJveCA9IHBwX2Nsb3NlX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RicmVhayA9IHBwX3ByaW50X3RicmVhayBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfdGFiID0gcHBfc2V0X3RhYiBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGFiID0gcHBfcHJpbnRfdGFiIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXJnaW4gPSBwcF9zZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2luZGVudCA9IHBwX3NldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9nZW9tZXRyeSA9IHBwX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgPSBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2dlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgPSBwcF91cGRhdGVfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9ib3hlcyA9IHBwX3NldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfYm94ZXMgPSBwcF9nZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvdmVyX21heF9ib3hlcyA9IHBwX292ZXJfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9lbGxpcHNpc190ZXh0ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfcHJpbnRfdGFncyA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfcHJpbnRfdGFncyA9XG4gIHBwX2dldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfbWFya190YWdzID1cbiAgcHBfc2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmtfdGFncyA9XG4gIHBwX2dldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF90YWdzID1cbiAgcHBfc2V0X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkX2Zvcm1hdHRlciBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgZXJyX2Zvcm1hdHRlciBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlciAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggZXJyX2Zvcm1hdHRlciAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxuKCpcblxuICBEZXByZWNhdGVkIHN0dWZmLlxuXG4qKVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZVxuICAgIH5vdXQ6ZiB+Zmx1c2g6ZyB+bmV3bGluZTpoIH5zcGFjZXM6aSA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gsXG4gICBzdGF0ZS5wcF9vdXRfbmV3bGluZSwgc3RhdGUucHBfb3V0X3NwYWNlcylcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IGVycm9yIHByb25lIGZ1bmN0aW9uLCBkbyBub3QgdXNlIGl0LlxuICAgVGhpcyBmdW5jdGlvbiBpcyBuZWl0aGVyIGNvbXBvc2l0aW9uYWwgbm9yIGluY3JlbWVudGFsLCBzaW5jZSBpdCBmbHVzaGVzXG4gICB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYXQgZWFjaCBjYWxsLlxuICAgVG8gZ2V0IHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIGRlZmluZSBhIGZvcm1hdHRlciBvZiB5b3VyIG93biB3cml0aW5nIHRvXG4gICB0aGUgYnVmZmVyIGFyZ3VtZW50LCBhcyBpblxuICAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYlxuICAgdGhlbiB1c2UgeyFmcHJpbnRmIHBwZn0gYXMgdXN1YWwuICopXG5sZXQgYnByaW50ZiBiIChGb3JtYXQgKGZtdCwgXykgOiAoJ2EsIGZvcm1hdHRlciwgdW5pdCkgZm9ybWF0KSA9XG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID0gb3V0cHV0X2FjYyBwcGYgYWNjOyBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2UgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbigqIERlcHJlY2F0ZWQgOiBhbGlhcyBmb3Iga3NwcmludGYuICopXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG5cblxuXG4oKiBEZXByZWNhdGVkIHRhZyBmdW5jdGlvbnMgKilcblxudHlwZSBmb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2VfdGFnIDogdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl90YWcgOiB0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2VfdGFnIDogdGFnIC0+IHVuaXQ7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl90YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2VfdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2VfdGFnID0gcGN0O1xuICAgfSA9XG4gIGxldCBzdHJpbmdpZnkgZiBlID0gZnVuY3Rpb24gU3RyaW5nX3RhZyBzIC0+IGYgcyB8IF8gLT4gZSBpblxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIHN0cmluZ2lmeSBtb3QgXCJcIjtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gc3RyaW5naWZ5IG1jdCBcIlwiO1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBzdHJpbmdpZnkgcG90ICgpO1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gc3RyaW5naWZ5IHBjdCAoKVxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIGZtdCAoKSA9XG4gIGxldCBmdW5zID0gcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgbGV0IG1hcmtfb3Blbl90YWcgcyA9IGZ1bnMubWFya19vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IG1hcmtfY2xvc2VfdGFnIHMgPSBmdW5zLm1hcmtfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfb3Blbl90YWcgcyA9IGZ1bnMucHJpbnRfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9jbG9zZV90YWcgcyA9IGZ1bnMucHJpbnRfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICB7bWFya19vcGVuX3RhZzsgbWFya19jbG9zZV90YWc7IHByaW50X29wZW5fdGFnOyBwcmludF9jbG9zZV90YWd9XG5cbmxldCBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIFtzdGRpYl0gaXMgZXF1aXZhbGVudCB0byBbU2Nhbm5pbmcuZnJvbV9jaGFubmVsIFN0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIHN0ZGliIDogaW5fY2hhbm5lbFxuICAoKiBBbiBhbGlhcyBmb3IgW1NjYW5mLnN0ZGluXSwgdGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb21cbiAgICAgW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG4gIHZhbCBtZW1vX2Zyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcbiAgKCogT2Jzb2xldGUuICopXG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaWJdIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cblxuICBsZXQgc3RkaWIgPSBzdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cblxuICAoKlxuICAgICBPYnNvbGV0ZTogYSBtZW1vIFtmcm9tX2NoYW5uZWxdIHZlcnNpb24gdG8gYnVpbGQgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF1cbiAgICAgc2Nhbm5pbmcgYnVmZmVyIG91dCBvZiBhIFtTdGRsaWIuaW5fY2hhbm5lbF0uXG4gICAgIFRoaXMgZnVuY3Rpb24gd2FzIHVzZWQgdG8gdHJ5IHRvIHByZXNlcnZlIHRoZSBzY2FubmluZ1xuICAgICBzZW1hbnRpY3MgZm9yIHRoZSAobm93IG9ic29sZXRlKSBmdW5jdGlvbiBbZnNjYW5mXS5cbiAgICAgR2l2ZW4gdGhhdCBhbGwgc2Nhbm5lciBtdXN0IHJlYWQgZnJvbSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBzY2FubmluZ1xuICAgICBidWZmZXIsIFtmc2NhbmZdIG11c3QgcmVhZCBmcm9tIG9uZSFcbiAgICAgTW9yZSBwcmVjaXNlbHksIGdpdmVuIFtpY10sIGFsbCBzdWNjZXNzaXZlIGNhbGxzIFtmc2NhbmYgaWNdIG11c3QgcmVhZFxuICAgICBmcm9tIHRoZSBzYW1lIHNjYW5uaW5nIGJ1ZmZlci5cbiAgICAgVGhpcyBvYmxpZ2VkIHRoaXMgbGlicmFyeSB0byBhbGxvY2F0ZWQgc2Nhbm5pbmcgYnVmZmVycyB0aGF0IHdlcmVcbiAgICAgbm90IHByb3Blcmx5IGdhcmJhZ2UgY29sbGVjdGFibGUsIGhlbmNlIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLlxuICAgICBJZiB5b3UgbmVlZCB0byByZWFkIGZyb20gYSBbU3RkbGliLmluX2NoYW5uZWxdIGlucHV0IGNoYW5uZWxcbiAgICAgW2ljXSwgc2ltcGx5IGRlZmluZSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBmb3JtYXR0ZWQgaW5wdXQgY2hhbm5lbCBhcyBpblxuICAgICBbbGV0IGliID0gU2Nhbm5pbmcuZnJvbV9jaGFubmVsIGljXSwgdGhlbiB1c2UgW1NjYW5mLmJzY2FuZiBpYl0gYXMgdXN1YWwuXG4gICopXG4gIGxldCBtZW1vX2Zyb21faWMgPVxuICAgIGxldCBtZW1vID0gcmVmIFtdIGluXG4gICAgKGZ1biBzY2FuX2Nsb3NlX2ljIGljIC0+XG4gICAgIHRyeSBMaXN0LmFzc3EgaWMgIW1lbW8gd2l0aFxuICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgIGxldCBpYiA9XG4gICAgICAgICBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgKEZyb21fY2hhbm5lbCBpYykgaWMgaW5cbiAgICAgICBtZW1vIDo9IChpYywgaWIpIDo6ICFtZW1vO1xuICAgICAgIGliKVxuXG5cbiAgKCogT2Jzb2xldGU6IHNlZSB7IW1lbW9fZnJvbV9pY30gYWJvdmUuICopXG4gIGxldCBtZW1vX2Zyb21fY2hhbm5lbCA9IG1lbW9fZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbnR5cGUgJ2Ega3NjYW5mX3Jlc3VsdCA9IEFyZ3Mgb2YgJ2EgfCBFeGMgb2YgZXhuXG5cbmxldCBrc2NhbmYgaWIgZWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggdHJ5IEFyZ3MgKG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpIHdpdGhcbiAgICAgIHwgKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUpIGFzIGV4YyAtPiBFeGMgZXhjXG4gICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgd2l0aFxuICAgICAgfCBBcmdzIGFyZ3MgLT4gYXBwbHkgZiBhcmdzXG4gICAgICB8IEV4YyBleGMgLT4gZWYgaWIgZXhjXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcblxuXG4oKiBEZXByZWNhdGVkICopXG5sZXQga2ZzY2FuZiBpYyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgZWYgZm10XG5sZXQgZnNjYW5mIGljIGZtdCA9IGtzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0b2tlbiA9XG4gICAgS3dkIG9mIHN0cmluZ1xuICB8IElkZW50IG9mIHN0cmluZ1xuICB8IEludCBvZiBpbnRcbiAgfCBGbG9hdCBvZiBmbG9hdFxuICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgfCBDaGFyIG9mIGNoYXJcblxuKCogVGhlIHN0cmluZyBidWZmZXJpbmcgbWFjaGluZXJ5ICopXG5cbmxldCBpbml0aWFsX2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAzMlxuXG5sZXQgYnVmZmVyID0gcmVmIGluaXRpYWxfYnVmZmVyXG5sZXQgYnVmcG9zID0gcmVmIDBcblxubGV0IHJlc2V0X2J1ZmZlciAoKSA9IGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgYnVmcG9zIDo9IDBcblxubGV0IHN0b3JlIGMgPVxuICBpZiAhYnVmcG9zID49IEJ5dGVzLmxlbmd0aCAhYnVmZmVyIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3YnVmZmVyID0gQnl0ZXMuY3JlYXRlICgyICogIWJ1ZnBvcykgaW5cbiAgICBCeXRlcy5ibGl0ICFidWZmZXIgMCBuZXdidWZmZXIgMCAhYnVmcG9zO1xuICAgIGJ1ZmZlciA6PSBuZXdidWZmZXJcbiAgZW5kO1xuICBCeXRlcy5zZXQgIWJ1ZmZlciAhYnVmcG9zIGM7XG4gIGluY3IgYnVmcG9zXG5cbmxldCBnZXRfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nICFidWZmZXIgMCAhYnVmcG9zIGluIGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgc1xuXG4oKiBUaGUgbGV4ZXIgKilcblxubGV0IG1ha2VfbGV4ZXIga2V5d29yZHMgPVxuICBsZXQga3dkX3RhYmxlID0gSGFzaHRibC5jcmVhdGUgMTcgaW5cbiAgTGlzdC5pdGVyIChmdW4gcyAtPiBIYXNodGJsLmFkZCBrd2RfdGFibGUgcyAoS3dkIHMpKSBrZXl3b3JkcztcbiAgbGV0IGlkZW50X29yX2tleXdvcmQgaWQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIGlkIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiBJZGVudCBpZFxuICBhbmQga2V5d29yZF9vcl9lcnJvciBjID1cbiAgICBsZXQgcyA9IFN0cmluZy5tYWtlIDEgYyBpblxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIHMgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgKFwiSWxsZWdhbCBjaGFyYWN0ZXIgXCIgXiBzKSlcbiAgaW5cbiAgbGV0IHJlYyBuZXh0X3Rva2VuIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcgJyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDA5JyB8ICdcXDAyNicgfCAnXFwwMTInKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IG5leHRfdG9rZW4gc3RybV9fXG4gICAgfCBTb21lICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ18nIHwgJ1xcMTkyJy4uJ1xcMjU1JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHwgJz4nIHxcbiAgICAgICAgICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnXFwnJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgY2hhciBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgJ1xcJycgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChDaGFyIGMpXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSAnXFxcIicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IFNvbWUgKFN0cmluZyAoc3RyaW5nIHMpKVxuICAgIHwgU29tZSAnLScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBuZWdfbnVtYmVyIHN0cm1fX1xuICAgIHwgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoa2V5d29yZF9vcl9lcnJvciBjKVxuICAgIHwgXyAtPiBOb25lXG4gIGFuZCBpZGVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ1xcMTkyJy4uJ1xcMjU1JyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcJycgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgaWRlbnQyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICctJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8XG4gICAgICAgICAnPicgfCAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIG5lZ19udW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IF8gLT4gbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IGlkZW50MiBzXG4gIGFuZCBudW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnLicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnLic7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoSW50IChpbnRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBkZWNpbWFsX3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGV4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJysnIHwgJy0nIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBlbmRfZXhwb25lbnRfcGFydCBzdHJtX19cbiAgYW5kIGVuZF9leHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBzdHJpbmcgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcIicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBnZXRfc3RyaW5nICgpXG4gICAgfCBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgY2hhciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgZXNjYXBlIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ24nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcbidcbiAgICB8IFNvbWUgJ3InIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xccidcbiAgICB8IFNvbWUgJ3QnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcdCdcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMxKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzIpIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMykgLT5cbiAgICAgICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICAgICAgQ2hhci5jaHJcbiAgICAgICAgICAgICAgICAgICgoQ2hhci5jb2RlIGMxIC0gNDgpICogMTAwICsgKENoYXIuY29kZSBjMiAtIDQ4KSAqIDEwICtcbiAgICAgICAgICAgICAgICAgICAgIChDaGFyLmNvZGUgYzMgLSA0OCkpXG4gICAgICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgbmV4dF90b2tlbiBzXG4gICAgfCBfIC0+IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgJygnKVxuICBhbmQgY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX25lc3RlZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9uZXN0ZWRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgY29tbWVudCBzXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfZW5kX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAoKVxuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGluXG4gIGZ1biBpbnB1dCAtPiBTdHJlYW0uZnJvbSAoZnVuIF9jb3VudCAtPiBuZXh0X3Rva2VuIGlucHV0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TZWVkZWRTXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBnZXRfa2V5OiAnYSBjb250YWluZXIgLT4gdCBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IWl0ZXJ9LCB7IWZvbGR9LCB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBpdGVyIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkXG4gICAgICAgICAgICBlbmQ7IGRvX2J1Y2tldCByZXN0IGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBmb2xkIGYgaCBpbml0ID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgICAgIG1hdGNoIGIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgICBhY2N1XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGQgYWNjdVxuICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdCBhY2N1ICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjdVxuXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGYgayBkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2QgLT5cbiAgICAgICAgICAgICAgICAgICAgSC5zZXRfa2V5X2RhdGEgYyBrIG5ld19kO1xuICAgICAgICAgICAgICAgICAgICBDb25zKGhrLCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgdG9fc2VxIHRibCA9XG4gICAgICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgICAgIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICAgICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICAgICAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICAgICAgfCBDb25zIChfLCBjLCBuZXh0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IGkgbmV4dCAoKVxuICAgICAgICAgICAgICB8IFNvbWUga2V5LCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGF1eCAwIEVtcHR5XG5cbiAgICBsZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxuICAgIGxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpICh0MjooJ2ssJ2QpIHQpOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoID0gSC5oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgPSBnZXRfa2V5XG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5MV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IGdldF9rZXkyX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAxXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG5cbiAgbGV0IGJsaXRfa2V5MSAodDE6KCdrMSxfLF8pIHQpICh0MjooJ2sxLF8sXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcbiAgbGV0IGJsaXRfa2V5MiAodDE6KF8sJ2syLF8pIHQpICh0MjooXywnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMSB0MiAxIDFcbiAgbGV0IGJsaXRfa2V5MTIgKHQxOignazEsJ2syLF8pIHQpICh0MjooJ2sxLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMlxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXyxfLCdkKSB0KSAodDI6KF8sXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLmhhc2ggc2VlZCBrMSArIEgyLmhhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+IFNvbWUgKGsxJywgazInKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IG5cbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKG8xOmludCkgKHQyOignaywnZCkgdCkgKG8yOmludCkgKGw6aW50KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSBvMSB0MiBvMiBsXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIGxldCBsZW4gPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gU29tZSBbfHxdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgMCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgazAgLT5cbiAgICAgICAgICAgICAgbGV0IHJlYyBmaWxsIGEgaSA9XG4gICAgICAgICAgICAgICAgaWYgaSA8IDEgdGhlbiBTb21lIGFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYS4oaSkgPC0ga2k7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsbCBhIChpLTEpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gazAgaW5cbiAgICAgICAgICAgICAgZmlsbCBhIChsZW4tMSlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBmICdcXFwiJyB8fCBTdHJpbmcuY29udGFpbnMgZiAnJScgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgXCJcXFwiXCIgXiBmIF4gXCJcXFwiXCJcbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYgaW5cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCBuXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZyA9IGxhenkoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9IHJlZiB0ZW1wX2Rpcl9uYW1lXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gY3VycmVudF90ZW1wX2Rpcl9uYW1lIDo9IHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgICAgICAgICAgICAgICAgID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPVxuICAoKiBXYXRjaCBvdXQgZm9yIG92ZXJmbG93IGluIGNvbXB1dGluZyByZV4yICsgaW1eMiAqKVxuICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgaWYgciA9IDAuMCB0aGVuIGlcbiAgZWxzZSBpZiBpID0gMC4wIHRoZW4gclxuICBlbHNlIGlmIHIgPj0gaSB0aGVuXG4gICAgbGV0IHEgPSBpIC8uIHIgaW4gciAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG4gIGVsc2VcbiAgICBsZXQgcSA9IHIgLy4gaSBpbiBpICouIHNxcnQoMS4wICsuIHEgKi4gcSlcblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gICAgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kIGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbWF0Y2ggQXJyYXkubGVuZ3RoIGRpbXMsIGxheW91dCB3aXRoXG4gICAgfCAwLCBfIC0+IGFyclxuICAgIHwgZGxlbiwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgZGxlbiwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiY2FuY2VsXCJcblxuICBsZXQgY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImNsaWNrXCJcblxuICBsZXQgY2xvc2UgPSBEb20uRXZlbnQubWFrZSBcImNsb3NlXCJcblxuICBsZXQgY29weSA9IERvbS5FdmVudC5tYWtlIFwiY29weVwiXG5cbiAgbGV0IGN1dCA9IERvbS5FdmVudC5tYWtlIFwiY3V0XCJcblxuICBsZXQgcGFzdGUgPSBEb20uRXZlbnQubWFrZSBcInBhc3RlXCJcblxuICBsZXQgZGJsY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImRibGNsaWNrXCJcblxuICBsZXQgbW91c2Vkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZWRvd25cIlxuXG4gIGxldCBtb3VzZXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXVwXCJcblxuICBsZXQgbW91c2VvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW92ZXJcIlxuXG4gIGxldCBtb3VzZW1vdmUgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlbW92ZVwiXG5cbiAgbGV0IG1vdXNlb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW91dFwiXG5cbiAgbGV0IGtleXByZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlwcmVzc1wiXG5cbiAgbGV0IGtleWRvd24gPSBEb20uRXZlbnQubWFrZSBcImtleWRvd25cIlxuXG4gIGxldCBrZXl1cCA9IERvbS5FdmVudC5tYWtlIFwia2V5dXBcIlxuXG4gIGxldCBtb3VzZXdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXdoZWVsXCJcblxuICBsZXQgd2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIndoZWVsXCJcblxuICBsZXQgX0RPTU1vdXNlU2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Nb3VzZVNjcm9sbFwiXG5cbiAgbGV0IHRvdWNoc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoc3RhcnRcIlxuXG4gIGxldCB0b3VjaG1vdmUgPSBEb20uRXZlbnQubWFrZSBcInRvdWNobW92ZVwiXG5cbiAgbGV0IHRvdWNoZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGVuZFwiXG5cbiAgbGV0IHRvdWNoY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGRyYWdzdGFydCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ3N0YXJ0XCJcblxuICBsZXQgZHJhZ2VuZCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VuZFwiXG5cbiAgbGV0IGRyYWdlbnRlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VudGVyXCJcblxuICBsZXQgZHJhZ292ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdvdmVyXCJcblxuICBsZXQgZHJhZ2xlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnbGVhdmVcIlxuXG4gIGxldCBkcmFnID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnXCJcblxuICBsZXQgZHJvcCA9IERvbS5FdmVudC5tYWtlIFwiZHJvcFwiXG5cbiAgbGV0IGhhc2hjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gIGxldCBjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImNoYW5nZVwiXG5cbiAgbGV0IGlucHV0ID0gRG9tLkV2ZW50Lm1ha2UgXCJpbnB1dFwiXG5cbiAgbGV0IHRpbWV1cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcInRpbWV1cGRhdGVcIlxuXG4gIGxldCBzdWJtaXQgPSBEb20uRXZlbnQubWFrZSBcInN1Ym1pdFwiXG5cbiAgbGV0IHNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwic2Nyb2xsXCJcblxuICBsZXQgZm9jdXMgPSBEb20uRXZlbnQubWFrZSBcImZvY3VzXCJcblxuICBsZXQgYmx1ciA9IERvbS5FdmVudC5tYWtlIFwiYmx1clwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcInVubG9hZFwiXG5cbiAgbGV0IGJlZm9yZXVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcblxuICBsZXQgcmVzaXplID0gRG9tLkV2ZW50Lm1ha2UgXCJyZXNpemVcIlxuXG4gIGxldCBvcmllbnRhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwib3JpZW50YXRpb25jaGFuZ2VcIlxuXG4gIGxldCBwb3BzdGF0ZSA9IERvbS5FdmVudC5tYWtlIFwicG9wc3RhdGVcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBzZWxlY3QgPSBEb20uRXZlbnQubWFrZSBcInNlbGVjdFwiXG5cbiAgbGV0IG9ubGluZSA9IERvbS5FdmVudC5tYWtlIFwib25saW5lXCJcblxuICBsZXQgb2ZmbGluZSA9IERvbS5FdmVudC5tYWtlIFwib2ZmbGluZVwiXG5cbiAgbGV0IGNoZWNraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGVja2luZ1wiXG5cbiAgbGV0IG5vdXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJub3VwZGF0ZVwiXG5cbiAgbGV0IGRvd25sb2FkaW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJkb3dubG9hZGluZ1wiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IHVwZGF0ZXJlYWR5ID0gRG9tLkV2ZW50Lm1ha2UgXCJ1cGRhdGVyZWFkeVwiXG5cbiAgbGV0IGNhY2hlZCA9IERvbS5FdmVudC5tYWtlIFwiY2FjaGVkXCJcblxuICBsZXQgb2Jzb2xldGUgPSBEb20uRXZlbnQubWFrZSBcIm9ic29sZXRlXCJcblxuICBsZXQgZG9tQ29udGVudExvYWRlZCA9IERvbS5FdmVudC5tYWtlIFwiRE9NQ29udGVudExvYWRlZFwiXG5cbiAgbGV0IGFuaW1hdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25zdGFydFwiXG5cbiAgbGV0IGFuaW1hdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uZW5kXCJcblxuICBsZXQgYW5pbWF0aW9uaXRlcmF0aW9uID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25pdGVyYXRpb25cIlxuXG4gIGxldCBhbmltYXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmNhbmNlbFwiXG5cbiAgbGV0IHRyYW5zaXRpb25ydW4gPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25ydW5cIlxuXG4gIGxldCB0cmFuc2l0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25zdGFydFwiXG5cbiAgbGV0IHRyYW5zaXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25lbmRcIlxuXG4gIGxldCB0cmFuc2l0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uY2FuY2VsXCJcblxuICBsZXQgY2FucGxheSA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheVwiXG5cbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5dGhyb3VnaFwiXG5cbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJkdXJhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IGVtcHRpZWQgPSBEb20uRXZlbnQubWFrZSBcImVtcHRpZWRcIlxuXG4gIGxldCBlbmRlZCA9IERvbS5FdmVudC5tYWtlIFwiZW5kZWRcIlxuXG4gIGxldCBnb3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwiZ290cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBsb2FkZWRkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRkYXRhXCJcblxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZG1ldGFkYXRhXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IG1lc3NhZ2UgPSBEb20uRXZlbnQubWFrZSBcIm1lc3NhZ2VcIlxuXG4gIGxldCBwYXVzZSA9IERvbS5FdmVudC5tYWtlIFwicGF1c2VcIlxuXG4gIGxldCBwbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5XCJcblxuICBsZXQgcGxheWluZyA9IERvbS5FdmVudC5tYWtlIFwicGxheWluZ1wiXG5cbiAgbGV0IHBvaW50ZXJlbnRlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmVudGVyXCJcblxuICBsZXQgcG9pbnRlcmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmNhbmNlbFwiXG5cbiAgbGV0IHBvaW50ZXJkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZG93blwiXG5cbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmxlYXZlXCJcblxuICBsZXQgcG9pbnRlcm1vdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJtb3ZlXCJcblxuICBsZXQgcG9pbnRlcm91dCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm91dFwiXG5cbiAgbGV0IHBvaW50ZXJvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3ZlclwiXG5cbiAgbGV0IHBvaW50ZXJ1cCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcnVwXCJcblxuICBsZXQgcmF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmF0ZWNoYW5nZVwiXG5cbiAgbGV0IHNlZWtlZCA9IERvbS5FdmVudC5tYWtlIFwic2Vla2VkXCJcblxuICBsZXQgc2Vla2luZyA9IERvbS5FdmVudC5tYWtlIFwic2Vla2luZ1wiXG5cbiAgbGV0IHN0YWxsZWQgPSBEb20uRXZlbnQubWFrZSBcInN0YWxsZWRcIlxuXG4gIGxldCBzdXNwZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJzdXNwZW5kXCJcblxuICBsZXQgdm9sdW1lY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJ2b2x1bWVjaGFuZ2VcIlxuXG4gIGxldCB3YWl0aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJ3YWl0aW5nXCJcblxuICBsZXQgbWFrZSA9IERvbS5FdmVudC5tYWtlXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IERvbS5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgPSBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyID0gRG9tLnJlbW92ZUV2ZW50TGlzdGVuZXJcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID0gRG9tLmNyZWF0ZUN1c3RvbUV2ZW50XG5cbmNsYXNzIHR5cGUgWydub2RlXSBjb2xsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgaHRtbEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsaW5rRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcm9zc29yaWdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1ldGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodHRwRXF1aXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjaGVtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJhc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYm9keUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZm9ybUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGVsZW1lbnRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHRDaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVuY3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9tZXRob2QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VibWl0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc2V0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uc3VibWl0IDogKCdzZWxmIHQsIHN1Ym1pdEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRHcm91cEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbGFiZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgb3B0R3JvdXBFbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRTZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNlbGVjdEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3B0aW9ucyA6IG9wdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGFkZCA6ICNvcHRHcm91cEVsZW1lbnQgdCAtPiAjb3B0R3JvdXBFbGVtZW50IHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnB1dEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0Q2hlY2tlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoZWNrZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1heExlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGV4dEFyZWFFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xzIDogaW50IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYnV0dG9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGFiZWxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0bWxGb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmaWVsZFNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsZWdlbmRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB1TGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgb0xpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBsaUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZGlhbG9nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VfcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3Blbl8gOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hvdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaG93TW9kYWwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jYW5jZWwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZWxsaXBzZSA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGlhbG9nIGRvYyA6IGRpYWxvZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGlhbG9nXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGlhbG9nIG9mIGRpYWxvZ0VsZW1lbnQgdFxuICB8IERpdiBvZiBkaXZFbGVtZW50IHRcbiAgfCBEbCBvZiBkTGlzdEVsZW1lbnQgdFxuICB8IEVtYmVkIG9mIGVtYmVkRWxlbWVudCB0XG4gIHwgRmllbGRzZXQgb2YgZmllbGRTZXRFbGVtZW50IHRcbiAgfCBGb3JtIG9mIGZvcm1FbGVtZW50IHRcbiAgfCBGcmFtZXNldCBvZiBmcmFtZVNldEVsZW1lbnQgdFxuICB8IEZyYW1lIG9mIGZyYW1lRWxlbWVudCB0XG4gIHwgSDEgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgyIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMyBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDQgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg1IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSGVhZCBvZiBoZWFkRWxlbWVudCB0XG4gIHwgSHIgb2YgaHJFbGVtZW50IHRcbiAgfCBIdG1sIG9mIGh0bWxFbGVtZW50IHRcbiAgfCBJZnJhbWUgb2YgaUZyYW1lRWxlbWVudCB0XG4gIHwgSW1nIG9mIGltYWdlRWxlbWVudCB0XG4gIHwgSW5wdXQgb2YgaW5wdXRFbGVtZW50IHRcbiAgfCBJbnMgb2YgbW9kRWxlbWVudCB0XG4gIHwgTGFiZWwgb2YgbGFiZWxFbGVtZW50IHRcbiAgfCBMZWdlbmQgb2YgbGVnZW5kRWxlbWVudCB0XG4gIHwgTGkgb2YgbGlFbGVtZW50IHRcbiAgfCBMaW5rIG9mIGxpbmtFbGVtZW50IHRcbiAgfCBNYXAgb2YgbWFwRWxlbWVudCB0XG4gIHwgTWV0YSBvZiBtZXRhRWxlbWVudCB0XG4gIHwgT2JqZWN0IG9mIG9iamVjdEVsZW1lbnQgdFxuICB8IE9sIG9mIG9MaXN0RWxlbWVudCB0XG4gIHwgT3B0Z3JvdXAgb2Ygb3B0R3JvdXBFbGVtZW50IHRcbiAgfCBPcHRpb24gb2Ygb3B0aW9uRWxlbWVudCB0XG4gIHwgUCBvZiBwYXJhZ3JhcGhFbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR2FicmllbCBSYWRhbm5lIDxkcnVweW9nK2NhbWxAem9oby5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gIHR5cGUgKC0nYSwgJ2IpIGZ0XG4gIHZhbCBmbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdCAtPiAnYiB0XG5cbiAgdHlwZSAnYSB0bGlzdFxuICB2YWwgbmlsIDogdW5pdCAtPiAnYSB0bGlzdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgdCAtPiAnYSB0bGlzdFxuICB2YWwgY29ucyA6ICdhIHQgLT4gJ2EgdGxpc3QgLT4gJ2EgdGxpc3RcbiAgdmFsIGFwcGVuZCA6ICdhIHRsaXN0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsICdiKSBmdCAtPiAnYSB0bGlzdCAtPiAnYiB0bGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE5vV3JhcCA9XG4gIFQgd2l0aCB0eXBlICdhIHQgPSAnYVxuICAgICBhbmQgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgICAgYW5kIHR5cGUgKC0nYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxubW9kdWxlIE5vV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuICB0eXBlICdhIHRsaXN0ID0gJ2EgbGlzdFxuICB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgZm1hcCBmIDogICdhIHQgLT4gJ2IgdCA9IGZcblxuICBsZXQgbmlsICgpID0gW11cbiAgbGV0IHNpbmdsZXRvbiB4ID0gW3hdXG4gIGxldCBjb25zIHggeHMgPSB4Ojp4c1xuICBsZXQgYXBwZW5kIHggeT0geEB5XG4gIGxldCBtYXAgPSBMaXN0Lm1hcFxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDE4IEdhYnJpZWwgUmFkYW5uZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxudHlwZSBuYW1lID0gc3RyaW5nICogc3RyaW5nXG5cbigqKiBJbnB1dCAqKVxuXG50eXBlIHNpZ25hbCA9IFtcbiAgfCBgQ29tbWVudCBvZiBzdHJpbmdcbiAgfCBgRW5kX2VsZW1lbnRcbiAgfCBgU3RhcnRfZWxlbWVudCBvZiBuYW1lICogKG5hbWUgKiBzdHJpbmcpIGxpc3RcbiAgfCBgVGV4dCBvZiBzdHJpbmcgbGlzdFxuXVxuXG5leGNlcHRpb24gTWFsZm9ybWVkX3N0cmVhbVxuXG5tb2R1bGUgSW1wb3J0XG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG49IHN0cnVjdFxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBhIGIgLT4gWG1sLlcuKGNvbnMgKHJldHVybiBhKSBiKSlcbiAgICAgIGwgKFhtbC5XLm5pbCAoKSlcblxuICBsZXQgbWtfYXR0cmlicyBhdHRycyA9XG4gICAgKCogVE9ETzogVGhpcyBpcyBub3QgdmVyeSBzdHJ1Y3R1cmVkICopXG4gICAgbGV0IGYgKChfLG5hbWUpLCB2KSA9IFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFhtbC5XLnJldHVybiB2KSBpblxuICAgIExpc3QubWFwIGYgYXR0cnNcblxuICBsZXQgcmVjIG1rIGNoaWxkcmVuIChzZXEgOiBzaWduYWwgU2VxLnQpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IENvbnMgKGBDb21tZW50IHMsIHEpIC0+XG4gICAgICBtayAoWG1sLmNvbW1lbnQgcyA6OiBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFRleHQgcywgcSkgLT5cbiAgICAgIG1rIChMaXN0Lm1hcCAoZnVuIHggLT4gWG1sLnBjZGF0YSBAQCBYbWwuVy5yZXR1cm4geCkgcyBAIGNoaWxkcmVuKSBxXG4gICAgfCBDb25zIChgU3RhcnRfZWxlbWVudCAoKF8sIG5hbWUpLCBhdHRycyksIHEpIC0+XG4gICAgICBsZXQgYSA9IG1rX2F0dHJpYnMgYXR0cnMgaW5cbiAgICAgIGxldCBzdWJfY2hpbGRyZW4sIHJlc3QgPSBtayBbXSBxIGluXG4gICAgICBtayAoWG1sLm5vZGUgfmEgbmFtZSBzdWJfY2hpbGRyZW4gOjogY2hpbGRyZW4pIHJlc3RcbiAgICB8IENvbnMgKGBFbmRfZWxlbWVudCwgcmVzdCkgLT5cbiAgICAgIG9mX2xpc3QgKExpc3QucmV2IGNoaWxkcmVuKSwgcmVzdFxuICAgIHwgTmlsIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIFNlcS5lbXB0eVxuXG4gIGxldCBvZl9zZXEgc2VxID1cbiAgICBsZXQgbCwgcmVzdCA9IG1rIFtdIHNlcSBpblxuICAgIG1hdGNoIHJlc3QgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiBsXG4gICAgfCBfIC0+IHJhaXNlIE1hbGZvcm1lZF9zdHJlYW1cblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA4IFZpbmNlbnQgQmFsYXQsIE1hdXJpY2lvIEZlcm5hbmRlelxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5sZXQgaXNfY29udHJvbCBjID1cbiAgbGV0IGNjID0gQ2hhci5jb2RlIGMgaW5cbiAgKGNjIDw9IDggfHwgY2MgPSAxMSB8fCBjYyA9IDEyIHx8ICgxNCA8PSBjYyAmJiBjYyA8PSAzMSkgfHwgY2MgPSAxMjcpXG5cbmxldCBhZGRfdW5zYWZlX2NoYXIgYiA9IGZ1bmN0aW9uXG4gIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gIHwgJyYnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gIHwgYyB3aGVuIGlzX2NvbnRyb2wgYyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImI1wiIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfaW50IChDaGFyLmNvZGUgYykpIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiO1wiXG4gIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXIgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBTdHJpbmcuaXRlciAoYWRkX3Vuc2FmZV9jaGFyIGIpIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXJfYW5kX2F0IHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgJ0AnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImIzY0O1wiXG4gICAgfCBjIC0+IGFkZF91bnNhZmVfY2hhciBiIGNcbiAgaW5cbiAgU3RyaW5nLml0ZXIgZiBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgY29tcG9zZV9kZWNsID8odmVyc2lvbiA9IFwiMS4wXCIpID8oZW5jb2RpbmcgPSBcIlVURi04XCIpICgpID1cbiAgRm9ybWF0LnNwcmludGZcbiAgICB7fDw/eG1sIHZlcnNpb249XCIlc1wiIGVuY29kaW5nPVwiJXNcIj8+XFxufH1cbiAgICB2ZXJzaW9uIGVuY29kaW5nXG5cbmxldCBjb21wb3NlX2RvY3R5cGUgZHQgYXJncyA9XG4gIGxldCBwcF9hcmdzIGZtdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiIFBVQkxJQyAlYVwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOkZvcm1hdC5wcF9wcmludF9zcGFjZVxuICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIpKVxuICAgICAgICBsXG4gIGluXG4gIEZvcm1hdC5hc3ByaW50ZlxuICAgIFwiPCFET0NUWVBFICVzJWE+XCJcbiAgICBkdFxuICAgIHBwX2FyZ3MgYXJnc1xuXG5sZXQgcmVfZW5kX2NvbW1lbnQgPSBSZS4oY29tcGlsZSBAQCBhbHQgW1xuICBzZXEgWyBib3MgOyBzdHIgXCI+XCIgXSA7XG4gIHNlcSBbIGJvcyA7IHN0ciBcIi0+XCIgXSA7XG4gIHN0ciBcIi0tPlwiIDtcbiAgc3RyIFwiLS0hPlwiIDtcbl0pXG5sZXQgZXNjYXBlX2NvbW1lbnQgcyA9XG4gIGxldCBmIGcgPSBtYXRjaCBSZS5Hcm91cC5nZXQgZyAwIHdpdGhcbiAgICB8IFwiPlwiIC0+IFwiJmd0O1wiXG4gICAgfCBcIi0+XCIgLT4gXCItJmd0O1wiXG4gICAgfCBcIi0tPlwiIC0+IFwiLS0mZ3Q7XCJcbiAgICB8IFwiLS0hPlwiIC0+IFwiLS0hJmd0O1wiXG4gICAgfCBzIC0+IHNcbiAgaW5cbiAgUmUucmVwbGFjZSB+YWxsOnRydWUgcmVfZW5kX2NvbW1lbnQgfmYgc1xuXG4oKiBjb3BpZWQgZm9ybSBqc19vZl9vY2FtbDogY29tcGlsZXIvamF2YXNjcmlwdC5tbCAqKVxubGV0IHBwX251bWJlciBmbXQgdiA9XG4gIGlmIHYgPSBpbmZpbml0eVxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPSBuZWdfaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIi1JbmZpbml0eVwiXG4gIGVsc2UgaWYgdiA8PiB2XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOYU5cIlxuICBlbHNlXG4gICAgbGV0IHZpbnQgPSBpbnRfb2ZfZmxvYXQgdiBpblxuICAgICgqIGNvbXBpbGVyIDEwMDAgaW50byAxZTMgKilcbiAgICBpZiBmbG9hdF9vZl9pbnQgdmludCA9IHZcbiAgICB0aGVuXG4gICAgICBsZXQgcmVjIGRpdiBuIGkgPVxuICAgICAgICBpZiBuIDw+IDAgJiYgbiBtb2QgMTAgPSAwXG4gICAgICAgIHRoZW4gZGl2IChuLzEwKSAoc3VjYyBpKVxuICAgICAgICBlbHNlXG4gICAgICAgIGlmIGkgPiAyXG4gICAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgZm10IFwiJWRlJWRcIiBuIGlcbiAgICAgICAgZWxzZSBGb3JtYXQucHBfcHJpbnRfaW50IGZtdCB2aW50IGluXG4gICAgICBkaXYgdmludCAwXG4gICAgZWxzZVxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjEyZ1wiIHYgaW5cbiAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczFcbiAgICAgIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgczFcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHMyID0gUHJpbnRmLnNwcmludGYgXCIlLjE1Z1wiIHYgaW5cbiAgICAgICAgaWYgdiA9IGZsb2F0X29mX3N0cmluZyBzMlxuICAgICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMyXG4gICAgICAgIGVsc2UgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiUuMThnXCIgdlxuXG5sZXQgc3RyaW5nX29mX251bWJlciB2ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcF9udW1iZXIgdlxuXG5tb2R1bGUgVXRmOCA9IHN0cnVjdFxuICB0eXBlIHV0ZjggPSBzdHJpbmdcblxuICBsZXQgbm9ybWFsaXplIHNyYyA9XG4gICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzcmMpIGluXG4gICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICB8IGBVY2hhciBjb2RlIC0+IFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgY29kZVxuICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAoKSBzcmM7XG4gICAgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIsICF3YXJuKVxuXG4gIGxldCBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgPVxuICAgIGxldCByZWMgbG9vcCBzcmMgaSBsID1cbiAgICAgIGkgPCBsICYmXG4gICAgICBtYXRjaCBzcmMuW2ldIHdpdGhcbiAgICAgICgqIENoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVuY29kZWQgaW4gSFRNTCAqKVxuICAgICAgfCAnXFwwMzQnIHwgJ1xcMDM4JyB8ICdcXDA2MCcgfCdcXDA2MicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAoKiBBU0NJSSBjaGFyYWN0ZXJzICopXG4gICAgICB8ICdcXDAwOScgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAzMicuLidcXDEyNicgLT5cbiAgICAgICAgICBsb29wIHNyYyAoaSArIDEpIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICBpblxuICAgIGxvb3Agc3JjIDAgKFN0cmluZy5sZW5ndGggc3JjKVxuXG4gIGxldCBub3JtYWxpemVfaHRtbCBzcmMgPVxuICAgIGlmIG5vcm1hbGl6YXRpb25fbmVlZGVkIHNyYyB0aGVuIGJlZ2luXG4gICAgICBsZXQgd2FybiA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgICAoZnVuIF8gXyBkIC0+XG4gICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICB8IGBVY2hhciB1IC0+XG4gICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gICAgICAgICAgICAgICB8IDM0IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgIHwgMzggLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImYW1wO1wiXG4gICAgICAgICAgICAgICB8IDYwIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmx0O1wiXG4gICAgICAgICAgICAgICB8IDYyIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmd0O1wiXG4gICAgICAgICAgICAgICB8IGNvZGUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgdSA9XG4gICAgICAgICAgICAgICAgICAgICAoKiBJbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGFyYWN0ZXJfZW5jb2RpbmdzX2luX0hUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sICopXG4gICAgICAgICAgICAgICAgICAgICBpZiAoKiBBLiBjb250cm9sIEMwICopXG4gICAgICAgICAgICAgICAgICAgICAgIChjb2RlIDw9IDMxICYmIGNvZGUgPD4gOSAmJiBjb2RlIDw+IDEwICYmIGNvZGUgPD4gMTMpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEIuIERFTCArIGNvbnRyb2wgQzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbnZhbGlkIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBkaXNjb3VyYWdlZCBpbiB4bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAweDg1IHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBsZXQncyBkaXNjYXJkIGl0IGFueXdheSAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCAoY29kZSA+PSAxMjcgJiYgY29kZSA8PSAxNTkpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEMuIFVURi0xNiBzdXJyb2dhdGUgaGFsdmVzIDogYWxyZWFkeSBkaXNjYXJkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXV0ZiB8fCAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpICopXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEQuIEJPTSByZWxhdGVkICopXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkVcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgY29kZSBsYW5kIDB4RkZGRiA9IDB4RkZGRlxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAod2Fybjo9dHJ1ZTsgVXV0Zi51X3JlcClcbiAgICAgICAgICAgICAgICAgICAgIGVsc2UgdVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciB1XG4gICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAgICgpIHNyYztcbiAgICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcbiAgICBlbmQgZWxzZVxuICAgICAgKHNyYywgZmFsc2UpXG5cbmVuZFxuXG5tb2R1bGUgdHlwZSBUYWdMaXN0ID0gc2lnIHZhbCBlbXB0eXRhZ3MgOiBzdHJpbmcgbGlzdCBlbmRcblxuKCoqIEZvcm1hdCBiYXNlZCBwcmludGVycyAqKVxuXG5sZXQgcHBfbm9vcCBfZm10IF8gPSAoKVxuXG5tb2R1bGUgTWFrZV9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KSA9XG5zdHJ1Y3RcbiAgb3BlbiBYbWxcblxuICBsZXQgb3Blbl9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9vcGVuX2JveCBmbXQgMCBlbHNlICgpXG4gIGxldCBjbG9zZV9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpIGVsc2UgKClcbiAgbGV0IHNwIGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKCkgZWxzZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuICBsZXQgY3V0IGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpIGVsc2UgKClcblxuICBtb2R1bGUgUyA9IFNldC5NYWtlKFN0cmluZylcbiAgbGV0IGlzX2VtcHR5dGFnID0gbWF0Y2ggSS5lbXB0eXRhZ3Mgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IGwgLT5cbiAgICAgIGxldCBzZXQgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBTLmFkZCB4IHMpIFMuZW1wdHkgbCBpblxuICAgICAgZnVuIHggLT4gUy5tZW0geCBzZXRcblxuICBsZXQgcHBfZW5jb2RlIGVuY29kZSBpbmRlbnQgZm10IHMgPVxuICAgIGxldCBzID0gZW5jb2RlIHMgaW5cbiAgICBpZiBpbmRlbnQgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFslYUBdXCIgRm9ybWF0LnBwX3ByaW50X3RleHQgc1xuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcblxuICBsZXQgcHBfc2VwIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBmdW4gZm10ICgpIC0+IHNwIGluZGVudCBmbXRcbiAgICB8IENvbW1hIC0+IGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLCV0XCIgKHNwIGluZGVudClcblxuICBsZXQgcHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQgZm10IGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIiBwcF9udW1iZXIgZlxuICAgIHwgQUludCBpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVhXFxcIlwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOihwcF9zZXAgaW5kZW50IHNlcClcbiAgICAgICAgICAgKHBwX2VuY29kZSBlbmNvZGUgaW5kZW50KSkgc2xpc3RcblxuICBsZXQgcHBfYXR0cmliIGVuY29kZSBpbmRlbnQgZm10IGEgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdFxuICAgICAgXCIldCVzPSVhXCIgKHNwIGluZGVudCkgKGFuYW1lIGEpIChwcF9hdHRyaWJfdmFsdWUgZW5jb2RlIGluZGVudCkgYVxuXG4gIGxldCBwcF9hdHRyaWJzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6cHBfbm9vcCAocHBfYXR0cmliIGVuY29kZSBpbmRlbnQpXG5cbiAgbGV0IHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50IGZtdCAodGFnLCBhdHRycykgPVxuICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJWEldFwiIHRhZyAocHBfYXR0cmlicyBlbmNvZGUgaW5kZW50KSBhdHRycyAoY3V0IGluZGVudCk7XG4gICAgY2xvc2VfYm94IGluZGVudCBmbXRcblxuICBsZXQgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyA9XG4gICAgaWYgaXNfZW1wdHl0YWcgdGFnIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYS8+XCIgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICBlbHNlIGJlZ2luXG4gICAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYT4ldDwvJXM+XCJcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuICAgIGVuZFxuXG4gIGxldCByZWMgcHBfdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgIHwgW10gLT4gcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRyc1xuICAgIHwgXyAtPlxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JXQlYT4ldCVhJXQldDwvJXM+XCJcbiAgICAgICAgKG9wZW5fYm94IGluZGVudClcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIChwcF9lbHRzIGVuY29kZSBpbmRlbnQpIGNoaWxkcmVuXG4gICAgICAgIChjbG9zZV9ib3ggaW5kZW50KVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgdGFnIDtcbiAgICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgYW5kIHBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCBlbHQgPSBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG4gICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tJXMtLT5cIiAoZXNjYXBlX2NvbW1lbnQgdGV4dGUpXG5cbiAgICB8IEVudGl0eSBlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCImJXM7XCIgZVxuXG4gICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgIHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCB0ZXh0ZVxuXG4gICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCB0ZXh0ZVxuXG4gICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3RcblxuICAgIHwgTGVhZiAobmFtZSwgeGhfYXR0cnMpIC0+XG4gICAgICBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRyc1xuXG4gICAgfCBFbXB0eSAtPiAoKVxuXG4gIGFuZCBwcF9lbHRzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGN1dCBpbmRlbnQgZm10KVxuICAgICAgKHBwX2VsdCBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcCA/KGVuY29kZT1lbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSAoKSA9XG4gICAgcHBfZWx0IGVuY29kZSBpbmRlbnRcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX2ZtdFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBQID0gTWFrZV9mbXQoWG1sKShUeXBlZF94bWwuSW5mbylcblxuICAoKiBBZGQgYW4geG1sbnMgdGFnIG9uIHRoZSBodG1sIGVsZW1lbnQgaWYgaXQncyBub3QgYWxyZWFkeSBwcmVzZW50ICopXG4gIGxldCBwcmVwYXJlX2RvY3VtZW50IGRvYyA9XG4gICAgbGV0IGRvYyA9IFR5cGVkX3htbC5kb2NfdG9lbHQgZG9jIGluXG4gICAgbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICB8IFhtbC5Ob2RlIChuLCBhLCBjKSAtPlxuICAgICAgbGV0IGEgPVxuICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgdGhlbiBhXG4gICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICBpblxuICAgICAgWG1sLm5vZGUgfmEgbiBjXG4gICAgfCBfIC0+IGRvY1xuXG4gIGxldCBwcF9lbHQgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgZm10IGZvcmV0ID1cbiAgICBQLnBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCAoVHlwZWRfeG1sLnRvZWx0IGZvcmV0KVxuXG4gIGxldCBwcCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpID9hZHZlcnQgKCkgZm10IGRvYyA9XG4gICAgRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgMCA7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXNALFwiIFR5cGVkX3htbC5JbmZvLmRvY3R5cGUgO1xuXG4gICAgYmVnaW4gbWF0Y2ggYWR2ZXJ0IHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwhLS0gJXMgLS0+QCxcIiBzXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBlbmQgO1xuXG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKHByZXBhcmVfZG9jdW1lbnQgZG9jKSA7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpXG4gICAgKE8gOiBYbWxfc2lncy5PdXRwdXQpID1cbnN0cnVjdFxuXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBvcGVuIFhtbFxuXG4gIGxldCBzZXBhcmF0b3JfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNwYWNlIC0+IFwiIFwiXG4gICAgfCBDb21tYSAtPiBcIiwgXCJcblxuICBsZXQgYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSA9IG1hdGNoIGFjb250ZW50IGEgd2l0aFxuICAgIHwgQUZsb2F0IGYgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKHN0cmluZ19vZl9udW1iZXIgZilcbiAgICB8IEFJbnQgaSAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKGVuY29kZSBzKVxuICAgIHwgQVN0ckwgKHNlcCwgc2xpc3QpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIlxuICAgICAgICAoZW5jb2RlIChTdHJpbmcuY29uY2F0IChzZXBhcmF0b3JfdG9fc3RyaW5nIHNlcCkgc2xpc3QpKVxuXG4gIGxldCBhdHRyaWJfdG9fc3RyaW5nIGVuY29kZSBhID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPSVzXCIgKGFuYW1lIGEpIChhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIGVuY29kZSBhKVxuXG4gIGxldCByZWMgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzID0gbWF0Y2ggYXR0cnMgd2l0aFxuICAgIHwgW10gLT4gTy5lbXB0eVxuICAgIHwgYXR0cjo6cXVldWUgLT5cbiAgICAgIE8ucHV0IChcIiBcIl4gYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYXR0cilcbiAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBxdWV1ZVxuXG4gIGFuZCB4aF9wcmludF9jbG9zZWR0YWcgZW5jb2RlIHRhZyBhdHRycyA9XG4gICAgaWYgSS5lbXB0eXRhZ3MgPSBbXSB8fCBMaXN0Lm1lbSB0YWcgSS5lbXB0eXRhZ3NcbiAgICB0aGVuXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIiAvPlwiKVxuICAgIGVsc2VcbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IChcIj48L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHhoX3ByaW50X3RhZyBlbmNvZGUgdGFnIGF0dHJzIHRhZ2xpc3QgPVxuICAgIGlmIHRhZ2xpc3QgPSBbXVxuICAgIHRoZW4geGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnNcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIj5cIlxuICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3RcbiAgICAgICArKyBPLnB1dCAoXCI8L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWUgPVxuICAgIHhoX3ByaW50X3RhZyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG4gICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgdGFnbGlzdCA9XG4gICAgbWF0Y2ggdGFnbGlzdCB3aXRoXG5cbiAgICB8IFtdIC0+IE8uZW1wdHlcblxuICAgIHwgZWx0IDo6IHF1ZXVlIC0+IG1hdGNoIGNvbnRlbnQgZWx0IHdpdGhcblxuICAgICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICAgIE8ucHV0IChcIjwhLS1cIl4oZW5jb2RlIHRleHRlKV5cIi0tPlwiKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVudGl0eSBlIC0+XG4gICAgICAgIE8ucHV0IChcIiZcIl5lXlwiO1wiKSAoKiBubyBlbmNvZGluZyAqKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoZW5jb2RlIHRleHRlKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVuY29kZWRQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgdGV4dGVcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdCBxdWV1ZVxuXG4gICAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgICBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyBbXSBxdWV1ZVxuXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgbGV0IHByaW50X2xpc3QgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpIGZvcmV0ID1cbiAgICBPLm1ha2UgKHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIGZvcmV0KVxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2UoWG1sKShUeXBlZF94bWwuSW5mbykoTylcbiAgbGV0ICgrKykgPSBPLmNvbmNhdFxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlIChQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIChMaXN0Lm1hcCBUeXBlZF94bWwudG9lbHQgZm9yZXQpKVxuXG4gIGxldCBwcmludCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhhZHZlcnQgPSBcIlwiKSBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIGxldCBkb2MgPSBtYXRjaCBYbWwuY29udGVudCBkb2Mgd2l0aFxuICAgICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgICAgbGV0IGEgPVxuICAgICAgICAgIGlmIExpc3QuZXhpc3RzIChmdW4gYSAtPiBYbWwuYW5hbWUgYSA9IFwieG1sbnNcIikgYVxuICAgICAgICAgIHRoZW4gYVxuICAgICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICAgIGluXG4gICAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgICAgfCBfIC0+IGRvYyBpblxuICAgIE8ubWFrZVxuICAgICAgKE8ucHV0IFR5cGVkX3htbC5JbmZvLmRvY3R5cGVcbiAgICAgICArKyBPLnB1dCAoaWYgYWR2ZXJ0IDw+IFwiXCIgdGhlbiAoXCI8IS0tIFwiIF4gYWR2ZXJ0IF4gXCIgLS0+XFxuXCIpIGVsc2UgXCJcXG5cIilcbiAgICAgICArKyBQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIFtkb2NdKVxuXG5lbmRcblxubW9kdWxlIFNpbXBsZV9vdXRwdXQoTSA6IHNpZyB2YWwgcHV0OiBzdHJpbmcgLT4gdW5pdCBlbmQpID0gc3RydWN0XG4gIHR5cGUgb3V0ID0gdW5pdFxuICB0eXBlIG0gPSB1bml0IC0+IHVuaXRcbiAgbGV0IGVtcHR5ICgpID0gKClcbiAgbGV0IGNvbmNhdCBmMSBmMiAoKSA9IGYxICgpOyBmMiAoKVxuICBsZXQgcHV0IHMgKCkgPSBNLnB1dCBzXG4gIGxldCBtYWtlIGYgPSBmICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfc2ltcGxlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID0gTWFrZShYbWwpKEkpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBsZXQgcHJpbnRfbGlzdCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRfbGlzdFxuXG4gIGxldCBwcmludCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZShYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSkgPSBzdHJ1Y3RcblxuICBvcGVuIFhtbFxuXG4gICgqKiBJdGVyYXRvcnMgKilcblxuICBsZXQgYW1hcDEgZiBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IGxlYWYgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPiBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSBlbHRzXG5cbiAgbGV0IHJlYyBhbWFwIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG5vZGUgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lIChMaXN0Lm1hcCAoYW1hcCBmKSBlbHRzKVxuXG4gIGxldCByZWMgYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfZmxvYXRfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBRmxvYXQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGZsb2F0X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtpbnRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgaW50X2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9pbnRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgcm1fYXR0cmliIGlzX2F0dHJpYiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IHJtX2F0dHJpYiBpc19hdHRyaWIgdGFpbFxuXG4gIGxldCBtYXBfaW50X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUludCB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gaW50X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9zdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ciB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gc3RyaW5nX2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXV1cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChTcGFjZSwgdmFsdWVzJykgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgKHZhbHVlIDo6IHZhbHVlcycpIDo6IHRhaWxcbiAgICAgIHwgXyB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdIDo6IHRhaWxcbiAgICAgIHwgXyAtPiBoZWFkIDo6IGFkZF9zcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoQ29tbWEsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBjb21tYV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYl9mcm9tX2xpc3QgaXNfYXR0cmliIGlzX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBMaXN0LmZpbHRlciAoZnVuIHYgLT4gbm90IChpc192YWx1ZSB2KSkgdmFsdWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHRhaWxcbiAgICAgICAgICB8IHZhbHVlcycgLT5cbiAgICAgICAgICAgIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgICB8IFNwYWNlIC0+IHNwYWNlX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIHZhbHVlcycgOjogdGFpbFxuICAgICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gaGVhZCA6OiBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9zdHJpbmdfYXR0cmliX2luX2xpc3QgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChzZXAsIHZhbHVlcykgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eVxuICAgICAgb2ZfbGVhZiBvZl9ub2RlIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSAtPiBvZl9lbXB0eSAoKVxuICAgIHwgQ29tbWVudCBzIC0+IG9mX2NvbW1lbnQgc1xuICAgIHwgUENEQVRBIHMgLT4gb2ZfdHh0IHNcbiAgICB8IEVuY29kZWRQQ0RBVEEgcyAtPiBvZl9lbmNvZGVkcGNkYXRhIHNcbiAgICB8IEVudGl0eSBzIC0+IG9mX2VudGl0eSBzXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBvZl9sZWFmIG5hbWUgYXR0cmlic1xuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG9mX25vZGUgbmFtZSBhdHRyaWJzXG4gICAgICAgIChMaXN0Lm1hcCAoZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eSBvZl9sZWFmIG9mX25vZGUpIGVsdHMpXG5cbiAgbGV0IGFsbF9lbnRpdGllcyBlbHQgPVxuICAgIGxldCBmIF8gPSBbXSBpblxuICAgIGZvbGQgZiBmIGYgZiBmXG4gICAgICAoZnVuIF9lbmFtZSBfYXR0cmlicyAtPiBbXSkgKGZ1biBfZW5hbWUgX2F0dHJpYnMgZWx0cyAtPiBMaXN0LmZsYXR0ZW4gZWx0cylcbiAgICAgIGVsdFxuXG4gIGxldCBmbGF0bWFwIGYgbCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCBmIGwpXG5cbiAgbGV0IHRyYW5zbGF0ZSByb290X2xlYWYgcm9vdF9ub2RlIHN1Yl9sZWFmIHN1Yl9ub2RlIHVwZGF0ZV9zdGF0ZSBzdGF0ZSBuID1cbiAgICBsZXQgcmVjIHRyYW5zbGF0ZScgc3RhdGUgIG4gPVxuICAgICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gW25dXG4gICAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICAgIHN1Yl9sZWFmIHN0YXRlIG5hbWUgYXR0cmlic1xuICAgICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgICBzdWJfbm9kZSBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgICAgICAoZmxhdG1hcCAodHJhbnNsYXRlJyAodXBkYXRlX3N0YXRlIG5hbWUgYXR0cmlicyBzdGF0ZSkpIGVsdHMpXG4gICAgaW5cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT5cbiAgICAgIHJvb3RfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICByb290X25vZGUgbmFtZSBhdHRyaWJzIChmbGF0bWFwICh0cmFuc2xhdGUnIHN0YXRlKSBlbHRzKVxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgU2ltb24gQ2FzdGVsbGFuXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgVmluY2VudCBCYWxhdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuKCoqIFR5cGUgaW5zdGFudGlhdGlvbnMgZm9yIFNWRyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBiYXNpYyBkYXRhIHR5cGVzIGZvciBkYXRhLCBhdHRyaWJ1dGVzXG4gICAgYW5kIGVsZW1lbnQgb2NjdXJyaW5nIGluIFNWRyBkb2N1bWVudHMuXG4gICAgSXQgaXMgYmFzZWQgb24gdGhlIHNwZWNpZmljYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy8uXG5cbiAgICBUaGlzIG1vZHVsZSBpcyBleHBlcmltZW50YWwsIGl0IG1heSBsYWNrIG9mIHNvbWUgYXR0cmlidXRlcyxcbiAgICBhbmQgdGhlIGludGVyZmFjZSBpcyB2ZXJ5IGxvdyBsZXZlbCBhbmQgZG8gbm90IHRha2UgZGVlcGx5IGludG8gYWNjb3VudFxuICAgIHRoZSBuZWVkcyBvZiBTVkcgZWxlbWVudHMuICopXG5cbm9wZW4gU3ZnX3R5cGVzXG5cbm9wZW4gVW5pdFxuXG5sZXQgc3RyaW5nX29mX2lyaSB4ID0gUHJpbnRmLnNwcmludGYgXCJ1cmwoJXMpXCIgeFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdFxuXG4gICgqIGxldCByZWwgeCAgICAgPSAoeCwgTm9uZSkgKilcbiAgKCogbGV0IGRlZyB4ICAgICA9ICh4LCBTb21lIGBEZWcpICopXG4gICgqIGxldCBncmFkIHggICAgPSAoeCwgU29tZSBgR3JhZCkgKilcbiAgKCogbGV0IHJhZCB4ICAgICA9ICh4LCBTb21lIGBSYWQpICopXG4gICgqIGxldCBtcyB4ICAgICAgPSAoeCwgU29tZSBgTXMpICopXG4gICgqIGxldCBzIHggICAgICAgPSAoeCwgU29tZSBgUykgKilcbiAgKCogbGV0IGVtIHggICAgICA9ICh4LCBTb21lIGBFbSkgKilcbiAgKCogbGV0IGV4IHggICAgICA9ICh4LCBTb21lIGBFeCkgKilcbiAgKCogbGV0IHB4IHggICAgICA9ICh4LCBTb21lIGBQeCkgKilcbiAgKCogbGV0IGluXyB4ICAgICA9ICh4LCBTb21lIGBJbikgKilcbiAgKCogbGV0IGNtIHggICAgICA9ICh4LCBTb21lIGBDbSkgKilcbiAgKCogbGV0IG1tIHggICAgICA9ICh4LCBTb21lIGBNbSkgKilcbiAgKCogbGV0IHB0IHggICAgICA9ICh4LCBTb21lIGBQdCkgKilcbiAgKCogbGV0IHBjIHggICAgICA9ICh4LCBTb21lIGBQYykgKilcbiAgKCogbGV0IHBlcmNlbnQgeCA9ICh4LCBTb21lIGBQZXJjZW50KSAqKVxuICAoKiBsZXQgaHogeCAgICAgID0gKHgsIFNvbWUgYEh6KSAqKVxuICAoKiBsZXQga2h6IHggICAgID0gKHgsIFNvbWUgYEtIeikgKilcblxuICBsZXQgdG9fc3RyaW5nIGYgKG4sIHVuaXQpID0gUHJpbnRmLnNwcmludGYgXCIlZyVzXCIgbiBiZWdpblxuICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgIHwgU29tZSB1bml0IC0+IGYgdW5pdFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gIGVuZFxuXG4gIGxldCBhbmdsZV9uYW1lcyA9IGZ1bmN0aW9uIGBEZWcgLT4gXCJkZWdcIiB8IGBHcmFkIC0+IFwiZ3JhZFwiIHwgYFJhZCAtPiBcInJhZFwiXG4gIGxldCBzdHJpbmdfb2ZfYW5nbGUgYSA9IHRvX3N0cmluZyBhbmdsZV9uYW1lcyBhXG5cbiAgKCogbGV0IHRpbWVfbmFtZXMgPSBmdW5jdGlvbiBgTXMgLT4gXCJtc1wiIHwgYFMgLT4gXCJzXCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl90aW1lIGEgPSB0b19zdHJpbmcgdGltZV9uYW1lcyBhICopXG5cbiAgbGV0IGxlbmd0aF9uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBgRW0gLT4gXCJlbVwiIHwgYEV4IC0+IFwiZXhcIiB8IGBQeCAtPiBcInB4XCIgfCBgSW4gLT4gXCJpblwiIHwgYENtIC0+IFwiY21cIlxuICAgIHwgYE1tIC0+IFwibW1cIiB8IGBQdCAtPiBcInB0XCIgfCBgUGMgLT4gXCJwY1wiIHwgYFBlcmNlbnQgLT4gXCIlXCJcbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggKGE6IGxlbmd0aCkgPSB0b19zdHJpbmcgbGVuZ3RoX25hbWVzIGFcblxuICAoKiBsZXQgZnJlcV9uYW1lcyA9IGZ1bmN0aW9uIGBIeiAtPiBcIkh6XCIgfCBgS0h6IC0+IFwia0h6XCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl9mcmVxIGEgPSB0b19zdHJpbmcgZnJlcV9uYW1lcyBhICopXG5cbmVuZFxuXG5vcGVuIFVuaXRcblxubGV0IG9wdF9jb25jYXQgPyhzZXA9XCIgXCIpIHMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHMgXiBzZXAgXiAoZiB4KVxuICB8IE5vbmUgLT4gc1xuXG5sZXQgbGlzdCA/KHNlcD1cIiBcIikgZiBsID0gU3RyaW5nLmNvbmNhdCBzZXAgKExpc3QubWFwIGYgbClcblxubGV0IHN0cmluZ19vZl9jb2xvciBzID0gc1xuKCogRm9yIG5vdyBqdXN0IHN0cmluZywgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGUgZnV0dXJlLiAqKVxuXG5sZXQgc3RyaW5nX29mX2ljY2NvbG9yIHMgPSBzXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgPSBmdW5jdGlvblxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYEN1cnJlbnRDb2xvciAtPiBcImN1cnJlbnRDb2xvclwiXG4gIHwgYENvbG9yIChjLCBpY2MpIC0+IG9wdF9jb25jYXQgKHN0cmluZ19vZl9jb2xvciBjKSBzdHJpbmdfb2ZfaWNjY29sb3IgaWNjXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnQgPSBmdW5jdGlvblxuICB8IGBJY2MgKGlyaSwgTm9uZSkgLT4gc3RyaW5nX29mX2lyaSBpcmlcbiAgfCBgSWNjIChpcmksIFNvbWUgYikgLT5cbiAgICAoc3RyaW5nX29mX2lyaSBpcmkpIF5cIiBcIl4gKHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBiKVxuICB8ICNwYWludF93aGl0b3V0X2ljYyBhcyBjIC0+IHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBjXG5cbmxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gZnVuY3Rpb25cbiAgfCBgTm9uemVybyAtPiBcIm5vbnplcm9cIlxuICB8IGBFdmVub2RkIC0+IFwiZXZlbm9kZFwiXG5cbm1vZHVsZSBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnNcblxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuICAgIChDIDogU3ZnX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKSA9XG5cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwiaW1hZ2Uvc3ZnK3htbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXVxuICAgIGxldCBlbXB0eXRhZ3MgPSBbXVxuICAgIGxldCB2ZXJzaW9uID0gXCJTVkcgMS4xXCJcbiAgICBsZXQgc3RhbmRhcmQgPSBcImh0dHA6Ly93d3cudzMub3JnL1RSL3N2ZzExL1wiXG4gICAgbGV0IG5hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGVcInN2Z1wiXG4gICAgICAgIFtcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXCI7XG4gICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZFwiXVxuICBlbmRcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cblxuICAoKiBNYW5kYXRvcnkgWE1MIHN0dWZmLiAqKVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIHR5cGUgKydhIGVsdCA9IFhtbC5lbHRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgbGV0IHRvX2F0dHJpYiB4ID0geFxuXG4gIGxldCBudWxsYXJ5IHRhZyA/YSAoKSA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLm5pbCAoKSlcblxuICBsZXQgdW5hcnkgdGFnID9hIGVsdCA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLnNpbmdsZXRvbiBlbHQpXG5cbiAgbGV0IHN0YXIgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gIHR5cGUgYWx0Z2x5cGhkZWZfY29udGVudCA9XG4gICAgWyBgUmVmIG9mIChnbHlwaHJlZiBlbHQpIGxpc3RcbiAgICB8IGBJdGVtIG9mIChhbHRnbHlwaGl0ZW0gZWx0KSBsaXN0XG4gICAgXVxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG5cbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgKCogd3JhcCBDIG1vZHVsZSBmdW5jdGlvbnMgKilcblxuICBsZXQgc3RyaW5nX29mX2Nvb3JkID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggPSBDLnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aHMgPSBDLnN0cmluZ19vZl9sZW5ndGhzXG5cbiAgKCogQ3VzdG9tIFhNTCBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID1cbiAgICBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBudW1iZXJfYXR0cmliID0gZmxvYXRfYXR0cmliXG5cbiAgKCogZm9yIG5vdyBzdHJpbmdfYXR0cmliLCB3ZSBtYXkgd2FudCBzb21ldGhpbmcgYmV0dGVyIGluIHRoZVxuICAgICBmdXR1cmUuICopXG4gIGxldCBjb2xvcl9hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIFNWRyBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IG1ldGFkYXRhID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJtZXRhZGF0YVwiIGNoaWxkcmVuXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgP2EgY2hpbGRyZW4gPSBYbWwubm9kZSA/YSBcImZvcmVpZ25PYmplY3RcIiBjaGlsZHJlblxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgKCogZ2VuZXJhdGVkICopXG4gIGxldCBhX3ZlcnNpb24gPSBzdHJpbmdfYXR0cmliIFwidmVyc2lvblwiXG5cbiAgbGV0IGFfYmFzZVByb2ZpbGUgPSBzdHJpbmdfYXR0cmliIFwiYmFzZVByb2ZpbGVcIlxuXG4gIGxldCBhX3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4XCJcblxuICBsZXQgYV95ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieVwiXG5cbiAgbGV0IGFfd2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwid2lkdGhcIlxuXG4gIGxldCBhX2hlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJoZWlnaHRcIlxuXG4gIGxldCBhX3ByZXNlcnZlQXNwZWN0UmF0aW8gPVxuICAgIHN0cmluZ19hdHRyaWIgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCJcblxuICBsZXQgYV9jb250ZW50U2NyaXB0VHlwZSA9XG4gICAgc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTY3JpcHRUeXBlXCJcblxuICBsZXQgYV9jb250ZW50U3R5bGVUeXBlID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTdHlsZVR5cGVcIlxuXG4gIGxldCBhX3pvb21BbmRQYW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ6b29tQW5kU3BhblwiIHhcblxuICBsZXQgYV9ocmVmID0gc3RyaW5nX2F0dHJpYiBcImhyZWZcIlxuXG4gIGxldCBhX3hsaW5rX2hyZWYgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6aHJlZlwiXG5cbiAgbGV0IGFfcmVxdWlyZWRGZWF0dXJlcyA9XG4gICAgWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJyZXF1aXJlZEZlYXR1cmVzXCJcblxuICBsZXQgYV9yZXF1aXJlZEV4dGVuc2lvbnMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRFeHRlbnNpb25cIlxuXG4gIGxldCBhX3N5c3RlbUxhbmd1YWdlID1cbiAgICBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInN5c3RlbUxhbmd1YWdlXCJcblxuICBsZXQgYV9leHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcImV4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkXCJcblxuICBsZXQgYV9pZCA9IHN0cmluZ19hdHRyaWIgXCJpZFwiXG5cbiAgbGV0IGFfdXNlcl9kYXRhIG5hbWUgPSBzdHJpbmdfYXR0cmliIChcImRhdGEtXCIgXiBuYW1lKVxuXG4gIGxldCBhX3htbF9iYXNlID0gc3RyaW5nX2F0dHJpYiBcInhtbDpiYXNlXCJcblxuICBsZXQgYV94bWxfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfbWVkaWEgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcIm1lZGlhXCJcblxuICBsZXQgYV94bGlua190aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0aXRsZVwiXG5cbiAgbGV0IGFfY2xhc3MgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcImNsYXNzXCJcblxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfdHJhbnNmb3JtID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfdmlld0JveCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ZvdXJmbG9hdHMgXCJ2aWV3Qm94XCJcblxuICBsZXQgYV9kID0gc3RyaW5nX2F0dHJpYiBcImRcIlxuXG4gIGxldCBhX3BhdGhMZW5ndGggPSBudW1iZXJfYXR0cmliIFwicGF0aExlbmd0aFwiXG5cbiAgbGV0IGFfcnggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwicnhcIlxuXG4gIGxldCBhX3J5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ5XCJcblxuICBsZXQgYV9jeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJjeFwiXG5cbiAgbGV0IGFfY3kgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3lcIlxuXG4gIGxldCBhX3IgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiclwiXG5cbiAgbGV0IGFfeDEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MVwiXG5cbiAgbGV0IGFfeTEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MVwiXG5cbiAgbGV0IGFfeDIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MlwiXG5cbiAgbGV0IGFfeTIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MlwiXG5cbiAgbGV0IGFfcG9pbnRzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY29vcmRzIFwicG9pbnRzXCJcblxuICBsZXQgYV94X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInhcIlxuXG4gIGxldCBhX3lfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwieVwiXG5cbiAgbGV0IGFfZHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeFwiXG5cbiAgbGV0IGFfZHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeVwiXG5cbiAgbGV0IGFfZHhfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwiZHhcIlxuXG4gIGxldCBhX2R5X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR5XCJcblxuICBsZXQgYV9sZW5ndGhBZGp1c3QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJsZW5ndGhBZGp1c3RcIiB4XG5cbiAgbGV0IGFfdGV4dExlbmd0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJ0ZXh0TGVuZ3RoXCJcblxuICBsZXQgYV90ZXh0X2FuY2hvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtYW5jaG9yXCIgeFxuXG4gIGxldCBhX3RleHRfZGVjb3JhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtZGVjb3JhdGlvblwiIHhcblxuICBsZXQgYV90ZXh0X3JlbmRlcmluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtcmVuZGVyaW5nXCIgeFxuXG4gIGxldCBhX3JvdGF0ZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJyb3RhdGVcIlxuXG4gIGxldCBhX3N0YXJ0T2Zmc2V0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInN0YXJ0T2Zmc2V0XCJcblxuICBsZXQgYV9tZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtZXRob2RcIiB4XG5cbiAgbGV0IGFfc3BhY2luZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwYWNpbmdcIiB4XG5cbiAgbGV0IGFfZ2x5cGhSZWYgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBhX2Zvcm1hdCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtYXRcIlxuXG4gIGxldCBhX21hcmtlclVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFya2VyVW5pdHNcIiB4XG5cbiAgbGV0IGFfcmVmWCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInJlZlhcIlxuXG4gIGxldCBhX3JlZlkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZZXCJcblxuICBsZXQgYV9tYXJrZXJXaWR0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJXaWR0aFwiXG5cbiAgbGV0IGFfbWFya2VySGVpZ2h0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIm1hcmtlckhlaWdodFwiXG5cbiAgbGV0IGFfb3JpZW50IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX29yaWVudCBcIm9yaWVudFwiIHhcblxuICBsZXQgYV9sb2NhbCA9IHN0cmluZ19hdHRyaWIgXCJsb2NhbFwiXG5cbiAgbGV0IGFfcmVuZGVyaW5nX2ludGVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlbmRlcmluZy1pbnRlbnRcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImdyYWRpZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRUcmFuc2Zvcm0gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJncmFkaWVudFRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfc3ByZWFkTWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3ByZWFkTWV0aG9kXCIgeFxuXG4gIGxldCBhX2Z4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnhcIlxuXG4gIGxldCBhX2Z5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnlcIlxuXG4gIGxldCBhX29mZnNldCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vZmZzZXQgXCJvZmZzZXRcIiB4XG5cbiAgbGV0IGFfcGF0dGVyblVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVyblVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Db250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwYXR0ZXJuQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5UcmFuc2Zvcm0geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInBhdHRlcm5UcmFuc2Zvcm1cIiB4XG5cbiAgbGV0IGFfY2xpcFBhdGhVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNsaXBQYXRoVW5pdHNcIiB4XG5cbiAgbGV0IGFfbWFza1VuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza1VuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tDb250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXNrQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3ByaW1pdGl2ZVVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJpbWl0aXZlVW5pdHNcIiB4XG5cbiAgbGV0IGFfZmlsdGVyUmVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiZmlsdGVyUmVzVW5pdHNcIlxuXG4gIGxldCBhX3Jlc3VsdCA9IHN0cmluZ19hdHRyaWIgXCJyZXN1bHRcIlxuXG4gIGxldCBhX2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW5cIiB4XG5cbiAgbGV0IGFfaW4yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW4yXCIgeFxuXG4gIGxldCBhX2F6aW11dGggPSBudW1iZXJfYXR0cmliIFwiYXppbXV0aFwiXG5cbiAgbGV0IGFfZWxldmF0aW9uID0gbnVtYmVyX2F0dHJpYiBcImVsZXZhdGlvblwiXG5cbiAgbGV0IGFfcG9pbnRzQXRYID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WFwiXG5cbiAgbGV0IGFfcG9pbnRzQXRZID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WVwiXG5cbiAgbGV0IGFfcG9pbnRzQXRaID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WlwiXG5cbiAgbGV0IGFfc3BlY3VsYXJFeHBvbmVudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckV4cG9uZW50XCJcblxuICBsZXQgYV9zcGVjdWxhckNvbnN0YW50ID0gbnVtYmVyX2F0dHJpYiBcInNwZWN1bGFyQ29uc3RhbnRcIlxuXG4gIGxldCBhX2xpbWl0aW5nQ29uZUFuZ2xlID0gbnVtYmVyX2F0dHJpYiBcImxpbWl0aW5nQ29uZUFuZ2xlXCJcblxuICBsZXQgYV9tb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibW9kZVwiIHhcblxuICBsZXQgYV9mZUNvbG9yTWF0cml4X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3ZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ2YWx1ZXNcIlxuXG4gIGxldCBhX3RyYW5zZmVyX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3RhYmxlVmFsdWVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInRhYmxlVmFsdWVzXCJcblxuICBsZXQgYV9pbnRlcmNlcHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpbnRlcmNlcHRcIlxuXG4gIGxldCBhX2FtcGxpdHVkZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFtcGxpdHVkZVwiXG5cbiAgbGV0IGFfZXhwb25lbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJleHBvbmVudFwiXG5cbiAgbGV0IGFfdHJhbnNmZXJfb2Zmc2V0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib2Zmc2V0XCJcblxuICBsZXQgYV9mZUNvbXBvc2l0ZV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX2sxID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazFcIlxuXG4gIGxldCBhX2syID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazJcIlxuXG4gIGxldCBhX2szID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazNcIlxuXG4gIGxldCBhX2s0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazRcIlxuXG4gIGxldCBhX29yZGVyID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcIm9yZGVyXCJcblxuICBsZXQgYV9rZXJuZWxNYXRyaXggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwia2VybmVsTWF0cml4XCJcblxuICBsZXQgYV9kaXZpc29yID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGl2aXNvclwiXG5cbiAgbGV0IGFfYmlhcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImJpYXNcIlxuXG4gIGxldCBhX2tlcm5lbFVuaXRMZW5ndGggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJrZXJuZWxVbml0TGVuZ3RoXCJcblxuICBsZXQgYV90YXJnZXRYID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwidGFyZ2V0WFwiXG5cbiAgbGV0IGFfdGFyZ2V0WSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFlcIlxuXG4gIGxldCBhX2VkZ2VNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGFyZ2V0WVwiIHhcblxuICBsZXQgYV9wcmVzZXJ2ZUFscGhhID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcInByZXNlcnZlQWxwaGFcIlxuXG4gIGxldCBhX3N1cmZhY2VTY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN1cmZhY2VTY2FsZVwiXG5cbiAgbGV0IGFfZGlmZnVzZUNvbnN0YW50ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkaWZmdXNlQ29uc3RhbnRcIlxuXG4gIGxldCBhX3NjYWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2NhbGVcIlxuXG4gIGxldCBhX3hDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3lDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ5Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3N0ZERldmlhdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInN0ZERldmlhdGlvblwiXG5cbiAgbGV0IGFfZmVNb3JwaG9sb2d5X29wZXJhdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3BlcmF0b3JcIiB4XG5cbiAgbGV0IGFfcmFkaXVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInJhZGl1c1wiXG5cbiAgbGV0IGFfYmFzZUZyZW5xdWVuY3kgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJiYXNlRnJlcXVlbmN5XCJcblxuICBsZXQgYV9udW1PY3RhdmVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwibnVtT2N0YXZlc1wiXG5cbiAgbGV0IGFfc2VlZCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNlZWRcIlxuXG4gIGxldCBhX3N0aXRjaFRpbGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3RpdGNoVGlsZXNcIiB4XG5cbiAgbGV0IGFfZmVUdXJidWxlbmNlX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3hsaW5rX3Nob3cgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazpzaG93XCIgeFxuXG4gIGxldCBhX3hsaW5rX2FjdHVhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazphY3R1YXRlXCIgeFxuXG4gIGxldCBhX3RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0YXJnZXRcIlxuXG4gIGxldCBhX3ZpZXdUYXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidmlld1RhcmdldFwiXG5cbiAgbGV0IGFfYXR0cmlidXRlTmFtZSA9IHN0cmluZ19hdHRyaWIgXCJhdHRyaWJ1dGVOYW1lXCJcblxuICBsZXQgYV9hdHRyaWJ1dGVUeXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXR0cmlidXRlVHlwZVwiIHhcblxuICBsZXQgYV9iZWdpbiA9IHN0cmluZ19hdHRyaWIgXCJiZWdpblwiXG5cbiAgbGV0IGFfZHVyID0gc3RyaW5nX2F0dHJpYiBcImR1clwiXG5cbiAgbGV0IGFfbWluID0gc3RyaW5nX2F0dHJpYiBcIm1pblwiXG5cbiAgbGV0IGFfbWF4ID0gc3RyaW5nX2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfcmVzdGFydCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlc3RhcnRcIiB4XG5cbiAgbGV0IGFfcmVwZWF0Q291bnQgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0Q291bnRcIlxuXG4gIGxldCBhX3JlcGVhdER1ciA9IHN0cmluZ19hdHRyaWIgXCJyZXBlYXREdXJcIlxuXG4gIGxldCBhX2ZpbGwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9wYWludCBcImZpbGxcIlxuXG4gIGxldCBhX2FuaW1hdGlvbl9maWxsIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZmlsbFwiIHhcblxuICBsZXQgYV9maWxsX3J1bGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9maWxsX3J1bGUgXCJmaWxsLXJ1bGVcIlxuXG4gIGxldCBhX2NhbGNNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY2FsY01vZGVcIiB4XG5cbiAgbGV0IGFfYW5pbWF0aW9uX3ZhbHVlcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwidmFsdWVzXCJcblxuICBsZXQgYV9rZXlUaW1lcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwia2V5VGltZXNcIlxuXG4gIGxldCBhX2tleVNwbGluZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVNwbGluZXNcIlxuXG4gIGxldCBhX2Zyb20gPSBzdHJpbmdfYXR0cmliIFwiZnJvbVwiXG5cbiAgbGV0IGFfdG8gPSBzdHJpbmdfYXR0cmliIFwidG9cIlxuXG4gIGxldCBhX2J5ID0gc3RyaW5nX2F0dHJpYiBcImJ5XCJcblxuICBsZXQgYV9hZGRpdGl2ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFkZGl0aXZlXCIgeFxuXG4gIGxldCBhX2FjY3VtdWxhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhY2N1bXVsYXRlXCIgeFxuXG4gIGxldCBhX2tleVBvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIFwia2V5UG9pbnRzXCJcblxuICBsZXQgYV9wYXRoID0gc3RyaW5nX2F0dHJpYiBcInBhdGhcIlxuXG4gIGxldCBhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi14XCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi15XCJcblxuICBsZXQgYV9ob3Jpel9hZHZfeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LWFkdi14XCJcblxuICBsZXQgYV92ZXJ0X29yaWdpbl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1vcmlnaW4teFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXlcIlxuXG4gIGxldCBhX3ZlcnRfYWR2X3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LWFkdi15XCJcblxuICBsZXQgYV91bmljb2RlID0gc3RyaW5nX2F0dHJpYiBcInVuaWNvZGVcIlxuXG4gIGxldCBhX2dseXBoX25hbWUgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhuYW1lXCJcblxuICBsZXQgYV9vcmllbnRhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9yaWVudGF0aW9uXCIgeFxuXG4gIGxldCBhX2FyYWJpY19mb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXJhYmljLWZvcm1cIiB4XG5cbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICBsZXQgYV91MSA9IHN0cmluZ19hdHRyaWIgXCJ1MVwiXG5cbiAgbGV0IGFfdTIgPSBzdHJpbmdfYXR0cmliIFwidTJcIlxuXG4gIGxldCBhX2cxID0gc3RyaW5nX2F0dHJpYiBcImcxXCJcblxuICBsZXQgYV9nMiA9IHN0cmluZ19hdHRyaWIgXCJnMlwiXG5cbiAgbGV0IGFfayA9IHN0cmluZ19hdHRyaWIgXCJrXCJcblxuICBsZXQgYV9mb250X2ZhbWlseSA9IHN0cmluZ19hdHRyaWIgXCJmb250LWZhbWlseVwiXG5cbiAgbGV0IGFfZm9udF9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0eWxlXCJcblxuICBsZXQgYV9mb250X3ZhcmlhbnQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC12YXJpYW50XCJcblxuICBsZXQgYV9mb250X3dlaWdodCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXdlaWdodFwiXG5cbiAgbGV0IGFfZm9udF9zdHJldGNoID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc3RyZXRjaFwiXG5cbiAgbGV0IGFfZm9udF9zaXplID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc2l6ZVwiXG5cbiAgbGV0IGFfdW5pY29kZV9yYW5nZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlLXJhbmdlXCJcblxuICBsZXQgYV91bml0c19wZXJfZW0gPSBzdHJpbmdfYXR0cmliIFwidW5pdHMtcGVyLWVtXCJcblxuICBsZXQgYV9zdGVtdiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW12XCJcblxuICBsZXQgYV9zdGVtaCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW1oXCJcblxuICBsZXQgYV9zbG9wZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNsb3BlXCJcblxuICBsZXQgYV9jYXBfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiY2FwLWhlaWdodFwiXG5cbiAgbGV0IGFfeF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ4LWhlaWdodFwiXG5cbiAgbGV0IGFfYWNjZW50X2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFjY2VudC1oZWlnaHRcIlxuXG4gIGxldCBhX2FzY2VudCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFzY2VudFwiXG5cbiAgbGV0IGFfd2lkdGhzID0gc3RyaW5nX2F0dHJpYiBcIndpZHRoc1wiXG5cbiAgbGV0IGFfYmJveCA9IHN0cmluZ19hdHRyaWIgXCJiYm94XCJcblxuICBsZXQgYV9pZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImlkZW9ncmFwaGljXCJcblxuICBsZXQgYV9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfbWF0aGVtYXRpY2FsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwibWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaGFuZ2luZ1wiXG5cbiAgbGV0IGFfdmlkZW9ncmFwaGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1pZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfdl9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1hbHBoYWJldGljXCJcblxuICBsZXQgYV92X21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtbWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV92X2hhbmdpbmcgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWhhbmdpbmdcIlxuXG4gIGxldCBhX3VuZGVybGluZV9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV91bmRlcmxpbmVfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3Bvc2l0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIlxuXG4gIGxldCBhX292ZXJsaW5lX3Bvc2l0aW9uID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtcG9zaXRpb25cIlxuXG4gIGxldCBhX292ZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpbmcgPSBzdHJpbmdfYXR0cmliIFwic3RyaW5nXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsaWdubWVudF9iYXNlbGluZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUgXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiB4XG5cbiAgbGV0IGFfZG9taW5hbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgXCJkb21pbmFudC1iYXNlbGluZVwiIHhcblxuICAoKiogSmF2YXNjcmlwdCBldmVudHMgKilcblxuICBsZXQgYV9vbmFib3J0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hYm9ydFwiXG4gIGxldCBhX29uYWN0aXZhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFjdGl2YXRlXCJcbiAgbGV0IGFfb25iZWdpbiA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVnaW5cIlxuICBsZXQgYV9vbmVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzaW5cIlxuICBsZXQgYV9vbmZvY3Vzb3V0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c291dFwiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ucmVwZWF0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXBlYXRcIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnpvb20gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnpvb21cIlxuXG4gICgqKiBKYXZhc2NyaXB0IG1vdXNlIGV2ZW50cyAqKVxuXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGFfc3RvcF9jb2xvciA9IGNvbG9yX2F0dHJpYiBcInN0b3AtY29sb3JcIlxuXG4gIGxldCBhX3N0b3Bfb3BhY2l0eSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0b3Atb3BhY2l0eVwiXG5cbiAgbGV0IGFfc3Ryb2tlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJzdHJva2VcIlxuXG4gIGxldCBhX3N0cm9rZV93aWR0aCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS13aWR0aFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVjYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWNhcFwiIHhcblxuICBsZXQgYV9zdHJva2VfbGluZWpvaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWpvaW5cIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX21pdGVybGltaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1taXRlcmxpbWl0XCJcblxuICBsZXQgYV9zdHJva2VfZGFzaGFycmF5IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSBcInN0cm9rZS1kYXNoYXJyYXlcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hvZmZzZXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS1kYXNob2Zmc2V0XCJcblxuICBsZXQgYV9zdHJva2Vfb3BhY2l0eSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3Ryb2tlLW9wYWNpdHlcIlxuXG4gICgqIHhsaW5rIG5hbWVzcGFjZSBnaXZlbiBhIG5pY2tuYW1lIHNpbmNlIHNvbWUgYXR0cmlidXRlcyBtYW5kYXRlZCBieVxuICAgICB0aGUgc3ZnIHN0YW5kYXJkIHN1Y2ggYXMgeGxpbms6aHJlZiBsaXZlIGluIHRoYXQgbmFtZXNwYWNlLCBhbmQgd2VcbiAgICAgcmVmZXIgdG8gdGhlbSBhcyBcInhsaW5rOndoYXRldmVyXCIgKHNlZSBhX3hsaW5rX2hyZWYgb3IgYV94bGlua3Nob3cpXG4gICopXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBsZXQgYXR0cmlicyA9XG4gICAgICBzdHJpbmdfYXR0cmliIFwieG1sbnNcIiAoVy5yZXR1cm4gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKVxuICAgICAgOjogc3RyaW5nX2F0dHJpYiBcInhtbG5zOnhsaW5rXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiKVxuICAgICAgOjogdG9feG1sYXR0cmlicyBhXG4gICAgaW5cbiAgICBzdGFyIH5hOihhdHRyaWJzKSBcInN2Z1wiIGNoaWxkcmVuXG5cbiAgKCogYWxzbyBnZW5lcmF0ZWQgKilcbiAgbGV0IGcgPSBzdGFyIFwiZ1wiXG5cbiAgbGV0IGRlZnMgPSBzdGFyIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgPSB1bmFyeSBcImRlc2NcIlxuXG4gIGxldCB0aXRsZSA9IHVuYXJ5IFwidGl0bGVcIlxuXG4gIGxldCBzeW1ib2wgPSBzdGFyIFwic3ltYm9sXCJcblxuICBsZXQgdXNlID0gc3RhciBcInVzZVwiXG5cbiAgbGV0IGltYWdlID0gc3RhciBcImltYWdlXCJcblxuICBsZXQgc3dpdGNoID0gc3RhciBcInN3aXRjaFwiXG5cbiAgbGV0IHN0eWxlID0gdW5hcnkgXCJzdHlsZVwiXG5cbiAgbGV0IHBhdGggPSBzdGFyIFwicGF0aFwiXG5cbiAgbGV0IHJlY3QgPSBzdGFyIFwicmVjdFwiXG5cbiAgbGV0IGNpcmNsZSA9IHN0YXIgXCJjaXJjbGVcIlxuXG4gIGxldCBlbGxpcHNlID0gc3RhciBcImVsbGlwc2VcIlxuXG4gIGxldCBsaW5lID0gc3RhciBcImxpbmVcIlxuXG4gIGxldCBwb2x5bGluZSA9IHN0YXIgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHBvbHlnb24gPSBzdGFyIFwicG9seWdvblwiXG5cbiAgbGV0IHRleHQgPSBzdGFyIFwidGV4dFwiXG5cbiAgbGV0IHRzcGFuID0gc3RhciBcInRzcGFuXCJcblxuICBsZXQgdHJlZiA9IHN0YXIgXCJ0cmVmXCJcblxuICBsZXQgdGV4dFBhdGggPSBzdGFyIFwidGV4dFBhdGhcIlxuXG4gIGxldCBhbHRHbHlwaCA9IHVuYXJ5IFwiYWx0R2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiA9IHVuYXJ5IFwiYWx0R2x5cGhEZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gPSBzdGFyIFwiYWx0R2x5cGhJdGVtXCJcblxuICBsZXQgZ2x5cGhSZWYgPSBudWxsYXJ5IFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBtYXJrZXIgPSBzdGFyIFwibWFya2VyXCJcblxuICBsZXQgY29sb3JfcHJvZmlsZSA9IHN0YXIgXCJjb2xvci1wcm9maWxlXCJcblxuICBsZXQgbGluZWFyR3JhZGllbnQgPSBzdGFyIFwibGluZWFyR3JhZGllbnRcIlxuXG4gIGxldCByYWRpYWxHcmFkaWVudCA9IHN0YXIgXCJyYWRpYWxHcmFkaWVudFwiXG5cbiAgbGV0IHN0b3AgPSBzdGFyIFwic3RvcFwiXG5cbiAgbGV0IHBhdHRlcm4gPSBzdGFyIFwicGF0dGVyblwiXG5cbiAgbGV0IGNsaXBQYXRoID0gc3RhciBcImNsaXBQYXRoXCJcblxuICBsZXQgZmlsdGVyID0gc3RhciBcImZpbHRlclwiXG5cbiAgbGV0IGZlRGlzdGFudExpZ2h0ID0gc3RhciBcImZlRGlzdGFudExpZ2h0XCJcblxuICBsZXQgZmVQb2ludExpZ2h0ID0gc3RhciBcImZlUG9pbnRMaWdodFwiXG5cbiAgbGV0IGZlU3BvdExpZ2h0ID0gc3RhciBcImZlU3BvdExpZ2h0XCJcblxuICBsZXQgZmVCbGVuZCA9IHN0YXIgXCJmZUJsZW5kXCJcblxuICBsZXQgZmVDb2xvck1hdHJpeCA9IHN0YXIgXCJmZUNvbG9yTWF0cml4XCJcblxuICBsZXQgZmVDb21wb25lbnRUcmFuc2ZlciA9IHN0YXIgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCJcblxuICBsZXQgZmVGdW5jQSA9IHN0YXIgXCJmZUZ1bmNBXCJcblxuICBsZXQgZmVGdW5jRyA9IHN0YXIgXCJmZUZ1bmNHXCJcblxuICBsZXQgZmVGdW5jQiA9IHN0YXIgXCJmZUZ1bmNCXCJcblxuICBsZXQgZmVGdW5jUiA9IHN0YXIgXCJmZUZ1bmNSXCJcblxuICBsZXQgZmVDb21wb3NpdGUgPSBzdGFyIFwiZmVDb21wb3NpdGVcIlxuXG4gIGxldCBmZUNvbnZvbHZlTWF0cml4ID0gc3RhciBcImZlQ29udm9sdmVNYXRyaXhcIlxuXG4gIGxldCBmZURpZmZ1c2VMaWdodGluZyA9IHN0YXIgXCJmZURpZmZ1c2VMaWdodGluZ1wiXG5cbiAgbGV0IGZlRGlzcGxhY2VtZW50TWFwID0gc3RhciBcImZlRGlzcGxhY2VtZW50TWFwXCJcblxuICBsZXQgZmVGbG9vZCA9IHN0YXIgXCJmZUZsb29kXCJcblxuICBsZXQgZmVHYXVzc2lhbkJsdXIgPSBzdGFyIFwiZmVHYXVzc2lhbkJsdXJcIlxuXG4gIGxldCBmZUltYWdlID0gc3RhciBcImZlSW1hZ2VcIlxuXG4gIGxldCBmZU1lcmdlID0gc3RhciBcImZlTWVyZ2VcIlxuXG4gIGxldCBmZU1vcnBob2xvZ3kgPSBzdGFyIFwiZmVNb3JwaG9sb2d5XCJcblxuICBsZXQgZmVPZmZzZXQgPSBzdGFyIFwiZmVPZmZzZXRcIlxuXG4gIGxldCBmZVNwZWN1bGFyTGlnaHRpbmcgPSBzdGFyIFwiZmVTcGVjdWxhckxpZ2h0aW5nXCJcblxuICBsZXQgZmVUaWxlID0gc3RhciBcImZlVGlsZVwiXG5cbiAgbGV0IGZlVHVyYnVsZW5jZSA9IHN0YXIgXCJmZVR1cmJ1bGVuY2VcIlxuXG4gIGxldCBjdXJzb3IgPSBzdGFyIFwiY3Vyc29yXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgdmlldyA9IHN0YXIgXCJ2aWV3XCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBhbmltYXRlID0gc3RhciBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRpb24gPSBhbmltYXRlXG5cbiAgbGV0IHNldCA9IHN0YXIgXCJzZXRcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uID0gc3RhciBcImFuaW1hdGVNb3Rpb25cIlxuXG4gIGxldCBtcGF0aCA9IHN0YXIgXCJtcGF0aFwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciA9IHN0YXIgXCJhbmltYXRlQ29sb3JcIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtID0gc3RhciBcImFuaW1hdGVUcmFuc2Zvcm1cIlxuXG4gIGxldCBmb250ID0gc3RhciBcImZvbnRcIlxuXG4gIGxldCBnbHlwaCA9IHN0YXIgXCJnbHlwaFwiXG5cbiAgbGV0IG1pc3NpbmdfZ2x5cGggPSBzdGFyIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IGhrZXJuID0gbnVsbGFyeSBcImhrZXJuXCJcblxuICBsZXQgdmtlcm4gPSBudWxsYXJ5IFwidmtlcm5cIlxuXG4gIGxldCBmb250X2ZhY2UgPSBudWxsYXJ5IFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udF9mYWNlX3NyYyA9IHN0YXIgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udF9mYWNlX3VyaSA9IHN0YXIgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX2Zvcm1hdCA9IG51bGxhcnkgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX25hbWUgPSBudWxsYXJ5IFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIHR5cGUgZG9jID0gWyBgU3ZnIF0gZWx0XG4gIGxldCBkb2NfdG9lbHQgeCA9IHhcblxuICBtb2R1bGUgSSA9IFhtbF9zdHJlYW0uSW1wb3J0KFhtbClcbiAgbGV0IG9mX3NlcSBzID0gdG90bCBAQCBJLm9mX3NlcSBzXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuXG4gICAgbGV0IGRhdGEgcyA9IFhtbC5lbmNvZGVkcGNkYXRhIHNcblxuICAgIGxldCBsZWFmIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gICAgbGV0IG5vZGUgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gICAgbGV0IGNvZXJjZV9lbHQgeCA9IHhcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBXcmFwcGVkX2Z1bmN0aW9uc1xuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsJ2IpIFcuZnQgPSAnYSAtPiAnYikgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIGxldCBzdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gICAgfCBgQmVmb3JlX2VkZ2UgLT4gXCJiZWZvcmUtZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHQtYmVmb3JlLWVkZ2VcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYEFmdGVyX2VkZ2UgLT4gXCJhZnRlci1lZGdlXCJcbiAgICB8IGBUZXh0X2FmdGVyX2VkZ2UgLT4gXCJ0ZXh0LWFmdGVyLWVkZ2VcIlxuICAgIHwgYElkZW9ncmFwaGljIC0+IFwiaWRlb2dyYXBoaWNcIlxuICAgIHwgYEFscGhhYmV0aWMgLT4gXCJhbHBoYWJldGljXCJcbiAgICB8IGBIYW5naW5nLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBIC0+IFwiYVwiXG4gICAgfCBgQWJzb2x1dGVfY29sb3JpbWV0cmljIC0+IFwiYWJzb2x1dGVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBBbGlnbiAtPiBcIlwiXG4gICAgfCBgQWx3YXlzIC0+IFwiYWx3YXlzXCJcbiAgICB8IGBBdG9wIC0+IFwiYXRvcFwiXG4gICAgfCBgQXJpdGhtZXRpYyAtPiBcImFyaXRobWV0aWNcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBCIC0+IFwiYlwiXG4gICAgfCBgQmV2ZXIgLT4gXCJiZXZlbFwiXG4gICAgfCBgQmxpbmsgLT4gXCJibGlua1wiXG4gICAgfCBgQnV0dCAtPiBcImJ1dHRcIlxuICAgIHwgYENTUyAtPiBcIkNTU1wiXG4gICAgfCBgRGFya2VuIC0+IFwiZGFya2VuXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgRGlsYXRlIC0+IFwiZGlsYXRlXCJcbiAgICB8IGBEaXNhYmxlIC0+IFwiZGlzYWJsZVwiXG4gICAgfCBgRGlzY3JldGUgLT4gXCJkaXNjcmV0ZVwiXG4gICAgfCBgRHVwbGljYXRlIC0+IFwiZHVwbGljYXRlXCJcbiAgICB8IGBFbmQgLT4gXCJlbmRcIlxuICAgIHwgYEVyb2RlIC0+IFwiZXJvZGVcIlxuICAgIHwgYEV4YWN0IC0+IFwiZXhhY3RcIlxuICAgIHwgYEZyYWN0YWxOb2lzZSAtPiBcImZyYWN0YWxOb2lzZVwiXG4gICAgfCBgRnJlZXplIC0+IFwiZnJlZXplXCJcbiAgICB8IGBIdWVSb3RhdGUgLT4gXCJodWVSb3RhdGVcIlxuICAgIHwgYEcgLT4gXCJnXCJcbiAgICB8IGBHYW1tYSAtPiBcImdhbW1hXCJcbiAgICB8IGBHZW9tZXRyaWNQcmVjaXNpb24gLT4gXCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgIHwgYEggLT4gXCJoXCJcbiAgICB8IGBJZGVudGl0eSAtPiBcImlkZW50aXR5XCJcbiAgICB8IGBJbiAtPiBcImluXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYElzb2xhdGVkIC0+IFwiaXNvbGF0ZWRcIlxuICAgIHwgYExpZ2h0ZW4gLT4gXCJsaWdodGVuXCJcbiAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgIHwgYExpbmVhciAtPiBcImxpbmVhclwiXG4gICAgfCBgTHVtaW5hbmNlVG9BbHBoYSAtPiBcImx1bWluYW5jZVRvQWxwaGFcIlxuICAgIHwgYE1hZ25pZnkgLT4gXCJtYWduaWZ5XCJcbiAgICB8IGBNYXRyaXggLT4gXCJtYXRyaXhcIlxuICAgIHwgYE1lZGlhbCAtPiBcIm1lZGlhbFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBNaXRlciAtPiBcIm1pdGVyXCJcbiAgICB8IGBNdWx0aXBseSAtPiBcIm11bHRpcGx5XCJcbiAgICB8IGBOZXZlciAtPiBcIm5ldmVyXCJcbiAgICB8IGBOZXcgLT4gXCJuZXdcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vU3RpdGNoIC0+IFwibm9TdGl0Y2hcIlxuICAgIHwgYE9iamVjdEJvdW5kaW5nQm94IC0+IFwib2JqZWN0Qm91bmRpbmdCb3hcIlxuICAgIHwgYE9uTG9hZCAtPiBcIm9uTG9hZFwiXG4gICAgfCBgT25SZXF1ZXN0IC0+IFwib25SZXF1ZXN0XCJcbiAgICB8IGBPcHRpbWl6ZUxlZ2liaWxpdHkgLT4gXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuICAgIHwgYE9wdGltaXplU3BlZWQgLT4gXCJvcHRpbWl6ZVNwZWVkXCJcbiAgICB8IGBPdGhlciAtPiBcIm90aGVyXCJcbiAgICB8IGBPdXQgLT4gXCJvdXRcIlxuICAgIHwgYE92ZXIgLT4gXCJvdmVyXCJcbiAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICB8IGBQYWNlZCAtPiBcInBhY2VkXCJcbiAgICB8IGBQYWQgLT4gXCJwYWRcIlxuICAgIHwgYFBlcmNlcHR1YWwgLT4gXCJwZXJjZXB0dWFsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBSIC0+IFwiclwiXG4gICAgfCBgUmVmbGVjdCAtPiBcInJlZmxlY3RcIlxuICAgIHwgYFJlbW92ZSAtPiBcInJlbW92ZVwiXG4gICAgfCBgUmVwZWF0IC0+IFwicmVwZWF0XCJcbiAgICB8IGBSZXBsYWNlIC0+IFwicmVwbGFjZVwiXG4gICAgfCBgUmVsYXRpdmVfY29sb3JpbWV0cmljIC0+IFwicmVsYXRpdmVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBSb3RhdGUgLT4gXCJyb3RhdGVcIlxuICAgIHwgYFJvdW5kIC0+IFwicm91bmRcIlxuICAgIHwgYFNhdHVyYXRlIC0+IFwic2F0dXJhdGVcIlxuICAgIHwgYFNhdHVyYXRpb24gLT4gXCJzYXR1cmF0aW9uXCJcbiAgICB8IGBTY2FsZSAtPiBcInNjYWxlXCJcbiAgICB8IGBTY3JlZW4gLT4gXCJzY3JlZW5cIlxuICAgIHwgYFNrZXdYIC0+IFwic2tld1hcIlxuICAgIHwgYFNrZXdZIC0+IFwic2tld1lcIlxuICAgIHwgYFNwYWNpbmcgLT4gXCJzcGFjaW5nXCJcbiAgICB8IGBTcGFjaW5nQW5kR2x5cGhzIC0+IFwic3BhY2luZ0FuZEdseXBoc1wiXG4gICAgfCBgU3BsaW5lIC0+IFwic3BsaW5lXCJcbiAgICB8IGBTcXVhcmUgLT4gXCJzcXVhcmVcIlxuICAgIHwgYFN0YXJ0IC0+IFwic3RhcnRcIlxuICAgIHwgYFN0aXRjaCAtPiBcInN0aXRjaFwiXG4gICAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuICAgIHwgYFN0cm9rZVdpZHRoIC0+IFwic3Ryb2tlLXdpZHRoXCJcbiAgICB8IGBTdW0gLT4gXCJzdW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYFRlcm1pbmFsIC0+IFwidGVybWluYWxcIlxuICAgIHwgYFRyYW5zbGF0ZSAtPiBcInRyYW5zbGF0ZVwiXG4gICAgfCBgVHVyYnVsZW5jZSAtPiBcInR1cmJ1bGVuY2VcIlxuICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgfCBgVXNlclNwYWNlT25Vc2UgLT4gXCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgfCBgViAtPiBcInZcIlxuICAgIHwgYFdoZW5Ob3RBY3RpdmUgLT4gXCJ3aGVuTm90QWN0aXZlXCJcbiAgICB8IGBXcmFwIC0+IFwid3JhcFwiXG4gICAgfCBgWE1MIC0+IFwiWE1MXCJcbiAgICB8IGBYb3IgLT4gXCJ4b3JcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZHMgPVxuICAgIGxpc3QgKGZ1biAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlZywgJWdcIiBhIGIpXG5cbiAgbGV0IHN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYFVzZV9zY3JpcHQgLT4gXCJ1c2VzY3JpcHRcIlxuICAgIHwgYE5vX2NoYW5nZSAtPiBcIm5vY2hhbmdlXCJcbiAgICB8IGBSZXNldF9zaXplIC0+IFwicmVzZXRzaXplXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZyAtPiBcImhhbmdpbmdcIlxuICAgIHwgYE1hdGhlbWF0aWNhbCAtPiBcIm1hdGhlbWF0aWNhbFwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dGFmdGVyZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHRiZWZvcmVlZGdlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cblxuICBsZXQgc3RyaW5nX29mX2luX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IGBTb3VyY2VHcmFwaGljIC0+IFwic291cmNlR3JhcGhpY1wiXG4gICAgfCBgU291cmNlQWxwaGEgLT4gXCJzb3VyY2VBbHBoYVwiXG4gICAgfCBgQmFja2dyb3VuZEltYWdlIC0+IFwiYmFja2dyb3VuZEltYWdlXCJcbiAgICB8IGBCYWNrZ3JvdW5kQWxwaGEgLT4gXCJiYWNrZ3JvdW5kQWxwaGFcIlxuICAgIHwgYEZpbGxQYWludCAtPiBcImZpbGxQYWludFwiXG4gICAgfCBgU3Ryb2tlUGFpbnQgLT4gXCJzdHJva2VQYWludFwiXG4gICAgfCBgUmVmIF9zdmcgLT4gX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gVW5pdC5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gbGlzdCBzdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXIgPSBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfcGVyY2VudGFnZSB4ID0gKHN0cmluZ19vZl9udW1iZXIgeCkgXiBcIiVcIlxuXG4gIGxldCBzdHJpbmdfb2ZfZm91cmZsb2F0cyAoYSwgYiwgYywgZCkgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgJXNcIlxuICAgICAgKHN0cmluZ19vZl9udW1iZXIgYSkgKHN0cmluZ19vZl9udW1iZXIgYikgKHN0cmluZ19vZl9udW1iZXIgYykgKHN0cmluZ19vZl9udW1iZXIgZClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgPSBmdW5jdGlvblxuICAgIHwgeCwgU29tZSB5IC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgeCB5XG4gICAgfCB4LCBOb25lIC0+IFByaW50Zi5zcHJpbnRmIFwiJWdcIiB4XG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzID0gbGlzdCBzdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiA9IGxpc3QgfnNlcDpcIjsgXCIgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2Zfb2Zmc2V0ID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgeCAtPiBzdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IGBQZXJjZW50YWdlIHggLT4gc3RyaW5nX29mX3BlcmNlbnRhZ2UgeFxuXG4gIGxldCBzdHJpbmdfb2Zfb3JpZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gXCJhdXRvXCJcbiAgICB8IFNvbWUgX19zdmcgLT4gc3RyaW5nX29mX2FuZ2xlIF9fc3ZnXG5cbiAgbGV0IHN0cmluZ19vZl9wYWludCA9IHN0cmluZ19vZl9wYWludFxuXG4gIGxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gc3RyaW5nX29mX2ZpbGxfcnVsZVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwibm9uZVwiXG4gICAgfCBsIC0+IGxpc3Qgc3RyaW5nX29mX2xlbmd0aCBsXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm0gPSBmdW5jdGlvblxuICAgIHwgYE1hdHJpeCAoYSwgYiwgYywgZCwgZSwgZikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwibWF0cml4KCVnICVnICVnICVnICVnICVnKVwiIGEgYiBjIGQgZSBmXG4gICAgfCBgVHJhbnNsYXRlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwidHJhbnNsYXRlKCVzKVwiXG4gICAgICAgIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFNjYWxlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2NhbGUoJXMpXCIgKHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIHgpXG4gICAgfCBgUm90YXRlICgoYW5nbGUsIHgpKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJyb3RhdGUoJXMgJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcbiAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgfCBTb21lICgoeCwgeSkpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcgJWdcIiB4IHlcbiAgICAgICAgIHwgTm9uZSAtPiBcIlwiKVxuICAgIHwgYFNrZXdYIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdYKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgfCBgU2tld1kgYW5nbGUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2tld1koJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcblxuICBsZXQgc3RyaW5nX29mX3RyYW5zZm9ybXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3RyYW5zZm9ybSBsKVxuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICgnYSAtPiAnYikpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSlcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMDcgYnkgVmluY2VudCBCYWxhdCwgR2FicmllbCBLZXJuZWlzXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IEh0bWxfc2lncy5XcmFwcGVkX2Z1bmN0aW9ucyB3aXRoIG1vZHVsZSBYbWwgPSBYbWwpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9odG1sXCJcbiAgICBsZXQgYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyA9IFtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiO1wiYXBwbGljYXRpb24veG1sXCI7XCJ0ZXh0L3htbFwiXVxuICAgIGxldCB2ZXJzaW9uID0gXCJIVE1MNS1kcmFmdFwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGUgXCJodG1sXCIgW11cbiAgICBsZXQgZW1wdHl0YWdzID1cbiAgICAgIFsgXCJhcmVhXCI7IFwiYmFzZVwiOyBcImJyXCI7IFwiY29sXCI7IFwiY29tbWFuZFwiOyBcImVtYmVkXCI7IFwiaHJcIjsgXCJpbWdcIjtcbiAgICAgICAgXCJpbnB1dFwiOyBcImtleWdlblwiOyBcImxpbmtcIjsgXCJtZXRhXCI7IFwicGFyYW1cIjsgXCJzb3VyY2VcIjsgXCJ3YnJcIiBdXG4gIGVuZFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiB1cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgdXJpICogSHRtbF90eXBlcy5udW1iZXJcbiAgICB8IGBVcmxfcGl4ZWwgb2YgdXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICAoKiBWQiAqKVxuICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBsZXQgdXNlcl9hdHRyaWIgZiBuYW1lIHYgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBib29sX2F0dHJpYiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgY29uc3RhbnRfYXR0cmliIGEgKCkgPVxuICAgIHN0cmluZ19hdHRyaWIgYSAoVy5yZXR1cm4gYSlcblxuICBsZXQgbGlua3R5cGVzX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xpbmt0eXBlcyBuYW1lIHhcblxuICBsZXQgbWVkaWFkZXNjX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX21lZGlhZGVzYyBuYW1lIHhcblxuICBsZXQgc3Jjc2V0X2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NyY3NldCBuYW1lIHhcblxuICAoKiBDb3JlOiAqKVxuICBsZXQgYV9jbGFzcyA9IHNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV90aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ0aXRsZVwiXG5cbiAgKCogSTE4TjogKilcbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuICBsZXQgYV9sYW5nID0gc3RyaW5nX2F0dHJpYiBcImxhbmdcIlxuXG4gICgqIFN0eWxlOiAqKVxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfcHJvcGVydHkgPSBzdHJpbmdfYXR0cmliIFwicHJvcGVydHlcIlxuXG4gICgqIEV2ZW50czogKilcbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFmdGVycHJpbnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFmdGVycHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmVwcmludFwiXG4gIGxldCBhX29uYmVmb3JldW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmV1bmxvYWRcIlxuICBsZXQgYV9vbmJsdXIgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJsdXJcIlxuICBsZXQgYV9vbmNhbnBsYXkgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNhbnBsYXlcIlxuICBsZXQgYV9vbmNhbnBsYXl0aHJvdWdoID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5dGhyb3VnaFwiXG4gIGxldCBhX29uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jaGFuZ2VcIlxuICBsZXQgYV9vbmNsb3NlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbG9zZVwiXG4gIGxldCBhX29uZHVyYXRpb25jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmR1cmF0aW9uY2hhbmdlXCJcbiAgbGV0IGFfb25lbXB0aWVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbXB0aWVkXCJcbiAgbGV0IGFfb25lbmRlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kZWRcIlxuICBsZXQgYV9vbmVycm9yID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lcnJvclwiXG4gIGxldCBhX29uZm9jdXMgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzXCJcbiAgbGV0IGFfb25mb3JtY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtY2hhbmdlXCJcbiAgbGV0IGFfb25mb3JtaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvcm1pbnB1dFwiXG4gIGxldCBhX29uaGFzaGNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaGFzaGNoYW5nZVwiXG4gIGxldCBhX29uaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmlucHV0XCJcbiAgbGV0IGFfb25pbnZhbGlkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnZhbGlkXCJcbiAgbGV0IGFfb25vZmZsaW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vZmZsaW5lXCJcbiAgbGV0IGFfb25vbmxpbmUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm9ubGluZVwiXG4gIGxldCBhX29ucGF1c2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhdXNlXCJcbiAgbGV0IGFfb25wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5XCJcbiAgbGV0IGFfb25wbGF5aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5aW5nXCJcbiAgbGV0IGFfb25wYWdlaGlkZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZWhpZGVcIlxuICBsZXQgYV9vbnBhZ2VzaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYWdlc2hvd1wiXG4gIGxldCBhX29ucG9wc3RhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBvcHN0YXRlXCJcbiAgbGV0IGFfb25wcm9ncmVzcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucHJvZ3Jlc3NcIlxuICBsZXQgYV9vbnJhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlYWR5c3RhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlZG9cIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29uc2Vla2VkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVrZWRcIlxuICBsZXQgYV9vbnNlZWtpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlZWtpbmdcIlxuICBsZXQgYV9vbnNlbGVjdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2VsZWN0XCJcbiAgbGV0IGFfb25zaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zaG93XCJcbiAgbGV0IGFfb25zdGFsbGVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdGFsbGVkXCJcbiAgbGV0IGFfb25zdG9yYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdG9yYWdlXCJcbiAgbGV0IGFfb25zdWJtaXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1Ym1pdFwiXG4gIGxldCBhX29uc3VzcGVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3VzcGVuZFwiXG4gIGxldCBhX29udGltZXVwZGF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udGltZXVwZGF0ZVwiXG4gIGxldCBhX29udW5kbyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5kb1wiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnZvbHVtZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udm9sdW1lY2hhbmdlXCJcbiAgbGV0IGFfb253YWl0aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib253YWl0aW5nXCJcbiAgbGV0IGFfb25sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkXCJcbiAgbGV0IGFfb25sb2FkZWRkYXRhID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkZWRkYXRhXCJcbiAgbGV0IGFfb25sb2FkZWRtZXRhZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkbWV0YWRhdGFcIlxuICBsZXQgYV9vbmxvYWRzdGFydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZHN0YXJ0XCJcbiAgbGV0IGFfb25tZXNzYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tZXNzYWdlXCJcbiAgbGV0IGFfb25tb3VzZXdoZWVsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXdoZWVsXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcbiAgbGV0IGFfb25jbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xpY2tcIlxuICBsZXQgYV9vbmNvbnRleHRtZW51ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jb250ZXh0bWVudVwiXG4gIGxldCBhX29uZGJsY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRibGNsaWNrXCJcbiAgbGV0IGFfb25kcmFnID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnXCJcbiAgbGV0IGFfb25kcmFnZW5kID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW5kXCJcbiAgbGV0IGFfb25kcmFnZW50ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdlbnRlclwiXG4gIGxldCBhX29uZHJhZ2xlYXZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnbGVhdmVcIlxuICBsZXQgYV9vbmRyYWdvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnb3ZlclwiXG4gIGxldCBhX29uZHJhZ3N0YXJ0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnc3RhcnRcIlxuICBsZXQgYV9vbmRyb3AgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyb3BcIlxuICBsZXQgYV9vbm1vdXNlZG93biA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vkb3duXCJcbiAgbGV0IGFfb25tb3VzZXVwID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXVwXCJcbiAgbGV0IGFfb25tb3VzZW92ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3ZlclwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgdG91Y2ggZXZlbnRzICopXG4gIGxldCBhX29udG91Y2hzdGFydCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hzdGFydFwiXG4gIGxldCBhX29udG91Y2hlbmQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoZW5kXCJcbiAgbGV0IGFfb250b3VjaG1vdmUgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNobW92ZVwiXG4gIGxldCBhX29udG91Y2hjYW5jZWwgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoY2FuY2VsXCJcblxuICAoKiogSmF2YXNjcmlwdCBrZXlib2FyZCBldmVudHMgKilcbiAgbGV0IGFfb25rZXlwcmVzcyA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5cHJlc3NcIlxuICBsZXQgYV9vbmtleWRvd24gPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleWRvd25cIlxuICBsZXQgYV9vbmtleXVwID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXl1cFwiXG5cbiAgKCogT3RoZXIgQXR0cmlidXRlcyAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX3htbG5zIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sbnNcIiB4XG5cbiAgbGV0IGFfbWFuaWZlc3QgPSB1cmlfYXR0cmliIFwibWFuaWZlc3RcIlxuXG4gIGxldCBhX2NpdGUgPSB1cmlfYXR0cmliIFwiY2l0ZVwiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX2FjY2Vzc2tleSBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJhY2Nlc3NrZXlcIiBjXG5cbiAgbGV0IGFfY2hhcnNldCA9IHN0cmluZ19hdHRyaWIgXCJjaGFyc2V0XCJcblxuICBsZXQgYV9hY2NlcHRfY2hhcnNldCA9IHNwYWNlX3NlcF9hdHRyaWIgXCJhY2NlcHQtY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0ID0gY29tbWFfc2VwX2F0dHJpYiBcImFjY2VwdFwiXG5cbiAgbGV0IGFfaHJlZiA9IHVyaV9hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV9ocmVmbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJocmVmbGFuZ1wiXG5cbiAgbGV0IGFfZG93bmxvYWQgZmlsZSA9XG4gICAgdXNlcl9hdHRyaWIgKEMudW5vcHRpb25fc3RyaW5nKSBcImRvd25sb2FkXCIgZmlsZVxuXG4gIGxldCBhX3JlbCA9IGxpbmt0eXBlc19hdHRyaWIgXCJyZWxcIlxuXG4gIGxldCBhX3RhYmluZGV4ID0gaW50X2F0dHJpYiBcInRhYmluZGV4XCJcblxuICBsZXQgYV9taW1lX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfYWx0ID0gc3RyaW5nX2F0dHJpYiBcImFsdFwiXG5cbiAgbGV0IGFfaGVpZ2h0IHAgPSBpbnRfYXR0cmliIFwiaGVpZ2h0XCIgcFxuXG4gIGxldCBhX3NyYyA9IHVyaV9hdHRyaWIgXCJzcmNcIlxuXG4gIGxldCBhX3dpZHRoIHAgPSBpbnRfYXR0cmliIFwid2lkdGhcIiBwXG5cbiAgbGV0IGFfbGFiZWxfZm9yID0gc3RyaW5nX2F0dHJpYiBcImZvclwiXG4gIGxldCBhX2ZvciA9IGFfbGFiZWxfZm9yXG5cbiAgbGV0IGFfb3V0cHV0X2ZvciA9IHNwYWNlX3NlcF9hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3JfbGlzdCA9IGFfb3V0cHV0X2ZvclxuXG4gIGxldCBhX3NlbGVjdGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWxlY3RlZFwiXG5cbiAgbGV0IGFfdGV4dF92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfaW50X3ZhbHVlID0gaW50X2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfZmxvYXRfdmFsdWUgPSBmbG9hdF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfYWN0aW9uID0gdXJpX2F0dHJpYiBcImFjdGlvblwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX2Zvcm1tZXRob2QgeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZm9ybW1ldGhvZFwiIHhcblxuICBsZXQgYV9lbmN0eXBlID0gc3RyaW5nX2F0dHJpYiBcImVuY3R5cGVcIlxuXG4gIGxldCBhX2NoZWNrZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNoZWNrZWRcIlxuXG4gIGxldCBhX2Rpc2FibGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJkaXNhYmxlZFwiXG5cbiAgbGV0IGFfcmVhZG9ubHkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlYWRvbmx5XCJcblxuICBsZXQgYV9tYXhsZW5ndGggPSBpbnRfYXR0cmliIFwibWF4bGVuZ3RoXCJcblxuICBsZXQgYV9taW5sZW5ndGggPSBpbnRfYXR0cmliIFwibWlubGVuZ3RoXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsbG93ZnVsbHNjcmVlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dmdWxsc2NyZWVuXCJcblxuICBsZXQgYV9hbGxvd3BheW1lbnRyZXF1ZXN0ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhbGxvd3BheW1lbnRyZXF1ZXN0XCJcblxuICBsZXQgYV9yZWZlcnJlcnBvbGljeSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSBcInJlZmVycmVycG9saWN5XCIgeFxuXG4gIGxldCBhX2F1dG9jb21wbGV0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hdXRvY29tcGxldGUgXCJhdXRvY29tcGxldGVcIiB4XG5cbiAgbGV0IGFfYXN5bmMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFzeW5jXCJcblxuICBsZXQgYV9hdXRvZm9jdXMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9mb2N1c1wiXG5cbiAgbGV0IGFfYXV0b3BsYXkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9wbGF5XCJcblxuICBsZXQgYV9tdXRlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXV0ZWRcIlxuXG4gIGxldCBhX2Nyb3Nzb3JpZ2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY3Jvc3NvcmlnaW5cIiB4XG5cbiAgbGV0IGFfaW50ZWdyaXR5ID0gc3RyaW5nX2F0dHJpYiBcImludGVncml0eVwiXG5cbiAgbGV0IGFfbWVkaWFncm91cCA9IHN0cmluZ19hdHRyaWIgXCJtZWRpYWdyb3VwXCJcblxuICBsZXQgYV9jaGFsbGVuZ2UgPSBzdHJpbmdfYXR0cmliIFwiY2hhbGxlbmdlXCJcblxuICBsZXQgYV9jb250ZW50ZWRpdGFibGUgY2UgPVxuICAgIGJvb2xfYXR0cmliIFwiY29udGVudGVkaXRhYmxlXCIgY2VcblxuICBsZXQgYV9jb250ZXh0bWVudSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZXh0bWVudVwiXG5cbiAgbGV0IGFfY29udHJvbHMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNvbnRyb2xzXCJcblxuICBsZXQgYV9kaXIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJkaXJcIiB4XG5cbiAgbGV0IGFfZHJhZ2dhYmxlIGQgPVxuICAgIGJvb2xfYXR0cmliIFwiZHJhZ2dhYmxlXCIgZFxuXG4gIGxldCBhX2Zvcm0gPSBzdHJpbmdfYXR0cmliIFwiZm9ybVwiXG5cbiAgbGV0IGFfZm9ybWFjdGlvbiA9IHVyaV9hdHRyaWIgXCJmb3JtYWN0aW9uXCJcblxuICBsZXQgYV9mb3JtZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJmb3JtZW5jdHlwZVwiXG5cbiAgbGV0IGFfZm9ybW5vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImZvcm1ub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9mb3JtdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcImZvcm10YXJnZXRcIlxuXG4gIGxldCBhX2hpZGRlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaGlkZGVuXCJcblxuICBsZXQgYV9oaWdoID0gZmxvYXRfYXR0cmliIFwiaGlnaFwiXG5cbiAgbGV0IGFfaWNvbiA9IHVyaV9hdHRyaWIgXCJpY29uXCJcblxuICBsZXQgYV9pc21hcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaXNtYXBcIlxuXG4gIGxldCBhX2tleXR5cGUgPSBzdHJpbmdfYXR0cmliIFwia2V5dHlwZVwiXG5cbiAgbGV0IGFfbGlzdCA9IHN0cmluZ19hdHRyaWIgXCJsaXN0XCJcblxuICBsZXQgYV9sb29wID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJsb29wXCJcblxuICBsZXQgYV9sb3cgPSBmbG9hdF9hdHRyaWIgXCJsb3dcIlxuXG4gIGxldCBhX21heCA9IGZsb2F0X2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfaW5wdXRfbWF4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIFwibWF4XCJcblxuICBsZXQgYV9taW4gPSBmbG9hdF9hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0X21pbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1pblwiXG5cbiAgbGV0IGFfaW5wdXRtb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiaW5wdXRtb2RlXCIgeFxuXG4gIGxldCBhX25vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm5vdmFsaWRhdGVcIlxuXG4gIGxldCBhX29wZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm9wZW5cIlxuXG4gIGxldCBhX29wdGltdW0gPSBmbG9hdF9hdHRyaWIgXCJvcHRpbXVtXCJcblxuICBsZXQgYV9wYXR0ZXJuID0gc3RyaW5nX2F0dHJpYiBcInBhdHRlcm5cIlxuXG4gIGxldCBhX3BsYWNlaG9sZGVyID0gc3RyaW5nX2F0dHJpYiBcInBsYWNlaG9sZGVyXCJcblxuICBsZXQgYV9wb3N0ZXIgPSB1cmlfYXR0cmliIFwicG9zdGVyXCJcblxuICBsZXQgYV9wcmVsb2FkIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJlbG9hZFwiIHhcblxuICBsZXQgYV9wdWJkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJwdWJkYXRlXCJcblxuICBsZXQgYV9yYWRpb2dyb3VwID0gc3RyaW5nX2F0dHJpYiBcInJhZGlvZ3JvdXBcIlxuXG4gIGxldCBhX3JlcXVpcmVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXF1aXJlZFwiXG5cbiAgbGV0IGFfcmV2ZXJzZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlc2VydmVkXCJcblxuICBsZXQgYV9zYW5kYm94IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NhbmRib3ggXCJzYW5kYm94XCIgeFxuXG4gIGxldCBhX3NwZWxsY2hlY2sgc2MgPVxuICAgIGJvb2xfYXR0cmliIFwic3BlbGxjaGVja1wiIHNjXG5cbiAgbGV0IGFfc2NvcGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzY29wZWRcIlxuXG4gIGxldCBhX3NlYW1sZXNzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWFtbGVzc1wiXG5cbiAgbGV0IGFfc2l6ZXMgc2l6ZXMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NpemVzIFwic2l6ZXNcIiBzaXplc1xuXG4gIGxldCBhX3NwYW4gPSBpbnRfYXR0cmliIFwic3BhblwiXG5cbiAgKCpsZXQgYV9zcmNkb2MqKVxuICBsZXQgYV9zcmNsYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcblxuICBsZXQgYV9zcmNzZXQgPSBzcmNzZXRfYXR0cmliIFwic3Jjc2V0XCJcblxuICBsZXQgYV9pbWdfc2l6ZXMgPSBjb21tYV9zZXBfYXR0cmliIFwic2l6ZXNcIlxuXG4gIGxldCBhX3N0YXJ0ID0gaW50X2F0dHJpYiBcInN0YXJ0XCJcblxuICBsZXQgYV9zdGVwIHN0ZXAgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0ZXAgXCJzdGVwXCIgc3RlcFxuXG4gIGxldCBhX3RyYW5zbGF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRyYW5zbGF0ZVwiIHhcbiAgXG4gIGxldCBhX3dyYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ3cmFwXCIgeFxuXG4gIGxldCBhX3NpemUgPSBpbnRfYXR0cmliIFwic2l6ZVwiXG5cbiAgbGV0IGFfaW5wdXRfdHlwZSBpdCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBpdFxuXG4gIGxldCBhX21lbnVfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfY29tbWFuZF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV9idXR0b25fdHlwZSBidCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBidFxuXG4gIGxldCBhX3NjcmlwdF90eXBlIHNjID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2NyaXB0X3R5cGUgXCJ0eXBlXCIgc2NcblxuICBsZXQgYV9tdWx0aXBsZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXVsdGlwbGVcIlxuXG4gIGxldCBhX2NvbHMgPSBpbnRfYXR0cmliIFwiY29sc1wiXG5cbiAgbGV0IGFfcm93cyA9IGludF9hdHRyaWIgXCJyb3dzXCJcblxuICBsZXQgYV9zdW1tYXJ5ID0gc3RyaW5nX2F0dHJpYiBcInN1bW1hcnlcIlxuXG4gIGxldCBhX2FsaWduIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWxpZ25cIiB4XG5cbiAgbGV0IGFfYXhpcyA9IHN0cmluZ19hdHRyaWIgXCJheGlzXCJcblxuICBsZXQgYV9jb2xzcGFuID0gaW50X2F0dHJpYiBcImNvbHNwYW5cIlxuXG4gIGxldCBhX2hlYWRlcnMgPSBzcGFjZV9zZXBfYXR0cmliIFwiaGVhZGVyc1wiXG5cbiAgbGV0IGFfcm93c3BhbiA9IGludF9hdHRyaWIgXCJyb3dzcGFuXCJcblxuICBsZXQgYV9zY29wZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjb3BlXCIgeFxuXG4gIGxldCBhX2JvcmRlciA9IGludF9hdHRyaWIgXCJib3JkZXJcIlxuXG4gIGxldCBhX3J1bGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicnVsZXNcIiB4XG5cbiAgbGV0IGFfY2hhciBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJjaGFyXCIgY1xuXG4gIGxldCBhX2RhdGEgPSB1cmlfYXR0cmliIFwiZGF0YVwiXG5cbiAgbGV0IGFfY29kZXR5cGUgPSBzdHJpbmdfYXR0cmliIFwiY29kZXR5cGVcIlxuXG4gIGxldCBhX2ZyYW1lYm9yZGVyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZnJhbWVib3JkZXJcIiB4XG5cbiAgbGV0IGFfbWFyZ2luaGVpZ2h0ID0gaW50X2F0dHJpYiBcIm1hcmdpbmhlaWdodFwiXG5cbiAgbGV0IGFfbWFyZ2lud2lkdGggPSBpbnRfYXR0cmliIFwibWFyZ2lud2lkdGhcIlxuXG4gIGxldCBhX3Njcm9sbGluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjcm9sbGluZ1wiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidGFyZ2V0XCJcblxuICBsZXQgYV9jb250ZW50ID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRcIlxuXG4gIGxldCBhX2h0dHBfZXF1aXYgPSBzdHJpbmdfYXR0cmliIFwiaHR0cC1lcXVpdlwiXG5cbiAgbGV0IGFfbWVkaWEgPSBtZWRpYWRlc2NfYXR0cmliIFwibWVkaWFcIlxuXG4gICgqIEFSSUEgKilcblxuICBsZXQgYV9yb2xlID0gc3BhY2Vfc2VwX2F0dHJpYiBcInJvbGVcIlxuXG4gIGxldCBhX2FyaWEgbmFtZSA9IHNwYWNlX3NlcF9hdHRyaWIgKFwiYXJpYS1cIiBeIG5hbWUpXG5cbiAgdHlwZSAnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdGVybWluYWwgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICBsZXQgcGx1cyB0YWcgP2EgZWx0IGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5jb25zIGVsdCBlbHRzKVxuXG4gIGxldCBvcHRpb25fY29ucyBvcHQgZWx0cyA9XG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gZWx0c1xuICAgIHwgU29tZSB4IC0+IFcuY29ucyB4IGVsdHNcblxuICBsZXQgYm9keSA9IHN0YXIgXCJib2R5XCJcblxuICBsZXQgaGVhZCA9IHBsdXMgXCJoZWFkXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgaHRtbCA/YSBoZWFkIGJvZHkgPVxuICAgIGxldCBjb250ZW50ID0gVy5jb25zIGhlYWQgKFcuc2luZ2xldG9uIGJvZHkpIGluXG4gICAgWG1sLm5vZGUgP2EgXCJodG1sXCIgY29udGVudFxuXG4gIGxldCBmb290ZXIgPSBzdGFyIFwiZm9vdGVyXCJcblxuICBsZXQgaGVhZGVyID0gc3RhciBcImhlYWRlclwiXG5cbiAgbGV0IHNlY3Rpb24gPSBzdGFyIFwic2VjdGlvblwiXG5cbiAgbGV0IG5hdiA9IHN0YXIgXCJuYXZcIlxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgbGV0IGVudGl0eSA9IFhtbC5lbnRpdHlcblxuICBsZXQgc3BhY2UgKCkgPSBlbnRpdHkgXCJuYnNwXCJcblxuICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICBsZXQgY2RhdGFfc2NyaXB0ID0gWG1sLmNkYXRhX3NjcmlwdFxuXG4gIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuXG4gIGxldCBoMSA9IHN0YXIgXCJoMVwiXG5cbiAgbGV0IGgyID0gc3RhciBcImgyXCJcblxuICBsZXQgaDMgPSBzdGFyIFwiaDNcIlxuXG4gIGxldCBoNCA9IHN0YXIgXCJoNFwiXG5cbiAgbGV0IGg1ID0gc3RhciBcImg1XCJcblxuICBsZXQgaDYgPSBzdGFyIFwiaDZcIlxuXG4gIGxldCBoZ3JvdXAgPSBzdGFyIFwiaGdyb3VwXCJcblxuICBsZXQgYWRkcmVzcyA9IHN0YXIgXCJhZGRyZXNzXCJcblxuICBsZXQgYmxvY2txdW90ZSA9IHN0YXIgXCJibG9ja3F1b3RlXCJcblxuICBsZXQgZGlhbG9nID0gc3RhciBcImRpYWxvZ1wiXG5cbiAgbGV0IGRpdiA9IHN0YXIgXCJkaXZcIlxuXG4gIGxldCBwID0gc3RhciBcInBcIlxuXG4gIGxldCBwcmUgPSBzdGFyIFwicHJlXCJcblxuICBsZXQgYWJiciA9IHN0YXIgXCJhYmJyXCJcblxuICBsZXQgYnIgPSB0ZXJtaW5hbCBcImJyXCJcblxuICBsZXQgY2l0ZSA9IHN0YXIgXCJjaXRlXCJcblxuICBsZXQgY29kZSA9IHN0YXIgXCJjb2RlXCJcblxuICBsZXQgZGZuID0gc3RhciBcImRmblwiXG5cbiAgbGV0IGVtID0gc3RhciBcImVtXCJcblxuICBsZXQga2JkID0gc3RhciBcImtiZFwiXG5cbiAgbGV0IHEgPSBzdGFyIFwicVwiXG5cbiAgbGV0IHNhbXAgPSBzdGFyIFwic2FtcFwiXG5cbiAgbGV0IHNwYW4gPSBzdGFyIFwic3BhblwiXG5cbiAgbGV0IHN0cm9uZyA9IHN0YXIgXCJzdHJvbmdcIlxuXG4gIGxldCB0aW1lID0gc3RhciBcInRpbWVcIlxuXG4gIGxldCB2YXIgPSBzdGFyIFwidmFyXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgZGwgPSBzdGFyIFwiZGxcIlxuXG4gIGxldCBvbCA9IHN0YXIgXCJvbFwiXG5cbiAgbGV0IHVsID0gc3RhciBcInVsXCJcblxuICBsZXQgZGQgPSBzdGFyIFwiZGRcIlxuXG4gIGxldCBkdCA9IHN0YXIgXCJkdFwiXG5cbiAgbGV0IGxpID0gc3RhciBcImxpXCJcblxuICBsZXQgaHIgPSB0ZXJtaW5hbCBcImhyXCJcblxuICBsZXQgYiA9IHN0YXIgXCJiXCJcblxuICBsZXQgaSA9IHN0YXIgXCJpXCJcblxuICBsZXQgdSA9IHN0YXIgXCJ1XCJcblxuICBsZXQgc21hbGwgPSBzdGFyIFwic21hbGxcIlxuXG4gIGxldCBzdWIgPSBzdGFyIFwic3ViXCJcblxuICBsZXQgc3VwID0gc3RhciBcInN1cFwiXG5cbiAgbGV0IG1hcmsgPSBzdGFyIFwibWFya1wiXG5cbiAgbGV0IHJwID0gc3RhciBcInJwXCJcblxuICBsZXQgcnQgPSBzdGFyIFwicnRcIlxuXG4gIGxldCBydWJ5ID0gc3RhciBcInJ1YnlcIlxuXG4gIGxldCB3YnIgPSB0ZXJtaW5hbCBcIndiclwiXG5cbiAgKCogVkIgKilcbiAgdHlwZSBzaGFwZSA9IFsgfCBgUmVjdCB8IGBDaXJjbGUgfCBgUG9seSB8IGBEZWZhdWx0IF1cblxuICBsZXQgYmRvIH5kaXIgPyhhID0gW10pIGVsdHMgPSBYbWwubm9kZSB+YTogKChhX2RpciBkaXIpIDo6IGEpIFwiYmRvXCIgZWx0c1xuXG4gIGxldCBhX2RhdGV0aW1lID0gc3RyaW5nX2F0dHJpYiBcImRhdGV0aW1lXCJcblxuICBsZXQgYV9zaGFwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNoYXBlXCIgeFxuXG4gIGxldCBhX2Nvb3JkcyBjb29yZHMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJjb29yZHNcIiBjb29yZHNcblxuICBsZXQgYV91c2VtYXAgPSBzdHJpbmdfYXR0cmliIFwidXNlbWFwXCJcblxuICBsZXQgYV9kZWZlciA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGVmZXJcIlxuXG4gIGxldCBhX2xhYmVsID0gc3RyaW5nX2F0dHJpYiBcImxhYmVsXCJcblxuICBsZXQgYXJlYSB+YWx0ID8oYSA9IFtdKSAoKSA9IFhtbC5sZWFmIH5hOiAoKGFfYWx0IGFsdCkgOjogYSkgXCJhcmVhXCJcblxuICBsZXQgbWFwID0gc3RhciBcIm1hcFwiXG5cbiAgbGV0IGRlbCA9IHN0YXIgXCJkZWxcIlxuXG4gIGxldCBpbnMgPSBzdGFyIFwiaW5zXCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBub3NjcmlwdCA9IHN0YXIgXCJub3NjcmlwdFwiXG5cbiAgbGV0IHRlbXBsYXRlID0gc3RhciBcInRlbXBsYXRlXCJcblxuICBsZXQgYXJ0aWNsZSA9IHN0YXIgXCJhcnRpY2xlXCJcblxuICBsZXQgYXNpZGUgPSBzdGFyIFwiYXNpZGVcIlxuXG4gIGxldCBtYWluID0gc3RhciBcIm1haW5cIlxuXG4gIGxldCB2aWRlb19hdWRpbyBuYW1lID9zcmMgP3NyY3MgPyhhID0gW10pIGVsdHMgPVxuICAgIGxldCBhID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYVxuICAgICAgfCBTb21lIHVyaSAtPiAoYV9zcmMgdXJpKSA6OiBhXG4gICAgaW5cbiAgICBtYXRjaCBzcmNzIHdpdGhcbiAgICB8IE5vbmUgLT4gWG1sLm5vZGUgbmFtZSB+YSBlbHRzXG4gICAgfCBTb21lIHNyY3MgLT4gWG1sLm5vZGUgbmFtZSB+YSAoVy5hcHBlbmQgc3JjcyBlbHRzKVxuXG4gIGxldCBhdWRpbyA9IHZpZGVvX2F1ZGlvIFwiYXVkaW9cIlxuXG4gIGxldCB2aWRlbyA9IHZpZGVvX2F1ZGlvIFwidmlkZW9cIlxuXG4gIGxldCBjYW52YXMgPSBzdGFyIFwiY2FudmFzXCJcblxuICBsZXQgY29tbWFuZCB+bGFiZWwgPyhhID0gW10pICgpID1cbiAgICBYbWwubGVhZiB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcImNvbW1hbmRcIlxuXG4gIGxldCBtZW51ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBMaXMgbClcbiAgICAgIHwgU29tZSAoYEZsb3dzIGwpIC0+IGwgaW5cbiAgICBYbWwubm9kZSA/YSBcIm1lbnVcIiBjaGlsZHJlblxuXG4gIGxldCBlbWJlZCA9IHRlcm1pbmFsIFwiZW1iZWRcIlxuXG4gIGxldCBzb3VyY2UgPSB0ZXJtaW5hbCBcInNvdXJjZVwiXG5cbiAgbGV0IG1ldGVyID0gc3RhciBcIm1ldGVyXCJcblxuICBsZXQgb3V0cHV0X2VsdCA9IHN0YXIgXCJvdXRwdXRcIlxuXG4gIGxldCBmb3JtID0gc3RhciBcImZvcm1cIlxuXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBTdmcudG9lbHQgKFN2Zy5zdmcgfmEgY2hpbGRyZW4pXG5cbiAgbGV0IGlucHV0ID0gdGVybWluYWwgXCJpbnB1dFwiXG5cbiAgbGV0IGtleWdlbiA9IHRlcm1pbmFsIFwia2V5Z2VuXCJcblxuICBsZXQgbGFiZWwgPSBzdGFyIFwibGFiZWxcIlxuXG4gIGxldCBvcHRpb24gPSB1bmFyeSBcIm9wdGlvblwiXG5cbiAgbGV0IHNlbGVjdCA9IHN0YXIgXCJzZWxlY3RcIlxuXG4gIGxldCB0ZXh0YXJlYSA9IHVuYXJ5IFwidGV4dGFyZWFcIlxuXG4gIGxldCBidXR0b24gPSBzdGFyIFwiYnV0dG9uXCJcblxuICBsZXQgZGF0YWxpc3QgP2NoaWxkcmVuID9hICgpID1cbiAgICBsZXQgY2hpbGRyZW4gPSBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVy5uaWwgKClcbiAgICAgIHwgU29tZSAoYE9wdGlvbnMgeCB8IGBQaHJhcyB4KSAtPiB4IGluXG4gICAgWG1sLm5vZGUgP2EgXCJkYXRhbGlzdFwiIGNoaWxkcmVuXG5cbiAgbGV0IHByb2dyZXNzID0gc3RhciBcInByb2dyZXNzXCJcblxuICBsZXQgbGVnZW5kID0gc3RhciBcImxlZ2VuZFwiXG5cbiAgbGV0IGRldGFpbHMgc3VtbWFyeSA/YSBjaGlsZHJlbiA9XG4gICAgcGx1cyBcImRldGFpbHNcIiA/YSBzdW1tYXJ5IGNoaWxkcmVuXG5cbiAgbGV0IHN1bW1hcnkgPSBzdGFyIFwic3VtbWFyeVwiXG5cbiAgbGV0IGZpZWxkc2V0ID9sZWdlbmQgP2EgZWx0cyA9XG4gICAgWG1sLm5vZGUgP2EgXCJmaWVsZHNldFwiIChvcHRpb25fY29ucyBsZWdlbmQgZWx0cylcblxuICBsZXQgb3B0Z3JvdXAgfmxhYmVsID8oYSA9IFtdKSBlbHRzID1cbiAgICBYbWwubm9kZSB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcIm9wdGdyb3VwXCIgZWx0c1xuXG4gIGxldCBmaWdjYXB0aW9uID0gc3RhciBcImZpZ2NhcHRpb25cIlxuICBsZXQgZmlndXJlID9maWdjYXB0aW9uID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggZmlnY2FwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIChgVG9wIGMpIC0+IFcuY29ucyBjIGVsdHNcbiAgICAgIHwgU29tZSAoYEJvdHRvbSBjKSAtPiBXLmFwcGVuZCBlbHRzIChXLnNpbmdsZXRvbiBjKVxuICAgIGluXG4gICAgWG1sLm5vZGUgP2EgXCJmaWd1cmVcIiBjb250ZW50XG5cbiAgbGV0IGNhcHRpb24gPSBzdGFyIFwiY2FwdGlvblwiXG5cbiAgbGV0IHRhYmxleCA/Y2FwdGlvbiA/Y29sdW1ucyA/dGhlYWQgP3Rmb290ID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gb3B0aW9uX2NvbnMgdGhlYWQgKG9wdGlvbl9jb25zIHRmb290IGVsdHMpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBtYXRjaCBjb2x1bW5zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjb250ZW50XG4gICAgICB8IFNvbWUgY29sdW1ucyAtPiBXLmFwcGVuZCBjb2x1bW5zIGNvbnRlbnQgaW5cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIGNhcHRpb24gY29udGVudCBpblxuICAgIFhtbC5ub2RlID9hIFwidGFibGVcIiBjb250ZW50XG5cbiAgbGV0IHRhYmxlID0gdGFibGV4XG5cbiAgbGV0IHRkID0gc3RhciBcInRkXCJcblxuICBsZXQgdGggPSBzdGFyIFwidGhcIlxuXG4gIGxldCB0ciA9IHN0YXIgXCJ0clwiXG5cbiAgbGV0IGNvbGdyb3VwID0gc3RhciBcImNvbGdyb3VwXCJcblxuICBsZXQgY29sID0gdGVybWluYWwgXCJjb2xcIlxuXG4gIGxldCB0aGVhZCA9IHN0YXIgXCJ0aGVhZFwiXG5cbiAgbGV0IHRib2R5ID0gc3RhciBcInRib2R5XCJcblxuICBsZXQgdGZvb3QgPSBzdGFyIFwidGZvb3RcIlxuXG4gIGxldCBpZnJhbWUgPSBzdGFyIFwiaWZyYW1lXCJcblxuICBsZXQgb2JqZWN0XyA/cGFyYW1zID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgZWx0cyA9IG1hdGNoIHBhcmFtcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIGUgLT4gVy5hcHBlbmQgZSBlbHRzIGluXG4gICAgWG1sLm5vZGUgfmEgXCJvYmplY3RcIiBlbHRzXG5cbiAgbGV0IHBhcmFtID0gdGVybWluYWwgXCJwYXJhbVwiXG5cbiAgbGV0IGltZyB+c3JjIH5hbHQgPyhhID0gW10pICgpID1cbiAgICBsZXQgYSA9IChhX3NyYyBzcmMpIDo6IChhX2FsdCBhbHQpIDo6IGEgaW5cbiAgICBYbWwubGVhZiB+YSBcImltZ1wiXG5cbiAgbGV0IHBpY3R1cmUgfmltZyA/YSBlbHRzID1cbiAgICBsZXQgdGFpbF9ub2RlID0gVy5jb25zIGltZyAoVy5uaWwgKCkpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBXLmFwcGVuZCBlbHRzIHRhaWxfbm9kZSBpblxuICAgIFhtbC5ub2RlID9hIFwicGljdHVyZVwiIGNvbnRlbnRcblxuICBsZXQgbWV0YSA9IHRlcm1pbmFsIFwibWV0YVwiXG5cbiAgbGV0IHN0eWxlID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmEgXCJzdHlsZVwiIGVsdHNcblxuICBsZXQgbGluayB+cmVsIH5ocmVmID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9yZWwgcmVsKSA6OiAoYV9ocmVmIGhyZWYpIDo6IGEpIFwibGlua1wiXG5cbiAgbGV0IGJhc2UgPSB0ZXJtaW5hbCBcImJhc2VcIlxuXG4gICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gWG1sIG1vZHVsZSAqKVxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgdHlwZSBkb2MgID0gWyBgSHRtbCBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gPSBmdW5jdGlvblxuICAgIHwgYEFsbG93X2Zvcm1zIC0+IFwiYWxsb3ctZm9ybXNcIlxuICAgIHwgYEFsbG93X3BvaW50ZXJfbG9jayAtPiBcImFsbG93LXBvaW50ZXItbG9ja1wiXG4gICAgfCBgQWxsb3dfcG9wdXBzIC0+IFwiYWxsb3ctcG9wdXBzXCJcbiAgICB8IGBBbGxvd190b3BfbmF2aWdhdGlvbiAtPiBcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCJcbiAgICB8IGBBbGxvd19zYW1lX29yaWdpbiAtPiBcImFsbG93LXNhbWUtb3JpZ2luXCJcbiAgICB8IGBBbGxvd19zY3JpcHQgLT4gXCJhbGxvdy1zY3JpcHRcIlxuXG4gIGxldCBzdHJpbmdfb2ZfbGlua3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBDYW5vbmljYWwgLT4gXCJjYW5vbmljYWxcIlxuICAgIHwgYERuc19wcmVmZXRjaCAtPiBcImRucy1wcmVmZXRjaFwiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE1hbmlmZXN0IC0+IFwibWFuaWZlc3RcIlxuICAgIHwgYE1lIC0+IFwibWVcIlxuICAgIHwgYE1vZHVsZXByZWxvYWQgLT4gXCJtb2R1bGVwcmVsb2FkXCJcbiAgICB8IGBOZXh0IC0+IFwibmV4dFwiXG4gICAgfCBgTm9mb2xsb3cgLT4gXCJub2ZvbGxvd1wiXG4gICAgfCBgTm9vcGVuZXIgLT4gXCJub29wZW5lclwiXG4gICAgfCBgTm9yZWZlcnJlciAtPiBcIm5vcmVmZXJyZXJcIlxuICAgIHwgYE9wZW5lciAtPiBcIm9wZW5lclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlY29ubmVjdCAtPiBcInByZWNvbm5lY3RcIlxuICAgIHwgYFByZWZldGNoIC0+IFwicHJlZmV0Y2hcIlxuICAgIHwgYFByZWxvYWQgLT4gXCJwcmVsb2FkXCJcbiAgICB8IGBQcmVyZW5kZXIgLT4gXCJwcmVyZW5kZXJcIlxuICAgIHwgYFByZXYgLT4gXCJwcmV2XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN0eWxlc2hlZXQgLT4gXCJzdHlsZXNoZWV0XCJcbiAgICB8IGBTaWRlYmFyIC0+IFwic2lkZWJhclwiXG4gICAgfCBgVGFnIC0+IFwidGFnXCJcbiAgICB8IGBVcCAtPiBcInVwXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX21lZGlhZGVzY190b2tlbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYEF1cmFsIC0+IFwiYXVyYWxcIlxuICAgIHwgYEJyYWlsbGUgLT4gXCJicmFpbGxlXCJcbiAgICB8IGBFbWJvc3NlZCAtPiBcImVtYm9zc2VkXCJcbiAgICB8IGBIYW5kaGVsZCAtPiBcImhhbmRoZWxkXCJcbiAgICB8IGBQcmludCAtPiBcInByaW50XCJcbiAgICB8IGBQcm9qZWN0aW9uIC0+IFwicHJvamVjdGlvblwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTcGVlY2ggLT4gXCJzcGVlY2hcIlxuICAgIHwgYFR0eSAtPiBcInR0eVwiXG4gICAgfCBgVHYgLT4gXCJ0dlwiXG4gICAgfCBgUmF3X21lZGlhZGVzYyBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX3JlZmVycmVycG9saWN5ID0gZnVuY3Rpb25cbiAgICB8IGBFbXB0eSAtPiBcIlwiXG4gICAgfCBgTm9fcmVmZXJyZXIgLT4gXCJuby1yZWZlcnJlclwiXG4gICAgfCBgTm9fcmVmZXJyZXJfd2hlbl9kb3duZ3JhZGUgLT4gXCJuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZVwiXG4gICAgfCBgT3JpZ2luIC0+IFwib3JpZ2luXCJcbiAgICB8IGBPcmlnaW5fd2hlbl9jcm9zc19vcmlnaW4gLT4gXCJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFNhbWVfb3JpZ2luIC0+IFwic2FtZS1vcmlnaW5cIlxuICAgIHwgYFN0cmljdF9vcmlnaW4gLT4gXCJzdHJpY3Qtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpblwiXG4gICAgfCBgVW5zYWZlX3VybCAtPiBcInVuc2FmZS11cmxcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgYEFub255bW91cyAtPiBcImFub255bW91c1wiXG4gICAgfCBgQXN5bmMgLT4gXCJhc3luY1wiXG4gICAgfCBgQXV0b2ZvY3VzIC0+IFwiYXV0b2ZvY3VzXCJcbiAgICB8IGBBdXRvcGxheSAtPiBcImF1dG9wbGF5XCJcbiAgICB8IGBDaGVja2VkIC0+IFwiY2hlY2tlZFwiXG4gICAgfCBgRGVmZXIgLT4gXCJkZWZlclwiXG4gICAgfCBgRGlzYWJsZWQgLT4gXCJkaXNhYmxlZFwiXG4gICAgfCBgTXV0ZWQgLT4gXCJtdXRlZFwiXG4gICAgfCBgUmVhZE9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVjdCAtPiBcInJlY3RcIlxuICAgIHwgYFNlbGVjdGVkIC0+IFwic2VsZWN0ZWRcIlxuICAgIHwgYFVzZV9jcmVkZW50aWFscyAtPiBcInVzZS1jcmVkZW50aWFsc1wiXG4gICAgfCBgVzNfb3JnXzE5OTlfeGh0bWwgLT4gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYFByZXNlcnZlIC0+IFwicHJlc2VydmVcIlxuICAgIHwgYERlZmF1bHQgLT4gXCJkZWZhdWx0XCJcbiAgICB8IGBDb250cm9scyAtPiBcImNvbnRyb2xzXCJcbiAgICB8IGBMdHIgLT4gXCJsdHJcIlxuICAgIHwgYFJ0bCAtPiBcInJ0bFwiXG4gICAgfCBgR2V0IC0+IFwiR0VUXCJcbiAgICB8IGBQb3N0IC0+IFwiUE9TVFwiXG4gICAgfCBgRm9ybW5vdmFsaWRhdGUgLT4gXCJmb3Jtbm92YWxpZGF0ZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBJc21hcCAtPiBcImlzbWFwXCJcbiAgICB8IGBMb29wIC0+IFwibG9vcFwiXG4gICAgfCBgTm92YWxpZGF0ZSAtPiBcIm5vdmFsaWRhdGVcIlxuICAgIHwgYE9wZW4gLT4gXCJvcGVuXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTWV0YWRhdGEgLT4gXCJtZXRhZGF0YVwiXG4gICAgfCBgQXVkaW8gLT4gXCJhdWRpb1wiXG4gICAgfCBgUHViZGF0ZSAtPiBcInB1YmRhdGVcIlxuICAgIHwgYFJlcXVpcmVkIC0+IFwicmVxdWlyZWRcIlxuICAgIHwgYFJldmVyc2VkIC0+IFwicmVzZXJ2ZWRcIlxuICAgIHwgYFNjb3BlZCAtPiBcInNjb3BlZFwiXG4gICAgfCBgU2VhbWxlc3MgLT4gXCJzZWFtbGVzc1wiXG4gICAgfCBgQW55IC0+IFwiYW55XCJcbiAgICB8IGBTb2Z0IC0+IFwic29mdFwiXG4gICAgfCBgSGFyZCAtPiBcImhhcmRcIlxuICAgIHwgYENvbnRleHQgLT4gXCJjb250ZXh0XCJcbiAgICB8IGBUb29sYmFyIC0+IFwidG9vbGJhclwiXG4gICAgfCBgQ29tbWFuZCAtPiBcImNvbW1hbmRcIlxuICAgIHwgYENoZWNrYm94IC0+IFwiY2hlY2tib3hcIlxuICAgIHwgYFJhZGlvIC0+IFwicmFkaW9cIlxuICAgIHwgYE11bHRpcGxlIC0+IFwibXVsdGlwbGVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgQ2hhciAtPiBcImNoYXJcIlxuICAgIHwgYFJvdyAtPiBcInJvd1wiXG4gICAgfCBgQ29sIC0+IFwiY29sXCJcbiAgICB8IGBSb3dncm91cCAtPiBcInJvd2dyb3VwXCJcbiAgICB8IGBDb2xncm91cCAtPiBcImNvbGdyb3VwXCJcbiAgICB8IGBHcm91cHMgLT4gXCJncm91cHNcIlxuICAgIHwgYFJvd3MgLT4gXCJyb3dzXCJcbiAgICB8IGBDb2xzIC0+IFwiY29sc1wiXG4gICAgfCBgWmVybyAtPiBcIjBcIlxuICAgIHwgYE9uZSAtPiBcIjFcIlxuICAgIHwgYFllcyAtPiBcInllc1wiXG4gICAgfCBgTm8gLT4gXCJub1wiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYENpcmNsZSAtPiBcImNpcmNsZVwiXG4gICAgfCBgUG9seSAtPiBcInBvbHlcIlxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBFeHRlcm5hbCAtPiBcImV4dGVybmFsXCJcbiAgICB8IGBGaXJzdCAtPiBcImZpcnN0XCJcbiAgICB8IGBIZWxwIC0+IFwiaGVscFwiXG4gICAgfCBgSWNvbiAtPiBcImljb25cIlxuICAgIHwgYEluZGV4IC0+IFwiaW5kZXhcIlxuICAgIHwgYExhc3QgLT4gXCJsYXN0XCJcbiAgICB8IGBMaWNlbnNlIC0+IFwibGljZW5zZVwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBQaW5nYmFjayAtPiBcInBpbmdiYWNrXCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgVmVyYmF0aW0gLT4gXCJ2ZXJiYXRpbVwiXG4gICAgfCBgTGF0aW4gLT4gXCJsYXRpblwiXG4gICAgfCBgTGF0aW5fbmFtZSAtPiBcImxhdGluLW5hbWVcIlxuICAgIHwgYExhdGluX3Byb3NlIC0+IFwibGF0aW4tcHJvc2VcIlxuICAgIHwgYEZ1bGxfd2lkdGhfbGF0aW4gLT4gXCJmdWxsLXdpZHRoLWxhdGluXCJcbiAgICB8IGBLYW5hIC0+IFwia2FuYVwiXG4gICAgfCBgS2F0YWthbmEgLT4gXCJrYXRha2FuYVwiXG4gICAgfCBgTnVtZXJpYyAtPiBcIm51bWVyaWNcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgVXJsIC0+IFwidXJsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgRGVjaW1hbCAtPiBcImRlY2ltYWxcIlxuICAgIHwgYE90aGVyIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfaW5wdXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBgQnV0dG9uIC0+IFwiYnV0dG9uXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBDb2xvciAtPiBcImNvbG9yXCJcbiAgICB8IGBEYXRlIC0+IFwiZGF0ZVwiXG4gICAgfCBgRGF0ZXRpbWUgLT4gXCJkYXRldGltZVwiXG4gICAgfCBgRGF0ZXRpbWVfbG9jYWwgLT4gXCJkYXRldGltZS1sb2NhbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgRmlsZSAtPiBcImZpbGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSW1hZ2UgLT4gXCJpbWFnZVwiXG4gICAgfCBgTW9udGggLT4gXCJtb250aFwiXG4gICAgfCBgTnVtYmVyIC0+IFwibnVtYmVyXCJcbiAgICB8IGBQYXNzd29yZCAtPiBcInBhc3N3b3JkXCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBSYW5nZSAtPiBcInJhbmdlXCJcbiAgICB8IGBSZWFkb25seSAtPiBcInJlYWRvbmx5XCJcbiAgICB8IGBSZXNldCAtPiBcInJlc2V0XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN1Ym1pdCAtPiBcInN1Ym1pdFwiXG4gICAgfCBgVGVsIC0+IFwidGVsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgVGltZSAtPiBcInRpbWVcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgV2VlayAtPiBcIndlZWtcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2NyaXB0X3R5cGUgPSBmdW5jdGlvblxuICB8IGBKYXZhc2NyaXB0IC0+IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiXG4gIHwgYE1vZHVsZSAtPiBcIm1vZHVsZVwiXG4gIHwgYE1pbWUgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgPSBmdW5jdGlvblxuICAgIHwgYE51bWJlciBuIC0+IHN0cmluZ19vZl9pbnQgblxuICAgIHwgYERhdGV0aW1lIHQgLT4gdFxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcmFjdGVyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IG9ub2ZmX29mX2Jvb2wgPSBmdW5jdGlvblxuICAgIHwgZmFsc2UgLT4gXCJvZmZcIlxuICAgIHwgdHJ1ZSAtPiBcIm9uXCJcblxuICBsZXQgdW5vcHRpb25fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IFwiXCJcblxuICBsZXQgc3RyaW5nX29mX3N0ZXAgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IE5vbmUgLT4gXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2l6ZXMgPSBmdW5jdGlvblxuICAgIHwgU29tZSBsIC0+XG4gICAgICBTdHJpbmcuY29uY2F0IFwiIFwiXG4gICAgICAgIChMaXN0Lm1hcCAoZnVuICh4LCB5KSAtPiBQcmludGYuc3ByaW50ZiBcIiVkeCVkXCIgeCB5KSBsKVxuICAgIHwgTm9uZSAtPlxuICAgICAgXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2FuZGJveCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbnVtYmVyIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2MgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlcyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbGlua3R5cGUgbClcblxuICB0eXBlIGltYWdlX2NhbmRpZGF0ZSA9XG4gICAgWyBgVXJsIG9mIFhtbC51cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgWG1sLnVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLmZsb2F0X251bWJlciBdXG5cbiAgbGV0IHN0cmluZ19vZl9zcmNzZXQgKGwgOiBbPCBpbWFnZV9jYW5kaWRhdGVdIGxpc3QpID1cbiAgICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgfCBgVXJsIHVybCAtPiBYbWwuc3RyaW5nX29mX3VyaSB1cmxcbiAgICB8IGBVcmxfd2lkdGggKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN3XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKHN0cmluZ19vZl9udW1iZXIgdilcbiAgICB8IGBVcmxfcGl4ZWwgKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN4XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIChsIDogSHRtbF90eXBlcy5hdXRvY29tcGxldGVfb3B0aW9uKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBgT24gfCBgVG9rZW5zIFtdIC0+IFwib25cIlxuICAgIHwgYE9mZiAtPiBcIm9mZlwiXG4gICAgfCBgVG9rZW5zIHN0cnMgLT4gU3RyaW5nLmNvbmNhdCBcIiBcIiBzdHJzXG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsICdiKSBXLmZ0ID0gJ2EgLT4gJ2IpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuICBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnMoWG1sKShXcmFwcGVkX2Z1bmN0aW9ucyhYbWwpKShTdmcpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuXG5tb2R1bGUgTSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBsaXN0XG5cbiAgdHlwZSB1cmkgPSBzdHJpbmdcbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIHNlcGFyYXRvciA9IFNwYWNlIHwgQ29tbWFcblxuICAoKiogQXR0cmlidXRlcyAqKVxuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcbiAgdHlwZSBhY29udGVudCA9XG4gICAgfCBBRmxvYXQgb2YgZmxvYXRcbiAgICB8IEFJbnQgb2YgaW50XG4gICAgfCBBU3RyIG9mIHN0cmluZ1xuICAgIHwgQVN0ckwgb2Ygc2VwYXJhdG9yICogc3RyaW5nIGxpc3RcbiAgdHlwZSBhdHRyaWIgPSBhbmFtZSAqIGFjb250ZW50XG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG5cbiAgbGV0IGFjb250ZW50IChfLCBhKSA9IGFcbiAgbGV0IGFuYW1lIChuYW1lLCBfKSA9IG5hbWVcblxuICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBRmxvYXQgdmFsdWVcbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFJbnQgdmFsdWVcbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoQ29tbWEsIHZhbHVlcylcbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChTcGFjZSwgdmFsdWVzKVxuXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG4gIHR5cGUgZWNvbnRlbnQgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbW1lbnQgb2Ygc3RyaW5nXG4gICAgfCBFbmNvZGVkUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgRW50aXR5IG9mIHN0cmluZ1xuICAgIHwgTGVhZiBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0XG4gICAgfCBOb2RlIG9mIGVuYW1lICogYXR0cmliIGxpc3QgKiBlY29udGVudCBsaXN0XG5cbiAgdHlwZSBlbHQgPSAgZWNvbnRlbnRcblxuICBsZXQgY29udGVudCBlbHQgPSBlbHRcblxuICBsZXQgZW1wdHkgKCkgPSBFbXB0eVxuXG4gIGxldCBjb21tZW50IGMgPSBDb21tZW50IGNcblxuICBsZXQgcGNkYXRhIGQgPSBQQ0RBVEEgZFxuICBsZXQgZW5jb2RlZHBjZGF0YSBkID0gRW5jb2RlZFBDREFUQSBkXG4gIGxldCBlbnRpdHkgZSA9IEVudGl0eSBlXG5cbiAgKCogRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvIG5vdCBhbGxvdyBcIl1dPlwiIGluc2lkZSBDREFUQVxuICAgICAoYXMgdGhpcyBzdHJpbmcgaXMgdG8gYmUgY29uc2lkZXJlZCBhcyB0aGUgZW5kIG9mIHRoZSBjZGF0YSlcbiAgKilcbiAgbGV0IHJlX2VuZF9jZGF0YSA9IFJlLihjb21waWxlIEBAIHN0ciBcIl1dPlwiKVxuICBsZXQgZW5jb2RlZF9jZGF0YSBzMSBzMiBzID1cbiAgICBlbmNvZGVkcGNkYXRhXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJcXG4lc1xcbiVzXFxuJXNcXG5cIlxuICAgICAgICAgczFcbiAgICAgICAgIChSZS5yZXBsYWNlX3N0cmluZyB+YWxsOnRydWUgcmVfZW5kX2NkYXRhIH5ieTpcIlwiIHMpXG4gICAgICAgICBzMiApXG5cbiAgbGV0IGNkYXRhID0gZW5jb2RlZF9jZGF0YSBcIjwhW0NEQVRBW1wiIFwiXV0+XCJcbiAgbGV0IGNkYXRhX3NjcmlwdCA9IGVuY29kZWRfY2RhdGEgXCIvLzwhW0NEQVRBW1wiIFwiLy9dXT5cIlxuICBsZXQgY2RhdGFfc3R5bGUgPSBlbmNvZGVkX2NkYXRhIFwiLyogPCFbQ0RBVEFbICovXCIgXCIvKiBdXT4gKi9cIlxuXG4gIGxldCBsZWFmID8oYT1bXSkgbmFtZSA9IExlYWYgKG5hbWUsIGEpXG4gIGxldCBub2RlID8oYT1bXSkgbmFtZSBjaGlsZHJlbiA9IE5vZGUgKG5hbWUsIGEsIGNoaWxkcmVuKVxuXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX3NpbXBsZShNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5pbmNsdWRlIFhtbF9pdGVyLk1ha2UoTSlcbmluY2x1ZGUgWG1sX3ByaW50Lk1ha2VfZm10KE0pKHN0cnVjdCBsZXQgZW1wdHl0YWdzID0gW10gZW5kKVxuXG5pbmNsdWRlIFhtbF9zdHJlYW0uSW1wb3J0KE0pXG5sZXQgcHJpbnQgZm10IHggPSBwcmludF9saXN0IH5vdXRwdXQ6KEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10KSBbeF1cbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gU3ZnX2YuTWFrZShUeXhtbF94bWwpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE0gPSBIdG1sX2YuTWFrZShUeXhtbF94bWwpKFR5eG1sX3N2Zylcbm1vZHVsZSBQID0gWG1sX3ByaW50Lk1ha2VfdHlwZWRfZm10KFR5eG1sX3htbCkoTSlcbm1vZHVsZSBNYWtlX3ByaW50ZXIgPSBYbWxfcHJpbnQuTWFrZV90eXBlZChUeXhtbF94bWwpKE0pXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogUmVhY3RpdmVEYXRhXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaGh1Z28vcmVhY3RpdmVEYXRhXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdmFsIG1lcmdlIDogJ2EgcGF0Y2ggLT4gJ2EgZGF0YSAtPiAnYSBkYXRhXG4gIHZhbCBtYXBfcGF0Y2ggOiAoJ2EgLT4gJ2IpIC0+ICdhIHBhdGNoIC0+ICdiIHBhdGNoXG4gIHZhbCBtYXBfZGF0YSA6ICgnYSAtPiAnYikgLT4gJ2EgZGF0YSAtPiAnYiBkYXRhXG4gIHZhbCBlbXB0eSA6ICdhIGRhdGFcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiBib29sXG4gIHZhbCBkaWZmIDogZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiAnYSBwYXRjaFxuZW5kXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGRhdGFcbiAgdHlwZSAnYSBwYXRjaFxuICB0eXBlICdhIG1zZyA9IFBhdGNoIG9mICdhIHBhdGNoIHwgU2V0IG9mICdhIGRhdGFcbiAgdHlwZSAnYSBoYW5kbGVcbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgY3JlYXRlIDogJ2EgZGF0YSAtPiAnYSB0ICogJ2EgaGFuZGxlXG4gIHZhbCBmcm9tX2V2ZW50IDogJ2EgZGF0YSAtPiAnYSBtc2cgUmVhY3QuRS50IC0+ICdhIHRcbiAgdmFsIGZyb21fc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIFJlYWN0LlMudCAtPiAnYSB0XG4gIHZhbCBjb25zdCA6ICdhIGRhdGEgLT4gJ2EgdFxuICB2YWwgcGF0Y2ggOiAnYSBoYW5kbGUgLT4gJ2EgcGF0Y2ggLT4gdW5pdFxuICB2YWwgc2V0ICAgOiAnYSBoYW5kbGUgLT4gJ2EgZGF0YSAtPiB1bml0XG4gIHZhbCBtYXBfbXNnIDogKCdhIC0+ICdiKSAtPiAnYSBtc2cgLT4gJ2IgbXNnXG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhIGRhdGFcbiAgdmFsIGZvbGQgOiAoJ2EgLT4gJ2IgbXNnIC0+ICdhKSAtPiAnYiB0IC0+ICdhIC0+ICdhIFJlYWN0LnNpZ25hbFxuICB2YWwgc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIGRhdGEgUmVhY3QuUy50XG4gIHZhbCBldmVudCA6ICdhIHQgLT4gJ2EgbXNnIFJlYWN0LkUudFxuZW5kXG5cbm1vZHVsZSBNYWtlKEQgOiBEQVRBKSA6XG4gIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBELmRhdGFcbiAgICAgYW5kIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoID0gc3RydWN0XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoXG4gIGxldCBtZXJnZSA9IEQubWVyZ2VcbiAgbGV0IG1hcF9wYXRjaCA9IEQubWFwX3BhdGNoXG4gIGxldCBtYXBfZGF0YSA9IEQubWFwX2RhdGFcblxuICB0eXBlICdhIG1zZyA9XG4gICAgfCBQYXRjaCBvZiAnYSBwYXRjaFxuICAgIHwgU2V0IG9mICdhIGRhdGFcblxuICB0eXBlICdhIGhhbmRsZSA9ID9zdGVwOlJlYWN0LnN0ZXAgLT4gJ2EgbXNnIC0+IHVuaXRcblxuICB0eXBlICdhIG11dCA9IHtcbiAgICBjdXJyZW50IDogJ2EgZGF0YSByZWY7XG4gICAgZXZlbnQgOiAnYSBtc2cgUmVhY3QuRS50O1xuICB9XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IENvbnN0IG9mICdhIGRhdGFcbiAgICB8IE11dCBvZiAnYSBtdXRcblxuICBsZXQgZW1wdHkgPSBDb25zdCBELmVtcHR5XG5cbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBsZXQgaW5pdGlhbF9ldmVudCxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fSxzZW5kXG5cbiAgbGV0IGZyb21fZXZlbnQgbCBpbml0aWFsX2V2ZW50ID1cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fVxuXG4gIGxldCBjb25zdCB4ID0gQ29uc3QgeFxuXG4gIGxldCBtYXBfbXNnIChmIDogJ2EgLT4gJ2IpIDogJ2EgbXNnIC0+ICdiIG1zZyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgbCAtPiBTZXQgKG1hcF9kYXRhIGYgbClcbiAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKG1hcF9wYXRjaCBmIHApXG5cbiAgbGV0IG1hcCBmIHMgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgeCAtPiBDb25zdCAobWFwX2RhdGEgZiB4KVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIChtYXBfZGF0YSBmICEocy5jdXJyZW50KSkgaW5cbiAgICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgICAgbGV0IG1zZyA9IG1hcF9tc2cgZiBtc2cgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIG1zZykgcy5ldmVudCBpblxuICAgICAgTXV0IHtjdXJyZW50IDtldmVudH1cblxuICBsZXQgdmFsdWUgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBjXG4gICAgfCBNdXQgcyAtPiAhKHMuY3VycmVudClcblxuICBsZXQgZXZlbnQgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgXyAtPiBSZWFjdC5FLm5ldmVyXG4gICAgfCBNdXQgcyAtPiBzLmV2ZW50XG5cbiAgbGV0IHBhdGNoIChzIDogJ2EgaGFuZGxlKSBwID0gcyAoUGF0Y2ggcClcblxuICBsZXQgc2V0IChzIDogJ2EgaGFuZGxlKSBwID0gcyAoU2V0IHApXG5cbiAgbGV0IGZvbGQgZiBzIGFjYyA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgKGYgYWNjIChTZXQgYykpXG4gICAgfCBNdXQgcyAtPlxuICAgICAgbGV0IGFjYyA9IGYgYWNjIChTZXQgKCEocy5jdXJyZW50KSkpIGluXG4gICAgICBSZWFjdC5TLmZvbGQgZiBhY2Mgcy5ldmVudFxuXG4gIGxldCBzaWduYWwgPyhlcSA9ICg9KSkgKHMgOiAnYSB0KSA6ICdhIGRhdGEgUmVhY3QuUy50ID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gUmVhY3QuUy5jb25zdCBjXG4gICAgfCBNdXQgcyAtPlxuICAgICAgUmVhY3QuUy5mb2xkIH5lcTooRC5lcXVhbCBlcSkgKGZ1biBsIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBsXG4gICAgICAgICAgfCBQYXRjaCBwIC0+IG1lcmdlIHAgbCkgKCEocy5jdXJyZW50KSkgcy5ldmVudFxuXG4gIGxldCBmcm9tX3NpZ25hbCA/KGVxID0gKD0pKSBzID1cbiAgICBsZXQgZiBkJyBkID0gUGF0Y2ggKEQuZGlmZiB+ZXEgZCBkJykgaW5cbiAgICBmcm9tX2V2ZW50IChSZWFjdC5TLnZhbHVlIHMpIChSZWFjdC5TLmRpZmYgZiBzKVxuXG5lbmRcblxubW9kdWxlIERhdGFMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZGF0YSA9ICdhIGxpc3RcbiAgdHlwZSAnYSBwID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBtYXBfZGF0YSA9IExpc3QubWFwXG4gIGxldCBtYXBfcGF0Y2ggZiA9IGZ1bmN0aW9uXG4gICAgfCBJIChpLHgpIC0+IEkgKGksIGYgeClcbiAgICB8IFIgaSAtPiBSIGlcbiAgICB8IFggKGksaikgLT4gWCAoaSxqKVxuICAgIHwgVSAoaSx4KSAtPiBVIChpLGYgeClcbiAgbGV0IG1hcF9wYXRjaCBmID0gTGlzdC5tYXAgKG1hcF9wYXRjaCBmKVxuXG4gIGxldCBtZXJnZV9wIG9wIGwgPVxuICAgIG1hdGNoIG9wIHdpdGhcbiAgICB8IEkgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyAxICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHJlYyBhdXggYWNjIG4gbCA9IG1hdGNoIG4sbCB3aXRoXG4gICAgICAgIHwgMCxsIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgKHg6OmwpXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFIgaScgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsXzo6bCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIGxcbiAgICAgICAgfCBfLFtdIC0+IGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCJcbiAgICAgICAgfCBuLHg6OnhzIC0+IGF1eCAoeDo6YWNjKSAocHJlZCBuKSB4c1xuICAgICAgaW4gYXV4IFtdIGkgbFxuICAgIHwgVSAoaScseCkgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICBhLihpKSA8LSB4O1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG4gICAgfCBYIChpJyxvZmZzZXQpIC0+XG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIGxlbiArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCB2ID0gYS4oaSkgaW5cbiAgICAgIGlmIG9mZnNldCA+IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgKGkgKyBvZmZzZXQgPj0gbGVuKSB0aGVuIGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCI7XG4gICAgICAgIGZvciBqID0gaSB0byBpICsgb2Zmc2V0IC0gMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogKyAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0IDwgMCkgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgZG93bnRvIGkgKyBvZmZzZXQgKyAxIGRvXG4gICAgICAgICAgYS4oaikgPC0gYS4oaiAtIDEpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGEuKGkrb2Zmc2V0KSA8LSB2XG4gICAgICBlbmQ7XG4gICAgICBBcnJheS50b19saXN0IGFcblxuICAoKiBhY2N1bXVsYXRlcyBpbnRvIGFjYyBpIHVubW9kaWZpZWQgZWxlbWVudHMgZnJvbSBsICopXG4gIGxldCByZWMgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIGkgbCA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPiAwIHRoZW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IGwgLT5cbiAgICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIDEpIGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJpbnZhbGlkIGluZGV4XCJcbiAgICBlbHNlXG4gICAgICBsLCBhY2NcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZSB+YWNjIGkwIHAgbCA9XG4gICAgbGV0IGwsIGFjYyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IF8gd2hlbiBpID4gaTAgLT5cbiAgICAgICAgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIChpIC0gaTApIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBsLCBhY2NcbiAgICBpblxuICAgIG1hdGNoIHAsIGwgd2l0aFxuICAgIHwgSSAoaSwgeCkgOjogcCwgXyAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBSIGkgOjogcCwgXyA6OiBsIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgbFxuICAgIHwgUiBfIDo6IF8sIFtdIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIm1lcmdlOiBpbnZhbGlkIGluZGV4XCJcbiAgICB8IFUgKGksIHgpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBVIChfLCBfKSA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBbXSwgbCAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgfCBYIChfLCBfKSA6OiBfLCBfIC0+XG4gICAgICBmYWlsd2l0aCBcImxpbmVhcl9tZXJnZTogWCBub3Qgc3VwcG9ydGVkXCJcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZWFibGUgfm4gcCA9XG4gICAgYXNzZXJ0IChuID49IDApO1xuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IHAgd2hlbiBpID49IG4gLT5cbiAgICAgICgqIG5lZ2F0aXZlIGkncyBydWxlZCBvdXQgKGFtb25nIG90aGVycykgKilcbiAgICAgIGxpbmVhcl9tZXJnZWFibGUgfm46aSBwXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBbXSAtPlxuICAgICAgdHJ1ZVxuXG4gIGxldCBtZXJnZSBwIGwgPVxuICAgIGlmIGxpbmVhcl9tZXJnZWFibGUgfm46MCBwIHRoZW5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjOltdIDAgcCBsXG4gICAgZWxzZVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT4gbWVyZ2VfcCB4IGwpIGwgcFxuXG4gIGxldCByZWMgZXF1YWwgZiBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiB3aGVuIGYgeDEgeDIgLT5cbiAgICAgIGVxdWFsIGYgbDEgbDJcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgXyA6OiBfICwgXyA6OiBfXG4gICAgfCBfIDo6IF8gLCBbXVxuICAgIHwgW10gICAgICwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCBtZW0gKHR5cGUgdSkgbCA9XG4gICAgbGV0IG1vZHVsZSBIID1cbiAgICAgIEhhc2h0YmwuTWFrZVxuICAgICAgICAoc3RydWN0IHR5cGUgdCA9IHUgbGV0IGhhc2ggPSBIYXNodGJsLmhhc2ggbGV0IGVxdWFsID0gKD09KSBlbmQpIGluXG4gICAgbGV0IGggPSBILmNyZWF0ZSAxNiBpblxuICAgIExpc3QuaXRlciAoZnVuIHggLT4gSC5hZGQgaCB4ICgpKSBsO1xuICAgIEgubWVtIGhcblxuICBsZXQgZm9sZF9kaWZmID8oZXEgPSAoPSkpIH5hY2MgfnJlbW92ZSB+YWRkIGx4IGx5ID1cbiAgICBsZXQgbWVteCA9IG1lbSBseFxuICAgIGFuZCBtZW15ID0gbWVtIGx5IGluXG4gICAgbGV0IHJlYyBmIH5hY2MgfmxlZnQgbHggbHkgbiA9XG4gICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICAgfCBfIDo6IGx4LCBbXSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBbXSBuXG4gICAgICAoKiB0cmFpbGluZyBlbGVtZW50cyB0byBiZSBhZGRlZCAqKVxuICAgICAgfCBbXSwgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IFtdIGx5IChuICsgMSlcbiAgICAgICgqIGRvbmUhICopXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBhY2NcbiAgICAgICgqIHNhbWUgKilcbiAgICAgIHwgeCA6OiBseCwgeSA6OiBseSB3aGVuIGVxIHggeSAtPlxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgKG4gKyAxKVxuICAgICAgKCogeCBuZWVkcyB0byBiZSByZW1vdmVkIGZvciBzdXJlICopXG4gICAgICB8IHggOjogbHgsIF8gOjogXyB3aGVuIG5vdCAobWVteSB4KSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSBuXG4gICAgICAoKiB5IG5lZWRzIHRvIGJlIGFkZGVkIGZvciBzdXJlICopXG4gICAgICB8IF8gOjogXywgeSA6OiBseSB3aGVuIG5vdCAobWVteCB5KSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIG5vIG1vcmUgY2VydGFpbnR5LCB+bGVmdCBkZWNpZGVzIHdoYXQgdG8gcmVjdXIgb24gKilcbiAgICAgIHwgXyA6OiBseCwgXyA6OiBfIHdoZW4gbGVmdCAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDpmYWxzZSBseCBseSBuXG4gICAgICB8IF8gOjogXywgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgKG4gKyAxKVxuICAgIGluXG4gICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgMFxuXG4gIGxldCByZWMgbGlzdF9yZXYgPyhhY2MgPSBbXSkgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgYWNjID0gaCA6OiBhY2MgaW5cbiAgICAgIGxpc3RfcmV2IH5hY2MgdFxuICAgIHwgW10gLT5cbiAgICAgIGFjY1xuXG4gIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgIGxldCBhZGQgYWNjIGkgdiA9IEkgKGksIHYpIDo6IGFjY1xuICAgIGFuZCByZW1vdmUgYWNjIGkgPSBSIGkgOjogYWNjXG4gICAgYW5kIGFjYyA9IFtdIGluXG4gICAgbGlzdF9yZXYgKGZvbGRfZGlmZiB+ZXEgfmFjYyB+YWRkIH5yZW1vdmUgeCB5KVxuXG5lbmRcblxubW9kdWxlIFJMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRGF0YUxpc3QpXG4gIG1vZHVsZSBEID0gRGF0YUxpc3RcbiAgdHlwZSAnYSBwID0gJ2EgRC5wID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuXG4gIGxldCBjb25zIHggcyA9IHBhdGNoIHMgW0QuSSAoMCx4KV1cbiAgbGV0IHNub2MgeCBzID0gcGF0Y2ggcyBbRC5JICgtMSx4KV1cbiAgbGV0IGluc2VydCB4IGkgcyA9IHBhdGNoIHMgW0QuSSAoaSx4KV1cbiAgbGV0IHVwZGF0ZSB4IGkgcyA9IHBhdGNoIHMgW0QuVSAoaSx4KV1cbiAgbGV0IG1vdmUgaSBqIHMgPSBwYXRjaCBzIFtELlggKGksaildXG4gIGxldCByZW1vdmUgaSBzID0gcGF0Y2ggcyBbRC5SIGldXG5cbiAgbGV0IGluZGV4ID8oZXEgPSAoPSkpIGwgeCA9XG4gICAgbGV0IHJlYyBmIG4gPSBmdW5jdGlvblxuICAgICAgfCBoZCA6OiBfIHdoZW4gZXEgaGQgeCAtPiBuXG4gICAgICB8IF8gOjogdGwgLT4gZiAobiArIDEpIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIGluXG4gICAgZiAwIGxcblxuICBsZXQgdXBkYXRlX2VxID9lcSAoZGF0YSwgaGFuZGxlKSB4IHkgPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgdXBkYXRlIHkgaSBoYW5kbGVcblxuICBsZXQgcmVtb3ZlX2xhc3QgKGRhdGEsIGhhbmRsZSkgPVxuICAgIHJlbW92ZSAoTGlzdC5sZW5ndGggKHZhbHVlIGRhdGEpIC0gMSkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCA9XG4gICAgbGV0IGkgPSBpbmRleCA/ZXEgKHZhbHVlIGRhdGEpIHggaW5cbiAgICByZW1vdmUgaSBoYW5kbGVcblxuICBsZXQgc2luZ2xldG9uIHggPSBjb25zdCBbeF1cblxuICBsZXQgc2luZ2xldG9uX3MgcyA9XG4gICAgbGV0IGZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBsZXQgZSxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZnJvbV9ldmVudCBbXSBlIGluXG4gICAgbGV0IF8gPSBSZWFjdC5TLm1hcCAoZnVuIHggLT5cbiAgICAgICAgaWYgIWZpcnN0XG4gICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICBmaXJzdDo9ZmFsc2U7XG4gICAgICAgICAgc2VuZCAoUGF0Y2ggW0koMCx4KV0pXG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIHNlbmQgKFBhdGNoIFtVKDAseCldKSkgcyBpblxuICAgIHJlc3VsdFxuXG4gIGxldCBjb25jYXQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCA9IGZ1biB4IHkgLT5cbiAgICBsZXQgdjEgPSB2YWx1ZSB4XG4gICAgYW5kIHYyID0gdmFsdWUgeSBpblxuICAgIGxldCBzaXplMSA9IHJlZiAwXG4gICAgYW5kIHNpemUyID0gcmVmIDAgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3BhdGNoIHNpemV4IDogJ2EgRC5wIC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCAoRC5JIF8pIC0+IGluY3Igc2l6ZXhcbiAgICAgIHwgKEQuUiBfKSAtPiBkZWNyIHNpemV4XG4gICAgICB8IChELlggXyB8IEQuVSBfKSAtPiAoKSBpblxuICAgIGxldCBzaXplX3dpdGhfc2V0IHNpemV4IGwgPSBzaXpleDo9TGlzdC5sZW5ndGggbCBpblxuXG4gICAgc2l6ZV93aXRoX3NldCBzaXplMSB2MTtcbiAgICBzaXplX3dpdGhfc2V0IHNpemUyIHYyO1xuXG4gICAgbGV0IHVwZGF0ZV9wYXRjaDEgPSBMaXN0Lm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbGV0IG0gPSBtYXRjaCBwIHdpdGhcbiAgICAgICAgICB8IEQuSSAocG9zLHgpIC0+XG4gICAgICAgICAgICBsZXQgaSA9IGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgIEQuSSAoaSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSAtICFzaXplMiBlbHNlIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMSBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB1cGRhdGVfcGF0Y2gyID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPiBELkkgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSBlbHNlICFzaXplMSArIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMiBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB0dXBsZV9ldiA9XG4gICAgICBSZWFjdC5FLm1lcmdlIChmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBhY2MseCB3aXRoXG4gICAgICAgICAgfCAoTm9uZSxwMiksYEUxIHggLT4gU29tZSB4LHAyXG4gICAgICAgICAgfCAocDEsTm9uZSksYEUyIHggLT4gcDEsIFNvbWUgeFxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChOb25lLE5vbmUpXG4gICAgICAgIFtSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUxIGUpIChldmVudCB4KTtcbiAgICAgICAgIFJlYWN0LkUubWFwIChmdW4gZSAtPiBgRTIgZSkgKGV2ZW50IHkpXSBpblxuICAgIGxldCBtZXJnZWRfZXYgPSBSZWFjdC5FLm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBwMjtcbiAgICAgICAgICBTZXQgKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgTm9uZSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgU2V0IChwMSBAIHZhbHVlIHkpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0ICh2YWx1ZSB4IEAgcDIgKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIHAxKSwgU29tZSAoUGF0Y2ggcDIpIC0+XG4gICAgICAgICAgbGV0IHAxID0gdXBkYXRlX3BhdGNoMSBwMSBpblxuICAgICAgICAgIGxldCBwMiA9IHVwZGF0ZV9wYXRjaDIgcDIgaW5cbiAgICAgICAgICBQYXRjaCAocDEgQCBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIE5vbmUgLT4gUGF0Y2ggKHVwZGF0ZV9wYXRjaDEgcDEpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoUGF0Y2ggcDIpIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gyIHAyKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIF8pLCBTb21lIChTZXQgczIpIC0+XG4gICAgICAgICAgbGV0IHMxID0gdmFsdWUgeCBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBzMjtcbiAgICAgICAgICBTZXQoczEgQCBzMilcbiAgICAgICAgfCBTb21lIChTZXQgczEpLCBTb21lIChQYXRjaCBfKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgbGV0IHMyID0gdmFsdWUgeSBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgTm9uZSxOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKSB0dXBsZV9ldiBpblxuICAgIGZyb21fZXZlbnQgKHYxIEAgdjIpIG1lcmdlZF9ldlxuXG4gIGxldCBpbnZlcnNlIDogJ2EgLiAnYSBwIC0+ICdhIHAgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJKC1pLTEsIHgpXG4gICAgfCBVIChpLHgpIC0+IFUoLWktMSwgeClcbiAgICB8IFIgaSAtPiBSICgtaS0xKVxuICAgIHwgWCAoaSxqKSAtPiBYICgtaS0xLC1qKVxuXG4gIGxldCByZXYgdCA9XG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXQgbCAtPiBTZXQgKExpc3QucmV2IGwpXG4gICAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5tYXAgaW52ZXJzZSBwKSkgIChldmVudCB0KVxuICAgIGluXG4gICAgZnJvbV9ldmVudCAoTGlzdC5yZXYgKHZhbHVlIHQpKSBlXG5cbiAgbGV0IGZpbHRlciBwcmVkIGwgPVxuICAgIGxldCBtb2R1bGUgSW50TWFwID0gTWFwLk1ha2UoSW50KSBpblxuXG4gICAgbGV0IGluZGV4ID0gcmVmIEludE1hcC5lbXB0eSBpblxuICAgIGxldCBzaXplID0gcmVmIDAgaW5cblxuICAgIGxldCBmaWx0ZXJfbGlzdCBsID1cbiAgICAgIGxldCByZWMgYXV4IChsOiAnYSBsaXN0KSByZXMgdGhlaXJfaSBteV9pID0gbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmVzXG4gICAgICAgIHwgeDo6eHMgLT5cbiAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0aGVpcl9pIChteV9pICsgMSkgIWluZGV4O1xuICAgICAgICAgICAgICAgYXV4IHhzICh4OjpyZXMpICh0aGVpcl9pICsgMSkgKG15X2kgKyAxKVxuICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGF1eCB4cyByZXMgKHRoZWlyX2kgKyAxKSBteV9pXG4gICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2l6ZSA6PSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgaW5kZXggOj0gSW50TWFwLmVtcHR5O1xuICAgICAgTGlzdC5yZXYgKGF1eCBsIFtdIDAgKC0xKSlcbiAgICBpblxuXG4gICAgbGV0IG5vcm1hbGlzZSBpID0gaWYgaSA8IDAgdGhlbiAhc2l6ZSArIDEgKyBpIGVsc2UgaSBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9pbnNlcnQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgdmlzaWJsZSA9XG4gICAgICBsZXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgPSBub3JtYWxpc2UgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBkaXNwbGFjZWQsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRhYmxlcyA9IG1hdGNoIGRpc3BsYWNlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB1cGRhdGFibGVzXG4gICAgICAgIHwgU29tZSBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgLT5cbiAgICAgICAgICAgSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgdXBkYXRhYmxlc1xuICAgICAgaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2pfZmlsdGVyZWQgPSBpZiB2aXNpYmxlIHRoZW4gal9maWx0ZXJlZF9saXN0ICsgMSBlbHNlIGpfZmlsdGVyZWRfbGlzdCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChqX2Z1bGxfbGlzdCArIDEpIG5ld19qX2ZpbHRlcmVkICFpbmRleFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXMgaW5cbiAgICAgIGxldCBpbnNlcnRfcG9zX2ZpbHRlcmVkID0gaWYgSW50TWFwLmlzX2VtcHR5IGxlZnRfYWxvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSArIDFcbiAgICAgIGluXG4gICAgICBpZiB2aXNpYmxlIHRoZW4gaW5kZXggOj0gSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBpbnNlcnRfcG9zX2ZpbHRlcmVkICFpbmRleDtcbiAgICAgIGluY3Igc2l6ZTtcbiAgICAgIGluc2VydF9wb3NfZmlsdGVyZWRcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9yZW1vdmUgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gSW50TWFwLm1lbSByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCBfLF8sdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2ogPSBpZiB3YXNfdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCBlbHNlIGpfZmlsdGVyZWRfbGlzdCAtIDEgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgLSAxKSBuZXdfaiAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpZiBub3QgKEludE1hcC5pc19lbXB0eSAhaW5kZXgpXG4gICAgICB0aGVuXG4gICAgICAgIGxldCBsYXN0X2ksIF8gPSBJbnRNYXAubWF4X2JpbmRpbmcgIWluZGV4IGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgbGFzdF9pICFpbmRleFxuICAgICAgZWxzZSAoKTtcbiAgICAgIGRlY3Igc2l6ZTtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfZGVsZXRlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBfLCBfLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgal9mdWxsX2xpc3QgKGpfZmlsdGVyZWRfbGlzdCAtIDEpICFpbmRleFxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4O1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlc1xuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IGxlZnRfYWxvbmUsIG5vbmUsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBhc3NlcnQgKG5vbmUgPSBOb25lKTtcbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgKyAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3Bvc19maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IHByZXZpb3VzX3Bvc19maWx0ZXJlZCA9IHRyeSAoc25kIChJbnRNYXAubWF4X2JpbmRpbmcgbGVmdF9hbG9uZSkpIHdpdGggTm90X2ZvdW5kIC0+ICgtMSkgaW5cbiAgICAgICAgcHJldmlvdXNfcG9zX2ZpbHRlcmVkICsgMVxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgbmV3X3Bvc19maWx0ZXJlZF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXM7XG4gICAgICBuZXdfcG9zX2ZpbHRlcmVkX2xpc3RcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9tb3ZlIGZyb21fZnVsbF9saXN0IHRvX2Z1bGxfbGlzdCB0b19maWx0ZXJlZCA9XG4gICAgICBsZXQgd2FzX3Zpc2libGUgPSBtYXRjaCB0b19maWx0ZXJlZCB3aXRoIHwgU29tZSBfIC0+IHRydWUgfCBOb25lIC0+IGZhbHNlIGluXG4gICAgICBsZXQgZm9yd2FyZCA9IGZyb21fZnVsbF9saXN0IDwgdG9fZnVsbF9saXN0IGluXG4gICAgICBpZiBmb3J3YXJkIHRoZW5cbiAgICAgICAgZm9yIGlfZnVsbCA9IGZyb21fZnVsbF9saXN0ICsgMSB0byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICBsZXQgZGVsdGEgPSBpZiB3YXNfdmlzaWJsZSB0aGVuICgtMSkgZWxzZSAwIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaV9maWx0ZXJlZCA9IEludE1hcC5maW5kIGlfZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBuZXdfdmFsID0gaV9maWx0ZXJlZCArIGRlbHRhIGluXG4gICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChpX2Z1bGwgLSAxKSBuZXdfdmFsICFpbmRleFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vdF9mb3VuZCAtPiAoKVxuICAgICAgICBkb25lXG4gICAgICBlbHNlXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCAtIDEgZG93bnRvIHRvX2Z1bGxfbGlzdCBkb1xuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsICsgMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZTtcbiAgICAgIG1hdGNoIHRvX2ZpbHRlcmVkIHdpdGhcbiAgICAgIHwgU29tZSB0b19maWx0ZXJlZCAtPlxuICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgIWluZGV4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdG9fZnVsbF9saXN0ICFpbmRleFxuICAgIGluXG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgdGhlblxuICAgICAgICAgICBsZXQgbXlfaSA9IHVwZGF0ZV9pbmRleF9pbnNlcnQgaSB0cnVlIGluXG4gICAgICAgICAgIFtJIChteV9pLCB4KV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICBpZ25vcmUgKHVwZGF0ZV9pbmRleF9pbnNlcnQgaSBmYWxzZSk7XG4gICAgICAgICAgICAgW11cbiAgICAgICAgICAgZW5kXG4gICAgICB8IFIgaSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgbGV0IHJldCA9IHRyeSBsZXQgaiA9IEludE1hcC5maW5kIGkgIWluZGV4IGluIFtSIGpdIHdpdGggfCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9pbmRleF9yZW1vdmUgaSBpblxuICAgICAgICAgcmV0XG4gICAgICB8IFUgKGksIHgpIC0+XG4gICAgICAgICBsZXQgaSA9IG5vcm1hbGlzZSBpIGluXG4gICAgICAgICBiZWdpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgb2xkX2ogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpblxuICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgIHRoZW4gW1UgKG9sZF9qLCB4KV1cbiAgICAgICAgICAgICBlbHNlICh1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSBpOyBbUiBvbGRfal0pXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgbmV3X2ogPSB1cGRhdGVfaW5kZXhfdXBkYXRlX2luc2VydCBpIGluXG4gICAgICAgICAgICAgICAgW0kgKG5ld19qLCB4KV1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICBlbmRcbiAgICAgIHwgWCAob3JpZ2luX2Z1bGwsIG9mZnNldF9mdWxsKSAtPlxuICAgICAgICAgbGV0IG9yaWdpbl9mdWxsID0gbm9ybWFsaXNlIG9yaWdpbl9mdWxsIGluXG4gICAgICAgICBsZXQgZGVzdF9mdWxsID0gb3JpZ2luX2Z1bGwgKyBvZmZzZXRfZnVsbCBpblxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIGxldCBvcmlnaW5fZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBvcmlnaW5fZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgbGV0IGRlc3RfZmlsdGVyZWQgPVxuICAgICAgICAgICAgIHRyeSBJbnRNYXAuZmluZCBkZXN0X2Z1bGwgIWluZGV4XG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNtYWxsX29uZXMsIF8sIF8gPSBJbnRNYXAuc3BsaXQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICAgICAgaWYgSW50TWFwLmlzX2VtcHR5IHNtYWxsX29uZXNcbiAgICAgICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgICAgICBlbHNlIHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIHNtYWxsX29uZXMpICsgMVxuICAgICAgICAgICBpblxuICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgKFNvbWUgZGVzdF9maWx0ZXJlZCk7XG4gICAgICAgICAgIGlmIGRlc3RfZmlsdGVyZWQgIT0gb3JpZ2luX2ZpbHRlcmVkXG4gICAgICAgICAgIHRoZW4gW1ggKG9yaWdpbl9maWx0ZXJlZCwgZGVzdF9maWx0ZXJlZCAtIG9yaWdpbl9maWx0ZXJlZCldXG4gICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAoKiBtb3ZpbmcgYW4gZWxlbWVudCB0aGF0IHdhcyBmaWx0ZXJlZCBvdXQgKilcbiAgICAgICAgICAgIHVwZGF0ZV9pbmRleF9tb3ZlIG9yaWdpbl9mdWxsIGRlc3RfZnVsbCBOb25lO1xuICAgICAgICAgICAgW11cbiAgICBpblxuXG4gICAgbGV0IGZpbHRlcl9lID0gZnVuY3Rpb25cbiAgICAgIHwgU2V0IGwgLT4gU2V0IChmaWx0ZXJfbGlzdCBsKVxuICAgICAgfCBQYXRjaCBwIC0+XG4gICAgICAgICBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgZmlsdGVyX2UgKGV2ZW50IGwpIGluXG4gICAgZnJvbV9ldmVudCAoZmlsdGVyX2xpc3QgKHZhbHVlIGwpKSBlXG5cbiAgbW9kdWxlIEludFNldCA9IFNldC5NYWtlIChJbnQpXG5cbiAgbGV0IGZvcl9hbGwgZm4gZGF0YSA9XG4gICAgbGV0IG1heWJlX3VwZGF0ZSBhY2MgaSB2ID0gaWYgZm4gdiB0aGVuIGFjYyBlbHNlIEludFNldC5hZGQgaSBhY2MgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBsZXQgcmVjIGZvbGQgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IHYgOjogdGwgLT4gZm9sZCAoaSArIDEpIChtYXliZV91cGRhdGUgYWNjIGkgdikgdGxcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBmb2xkIDAgSW50U2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2lkeF9hZnRlciBpIGYgYWNjID1cbiAgICAgIEludFNldC5tYXAgKGZ1biBpJyAtPiBpZiBpJyA+PSBpIHRoZW4gZiBpJyAxIGVsc2UgaScpIGFjY1xuICAgIGluXG4gICAgbGV0IGYgPSBmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNldCB4IC0+IGluaXQgeFxuICAgICAgfCBQYXRjaCB1cGRhdGVzIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFggKGksIGknKSAtPlxuICAgICAgICAgICAgICAgaWYgSW50U2V0Lm1lbSBpIGFjYyA9IEludFNldC5tZW0gaScgYWNjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSBpZiBJbnRTZXQubWVtIGkgYWNjXG4gICAgICAgICAgICAgICB0aGVuIEludFNldC5hZGQgaScgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgICBlbHNlIEludFNldC5hZGQgaSAoSW50U2V0LnJlbW92ZSBpJyBhY2MpXG4gICAgICAgICAgICAgfCBSIGkgLT5cbiAgICAgICAgICAgICAgIHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoLSkgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgfCBJIChpLCB2KSAtPlxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoKykgYWNjIGluXG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgYWNjIGkgdlxuICAgICAgICAgICAgIHwgVSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIG1heWJlX3VwZGF0ZSAoSW50U2V0LnJlbW92ZSBpIGFjYykgaSB2KVxuICAgICAgICAgIGFjY1xuICAgICAgICAgIHVwZGF0ZXNcbiAgICBpblxuICAgIFJlYWN0LlMuZm9sZCBmIChpbml0ICh2YWx1ZSBkYXRhKSkgKGV2ZW50IGRhdGEpXG4gICAgfD4gUmVhY3QuUy5tYXAgSW50U2V0LmlzX2VtcHR5XG5cbmVuZFxuXG5tb2R1bGUgUk1hcChNIDogTWFwLlMpID0gc3RydWN0XG5cbiAgbW9kdWxlIERhdGEgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgZGF0YSA9ICdhIE0udFxuXG4gICAgdHlwZSAnYSBwID0gW2BBZGQgb2YgKE0ua2V5ICogJ2EpIHwgYERlbCBvZiBNLmtleV1cblxuICAgIHR5cGUgJ2EgcGF0Y2ggPSAnYSBwIGxpc3RcblxuICAgIGxldCBtZXJnZV9wIHAgcyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgYEFkZCAoayxhKSAtPiBNLmFkZCBrIGEgc1xuICAgICAgfCBgRGVsIGsgLT4gTS5yZW1vdmUgayBzXG5cbiAgICBsZXQgbWVyZ2UgcCBhY2MgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1lcmdlX3AgcCBhY2MpIGFjYyBwXG5cbiAgICBsZXQgbWFwX3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IGBBZGQgKGssYSkgLT4gYEFkZCAoayxmIGEpXG4gICAgICB8IGBEZWwgayAtPiBgRGVsIGtcblxuICAgIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcCBmKVxuXG4gICAgbGV0IG1hcF9kYXRhIGYgZCA9IE0ubWFwIGYgZFxuXG4gICAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuXG4gICAgbGV0IGVxdWFsIGYgPSBNLmVxdWFsIGZcblxuICAgIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgICAgbGV0IG0gPVxuICAgICAgICBsZXQgZyBfa2V5IHYgdyA9XG4gICAgICAgICAgbWF0Y2ggdiwgdyB3aXRoXG4gICAgICAgICAgfCBTb21lIHYsIFNvbWUgdyB3aGVuIGVxIHYgdyAtPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIHwgU29tZSBfLCBTb21lIHcgLT5cbiAgICAgICAgICAgIFNvbWUgKGBVIHcpXG4gICAgICAgICAgfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICAgIFNvbWUgYERcbiAgICAgICAgICB8IE5vbmUsIFNvbWUgdiAtPlxuICAgICAgICAgICAgU29tZSAoYEEgdilcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgTS5tZXJnZSBnIHggeVxuICAgICAgYW5kIGcga2V5IHggYWNjID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYFUgdiAtPlxuICAgICAgICAgIGBEZWwga2V5IDo6IGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICAgIHwgYEQgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBhY2NcbiAgICAgICAgfCBgQSB2IC0+XG4gICAgICAgICAgYEFkZCAoa2V5LCB2KSA6OiBhY2NcbiAgICAgIGFuZCBhY2MgPSBbXSBpblxuICAgICAgTGlzdC5yZXYgKE0uZm9sZCBnIG0gYWNjKVxuXG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZShEYXRhKVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBtID1cblxuICAgIGxldCBjb252ZXJ0X3AgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLHYpIC0+XG4gICAgICAgICBpZiBwcmVkIGsgdlxuICAgICAgICAgdGhlbiBbYEFkZCAoayx2KV1cbiAgICAgICAgIGVsc2UgW11cbiAgICAgIHwgYERlbCBrIC0+IFtgRGVsIGtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBtIC0+IFNldCAoTS5maWx0ZXIgcHJlZCBtKVxuICAgICAgfCBQYXRjaCBwIC0+IFBhdGNoIChMaXN0LmNvbmNhdCAoTGlzdC5tYXAgY29udmVydF9wIHApKVxuICAgIGluXG5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBtKSBpblxuICAgIGZyb21fZXZlbnQgKE0uZmlsdGVyIHByZWQgKHZhbHVlIG0pKSBlXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX3R5eG1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdCAqKVxubW9kdWxlIFR5eG1sX2Nhc3QgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9jYXN0X3NpZ3MgKilcbm1vZHVsZSBUeXhtbF9jYXN0X3NpZ3MgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdF9zaWdzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2pzICopXG5tb2R1bGUgVHl4bWxfanMgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfanNcblxubW9kdWxlIEpzX29mX29jYW1sX3R5eG1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgTWFrZVRvIChDIDogc2lnXG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGVsdCA6ICdhIGVsdCAtPiBEb20ubm9kZSBKcy50XG5lbmQpIDogVHl4bWxfY2FzdF9zaWdzLlRPIHdpdGggdHlwZSAnYSBlbHQgPSAnYSBDLmVsdCA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEMuZWx0XG5cbiAgbGV0IHJlYnVpbGRfbm9kZSBfIHggPSBKcy5VbnNhZmUuY29lcmNlIChDLmVsdCB4KVxuXG4gIGxldCBvZl9lbGVtZW50IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VsZW1lbnRcIiBlbHRcblxuICBsZXQgb2Zfbm9kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ub2RlXCIgZWx0XG5cbiAgbGV0IG9mX3BjZGF0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wY2RhdGFcIiBlbHRcblxuICBsZXQgb2ZfaHRtbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9odG1sXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZFwiIGVsdFxuXG4gIGxldCBvZl9saW5rIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpbmtcIiBlbHRcblxuICBsZXQgb2ZfdGl0bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGl0bGVcIiBlbHRcblxuICBsZXQgb2ZfbWV0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRhXCIgZWx0XG5cbiAgbGV0IG9mX2Jhc2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmFzZVwiIGVsdFxuXG4gIGxldCBvZl9zdHlsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHlsZVwiIGVsdFxuXG4gIGxldCBvZl9ib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JvZHlcIiBlbHRcblxuICBsZXQgb2ZfZm9ybSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb3JtXCIgZWx0XG5cbiAgbGV0IG9mX29wdGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX29wdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRpb25cIiBlbHRcblxuICBsZXQgb2Zfc2VsZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlbGVjdFwiIGVsdFxuXG4gIGxldCBvZl9pbnB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnB1dFwiIGVsdFxuXG4gIGxldCBvZl90ZXh0YXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZXh0YXJlYVwiIGVsdFxuXG4gIGxldCBvZl9idXR0b24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnV0dG9uXCIgZWx0XG5cbiAgbGV0IG9mX2xhYmVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xhYmVsXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZWxkc2V0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZWxkc2V0XCIgZWx0XG5cbiAgbGV0IG9mX2xlZ2VuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sZWdlbmRcIiBlbHRcblxuICBsZXQgb2ZfdWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdWxcIiBlbHRcblxuICBsZXQgb2Zfb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2xcIiBlbHRcblxuICBsZXQgb2ZfZGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGxcIiBlbHRcblxuICBsZXQgb2ZfbGkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlcIiBlbHRcblxuICBsZXQgb2ZfZGlhbG9nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpYWxvZ1wiIGVsdFxuXG4gIGxldCBvZl9kaXYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGl2XCIgZWx0XG5cbiAgbGV0IG9mX3AgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfYmxvY2txdW90ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ibG9ja3F1b3RlXCIgZWx0XG5cbiAgbGV0IG9mX3ByZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wcmVcIiBlbHRcblxuICBsZXQgb2ZfYnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnJcIiBlbHRcblxuICBsZXQgb2ZfaHIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaHJcIiBlbHRcblxuICBsZXQgb2ZfaW5zIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2luc1wiIGVsdFxuXG4gIGxldCBvZl9kZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGVsXCIgZWx0XG5cbiAgbGV0IG9mX2EgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYVwiIGVsdFxuXG4gIGxldCBvZl9pbWcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1nXCIgZWx0XG5cbiAgbGV0IG9mX29iamVjdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vYmplY3RcIiBlbHRcblxuICBsZXQgb2ZfcGFyYW0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYW1cIiBlbHRcblxuICBsZXQgb2ZfYXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hcmVhXCIgZWx0XG5cbiAgbGV0IG9mX21hcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYXBcIiBlbHRcblxuICBsZXQgb2Zfc2NyaXB0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NjcmlwdFwiIGVsdFxuXG4gIGxldCBvZl90ZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZFwiIGVsdFxuXG4gIGxldCBvZl90ciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90clwiIGVsdFxuXG4gIGxldCBvZl9jb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29sXCIgZWx0XG5cbiAgbGV0IG9mX3Rmb290IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Rmb290XCIgZWx0XG5cbiAgbGV0IG9mX3RoZWFkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RoZWFkXCIgZWx0XG5cbiAgbGV0IG9mX3Rib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Rib2R5XCIgZWx0XG5cbiAgbGV0IG9mX2NhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2FwdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVwiIGVsdFxuXG4gIGxldCBvZl9jYW52YXMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2FudmFzXCIgZWx0XG5cbiAgbGV0IG9mX2lmcmFtZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pZnJhbWVcIiBlbHRcblxuICBsZXQgb2ZfYXVkaW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXVkaW9cIiBlbHRcblxuICBsZXQgb2ZfdmlkZW8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdmlkZW9cIiBlbHRcblxuICAoKiBEb21faHRtbC5oZWFkaW5nRWxlbWVudCAqKVxuXG4gIGxldCBvZl9oMSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oMVwiIGVsdFxuXG4gIGxldCBvZl9oMiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oMlwiIGVsdFxuXG4gIGxldCBvZl9oMyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oM1wiIGVsdFxuXG4gIGxldCBvZl9oNCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNFwiIGVsdFxuXG4gIGxldCBvZl9oNSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNVwiIGVsdFxuXG4gIGxldCBvZl9oNiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oNlwiIGVsdFxuXG4gICgqIERvbV9odG1sLmVsZW1lbnQgKilcblxuICBsZXQgb2ZfYWJiciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hYmJyXCIgZWx0XG5cbiAgbGV0IG9mX2FkZHJlc3MgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYWRkcmVzc1wiIGVsdFxuXG4gIGxldCBvZl9hcnRpY2xlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FydGljbGVcIiBlbHRcblxuICBsZXQgb2ZfYXNpZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXNpZGVcIiBlbHRcblxuICBsZXQgb2ZfYiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iXCIgZWx0XG5cbiAgbGV0IG9mX2JkbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iZG9cIiBlbHRcblxuICBsZXQgb2ZfY2l0ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jaXRlXCIgZWx0XG5cbiAgbGV0IG9mX2NvZGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29kZVwiIGVsdFxuXG4gIGxldCBvZl9jb2xncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb2xncm91cFwiIGVsdFxuXG4gIGxldCBvZl9jb21tYW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbW1hbmRcIiBlbHRcblxuICBsZXQgb2ZfZGF0YWxpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGF0YWxpc3RcIiBlbHRcblxuICBsZXQgb2ZfZGQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGRcIiBlbHRcblxuICBsZXQgb2ZfZGV0YWlscyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZXRhaWxzXCIgZWx0XG5cbiAgbGV0IG9mX2RmbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kZm5cIiBlbHRcblxuICBsZXQgb2ZfZHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZHRcIiBlbHRcblxuICBsZXQgb2ZfZW0gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1cIiBlbHRcblxuICBsZXQgb2ZfZW1iZWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1iZWRcIiBlbHRcblxuICBsZXQgb2ZfZmlnY2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWdjYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZ3VyZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9maWd1cmVcIiBlbHRcblxuICBsZXQgb2ZfZm9vdGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvb3RlclwiIGVsdFxuXG4gIGxldCBvZl9oZWFkZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGVyXCIgZWx0XG5cbiAgbGV0IG9mX2hncm91cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZ3JvdXBcIiBlbHRcblxuICBsZXQgb2ZfaSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pXCIgZWx0XG5cbiAgbGV0IG9mX2tiZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9rYmRcIiBlbHRcblxuICBsZXQgb2Zfa2V5Z2VuIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2tleWdlblwiIGVsdFxuXG4gIGxldCBvZl9tYWluIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21haW5cIiBlbHRcblxuICBsZXQgb2ZfbWFyayBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYXJrXCIgZWx0XG5cbiAgbGV0IG9mX21lbnUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWVudVwiIGVsdFxuXG4gIGxldCBvZl9tZXRlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRlclwiIGVsdFxuXG4gIGxldCBvZl9uYXYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbmF2XCIgZWx0XG5cbiAgbGV0IG9mX25vc2NyaXB0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25vc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX291dHB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vdXRwdXRcIiBlbHRcblxuICBsZXQgb2ZfcHJvZ3Jlc3MgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJvZ3Jlc3NcIiBlbHRcblxuICBsZXQgb2ZfcSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9xXCIgZWx0XG5cbiAgbGV0IG9mX3JwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3JwXCIgZWx0XG5cbiAgbGV0IG9mX3J0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3J0XCIgZWx0XG5cbiAgbGV0IG9mX3J1YnkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcnVieVwiIGVsdFxuXG4gIGxldCBvZl9zYW1wIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NhbXBcIiBlbHRcblxuICBsZXQgb2Zfc2VjdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zZWN0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3NtYWxsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NtYWxsXCIgZWx0XG5cbiAgbGV0IG9mX3NvdXJjZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zb3VyY2VcIiBlbHRcblxuICBsZXQgb2Zfc3BhbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zcGFuXCIgZWx0XG5cbiAgbGV0IG9mX3N0cm9uZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHJvbmdcIiBlbHRcblxuICBsZXQgb2Zfc3ViIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1YlwiIGVsdFxuXG4gIGxldCBvZl9zdW1tYXJ5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1bW1hcnlcIiBlbHRcblxuICBsZXQgb2Zfc3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N1cFwiIGVsdFxuXG4gIGxldCBvZl90aCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aFwiIGVsdFxuXG4gIGxldCBvZl90aW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RpbWVcIiBlbHRcblxuICBsZXQgb2ZfdSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91XCIgZWx0XG5cbiAgbGV0IG9mX3ZhciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92YXJcIiBlbHRcblxuICBsZXQgb2Zfd2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3diclwiIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlT2YgKEMgOiBzaWdcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZWx0IDogRG9tLm5vZGUgSnMudCAtPiAnYSBlbHRcbmVuZCkgOiBUeXhtbF9jYXN0X3NpZ3MuT0Ygd2l0aCB0eXBlICdhIGVsdCA9ICdhIEMuZWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgQy5lbHRcblxuICBsZXQgcmVidWlsZF9ub2RlIF8geCA9IEMuZWx0IChKcy5VbnNhZmUuY29lcmNlIHgpXG5cbiAgbGV0IG9mX2VsZW1lbnQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZWxlbWVudFwiIGVsdFxuXG4gIGxldCBvZl9odG1sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2h0bWxcIiBlbHRcblxuICBsZXQgb2ZfaGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkXCIgZWx0XG5cbiAgbGV0IG9mX2xpbmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlua1wiIGVsdFxuXG4gIGxldCBvZl90aXRsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aXRsZVwiIGVsdFxuXG4gIGxldCBvZl9tZXRhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21ldGFcIiBlbHRcblxuICBsZXQgb2ZfYmFzZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iYXNlXCIgZWx0XG5cbiAgbGV0IG9mX3N0eWxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3N0eWxlXCIgZWx0XG5cbiAgbGV0IG9mX2JvZHkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYm9keVwiIGVsdFxuXG4gIGxldCBvZl9mb3JtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2Zvcm1cIiBlbHRcblxuICBsZXQgb2Zfb3B0R3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3B0R3JvdXBcIiBlbHRcblxuICBsZXQgb2Zfb3B0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zZWxlY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VsZWN0XCIgZWx0XG5cbiAgbGV0IG9mX2lucHV0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lucHV0XCIgZWx0XG5cbiAgbGV0IG9mX3RleHRBcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RleHRBcmVhXCIgZWx0XG5cbiAgbGV0IG9mX2J1dHRvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9idXR0b25cIiBlbHRcblxuICBsZXQgb2ZfbGFiZWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGFiZWxcIiBlbHRcblxuICBsZXQgb2ZfZmllbGRTZXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmllbGRTZXRcIiBlbHRcblxuICBsZXQgb2ZfbGVnZW5kIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xlZ2VuZFwiIGVsdFxuXG4gIGxldCBvZl91TGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl91TGlzdFwiIGVsdFxuXG4gIGxldCBvZl9vTGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vTGlzdFwiIGVsdFxuXG4gIGxldCBvZl9kTGlzdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kTGlzdFwiIGVsdFxuXG4gIGxldCBvZl9saSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9saVwiIGVsdFxuXG4gIGxldCBvZl9kaWFsb2cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGlhbG9nXCIgZWx0XG5cbiAgbGV0IG9mX2RpdiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9kaXZcIiBlbHRcblxuICBsZXQgb2ZfcGFyYWdyYXBoIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFncmFwaFwiIGVsdFxuXG4gIGxldCBvZl9oZWFkaW5nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRpbmdcIiBlbHRcblxuICBsZXQgb2ZfcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcXVvdGVcIiBlbHRcblxuICBsZXQgb2ZfcHJlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ByZVwiIGVsdFxuXG4gIGxldCBvZl9iciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9iclwiIGVsdFxuXG4gIGxldCBvZl9ociBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oclwiIGVsdFxuXG4gIGxldCBvZl9tb2QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbW9kXCIgZWx0XG5cbiAgbGV0IG9mX2FuY2hvciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hbmNob3JcIiBlbHRcblxuICBsZXQgb2ZfaW1hZ2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaW1hZ2VcIiBlbHRcblxuICBsZXQgb2Zfb2JqZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29iamVjdFwiIGVsdFxuXG4gIGxldCBvZl9wYXJhbSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wYXJhbVwiIGVsdFxuXG4gIGxldCBvZl9hcmVhIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FyZWFcIiBlbHRcblxuICBsZXQgb2ZfbWFwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21hcFwiIGVsdFxuXG4gIGxldCBvZl9zY3JpcHQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2NyaXB0XCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2VsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNlbGxcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVSb3cgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVSb3dcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDb2xcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVTZWN0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlU2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVDYXB0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlXCIgZWx0XG5cbiAgbGV0IG9mX2NhbnZhcyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jYW52YXNcIiBlbHRcblxuICBsZXQgb2ZfaUZyYW1lIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2lGcmFtZVwiIGVsdFxuXG4gIGxldCBvZl9hdWRpbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hdWRpb1wiIGVsdFxuXG4gIGxldCBvZl92aWRlbyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl92aWRlb1wiIGVsdFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IGpzX3N0cmluZ19vZl9mbG9hdCBmID0gKEpzLm51bWJlcl9vZl9mbG9hdCBmKSMjdG9TdHJpbmdcblxubGV0IGpzX3N0cmluZ19vZl9pbnQgaSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgKGZsb2F0X29mX2ludCBpKSkjI3RvU3RyaW5nXG5cbm1vZHVsZSB0eXBlIFhNTCA9XG4gIFhtbF9zaWdzLlRcbiAgICB3aXRoIHR5cGUgdXJpID0gc3RyaW5nXG4gICAgIGFuZCB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd2Vha01hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0IDogJ2EgLT4gJ2IgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIEpzLk9wdGRlZi50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcmV0YWluID1cbiAgbGV0IG1hcCA6IChEb20ubm9kZSBKcy50LCBPYmoudCBKcy5qc19hcnJheSBKcy50KSB3ZWFrTWFwIEpzLnQgPVxuICAgIGxldCB3ZWFrTWFwID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwIGluXG4gICAgbmV3JWpzIHdlYWtNYXBcbiAgaW5cbiAgZnVuICh0eXBlIGEpIG5vZGUgfihrZWVwbWUgOiBhKSAtPlxuICAgIGxldCBwcmV2ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlIChtYXAjI2dldCBub2RlKSAoZnVuICgpIC0+IG5ldyVqcyBKcy5hcnJheV9lbXB0eSkgKGZ1biB4IC0+IHgpXG4gICAgaW5cbiAgICBsZXQgKF8gOiBpbnQpID0gcHJldiMjcHVzaCAoT2JqLnJlcHIga2VlcG1lKSBpblxuICAgIG1hcCMjc2V0IG5vZGUgcHJldlxuXG5tb2R1bGUgWG1sID0gc3RydWN0XG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcblxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIGxpc3RcblxuICB0eXBlIHVyaSA9IHN0cmluZ1xuXG4gIGxldCB1cmlfb2Zfc3RyaW5nIHMgPSBzXG5cbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIGFuYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5rZXlib2FyZEV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLnRvdWNoRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSBhdHRyaWJfayA9XG4gICAgfCBFdmVudCBvZiBldmVudF9oYW5kbGVyXG4gICAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlX2V2ZW50X2hhbmRsZXJcbiAgICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuICAgIHwgVG91Y2hFdmVudCBvZiB0b3VjaF9ldmVudF9oYW5kbGVyXG4gICAgfCBBdHRyIG9mIEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbiBSZWFjdC5TLnRcblxuICB0eXBlIGF0dHJpYiA9IGFuYW1lICogYXR0cmliX2tcblxuICBsZXQgYXR0ciBuYW1lIHYgPSBuYW1lLCBBdHRyIChSZWFjdC5TLmNvbnN0IChTb21lIHYpKVxuXG4gIGxldCBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6IGF0dHJpYiA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2Zsb2F0IHZhbHVlKVxuXG4gIGxldCBpbnRfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKGpzX3N0cmluZ19vZl9pbnQgdmFsdWUpXG5cbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCBzcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgdmFsdWVzKSlcblxuICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIHZhbHVlcykpXG5cbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogZXZlbnRfaGFuZGxlcikgPSBuYW1lLCBFdmVudCB2YWx1ZVxuXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IG1vdXNlX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBNb3VzZUV2ZW50IHZhbHVlXG5cbiAgbGV0IGtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDoga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIEtleWJvYXJkRXZlbnQgdmFsdWVcblxuICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiB0b3VjaF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgVG91Y2hFdmVudCB2YWx1ZVxuXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyB2YWx1ZSlcblxuICBsZXQgdXJpc19hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gICgqKiBFbGVtZW50ICopXG5cbiAgdHlwZSBlbHQgPSBEb20ubm9kZSBKcy50XG5cbiAgdHlwZSBlbmFtZSA9IHN0cmluZ1xuXG4gIGxldCBlbXB0eSAoKSA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjb21tZW50IGMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUNvbW1lbnQgKEpzLnN0cmluZyBjKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbmNvZGVkcGNkYXRhIHMgPSAoRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgcykgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgZW50aXR5ID1cbiAgICBsZXQgc3RyaW5nX2ZvbGQgcyB+cG9zIH5pbml0IH5mID1cbiAgICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gcG9zIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbGV0IGMgPSBzLltpXSBpblxuICAgICAgICByIDo9IGYgIXIgY1xuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgaW5cbiAgICBsZXQgaW52YWxpZF9lbnRpdHkgZSA9IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkludmFsaWQgZW50aXR5ICVTXCIgZSkgaW5cbiAgICBsZXQgaW50X29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgfCAnYScgLi4gJ2YnIGFzIHggLT4gU29tZSAoQ2hhci5jb2RlIHggLSBDaGFyLmNvZGUgJ2EnICsgMTApXG4gICAgICB8ICdBJyAuLiAnRicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnQScgKyAxMClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcGFyc2VfaW50IH5wb3MgfmJhc2UgZSA9XG4gICAgICBzdHJpbmdfZm9sZCBlIH5wb3MgfmluaXQ6MCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgbWF0Y2ggaW50X29mX2NoYXIgeCB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgd2hlbiBkIDwgYmFzZSAtPiAoYWNjICogYmFzZSkgKyBkXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGludmFsaWRfZW50aXR5IGUpXG4gICAgaW5cbiAgICBsZXQgaXNfYWxwaGFfbnVtID0gZnVuY3Rpb25cbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgZnVuIGUgLT5cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGUgaW5cbiAgICAgIGxldCBzdHIgPVxuICAgICAgICBpZiBsZW4gPj0gMSAmJiBDaGFyLmVxdWFsIGUuWzBdICcjJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgaWYgbGVuID49IDIgJiYgKENoYXIuZXF1YWwgZS5bMV0gJ3gnIHx8IENoYXIuZXF1YWwgZS5bMV0gJ1gnKVxuICAgICAgICAgICAgdGhlbiBwYXJzZV9pbnQgfnBvczoyIH5iYXNlOjE2IGVcbiAgICAgICAgICAgIGVsc2UgcGFyc2VfaW50IH5wb3M6MSB+YmFzZToxMCBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBKcy5zdHJpbmdfY29uc3RyIyNmcm9tQ2hhckNvZGUgaVxuICAgICAgICBlbHNlIGlmIHN0cmluZ19mb2xkIGUgfnBvczowIH5pbml0OnRydWUgfmY6KGZ1biBhY2MgeCAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGlzIG5vdCBxdWl0ZSByaWdodCBhY2NvcmRpbmcgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cueG1sLmNvbS9heG1sL3RhcmdldC5odG1sI05ULU5hbWUuXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdCBzZWVtcyB0byBjb3ZlciBhbGwgaHRtbDUgZW50aXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9kZXYudzMub3JnL2h0bWw1L2h0bWwtYXV0aG9yL2NoYXJyZWYgKilcbiAgICAgICAgICAgICAgICAgICAgYWNjICYmIGlzX2FscGhhX251bSB4KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBcInF1b3RcIiAtPiBKcy5zdHJpbmcgXCJcXFwiXCJcbiAgICAgICAgICB8IFwiYW1wXCIgLT4gSnMuc3RyaW5nIFwiJlwiXG4gICAgICAgICAgfCBcImFwb3NcIiAtPiBKcy5zdHJpbmcgXCInXCJcbiAgICAgICAgICB8IFwibHRcIiAtPiBKcy5zdHJpbmcgXCI8XCJcbiAgICAgICAgICB8IFwiZ3RcIiAtPiBKcy5zdHJpbmcgXCI+XCJcbiAgICAgICAgICB8IFwiXCIgLT4gaW52YWxpZF9lbnRpdHkgZVxuICAgICAgICAgIHwgXyAtPiBEb21faHRtbC5kZWNvZGVfaHRtbF9lbnRpdGllcyAoSnMuc3RyaW5nIChcIiZcIiBeIGUgXiBcIjtcIikpXG4gICAgICAgIGVsc2UgaW52YWxpZF9lbnRpdHkgZVxuICAgICAgaW5cbiAgICAgIChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgc3RyIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgKCogVE9ETzogZml4IGdldF9wcm9wXG4gICAgIGl0IG9ubHkgd29yayB3aGVuIGh0bWwgYXR0cmlidXRlIGFuZCBkb20gcHJvcGVydHkgbmFtZXMgY29ycmVzcG9uZC5cbiAgICAgZmluZCBhIHdheSB0byBnZXQgZG9tIHByb3BlcnR5IG5hbWUgY29ycmVzcG9uZGluZyB0byBodG1sIGF0dHJpYnV0ZVxuICAqKVxuXG4gIGxldCBnZXRfcHJvcCBub2RlIG5hbWUgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IG5vZGUgbmFtZSkgdGhlbiBTb21lIG5hbWUgZWxzZSBOb25lXG5cbiAgbGV0IGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuYW1lIGYgPVxuICAgIG1hdGNoIGdldF9wcm9wIG5vZGUgbmFtZSB3aXRoXG4gICAgfCBTb21lIG4gLT4gKCB0cnkgZiBuIHdpdGggXyAtPiAoKSlcbiAgICB8IE5vbmUgLT4gKClcblxuICBsZXQgYXR0YWNoX2F0dHJpYnMgbm9kZSBsID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKG4nLCBhdHQpIC0+XG4gICAgICAgIGxldCBuID0gSnMuc3RyaW5nIG4nIGluXG4gICAgICAgIG1hdGNoIGF0dCB3aXRoXG4gICAgICAgIHwgQXR0ciBhIC0+XG4gICAgICAgICAgICBsZXQgKGtlZXBtZSA6IHVuaXQgUmVhY3QuUy50KSA9XG4gICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNzZXRBdHRyaWJ1dGUgbiB2KTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBuJyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBcInN0eWxlXCIgLT4gbm9kZSMjLnN0eWxlIyMuY3NzVGV4dCA6PSB2XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgdikpXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAobm9kZSMjcmVtb3ZlQXR0cmlidXRlIG4pO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IEpzLnN0cmluZyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJfcHJvcF9wcm90ZWN0ZWQgbm9kZSBuIChmdW4gbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG5hbWUgSnMubnVsbCkpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXRhaW4gKG5vZGUgOj4gRG9tLm5vZGUgSnMudCkgfmtlZXBtZVxuICAgICAgICB8IEV2ZW50IGggLT4gSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgTW91c2VFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBLZXlib2FyZEV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IFRvdWNoRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpKVxuICAgICAgbFxuXG4gIGxldCBsZWFmID8oYSA9IFtdKSBuYW1lID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3NjcmlwdCBzID0gY2RhdGEgc1xuXG4gIGxldCBjZGF0YV9zdHlsZSBzID0gY2RhdGEgc1xuZW5kXG5cbm1vZHVsZSBYbWxfU3ZnID0gc3RydWN0XG4gIGluY2x1ZGUgWG1sXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnROUyBEb21fc3ZnLnhtbG5zIChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBjaGlsZHJlbiA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBjIC0+IGlnbm9yZSAoZSMjYXBwZW5kQ2hpbGQgYykpIGNoaWxkcmVuO1xuICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5lbmRcblxubW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG5tb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG5tb2R1bGUgSHRtbDUgPSBIdG1sXG5cbm1vZHVsZSBUb19kb20gPSBUeXhtbF9jYXN0Lk1ha2VUbyAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b2VsdFxuZW5kKVxuXG5tb2R1bGUgT2ZfZG9tID0gVHl4bWxfY2FzdC5NYWtlT2YgKHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEh0bWwuZWx0XG5cbiAgbGV0IGVsdCA9IEh0bWwudG90XG5lbmQpXG5cbm1vZHVsZSBSZWdpc3RlciA9IHN0cnVjdFxuICBsZXQgcmVtb3ZlQ2hpbGRyZW4gKG5vZGUgOiAjRG9tLmVsZW1lbnQgSnMudCkgPVxuICAgIGxldCBsID0gbm9kZSMjLmNoaWxkTm9kZXMgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCMjLmxlbmd0aCAtIDEgZG9cbiAgICAgIEpzLk9wdC5pdGVyIChsIyNpdGVtIGkpIChmdW4geCAtPiBpZ25vcmUgKG5vZGUjI3JlbW92ZUNoaWxkIHgpKVxuICAgIGRvbmVcblxuICBsZXQgYWRkX3RvID8oa2VlcCA9IHRydWUpIG5vZGUgY29udGVudCA9XG4gICAgaWYgbm90IGtlZXAgdGhlbiByZW1vdmVDaGlsZHJlbiBub2RlO1xuICAgIExpc3QuaXRlciAoZnVuIHggLT4gRG9tLmFwcGVuZENoaWxkIG5vZGUgKFRvX2RvbS5vZl9lbGVtZW50IHgpKSBjb250ZW50XG5cbiAgbGV0IGlkID9rZWVwIGlkIGNvbnRlbnQgPVxuICAgIGxldCBub2RlID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgaWQgaW5cbiAgICBhZGRfdG8gP2tlZXAgbm9kZSBjb250ZW50XG5cbiAgbGV0IGJvZHkgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgY29udGVudFxuXG4gIGxldCBoZWFkID9rZWVwIGNvbnRlbnQgPSBhZGRfdG8gP2tlZXAgRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIGNvbnRlbnRcblxuICBsZXQgaHRtbCA/aGVhZCBib2R5ID1cbiAgICAobWF0Y2ggaGVhZCB3aXRoXG4gICAgfCBTb21lIGggLT4gRG9tX2h0bWwuZG9jdW1lbnQjIy5oZWFkIDo9IFRvX2RvbS5vZl9oZWFkIGhcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSA6PSBUb19kb20ub2ZfYm9keSBib2R5O1xuICAgICgpXG5lbmRcblxubW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgUmVhY3Quc2lnbmFsXG5cbiAgdHlwZSAnYSB0bGlzdCA9ICdhIFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdHlwZSAoJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG5cbiAgbGV0IHJldHVybiA9IFJlYWN0LlMuY29uc3RcblxuICBsZXQgZm1hcCBmID0gUmVhY3QuUy5tYXAgZlxuXG4gIGxldCBuaWwgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxuICBsZXQgc2luZ2xldG9uID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbl9zXG5cbiAgbGV0IGNvbnMgeCB4cyA9IFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXQgKHNpbmdsZXRvbiB4KSB4c1xuXG4gIGxldCBtYXAgZiA9IFJlYWN0aXZlRGF0YS5STGlzdC5tYXAgZlxuXG4gIGxldCBhcHBlbmQgeCB5ID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCB4IHlcbmVuZFxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuICBvcGVuIFJlYWN0aXZlRGF0YVxuICBvcGVuIFJMaXN0XG5cbiAgbGV0IGluc2VydEF0IGRvbSBpIHggPVxuICAgIGxldCBub2RlcyA9IGRvbSMjLmNoaWxkTm9kZXMgaW5cbiAgICBhc3NlcnQgKGkgPD0gbm9kZXMjIy5sZW5ndGgpO1xuICAgIGlmIGkgPSBub2RlcyMjLmxlbmd0aFxuICAgIHRoZW4gaWdub3JlIChkb20jI2FwcGVuZENoaWxkICh4IDo+IERvbS5ub2RlIEpzLnQpKVxuICAgIGVsc2UgaWdub3JlIChkb20jI2luc2VydEJlZm9yZSB4IChub2RlcyMjaXRlbSBpKSlcblxuICBsZXQgbWVyZ2Vfb25lX3BhdGNoIChkb20gOiBEb20ubm9kZSBKcy50KSAocCA6IERvbS5ub2RlIEpzLnQgcCkgPVxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyAxICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaW5zZXJ0QXQgZG9tIGkgeFxuICAgIHwgUiBpIC0+XG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgICAgICBhc3NlcnQgKGkgPj0gMCAmJiBpIDwgbm9kZXMjIy5sZW5ndGgpO1xuICAgICAgICBKcy5PcHQuaXRlciAobm9kZXMjI2l0ZW0gaSkgKGZ1biBuIC0+IERvbS5yZW1vdmVDaGlsZCBkb20gbilcbiAgICB8IFUgKGksIHgpIC0+IChcbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIChkb20jIy5jaGlsZE5vZGVzIyNpdGVtIGkpIHdpdGhcbiAgICAgICAgfCBTb21lIG9sZCAtPiBpZ25vcmUgKGRvbSMjcmVwbGFjZUNoaWxkIHggb2xkKVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgWCAoaSwgbW92ZSkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIGlmIG1vdmUgPSAwXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICAgIHwgU29tZSBpJyAtPiBpbnNlcnRBdCBkb20gKGkgKyBpZiBtb3ZlID4gMCB0aGVuIG1vdmUgKyAxIGVsc2UgbW92ZSkgaSdcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCByZWMgcmVtb3ZlQ2hpbGRyZW4gZG9tID1cbiAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIGRvbSMjLmxhc3RDaGlsZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGMgLT5cbiAgICAgICAgaWdub3JlIChkb20jI3JlbW92ZUNoaWxkIGMpO1xuICAgICAgICByZW1vdmVDaGlsZHJlbiBkb21cblxuICBsZXQgbWVyZ2VfbXNnIChkb20gOiBEb20ubm9kZSBKcy50KSAobXNnIDogRG9tLm5vZGUgSnMudCBtc2cpID1cbiAgICBtYXRjaCBtc2cgd2l0aFxuICAgIHwgU2V0IGwgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJyZXBsYWNlIGFsbEAuXCI7ICopXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICAgICAgTGlzdC5pdGVyIChmdW4gbCAtPiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgbCkpIGxcbiAgICB8IFBhdGNoIHAgLT5cbiAgICAgICAgKCogRm9ybWF0LmVwcmludGYgXCJwYXRjaEAuXCI7ICopXG4gICAgICAgIExpc3QuaXRlciAobWVyZ2Vfb25lX3BhdGNoIGRvbSkgcFxuXG4gIGxldCB1cGRhdGVfY2hpbGRyZW4gKGRvbSA6IERvbS5ub2RlIEpzLnQpIChub2RlcyA6IERvbS5ub2RlIEpzLnQgdCkgPVxuICAgIHJlbW92ZUNoaWxkcmVuIGRvbTtcbiAgICBsZXQga2VlcG1lIDogdW5pdCBSZWFjdC5TLnQgPSBmb2xkIChmdW4gKCkgbXNnIC0+IG1lcmdlX21zZyBkb20gbXNnKSBub2RlcyAoKSBpblxuICAgIHJldGFpbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgfmtlZXBtZTtcbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBSID0gc3RydWN0XG4gIGxldCBmaWx0ZXJfYXR0cmliIChuYW1lLCBhKSBvbiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBYbWwuRXZlbnQgXyB8IFhtbC5Nb3VzZUV2ZW50IF8gfCBYbWwuS2V5Ym9hcmRFdmVudCBfIHwgWG1sLlRvdWNoRXZlbnQgXyAtPlxuICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpbHRlcl9hdHRyaWIgbm90IGltcGxlbWVudGVkIGZvciBldmVudCBoYW5kbGVyXCIpXG4gICAgfCBYbWwuQXR0ciBhIC0+IG5hbWUsIFhtbC5BdHRyIChSZWFjdC5TLmwyIChmdW4gb24gYSAtPiBpZiBvbiB0aGVuIGEgZWxzZSBOb25lKSBvbiBhKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyA9IFhtbC5hdHRhY2hfYXR0cmlic1xuXG4gIG1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVyA9IFdyYXBcblxuICAgIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuXG4gICAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgICB0eXBlIHVyaSA9IFhtbC51cmlcblxuICAgIGxldCBzdHJpbmdfb2ZfdXJpID0gWG1sLnN0cmluZ19vZl91cmlcblxuICAgIGxldCB1cmlfb2Zfc3RyaW5nID0gWG1sLnVyaV9vZl9zdHJpbmdcblxuICAgIHR5cGUgYW5hbWUgPSBYbWwuYW5hbWVcblxuICAgIHR5cGUgZXZlbnRfaGFuZGxlciA9IFhtbC5ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSBrZXlib2FyZF9ldmVudF9oYW5kbGVyID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgdG91Y2hfZXZlbnRfaGFuZGxlciA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGF0dHJpYiA9IFhtbC5hdHRyaWJcblxuICAgIGxldCBhdHRyIG5hbWUgZiBzID1cbiAgICAgIGxldCBhID0gVy5mbWFwIGYgcyBpblxuICAgICAgbmFtZSwgWG1sLkF0dHIgYVxuXG4gICAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9mbG9hdCBmKSkgc1xuXG4gICAgbGV0IGludF9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChqc19zdHJpbmdfb2ZfaW50IGYpKSBzXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyBmKSkgc1xuXG4gICAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIGYpKSkgc1xuXG4gICAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSBzID1cbiAgICAgIGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiLFwiIGYpKSkgc1xuXG4gICAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCB1cmlfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgdXJpc19hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICB0eXBlIGVsdCA9IFhtbC5lbHRcblxuICAgIHR5cGUgZW5hbWUgPSBYbWwuZW5hbWVcblxuICAgIGxldCBlbXB0eSA9IFhtbC5lbXB0eVxuXG4gICAgbGV0IGNvbW1lbnQgPSBYbWwuY29tbWVudFxuXG4gICAgbGV0IHBjZGF0YSBzID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZVRleHROb2RlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgICAgIGxldCBrZWVwbWUgPSBSZWFjdC5TLm1hcCAoZnVuIHMgLT4gZSMjLmRhdGEgOj0gSnMuc3RyaW5nIHMpIHMgaW5cbiAgICAgIHJldGFpbiAoZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBlbmNvZGVkcGNkYXRhIHMgPSBwY2RhdGEgc1xuXG4gICAgbGV0IGVudGl0eSBzID0gWG1sLmVudGl0eSBzXG5cbiAgICBsZXQgbGVhZiA9IFhtbC5sZWFmXG5cbiAgICBsZXQgbm9kZSA/KGEgPSBbXSkgbmFtZSBsID1cbiAgICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICAgIGxldCBjZGF0YV9zY3JpcHQgPSBYbWwuY2RhdGFfc2NyaXB0XG5cbiAgICBsZXQgY2RhdGFfc3R5bGUgPSBYbWwuY2RhdGFfc3R5bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhtbFxuXG4gICAgbGV0IGxlYWYgPSBYbWxfU3ZnLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgICAgVXRpbC51cGRhdGVfY2hpbGRyZW4gKGUgOj4gRG9tLm5vZGUgSnMudCkgbDtcbiAgICAgIChlIDo+IERvbS5ub2RlIEpzLnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBTdmcgPSBTdmdfZi5NYWtlIChYbWxfU3ZnKVxuICBtb2R1bGUgSHRtbCA9IEh0bWxfZi5NYWtlIChYbWwpIChTdmcpXG4gIG1vZHVsZSBIdG1sNSA9IEh0bWxcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIHByZXYgOiAnYSB0O1xuICBtdXRhYmxlIG5leHQgOiAnYSB0O1xufVxuXG50eXBlICdhIG5vZGUgPSB7XG4gIG5vZGVfcHJldiA6ICdhIHQ7XG4gIG5vZGVfbmV4dCA6ICdhIHQ7XG4gIG11dGFibGUgbm9kZV9kYXRhIDogJ2E7XG4gIG11dGFibGUgbm9kZV9hY3RpdmUgOiBib29sO1xufVxuXG5leHRlcm5hbCBzZXFfb2Zfbm9kZSA6ICdhIG5vZGUgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG5vZGVfb2Zfc2VxIDogJ2EgdCAtPiAnYSBub2RlID0gXCIlaWRlbnRpdHlcIlxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gbm9kZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBnZXQgbm9kZSA9XG4gIG5vZGUubm9kZV9kYXRhXG5cbmxldCBzZXQgbm9kZSBkYXRhID1cbiAgbm9kZS5ub2RlX2RhdGEgPC0gZGF0YVxuXG5sZXQgcmVtb3ZlIG5vZGUgPVxuICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBub2RlLm5vZGVfYWN0aXZlIDwtIGZhbHNlO1xuICAgIGxldCBzZXEgPSBzZXFfb2Zfbm9kZSBub2RlIGluXG4gICAgc2VxLnByZXYubmV4dCA8LSBzZXEubmV4dDtcbiAgICBzZXEubmV4dC5wcmV2IDwtIHNlcS5wcmV2XG4gIGVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wZXJhdGlvbnMgb24gc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgcmVjIHNlcSA9IHsgcHJldiA9IHNlcTsgbmV4dCA9IHNlcSB9IGluXG4gIHNlcVxuXG5sZXQgY2xlYXIgc2VxID1cbiAgc2VxLnByZXYgPC0gc2VxO1xuICBzZXEubmV4dCA8LSBzZXFcblxubGV0IGlzX2VtcHR5IHNlcSA9IHNlcS5uZXh0ID09IHNlcVxuXG5sZXQgbGVuZ3RoIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGxlbiA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgbGVuXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluIGxvb3Agbm9kZS5ub2RlX25leHQgKGxlbiArIDEpXG4gIGluXG4gIGxvb3Agc2VxLm5leHQgMFxuXG5sZXQgYWRkX2wgZGF0YSBzZXEgPVxuICBsZXQgbm9kZSA9IHsgbm9kZV9wcmV2ID0gc2VxOyBub2RlX25leHQgPSBzZXEubmV4dDsgbm9kZV9kYXRhID0gZGF0YTsgbm9kZV9hY3RpdmUgPSB0cnVlIH0gaW5cbiAgc2VxLm5leHQucHJldiA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBzZXEubmV4dCA8LSBzZXFfb2Zfbm9kZSBub2RlO1xuICBub2RlXG5cbmxldCBhZGRfciBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXEucHJldjsgbm9kZV9uZXh0ID0gc2VxOyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEucHJldi5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IHRha2VfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5uZXh0IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX3Igc2VxID1cbiAgaWYgaXNfZW1wdHkgc2VxIHRoZW5cbiAgICByYWlzZSBFbXB0eVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfbCBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdGFrZV9vcHRfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLnByZXYgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBTb21lIG5vZGUubm9kZV9kYXRhXG4gIGVuZFxuXG5sZXQgdHJhbnNmZXJfbCBzMSBzMiA9XG4gIHMyLm5leHQucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczIubmV4dDtcbiAgczIubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IHRyYW5zZmVyX3IgczEgczIgPVxuICBzMi5wcmV2Lm5leHQgPC0gczEubmV4dDtcbiAgczEubmV4dC5wcmV2IDwtIHMyLnByZXY7XG4gIHMyLnByZXYgPC0gczEucHJldjtcbiAgczEucHJldi5uZXh0IDwtIHMyO1xuICBzMS5wcmV2IDwtIHMxO1xuICBzMS5uZXh0IDwtIHMxXG5cbmxldCBpdGVyX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZS5ub2RlX2RhdGE7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGl0ZXJfbm9kZV9sIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW4gYmVnaW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuIGYgbm9kZTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgaXRlcl9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmb2xkX2wgZiBzZXEgYWNjID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgYWNjID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IChmIG5vZGUubm9kZV9kYXRhIGFjYylcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dCBhY2NcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCBhY2NcblxubGV0IGZvbGRfciBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2IGFjY1xuICBpblxuICBsb29wIHNlcS5wcmV2IGFjY1xuXG5sZXQgZmluZF9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLm5leHRcblxubGV0IGZpbmRfbm9kZV9yIGYgc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgPVxuICAgIGlmIGN1cnIgIT0gc2VxIHRoZW5cbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGlmIGYgbm9kZS5ub2RlX2RhdGEgdGhlblxuICAgICAgICAgIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgIGVsc2VcbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICBpblxuICBsb29wIHNlcS5wcmV2XG5cbmxldCBmaW5kX25vZGVfb3B0X2wgZiBzZXEgPVxuICB0cnkgU29tZSAoZmluZF9ub2RlX2wgZiBzZXEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubGV0IGZpbmRfbm9kZV9vcHRfciBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfciBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBSZWFkaW5nIGd1aWRlXG5cbiAgIFdlbGNvbWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMd3QgY29yZSEgVGhpcyBpcyBhIGJpZyBmaWxlLCBidXQgd2VcbiAgIGhvcGUgdGhhdCByZWFkaW5nIGl0IChwYXJ0cyBhdCBhIHRpbWUhKSB3aWxsIG5vdCBiZSBzY2FyeSA6KSBIZXJlIGlzIHdoeTpcblxuXG4gICAqIFNlY3Rpb25pbmdcblxuICAgVGhlIGNvZGUgaXMgYnJva2VuIHVwIGludG8gc2VjdGlvbnMsIGVhY2ggb25lIG9mIHdoaWNoIGlzIGFuIGludGVybmFsIG1vZHVsZS5cbiAgIE1vc3Qgb2YgdGhlIG1vZHVsZXMgaGF2ZSBhIHNpZ25hdHVyZSwgd2hpY2ggc2VydmVzIGFzIGEgbmVhdCB0YWJsZSBvZlxuICAgY29udGVudHMuXG5cbiAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhpcyBmaWxlIHdpdGggY29kZSBmb2xkaW5nIGVuYWJsZWQuIElmIHlvdVxuICAgZm9sZCBhbGwgdGhlIG1vZHVsZXMsIHlvdSBjYW4gdmlzdWFsaXplIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiBMd3QgcXVpdGVcbiAgIGVhc2lseS4gWW91IGNhbiB0aGVuIGV4cGFuZCBtb2R1bGVzIGFzIG5lZWRlZCwgZGVwZW5kaW5nIG9uIHdoYXQgcGFydCBvZiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gV2l0aG91dCBjb2RlIGZvbGRpbmcsIHlvdSBmYWNlIGFuXG4gICBpbnRpbWlkYXRpbmcgd2FsbCBvZiBjb2RlIDooIFlvdSBjYW4gc3RpbGwgdmlzdWFsbHkgcGFyc2UgdGhlIGZpbGUsIGhvd2V2ZXIsXG4gICBiZWNhdXNlIHRoZXJlIGFyZSBwbGVudHkgb2YgYmxhbmsgbGluZXMgdG8gaGVscCBzZWN0aW9uIHRoaW5ncyBvZmYuIFlvdSBjYW5cbiAgIGFsc28gdmlldyB0aGlzIGZpbGUgZm9sZGVkIG9ubGluZTpcblxuICAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hYW50cm9uLzlmYWIwYmRlYWQ5OGE2MGZjY2YwNmUwMTg5MTg2ODYzXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOTdiNTg1MjBkNWJiNDg1OGNjYWM2ZjU0NzAwYTI0ZDdcblxuICAgVGhlIHNpZ25hdHVyZXMgYXJlIHVudXN1YWw6IGJpZyBjb21tZW50cyBhcmUgYWJzZW50LiBUaGV5IGFyZSBtb3ZlZCBpbnRvIHRoZVxuICAgbW9kdWxlcywgc28gdGhhdCB0aGV5IGFyZSBoaWRkZW4gYnkgY29kZSBmb2xkaW5nIHdoZW4geW91ICh0aGUgcmVhZGVyISkgYXJlXG4gICBub3QgaW50ZXJlc3RlZCBpbiB0aG9zZSBtb2R1bGVzLlxuXG5cbiAgICogRG9jdW1lbnRhdGlvblxuXG4gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWdpbnMgd2l0aCBhbiBvdmVydmlldyBvZiBtYWpvciBjb25jZXB0cyBhbmQgY29tcG9uZW50cy5cbiAgIFRoaXMgb3ZlcnZpZXcgcHV0cyBldmVyeXRoaW5nIGludG8gY29udGV4dC4gWW91IGRvbid0IGhhdmUgdG8gcmVhZCB0aGUgd2hvbGVcbiAgIHRoaW5nLiBUaGUgb3ZlcnZpZXcgYmVnaW5zIHdpdGggYmFzaWMgY29uY2VwdHMsIG1vdmVzIG9uIHRvIGFkdmFuY2VkIG9uZXMsXG4gICBhbmQgdGhlbiBnZXRzIGludG8gdGhlIHRydWx5IGVzb3RlcmljLiBZb3UgY2FuIHJlYWQgYWJvdXQgZWFjaCBjb25jZXB0IG9uIGFuXG4gICBhcy1uZWVkZWQgYmFzaXMuIEhvd2V2ZXIsIG9uY2UgeW91IGhhdmUgcmVhZCB0aGUgd2hvbGUgb3ZlcnZpZXcsIHlvdSB3aWxsIGJlXG4gICBhd2FyZSBvZiAqZXZlcnl0aGluZyogdGhhdCBpcyBuZWVkZWQgdG8gdW5kZXJzdGFuZCwgYW5kIHdvcmsgd2l0aCwgdGhlIGNvcmVcbiAgIG9mIEx3dC5cblxuICAgTGl0dGVyZWQgaW4gdGhlIGNvZGUgYXJlIGFkZGl0aW9uYWwgY29tbWVudHMsIHRoYXQgZ28gaW4tZGVwdGggb24gdmFyaW91c1xuICAgbG9jYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscywgb3Bwb3J0dW5pdGllcywgcmVncmV0cywgYW5kIHRoZSBsaWtlLlxuXG4gICBUaGUgc2VjdGlvbnMgKG1vZHVsZXMpIG9mIHRoZSBjb2RlIGNvcnJlc3BvbmQgY2xvc2VseSB0byBzZWN0aW9ucyBvZiB0aGVcbiAgIG92ZXJ2aWV3LlxuXG5cbiAgICogV2hpdGVzcGFjZVxuXG4gICBUaGUgdG90YWwgbGluZSBjb3VudCBvZiB0aGlzIGZpbGUgbWF5IHNlZW0gZnJpZ2h0ZW5pbmcsIGJ1dCBvbmUgdGhpcmQgb2YgaXRcbiAgIGlzIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzLCBib3RoIHRoZXJlIHRvIGhlbHAgeW91IHJlYWQgdGhlIHJlbWFpbmluZyB0d29cbiAgIHRoaXJkcyFcblxuICAgQWxzbywgd2l0aGluIHRob3NlIHR3byB0aGlyZHMsIHRoZXJlIGFyZSBsYXJnZSBncm91cHMgb2YgZnVuY3Rpb25zIHRoYXQgYXJlXG4gICByZXBldGl0aXZlIGFuZCBmb3JtdWxhaWMsIHNvIHRoZXJlIGlzIG11Y2ggbGVzcyBjb25jZXB0dWFsbHktdW5pcXVlIGNvZGUgaW5cbiAgIEx3dCB0aGFuIHlvdSBtaWdodCB0aGluayBhdCBmaXJzdC5cblxuXG4gICAqIFBsZWFzZSBlZGl0IHRoZSBjb2RlIGFuZCB0aGUgZG9jcyFcblxuICAgVGhpcyBjb2RlIGlzIG1lYW50IHRvIGJlIHJlYWRhYmxlLCBhbmQgdG8gYmUgZWRpdGVkLiBJZiB5b3UgYXJlIHJlYWRpbmdcbiAgIHNvbWV0aGluZywgYW5kIHRoaW5rIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0LCBwbGVhc2UgZ28gYWhlYWQgYW5kXG4gICBvcGVuIGEgcHVsbCByZXF1ZXN0IHRvIHRoZSBMd3QgcmVwb3NpdG9yeSBhdFxuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dFxuXG4gICBFdmVuIGlmIHlvdXIgcHVsbCByZXF1ZXN0IHNvbWVob3cgZG9lc24ndCBnZXQgbWVyZ2VkLCB5b3Ugd2lsbCBoYXZlIGVkdWNhdGVkXG4gICB0aGUgbWFpbnRhaW5lcnMsIG5vdCB0byBtZW50aW9uIG90aGVyIGNvbnRyaWJ1dG9ycywgYW5kIHVzZXJzLiBUaGlzIGlzIHRydWVcbiAgIGV2ZW4gaWYgdGhlIGNoYW5nZSBpcyB0cml2aWFsIC0tIHNvbWV0aW1lcywgbWFpbnRhaW5lcnMganVzdCBuZWVkIHRvIGJlXG4gICBlZHVjYXRlZCBtdWx0aXBsZSB0aW1lcyBiZWZvcmUgdGhleSBzZWUgdGhlIHdpc2RvbSBvZiBpdCA6L1xuXG4gICBMaWtld2lzZSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBhIGNvZGUgY29udHJpYnV0aW9uIHRvIHRoZSBMd3QgY29yZSwgaXRcbiAgIGlzIHF1aXRlIHdlbGNvbWUsIGFuZCB3ZSBob3BlIHRoYXQgdGhpcyBjb2RlIGlzIHJlYWRhYmxlIGVub3VnaCBmb3IgeW91IHRvIGJlXG4gICBhYmxlIHRvIG1ha2UgaXQhXG5cblxuICAgRW5qb3khICopXG5cblxuXG4oKiBPdmVydmlld1xuXG4gICBJbiB0aGlzIGZpbGUsIHRoZXJlIGlzIGEgXCJtb2RlbFwiIGZ1bmN0aW9uIC0tIFtMd3QuYmluZF0gLS0gd2hpY2ggcHVsbHNcbiAgIHRvZ2V0aGVyIG1hbnkgKHRob3VnaCBub3QgYWxsKSBvZiB0aGUgY29uY2VwdHMgYW5kIGhlbHBlcnMgZGlzY3Vzc2VkIGluIHRoaXNcbiAgIG92ZXJ2aWV3LiBUbyBmaW5kIGl0LCBzZWFyY2ggZm9yIFwibGV0IGJpbmQsXCIgYW5kIHlvdSBjYW4gZXhhbWluZSBpdCB3aGlsZVxuICAgcmVhZGluZyB0aGUgb3ZlcnZpZXcuIFRoZSBhdXRob3JzIG9mIHRoaXMgZmlsZSBpbnRlbmQgdG8gcHV0IGV4dHJhIGVmZm9ydFxuICAgaW50byB3cml0aW5nIG5pY2UgY29tbWVudHMgaW5zaWRlIFtMd3QuYmluZF0gOilcblxuXG4gICAwLiBNYWluIG1lY2hhbmlzbSBhbmQgdHdvIGFzcGVjdHNcblxuICAgVGhlIEx3dCBpbnRlcmZhY2UgKFtsd3QubWxpXSkgcHJvdmlkZXMgb25lIG1haW4gbWVjaGFuaXNtLCBwcm9taXNlcywgYW5kIHR3b1xuICAgXCJhc3BlY3RzLFwiIHdoaWNoIGFyZSAqbm90KiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgbWFpbiBtZWNoYW5pc21cbiAgIHByb21pc2VzLCBidXQgdGhleSBhcmUgc3RpbGwgdGhlcmU6XG5cbiAgIC0gcHJvbWlzZSBjYW5jZWxsYXRpb25cbiAgIC0gc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gY2FuY2VsbGF0aW9uIG9yIHN0b3JhZ2UsIHlvdSBjYW4gaWdub3JlIHRoZXNlXG4gICB0d28gY29tcGxpY2F0aW9ucywgYW5kIHN0aWxsIGdldCBhIHByZXR0eSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFRvXG4gICBoZWxwLCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBjYW5jZWxsYXRpb24gY29udGFpbiB0aGUgc3RyaW5nIFwiY2FuY2VsLFwiXG4gICBhbmQgYWxsIGlkZW50aWZpZXJzIHJlbGF0ZWQgdG8gc3RvcmFnZSBjb250YWluIFwic3RvcmFnZS5cIlxuXG5cbiAgIDEuIFByb21pc2VzXG5cbiAgIEEgcHJvbWlzZSBpcyBhIGNlbGwgdGhhdCBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IFwicmVzb2x2ZWRcIiBvclxuICAgXCJwZW5kaW5nLlwiXG5cbiAgIC0gUmVzb2x2ZWQgcHJvbWlzZXNcblxuICAgICBBIHJlc29sdmVkIHByb21pc2UgaXMgZWl0aGVyIFwiZnVsZmlsbGVkXCIgd2l0aCBhIHZhbHVlLCBvciBcInJlamVjdGVkXCIgd2l0aFxuICAgICBhbiBleGNlcHRpb24uIFRoZSBzdGF0ZSBvZiBhIHJlc29sdmVkIHByb21pc2Ugd2lsbCBuZXZlciBjaGFuZ2UgYWdhaW46IGFcbiAgICAgcmVzb2x2ZWQgcHJvbWlzZSBpcyBpbW11dGFibGUuIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBiYXNpY2FsbHkgZXF1aXZhbGVudFxuICAgICB0byBhbiBbKCdhLCBleG4pIFN0ZGxpYi5yZXN1bHRdLiBSZXNvbHZlZCBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdHdvXG4gICAgIHdheXM6XG5cbiAgICAgLSBbTHd0LnJldHVybl0sIFtMd3QuZmFpbF0sIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgcHJvZHVjZSBcInRyaXZpYWxcIlxuICAgICAgIHByb21pc2VzIHRoYXQgYXJlIHJlc29sdmVkIGZyb20gdGhlIHN0YXJ0LlxuICAgICAtIFRoZSBvdGhlciB3YXkgaXMgdG8gcmVzb2x2ZSBhIHByb21pc2UgdGhhdCBzdGFydGVkIG91dCBwZW5kaW5nLlxuXG4gICAgIE5vdGUgdGhhdCByZWplY3RlZCBwcm9taXNlcyBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmhhbmRsZWQgZXhjZXB0aW9ucy5cblxuICAgLSBQZW5kaW5nIHByb21pc2VzXG5cbiAgICAgLi4uYXJlIHRob3NlIHRoYXQgbWF5IGJlY29tZSByZXNvbHZlZCBpbiB0aGUgZnV0dXJlLiBFYWNoIHBlbmRpbmcgcHJvbWlzZVxuICAgICBjYXJyaWVzIGEgbGlzdCBvZiBjYWxsYmFja3MuIFRoZXNlIGNhbGxiYWNrcyBhcmUgYWRkZWQgYnkgZnVuY3Rpb25zIGxpa2VcbiAgICAgW0x3dC5iaW5kXSwgYW5kIGNhbGxlZCBieSBMd3QgaWYvd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4gVGhlc2VcbiAgICAgY2FsbGJhY2tzIHR5cGljYWxseSBlbmQgdXAgcmVzb2x2aW5nIGFkZGl0aW9uYWwgcHJvbWlzZXM7IHNlZSBzZWN0aW9uXG4gICAgIFwiUmVzb2x1dGlvbiBsb29wXCIgYmVsb3cuXG5cbiAgICAgUGVuZGluZyBwcm9taXNlcyBhcmUgcHJvZHVjZWQgaW4gdGhyZWUgd2F5cywgYWNjb3JkaW5nIHRvIGhvdyB0aGV5IGNhbiBiZVxuICAgICByZXNvbHZlZDpcblxuICAgICAtIEluaXRpYWwgcHJvbWlzZXNcblxuICAgICAgIC4uLmFyZSBjcmVhdGVkIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10uIFRoZSB1c2VyIG9mIEx3dCByZXNvbHZlc1xuICAgICAgIHRoZXNlIHByb21pc2VzIG1hbnVhbGx5LCB0aHJvdWdoIHRoZSByZXNvbHZlcnMgcmV0dXJuZWQgYnkgdGhvc2VcbiAgICAgICBmdW5jdGlvbnMuXG5cbiAgICAgLSBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5iaW5kXS4gVGhlc2UgcHJvbWlzZXMgb25seSBhcmUgb25seSByZXNvbHZlZCB3aGVuIHRoZVxuICAgICAgIHByZWNlZGluZyBzZXF1ZW5jZSBvZiBwcm9taXNlcyByZXNvbHZlcy4gVGhlIHVzZXIgY2Fubm90IHJlc29sdmUgdGhlc2VcbiAgICAgICBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gYmVsb3cpLlxuXG4gICAgIC0gQ29uY3VycmVudCBjb21wb3NpdGlvblxuXG4gICAgICAgRm9yIGV4YW1wbGUsIFtMd3Quam9pbl0gb3IgW0x3dC5jaG9vc2VdLiBUaGVzZSBwcm9taXNlcyBhcmUgb25seSByZXNvbHZlZFxuICAgICAgIHdoZW4gYWxsIG9yIG9uZSBvZiBhIHNldCBvZiBcInByZWNlZGluZ1wiIHByb21pc2VzIHJlc29sdmUuIFRoZSB1c2VyIGNhbm5vdFxuICAgICAgIHJlc29sdmUgdGhlc2UgcHJvbWlzZXMgZGlyZWN0bHkgKGJ1dCBzZWUgdGhlIHNlY3Rpb24gb24gY2FuY2VsbGF0aW9uXG4gICAgICAgYmVsb3cpLlxuXG5cbiAgIDIuIFJlc29sdmVyc1xuXG4gICBSZXNvbHZlcnMgYXJlIGdpdmVuIHRvIHRoZSB1c2VyIGJ5IFtMd3Qud2FpdF0gYW5kIFtMd3QudGFza10sIGFuZCBjYW4gYmUgdXNlZFxuICAgYnkgdGhlIHVzZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVzcG9uZGluZyBwcm9taXNlcy4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlXG4gICB1c2VyIG9ubHkgZXZlciBnZXRzIHJlc29sdmVycyBmb3IgaW5pdGlhbCBwcm9taXNlcy5cblxuICAgSW50ZXJuYWxseSwgcmVzb2x2ZXJzIGFyZSB0aGUgZXhhY3Qgc2FtZSBvYmplY3RzIGFzIHRoZSBwcm9taXNlcyB0aGV5XG4gICByZXNvbHZlLCBldmVuIHRob3VnaCB0aGUgcmVzb2x2ZXIgaXMgZXhwb3NlZCBhcyBhIHJlZmVyZW5jZSBvZiBhIGRpZmZlcmVudFxuICAgdHlwZSBieSBbbHd0Lm1saV0uIEZvciBkZXRhaWxzIG9uIHdoeSwgc2VlIHNlY3Rpb24gXCJUeXBlIHN5c3RlbSBhYnVzZVwiIGJlbG93LlxuXG5cbiAgIDMuIENhbGxiYWNrc1xuXG4gICAuLi5hcmUgYXR0YWNoZWQgYnkgTHd0IHRvIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCBhcmUgcnVuIGJ5IEx3dCBpZi93aGVuIHRob3NlXG4gICBwcm9taXNlcyBhcmUgcmVzb2x2ZWQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm90IGRpcmVjdGx5IGV4cG9zZWQgdGhyb3VnaFxuICAgW2x3dC5tbGldIC0tIHRoZXkgYXJlIGEgbG93LWxldmVsIG1lY2hhbmlzbS4gRm9yIGV4YW1wbGUsIHRvIGltcGxlbWVudFxuICAgW0x3dC5iaW5kIHAgZl0sIEx3dCBhdHRhY2hlcyBhIGNhbGxiYWNrIHRvIFtwXSB0aGF0IGRvZXMgc29tZSBpbnRlcm5hbCBMd3RcbiAgIGJvb2sta2VlcGluZywgYW5kIHRoZW4gY2FsbHMgW2ZdIGlmIFtwXSBpcyBmdWxmaWxsZWQsIGFuZCBkb2VzIHNvbWV0aGluZyBlbHNlXG4gICBpZiBbcF0gaXMgcmVqZWN0ZWQuXG5cbiAgIENhbGxiYWNrcyBjb21lIGluIHR3byBmbGF2b3JzOiByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy4gVGhlXG4gICBvbmx5IG1hdGVyaWFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbSBhcmUgdGhhdDpcblxuICAgLSByZWd1bGFyIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aGVuIGEgcHJvbWlzZSBpcyByZXNvbHZlZCwgYnV0IGNhbmNlbFxuICAgICBjYWxsYmFja3MgYXJlIGNhbGxlZCwgaW4gYWRkaXRpb24sIG9ubHkgaWYgdGhlIHByb21pc2UgaXMgY2FuY2VsZWQsIGFuZFxuICAgLSBhbGwgY2FuY2VsIGNhbGxiYWNrcyBvZiBhIHByb21pc2UgYXJlIGNhbGxlZCBiZWZvcmUgYW55IHJlZ3VsYXIgY2FsbGJhY2tcbiAgICAgaXMgY2FsbGVkLlxuXG4gICBDYW5jZWxsYXRpb24gaXMgYSBzcGVjaWFsIGNhc2Ugb2YgcmVzb2x1dGlvbiwgaW4gcGFydGljdWxhciwgYSBzcGVjaWFsIGNhc2VcbiAgIG9mIHJlamVjdGlvbiwgYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb24gbGF0ZXIgYmVsb3cuXG5cblxuICAgNC4gUmVzb2x1dGlvbiBsb29wXG5cbiAgIFJlc29sdmluZyBhIHBlbmRpbmcgcHJvbWlzZSB0cmlnZ2VycyBpdHMgY2FsbGJhY2tzLCBhbmQgdGhvc2UgbWlnaHQgcmVzb2x2ZVxuICAgbW9yZSBwZW5kaW5nIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBldGMuIFRoaXMgYmVoYXZpb3IgaXMgdGhlXG4gICAqcmVzb2x1dGlvbiBsb29wKi4gTHd0IGhhcyBzb21lIG1hY2hpbmVyeSB0byBhdm9pZCBzdGFjayBvdmVyZmxvdyBhbmQgb3RoZXJcbiAgIHVuZm9ydHVuYXRlIHNpdHVhdGlvbnMgZHVyaW5nIHRoaXMgbG9vcC5cblxuICAgVGhpcyBjaGFpbmluZyBvZiBwcm9taXNlIHJlc29sdXRpb25zIHRocm91Z2ggY2FsbGJhY2tzIGNhbiBiZSBzZWVuIGFzIGEga2luZFxuICAgb2YgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLCBpbiB3aGljaCB0aGUgbm9kZXMgYXJlIHBlbmRpbmcgcHJvbWlzZXMsIGFuZCB0aGVcbiAgIGVkZ2VzIGFyZSBjYWxsYmFja3MuIER1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wLCBMd3Qgc3RhcnRzIGF0IHNvbWUgaW5pdGlhbFxuICAgcHJvbWlzZSB0aGF0IGlzIGdldHRpbmcgcmVzb2x2ZWQgYnkgdGhlIHVzZXIsIGFuZCByZWN1cnNpdmVseSByZXNvbHZlcyBhbGxcbiAgIGRlcGVuZGVudCBwcm9taXNlcy4gVGhlIGdyYXBoIGlzIG1vZGlmaWVkOiByZXNvbHZlZCBwcm9taXNlcyBhcmUgbm8gbG9uZ2VyXG4gICBwZW5kaW5nLCBzbyB0aGV5IGFyZSBubyBsb25nZXIgcGFydCBvZiB0aGUgZ3JhcGguXG5cbiAgIFNvbWUgb2YgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHBsaWNpdCB0byBMd3QsIGUuZy4gdGhlIGNhbGxiYWNrcyByZWdpc3RlcmVkXG4gICBieSBbTHd0LmJpbmRdLiBPdGhlcnMgYXJlIG5vdCB2aXNpYmxlIHRvIEx3dCwgYmVjYXVzZSB0aGUgdXNlciBjYW4gYWx3YXlzXG4gICByZWdpc3RlciBhIGNhbGxiYWNrIHVzaW5nIGEgZnVuY3Rpb24gbGlrZSBbTHd0Lm9uX3N1Y2Nlc3NdLCBhbmQgdXNlIHRoYXRcbiAgIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5vdGhlciBpbml0aWFsIHByb21pc2UuIEFsbCB0aGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzXG4gICBhcmUgY3JlYXRlZCBieSBMd3QncyBvd24gc2VxdWVudGlhbCBhbmQgY29uY3VycmVudCBjb21wb3NpdGlvbiBmdW5jdGlvbnNcbiAgIChzbywgW0x3dC5iaW5kXSwgW0x3dC5qb2luXSwgZXRjKS4gV2hldGhlciBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IG9yIG5vdFxuICAgaXMgcmVsZXZhbnQgb25seSB0byBjYW5jZWxsYXRpb24uXG5cblxuICAgNS4gQ2FuY2VsbGF0aW9uXG5cbiAgIEFzIGRlc2NyaWJlZCBhYm92ZSwgb3JkaW5hcnkgcHJvbWlzZSByZXNvbHV0aW9uIHByb2NlZWRzIGZyb20gYW4gaW5pdGlhbFxuICAgcHJvbWlzZSwgZm9yd2FyZCBhbG9uZyBjYWxsYmFja3MgdGhyb3VnaCB0aGUgZGVwZW5kZW5jeSBncmFwaC4gU2luY2UgaXRcbiAgIHN0YXJ0cyBmcm9tIGFuIGluaXRpYWwgcHJvbWlzZSwgaXQgY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIHVzaW5nIGEgcmVzb2x2ZXIuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNvcnQgb2YgZHVhbCB0byBvcmRpbmFyeSByZXNvbHV0aW9uLiBJbnN0ZWFkIG9mIHN0YXJ0aW5nIGF0XG4gICBhbiBpbml0aWFsIHByb21pc2UvcmVzb2x2ZXIsIGNhbmNlbGxhdGlvbiBzdGFydHMgYXQgKmFueSogcHJvbWlzZS4gSXQgdGhlblxuICAgZ29lcyAqYmFja3dhcmRzKiB0aHJvdWdoIHRoZSBleHBsaWNpdCBkZXBlbmRlbmN5IGdyYXBoLCBsb29raW5nIGZvclxuICAgY2FuY2VsYWJsZSBpbml0aWFsIHByb21pc2VzIHRvIGNhbmNlbCAtLSB0aG9zZSB0aGF0IHdlcmUgY3JlYXRlZCBieVxuICAgW0x3dC50YXNrXS4gQWZ0ZXIgZmluZGluZyB0aGVtLCBjYW5jZWxsYXRpb24gcmVzb2x2ZXMgdGhlbSBub3JtYWxseSB3aXRoXG4gICBbUmVqZWN0ZWQgTHd0LkNhbmNlbGVkXSwgY2F1c2luZyBhbiBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2Vzcy5cblxuICAgVG8gc3VtbWFyaXplLCBjYW5jZWxsYXRpb24gaXMgYSB3YXkgdG8gdHJpZ2dlciBhbiAqb3JkaW5hcnkqIHJlc29sdXRpb24gb2ZcbiAgIHByb21pc2VzIGNyZWF0ZWQgd2l0aCBbTHd0LnRhc2tdLCBieSBmaXJzdCBzZWFyY2hpbmcgZm9yIHRoZW0gaW4gdGhlIHByb21pc2VcbiAgIGRlcGVuZGVuY3kgZ3JhcGggKHdoaWNoIGlzIGFzc2VtYmxlZCBieSBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLlxuXG4gICBUaGlzIGJhY2t3YXJkcyBzZWFyY2ggaXMgdHJpZ2dlcmVkIG9ubHkgYnkgW0x3dC5jYW5jZWxdLiBJdCBpcyBhbHNvIHBvc3NpYmxlXG4gICBmb3IgdGhlIHVzZXIgdG8gY2FuY2VsIGEgcHJvbWlzZSBkaXJlY3RseSBieSByZWplY3RpbmcgaXQgd2l0aFxuICAgW0x3dC5DYW5jZWxlZF0sIGJ1dCBpbiBhbGwgY2FzZXMgd2hlcmUgdGhlIHVzZXIgY2FuIGRvIHNvLCB0aGUgc2VhcmNoIHdvdWxkXG4gICBiZSByZWR1bmRhbnQgYW55d2F5IC0tIHRoZSB1c2VyIGhhcyBvbmx5IHR3byB3YXlzIG9mIGRpcmVjdGx5IHJlamVjdGluZyBhXG4gICBwcm9taXNlIHdpdGggW0x3dC5DYW5jZWxlZF0gKG9yIGFueSBleGNlcHRpb24sIGZvciB0aGF0IG1hdHRlcik6XG5cbiAgIC0gVGhlIHVzZXIgY2FuIGNyZWF0ZSBhbiBpbml0aWFsIHByb21pc2UsIHRoZW4gcmVqZWN0IGl0IHRocm91Z2ggaXRzXG4gICAgIHJlc29sdmVyLiBUaGUgc2VhcmNoIGlzIHJlZHVuZGFudCBiZWNhdXNlIGl0IHdvdWxkIGZpbmQgb25seSB0aGUgc2FtZVxuICAgICBpbml0aWFsIHByb21pc2UgdG8gY2FuY2VsLlxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGEgdHJpdmlhbCBwcm9taXNlIGJ5IGNhbGxpbmcgW0x3dC5mYWlsIEx3dC5DYW5jZWxlZF0uXG4gICAgIFRoZSBzZWFyY2ggaXMgYWdhaW4gcmVkdW5kYW50OyBpbiB0aGlzIGNhc2UgaXQgd291bGQgZmluZCBub3RoaW5nIHRvXG4gICAgIGNhbmNlbC5cblxuICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcXVpcms6IG9ubHkgcHJvbWlzZXMgY3JlYXRlZCBieSBbTHd0LnRhc2tdIGFyZVxuICAgc3VzY2VwdGlibGUgdG8gYmVpbmcgY2FuY2VsZWQgYnkgW0x3dC5jYW5jZWxdLCBidXQgdGhlIHVzZXIgY2FuIG1hbnVhbGx5XG4gICBjYW5jZWwgaW5pdGlhbCBwcm9taXNlcyBjcmVhdGVkIGJ5IGJvdGggW0x3dC50YXNrXSBhbmQgW0x3dC53YWl0XS5cblxuICAgRHVlIHRvIFtMd3QuY2FuY2VsXSwgcHJvbWlzZSBjYW5jZWxsYXRpb24sIGFuZCB0aGVyZWZvcmUgcmVzb2x1dGlvbiwgY2FuIGJlXG4gICBpbml0aWF0ZWQgYnkgdGhlIHVzZXIgd2l0aG91dCBhY2Nlc3MgdG8gYSByZXNvbHZlci4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yXG4gICByZWFzb25pbmcgYWJvdXQgc3RhdGUgY2hhbmdlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZFxuICAgaW4gc29tZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgNi4gTm8gSS9PXG5cbiAgIFRoZSBMd3QgY29yZSBkZWxpYmVyYXRlbHkgZG9lc24ndCBkbyBJL08uIFRoZSByZXNvbHV0aW9uIGxvb3Agc3RvcHMgcnVubmluZ1xuICAgb25jZSBubyBwcm9taXNlcyBjYW4gYmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuIEl0IGhhcyB0byBiZSByZXN0YXJ0ZWQgbGF0ZXJcbiAgIGJ5IHNvbWUgc3Vycm91bmRpbmcgSS9PIGxvb3AuIFRoaXMgSS9PIGxvb3AgdHlwaWNhbGx5IGtlZXBzIHRyYWNrIG9mIHBlbmRpbmdcbiAgIHByb21pc2VzIHRoYXQgcmVwcmVzZW50IGJsb2NrZWQgb3IgaW4tcHJvZ3Jlc3MgSS9POyBvdGhlciBwZW5kaW5nIHByb21pc2VzXG4gICB0aGF0IGluZGlyZWN0bHkgZGVwZW5kIG9uIEkvTyBhcmUgbm90IGV4cGxpY2l0bHkgdHJhY2tlZC4gVGhleSBhcmUgcmV0YWluZWRcbiAgIGluIG1lbW9yeSBieSByZWZlcmVuY2VzIGNhcHR1cmVkIGluc2lkZSBjYWxsYmFja3MuXG5cbiAgIE9uIFVuaXggYW5kIFdpbmRvd3MsIGEgc2VwYXJhdGUgdG9wLWxldmVsIGxvb3AsIHR5cGljYWxseSBbTHd0X21haW4ucnVuXSwgaXNcbiAgIG5lY2Vzc2FyeSB0byByZXBlYXRlZGx5IGNhbGwgW3NlbGVjdF0sIFtlcG9sbF0sIG9yIFtrZXZlbnRdLCBhbmQgcmVzb2x2ZVxuICAgYmxvY2tlZCBJL08gcHJvbWlzZXMuXG5cbiAgIEluIEphdmFTY3JpcHQsIHJlZmVyZW5jZXMgdG8gcHJvbWlzZXMgYXJlIHJldGFpbmVkIGJ5IEphdmFTY3JpcHQgY29kZSwgd2hpY2hcbiAgIGlzLCBpbiB0dXJuLCB0cmlnZ2VyZWQgYnkgdGhlIEpTIGVuZ2luZS4gSW4gb3RoZXIgd29yZHMsIHRoZSB0b3AtbGV2ZWwgbG9vcFxuICAgaXMgYnVyaWVkIGluc2lkZSB0aGUgSlMgZW5naW5lLlxuXG4gICBUaGlzIHNlcGFyYXRpb24gb2YgdGhlIEx3dCBjb3JlIGZyb20gdGhlIHRvcC1sZXZlbCBJL08gbG9vcCBrZWVwcyB0aGUgY29yZVxuICAgcG9ydGFibGUuXG5cblxuICAgNy4gUHJvbWlzZSBcInByb3h5aW5nXCJcblxuICAgSW4gW0x3dC5iaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdF0sIHRoZSBvdXRlciBbJ2IgdF0gaXMgY3JlYXRlZCBieVxuICAgW2JpbmRdIGZpcnN0LCBhbmQgcmV0dXJuZWQgdG8gdGhlIHVzZXIuIFRoZSBpbm5lciBbJ2IgdF0gaXMgY3JlYXRlZCBieSB0aGVcbiAgIHVzZXIgbGF0ZXIsIGFuZCB0aGVuIHJldHVybmVkIHRvIFtiaW5kXS4gQXQgdGhhdCBwb2ludCwgW2JpbmRdIG5lZWRzIHRvIG1ha2VcbiAgIHRoZSBpbm5lciBhbmQgb3V0ZXIgWydiIHRdcyBiZWhhdmUgaWRlbnRpY2FsbHkuXG5cbiAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IG1ha2luZyBvbmUgb2YgdGhlIHByb21pc2VzIHBvaW50IHRvIHRoZSBvdGhlci4gVGhlXG4gICBmaXJzdCBvZiB0aGUgcHJvbWlzZXMgdGh1cyBiZWNvbWVzIGEgXCJwcm94eSxcIiBhbmQgdGhlIG90aGVyIGlzIGl0c1xuICAgXCJ1bmRlcmx5aW5nXCIgcHJvbWlzZS5cblxuICAgQWZ0ZXIgdGhhdCwgYWxsIG9wZXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBwZXJmb3JtZWQgYnkgTHd0IG9uIHRoZSBwcm94eSBhcmVcbiAgIGluc3RlYWQgcGVyZm9ybWVkIG9uIHRoZSB1bmRlcmx5aW5nIHByb21pc2UuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgbnVtZXJvdXNcbiAgIGNhbGxzIHRvIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBbdW5kZXJseWluZ10gaW4gdGhpcyBmaWxlLlxuXG4gICBCZWNhdXNlIG9mIHRoZSBwZXJ2YXNpdmUgdXNlIG9mIFt1bmRlcmx5aW5nXSwgcHJveGllcyBjYW4gYmUgbW9yZSBvciBsZXNzXG4gICBpZ25vcmVkIG9uIGEgZmlyc3QgcmVhZGluZyB0aGUgY29kZS4gSG93ZXZlciwgYmVjb21pbmcgYSBwcm94eSBpcyBhIGtpbmQgb2ZcbiAgIHN0YXRlIGNoYW5nZSwgYW5kIGFueSBwcm9taXNlIHRoYXQgaXMgcmV0dXJuZWQgYnkgYSBjYWxsYmFjayB0byBbYmluZF0sIG9yIHRvXG4gICBhIHNpbWlsYXIgTHd0IGZ1bmN0aW9uLCBtaWdodCBiZWNvbWUgYSBwcm94eS4gVGhhdCBtZWFuczoganVzdCBhYm91dCBhbnlcbiAgIHByb21pc2UgdGhhdCBpcyBoYW5kZWQgdG8gdGhlIHVzZXIsIG1pZ2h0IGJlY29tZSBhIHByb3h5IHByb21pc2UgYnkgdGhlIG5leHRcbiAgIHRpbWUgTHd0IHNlZXMgaXQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciByZWFzb25pbmcgYWJvdXQgcG9zc2libGUgc3RhdGVcbiAgIGNoYW5nZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgTHd0LCBhbmQgaXMgcmVmZXJlbmNlZCBpbiBzb21lIGltcGxlbWVudGF0aW9uXG4gICBkZXRhaWwgY29tbWVudHMuXG5cblxuICAgOC4gU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlXG5cbiAgIEx3dCBoYXMgYSBnbG9iYWwga2V5LXZhbHVlIG1hcC4gVGhlIG1hcCBjYW4gYmUgcHJlc2VydmVkIGFjcm9zcyBzZXF1ZW50aWFsXG4gICBjb21wb3NpdGlvbiBmdW5jdGlvbnMsIHNvIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHN0YXRlIGluIHRoZSB1c2VyJ3MgY2FsbGJhY2tcbiAgIFtmXSBhcyBpdCBkaWQgYXQgdGhlIHRpbWUgdGhlIHVzZXIgY2FsbGVkIFtMd3QuYmluZCBwIGZdLlxuXG4gICBUaGUgZGV0YWlscyBhcmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIGRpc2N1c3NlZCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBUaGUgbWFpbiB0aGluZyB0byBiZSBhd2FyZSBvZiBpcyB0aGUgbWFueVxuICAgcmVmZXJlbmNlcyB0byBbY3VycmVudF9zdG9yYWdlXSB0aHJvdWdob3V0IEx3dCwgd2hpY2ggYXJlIG5lZWRlZCB0byBwcm9wZXJseVxuICAgc2F2ZSBhbmQgcmVzdG9yZSB0aGUgbWFwcGluZy5cblxuXG4gICA5LiBUeXBlIHN5c3RlbSBhYnVzZVxuXG4gICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgdHlwZSBzeXN0ZW0gc29tZXdoYXQgZXh0ZW5zaXZlbHkuIEdlbnRsZVxuICAgaW50cm9kdWN0aW9ucyBjYW4gYmUgZm91bmQgaGVyZTpcblxuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzdcbiAgICAgaHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90LzE2MS8xNlxuXG4gICBBIHNob3J0IHN1bW1hcnkgZm9sbG93cy5cblxuICAgVGhlIHByb21pc2Ugc3RhdGUgaXMsIGludGVybmFsbHksIGEgR0FEVCB3aGljaCBlbmNvZGVzIHRoZSBzdGF0ZSBpbiBpdHMgdHlwZVxuICAgcGFyYW1ldGVycy4gVGh1cywgaWYgeW91IGRvIFtsZXQgcCA9IHVuZGVybHlpbmcgcF0sIHRoZSBzaGFkb3dpbmcgcmVmZXJlbmNlXG4gICBbcF0gaXMgc3RhdGljYWxseSBrbm93biAqbm90KiB0byBiZSBhIHByb3h5LCBhbmQgdGhlIGNvbXBpbGVyIGtub3dzIHRoYXQgdGhlXG4gICBjb3JyZXNwb25kaW5nIG1hdGNoIGNhc2UgW1Byb3h5IF9dIGlzIGltcG9zc2libGUuXG5cbiAgIFRoZSBleHRlcm5hbCBwcm9taXNlIHR5cGUsIFsnYSB0XSwgYW5kIHRoZSBleHRlcm5hbCByZXNvbHZlciB0eXBlLCBbJ2EgdV0sXG4gICBhcmUgbm90IEdBRFRzLiBGdXJ0aGVybW9yZSwgdGhleSBhcmUsIHJlc3BlY3RpdmVseSwgY292YXJpYW50IGFuZFxuICAgY29udHJhdmFyaWFudCBpbiBbJ2FdLCB3aGlsZSB0aGUgaW50ZXJuYWwgcHJvbWlzZSB0eXBlIGlzIGludmFyaWFudCBpbiBbJ2FdLlxuICAgRm9yIHRoZXNlIHJlYXNvbnMsIHRoZXJlIGFyZSBuYXN0eSBjYXN0cyBiZXR3ZWVuIFsnYSB0XSwgWydhIHVdLCBhbmQgdGhlXG4gICBpbnRlcm5hbCBwcm9taXNlIHR5cGUuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcywgb2YgY291cnNlLCB3cml0dGVuIGluIHRlcm1zIG9mXG4gICB0aGUgaW50ZXJuYWwgdHlwZS5cblxuICAgQ2FzdGluZyBmcm9tIGFuIFsnYSB0XSB0byBhbiBpbnRlcm5hbCBwcm9taXNlIHByb2R1Y2VzIGEgcmVmZXJlbmNlIGZvclxuICAgd2hpY2ggdGhlIHN0YXRlIGlzIFwidW5rbm93blwiOiB0aGlzIGlzIHNpbXVsYXRlZCB3aXRoIGEgaGVscGVyIEdBRFQsIHdoaWNoXG4gICBlbmNvZGVzIGV4aXN0ZW50aWFsIHR5cGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBzaW1pbGFyIGNhc3RzLCB3aGljaCBhcmUgdXNlZFxuICAgdG8gZG9jdW1lbnQgcG9zc2libGUgc3RhdGUgY2hhbmdlcyBiZXR3ZWVuIHRoZSB0aW1lIGEgcHJvbWlzZSBpcyBjcmVhdGVkLFxuICAgYW5kIHRoZSBsYXRlciB0aW1lIGl0IGlzIHVzZWQgaW4gYSBjYWxsYmFjay4gWW91IGNhbiBzZWUgdGhlc2UgY2FzdHMgaW5cbiAgIGFjdGlvbiBpbiBbTHd0LmJpbmRdLiBUaGUgY2FzdCBzeW50YXggaXMgcHJldHR5IGxpZ2h0LCBhbmQsIGJlc2lkZXMgYmVpbmdcbiAgIGNvbW1lbnRlZCBpbiBbYmluZF0sIGFsbCBzdWNoIGNhc3RzIGFyZSBkb2N1bWVudGVkIGluIG1vZHVsZXMgW1B1YmxpY190eXBlc11cbiAgIGFuZCBbQmFzaWNfaGVscGVyc10uXG5cblxuICAgSWYgeW91J3ZlIG1hZGUgaXQgdGhpcyBmYXIsIHlvdSBhcmUgYW4gTHd0IGV4cGVydCEgUmVqb2ljZSEgKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbigqIFNvbWUgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIHR5cGVzXG5cbiAgIFNlcXVlbmNlLWFzc29jaWF0ZWQgc3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGxhdGVyLCBpbiBtb2R1bGVcbiAgIFtTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VdLiBIb3dldmVyLCB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBtZW50aW9uZWQgaW5cbiAgIHRoZSBkZWZpbml0aW9uIG9mIFtwcm9taXNlXSwgc28gdGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBmaXJzdC4gKilcbm1vZHVsZSBTdG9yYWdlX21hcCA9XG4gIE1hcC5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50XG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBlbmQpXG50eXBlIHN0b3JhZ2UgPSAodW5pdCAtPiB1bml0KSBTdG9yYWdlX21hcC50XG5cblxuXG5tb2R1bGUgTWFpbl9pbnRlcm5hbF90eXBlcyA9XG5zdHJ1Y3RcbiAgKCogUGhhbnRvbSB0eXBlcyBmb3IgdXNlIHdpdGggdHlwZXMgW3Byb21pc2VdIGFuZCBbc3RhdGVdLiBUaGVzZSBhcmUgbmV2ZXJcbiAgICAgY29uc3RydWN0ZWQ7IHRoZSBwdXJwb3NlIG9mIHRoZSBjb25zdHJ1Y3RvcnMgaXMgdG8gcHJvdmUgdG8gdGhlIHR5cGVcbiAgICAgY2hlY2tlciB0aGF0IHRoZXNlIHR5cGVzIGFyZSBkaXN0aW5jdCBmcm9tIGVhY2ggb3RoZXIuIFdhcm5pbmcgMzcsIFwidW51c2VkXG4gICAgIGNvbnN0cnVjdG9yLFwiIHRoZXJlZm9yZSBoYXMgdG8gYmUgdGVtcG9yYXJpbHkgc3VwcHJlc3NlZC4gKilcblxuICBbQEBAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgdW5kZXJseWluZyA9IHByaXZhdGUgVW5kZXJseWluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuICB0eXBlIHByb3h5ID0gcHJpdmF0ZSBQcm94eV9hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIHR5cGUgcmVzb2x2ZWQgPSBwcml2YXRlIFJlc29sdmVkX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcGVuZGluZyA9IHByaXZhdGUgUGVuZGluZ19hbmRfdGhpc19jb25zdHJ1Y3Rvcl9pc19ub3RfdXNlZFxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiKzM3XCJdXG5cblxuXG4gICgqIFByb21pc2VzIHByb3Blci4gKilcblxuICB0eXBlICgnYSwgJ3UsICdjKSBwcm9taXNlID0ge1xuICAgIG11dGFibGUgc3RhdGUgOiAoJ2EsICd1LCAnYykgc3RhdGU7XG4gIH1cblxuICBhbmQgKF8sIF8sIF8pIHN0YXRlID1cbiAgICB8IEZ1bGZpbGxlZCA6ICdhICAgICAgICAgICAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFJlamVjdGVkICA6IGV4biAgICAgICAgICAgICAgICAgLT4gKCBfLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcbiAgICB8IFBlbmRpbmcgICA6ICdhIGNhbGxiYWNrcyAgICAgICAgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSAgc3RhdGVcbiAgICB8IFByb3h5ICAgICA6ICgnYSwgXywgJ2MpIHByb21pc2UgLT4gKCdhLCBwcm94eSwgICAgICAnYykgICAgICAgc3RhdGVcblxuICAoKiBOb3RlOlxuXG4gICAgIEEgcHJvbWlzZSB3aG9zZSBzdGF0ZSBpcyBbUHJveHkgX10gaXMgYSBcInByb3h5XCIgcHJvbWlzZS4gQSBwcm9taXNlIHdob3NlXG4gICAgIHN0YXRlIGlzICpub3QqIFtQcm94eSBfXSBpcyBhbiBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICAgIFRoZSBcInVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcF1cIiBpczpcblxuICAgICAtIFtwXSwgaWYgW3BdIGlzIGl0c2VsZiB1bmRlcmx5aW5nLlxuICAgICAtIE90aGVyd2lzZSwgW3BdIGlzIGEgcHJveHkgYW5kIGhhcyBzdGF0ZSBbUHJveHkgcCddLiBUaGUgdW5kZXJseWluZ1xuICAgICAgIHByb21pc2Ugb2YgW3BdIGlzIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3AnXS5cblxuICAgICBJbiBvdGhlciB3b3JkcywgdG8gZmluZCB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGEgcHJveHksIEx3dCBmb2xsb3dzIHRoZVxuICAgICBbUHJveHkgX10gbGlua3MgdG8gdGhlIGVuZC4gKilcblxuICAoKiBOb3RlOlxuXG4gICAgIFdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBvciBiZWNvbWVzIGEgcHJveHksIGl0cyBzdGF0ZSBmaWVsZCBpc1xuICAgICBtdXRhdGVkLiBUaGlzIGludmFsaWRhdGVzIHRoZSB0eXBlIGludmFyaWFudHMgb24gdGhlIHByb21pc2UuIFNlZSBpbnRlcm5hbFxuICAgICBmdW5jdGlvbiBbc2V0X3Byb21pc2Vfc3RhdGVdIGZvciBkZXRhaWxzIGFib3V0IHRoYXQuXG5cbiAgICAgV2hlbiBhbiBMd3QgZnVuY3Rpb24gaGFzIGEgcmVmZXJlbmNlIHRvIGEgcHJvbWlzZSwgYW5kIGFsc28gcmVnaXN0ZXJzIGFcbiAgICAgY2FsbGJhY2sgdGhhdCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgcHJvbWlzZSwgdGhlIGludmFyaWFudHMgb24gdGhlXG4gICAgIHJlZmVyZW5jZSBtYXkgYmVjb21lIGludmFsaWQgYnkgdGhlIHRpbWUgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gQWxsIHN1Y2hcbiAgICAgY2FsbGJhY2tzIGhhdmUgY29tbWVudHMgZXhwbGFpbmluZyB3aGF0IHRoZSB2YWxpZCBpbnZhcmlhbnRzIGFyZSBhdCB0aGF0XG4gICAgIHBvaW50LCBhbmQvb3IgY2FzdHMgdG8gKDEpIGdldCB0aGUgY29ycmVjdCB0eXBpbmcgYW5kICgyKSBkb2N1bWVudCB0aGVcbiAgICAgcG90ZW50aWFsIHN0YXRlIGNoYW5nZSBmb3IgcmVhZGVycyBvZiB0aGUgY29kZS4gKilcblxuXG5cbiAgKCogQ2FsbGJhY2sgaW5mb3JtYXRpb24gZm9yIHBlbmRpbmcgcHJvbWlzZXMuICopXG5cbiAgYW5kICdhIGNhbGxiYWNrcyA9IHtcbiAgICBtdXRhYmxlIHJlZ3VsYXJfY2FsbGJhY2tzIDogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgY2FuY2VsX2NhbGxiYWNrcyAgOiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdDtcbiAgICBtdXRhYmxlIGhvd190b19jYW5jZWwgICAgIDogaG93X3RvX2NhbmNlbDtcbiAgICBtdXRhYmxlIGNsZWFudXBzX2RlZmVycmVkIDogaW50O1xuICB9XG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2sgPSAnYSByZXNvbHZlZF9zdGF0ZSAtPiB1bml0XG5cbiAgYW5kIGNhbmNlbF9jYWxsYmFjayA9IHVuaXQgLT4gdW5pdFxuXG4gIGFuZCAnYSByZXNvbHZlZF9zdGF0ZSA9ICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlXG5cbiAgYW5kIGhvd190b19jYW5jZWwgPVxuICAgIHwgTm90X2NhbmNlbGFibGUgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICBob3dfdG9fY2FuY2VsXG4gICAgfCBDYW5jZWxfdGhpc19wcm9taXNlICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lICAgICA6IChfLCBfLCBfKSBwcm9taXNlICAgICAgLT4gaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogKF8sIF8sIF8pIHByb21pc2UgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgYW5kICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdCAqICdhIHJlZ3VsYXJfY2FsbGJhY2tfbGlzdFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrIG9wdGlvbiByZWZcblxuICBhbmQgXyBjYW5jZWxfY2FsbGJhY2tfbGlzdCA9XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSA6XG4gICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgOlxuICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3QgKiAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgOlxuICAgICAgc3RvcmFnZSAqIGNhbmNlbF9jYWxsYmFjayAtPlxuICAgICAgICBfIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSA6XG4gICAgICAoJ2EsIF8sIF8pIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgLT5cbiAgICAgICAgJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RcblxuICAoKiBOb3RlczpcblxuICAgICBUaGVzZSB0eXBlIGRlZmluaXRpb25zIGFyZSBndWlsdHkgb2YgcGVyZm9ybWluZyBzZXZlcmFsIG9wdGltaXphdGlvbnMsXG4gICAgIHdpdGhvdXQgd2hpY2ggdGhleSB3b3VsZCBiZSBtdWNoIGVhc2llciB0byB1bmRlcnN0YW5kLlxuXG4gICAgIC0gVGhlIHR5cGUgcGFyYW1ldGVycyBvZiBbJ2EgcmVzb2x2ZWRfc3RhdGVdIGd1YXJhbnRlZSB0aGF0IGl0IGlzIGVpdGhlclxuICAgICAgIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLiBTbywgaXQgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0sIGFuZCwgaW5kZWVkLCBzaG91bGQgaGF2ZSBhbiBpZGVudGljYWxcbiAgICAgICBtZW1vcnkgcmVwcmVzZW50YXRpb24uXG5cbiAgICAgLSBBcyBwZXIgdGhlIE92ZXJ2aWV3LCB0aGVyZSBhcmUgcmVndWxhciBjYWxsYmFja3MgYW5kIGNhbmNlbCBjYWxsYmFja3MuXG4gICAgICAgQ2FuY2VsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIG9ubHkgb24gY2FuY2VsbGF0aW9uLCBhbmQsIHRoZW4sIGJlZm9yZSBhbnlcbiAgICAgICByZWd1bGFyIGNhbGxiYWNrcyBhcmUgY2FsbGVkLlxuXG4gICAgICAgRGVzcGl0ZSB0aGUgZGlmZmVyZW50IHR5cGVzIGZvciB0aGUgdHdvIGtpbmRzIG9mIGNhbGxiYWNrcywgdGhleSBhcmVcbiAgICAgICBvdGhlcndpc2UgdGhlIHNhbWUuIENhbmNlbCBjYWxsYmFja3MganVzdCBkb24ndCBuZWVkIGEgcmVzdWx0IHN0YXRlXG4gICAgICAgYXJndW1lbnQsIGJlY2F1c2UgaXQgaXMga25vd24gdG8gYmUgW1JlamVjdGVkIENhbmNlbGVkXS5cblxuICAgICAtIFJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBub3QgYWxsb3dlZCB0byByYWlzZSBleGNlcHRpb25zLiBBbGwgcmVndWxhclxuICAgICAgIGNhbGxiYWNrcyBhcmUgY3JlYXRlZCBpbiB0aGlzIGZpbGUsIHNvIHRoaXMgY2FuIGJlIGNoZWNrZWQuXG5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGNhbiByYWlzZSBleGNlcHRpb25zLCBidXQgaWYgdGhleSBkbyBzbywgdGhlIGV4Y2VwdGlvbnNcbiAgICAgICBhcmUgcGFzc2VkIHRvIFthc3luY19leGNlcHRpb25faG9va10uXG5cbiAgICAgLSBbaG93X3RvX2NhbmNlbF0gaW1wbGVtZW50cyB0aGUgZGVwZW5kZW5jeSBncmFwaCBtZW50aW9uZWQgaW4gdGhlXG4gICAgICAgT3ZlcnZpZXcuIEl0IGlzIHRyYXZlcnNlZCBiYWNrd2FyZHMgZHVyaW5nIFtMd3QuY2FuY2VsXS4gSXQgaXMgYSBHQURUXG4gICAgICAgYmVjYXVzZSB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwgdHlwZXMgb2YgdGhlIHByb21pc2UgcmVmZXJlbmNlc1xuICAgICAgIHN0b3JlZCwgb3IgdGhlaXIgaW52YXJpYW50cy4gVGhlIGNvbnN0cnVjdG9ycyBjb3JyZXNwb25kIHRvIHBlbmRpbmdcbiAgICAgICBwcm9taXNlIGtpbmRzIGFzIGZvbGxvd3M6XG4gICAgICAgICAtIFtOb3RfY2FuY2VsYWJsZV06IGluaXRpYWwsIFtMd3Qud2FpdF0uXG4gICAgICAgICAtIFtDYW5jZWxfdGhpc19wcm9taXNlXTogaW5pdGlhbCwgW0x3dC50YXNrXS5cbiAgICAgICAgIC0gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fb25lXTogc2VxdWVudGlhbCBjb21wb3NpdGlvbiwgZS5nLiBbTHd0LmJpbmRdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsXTogY29uY3VycmVudCBjb21wb3NpdGlvbiwgZS5nLlxuICAgICAgICAgICBbTHd0LmpvaW5dLlxuXG4gICAgIC0gVGhlIHR3byBjYWxsYmFjayBsaXN0IHR5cGVzIGFyZSBvcmRpbmFyeSBhcHBlbmQtZnJpZW5kbHkgbGlzdHMsIHdpdGggdHdvXG4gICAgICAgb3B0aW1pemF0aW9ucyBpbmxpbmVkOlxuXG4gICAgICAgLSBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhcHBhcmVudGx5IGhhcyB0d28gXCJraW5kc1wiIG9mIHJlZ3VsYXJcbiAgICAgICAgIGNhbGxiYWNrcywgaW1wbGljaXRseSByZW1vdmVkIGFuZCBleHBsaWNpdGx5IHJlbW92YWJsZS4gQWxsIGNhbGxiYWNrc1xuICAgICAgICAgYXJlIHJlbW92YWJsZS4gSXQncyBqdXN0IHRoYXQsIGZvciBzb21lIGNhbGxiYWNrcywgdGhleSB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlbW92ZWQgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBwcm9taXNlIHRoZXkgYXJlIGF0dGFjaGVkIHRvIGJlY29tZXNcbiAgICAgICAgIHJlc29sdmVkLiBXaGVuIHRoYXQgaGFwcGVucywgdGhlIGVudGlyZSBzdGF0ZSBvZiB0aGF0IHByb21pc2UgY2hhbmdlc1xuICAgICAgICAgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIGFuZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSB3aG9sZVxuICAgICAgICAgY2FsbGJhY2sgbGlzdCBpcyBzaW1wbHkgbG9zdC4gVGhpcyBcInJlbW92ZXNcIiB0aGUgY2FsbGJhY2suIEZvciB0aGVzZVxuICAgICAgICAgY2FsbGJhY2tzLCBbJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XSBhdHRlbXB0cyB0byB0cmltIGFuIG9wdGlvbiBhbmQgYVxuICAgICAgICAgcmVmZXJlbmNlIGNlbGwgd2l0aCB0aGVcbiAgICAgICAgIFtSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXSBjb25zdHJ1Y3Rvci5cblxuICAgICAgIC0gWydhIGNhbmNlbF9jYWxsYmFja19saXN0XSBoYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlXSwgd2hpY2ggaXMgdGhlIHNhbWUgYXNcbiAgICAgICAgIFtDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayAoXywgKGZ1biBfIC0+XG4gICAgICAgICAgIEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSkpXS5cbiAgICAgICAgIFRoaXMgd2FzIHByb2JhYmx5IGRvbmUgdG8gYXZvaWQgYSBjbG9zdXJlIGFsbG9jYXRpb24uXG5cbiAgICAgLSBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZCBpcyBleHBsYWluZWQgaW4gbW9kdWxlXG4gICAgICAgW1BlbmRpbmdfY2FsbGJhY2tzXS4gKilcbmVuZFxub3BlbiBNYWluX2ludGVybmFsX3R5cGVzXG5cblxuXG5tb2R1bGUgUHVibGljX3R5cGVzID1cbnN0cnVjdFxuICB0eXBlICsnYSB0XG4gIHR5cGUgLSdhIHVcblxuICBsZXQgdG9fcHVibGljX3Byb21pc2UgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdCA9IE9iai5tYWdpY1xuICBsZXQgdG9fcHVibGljX3Jlc29sdmVyIDogKCdhLCBfLCBfKSBwcm9taXNlIC0+ICdhIHUgPSBPYmoubWFnaWNcblxuICB0eXBlIF8gcGFja2VkX3Byb21pc2UgPVxuICAgIHwgSW50ZXJuYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgcGFja2VkX3Byb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCB0b19pbnRlcm5hbF9wcm9taXNlIChwIDogJ2EgdCkgOiAnYSBwYWNrZWRfcHJvbWlzZSA9XG4gICAgSW50ZXJuYWwgKE9iai5tYWdpYyBwKVxuICBsZXQgdG9faW50ZXJuYWxfcmVzb2x2ZXIgKHIgOiAnYSB1KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHIpXG5cbiAgKCogTW9zdCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgcHVibGljIHByb21pc2UgKFsnYSB0XSkgY29udmVydCBpdCB0byBhblxuICAgICBpbnRlcm5hbCBwcm9taXNlIGFzIGZvbGxvd3M6XG5cbiAgICAgICAoKiBwIDogJ2EgdCAqKVxuXG4gICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICgqIHAgOiAoJ2EsIHUsIGMpIHByb21pc2UsIHdoZXJlIHUgYW5kIGMgYXJlIGZyZXNoIHR5cGVzLCBpLmUuIHRoZVxuICAgICAgICAgIGludmFyaWFudHMgb24gcCBhcmUgdW5rbm93bi4gKilcblxuICAgICBUaGlzIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBJdCBvbmx5IHByb2R1Y2VzIGEgcmVmZXJlbmNlIHdpdGggYSBkaWZmZXJlbnRcbiAgICAgdHlwZS4gVGhlIGludHJvZHVjdGlvbiBhbmQgaW1tZWRpYXRlIGVsaW1pbmF0aW9uIG9mIFtJbnRlcm5hbCBfXSBzZWVtcyB0b1xuICAgICBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIE9DYW1sIHRoYXQgZG9uJ3QgaGF2ZSBGbGFtYmRhXG4gICAgIGFuZCBkb24ndCBzdXBwb3J0IFtbQEBvY2FtbC51bmJveGVkXV0uICopXG5cbiAgKCogVGhpcyBjb3VsZCBwcm9iYWJseSBzYXZlIGFuIGFsbG9jYXRpb24gYnkgdXNpbmcgW09iai5tYWdpY10uICopXG4gIGxldCBzdGF0ZV9vZl9yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgT2sgeCAtPiBGdWxmaWxsZWQgeFxuICAgIHwgRXJyb3IgZXhuIC0+IFJlamVjdGVkIGV4blxuZW5kXG5pbmNsdWRlIFB1YmxpY190eXBlc1xuXG5cblxubW9kdWxlIEJhc2ljX2hlbHBlcnMgOlxuc2lnXG4gIHZhbCBpZGVudGljYWwgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCBfLCBfKSBwcm9taXNlIC0+IGJvb2xcbiAgdmFsIHVuZGVybHlpbmcgOiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsICdjKSBwcm9taXNlXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIHNldF9wcm9taXNlX3N0YXRlIDpcbiAgICAoJ2EsIF8sIF8pIHByb21pc2UgLT4gKCdhLCAndSwgJ2MpIHN0YXRlIC0+ICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG4gIHZhbCBtYXlfbm93X2JlX3Byb3h5IDpcbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuZW5kID1cbnN0cnVjdFxuICAoKiBDaGVja3MgcGh5c2ljYWwgZXF1YWxpdHkgKFs9PV0pIG9mIHR3byBpbnRlcm5hbCBwcm9taXNlcy4gVW5saWtlIFs9PV0sIGRvZXNcbiAgICAgbm90IGZvcmNlIHVuaWZpY2F0aW9uIG9mIHRoZWlyIGludmFyaWFudHMuICopXG4gIGxldCBpZGVudGljYWwgcDEgcDIgPVxuICAgICh0b19wdWJsaWNfcHJvbWlzZSBwMSkgPT0gKHRvX3B1YmxpY19wcm9taXNlIHAyKVxuXG4gICgqIFt1bmRlcmx5aW5nIHBdIGV2YWx1YXRlcyB0byB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIFtwXS5cblxuICAgICBJZiBtdWx0aXBsZSBbUHJveHkgX10gbGlua3MgYXJlIHRyYXZlcnNlZCwgW3VuZGVybHlpbmddIHVwZGF0ZXMgYWxsIHRoZVxuICAgICBwcm94aWVzIHRvIHBvaW50IGltbWVkaWF0ZWx5IHRvIHRoZWlyIGZpbmFsIHVuZGVybHlpbmcgcHJvbWlzZS4gKilcbiAgbGV0IHJlYyB1bmRlcmx5aW5nXG4gICAgICA6IHR5cGUgdSBjLiAoJ2EsIHUsIGMpIHByb21pc2UgLT4gKCdhLCB1bmRlcmx5aW5nLCBjKSBwcm9taXNlID1cbiAgICBmdW4gcCAtPlxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiAocCA6IChfLCB1bmRlcmx5aW5nLCBfKSBwcm9taXNlKVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG4gICAgfCBQZW5kaW5nIF8gLT4gcFxuICAgIHwgUHJveHkgcCcgLT5cbiAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICBpZiBub3QgKGlkZW50aWNhbCBwJycgcCcpIHRoZW5cbiAgICAgICAgcC5zdGF0ZSA8LSBQcm94eSBwJyc7XG4gICAgICBwJydcblxuXG5cbiAgdHlwZSAoJ2EsICd1LCAnYykgc3RhdGVfY2hhbmdlZCA9XG4gICAgfCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG9mICgnYSwgJ3UsICdjKSBwcm9taXNlXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZSA9XG4gICAgbGV0IHAgOiAoXywgXywgXykgcHJvbWlzZSA9IE9iai5tYWdpYyBwIGluXG4gICAgcC5zdGF0ZSA8LSBzdGF0ZTtcbiAgICBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHBcblxuICAoKiBbc2V0X3Byb21pc2Vfc3RhdGUgcCBzdGF0ZV0gbXV0YXRlcyB0aGUgc3RhdGUgb2YgW3BdLCBhbmQgZXZhbHVhdGVzIHRvIGFcbiAgICAgKHdyYXBwZWQpIHJlZmVyZW5jZSB0byBbcF0gd2l0aCB0aGUgc2FtZSBpbnZhcmlhbnRzIGFzIG9uIFtzdGF0ZV0uIFRoZVxuICAgICBvcmlnaW5hbCByZWZlcmVuY2UgW3BdIHNob3VsZCBiZSBzaGFkb3dlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbjpcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIChGdWxmaWxsZWQgNDIpIGluIC4uLlxuXG4gICAgIFRoaXMgaXMgYSBraW5kIG9mIGNoZWFwIGltaXRhdGlvbiBvZiBsaW5lYXIgdHlwaW5nLCB3aGljaCBpcyBnb29kIGVub3VnaFxuICAgICBmb3IgdGhlIG5lZWRzIG9mIFtsd3QubWxdLlxuXG4gICAgIEludGVybmFsIGZ1bmN0aW9ucyB0aGF0IHRyYW5zaXRpdmVseSBjYWxsIFtzZXRfcHJvbWlzZV9zdGF0ZV0gbGlrZXdpc2VcbiAgICAgcmV0dXJuIHRoZSBuZXcgcmVmZXJlbmNlLiBUaGlzIGVuZHMgYXQgc29tZSB0b3AtbGV2ZWwgZnVuY3Rpb24sIHR5cGljYWxseVxuICAgICBlaXRoZXIgYSBjYWxsYmFjayBvciBhIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLiBUaGVyZSwgdGhlIG5ldyByZWZlcmVuY2VcbiAgICAgaXMgc3RpbGwgYm91bmQsIGJ1dCBpcyB0aGVuIGV4cGxpY2l0bHkgaWdub3JlZC5cblxuICAgICBUaGUgc3RhdGUgb2YgYSBwcm9taXNlIGlzIG5ldmVyIHVwZGF0ZWQgZGlyZWN0bHkgb3V0c2lkZSB0aGlzIG1vZHVsZVxuICAgICBbQmFzaWNfaGVscGVyc10uIEFsbCB1cGRhdGVzIGVsc2V3aGVyZSBhcmUgZG9uZSB0aHJvdWdoXG4gICAgIFtzZXRfcHJvbWlzZV9zdGF0ZV0uXG5cbiAgICAgVG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0eXBlLWxldmVsIGludmFyaWFudHMgbm90IG1hdGNoaW5nIHJlYWxpdHksIGRhdGFcbiAgICAgc3RydWN0dXJlcyBkbyBub3Qgc3RvcmUgcHJvbWlzZXMgd2l0aCBjb25jcmV0ZSBpbnZhcmlhbnRzIC0tIGV4Y2VwdFxuICAgICByZXNvbHZlZCBwcm9taXNlcywgd2hpY2ggYXJlIGltbXV0YWJsZS4gSW5kZWVkLCBpZiBvbmUgbG9va3MgYXRcbiAgICAgZGVmaW5pdGlvbnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgY2FuIHN0b3JlIHBlbmRpbmcgcHJvbWlzZXMsIGUuZy4gdGhlXG4gICAgIFtob3dfdG9fY2FuY2VsXSBncmFwaCwgdGhlIGludmFyaWFudHMgYXJlIGV4aXN0ZW50aWFsbHkgcXVhbnRpZmllZC5cblxuICAgICBOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIHN0YXRpY2FsbHkgZGlzYWxsb3cgdGhlIHNldHRpbmcgb2YgdGhlIFtzdGF0ZV0gZmllbGRcbiAgICAgYnkgbWFraW5nIHR5cGUgW3Byb21pc2VdIHByaXZhdGUuIEhvd2V2ZXIsIHRoYXQgc2VlbXMgdG8gcmVxdWlyZSB3cml0aW5nIGFcbiAgICAgc2lnbmF0dXJlIHRoYXQgaXMgYSBuZWFyLWR1cGxpY2F0ZSBvZiBbTWFpbl9pbnRlcm5hbF90eXBlc10sIG9yIHNvbWUgYWJ1c2VcbiAgICAgb2YgZnVuY3RvcnMuICopXG5cblxuXG4gIHR5cGUgJ2EgbWF5X25vd19iZV9wcm94eSA9XG4gICAgfCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgOlxuICAgICAgKCdhLCBfLCBwZW5kaW5nKSBwcm9taXNlIC0+ICdhIG1heV9ub3dfYmVfcHJveHlcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBtYXlfbm93X2JlX3Byb3h5IHAgPSBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcFxuXG4gICgqIE1hbnkgZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSBbTHd0LmJpbmRdIGFuZCBbTHd0LmpvaW5dLCBjcmVhdGUgYSBmcmVzaFxuICAgICBwZW5kaW5nIHByb21pc2UgW3BdIGFuZCByZXR1cm4gaXQgdG8gdGhlIHVzZXIuXG5cbiAgICAgVGhleSBkbyBub3QgcmV0dXJuIGEgY29ycmVzcG9uZGluZyByZXNvbHZlci4gVGhhdCBtZWFucyB0aGF0IG9ubHkgdGhlXG4gICAgIGZ1bmN0aW9uIGl0c2VsZiAodHlwaWNhbGx5LCBhIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkgaXQpIGNhbiByZXNvbHZlIFtwXS5cbiAgICAgVGhlIG9ubHkgdGhpbmcgdGhlIHVzZXIgY2FuIGRvIGRpcmVjdGx5IGlzIHRyeSB0byBjYW5jZWwgW3BdLCBidXQsIHNpbmNlXG4gICAgIFtwXSBpcyBub3QgYW4gaW5pdGlhbCBwcm9taXNlLCB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgc2ltcGx5IHByb3BhZ2F0ZXNcbiAgICAgcGFzdCBbcF0gdG8gW3BdJ3MgcHJlZGVjZXNzb3JzLiBJZiB0aGF0IGV2ZW50dWFsbHkgcmVzdWx0cyBpbiBjYW5jZWxpbmdcbiAgICAgW3BdLCBpdCB3aWxsIGJlIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc21zIG9mIHRoZSBmdW5jdGlvbiAoZS5nLlxuICAgICBbTHd0LmJpbmRdJ3MgY2FsbGJhY2spLlxuXG4gICAgIEFzIGEgcmVzdWx0LCB0aGUgb25seSBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2UsIGJlZm9yZSB0aGUgY2FsbGJhY2ssIGlzIHRoYXRcbiAgICAgW3BdIG1heSBoYXZlIGJlY29tZSBhIHByb3h5LiBOb3csXG5cbiAgICAgLSBJZiBbcF0gZG9lcyBub3QgdW5kZXJnbyB0aGlzIHN0YXRlIGNoYW5nZSBhbmQgYmVjb21lIGEgcHJveHksIGl0IHJlbWFpbnNcbiAgICAgICBhbiB1bmRlcmx5aW5nLCBwZW5kaW5nIHByb21pc2UuXG4gICAgIC0gSWYgW3BdIGRvZXMgYmVjb21lIGEgcHJveHksIGl0IHdpbGwgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBwcm9taXNlIFtwJ11cbiAgICAgICBjcmVhdGVkIGZyZXNoIGJ5IFtMd3QuYmluZF0sIHRvIHdoaWNoIHRoaXMgc2FtZSBhcmd1bWVudCBhcHBsaWVzLiBTZWVcbiAgICAgICBbbWFrZV9pbnRvX3Byb3h5XS5cblxuICAgICBTbywgYnkgaW5kdWN0aW9uIG9uIHRoZSBsZW5ndGggb2YgdGhlIHByb3h5IChbUHJveHkgX10pIGNoYWluLCBhdCB0aGUgdGltZVxuICAgICB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLCBbcF0gaXMgZWl0aGVyIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgVGhlIGNhc3RcblxuICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpbiAuLi5cblxuICAgICBlbmNvZGVzIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGlzIHN0YXRlIGNoYW5nZS4gSXQgcmVwbGFjZXMgYSByZWZlcmVuY2VcblxuICAgICAgIHAgOiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpXG5cbiAgICAgd2l0aFxuXG4gICAgICAgcCA6ICgnYSwgJFVua25vd24sIHBlbmRpbmcpXG5cbiAgICAgYW5kIGlzIHR5cGljYWxseSBzZWVuIGF0IHRoZSBiZWdpbm5pbmcgb2YgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgYnlcbiAgICAgW0x3dC5iaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMuXG5cbiAgICAgVGhlIGNhc3QgaXMgYSBuby1vcCBjYXN0LiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2ZcbiAgICAgW1N0YXRlX21heV9oYXZlX2NoYW5nZWQgX10gc2VlbXMgdG8gYmUgb3B0aW1pemVkIGF3YXkgZXZlbiBvbiBvbGQgdmVyc2lvbnNcbiAgICAgb2YgT0NhbWwuICopXG5lbmRcbm9wZW4gQmFzaWNfaGVscGVyc1xuXG4oKiBTbWFsbCBoZWxwZXJzIHRvIGF2b2lkIGNhdGNoaW5nIG9jYW1sLXJ1bnRpbWUgZXhjZXB0aW9ucyAqKVxubW9kdWxlIEV4Y2VwdGlvbl9maWx0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZXhuIC0+IGJvb2xcbiAgbGV0IGhhbmRsZV9hbGwgPSBmdW4gXyAtPiB0cnVlXG4gIGxldCBoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lID0gZnVuY3Rpb25cbiAgICB8IE91dF9vZl9tZW1vcnkgLT4gZmFsc2VcbiAgICB8IFN0YWNrX292ZXJmbG93IC0+IGZhbHNlXG4gICAgfCBfIC0+IHRydWVcbiAgbGV0IHYgPVxuICAgICgqIERlZmF1bHQgdmFsdWU6IHRoZSBsZWdhY3kgYmVoYXZpb3VyIHRvIGF2b2lkIGJyZWFraW5nIHByb2dyYW1zICopXG4gICAgcmVmIGhhbmRsZV9hbGxcbiAgbGV0IHNldCBmID0gdiA6PSBmXG4gIGxldCBydW4gZSA9ICF2IGVcbmVuZFxuXG5tb2R1bGUgU2VxdWVuY2VfYXNzb2NpYXRlZF9zdG9yYWdlIDpcbnNpZ1xuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIHR5cGUgJ3Yga2V5XG4gIHZhbCBuZXdfa2V5IDogdW5pdCAtPiBfIGtleVxuICB2YWwgZ2V0IDogJ3Yga2V5IC0+ICd2IG9wdGlvblxuICB2YWwgd2l0aF92YWx1ZSA6ICd2IGtleSAtPiAndiBvcHRpb24gLT4gKHVuaXQgLT4gJ2IpIC0+ICdiXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlICopXG4gIHZhbCBjdXJyZW50X3N0b3JhZ2UgOiBzdG9yYWdlIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGUgaWRlYSBiZWhpbmQgc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIHRvIHByZXNlcnZlIHNvbWUgdmFsdWVzXG4gICAgIGR1cmluZyBhIGNhbGwgdG8gW2JpbmRdIG9yIG90aGVyIHNlcXVlbnRpYWwgY29tcG9zaXRpb24gb3BlcmF0aW9uLCBhbmRcbiAgICAgcmVzdG9yZSB0aG9zZSB2YWx1ZXMgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOlxuXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT5cbiAgICAgICBwID58PSBmdW4gKCkgLT5cbiAgICAgICBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSlcbiAgICAgICAgICgqIFdpbGwgc3VjY2VlZCBldmVuIGlmIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGxhdGVyLiAqKVxuXG4gICAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtYXR0ZXIgdGhhdCB0aGUgY2FsbGJhY2sgaXMgZGVmaW5lZCB3aXRoaW4gYW5cbiAgICAgYXJndW1lbnQgb2YgW3dpdGhfdmFsdWVdLCBpLmUuLCB0aGlzIGRvZXMgdGhlIHNhbWU6XG5cbiAgICAgICBsZXQgZiA9IGZ1biAoKSAtPiBhc3NlcnQgKEx3dC5nZXQgbXlfa2V5ID0gU29tZSBcImZvb1wiKSBpblxuICAgICAgIEx3dC53aXRoX3ZhbHVlIG15X2tleSAoU29tZSBcImZvb1wiKSAoZnVuICgpIC0+IHAgPnw9IGYpXG5cbiAgICAgQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IHRoZSB0b3AtbW9zdCBzZXF1ZW5jaW5nIG9wZXJhdGlvbiAoaW4gdGhpcyBjYXNlLFxuICAgICBtYXApIGlzIGV4ZWN1dGVkIGJ5IHRoYXQgYXJndW1lbnQuXG5cbiAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHNpbmdsZSBnbG9iYWwgaGV0ZXJvZ2VuZW91cyBrZXktdmFsdWUgbWFwLlxuICAgICBTZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucyBzbmFwc2hvdCB0aGlzIG1hcCB3aGVuIHRoZXkgYXJlIGNhbGxlZCxcbiAgICAgYW5kIHJlc3RvcmUgdGhlIHNuYXBzaG90IHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZSB1c2VyJ3MgY2FsbGJhY2suIFRoZSBzYW1lXG4gICAgIGhhcHBlbnMgZm9yIGNhbmNlbCB0cmlnZ2VycyBhZGRlZCBieSBbb25fY2FuY2VsXS5cblxuICAgICBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB1c2luZyB0aGlzIG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzY291cmFnZWQgaW5cbiAgICAgbmV3IGNvZGUuICopXG5cbiAgdHlwZSAndiBrZXkgPSB7XG4gICAgaWQgOiBpbnQ7XG4gICAgbXV0YWJsZSB2YWx1ZSA6ICd2IG9wdGlvbjtcbiAgfVxuXG4gIGxldCBuZXh0X2tleV9pZCA9IHJlZiAwXG5cbiAgbGV0IG5ld19rZXkgKCkgPVxuICAgIGxldCBpZCA9ICFuZXh0X2tleV9pZCBpblxuICAgIG5leHRfa2V5X2lkIDo9IGlkICsgMTtcbiAgICB7aWQgPSBpZDsgdmFsdWUgPSBOb25lfVxuXG4gIGxldCBjdXJyZW50X3N0b3JhZ2UgPSByZWYgU3RvcmFnZV9tYXAuZW1wdHlcblxuICBsZXQgZ2V0IGtleSA9XG4gICAgaWYgU3RvcmFnZV9tYXAubWVtIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWZyZXNoID0gU3RvcmFnZV9tYXAuZmluZCBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgICAgcmVmcmVzaCAoKTtcbiAgICAgIGxldCB2YWx1ZSA9IGtleS52YWx1ZSBpblxuICAgICAga2V5LnZhbHVlIDwtIE5vbmU7XG4gICAgICB2YWx1ZVxuICAgIGVuZFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgd2l0aF92YWx1ZSBrZXkgdmFsdWUgZiA9XG4gICAgbGV0IG5ld19zdG9yYWdlID1cbiAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIGxldCByZWZyZXNoID0gZnVuICgpIC0+IGtleS52YWx1ZSA8LSB2YWx1ZSBpblxuICAgICAgICBTdG9yYWdlX21hcC5hZGQga2V5LmlkIHJlZnJlc2ggIWN1cnJlbnRfc3RvcmFnZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0b3JhZ2VfbWFwLnJlbW92ZSBrZXkuaWQgIWN1cnJlbnRfc3RvcmFnZVxuICAgIGluXG5cbiAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gbmV3X3N0b3JhZ2U7XG4gICAgdHJ5XG4gICAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByZXN1bHRcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICByYWlzZSBleG5cbmVuZFxuaW5jbHVkZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2VcblxuXG5cbm1vZHVsZSBQZW5kaW5nX2NhbGxiYWNrcyA6XG5zaWdcbiAgKCogTXV0YXRpbmcgY2FsbGJhY2sgbGlzdHMgYXR0YWNoZWQgdG8gcGVuZGluZyBwcm9taXNlcyAqKVxuICB2YWwgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayA6XG4gICAgJ2EgY2FsbGJhY2tzIC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IHVuaXRcbiAgdmFsIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb24gOlxuICAgICdhIHQgbGlzdCAtPiAnYSByZWd1bGFyX2NhbGxiYWNrIC0+IGNhbmNlbF9jYWxsYmFja1xuICB2YWwgYWRkX2NhbmNlbF9jYWxsYmFjayA6ICdhIGNhbGxiYWNrcyAtPiBjYW5jZWxfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgbWVyZ2VfY2FsbGJhY2tzIDogZnJvbTonYSBjYWxsYmFja3MgLT4gaW50bzonYSBjYWxsYmFja3MgLT4gdW5pdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT4gbDFcbiAgICB8IF8sIF8gLT4gUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gIGxldCBjb25jYXRfY2FuY2VsX2NhbGxiYWNrcyBsMSBsMiA9XG4gICAgYmVnaW4gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5LCBfIC0+IGwyXG4gICAgfCBfLCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMilcbiAgICBlbmQgW0BvY2FtbC53YXJuaW5nIFwiLTRcIl1cblxuICAoKiBJbiBhIGNhbGxiYWNrIGxpc3QsIGZpbHRlcnMgb3V0IGNlbGxzIG9mIGV4cGxpY2l0bHkgcmVtb3ZhYmxlIGNhbGxiYWNrc1xuICAgICB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiAqKVxuICBsZXQgcmVjIGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzID0gZnVuY3Rpb25cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayB7Y29udGVudHMgPSBTb21lIF99XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSBhcyBjYWxsYmFja3MgLT5cbiAgICAgIGNhbGxiYWNrc1xuXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpIC0+XG4gICAgICBsZXQgbDEgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMSBpblxuICAgICAgbGV0IGwyID0gY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgbDIgaW5cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBsMSBsMlxuXG4gICgqIFNlZSBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0gYW5kIFttZXJnZV9jYWxsYmFja3NdLiAqKVxuICBsZXQgY2xlYW51cF90aHJvdHRsZSA9IDQyXG5cbiAgKCogRXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzIGFyZSBhZGRlZCAobWFpbmx5KSBieSBbTHd0LmNob29zZV0gYW5kIGl0c1xuICAgICBzaW1pbGFyIGZ1bmN0aW9ucy4gSW4gW0x3dC5jaG9vc2UgW3A7IHAnXV0sIGlmIFtwJ10gcmVzb2x2ZXMgZmlyc3QsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCBieSBbTHd0LmNob29zZV0gdG8gW3BdIGlzIHJlbW92ZWQuXG5cbiAgICAgVGhlIHJlbW92YWwgaXRzZWxmIGlzIGFjY29tcGxpc2hlZCB3aGVuIHRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSByZWZlcmVuY2VcbiAgICAgY2VsbCBbY2VsbF0sIHdoaWNoIGNvbnRhaW5zIHRoZSByZWZlcmVuY2UgdG8gdGhhdCBjYWxsYmFjay5cblxuICAgICBJZiBbcF0gaXMgYSBsb25nLXBlbmRpbmcgcHJvbWlzZSB0aGF0IHJlcGVhdGVkbHkgcGFydGljaXBhdGVzIGluXG4gICAgIFtMd3QuY2hvb3NlXSwgcGVyaGFwcyBpbiBhIGxvb3AsIGl0IHdpbGwgYWNjdW11bGF0ZSBhIGxhcmdlIG51bWJlciBvZlxuICAgICBjbGVhcmVkIHJlZmVyZW5jZSBjZWxscyBpbiB0aGlzIGZhc2hpb24uIFRvIGF2b2lkIGEgbWVtb3J5IGxlYWssIHRoZXkgbXVzdFxuICAgICBiZSBjbGVhbmVkIHVwLiBIb3dldmVyLCB0aGUgY2VsbHMgYXJlIG5vdCBjbGVhbmVkIHVwIG9uICpldmVyeSogcmVtb3ZhbCxcbiAgICAgcHJlc3VtYWJseSBiZWNhdXNlIHNjYW5uaW5nIHRoZSBjYWxsYmFjayBsaXN0IHRoYXQgb2Z0ZW4sIGFuZCByZWJ1aWxkaW5nXG4gICAgIGl0LCBjYW4gZ2V0IGV4cGVuc2l2ZS5cblxuICAgICBDbGVhbnVwIGlzIHRocm90dGxlZCBieSBtYWludGFpbmluZyBhIGNvdW50ZXIsIFtjbGVhbnVwc19kZWZlcnJlZF0sIG9uIGVhY2hcbiAgICAgcGVuZGluZyBwcm9taXNlLiBUaGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiB3YW50c1xuICAgICB0byBjbGVhbiB0aGUgY2FsbGJhY2sgbGlzdCAocmlnaHQgYWZ0ZXIgY2xlYXJpbmcgYSBjZWxsKS4gV2hlbiB0aGUgY291bnRlclxuICAgICByZWFjaGVzIFtjbGVhbnVwX3Rocm90dGxlXSwgdGhlIGNhbGxiYWNrIGxpc3QgaXMgYWN0dWFsbHkgc2Nhbm5lZCBhbmRcbiAgICAgY2xlYXJlZCBjYWxsYmFjayBjZWxscyBhcmUgcmVtb3ZlZC4gKilcbiAgbGV0IGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcyA9XG4gICAgY2VsbCA6PSBOb25lO1xuXG4gICAgKCogR28gdGhyb3VnaCB0aGUgcHJvbWlzZXMgdGhlIGNlbGwgaGFkIG9yaWdpbmFsbHkgYmVlbiBhZGRlZCB0bywgYW5kIGVpdGhlclxuICAgICAgIGRlZmVyIGEgY2xlYW51cCwgb3IgYWN0dWFsbHkgY2xlYW4gdXAgdGhlaXIgY2FsbGJhY2sgbGlzdHMuICopXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICgqIFNvbWUgb2YgdGhlIHByb21pc2VzIG1heSBhbHJlYWR5IGhhdmUgYmVlbiByZXNvbHZlZCBhdCB0aGUgdGltZSB0aGlzXG4gICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuICopXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT4gKClcblxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBoYXMgb25seSBvbmUgcmVndWxhciBjYWxsYmFjaywgYW5kIGl0IGlzIHJlbW92YWJsZSwgaXRcbiAgICAgICAgICAgbXVzdCBoYXZlIGJlZW4gdGhlIGNlbGwgY2xlYXJlZCBpbiB0aGlzIGZ1bmN0aW9uLCBhYm92ZS4gSW4gdGhhdFxuICAgICAgICAgICBjYXNlLCBqdXN0IHNldCBpdHMgY2FsbGJhY2sgbGlzdCB0byBlbXB0eS4gKilcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogSSB0aGluayB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCB0cnkgdG8gdHJpZ2dlciBhXG4gICAgICAgICAgIGNsZWFudXAgaW4gdGhlIGZpcnN0IHR3byBjYXNlcywgYnV0IEkgYW0gcHJlc2VydmluZyB0aGVtIGZvciBub3csIGFzXG4gICAgICAgICAgIHRoaXMgaXMgaG93IHRoZSBjb2RlIHdhcyB3cml0dGVuIGluIHRoZSBwYXN0LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICAgIGxldCBjbGVhbnVwc19kZWZlcnJlZCA9IGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCArIDEgaW5cbiAgICAgICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlbiBiZWdpblxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIDA7XG4gICAgICAgICAgICBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3MgPC1cbiAgICAgICAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG4gICAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICAgIGNhbGxiYWNrcy5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZClcblxuICAoKiBDb25jYXRlbmF0ZXMgYm90aCBraW5kcyBvZiBjYWxsYmFja3Mgb24gW35mcm9tXSB0byB0aGUgY29ycmVzcG9uZGluZyBsaXN0c1xuICAgICBvZiBbfmludG9dLiBUaGUgY2FsbGJhY2sgbGlzdHMgb24gW35mcm9tXSBhcmUgKm5vdCogdGhlbiBjbGVhcmVkLCBiZWNhdXNlXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgYnkgW1NlcXVlbnRpYWxfY29tcG9zaXRpb24ubWFrZV9pbnRvX3Byb3h5XSxcbiAgICAgd2hpY2ggaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgW35mcm9tXSBhbmQgbG9zZXMgcmVmZXJlbmNlcyB0byB0aGVcbiAgICAgb3JpZ2luYWwgY2FsbGJhY2sgbGlzdHMuXG5cbiAgICAgVGhlIFtjbGVhbnVwc19kZWZlcnJlZF0gZmllbGRzIG9mIGJvdGggcHJvbWlzZXMgYXJlIHN1bW1lZCwgYW5kIGlmIHRoZSBzdW1cbiAgICAgZXhjZWVkcyBbY2xlYW51cF90aHJvdHRsZV0sIGEgY2xlYW51cCBvZiByZWd1bGFyIGNhbGxiYWNrcyBpcyB0cmlnZ2VyZWQuXG4gICAgIFRoaXMgaXMgdG8gcHJldmVudCBtZW1vcnkgbGVha3M7IHNlZVxuICAgICBbY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbF0uICopXG4gIGxldCBtZXJnZV9jYWxsYmFja3MgfmZyb20gfmludG8gPVxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcyA9XG4gICAgICBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgaW50by5yZWd1bGFyX2NhbGxiYWNrcyBmcm9tLnJlZ3VsYXJfY2FsbGJhY2tzIGluXG4gICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gaW50by5jbGVhbnVwc19kZWZlcnJlZCArIGZyb20uY2xlYW51cHNfZGVmZXJyZWQgaW5cblxuICAgIGxldCByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWQgPVxuICAgICAgaWYgY2xlYW51cHNfZGVmZXJyZWQgPiBjbGVhbnVwX3Rocm90dGxlIHRoZW5cbiAgICAgICAgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgcmVndWxhcl9jYWxsYmFja3MsIDBcbiAgICAgIGVsc2VcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MsIGNsZWFudXBzX2RlZmVycmVkXG4gICAgaW5cblxuICAgIGxldCBjYW5jZWxfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGludG8uY2FuY2VsX2NhbGxiYWNrcyBmcm9tLmNhbmNlbF9jYWxsYmFja3MgaW5cblxuICAgIGludG8ucmVndWxhcl9jYWxsYmFja3MgPC0gcmVndWxhcl9jYWxsYmFja3M7XG4gICAgaW50by5jYW5jZWxfY2FsbGJhY2tzIDwtIGNhbmNlbF9jYWxsYmFja3M7XG4gICAgaW50by5jbGVhbnVwc19kZWZlcnJlZCA8LSBjbGVhbnVwc19kZWZlcnJlZFxuXG5cblxuICAoKiBHZW5lcmFsLCBpbnRlcm5hbCwgZnVuY3Rpb24gZm9yIGFkZGluZyBhIHJlZ3VsYXIgY2FsbGJhY2suICopXG4gIGxldCBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGUgPVxuICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgIG5vZGVcbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfXG4gICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyBhcyBleGlzdGluZyAtPlxuICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChub2RlLCBleGlzdGluZylcblxuICBsZXQgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBjYWxsYmFja3MgZiA9XG4gICAgYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlXG4gICAgICBjYWxsYmFja3MgKFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZilcblxuICAoKiBBZGRzIFtjYWxsYmFja10gYXMgcmVtb3ZhYmxlIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdLiBUaGUgZmlyc3QgcHJvbWlzZSBpblxuICAgICBbcHNdIHRvIHRyaWdnZXIgW2NhbGxiYWNrXSByZW1vdmVzIFtjYWxsYmFja10gZnJvbSB0aGUgb3RoZXIgcHJvbWlzZXM7IHRoaXNcbiAgICAgZ3VhcmFudGVlcyB0aGF0IFtjYWxsYmFja10gaXMgY2FsbGVkIGF0IG1vc3Qgb25jZS4gQWxsIHRoZSBwcm9taXNlcyBpbiBbcHNdXG4gICAgIG11c3QgYmUgcGVuZGluZy5cblxuICAgICBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpbmRpcmVjdGx5IHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbTHd0LmNob29zZV0gYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiA9XG4gICAgbGV0IHJlYyBjZWxsID0gcmVmIChTb21lIHNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlcilcbiAgICBhbmQgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyIHJlc3VsdCA9XG4gICAgICBjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsIGNlbGwgfm9yaWdpbmFsbHlfYWRkZWRfdG86cHM7XG4gICAgICBmIHJlc3VsdFxuICAgIGluXG5cbiAgICBsZXQgbm9kZSA9IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBjZWxsIGluXG4gICAgcHMgfD4gTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT4gYWRkX3JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9ub2RlIGNhbGxiYWNrcyBub2RlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGFzc2VydCBmYWxzZSk7XG5cbiAgICBjZWxsXG5cbiAgbGV0IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGYgPVxuICAgIGlnbm9yZSAoYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZilcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBqdXN0IHRvIHN1cHBvcnQgW0x3dC5wcm90ZWN0ZWRdLCB3aGljaCBuZWVkcyB0byByZW1vdmVcbiAgICAgdGhlIGNhbGxiYWNrIGluIGNpcmN1bXN0YW5jZXMgb3RoZXIgdGhhbiB0aGUgY2FsbGJhY2sgYmVpbmcgY2FsbGVkLiAqKVxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiBwcyBmID1cbiAgICBsZXQgY2VsbCA9IGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9jZWxsIHBzIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwc1xuXG4gIGxldCBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBsZXQgbm9kZSA9IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrICghY3VycmVudF9zdG9yYWdlLCBmKSBpblxuXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIG1hdGNoIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIHdpdGhcbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIF9cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgXyAtPlxuICAgICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzKVxuZW5kXG5vcGVuIFBlbmRpbmdfY2FsbGJhY2tzXG5cblxuXG5tb2R1bGUgUmVzb2x1dGlvbl9sb29wIDpcbnNpZ1xuICAoKiBBbGwgdXNlci1wcm92aWRlZCBjYWxsYmFja3MgYXJlIGNhbGxlZCBieSBMd3Qgb25seSB0aHJvdWdoIHRoaXMgbW9kdWxlLiBJdFxuICAgICB0cmFja3MgdGhlIGN1cnJlbnQgY2FsbGJhY2sgc3RhY2sgZGVwdGgsIGFuZCBkZWNpZGVzIHdoZXRoZXIgZWFjaCBjYWxsYmFja1xuICAgICBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCBvciBub3QuICopXG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIHVzZWQgb25seSBpbiB0aGlzIG1vZHVsZSBMd3QgKilcbiAgdmFsIHJlc29sdmUgOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgICgnYSwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWRcblxuICB2YWwgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtIDpcbiAgICA/YWxsb3dfZGVmZXJyaW5nOmJvb2wgLT5cbiAgICA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOmludCAtPlxuICAgICgnYSBjYWxsYmFja3MpIC0+XG4gICAgJ2EgcmVzb2x2ZWRfc3RhdGUgLT5cbiAgICAgIHVuaXRcblxuICB2YWwgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0IDpcbiAgICA/cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOmJvb2wgLT5cbiAgICBjYWxsYmFjazoodW5pdCAtPiAnYSkgLT5cbiAgICBpZl9kZWZlcnJlZDoodW5pdCAtPiAnYSAqICdiIHJlZ3VsYXJfY2FsbGJhY2sgKiAnYiByZXNvbHZlZF9zdGF0ZSkgLT5cbiAgICAgICdhXG5cbiAgdmFsIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgYWJhbmRvbl93YWtldXBzIDogdW5pdCAtPiB1bml0XG5cbiAgKCogUHVibGljIGludGVyZmFjZSAqKVxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuICB2YWwgYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoZXhuIC0+IHVuaXQpIHJlZlxuZW5kID1cbnN0cnVjdFxuICAoKiBXaGVuIEx3dCBuZWVkcyB0byBjYWxsIGEgY2FsbGJhY2ssIGl0IGVudGVycyB0aGUgcmVzb2x1dGlvbiBsb29wLiBUaGlzXG4gICAgIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gTHd0IHNldHMgdGhlIHN0YXRlIG9mIG9uZSBwcm9taXNlIHRvIFtGdWxmaWxsZWQgX11cbiAgICAgb3IgW1JlamVjdGVkIF9dLiBUaGUgY2FsbGJhY2tzIHRoYXQgd2VyZSBhdHRhY2hlZCB0byB0aGUgcHJvbWlzZSB3aGVuIGl0XG4gICAgIHdhcyBwZW5kaW5nIG11c3QgdGhlbiBiZSBjYWxsZWQuXG5cbiAgICAgVGhpcyBhbHNvIGhhcHBlbnMgaW4gYSBmZXcgb3RoZXIgc2l0dWF0aW9ucy4gRm9yIGV4YW1wbGUsIHdoZW4gW0x3dC5iaW5kXVxuICAgICBpcyBjYWxsZWQgb24gYSBwcm9taXNlLCBidXQgdGhhdCBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZSBjYWxsYmFja1xuICAgICBwYXNzZWQgdG8gW2JpbmRdIG11c3QgYmUgY2FsbGVkLlxuXG4gICAgIFRoZSBjYWxsYmFja3MgdHJpZ2dlcmVkIGR1cmluZyB0aGUgcmVzb2x1dGlvbiBsb29wIG1pZ2h0IHJlc29sdmUgbW9yZVxuICAgICBwcm9taXNlcywgdHJpZ2dlcmluZyBtb3JlIGNhbGxiYWNrcywgYW5kIHNvIG9uLiBUaGlzIGlzIHdoYXQgbWFrZXMgdGhlXG4gICAgIHJlc29sdXRpb24gbG9vcCBhIHtlIGxvb3B9LlxuXG4gICAgIEx3dCBnZW5lcmFsbHkgdHJpZXMgdG8gY2FsbCBlYWNoIGNhbGxiYWNrIGltbWVkaWF0ZWx5LiBIb3dldmVyLCB0aGlzIGNhblxuICAgICBsZWFkIHRvIGEgcHJvZ3Jlc3NpdmUgZGVlcGVuaW5nIG9mIHRoZSBjYWxsIHN0YWNrLCB1bnRpbCB0aGVyZSBpcyBhIHN0YWNrXG4gICAgIG92ZXJmbG93LiBUaGlzIGNhbid0IGJlIGF2b2lkZWQgYnkgZG9pbmcgdGFpbCBjYWxscywgYmVjYXVzZSBMd3QgYWx3YXlzXG4gICAgIG5lZWRzIHRvIGRvIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgY2FsbGJhY2tzIGNhbGxzOiBlYWNoIGNhbGxiYWNrIGNhbGxcbiAgICAgaXMgZm9sbG93ZWQgYnkgYW4gZXhjZXB0aW9uIGhhbmRsZXIuIEluc3RlYWQsIHdoYXQgTHd0IGRvZXMgaXMgdHJhY2sgdGhlXG4gICAgIGN1cnJlbnQgY2FsbGJhY2sgY2FsbCBkZXB0aC4gT25jZSB0aGF0IGRlcHRoIHJlYWNoZXMgYSBjZXJ0YWluIG51bWJlcixcbiAgICAgW2RlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXSwgZGVmaW5lZCBiZWxvdywgZnVydGhlciBjYWxsYmFja3NcbiAgICAgYXJlIGRlZmVycmVkIGludG8gYSBxdWV1ZSBpbnN0ZWFkLiBUaGF0IHF1ZXVlIGlzIGRyYWluZWQgd2hlbiBMd3QgZXhpdHNcbiAgICAgZnJvbSB0aGUgdG9wLW1vc3QgY2FsbGJhY2sgY2FsbCB0aGF0IHRyaWdnZXJlZCB0aGUgcmVzb2x1dGlvbiBsb29wIGluIHRoZVxuICAgICBmaXJzdCBwbGFjZS5cblxuICAgICBUbyBlbnN1cmUgdGhhdCB0aGlzIGRlZmVycmFsIG1lY2hhbmlzbSBpcyBhbHdheXMgcHJvcGVybHkgaW52b2tlZCwgYWxsXG4gICAgIGNhbGxiYWNrcyBjYWxsZWQgYnkgTHd0IGFyZSBjYWxsZWQgdGhyb3VnaCBvbmUgb2YgdGhyZWUgZnVuY3Rpb25zIHByb3ZpZGVkXG4gICAgIGJ5IHRoaXMgbW9kdWxlOlxuXG4gICAgIC0gW3Jlc29sdmVdLCB3aGljaCBjYWxscyBhbGwgdGhlIGNhbGxiYWNrcyBhc3NvY2lhdGVkIHRvIGEgcGVuZGluZyBwcm9taXNlXG4gICAgICAgKGFuZCByZXNvbHZlcyBpdCwgY2hhbmdpbmcgaXRzIHN0YXRlKS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXSwgd2hpY2ggaXMgaW50ZXJuYWxseSB1c2VkIGJ5IFtyZXNvbHZlXSB0b1xuICAgICAgIGNhbGwgY2FsbGJhY2tzIHRoYXQgYXJlIGluIGEgcmVjb3JkIG9mIHR5cGUgWydhIGNhbGxiYWNrc10sIHdoaWNoIHJlY29yZHNcbiAgICAgICBhcmUgYXNzb2NpYXRlZCB3aXRoIHBlbmRpbmcgcHJvbWlzZXMuIFRoaXMgZnVuY3Rpb24gaXMgZXhwb3NlZCBiZWNhdXNlXG4gICAgICAgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgW0x3dC5jYW5jZWxdIG5lZWRzIHRvIGNhbGwgaXQgZGlyZWN0bHkuXG4gICAgICAgUHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjYWxsYmFjayBjYWxsaW5nIGFyZSBzZXBhcmF0ZWQgaW4gYSB1bmlxdWUgd2F5IGluXG4gICAgICAgW2NhbmNlbF0uXG4gICAgIC0gW3J1bl9jYWxsYmFja19vcl9kZWZlcl9pdF0sIHdoaWNoIGlzIHVzZWQgYnkgW0x3dC5iaW5kXSBhbmQgc2ltaWxhclxuICAgICAgIGZ1bmN0aW9ucyB0byBjYWxsIHNpbmdsZSBjYWxsYmFja3Mgd2hlbiB0aGUgcHJvbWlzZXMgcGFzc2VkIHRvXG4gICAgICAgW0x3dC5iaW5kXSwgZXRjLiwgYXJlIGFscmVhZHkgcmVzb2x2ZWQuXG5cbiAgICAgQ3VycmVudCBMd3QgYWN0dWFsbHkgaGFzIGEgbWVzc3kgbWl4IG9mIGNhbGxiYWNrLWNhbGxpbmcgYmVoYXZpb3JzLiBGb3JcbiAgICAgZXhhbXBsZSwgW0x3dC5iaW5kXSBpcyBleHBlY3RlZCB0byBhbHdheXMgY2FsbCBpdHMgY2FsbGJhY2sgaW1tZWRpYXRlbHksXG4gICAgIHdoaWxlIFtMd3Qud2FrZXVwX2xhdGVyXSBpcyBleHBlY3RlZCB0byBkZWZlciBhbGwgY2FsbGJhY2tzIG9mIHRoZSBwcm9taXNlXG4gICAgIHJlc29sdmVkLCB7ZSB1bmxlc3N9IEx3dCBpcyBub3QgYWxyZWFkeSBpbnNpZGUgdGhlIHJlc29sdXRpb24gbG9vcC5cblxuICAgICBXZSBwbGFubmVkIHRvIG1ha2UgdGhlc2UgYmVoYXZpb3JzIHVuaWZvcm0gaW4gTHd0IDQuMC4wLCBidXQgZGVjaWRlZFxuICAgICBhZ2FpbnN0IGl0IGR1ZSB0byB0aGUgcmlzayBvZiBicmVha2luZyB1c2Vycy4gU2VlXG5cbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MDBcbiAgICAgLSBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC81MTlcblxuICAgICBBcyBwYXJ0IG9mIHRoZSBwcmVwYXJhdGlvbiBmb3IgdGhlIGNoYW5nZSwgdGhlIGFib3ZlIGNhbGxiYWNrLWludm9raW5nXG4gICAgIGZ1bmN0aW9ucyBzdXBwb3J0IHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzIHRvIGVtdWxhdGUgdGhlIHZhcmlvdXNcbiAgICAgYmVoYXZpb3JzLiBXZSBkZWNpZGVkIG5vdCB0byByZW1vdmUgdGhpcyBtYWNoaW5lcnksIGJlY2F1c2Ugd2UgbWlnaHQgd2FudFxuICAgICB0byBleHBvc2UgZGlmZmVyZW50IEFQSXMgdG8gTHd0IGluIHRoZSBmdXR1cmUuXG5cbiAgICAgLSBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0gYWxsb3dzIGlnbm9yaW5nIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kXG4gICAgICAgY2FsbGluZyB0aGUgY2FsbGJhY2tzIGltbWVkaWF0ZWx5LiBUaGlzIGVtdWxhdGVzIHRoZSBvbGQgcmVzb2x1dGlvblxuICAgICAgIGJlaGF2aW9yLlxuICAgICAtIFt+bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoOjFdIGFsbG93cyBsaW1pdGluZyB0aGUgZGVwdGggd2hpY2hcbiAgICAgICB0cmlnZ2VycyBkZWZlcnJhbCBvbiBhIHBlci1jYWxsLXNpdGUgYmFzaXMuIFRoaXMgaXMgdXNlZCBieVxuICAgICAgIFtMd3Qud2FrZXVwX2xhdGVyXS5cbiAgICAgLSBbfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXSBpcyBsaWtlXG4gICAgICAgW35hbGxvd19kZWZlcnJpbmc6ZmFsc2VdLCB3aGljaCBpZ25vcmVzIHRoZSBjYWxsYmFjayBzdGFjayBkZXB0aC5cbiAgICAgICBIb3dldmVyLCB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGJhY2sgaXMgdGFpbC1jYWxsZWQsIEx3dCBkb2Vzbid0IGV2ZW5cbiAgICAgICB1cGRhdGUgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoIGZvciB0aGUgYmVuZWZpdCBvZiAqb3RoZXIqIGNhbGxiYWNrXG4gICAgICAgY2FsbHMuIEl0IGp1c3QgYmxpbmRseSBjYWxscyB0aGUgY2FsbGJhY2suXG5cbiAgICAgU2VlIGRpc2N1c3Npb24gb2YgY2FsbGJhY2stY2FsbGluZyBzZW1hbnRpY3MgaW46XG5cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvaXNzdWVzLzMyOVxuXG4gICAgICogQ29udGV4dFxuXG4gICAgIFRoZSByZXNvbHV0aW9uIGxvb3AgZWZmZWN0aXZlbHkgaGFuZGxlcyBhbGwgcHJvbWlzZXMgdGhhdCBjYW4gYmUgcmVzb2x2ZWRcbiAgICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYmxvY2tpbmcgb24gSS9PLiBBIGNvbXBsZXRlIHByb2dyYW0gdGhhdCBkb2VzIEkvT1xuICAgICBjYWxscyBbTHd0X21haW4ucnVuXS4gU2VlIFwiTm8gSS9PXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuXG5cblxuICBsZXQgYXN5bmNfZXhjZXB0aW9uX2hvb2sgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcHJlcnJfc3RyaW5nIFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmVycl9jaGFyICdcXG4nO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVycjtcbiAgICAgIGZsdXNoIHN0ZGVycjtcbiAgICAgIGV4aXQgMilcblxuICBsZXQgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2ID1cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYXJlIGlmIFtmXSBldmFsdWF0ZXMgdG8gYSBwcm9taXNlLiBJblxuICAgICAgIHBhcnRpY3VsYXIsIGlmIFtmIHZdIGV2YWx1YXRlcyB0byBbcF0gYW5kIFtwXSBpcyBhbHJlYWR5IHJlamVjdGVkIG9yIHdpbGxcbiAgICAgICBiZSByZWplY3QgbGF0ZXIsIGl0IGlzIG5vdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhpcyBmdW5jdGlvbiB0byBwYXNzXG4gICAgICAgdGhlIGV4Y2VwdGlvbiB0byBbIWFzeW5jX2V4Y2VwdGlvbl9ob29rXS4gKilcbiAgICB0cnkgZiB2XG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuXG5cbiAgZXhjZXB0aW9uIENhbmNlbGVkXG5cblxuXG4gICgqIFJ1bnMgdGhlIGNhbGxiYWNrcyAoZm9ybWVybHkpIGFzc29jaWF0ZWQgdG8gYSBwcm9taXNlLiBDYW5jZWwgY2FsbGJhY2tzIGFyZVxuICAgICBydW4gZmlyc3QsIGlmIHRoZSBwcm9taXNlIHdhcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZvbGxvd2VkIGJ5IHJlZ3VsYXJcbiAgICAgY2FsbGJhY2tzLlxuXG4gICAgIFRoZSByZWFzb24gZm9yIHRoZSBcImZvcm1lcmx5XCIgaXMgdGhhdCB0aGUgcHJvbWlzZSdzIHN0YXRlIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgc2V0IHRvIFtGdWxmaWxsZWQgX10gb3IgW1JlamVjdGVkIF9dLCBzbyB0aGUgY2FsbGJhY2tzIGFyZSBubyBsb25nZXJcbiAgICAgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHByb21pc2UgcmVmZXJlbmNlLiBUaGlzIGlzIHdoeSB0aGUgZGlyZWN0IFtjYWxsYmFja3NdXG4gICAgIHJlY29yZCBtdXN0IGJlIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBydW5fY2FsbGJhY2tzXG4gICAgICAoY2FsbGJhY2tzIDogJ2EgY2FsbGJhY2tzKVxuICAgICAgKHJlc3VsdCA6ICdhIHJlc29sdmVkX3N0YXRlKSA6IHVuaXQgPVxuXG4gICAgbGV0IHJ1bl9jYW5jZWxfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChzdG9yYWdlLCBmKSAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCk7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlIC0+XG4gICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlO1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICBsZXQgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGZzID1cbiAgICAgIGxldCByZWMgaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3QgPVxuICAgICAgICBtYXRjaCBmcyB3aXRoXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IC0+XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGYgLT5cbiAgICAgICAgICBmIHJlc3VsdDtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gTm9uZX0gLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja1xuICAgICAgICAgICAge2NvbnRlbnRzID0gU29tZSBmfSAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCAoZnMsIGZzJykgLT5cbiAgICAgICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgKGZzJzo6cmVzdClcblxuICAgICAgYW5kIGl0ZXJfbGlzdCByZXN0ID1cbiAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBmczo6cmVzdCAtPiBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdFxuXG4gICAgICBpblxuXG4gICAgICBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgW11cbiAgICBpblxuXG4gICAgKCogUGF0dGVybiBtYXRjaGluZyBpcyBtdWNoIGZhc3RlciB0aGFuIHBvbHltb3JwaGljIGNvbXBhcmlzb24uICopXG4gICAgbGV0IGlzX2NhbmNlbGVkID1cbiAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+IHRydWVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfY2FuY2VsZWQgdGhlblxuICAgICAgcnVuX2NhbmNlbF9jYWxsYmFja3MgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3M7XG4gICAgcnVuX3JlZ3VsYXJfY2FsbGJhY2tzIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrc1xuXG5cblxuICBsZXQgZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSA0MlxuXG4gIGxldCBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSByZWYgMFxuXG4gIHR5cGUgZGVmZXJyZWRfY2FsbGJhY2tzID1cbiAgICBEZWZlcnJlZCA6ICgnYSBjYWxsYmFja3MgKiAnYSByZXNvbHZlZF9zdGF0ZSkgLT4gZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgW0BAb2NhbWwudW5ib3hlZF1cblxuICBsZXQgZGVmZXJyZWRfY2FsbGJhY2tzIDogZGVmZXJyZWRfY2FsbGJhY2tzIFF1ZXVlLnQgPSBRdWV1ZS5jcmVhdGUgKClcblxuICAoKiBCZWZvcmUgZW50ZXJpbmcgYSByZXNvbHV0aW9uIGxvb3AsIGl0IGlzIG5lY2Vzc2FyeSB0byB0YWtlIGEgc25hcHNob3Qgb2ZcbiAgICAgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlLiBUaGlzIGlzIGJlY2F1c2UgbWFueSBvZlxuICAgICB0aGUgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBydW4gd2lsbCBtb2RpZnkgdGhlIHN0b3JhZ2UuIFRoZSBzdG9yYWdlIGlzXG4gICAgIHJlc3RvcmVkIHRvIHRoZSBzbmFwc2hvdCB3aGVuIHRoZSByZXNvbHV0aW9uIGxvb3AgaXMgZXhpdGVkLiAqKVxuICBsZXQgZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpID1cbiAgICBjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggOj0gIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCArIDE7XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBsZWF2ZV9yZXNvbHV0aW9uX2xvb3AgKHN0b3JhZ2Vfc25hcHNob3QgOiBzdG9yYWdlKSA6IHVuaXQgPVxuICAgIGlmICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggPSAxIHRoZW4gYmVnaW5cbiAgICAgIHdoaWxlIG5vdCAoUXVldWUuaXNfZW1wdHkgZGVmZXJyZWRfY2FsbGJhY2tzKSBkb1xuICAgICAgICBsZXQgRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSA9IFF1ZXVlLnBvcCBkZWZlcnJlZF9jYWxsYmFja3MgaW5cbiAgICAgICAgcnVuX2NhbGxiYWNrcyBjYWxsYmFja3MgcmVzdWx0XG4gICAgICBkb25lXG4gICAgZW5kO1xuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIC0gMTtcbiAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc3RvcmFnZV9zbmFwc2hvdFxuXG4gIGxldCBydW5faW5fcmVzb2x1dGlvbl9sb29wIGYgPVxuICAgIGxldCBzdG9yYWdlX3NuYXBzaG90ID0gZW50ZXJfcmVzb2x1dGlvbl9sb29wICgpIGluXG4gICAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgICBsZWF2ZV9yZXNvbHV0aW9uX2xvb3Agc3RvcmFnZV9zbmFwc2hvdDtcbiAgICByZXN1bHRcblxuICAoKiBUaGlzIGlzIGJhc2ljYWxseSBhIGhhY2sgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvNDguXG4gICAgIElmIGN1cnJlbnRseSByZXNvbHZpbmcgcHJvbWlzZXMsIGl0IGltbWVkaWF0ZWx5IGV4aXRzIGFsbCByZWN1cnNpdmVcbiAgICAgZW50cmllcyBvZiB0aGUgcmVzb2x1dGlvbiBsb29wLCBnb2VzIHRvIHRoZSB0b3AgbGV2ZWwsIHJ1bnMgYW55IGRlZmVycmVkXG4gICAgIGNhbGxiYWNrcywgYW5kIGV4aXRzIHRoZSB0b3AtbGV2ZWwgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFRoZSBuYW1lIHNob3VsZCBwcm9iYWJseSBiZSBbYWJhb25kb25fcmVzb2x1dGlvbl9sb29wXS4gKilcbiAgbGV0IGFiYW5kb25fd2FrZXVwcyAoKSA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA8PiAwIHRoZW5cbiAgICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBTdG9yYWdlX21hcC5lbXB0eVxuXG5cblxuICBsZXQgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/KGFsbG93X2RlZmVycmluZyA9IHRydWUpXG4gICAgICA/KG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoKVxuICAgICAgY2FsbGJhY2tzIHJlc3VsdCA9XG5cbiAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgIGFsbG93X2RlZmVycmluZ1xuICAgICAgJiYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA+PSBtYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICBpblxuXG4gICAgaWYgc2hvdWxkX2RlZmVyIHRoZW5cbiAgICAgIFF1ZXVlLnB1c2ggKERlZmVycmVkIChjYWxsYmFja3MsIHJlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrc1xuICAgIGVsc2VcbiAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHQpXG5cbiAgbGV0IHJlc29sdmUgP2FsbG93X2RlZmVycmluZyA/bWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoIHAgcmVzdWx0ID1cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgbGV0IHAgPSBzZXRfcHJvbWlzZV9zdGF0ZSBwIHJlc3VsdCBpblxuXG4gICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggY2FsbGJhY2tzIHJlc3VsdDtcblxuICAgIHBcblxuICBsZXQgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICA/KHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCA9IGZhbHNlKVxuICAgICAgfmNhbGxiYWNrOmZcbiAgICAgIH5pZl9kZWZlcnJlZCA9XG5cbiAgICBpZiBydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGwgdGhlblxuICAgICAgZiAoKVxuXG4gICAgZWxzZVxuICAgICAgbGV0IHNob3VsZF9kZWZlciA9XG4gICAgICAgICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGhcbiAgICAgICAgICA+PSBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgaW5cblxuICAgICAgaWYgc2hvdWxkX2RlZmVyIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGltbWVkaWF0ZV9yZXN1bHQsIGRlZmVycmVkX2NhbGxiYWNrLCBkZWZlcnJlZF9yZXN1bHQgPVxuICAgICAgICAgIGlmX2RlZmVycmVkICgpIGluXG4gICAgICAgIGxldCBkZWZlcnJlZF9yZWNvcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgICAgICAgICAgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFja1xuICAgICAgICAgICAgICAgIGRlZmVycmVkX2NhbGxiYWNrO1xuICAgICAgICAgICAgY2FuY2VsX2NhbGxiYWNrcyA9IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICAgICAgaG93X3RvX2NhbmNlbCA9IE5vdF9jYW5jZWxhYmxlO1xuICAgICAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwXG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBRdWV1ZS5wdXNoXG4gICAgICAgICAgKERlZmVycmVkIChkZWZlcnJlZF9yZWNvcmQsIGRlZmVycmVkX3Jlc3VsdCkpIGRlZmVycmVkX2NhbGxiYWNrcztcbiAgICAgICAgaW1tZWRpYXRlX3Jlc3VsdFxuICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgKGZ1biAoKSAtPlxuICAgICAgICAgIGYgKCkpXG5lbmRcbmluY2x1ZGUgUmVzb2x1dGlvbl9sb29wXG5cblxuXG5tb2R1bGUgUmVzb2x2aW5nIDpcbnNpZ1xuICB2YWwgd2FrZXVwX2xhdGVyX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXBfbGF0ZXIgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlcl9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgd2FrZXVwX3Jlc3VsdCA6ICdhIHUgLT4gKCdhLCBleG4pIHJlc3VsdCAtPiB1bml0XG4gIHZhbCB3YWtldXAgOiAnYSB1IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHdha2V1cF9leG4gOiBfIHUgLT4gZXhuIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsIDogJ2EgdCAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgd2FrZXVwX2dlbmVyYWwgYXBpX2Z1bmN0aW9uX25hbWUgciByZXN1bHQgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcmVzb2x2ZXIgciBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIENhbmNlbGVkIC0+XG4gICAgICAoKVxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCByZXN1bHQgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0IGluXG4gICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfcmVzdWx0IHIgcmVzdWx0ID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cCByIHYgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cFwiIHIgKE9rIHYpXG4gIGxldCB3YWtldXBfZXhuIHIgZXhuID0gd2FrZXVwX2dlbmVyYWwgXCJ3YWtldXBfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG4gIGxldCB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICByZXNvbHZlIH5tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MSBwIHJlc3VsdCBpblxuICAgICAgaWdub3JlIHBcblxuICBsZXQgd2FrZXVwX2xhdGVyX3Jlc3VsdCByIHJlc3VsdCA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfcmVzdWx0XCIgciByZXN1bHRcbiAgbGV0IHdha2V1cF9sYXRlciByIHYgPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9sYXRlcl9leG4gciBleG4gPVxuICAgIHdha2V1cF9sYXRlcl9nZW5lcmFsIFwid2FrZXVwX2xhdGVyX2V4blwiIHIgKEVycm9yIGV4bilcblxuXG5cbiAgdHlwZSBwYWNrZWRfY2FsbGJhY2tzID1cbiAgICB8IFBhY2tlZCA6IF8gY2FsbGJhY2tzIC0+IHBhY2tlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRldmlhdGVzIGZyb20gdGhlIFwiaWRlYWxcIiBjYWxsYmFjayBkZWZlcnJhbFxuICAgICBiZWhhdmlvcjogaXQgcnVucyBjYWxsYmFja3MgZGlyZWN0bHkgb24gdGhlIGN1cnJlbnQgc3RhY2suIEl0IHNob3VsZFxuICAgICB0aGVyZWZvcmUgYmUgcG9zc2libGUgdG8gY2F1c2UgYSBzdGFjayBvdmVyZmxvdyB1c2luZyB0aGlzIGZ1bmN0aW9uLiAqKVxuICBsZXQgY2FuY2VsIHAgPVxuICAgIGxldCBjYW5jZWxlZF9yZXN1bHQgPSBSZWplY3RlZCBDYW5jZWxlZCBpblxuXG4gICAgKCogV2Fsa3MgdGhlIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCBiYWNrd2FyZHMsIGxvb2tpbmcgZm9yIGNhbmNlbGFibGVcbiAgICAgICBpbml0aWFsIHByb21pc2VzLCBhbmQgY2FuY2VscyAob25seSkgdGhlbS5cblxuICAgICAgIEZvdW5kIGluaXRpYWwgcHJvbWlzZXMgYXJlIGNhbmNlbGVkIGltbWVkaWF0ZWx5LCBhcyB0aGV5IGFyZSBmb3VuZCwgYnlcbiAgICAgICBzZXR0aW5nIHRoZWlyIHN0YXRlIHRvIFtSZWplY3RlZCBDYW5jZWxlZF0uIFRoaXMgaXMgdG8gcHJldmVudCB0aGVtIGZyb21cbiAgICAgICBiZWluZyBcImZvdW5kIHR3aWNlXCIgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGJ5IHR3byBvciBtb3JlIGRpc3RpbmN0IHBhdGhzXG4gICAgICAgdGhyb3VnaCB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG4gICAgICAgVGhlIGNhbGxiYWNrcyBvZiB0aGVzZSBpbml0aWFsIHByb21pc2VzIGFyZSB0aGVuIHJ1biwgaW4gYSBzZXBhcmF0ZVxuICAgICAgIHBoYXNlLiBUaGVzZSBjYWxsYmFja3MgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiBmb3J3YXJkcyB0byBhbnkgZGVwZW5kZW50XG4gICAgICAgcHJvbWlzZXMuIFNlZSBcIkNhbmNlbGxhdGlvblwiIGluIHRoZSBPdmVydmlldy4gKilcbiAgICBsZXQgcHJvcGFnYXRlX2NhbmNlbCA6IChfLCBfLCBfKSBwcm9taXNlIC0+IHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgIGZ1biBwIC0+XG4gICAgICBsZXQgcmVjIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgOlxuICAgICAgICAgICdhICd1ICdjLiBwYWNrZWRfY2FsbGJhY2tzIGxpc3QgLT4gKCdhLCAndSwgJ2MpIHByb21pc2UgLT5cbiAgICAgICAgICAgIHBhY2tlZF9jYWxsYmFja3MgbGlzdCA9XG4gICAgICAgICAgZnVuICh0eXBlIGMpIGNhbGxiYWNrc19hY2N1bXVsYXRvciAocCA6IChfLCBfLCBjKSBwcm9taXNlKSAtPlxuXG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgICAgICAoKiBJZiB0aGUgcHJvbWlzZSBpcyBub3Qgc3RpbGwgcGVuZGluZywgaXQgY2FuJ3QgYmUgY2FuY2VsZWQuICopXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzX2FjY3VtdWxhdG9yXG5cbiAgICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPlxuICAgICAgICAgIG1hdGNoIGNhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIHdpdGhcbiAgICAgICAgICB8IE5vdF9jYW5jZWxhYmxlIC0+XG4gICAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcbiAgICAgICAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgLT5cbiAgICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwIGNhbmNlbGVkX3Jlc3VsdCBpblxuICAgICAgICAgICAgaWdub3JlIHA7XG4gICAgICAgICAgICAoUGFja2VkIGNhbGxiYWNrcyk6OmNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCcgLT5cbiAgICAgICAgICAgIGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHAnXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IGNhbmNlbF9hbmRfY29sbGVjdF9jYWxsYmFja3MgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIHBzXG4gICAgICBpblxuICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBbXSBwXG4gICAgaW5cblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IGNhbGxiYWNrcyA9IHByb3BhZ2F0ZV9jYW5jZWwgcCBpblxuXG4gICAgY2FsbGJhY2tzIHw+IExpc3QuaXRlciAoZnVuIChQYWNrZWQgY2FsbGJhY2tzKSAtPlxuICAgICAgcnVuX2NhbGxiYWNrc19vcl9kZWZlcl90aGVtXG4gICAgICAgIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgY2FsbGJhY2tzIGNhbmNlbGVkX3Jlc3VsdClcbmVuZFxuaW5jbHVkZSBSZXNvbHZpbmdcblxuXG5cbm1vZHVsZSBUcml2aWFsX3Byb21pc2VzIDpcbnNpZ1xuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB2YWwgZmFpbCA6IGV4biAtPiBfIHRcbiAgdmFsIG9mX3Jlc3VsdCA6ICgnYSwgZXhuKSByZXN1bHQgLT4gJ2EgdFxuXG4gIHZhbCByZXR1cm5fdW5pdCA6IHVuaXQgdFxuICB2YWwgcmV0dXJuX3RydWUgOiBib29sIHRcbiAgdmFsIHJldHVybl9mYWxzZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX25vbmUgOiBfIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fc29tZSA6ICdhIC0+ICdhIG9wdGlvbiB0XG4gIHZhbCByZXR1cm5fb2sgOiAnYSAtPiAoJ2EsIF8pIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fZXJyb3IgOiAnZSAtPiAoXywgJ2UpIHJlc3VsdCB0XG4gIHZhbCByZXR1cm5fbmlsIDogXyBsaXN0IHRcblxuICB2YWwgZmFpbF93aXRoIDogc3RyaW5nIC0+IF8gdFxuICB2YWwgZmFpbF9pbnZhbGlkX2FyZyA6IHN0cmluZyAtPiBfIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBGdWxmaWxsZWQgdn1cblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdH1cblxuICBsZXQgZmFpbCBleG4gPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIGV4bn1cblxuICBsZXQgcmV0dXJuX3VuaXQgPSByZXR1cm4gKClcbiAgbGV0IHJldHVybl9ub25lID0gcmV0dXJuIE5vbmVcbiAgbGV0IHJldHVybl9zb21lIHggPSByZXR1cm4gKFNvbWUgeClcbiAgbGV0IHJldHVybl9uaWwgPSByZXR1cm4gW11cbiAgbGV0IHJldHVybl90cnVlID0gcmV0dXJuIHRydWVcbiAgbGV0IHJldHVybl9mYWxzZSA9IHJldHVybiBmYWxzZVxuICBsZXQgcmV0dXJuX29rIHggPSByZXR1cm4gKE9rIHgpXG4gIGxldCByZXR1cm5fZXJyb3IgeCA9IHJldHVybiAoRXJyb3IgeClcblxuICBsZXQgZmFpbF93aXRoIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEZhaWx1cmUgbXNnKX1cblxuICBsZXQgZmFpbF9pbnZhbGlkX2FyZyBtc2cgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChJbnZhbGlkX2FyZ3VtZW50IG1zZyl9XG5lbmRcbmluY2x1ZGUgVHJpdmlhbF9wcm9taXNlc1xuXG5cblxubW9kdWxlIFBlbmRpbmdfcHJvbWlzZXMgOlxuc2lnXG4gICgqIEludGVybmFsICopXG4gIHZhbCBuZXdfcGVuZGluZyA6XG4gICAgaG93X3RvX2NhbmNlbDpob3dfdG9fY2FuY2VsIC0+ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZVxuICB2YWwgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIDogXyB0IGxpc3QgLT4gaG93X3RvX2NhbmNlbFxuXG4gICgqIEluaXRpYWwgcGVuZGluZyBwcm9taXNlcyAocHVibGljKSAqKVxuICB2YWwgd2FpdCA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcbiAgdmFsIHRhc2sgOiB1bml0IC0+ICdhIHQgKiAnYSB1XG5cbiAgdmFsIGFkZF90YXNrX3IgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIGFkZF90YXNrX2wgOiAnYSB1IEx3dF9zZXF1ZW5jZS50IC0+ICdhIHRcblxuICB2YWwgcHJvdGVjdGVkIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBub19jYW5jZWwgOiAnYSB0IC0+ICdhIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsID1cbiAgICBsZXQgc3RhdGUgPVxuICAgICAgUGVuZGluZyB7XG4gICAgICAgIHJlZ3VsYXJfY2FsbGJhY2tzID0gUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5O1xuICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGhvd190b19jYW5jZWw7XG4gICAgICAgIGNsZWFudXBzX2RlZmVycmVkID0gMDtcbiAgICAgIH1cbiAgICBpblxuICAgIHtzdGF0ZX1cblxuICBsZXQgcHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzID1cbiAgICAoKiBVc2luZyBhIGRpcnR5IGNhc3QgaGVyZSB0byBhdm9pZCByZWJ1aWxkaW5nIHRoZSBsaXN0IDooIE5vdCBib3RoZXJpbmdcbiAgICAgICB3aXRoIHRoZSBpbnZhcmlhbnRzLCBiZWNhdXNlIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIHBhY2tzIHRoZW0sXG4gICAgICAgYW5kIGNvZGUgdGhhdCBtYXRjaGVzIG9uIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdIGRvZXNuJ3QgY2FyZSBhYm91dFxuICAgICAgIHRoZW0gYW55d2F5LiAqKVxuICAgIGxldCBjYXN0X3Byb21pc2VfbGlzdCA6ICdhIHQgbGlzdCAtPiAoJ2EsIF8sIF8pIHByb21pc2UgbGlzdCA9IE9iai5tYWdpYyBpblxuICAgIFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCAoY2FzdF9wcm9taXNlX2xpc3QgcHMpXG5cblxuXG4gIGxldCB3YWl0ICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuICBsZXQgdGFzayAoKSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgdG9fcHVibGljX3Byb21pc2UgcCwgdG9fcHVibGljX3Jlc29sdmVyIHBcblxuXG5cblxuICBsZXQgY2FzdF9zZXF1ZW5jZV9ub2RlXG4gICAgICAobm9kZSA6ICdhIHUgTHd0X3NlcXVlbmNlLm5vZGUpXG4gICAgICAoX2FjdHVhbF9jb250ZW50OignYSwgJ3UsICdjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIEx3dF9zZXF1ZW5jZS5ub2RlID1cbiAgICBPYmoubWFnaWMgbm9kZVxuXG4gIGxldCBhZGRfdGFza19yIHNlcXVlbmNlID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodG9fcHVibGljX3Jlc29sdmVyIHApIHNlcXVlbmNlIGluXG4gICAgbGV0IG5vZGUgPSBjYXN0X3NlcXVlbmNlX25vZGUgbm9kZSBwIGluXG5cbiAgICBsZXQgUGVuZGluZyBjYWxsYmFja3MgPSBwLnN0YXRlIGluXG4gICAgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MgPC1cbiAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGU7XG5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgbGV0IGFkZF90YXNrX2wgc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9sICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuXG5cbiAgbGV0IHByb3RlY3RlZCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IHBcbiAgICB8IFJlamVjdGVkIF8gLT4gcFxuXG4gICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBpbiB0aGUgY29tbWVudCBhdCBbbWF5X25vd19iZV9wcm94eV0uIFRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlcyBhcmU6XG5cbiAgICAgICAgICAgLSBbcCddICppcyogYW4gaW5pdGlhbCBwcm9taXNlLCBzbyBpdCAqY2FuKiBnZXQgY2FuY2VsZWQuIEhvd2V2ZXIsIGlmXG4gICAgICAgICAgICAgaXQgZG9lcywgdGhlIFtvbl9jYW5jZWxdIGhhbmRsZXIgaW5zdGFsbGVkIGJlbG93IHdpbGwgcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICBjYWxsYmFjay5cbiAgICAgICAgICAgLSBbcCddIG5ldmVyIGdldHMgcGFzc2VkIHRvIFttYWtlX2ludG9fcHJveHldLCB0aGUgb25seSBlZmZlY3Qgb2ZcbiAgICAgICAgICAgICB3aGljaCBpcyB0aGF0IGl0IGNhbm5vdCBiZSB0aGUgdW5kZXJseWluZyBwcm9taXNlIG9mIGFub3RoZXJcbiAgICAgICAgICAgICAocHJveHkpIHByb21pc2UuIFNvLCBbcCddIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgaGVhZCBvZiBhIGNoYWluIG9mXG4gICAgICAgICAgICAgW1Byb3h5IF9dIGxpbmtzLCBhbmQgaXQncyBub3QgbmVjZXNzYXJ5IHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhlXG4gICAgICAgICAgICAgaW5kdWN0aXZlIHJlYXNvbmluZyBhdCBbbWF5X25vd19iZV9wcm94eV0gYXBwbGllcy4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cblxuICAgICAgbGV0IHJlbW92ZV90aGVfY2FsbGJhY2sgPVxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uXG4gICAgICAgICAgW3BdIGNhbGxiYWNrXG4gICAgICBpblxuXG4gICAgICBsZXQgUGVuZGluZyBwJ19jYWxsYmFja3MgPSBwJy5zdGF0ZSBpblxuICAgICAgYWRkX2NhbmNlbF9jYWxsYmFjayBwJ19jYWxsYmFja3MgcmVtb3ZlX3RoZV9jYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcCdcblxuICBsZXQgbm9fY2FuY2VsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOk5vdF9jYW5jZWxhYmxlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG4gICAgICAgIGxldCBwJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgICAgKCogSW4gdGhpcyBjYWxsYmFjaywgW3AnXSB3aWxsIGVpdGhlciBzdGlsbCBpdHNlbGYgYmUgcGVuZGluZywgb3IgaXRcbiAgICAgICAgICAgd2lsbCBoYXZlIGJlY29tZSBhIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlIHJlYXNvbmluZyBmb3JcbiAgICAgICAgICAgdGhpcyBpcyBhcyBpbiBbcHJvdGVjdGVkXSBhbmQgW21heV9ub3dfYmVfcHJveHldLCBidXQgZXZlbiBzaW1wbGVyLFxuICAgICAgICAgICBiZWNhdXNlIFtwJ10gaXMgbm90IGNhbmNlbGFibGUuICopXG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJyBwX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuZW5kXG5pbmNsdWRlIFBlbmRpbmdfcHJvbWlzZXNcblxuXG5cbm1vZHVsZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uIDpcbnNpZ1xuICAoKiBNYWluIGludGVyZmFjZSAocHVibGljKSAqKVxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcbiAgdmFsIGNhdGNoIDogKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBmaW5hbGl6ZSA6ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgdHJ5X2JpbmQgOiAodW5pdCAtPiAnYSB0KSAtPiAoJ2EgLT4gJ2IgdCkgLT4gKGV4biAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCogQ2FuY2VsIGNhbGxiYWNrcyAocHVibGljKS4gKilcbiAgdmFsIG9uX2NhbmNlbCA6ICdhIHQgLT4gKHVuaXQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIE5vbi1wcm9taXNlIGNhbGxiYWNrcyAocHVibGljKSAqKVxuICB2YWwgb25fc3VjY2VzcyA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2ZhaWx1cmUgOiBfIHQgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl90ZXJtaW5hdGlvbiA6IF8gdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBvbl9hbnkgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiBCYWNrdHJhY2Ugc3VwcG9ydCAoaW50ZXJuYWw7IGZvciB1c2UgYnkgdGhlIFBQWCkgKilcbiAgdmFsIGJhY2t0cmFjZV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgYmFja3RyYWNlX2NhdGNoIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKGV4biAtPiAnYSB0KSAtPiAnYSB0XG4gIHZhbCBiYWNrdHJhY2VfZmluYWxpemUgOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAodW5pdCAtPiB1bml0IHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV90cnlfYmluZCA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogVGhlcmUgYXJlIGZpdmUgcHJpbWFyeSBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uIGZ1bmN0aW9uczogW2JpbmRdLCBbbWFwXSxcbiAgICAgW2NhdGNoXSwgW2ZpbmFsaXplXSwgYW5kIFt0cnlfYmluZF0uIE9mIHRoZXNlLCBbdHJ5X2JpbmRdIGlzIHRoZSBtb3N0XG4gICAgIGdlbmVyYWwgLS0gYWxsIHRoZSBvdGhlcnMgY2FuIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIGl0LlxuXG4gICAgIEx3dCBjb25mbGF0ZXMgY29uY3VycmVuY3kgd2l0aCBlcnJvciBwcm9wYWdhdGlvbi4gSWYgTHd0IGRpZCBub3QgZG8gdGhpcyxcbiAgICAgdGhlcmUgd291bGQgYmUgb25seSB0d28gcHJpbWFyeSBmdW5jdGlvbnM6IFtiaW5kXSBhbmQgW21hcF0sIGFuZCwgb2YgdGhlc2VcbiAgICAgdHdvLCBbYmluZF0gaXMgdGhlIG1vc3QgZ2VuZXJhbC4gU2luY2UgW2JpbmRdIGlzIHRoZSBtb3N0IHJlbGV2YW50XG4gICAgIHNwZWNpZmljYWxseSB0byBjb25jdXJyZW5jeSwgYW5kIGlzIGFsc28gdGhlIG1vc3QgZmFtaWxpYXIgZnVuY3Rpb24gaW4gTHd0LFxuICAgICBpdHMgaW1wbGVtZW50YXRpb24gc2VydmVzIGFzIGEga2luZCBvZiBcIm1vZGVsXCIgZm9yIHRoZSByZXN0LiBJdCBpcyB0aGUgbW9zdFxuICAgICBjb21tZW50ZWQsIGFuZCBhbGwgdGhlIG90aGVyIGZ1bmN0aW9ucyBmb2xsb3cgYSBzaW1pbGFyIHBhdHRlcm4gdG8gW2JpbmRdLlxuXG4gICAgIEZvdXIgb2YgdGhlIHByaW1hcnkgZnVuY3Rpb25zIGhhdmUgW2JhY2t0cmFjZV8qXSB2ZXJzaW9ucywgd2hpY2ggYXJlIG5vdFxuICAgICB0cnVseSBwdWJsaWMsIGFuZCBleGlzdCB0byBzdXBwb3J0IHRoZSBQUFguIFtiYWNrdHJhY2VfbWFwXSBkb2VzIG5vdCBleGlzdFxuICAgICBiZWNhdXNlIHRoZSBQUFggZG9lcyBub3QgbmVlZCBpdC5cblxuICAgICBUaGUgcmVtYWluaW5nIGZvdXIgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBhdHRhY2ggXCJsb3dlci1sZXZlbC1pc2hcIlxuICAgICBub24tcHJvbWlzZS1wcm9kdWNpbmcgY2FsbGJhY2tzIHRvIHByb21pc2VzOiB0aGVzZSBhcmUgdGhlIFtvbl8qXVxuICAgICBmdW5jdGlvbnMuIE9mIHRoZXNlLCBbb25fYW55XSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBJZiBMd3QgZGlkIG5vdCBjb25mbGF0ZVxuICAgICBjb25jdXJyZW5jeSB3aXRoIGVycm9yIGhhbmRsaW5nLCB0aGVyZSB3b3VsZCBvbmx5IGJlIG9uZTogW29uX3N1Y2Nlc3NdLiAqKVxuXG5cblxuICAoKiBNYWtlcyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gaW50byBhIHByb3h5IG9mIFt+b3V0ZXJfcHJvbWlzZV0uIEFmdGVyXG4gICAgIFttYWtlX2ludG9fcHJveHldLCB0aGVzZSB0d28gcHJvbWlzZSByZWZlcmVuY2VzIFwiYmVoYXZlIGlkZW50aWNhbGx5LlwiXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IHN5bW1ldHJpYzogW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gYWx3YXlzIGJlY29tZXMgdGhlXG4gICAgIHByb3h5LiBbbWFrZV9pbnRvX3Byb3h5XSBpcyBjYWxsZWQgb25seSBieSBbYmluZF0gYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGluXG4gICAgIHRoaXMgbW9kdWxlLiBUaGlzIG1lYW5zIHRoYXQ6XG5cbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgYSBwcm94eSBpcyBieSBiZWluZyByZXR1cm5lZCBmcm9tXG4gICAgICAgdGhlIGNhbGxiYWNrIGdpdmVuIGJ5IHRoZSB1c2VyIHRvIFtiaW5kXSwgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uLCBhbmRcbiAgICAgLSB0aGUgb25seSB3YXkgZm9yIGEgcHJvbWlzZSB0byBiZWNvbWUgdW5kZXJseWluZyBmb3IgYSBwcm9taXNlIG90aGVyIHRoYW5cbiAgICAgICBpdHNlbGYgaXMgdG8gYmUgdGhlIG91dGVyIHByb21pc2Ugb3JpZ2luYWxseSByZXR1cm5lZCB0byB0aGUgdXNlciBmcm9tXG4gICAgICAgW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24uXG5cbiAgICAgVGhlc2UgdHdvIGZhY3RzIGFyZSBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBob3cgYW5kIHdoaWNoIHByb21pc2VzXG4gICAgIGNhbiBiZWNvbWUgcHJveGllcywgdW5kZXJseWluZywgZXRjLjsgaW4gcGFydGljdWxhciwgaXQgaXMgdXNlZCBpbiB0aGVcbiAgICAgYXJndW1lbnQgaW4gW21heV9ub3dfYmVfcHJveHldIGZvciBjb3JyZWN0IHByZWRpY3Rpb25zIGFib3V0IHN0YXRlIGNoYW5nZXMuXG5cbiAgICAgW35vdXRlcl9wcm9taXNlXSBpcyBhbHdheXMgYSBwZW5kaW5nIHByb21pc2Ugd2hlbiBbbWFrZV9pbnRvX3Byb3h5XSBpc1xuICAgICBjYWxsZWQ7IGZvciB0aGUgZXhwbGFuYXRpb24sIHNlZSBbbWF5X25vd19iZV9wcm94eV0gKHRob3VnaCB0aGUgY2FsbGVyIG9mXG4gICAgIFttYWtlX2ludG9fcHJveHldIGFsd2F5cyBjYWxscyBbdW5kZXJseWluZ10gZmlyc3QgdG8gcGFzcyB0aGUgdW5kZXJseWluZ1xuICAgICBwZW5kaW5nIHByb21pc2UgdG8gW21ha2VfaW50b19wcm94eV0pLlxuXG4gICAgIFRoZSByZWFzb25zIHByb3h5aW5nIGlzIHVzZWQsIGluc3RlYWQgb2YgYWRkaW5nIGEgY2FsbGJhY2sgdG9cbiAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHRvIHJlc29sdmUgW35vdXRlcl9wcm9taXNlXSB3aGVuIHRoZSBmb3JtZXJcbiAgICAgYmVjb21lcyByZXNvbHZlZCBwcm9iYWJseSBhcmU6XG5cbiAgICAgLSBQcm9taXNlcyBoYXZlIG1vcmUgYmVoYXZpb3JzIHRoYW4gcmVzb2x1dGlvbi4gT25lIHdvdWxkIGhhdmUgdG8gYWRkIGFcbiAgICAgICBjYW5jZWxsYXRpb24gaGFuZGxlciB0byBbfm91dGVyX3Byb21pc2VdIHRvIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uXG4gICAgICAgYmFjayB0byBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0sIGZvciBleGFtcGxlLiBJdCBtYXkgYmUgZWFzaWVyIHRvIGp1c3RcbiAgICAgICB0aGluayBvZiB0aGVtIGFzIHRoZSBzYW1lIHByb21pc2UuXG4gICAgIC0gSWYgdXNpbmcgY2FsbGJhY2tzLCByZXNvbHZpbmcgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdvdWxkIG5vdFxuICAgICAgIGltbWVkaWF0ZWx5IHJlc29sdmUgW35vdXRlcl9wcm9taXNlXS4gQW5vdGhlciBjYWxsYmFjayBhZGRlZCB0b1xuICAgICAgIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBtaWdodCBzZWUgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHJlc29sdmVkLFxuICAgICAgIGJ1dCBbfm91dGVyX3Byb21pc2VdIHN0aWxsIHBlbmRpbmcsIGRlcGVuZGluZyBvbiB0aGUgb3JkZXIgaW4gd2hpY2hcbiAgICAgICBjYWxsYmFja3MgYXJlIHJ1bi4gKilcbiAgbGV0IG1ha2VfaW50b19wcm94eVxuICAgICAgKHR5cGUgYylcbiAgICAgIH4ob3V0ZXJfcHJvbWlzZSA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgIH4odXNlcl9wcm92aWRlZF9wcm9taXNlIDogKCdhLCBfLCBjKSBwcm9taXNlKVxuICAgICAgICA6ICgnYSwgdW5kZXJseWluZywgYykgc3RhdGVfY2hhbmdlZCA9XG5cbiAgICAoKiBVc2luZyBbcCddIGFzIGl0J3MgdGhlIG5hbWUgdXNlZCBpbnNpZGUgW2JpbmRdLCBldGMuLCBmb3IgcHJvbWlzZXMgd2l0aFxuICAgICAgIHRoaXMgcm9sZSAtLSBbcCddIGlzIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB1c2VyJ3MgZnVuY3Rpb24uICopXG4gICAgbGV0IHAnID0gdW5kZXJseWluZyB1c2VyX3Byb3ZpZGVkX3Byb21pc2UgaW5cblxuICAgIGlmIGlkZW50aWNhbCBwJyBvdXRlcl9wcm9taXNlIHRoZW5cbiAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCdcbiAgICAgICgqIFdlIHJlYWxseSB3YW50IHRvIHJldHVybiBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXSwgYnV0XG4gICAgICAgICB0aGUgcmVmZXJlbmNlIHRocm91Z2ggW3AnXSBoYXMgdGhlIHJpZ2h0IHR5cGUuICopXG5cbiAgICBlbHNlXG4gICAgICBtYXRjaCBwJy5zdGF0ZSB3aXRoXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBvdXRlcl9wcm9taXNlIHAnLnN0YXRlXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcblxuICAgICAgfCBQZW5kaW5nIHAnX2NhbGxiYWNrcyAtPlxuICAgICAgICBsZXQgUGVuZGluZyBvdXRlcl9jYWxsYmFja3MgPSBvdXRlcl9wcm9taXNlLnN0YXRlIGluXG5cbiAgICAgICAgbWVyZ2VfY2FsbGJhY2tzIH5mcm9tOnAnX2NhbGxiYWNrcyB+aW50bzpvdXRlcl9jYWxsYmFja3M7XG4gICAgICAgIG91dGVyX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsIDwtIHAnX2NhbGxiYWNrcy5ob3dfdG9fY2FuY2VsO1xuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICBzZXRfcHJvbWlzZV9zdGF0ZSBwJyAoUHJveHkgb3V0ZXJfcHJvbWlzZSkgaW5cbiAgICAgICAgaWdub3JlIHAnO1xuXG4gICAgICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb3V0ZXJfcHJvbWlzZVxuICAgICAgICAoKiBUaGUgc3RhdGUgaGFzbid0IGFjdHVhbGx5IGNoYW5nZWQsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHdyYXBcbiAgICAgICAgICAgW291dGVyX3Byb21pc2VdIGZvciB0eXBlIGNoZWNraW5nLiAqKVxuXG4gICAgICAgICgqIFRoZSBzdGF0ZSBvZiBbcCddIG1heSBpbnN0ZWFkIGhhdmUgY2hhbmdlZCAtLSBpdCBtYXkgaGF2ZSBiZWNvbWUgYVxuICAgICAgICAgICBwcm94eS4gSG93ZXZlciwgY2FsbGVycyBvZiBbbWFrZV9pbnRvX3Byb3h5XSBkb24ndCBrbm93IGlmXG4gICAgICAgICAgIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIHdhcyBhIHByb3h5IG9yIG5vdCAodGhhdCdzIHdoeSB3ZSBjYWxsXG4gICAgICAgICAgIHVuZGVybHlpbmcgb24gaXQgYXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uLCB0byBnZXQgW3AnXSkuIFdlIGNhblxuICAgICAgICAgICB0aGVyZWZvcmUgdGFrZSBhIGRhbmdlcm91cyBzaG9ydGN1dCBhbmQgbm90IGJvdGhlciByZXR1cm5pbmcgYSBuZXdcbiAgICAgICAgICAgcmVmZXJlbmNlIHRvIFt1c2VyX3Byb3ZpZGVkX3Byb21pc2VdIGZvciBzaGFkb3dpbmcuICopXG5cblxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiBhIGxvdCBvZiB0aGUgY29kZSBiZWxvdyBjYW4gcHJvYmFibHkgYmUgZGVkdXBsaWNhdGVkIGluXG4gICAgIHNvbWUgd2F5LCBlc3BlY2lhbGx5IGlmIGFzc3VtaW5nIEZsYW1iZGEuICopXG5cbiAgbGV0IGJpbmQgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICAoKiBJbiBjYXNlIFtMd3QuYmluZF0gbmVlZHMgdG8gZGVmZXIgdGhlIGNhbGwgdG8gW2ZdLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgICBjYWxsZWQgdG8gY3JlYXRlOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UsIFtwJyddLCB0aGF0IG11c3QgYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBpbW1lZGlhdGVseS5cbiAgICAgICAyLiBUaGUgY2FsbGJhY2sgdGhhdCByZXNvbHZlcyBbcCcnXS5cblxuICAgICAgIFtMd3QuYmluZF0gZGVmZXJzIHRoZSBjYWxsIHRvIFtmXSBpbiB0d28gY2lyY3Vtc3RhbmNlczpcblxuICAgICAgIDEuIFRoZSBwcm9taXNlIFtwXSBpcyBwZW5kaW5nLlxuICAgICAgIDIuIFRoZSBwcm9taXNlIFtwXSBpcyBmdWxmaWxsZWQsIGJ1dCB0aGUgY3VycmVudCBjYWxsYmFjayBjYWxsIG5lc3RpbmdcbiAgICAgICAgICBkZXB0aCBpcyBzdWNoIHRoYXQgdGhlIGNhbGwgdG8gW2ZdIG11c3QgZ28gaW50byB0aGUgY2FsbGJhY2sgcXVldWUsIGluXG4gICAgICAgICAgb3JkZXIgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuXG5cbiAgICAgIE1lY2hhbmlzbSAoMikgaXMgY3VycmVudGx5IGRpc2FibGVkLiBJdCBtYXkgYmUgdXNlZCBpbiBhbiBhbHRlcm5hdGl2ZSBMd3RcbiAgICAgIEFQSS5cblxuICAgICAgRnVuY3Rpb25zIG90aGVyIHRoYW4gW0x3dC5iaW5kXSBoYXZlIGFuYWxvZ291cyBkZWZlcnJhbCBiZWhhdmlvci4gKilcbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG4gICAgICAoKiBUaGUgcmVzdWx0IHByb21pc2UgaXMgYSBmcmVzaCBwZW5kaW5nIHByb21pc2UuXG5cbiAgICAgICAgIEluaXRpYWxseSwgdHJ5aW5nIHRvIGNhbmNlbCB0aGlzIGZyZXNoIHBlbmRpbmcgcHJvbWlzZSBbcCcnXSB3aWxsXG4gICAgICAgICBwcm9wYWdhdGUgdGhlIGNhbmNlbGxhdGlvbiBhdHRlbXB0IHRvIFtwXSAoYmFja3dhcmRzIHRocm91Z2ggdGhlXG4gICAgICAgICBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgpLiBJZi93aGVuIFtwXSBpcyBmdWxmaWxsZWQsIEx3dCB3aWxsIGNhbGwgdGhlXG4gICAgICAgICB1c2VyJ3MgY2FsbGJhY2sgW2ZdIGJlbG93LCB3aGljaCB3aWxsIHByb3ZpZGUgYSBuZXcgcHJvbWlzZSBbcCddLCBhbmRcbiAgICAgICAgIFtwJ10gd2lsbCBiZWNvbWUgYSBwcm94eSBvZiBbcCcnXS4gQXQgdGhhdCBwb2ludCwgdHJ5aW5nIHRvIGNhbmNlbFxuICAgICAgICAgW3AnJ10gd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRyeWluZyB0byBjYW5jZWwgW3AnXSwgc28gdGhlIGJlaGF2aW9yIHdpbGxcbiAgICAgICAgIGRlcGVuZCBvbiBob3cgdGhlIHVzZXIgb2J0YWluZWQgW3AnXS4gKilcblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHYgd2l0aCBleG5cbiAgICAgICAgICAgIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG4gICAgICAgICAgKCogUnVuIHRoZSB1c2VyJ3MgZnVuY3Rpb24gW2ZdLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuICAgICAgICAgICgqIFtwJyddIHdhcyBhbiB1bmRlcmx5aW5nIHByb21pc2Ugd2hlbiBpdCB3YXMgY3JlYXRlZCBhYm92ZSwgYnV0IGl0XG4gICAgICAgICAgICAgbWF5IGhhdmUgYmVjb21lIGEgcHJveHkgYnkgdGhlIHRpbWUgdGhpcyBjb2RlIGlzIGJlaW5nIGV4ZWN1dGVkLlxuICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIGVpdGhlciBhbiB1bmRlcmx5aW5nIHBlbmRpbmcgcHJvbWlzZSwgb3IgYVxuICAgICAgICAgICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS4gVGhlcmVmb3JlLCBbbWF5X25vd19iZV9wcm94eV0gcHJvZHVjZXNcbiAgICAgICAgICAgICBhIHJlZmVyZW5jZSB3aXRoIHRoZSByaWdodCB0eXBlIHZhcmlhYmxlcy4gV2UgaW1tZWRpYXRlbHkgZ2V0XG4gICAgICAgICAgICAgW3AnJ10ncyBjdXJyZW50IHVuZGVybHlpbmcgcHJvbWlzZS4gKilcblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICAgICAgKCogTWFrZSB0aGUgb3V0ZXIgcHJvbWlzZSBbcCcnXSBiZWhhdmlvcmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBwcm9taXNlXG4gICAgICAgICAgICAgW3AnXSByZXR1cm5lZCBieSBbZl0gYnkgbWFraW5nIFtwJ10gaW50byBhIHByb3h5IG9mIFtwJyddLiAqKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2JpbmQgYWRkX2xvYyBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmIHZcbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKSBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyAoUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKSkgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IFJlamVjdGVkIChhZGRfbG9jIGV4bil9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IG1hcCBmIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnJ19yZXN1bHQgPVxuICAgICAgICAgICAgdHJ5IEZ1bGZpbGxlZCAoZiB2KSB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhuXG4gICAgICAgICAgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHAnJ19yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlXG4gICAgICAgICAgICB7c3RhdGUgPVxuICAgICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IFJlamVjdGVkIGV4bn0pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgY2F0Y2ggZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV9jYXRjaCBhZGRfbG9jIGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IHRyeV9iaW5kIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gZicgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGJhY2t0cmFjZV90cnlfYmluZCBhZGRfbG9jIGYgZicgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgcCcnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KFByb3BhZ2F0ZV9jYW5jZWxfdG9fb25lIHApIGluXG5cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBtYXRjaCBwX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgZicgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggKGFkZF9sb2MgZXhuKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgbGV0IGZpbmFsaXplIGYgZicgPVxuICAgIHRyeV9iaW5kIGZcbiAgICAgIChmdW4geCAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiByZXR1cm4geCkpXG4gICAgICAoZnVuIGUgLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gZmFpbCBlKSlcblxuICBsZXQgYmFja3RyYWNlX2ZpbmFsaXplIGFkZF9sb2MgZiBmJyA9XG4gICAgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIChhZGRfbG9jIGUpKSlcblxuXG5cbiAgbGV0IG9uX2NhbmNlbCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICAoKCksIChmdW4gXyAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKSwgRnVsZmlsbGVkICgpKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIGNhbGxiYWNrcyBmXG5cblxuXG4gIGxldCBvbl9zdWNjZXNzIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9mYWlsdXJlIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG5cbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX3Rlcm1pbmF0aW9uIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gX3Jlc3VsdCAtPlxuICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBvbl9hbnkgcCBmIGcgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSA9XG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgZnVuIHJlc3VsdCAtPlxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2XG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZyBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcbmVuZFxuaW5jbHVkZSBTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXG5cblxuKCogVGhpcyBiZWxvbmdzIHdpdGggdGhlIFtwcm90ZWN0ZWRdIGFuZCBzdWNoLCBidXQgaXQgZGVwZW5kcyBvbiBwcmltaXRpdmVzIGZyb21cbiAgIFtTZXF1ZW50aWFsX2NvbXBvc2l0aW9uXS4gKilcbmxldCB3cmFwX2luX2NhbmNlbGFibGUgcCA9XG4gbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiBsZXQgcF91bmRlcmx5aW5nID0gdW5kZXJseWluZyBwX2ludGVybmFsIGluXG4gbWF0Y2ggcF91bmRlcmx5aW5nLnN0YXRlIHdpdGhcbiB8IEZ1bGZpbGxlZCBfIC0+IHBcbiB8IFJlamVjdGVkIF8gLT4gcFxuIHwgUGVuZGluZyBfIC0+XG4gICBsZXQgcCcsIHIgPSB0YXNrICgpIGluXG4gICBvbl9jYW5jZWwgcCcgKGZ1biAoKSAtPiBjYW5jZWwgcCk7XG4gICBvbl9hbnkgcCAod2FrZXVwIHIpICh3YWtldXBfZXhuIHIpO1xuICAgcCdcblxuXG5tb2R1bGUgQ29uY3VycmVudF9jb21wb3NpdGlvbiA6XG5zaWdcbiAgdmFsIGRvbnRfd2FpdCA6ICh1bml0IC0+IF8gdCkgLT4gKGV4biAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhc3luYyA6ICh1bml0IC0+IF8gdCkgLT4gdW5pdFxuICB2YWwgaWdub3JlX3Jlc3VsdCA6IF8gdCAtPiB1bml0XG5cbiAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIGpvaW4gOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbiAgdmFsIGFsbCA6ICgnYSB0KSBsaXN0IC0+ICgnYSBsaXN0KSB0XG5cbiAgdmFsIGNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBwaWNrIDogJ2EgdCBsaXN0IC0+ICdhIHRcblxuICB2YWwgbmNob29zZSA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcbiAgdmFsIG5waWNrIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gIHZhbCBuY2hvb3NlX3NwbGl0IDogJ2EgdCBsaXN0IC0+ICgnYSBsaXN0ICogJ2EgdCBsaXN0KSB0XG5lbmQgPVxuc3RydWN0XG4gIGV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuICBsZXQgZG9udF93YWl0IGYgaCA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIGggZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBoIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgYXN5bmMgZiA9XG4gICAgbGV0IHAgPVxuICAgICAgdHJ5IGYgKClcbiAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgaW5cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgICFhc3luY19leGNlcHRpb25faG9vayBleG5cbiAgICAgIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IGlnbm9yZV9yZXN1bHQgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICByZXJhaXNlIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuXG5cbiAgbGV0IGpvaW4gcHMgPVxuICAgIGxldCBwJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICBsZXQgbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSByZWYgMCBpblxuICAgIGxldCBqb2luX3Jlc3VsdCA9IHJlZiAoRnVsZmlsbGVkICgpKSBpblxuXG4gICAgKCogQ2FsbGJhY2sgYXR0YWNoZWQgdG8gZWFjaCBwcm9taXNlIGluIFtwc10gdGhhdCBpcyBzdGlsbCBwZW5kaW5nIGF0IHRoZVxuICAgICAgIHRpbWUgW2pvaW5dIGlzIGNhbGxlZC4gKilcbiAgICBsZXQgY2FsbGJhY2sgbmV3X3Jlc3VsdCA9XG4gICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuXG4gICAgICBiZWdpbiBtYXRjaCBuZXdfcmVzdWx0IHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkICgpIC0+ICgpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgqIEZvciB0aGUgZmlyc3QgcHJvbWlzZSBpbiBbcHNdIHRvIGJlIHJlamVjdGVkLCBzZXQgdGhlIHJlc3VsdCBvZiB0aGVcbiAgICAgICAgIFtqb2luXSB0byByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGV4Y2VwdGlvbi4uICopXG4gICAgICAgIG1hdGNoICFqb2luX3Jlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IG5ld19yZXN1bHRcbiAgICAgICAgfCBSZWplY3RlZCBfIC0+ICgpXG4gICAgICBlbmQ7XG5cbiAgICAgICgqIEluIGFsbCBjYXNlcywgZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgcHJvbWlzZXMgc3RpbGwgcGVuZGluZywgYW5kXG4gICAgICAgICByZXNvbHZlIHRoZSBbam9pbl0gb25jZSBhbGwgcHJvbWlzZXMgcmVzb2x2ZS4gKilcbiAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyAtIDE7XG4gICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlICh1bmRlcmx5aW5nIHAnKSAham9pbl9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBlbmRcbiAgICBpblxuXG4gICAgKCogQXR0YWNoIHRoZSBhYm92ZSBjYWxsYmFjay4gU2ltdWx0YW5lb3VzbHkgY291bnQgaG93IG1hbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgIHRoZXJlIGFyZSBpbiBbcHNdIChpbml0aWFsbHkpLiBJZiB0aGF0IG51bWJlciBpcyB6ZXJvLCB0aGUgW2pvaW5dIG11c3RcbiAgICAgICByZXNvbHZlIGltbWVkaWF0ZWx5LiAqKVxuICAgIGxldCByZWMgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgPSAwIHRoZW5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSAham9pbl9yZXN1bHR9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgICAgICBudW1iZXJfcGVuZGluZ19pbl9wcyA6PSAhbnVtYmVyX3BlbmRpbmdfaW5fcHMgKyAxO1xuICAgICAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICAoKiBBcyBpbiB0aGUgY2FsbGJhY2sgYWJvdmUsIGJ1dCBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpblxuICAgICAgICAgICAgIFtwc106IHJlamVjdCB0aGUgW2pvaW5dIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uIGFzIGluIHRoZSBmaXJzdFxuICAgICAgICAgICAgIHJlamVjdGVkIHByb21pc2UgZm91bmQuIFtqb2luXSBzdGlsbCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgICAgICAgICBiZWZvcmUgYWN0dWFsbHkgcmVzb2x2aW5nLCB0aG91Z2guICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPiBqb2luX3Jlc3VsdCA6PSBwX3Jlc3VsdDtcbiAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAgICAgICB8IEZ1bGZpbGxlZCAoKSAtPlxuICAgICAgICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG4gICAgaW5cblxuICAgIGF0dGFjaF9jYWxsYmFja19vcl9yZXNvbHZlX2ltbWVkaWF0ZWx5IHBzXG5cbiAgKCogdGhpcyBpcyAzIHdvcmRzLCBzbWFsbGVyIHRoYW4gdGhlIDIgdGltZXMgMiB3b3JkcyBhIHBhaXIgb2YgcmVmZXJlbmNlc1xuICAgICB3b3VsZCB0YWtlLiAqKVxuICB0eXBlICgnYSwnYikgcGFpciA9IHtcbiAgICBtdXRhYmxlIHgxOiAnYSBvcHRpb247XG4gICAgbXV0YWJsZSB4MjogJ2Igb3B0aW9uO1xuICB9XG5cbiAgbGV0IGJvdGggcDEgcDIgPVxuICAgIGxldCBwYWlyID0ge3gxID0gTm9uZTsgeDIgPSBOb25lfSBpblxuICAgIGxldCBwMScgPSBiaW5kIHAxIChmdW4gdiAtPiBwYWlyLngxIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpIGluXG4gICAgbGV0IHAyJyA9IGJpbmQgcDIgKGZ1biB2IC0+IHBhaXIueDIgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBqb2luIFtwMSc7IHAyJ10gfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIHBhaXIueDEsIHBhaXIueDIgd2l0aFxuICAgICAgfCBTb21lIHYxLCBTb21lIHYyIC0+IHYxLCB2MlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcblxuICBsZXQgYWxsIHBzID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm5fbmlsXG4gICAgfCBbeF0gLT4gbWFwIChmdW4geSAtPiBbeV0pIHhcbiAgICB8IFt4OyB5XSAtPiBtYXAgKGZ1biAoeCwgeSkgLT4gW3g7IHldKSAoYm90aCB4IHkpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgdnMgPSBBcnJheS5tYWtlIChMaXN0Lmxlbmd0aCBwcykgTm9uZSBpblxuICAgICAgcHNcbiAgICAgIHw+IExpc3QubWFwaSAoZnVuIGluZGV4IHAgLT5cbiAgICAgICAgYmluZCBwIChmdW4gdiAtPiB2cy4oaW5kZXgpIDwtIFNvbWUgdjsgcmV0dXJuX3VuaXQpKVxuICAgICAgfD4gam9pblxuICAgICAgfD4gbWFwIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgcmVjIHRvX2xpc3RfdW5vcHQgaSBhY2MgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB2cyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB0b19saXN0X3Vub3B0IChpIC0gMSkgKHg6OmFjYylcbiAgICAgICAgICBpblxuICAgICAgICAgIHRvX2xpc3RfdW5vcHQgKEFycmF5Lmxlbmd0aCB2cyAtIDEpIFtdKVxuXG4gICgqIE1haW50YWluZXIncyBub3RlOiB0aGUgbmV4dCBmZXcgZnVuY3Rpb25zIGFyZSBoZWxwZXJzIGZvciBbY2hvb3NlXSBhbmRcbiAgICAgW3BpY2tdLiBQZXJoYXBzIHRoZXkgc2hvdWxkIGJlIGZhY3RvcmVkIGludG8gc29tZSBraW5kIG9mIGdlbmVyaWNcbiAgICAgW2Nob29zZV0vW3BpY2tdIGltcGxlbWVudGF0aW9uLCB3aGljaCBtYXkgYWN0dWFsbHkgYmUgb3B0aW1hbCBhbnl3YXkgd2l0aFxuICAgICBGbGFtYmRhLiAqKVxuXG4gIGxldCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiAocHMgOiAnYSB0IGxpc3QpID1cbiAgICBsZXQgcmVjIGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IEVycm9yICh0b3RhbCwgcmVqZWN0ZWQpXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIHRvdGFsIHJlamVjdGVkIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAodG90YWwgKyAxKSAocCA6OiByZWplY3RlZCkgcHNcbiAgICAgICAgICAgIHwgUGVuZGluZyBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICBpblxuICAgIGxldCByZWMgY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzID1cbiAgICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICAgfCBbXSAtPiBPayB0b3RhbFxuICAgICAgIHwgcCA6OiBwcyAtPlxuICAgICAgICAgICAgbGV0IEludGVybmFsIHEgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHEpLnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgRnVsZmlsbGVkIF8gLT4gY291bnRfZnVsZmlsbGVkICh0b3RhbCArIDEpIHBzXG4gICAgICAgICAgICB8IFJlamVjdGVkIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCAxIFtwXSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfZnVsZmlsbGVkIHRvdGFsIHBzXG4gICAgaW5cbiAgICBjb3VudF9mdWxmaWxsZWQgMCBwc1xuXG4gICgqIEV2YWx1YXRlcyB0byB0aGUgW25ddGggcHJvbWlzZSBpbiBbcHNdLCBhbW9uZyBvbmx5IHRob3NlIHByb21pc2VzIGluIFtwc11cbiAgICAgdGhhdCBhcmUgcmVzb2x2ZWQuIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIGF0XG4gICAgIGxlYXN0IFtuXSByZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZCAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIG50aF9yZXNvbHZlZCBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gcFxuICAgICAgICBlbHNlIG50aF9yZXNvbHZlZCBwcyAobiAtIDEpXG5cbiAgKCogTGlrZSBbbnRoX3Jlc29sdmVkXSwgYnV0IGNhbmNlbHMgYWxsIHBlbmRpbmcgcHJvbWlzZXMgZm91bmQgd2hpbGVcbiAgICAgdHJhdmVyc2luZyBbcHNdLiAqKVxuICBsZXQgcmVjIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgKHBzIDogJ2EgdCBsaXN0KSAobiA6IGludCkgOiAnYSB0ID1cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICB8IHA6OnBzIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHAnKS5zdGF0ZSB3aXRoXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjYW5jZWwgcDtcbiAgICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyBuXG5cbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG4gICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgaWYgbiA8PSAwIHRoZW4gKExpc3QuaXRlciBjYW5jZWwgcHM7IHApXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwcyAobiAtIDEpXG5cbiAgKCogVGhlIFBSTkcgc3RhdGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGNvbnN0YW50IHRvIG1ha2Ugbm9uLUlPLWJhc2VkIHByb2dyYW1zXG4gICAgIGRldGVybWluaXN0aWMuICopXG4gICgqIE1haW50YWluZXIncyBub3RlOiBpcyB0aGlzIG5lY2Vzc2FyeT8gKilcbiAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZSBbfHxdKVxuXG4gIGxldCBjaG9vc2UgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QuY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBtYXRjaCBjb3VudF9yZXNvbHZlZF9wcm9taXNlc19pbiBwcyB3aXRoXG4gICAgfCBPayAwIC0+XG4gICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwXG4gICAgICBpblxuICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgT2sgMSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBwcykgLT5cbiAgICAgIG50aF9yZXNvbHZlZCBwcyAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gIGxldCBwaWNrIHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiTHd0LnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIDBcblxuICAgIHwgT2sgbiAtPlxuICAgICAgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyBwc1xuICAgICAgICAoUmFuZG9tLlN0YXRlLmludCAoTGF6eS5mb3JjZSBwcm5nKSBuKVxuXG4gICAgfCBFcnJvciAobiwgcXMpIC0+XG4gICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgbnRoX3Jlc29sdmVkIHFzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cblxuXG4gICgqIElmIFtuY2hvb3NlIHBzXSBvciBbbnBpY2sgcHNdIGZvdW5kIGFsbCBwcm9taXNlcyBpbiBbcHNdIHBlbmRpbmcsIHRoZVxuICAgICBjYWxsYmFjayBhZGRlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSBldmVudHVhbGx5IGNhbGxzIHRoaXMgZnVuY3Rpb24uIFRoZVxuICAgICBmdW5jdGlvbiBjb2xsZWN0cyBwcm9taXNlcyBpbiBbcHNdIHRoYXQgaGF2ZSBiZWNvbWUgZnVsZmlsbGVkLCBvciBmaW5kcyBvbmVcbiAgICAgcHJvbWlzZSBpbiBbcHNdIHRoYXQgaGFzIGJlZW4gcmVqZWN0ZWQuIEl0IHRoZW4gcmV0dXJucyB0aGUgZGVzaXJlZCBzdGF0ZVxuICAgICBvZiB0aGUgZmluYWwgcHJvbWlzZTogZWl0aGVyIHRoZSBsaXN0IG9mIHJlc3VsdHMgY29sbGVjdGVkLCBvciB0aGVcbiAgICAgZXhjZXB0aW9uIGZvdW5kLiAqKVxuICBsZXQgcmVjIGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmdcbiAgICAgIChyZXN1bHRzIDogJ2EgbGlzdClcbiAgICAgIChwcyA6ICdhIHQgbGlzdCkgOlxuICAgICAgICAoJ2EgbGlzdCByZXNvbHZlZF9zdGF0ZSkgPVxuXG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEZ1bGZpbGxlZCAoTGlzdC5yZXYgcmVzdWx0cylcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyAodjo6cmVzdWx0cykgcHNcblxuICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICByZXN1bHRcblxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyByZXN1bHRzIHBzXG5cbiAgbGV0IG5jaG9vc2UgcHMgPVxuICAgICgqIElmIGF0IGxlYXN0IG9uZSBwcm9taXNlIGluIFtwc10gaXMgZm91bmQgZnVsZmlsbGVkLCB0aGlzIGZ1bmN0aW9uIGlzXG4gICAgICAgY2FsbGVkIHRvIGZpbmQgYWxsIHN1Y2ggcHJvbWlzZXMuICopXG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5uY2hvb3NlIFtdIHdvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBpcyBwZW5kaW5nIGZvcmV2ZXJcIjtcbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgKHY6OmFjYykgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwc1xuICAgIGluXG5cbiAgICAoKiBMb29rcyBmb3IgYWxyZWFkeS1yZXNvbHZlZCBwcm9taXNlcyBpbiBbcHNdLiBJZiBub25lIGFyZSBmdWxmaWxsZWQgb3JcbiAgICAgICByZWplY3RlZCwgYWRkcyBhIGNhbGxiYWNrIHRvIGFsbCBwcm9taXNlcyBpbiBbcHNdIChhbGwgb2Ygd2hpY2ggYXJlXG4gICAgICAgcGVuZGluZykuICopXG4gICAgbGV0IHJlYyBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICAgIGxldCBjYWxsYmFjayBfcmVzdWx0ID1cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAgPSBtYXlfbm93X2JlX3Byb3h5IHAgaW5cbiAgICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIFtdIHBzIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIFt2XSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBwc1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG4gICgqIFNlZSBbbmNob29zZV0uIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBvbmx5IGluIGhhdmluZyBhZGRpdGlvbmFsIGNhbGxzIHRvXG4gICAgIFtjYW5jZWxdLiAqKVxuICBsZXQgbnBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QubnBpY2sgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcycgPVxuICAgICAgbWF0Y2ggcHMnIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgcmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwcydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGNhbmNlbCBwcztcbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAgcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzIGluXG4gICAgcFxuXG5cblxuICAoKiBTYW1lIGdlbmVyYWwgcGF0dGVybiBhcyBbbnBpY2tdIGFuZCBbbmNob29zZV0uICopXG4gIGxldCBuY2hvb3NlX3NwbGl0IHBzID1cbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2Vfc3BsaXQgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgZmluaXNoXG4gICAgICAgICh0b19yZXNvbHZlIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UpXG4gICAgICAgIChmdWxmaWxsZWQgOiAnYSBsaXN0KVxuICAgICAgICAocGVuZGluZyA6ICdhIHQgbGlzdClcbiAgICAgICAgKHBzIDogJ2EgdCBsaXN0KVxuICAgICAgICAgIDogKCdhIGxpc3QgKiAnYSB0IGxpc3QsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZVxuICAgICAgICAgIChGdWxmaWxsZWQgKExpc3QucmV2IGZ1bGZpbGxlZCwgTGlzdC5yZXYgcGVuZGluZykpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgKHY6OmZ1bGZpbGxlZCkgcGVuZGluZyBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgdG9fcmVzb2x2ZSByZXN1bHRcblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGZpbmlzaCB0b19yZXNvbHZlIGZ1bGZpbGxlZCAocDo6cGVuZGluZykgcHNcbiAgICBpblxuXG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcmVzdWx0cyBwZW5kaW5nIHBzID1cbiAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHNob3VsZCB0aGUgcGVuZGluZyBwcm9taXNlIGxpc3QgYWxzbyBiZVxuICAgICAgICAgICByZXZlcnNlZD8gSXQgaXMgcmV2ZXJzZWQgaW4gZmluaXNoLiAqKVxuICAgICAgICByZXR1cm4gKExpc3QucmV2IHJlc3VsdHMsIHBlbmRpbmcpXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzICh2OjpyZXN1bHRzKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBlbmRpbmdfYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IGZpbmlzaCBwIFtdIFtdIHBzIGluXG4gICAgICAgICAgaWdub3JlIHBcbiAgICAgICAgaW5cbiAgICAgICAgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgY2FsbGJhY2s7XG5cbiAgICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgICB8IHA6OnBzJyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW3ZdIHBlbmRpbmdfYWNjIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjaGVja19mb3JfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyAocDo6cGVuZGluZ19hY2MpIHBzJ1xuICAgIGluXG5cbiAgICBsZXQgcCA9IGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIFtdIHBzIGluXG4gICAgcFxuZW5kXG5pbmNsdWRlIENvbmN1cnJlbnRfY29tcG9zaXRpb25cblxuXG5cbm1vZHVsZSBNaXNjZWxsYW5lb3VzIDpcbnNpZ1xuICAoKiBQcm9taXNlIHN0YXRlIHF1ZXJ5ICopXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICB2YWwgc3RhdGUgOiAnYSB0IC0+ICdhIHN0YXRlXG4gIHZhbCBpc19zbGVlcGluZyA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZGVidWdfc3RhdGVfaXMgOiAnYSBzdGF0ZSAtPiAnYSB0IC0+IGJvb2wgdFxuXG4gICgqIEZ1bmN0aW9uIGxpZnRlcnMgKilcbiAgdmFsIGFwcGx5IDogKCdhIC0+ICdiIHQpIC0+ICdhIC0+ICdiIHRcblxuICB2YWwgd3JhcCA6XG4gICAgKHVuaXQgLT4gJ2IpIC0+XG4gICAgJ2IgdFxuICB2YWwgd3JhcDEgOlxuICAgICgnYTEgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYiB0KVxuICB2YWwgd3JhcDIgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdiIHQpXG4gIHZhbCB3cmFwMyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYiB0KVxuICB2YWwgd3JhcDQgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYiB0KVxuICB2YWwgd3JhcDUgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdiIHQpXG4gIHZhbCB3cmFwNiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiKSAtPlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYiB0KVxuICB2YWwgd3JhcDcgOlxuICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYiB0KVxuXG4gICgqIFBhdXNlZCBwcm9taXNlcyAqKVxuICB2YWwgcGF1c2UgOiB1bml0IC0+IHVuaXQgdFxuICB2YWwgd2FrZXVwX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGF1c2VkX2NvdW50IDogdW5pdCAtPiBpbnRcbiAgdmFsIHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIDogKGludCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBhYmFuZG9uX3BhdXNlZCA6IHVuaXQgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBmb3Igb3RoZXIgbW9kdWxlcyBpbiBMd3QgKilcbiAgdmFsIHBvbGwgOiAnYSB0IC0+ICdhIG9wdGlvblxuZW5kID1cbnN0cnVjdFxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFJldHVybiBvZiAnYVxuICAgIHwgRmFpbCBvZiBleG5cbiAgICB8IFNsZWVwXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBzdGF0ZSBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFJldHVybiB2XG4gICAgfCBSZWplY3RlZCBleG4gLT4gRmFpbCBleG5cbiAgICB8IFBlbmRpbmcgXyAtPiBTbGVlcFxuXG4gIGxldCBkZWJ1Z19zdGF0ZV9pcyBleHBlY3RlZF9zdGF0ZSBwID1cbiAgICByZXR1cm4gKHN0YXRlIHAgPSBleHBlY3RlZF9zdGF0ZSlcblxuICBsZXQgaXNfc2xlZXBpbmcgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBmYWxzZVxuICAgIHwgUmVqZWN0ZWQgXyAtPiBmYWxzZVxuICAgIHwgUGVuZGluZyBfIC0+IHRydWVcblxuICBsZXQgcG9sbCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IFJlamVjdGVkIGUgLT4gcmVyYWlzZSBlXG4gICAgfCBGdWxmaWxsZWQgdiAtPiBTb21lIHZcbiAgICB8IFBlbmRpbmcgXyAtPiBOb25lXG5cblxuXG4gIGxldCBhcHBseSBmIHggPVxuICAgIHRyeSBmIHggd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcCBmID1cbiAgICB0cnkgcmV0dXJuIChmICgpKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAxIGYgeDEgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDIgZiB4MSB4MiA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MilcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMyBmIHgxIHgyIHgzID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA0IGYgeDEgeDIgeDMgeDQgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDUgZiB4MSB4MiB4MyB4NCB4NSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNiBmIHgxIHgyIHgzIHg0IHg1IHg2ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1IHg2KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA3IGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYgeDcpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuXG5cbiAgbGV0IHBhdXNlX2hvb2sgPSByZWYgaWdub3JlXG5cbiAgbGV0IHBhdXNlZCA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKClcbiAgbGV0IHBhdXNlZF9jb3VudCA9IHJlZiAwXG5cbiAgbGV0IHBhdXNlICgpID1cbiAgICBsZXQgcCA9IGFkZF90YXNrX3IgcGF1c2VkIGluXG4gICAgaW5jciBwYXVzZWRfY291bnQ7XG4gICAgIXBhdXNlX2hvb2sgIXBhdXNlZF9jb3VudDtcbiAgICBwXG5cbiAgbGV0IHdha2V1cF9wYXVzZWQgKCkgPVxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBwYXVzZWQgdGhlblxuICAgICAgcGF1c2VkX2NvdW50IDo9IDBcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdG1wID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSBpblxuICAgICAgTHd0X3NlcXVlbmNlLnRyYW5zZmVyX3IgcGF1c2VkIHRtcDtcbiAgICAgIHBhdXNlZF9jb3VudCA6PSAwO1xuICAgICAgTHd0X3NlcXVlbmNlLml0ZXJfbCAoZnVuIHIgLT4gd2FrZXVwIHIgKCkpIHRtcFxuICAgIGVuZFxuXG4gIGxldCByZWdpc3Rlcl9wYXVzZV9ub3RpZmllciBmID0gcGF1c2VfaG9vayA6PSBmXG5cbiAgbGV0IGFiYW5kb25fcGF1c2VkICgpID1cbiAgICBMd3Rfc2VxdWVuY2UuY2xlYXIgcGF1c2VkO1xuICAgIHBhdXNlZF9jb3VudCA6PSAwXG5cbiAgbGV0IHBhdXNlZF9jb3VudCAoKSA9ICFwYXVzZWRfY291bnRcbmVuZFxuaW5jbHVkZSBNaXNjZWxsYW5lb3VzXG5cbm1vZHVsZSBMZXRfc3ludGF4ID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9XG4gIHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPVxuICAgIHN0cnVjdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgSW5maXggPVxuc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg9PDwpIGYgcCA9IGJpbmQgcCBmXG4gIGxldCAoPnw9KSBwIGYgPSBtYXAgZiBwXG4gIGxldCAoPXw8KSA9IG1hcFxuICBsZXQgKDwmPikgcCBwJyA9IGpvaW4gW3A7IHAnXVxuICBsZXQgKDw/PikgcCBwJyA9IGNob29zZSBbcDsgcCddXG5cbiAgaW5jbHVkZSBMZXRfc3ludGF4XG5lbmRcbmluY2x1ZGUgKCBJbmZpeCA6IG1vZHVsZSB0eXBlIG9mIEluZml4IHdpdGggbW9kdWxlIExldF9zeW50YXggOj0gTGV0X3N5bnRheC5MZXRfc3ludGF4IClcblxubW9kdWxlIFN5bnRheCA9XG5zdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5leGNlcHRpb24gT2ZmXG5cbnR5cGUgb25fc3dpdGNoID0ge1xuICBtdXRhYmxlIGhvb2tzIDogKHVuaXQgLT4gdW5pdCBMd3QudCkgbGlzdDtcbn1cblxudHlwZSBzdGF0ZSA9XG4gIHwgU3Rfb24gb2Ygb25fc3dpdGNoXG4gIHwgU3Rfb2ZmXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6IHN0YXRlIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgc3RhdGUgPSBTdF9vbiB7IGhvb2tzID0gW10gfSB9XG5cbmxldCBpc19vbiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIF8gLT4gdHJ1ZVxuICB8IFN0X29mZiAtPiBmYWxzZVxuXG5sZXQgY2hlY2sgPSBmdW5jdGlvblxuICB8IFNvbWV7IHN0YXRlID0gU3Rfb2ZmIH0gLT4gcmFpc2UgT2ZmXG4gIHwgU29tZSB7c3RhdGUgPSBTdF9vbiBffSB8IE5vbmUgLT4gKClcblxubGV0IGFkZF9ob29rIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rc1xuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgcmFpc2UgT2ZmXG4gIHwgTm9uZSAtPlxuICAgICgpXG5cbmxldCBhZGRfaG9va19vcl9leGVjIHN3aXRjaCBob29rID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vbiBvcyB9IC0+XG4gICAgb3MuaG9va3MgPC0gaG9vayA6OiBvcy5ob29rcztcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIHsgc3RhdGUgPSBTdF9vZmYgfSAtPlxuICAgIGhvb2sgKClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCB0dXJuX29mZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2guc3RhdGUgd2l0aFxuICB8IFN0X29uIHsgaG9va3MgPSBob29rcyB9IC0+XG4gICAgc3dpdGNoLnN0YXRlIDwtIFN0X29mZjtcbiAgICBMd3Quam9pbiAoTGlzdC5tYXAgKGZ1biBob29rIC0+IEx3dC5hcHBseSBob29rICgpKSBob29rcylcbiAgfCBTdF9vZmYgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHdpdGhfc3dpdGNoIGZuID1cbiAgbGV0IHN3aXRjaCA9IGNyZWF0ZSAoKSBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IGZuIHN3aXRjaClcbiAgICAoZnVuICgpIC0+IHR1cm5fb2ZmIHN3aXRjaClcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxub3BlbiBMd3QuU3ludGF4XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICsnYSBub2RlID0gTmlsIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGUgTHd0LnRcblxubGV0IHJldHVybl9uaWwgPSBMd3QucmV0dXJuIE5pbFxuXG5sZXQgZW1wdHkgOiAnYSB0ID0gZnVuICgpIC0+IHJldHVybl9uaWxcblxubGV0IHJldHVybiAoeCA6ICdhKSA6ICdhIHQgPSBmdW4gKCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZW1wdHkpKVxuXG5sZXQgcmV0dXJuX2x3dCAoeCA6ICdhIEx3dC50KSA6ICdhIHQgPSBmdW4gKCkgLT5cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IHQgKCkgPSBMd3QucmV0dXJuIChDb25zICh4LCB0KSlcblxubGV0IGNvbnNfbHd0IHggdCAoKSA9XG4gICBsZXQrIHggPSB4IGluXG4gICBDb25zICh4LCB0KVxuXG4oKiBBIG5vdGUgb24gcmVjdXJzaW5nIHRocm91Z2ggdGhlIHNlcXM6XG4gICBXaGVuIHRyYXZlcnNpbmcgYSBzZXEsIHRoZSBmaXJzdCB0aW1lIHdlIGV2YWx1YXRlIGEgc3VzcGVuZGVkIG5vZGUgd2UgYXJlXG4gICBvbiB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgYmluZCAoPj49KS4gSW4gdGhhdCBjYXNlLCB3ZSB1c2UgYXBwbHkgdG8gY2FwdHVyZVxuICAgZXhjZXB0aW9ucyBpbnRvIHByb21pc2UgcmVqZWN0aW9uLlxuXG4gICBUaGlzIGlzIG9ubHkgbmVlZGVkIG9uIHRoZSBmaXJzdCBpdGVyYXRpb24gYmVjYXVzZSB3ZSBhcmUgd2l0aGluIGEgY2FsbGJhY2tcbiAgIHBhc3NlZCB0byBMd3Qgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhIGJpbmQgYWZ0ZXIgdGhhdC5cblxuICAgVGhyb3VnaG91dCB0aGlzIGZpbGUgd2UgdXNlIHRoZSBzYW1lIGNvZGUgcGF0dGVybiB0byBhY2hpZXZlIHRoaXM6IHdlXG4gICBzaGFkb3cgdGhlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgZnVuY3Rpb24gd2l0aCBhbiBpZGVudGljYWwtYnV0LWZvci10aGUtYXBwbHlcbiAgIG5vbi1yZWN1cnNpdmUgY29weS4gKilcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxubGV0IGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBMd3QuYXBwbHkgc2VxMSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gc2VxMiAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxubGV0IG1hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPnw9IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBtYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcbmxldCBtYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KyB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXBfcyBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5sZXQgZmlsdGVyX21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCogeCA9IGYgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcF9zIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcF9zIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxubGV0IGZpbHRlciBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlciBmIG5leHQpKSBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQqIG9rID0gZiB4IGluXG4gICAgICBpZiBvayB0aGVuIEx3dC5yZXR1cm4gKENvbnMgKHgsIGZpbHRlcl9zIGYgbmV4dCkpIGVsc2UgZmlsdGVyX3MgZiBuZXh0ICgpXG5sZXQgZmlsdGVyX3MgZiBzZXEgKCkgPVxuICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbigqIHRoaXMgaXMgW2FwcGVuZCBzZXEgKGZsYXRfbWFwIGYgdGFpbCldICopXG5hbmQgZmxhdF9tYXBfYXBwIGYgc2VxIHRhaWwgKCkgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IGZsYXRfbWFwIGYgdGFpbCAoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIGZsYXRfbWFwX2FwcCBmIG5leHQgdGFpbCkpXG5cbmxldCBmbGF0X21hcCBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgZmxhdF9tYXBfYXBwIGYgKGYgeCkgbmV4dCAoKVxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgZm9sZF9sZWZ0X3MgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBsZXQgYXV4IGYgYWNjIHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGF1eCBmIGFjYyBzZXFcblxubGV0IGl0ZXIgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgbGV0IGF1eCBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGF1eCBzZXFcblxubGV0IGl0ZXJfcyBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCogKCkgPSBmIHggaW5cbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9wIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggYWNjIHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgbGV0IGF1eCBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5qb2luIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IHAgPSBmIHggaW5cbiAgICAgICAgYXV4IChwOjphY2MpIG5leHRcbiAgaW5cbiAgYXV4IFtdIHNlcVxuXG5sZXQgaXRlcl9uID8obWF4X2NvbmN1cnJlbmN5ID0gMSkgZiBzZXEgPVxuICBiZWdpblxuICAgIGlmIG1heF9jb25jdXJyZW5jeSA8PSAwIHRoZW5cbiAgICAgIGxldCBtZXNzYWdlID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkx3dF9zZXEuaXRlcl9uOiBtYXhfY29uY3VycmVuY3kgbXVzdCBiZSA+IDAsICVkIGdpdmVuXCJcbiAgICAgICAgICBtYXhfY29uY3VycmVuY3lcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBtZXNzYWdlXG4gIGVuZDtcbiAgbGV0IHJlYyBsb29wIHJ1bm5pbmcgYXZhaWxhYmxlIHNlcSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgQ29ucyAoZWx0LCBzZXEpIC0+XG4gICAgICBsb29wIChmIGVsdCA6OiBydW5uaW5nKSAocHJlZCBhdmFpbGFibGUpIHNlcVxuICBpblxuICAoKiBiZWNhdXNlIHRoZSByZWN1cnNpb24gaXMgbW9yZSBjb21wbGljYXRlZCBoZXJlLCB3ZSBhcHBseSB0aGUgc2VxIGRpcmVjdGx5IGF0XG4gICAgIHRoZSBjYWxsLXNpdGUgaW5zdGVhZCAqKVxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeSAoZnVuICgpIC0+IEx3dC5hcHBseSBzZXEgKCkpXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZCBmIHUnKSlcbiAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcblxubGV0IHJlYyB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcbmxldCB1bmZvbGRfbHd0IGYgdSAoKSA9XG4gIGxldCogeCA9IEx3dC5hcHBseSBmIHUgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiByZXR1cm5fbmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IEx3dC5yZXR1cm4gKENvbnMgKHgsIHVuZm9sZF9sd3QgZiB1JykpXG5cbmxldCByZWMgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZW1wdHlcbiAgfCBoIDo6IHQgLT4gY29ucyBoIChvZl9saXN0IHQpXG5cbmxldCByZWMgdG9fbGlzdCBzZXEgPVxuICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcbmxldCB0b19saXN0IHNlcSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IEx3dC5yZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBsZXQrIGwgPSB0b19saXN0IG5leHQgaW5cbiAgICB4IDo6IGxcblxubGV0IHJlYyBvZl9zZXEgc2VxICgpID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBMd3QucmV0dXJuIChDb25zICh4LCAob2Zfc2VxIG5leHQpKSlcbiAgfCBleGNlcHRpb24gZXhuIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBMd3QuZmFpbCBleG5cblxubGV0IHJlYyBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG5sZXQgb2Zfc2VxX2x3dCAoc2VxOiAnYSBMd3QudCBTZXEudCk6ICdhIHQgPSBmdW4gKCkgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiByZXR1cm5fbmlsXG4gICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICBsZXQrIHggPSB4IGluXG4gICAgICAgbGV0IG5leHQgPSBvZl9zZXFfbHd0IG5leHQgaW5cbiAgICAgICBDb25zICh4LCBuZXh0KVxuICAgIHwgZXhjZXB0aW9uIGV4YyB3aGVuIEx3dC5FeGNlcHRpb25fZmlsdGVyLnJ1biBleGMgLT4gTHd0LmZhaWwgZXhjXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIENsb3NlZFxuZXhjZXB0aW9uIEZ1bGxcbmV4Y2VwdGlvbiBFbXB0eVxuXG4oKiBBIG5vZGUgaW4gYSBxdWV1ZSBvZiBwZW5kaW5nIGRhdGEuICopXG50eXBlICdhIG5vZGUgPSB7XG4gIG11dGFibGUgbmV4dCA6ICdhIG5vZGU7XG4gICgqIE5leHQgbm9kZSBpbiB0aGUgcXVldWUuIEZvciB0aGUgbGFzdCBub2RlIGl0IHBvaW50cyB0byBpdHNlbGYuICopXG4gIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgKCogRGF0YSBvZiB0aGlzIG5vZGUuIEZvciB0aGUgbGFzdCBub2RlIGl0IGlzIGFsd2F5cyBbTm9uZV0uICopXG59XG5cbigqIE5vdGU6IGEgcXVldWUgZm9yIGFuIGV4aGF1c3RlZCBzdHJlYW0gaXMgcmVwcmVzZW50ZWQgYnkgYSBub2RlXG4gICBjb250YWluaW5nIFtOb25lXSBmb2xsb3dlZCBieSBhIG5vZGUgd2l0aCBpdHNlbGYgYXMgbmV4dCBhbmQgW05vbmVdXG4gICBhcyBkYXRhLiAqKVxuXG5sZXQgbmV3X25vZGUgKCkgPVxuICBsZXQgcmVjIG5vZGUgPSB7IG5leHQgPSBub2RlOyBkYXRhID0gTm9uZSB9IGluXG4gIG5vZGVcblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgdXNpbmcgYSBmdW5jdGlvbiB0byBjcmVhdGUgbmV3IGVsZW1lbnRzLiAqKVxudHlwZSAnYSBmcm9tID0ge1xuICBmcm9tX2NyZWF0ZSA6IHVuaXQgLT4gJ2Egb3B0aW9uIEx3dC50O1xuICAoKiBGdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG4gIG11dGFibGUgZnJvbV90aHJlYWQgOiB1bml0IEx3dC50O1xuICAoKiBUaHJlYWQgd2hpY2g6XG5cbiAgICAgLSB3YWl0IGZvciB0aGUgdGhyZWFkIHJldHVybmVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8gW2Zyb21fbmV4dF0sXG4gICAgIC0gYWRkIHRoZSBuZXh0IGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuXG5cbiAgICAgSWYgaXQgaXMgYSBzbGVlcGluZyB0aHJlYWQsIHRoZW4gaXQgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgY3JlYXRpbmcgYVxuICAgICBuZXcgb25lIHdpdGggW2Zyb21fY3JlYXRlXS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIHB1c2ggc3RyZWFtcy4gKilcbnR5cGUgcHVzaCA9IHtcbiAgbXV0YWJsZSBwdXNoX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoX3NpZ25hbF0gPyAqKVxuICBtdXRhYmxlIHB1c2hfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFR5cGUgb2YgYSBzdHJlYW0gc291cmNlIGZvciBib3VuZGVkLXB1c2ggc3RyZWFtcy4gKilcbnR5cGUgJ2EgcHVzaF9ib3VuZGVkID0ge1xuICBtdXRhYmxlIHB1c2hiX3NpZ25hbCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCBzaWduYWxlZCB3aGVuIGEgbmV3IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0cmVhbS4gKilcbiAgbXV0YWJsZSBwdXNoYl93YWl0aW5nIDogYm9vbDtcbiAgKCogSXMgYSB0aHJlYWQgd2FpdGluZyBvbiBbcHVzaGJfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaGJfc2l6ZSA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcXVldWUuICopXG4gIG11dGFibGUgcHVzaGJfY291bnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9wZW5kaW5nIDogJ2Egb3B0aW9uO1xuICAoKiBUaGUgbmV4dCBlbGVtZW50IHRvIHB1c2ggaWYgYSB0aHJlYWQgYmxvY2tlZCBvbiBwdXNoLiBXZSBzdG9yZSBpdFxuICAgICBoZXJlIHRvIGJlIHN1cmUgaXQgd2lsbCBiZSB0aGUgZmlyc3QgZWxlbWVudCB0byBiZSBhZGRlZCB3aGVuXG4gICAgIHNwYWNlIGJlY29tZXMgYXZhaWxhYmxlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FpdGVyIDogdW5pdCBMd3QudDtcbiAgbXV0YWJsZSBwdXNoYl9wdXNoX3dha2VuZXIgOiB1bml0IEx3dC51O1xuICAoKiBUaHJlYWQgYmxvY2tlZCBvbiBwdXNoLiAqKVxuICBtdXRhYmxlIHB1c2hiX2V4dGVybmFsIDogT2JqLnQgW0BvY2FtbC53YXJuaW5nIFwiLTY5XCJdO1xuICAoKiBSZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgc291cmNlLiAqKVxufVxuXG4oKiBTb3VyY2Ugb2YgYSBzdHJlYW0uICopXG50eXBlICdhIHNvdXJjZSA9XG4gIHwgRnJvbSBvZiAnYSBmcm9tXG4gIHwgRnJvbV9kaXJlY3Qgb2YgKHVuaXQgLT4gJ2Egb3B0aW9uKVxuICB8IFB1c2ggb2YgcHVzaFxuICB8IFB1c2hfYm91bmRlZCBvZiAnYSBwdXNoX2JvdW5kZWRcblxudHlwZSAnYSB0ID0ge1xuICBzb3VyY2UgOiAnYSBzb3VyY2U7XG4gICgqIFRoZSBzb3VyY2Ugb2YgdGhlIHN0cmVhbS4gKilcbiAgY2xvc2UgOiB1bml0IEx3dC51O1xuICAoKiBBIHdha2VuZXIgZm9yIGEgdGhyZWFkIHRoYXQgc2xlZXBzIHVudGlsIHRoZSBzdHJlYW0gaXMgY2xvc2VkLiAqKVxuICBjbG9zZWQgOiB1bml0IEx3dC50O1xuICAoKiBBIHdhaXRlciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIG11dGFibGUgbm9kZSA6ICdhIG5vZGU7XG4gICgqIFBvaW50ZXIgdG8gZmlyc3QgcGVuZGluZyBlbGVtZW50LCBvciB0byBbbGFzdF0gaWYgdGhlcmUgaXMgbm9cbiAgICAgcGVuZGluZyBlbGVtZW50LiAqKVxuICBsYXN0IDogJ2Egbm9kZSByZWY7XG4gICgqIE5vZGUgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRzLiAqKVxufVxuXG5jbGFzcyB0eXBlIFsnYV0gYm91bmRlZF9wdXNoID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50XG4gIG1ldGhvZCByZXNpemUgOiBpbnQgLT4gdW5pdFxuICBtZXRob2QgcHVzaCA6ICdhIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIGNsb3NlIDogdW5pdFxuICBtZXRob2QgY291bnQgOiBpbnRcbiAgbWV0aG9kIGJsb2NrZWQgOiBib29sXG4gIG1ldGhvZCBjbG9zZWQgOiBib29sXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXRcbmVuZFxuXG4oKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGNsb25lcyBpcyB0aGUgcG9pbnRlciB0byB0aGUgZmlyc3RcbiAgIHBlbmRpbmcgZWxlbWVudC4gKilcbmxldCBjbG9uZSBzID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNsb25lXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIHtcbiAgICBzb3VyY2UgPSBzLnNvdXJjZTtcbiAgICBjbG9zZSA9IHMuY2xvc2U7XG4gICAgY2xvc2VkID0gcy5jbG9zZWQ7XG4gICAgbm9kZSA9IHMubm9kZTtcbiAgICBsYXN0ID0gcy5sYXN0O1xuICB9XG5cbmxldCBmcm9tX3NvdXJjZSBzb3VyY2UgPVxuICBsZXQgbm9kZSA9IG5ld19ub2RlICgpIGluXG4gIGxldCBjbG9zZWQsIGNsb3NlID0gTHd0LndhaXQgKCkgaW5cbiAgeyBzb3VyY2UgOyBjbG9zZSA7IGNsb3NlZCA7IG5vZGUgOyBsYXN0ID0gcmVmIG5vZGUgfVxuXG5sZXQgZnJvbSBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb20geyBmcm9tX2NyZWF0ZSA9IGY7IGZyb21fdGhyZWFkID0gTHd0LnJldHVybl91bml0IH0pXG5cbmxldCBmcm9tX2RpcmVjdCBmID1cbiAgZnJvbV9zb3VyY2UgKEZyb21fZGlyZWN0IGYpXG5cbmxldCBjbG9zZWQgcyA9IHMuY2xvc2VkXG5cbmxldCBpc19jbG9zZWQgcyA9XG4gIG5vdCAoTHd0LmlzX3NsZWVwaW5nIChjbG9zZWQgcykpXG5cbmxldCBlbnF1ZXVlJyBlIGxhc3QgPVxuICBsZXQgbm9kZSA9ICFsYXN0XG4gIGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gIG5vZGUuZGF0YSA8LSBlO1xuICBub2RlLm5leHQgPC0gbmV3X2xhc3Q7XG4gIGxhc3QgOj0gbmV3X2xhc3RcblxubGV0IGVucXVldWUgZSBzID1cbiAgZW5xdWV1ZScgZSBzLmxhc3RcblxubGV0IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSA9XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IHNvdXJjZSwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPVxuICAgIGxldCBwdXNoX3NpZ25hbCwgcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICh7IHB1c2hfc2lnbmFsO1xuICAgICAgIHB1c2hfd2FpdGluZyA9IGZhbHNlO1xuICAgICAgIHB1c2hfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgcHVzaF9zaWduYWxfcmVzb2x2ZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2ggc291cmNlKSBpblxuICAoKiBbcHVzaF0gc2hvdWxkIG5vdCBjbG9zZSBvdmVyIFt0XSBzbyB0aGF0IGl0IGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZCBldmVuXG4gICAqIHRoZXJlIGFyZSBzdGlsbCByZWZlcmVuY2VzIHRvIFtwdXNoXS4gVW5wYWNrIGFsbCB0aGUgY29tcG9uZW50cyBvZiBbdF1cbiAgICogdGhhdCBbcHVzaF0gbmVlZHMgYW5kIHJlZmVyZW5jZSB0aG9zZSBpZGVudGlmaWVycyBpbnN0ZWFkLiAqKVxuICBsZXQgY2xvc2UgPSB0LmNsb3NlIGFuZCBjbG9zZWQgPSB0LmNsb3NlZCBhbmQgbGFzdCA9IHQubGFzdCBpblxuICAoKiBUaGUgcHVzaCBmdW5jdGlvbi4gSXQgZG9lcyBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3RyZWFtLiAqKVxuICBsZXQgcHVzaCB4ID1cbiAgICBpZiBub3QgKEx3dC5pc19zbGVlcGluZyBjbG9zZWQpIHRoZW4gcmFpc2UgQ2xvc2VkO1xuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZScgeCBsYXN0O1xuICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgIGVsZW1lbnQuICopXG4gICAgaWYgc291cmNlLnB1c2hfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICBzb3VyY2UucHVzaF93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgKCogVXBkYXRlIHRocmVhZHMuICopXG4gICAgICBsZXQgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gIXB1c2hfc2lnbmFsX3Jlc29sdmVyIGluXG4gICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICAgIHNvdXJjZS5wdXNoX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgcHVzaF9zaWduYWxfcmVzb2x2ZXIgOj0gbmV3X3B1c2hfc2lnbmFsX3Jlc29sdmVyO1xuICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF9wdXNoX3NpZ25hbF9yZXNvbHZlciAoKVxuICAgIGVuZDtcbiAgICAoKiBEbyB0aGlzIGF0IHRoZSBlbmQgaW4gY2FzZSBvbmUgb2YgdGhlIGZ1bmN0aW9uIHJhaXNlIGFuXG4gICAgICAgZXhjZXB0aW9uLiAqKVxuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBjbG9zZSAoKVxuICBpblxuICAodCwgcHVzaCwgZnVuIHggLT4gc291cmNlLnB1c2hfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeClcblxubGV0IHJldHVybiBhID1cbiAgbGV0IHN0cmVhbSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBwdXNoIChTb21lIGEpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgcmV0dXJuX2x3dCBhID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICBMd3QuZG9udF93YWl0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgYSAoZnVuIHggLT5cbiAgICAgICAgcHVzaCAoU29tZSB4KTtcbiAgICAgICAgcHVzaCBOb25lO1xuICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuICAgIChmdW4gX2V4YyAtPiBwdXNoIE5vbmUpO1xuICBzb3VyY2VcblxubGV0IG9mX3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhcyAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICB8IFNlcS5Db25zIChlbHQsIHMnKSAtPiBzIDo9IHMnOyBTb21lIGVsdFxuICBpblxuICBmcm9tX2RpcmVjdCBnZXRcblxubGV0IG9mX2x3dF9zZXEgcyA9XG4gIGxldCBzID0gcmVmIHMgaW5cbiAgbGV0IGdldCAoKSA9XG4gICAgIXMgKCkgPnw9IGZ1bmN0aW9uXG4gICAgfCBMd3Rfc2VxLk5pbCAtPiBOb25lXG4gICAgfCBMd3Rfc2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb20gZ2V0XG5cblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBzb3VyY2UsIHB1c2gsIF8gPSBjcmVhdGVfd2l0aF9yZWZlcmVuY2UgKCkgaW5cbiAgKHNvdXJjZSwgcHVzaClcblxubGV0IG9mX2l0ZXIgaXRlciBpID1cbiAgbGV0IHN0cmVhbSwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBpO1xuICBwdXNoIE5vbmU7XG4gIHN0cmVhbVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgb2ZfaXRlciBMaXN0Lml0ZXIgbFxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIG9mX2l0ZXIgQXJyYXkuaXRlciBhXG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIG9mX2l0ZXIgU3RyaW5nLml0ZXIgc1xuXG4oKiBBZGQgdGhlIHBlbmRpbmcgZWxlbWVudCB0byB0aGUgcXVldWUgYW5kIG5vdGlmeSB0aGUgYmxvY2tlZCBwdXNoZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogaW5mby5wdXNoYl9wZW5kaW5nID0gU29tZSBfXG5cbiAgIFRoaXMgZG9lcyBub3QgbW9kaWZ5IGluZm8ucHVzaGJfY291bnQuICopXG5sZXQgbm90aWZ5X3B1c2hlciBpbmZvIGxhc3QgPVxuICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICBlbnF1ZXVlJyBpbmZvLnB1c2hiX3BlbmRpbmcgbGFzdDtcbiAgKCogQ2xlYXIgcGVuZGluZyBlbGVtZW50LiAqKVxuICBpbmZvLnB1c2hiX3BlbmRpbmcgPC0gTm9uZTtcbiAgKCogV2FrZXVwIHRoZSBwdXNoZXIuICopXG4gIGxldCBvbGRfd2FrZW5lciA9IGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIGluXG4gIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyIDwtIHdhaXRlcjtcbiAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuXG5jbGFzcyBbJ2FdIGJvdW5kZWRfcHVzaF9pbXBsIChpbmZvIDogJ2EgcHVzaF9ib3VuZGVkKSB3YWtlbmVyX2NlbGwgbGFzdCBjbG9zZSA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjbG9zZWQgPSBmYWxzZVxuXG4gIG1ldGhvZCBzaXplID1cbiAgICBpbmZvLnB1c2hiX3NpemVcblxuICBtZXRob2QgcmVzaXplIHNpemUgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmJvdW5kZWRfcHVzaCNyZXNpemVcIjtcbiAgICBpbmZvLnB1c2hiX3NpemUgPC0gc2l6ZTtcbiAgICBpZiBpbmZvLnB1c2hiX2NvdW50IDwgaW5mby5wdXNoYl9zaXplICYmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICBub3RpZnlfcHVzaGVyIGluZm8gbGFzdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBwdXNoIHggPVxuICAgIGlmIGNsb3NlZCB0aGVuXG4gICAgICBMd3QuZmFpbCBDbG9zZWRcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW5cbiAgICAgIEx3dC5mYWlsIEZ1bGxcbiAgICBlbHNlIGlmIGluZm8ucHVzaGJfY291bnQgPj0gaW5mby5wdXNoYl9zaXplIHRoZW4gYmVnaW5cbiAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBTb21lIHg7XG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPiBpbmZvLnB1c2hiX3B1c2hfd2FpdGVyKVxuICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICB8IEx3dC5DYW5jZWxlZCAtPlxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICAgICAgIGxldCB3YWl0ZXIsIHdha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICAgICAgICAgICAgIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIDwtIHdha2VuZXI7XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIEx3dC5mYWlsIGV4bilcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICAgIGVucXVldWUnIChTb21lIHgpIGxhc3Q7XG4gICAgICBpbmZvLnB1c2hiX2NvdW50IDwtIGluZm8ucHVzaGJfY291bnQgKyAxO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICBsZXQgbmV3X3dhaXRlciwgbmV3X3dha2VuZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgICBpbmZvLnB1c2hiX3NpZ25hbCA8LSBuZXdfd2FpdGVyO1xuICAgICAgICB3YWtlbmVyX2NlbGwgOj0gbmV3X3dha2VuZXI7XG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbmRcblxuICBtZXRob2QgY2xvc2UgPVxuICAgIGlmIG5vdCBjbG9zZWQgdGhlbiBiZWdpblxuICAgICAgY2xvc2VkIDwtIHRydWU7XG4gICAgICBsZXQgbm9kZSA9ICFsYXN0IGFuZCBuZXdfbGFzdCA9IG5ld19ub2RlICgpIGluXG4gICAgICBub2RlLmRhdGEgPC0gTm9uZTtcbiAgICAgIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgICAgIGxhc3QgOj0gbmV3X2xhc3Q7XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZSB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciBDbG9zZWRcbiAgICAgIGVuZDtcbiAgICAgICgqIFNlbmQgYSBzaWduYWwgaWYgYXQgbGVhc3Qgb25lIHRocmVhZCBpcyB3YWl0aW5nIGZvciBhIG5ld1xuICAgICAgICAgZWxlbWVudC4gKilcbiAgICAgIGlmIGluZm8ucHVzaGJfd2FpdGluZyB0aGVuIGJlZ2luXG4gICAgICAgIGluZm8ucHVzaGJfd2FpdGluZyA8LSBmYWxzZTtcbiAgICAgICAgbGV0IG9sZF93YWtlbmVyID0gIXdha2VuZXJfY2VsbCBpblxuICAgICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciBvbGRfd2FrZW5lciAoKVxuICAgICAgZW5kO1xuICAgICAgTHd0Lndha2V1cCBjbG9zZSAoKTtcbiAgICBlbmRcblxuICBtZXRob2QgY291bnQgPVxuICAgIGluZm8ucHVzaGJfY291bnRcblxuICBtZXRob2QgYmxvY2tlZCA9XG4gICAgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmVcblxuICBtZXRob2QgY2xvc2VkID1cbiAgICBjbG9zZWRcblxuICBtZXRob2Qgc2V0X3JlZmVyZW5jZSA6ICdhLiAnYSAtPiB1bml0ID1cbiAgICBmdW4geCAtPiBpbmZvLnB1c2hiX2V4dGVybmFsIDwtIE9iai5yZXByIHhcbmVuZFxuXG5sZXQgY3JlYXRlX2JvdW5kZWQgc2l6ZSA9XG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLmNyZWF0ZV9ib3VuZGVkXCI7XG4gICgqIENyZWF0ZSB0aGUgc291cmNlIGZvciBub3RpZmljYXRpb25zIG9mIG5ldyBlbGVtZW50cy4gKilcbiAgbGV0IGluZm8sIHdha2VuZXJfY2VsbCA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgbGV0IHB1c2hfd2FpdGVyLCBwdXNoX3dha2VuZXIgPSBMd3QudGFzayAoKSBpblxuICAgICh7IHB1c2hiX3NpZ25hbCA9IHdhaXRlcjtcbiAgICAgICBwdXNoYl93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaGJfc2l6ZSA9IHNpemU7XG4gICAgICAgcHVzaGJfY291bnQgPSAwO1xuICAgICAgIHB1c2hiX3BlbmRpbmcgPSBOb25lO1xuICAgICAgIHB1c2hiX3B1c2hfd2FpdGVyID0gcHVzaF93YWl0ZXI7XG4gICAgICAgcHVzaGJfcHVzaF93YWtlbmVyID0gcHVzaF93YWtlbmVyO1xuICAgICAgIHB1c2hiX2V4dGVybmFsID0gT2JqLnJlcHIgKCkgfSxcbiAgICAgcmVmIHdha2VuZXIpXG4gIGluXG4gIGxldCB0ID0gZnJvbV9zb3VyY2UgKFB1c2hfYm91bmRlZCBpbmZvKSBpblxuICAodCwgbmV3IGJvdW5kZWRfcHVzaF9pbXBsIGluZm8gd2FrZW5lcl9jZWxsIHQubGFzdCB0LmNsb3NlKVxuXG4oKiBXYWl0IGZvciBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIGVsZW1lbnRcbiAgIG9mIHRoZSBzdHJlYW0uICopXG5sZXQgZmVlZCBzID1cbiAgbWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICB8IEZyb20gZnJvbSAtPlxuICAgICgqIFRoZXJlIGlzIGFscmVhZHkgYSB0aHJlYWQgc3RhcnRlZCB0byBjcmVhdGUgYSBuZXcgZWxlbWVudCxcbiAgICAgICB3YWl0IGZvciB0aGlzIG9uZSB0byB0ZXJtaW5hdGUuICopXG4gICAgaWYgTHd0LmlzX3NsZWVwaW5nIGZyb20uZnJvbV90aHJlYWQgdGhlblxuICAgICAgTHd0LnByb3RlY3RlZCBmcm9tLmZyb21fdGhyZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgKCogT3RoZXJ3aXNlIHJlcXVlc3QgYSBuZXcgZWxlbWVudC4gKilcbiAgICAgIGxldCB0aHJlYWQgPVxuICAgICAgICBmcm9tLmZyb21fY3JlYXRlICgpID4+PSBmdW4geCAtPlxuICAgICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgICBlbnF1ZXVlIHggcztcbiAgICAgICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgICgqIEFsbG93IG90aGVyIHRocmVhZHMgdG8gYWNjZXNzIHRoaXMgdGhyZWFkLiAqKVxuICAgICAgZnJvbS5mcm9tX3RocmVhZCA8LSB0aHJlYWQ7XG4gICAgICBMd3QucHJvdGVjdGVkIHRocmVhZFxuICAgIGVuZFxuICB8IEZyb21fZGlyZWN0IGYgLT5cbiAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAoKiBQdXNoIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgIGVucXVldWUgeCBzO1xuICAgIGlmIHggPSBOb25lIHRoZW4gTHd0Lndha2V1cCBzLmNsb3NlICgpO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFB1c2ggcHVzaCAtPlxuICAgIHB1c2gucHVzaF93YWl0aW5nIDwtIHRydWU7XG4gICAgTHd0LnByb3RlY3RlZCBwdXNoLnB1c2hfc2lnbmFsXG4gIHwgUHVzaF9ib3VuZGVkIHB1c2ggLT5cbiAgICBwdXNoLnB1c2hiX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaGJfc2lnbmFsXG5cbigqIFJlbW92ZSBbbm9kZV0gZnJvbSB0aGUgdG9wIG9mIHRoZSBxdWV1ZSwgb3IgZG8gbm90aGluZyBpZiBpdCB3YXNcbiAgIGFscmVhZHkgY29uc3VtZWQuXG5cbiAgIFByZWNvbmRpdGlvbjogbm9kZS5kYXRhIDw+IE5vbmVcbiopXG5sZXQgY29uc3VtZSBzIG5vZGUgPVxuICBpZiBub2RlID09IHMubm9kZSB0aGVuIGJlZ2luXG4gICAgcy5ub2RlIDwtIG5vZGUubmV4dDtcbiAgICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gICAgfCBQdXNoX2JvdW5kZWQgaW5mbyAtPlxuICAgICAgaWYgaW5mby5wdXNoYl9wZW5kaW5nID0gTm9uZSB0aGVuXG4gICAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCAtIDFcbiAgICAgIGVsc2VcbiAgICAgICAgbm90aWZ5X3B1c2hlciBpbmZvIHMubGFzdFxuICAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPlxuICAgICAgKClcbiAgZW5kXG5cbmxldCByZWMgcGVla19yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHBlZWtfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcblxubGV0IHBlZWsgcyA9IHBlZWtfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgbnBlZWtfcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICBlbHNlIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBucGVla19yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBucGVla19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBucGVlayBuIHMgPSBucGVla19yZWMgcy5ub2RlIFtdIG4gc1xuXG5sZXQgcmVjIGdldF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF9yZWMgcyBub2RlXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm4gbm9kZS5kYXRhXG4gIGVuZFxuXG5sZXQgZ2V0IHMgPSBnZXRfcmVjIHMgcy5ub2RlXG5cbmxldCByZWMgZ2V0X2V4bl9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPiBmZWVkIHMpXG4gICAgICAoZnVuICgpIC0+IGdldF9leG5fcmVjIHMgbm9kZSlcbiAgICAgIChmdW4gZXhuIC0+IEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5FcnJvciBleG4pKSlcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgKFJlc3VsdC5PayB2YWx1ZSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IHdyYXBfZXhuIHMgPSBmcm9tIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBzLm5vZGUpXG5cbmxldCByZWMgbmdldF9yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5nZXRfcmVjIG5vZGUgYWNjIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5nZXRfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgbmdldCBuIHMgPSBuZ2V0X3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3doaWxlX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGdldF93aGlsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGUgZiBzID0gZ2V0X3doaWxlX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgZ2V0X3doaWxlX3NfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAgZ2V0X3doaWxlX3NfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIGYgc1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBnZXRfd2hpbGVfcyBmIHMgPSBnZXRfd2hpbGVfc19yZWMgcy5ub2RlIFtdIGYgc1xuXG5sZXQgcmVjIG5leHRfcmVjIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBuZXh0X3JlYyBzIG5vZGVcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QuZmFpbCBFbXB0eVxuXG5sZXQgbmV4dCBzID0gbmV4dF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBsYXN0X25ld19yZWMgbm9kZSB4IHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiB4XG5cbmxldCBsYXN0X25ldyBzID1cbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBuZXh0IHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4geCAtPlxuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUgeCBzXG4gICAgfCBMd3QuRmFpbCBfIHwgTHd0LlNsZWVwIC0+XG4gICAgICB0aHJlYWRcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGFzdF9uZXdfcmVjIG5vZGUubmV4dCB4IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCByZWMgdG9fbGlzdF9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiB0b19saXN0X3JlYyBub2RlIGFjYyBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIHRvX2xpc3RfcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IHRvX2xpc3QgcyA9IHRvX2xpc3RfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX3N0cmluZ19yZWMgbm9kZSBidWYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIHg7XG4gICAgICB0b19zdHJpbmdfcmVjIG5vZGUubmV4dCBidWYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3JlYyBzLm5vZGUgKEJ1ZmZlci5jcmVhdGUgMTI4KSBzXG5cbmxldCBqdW5rIHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuIGJlZ2luXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT5cbiAgICBpZiBub2RlLmRhdGEgPD4gTm9uZSB0aGVuIGNvbnN1bWUgcyBub2RlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmQgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZFxuXG5sZXQgcmVjIG5qdW5rX3JlYyBub2RlIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTHd0LnJldHVybl91bml0XG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5qdW5rX3JlYyBub2RlIG4gc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBuanVua19yZWMgbm9kZS5uZXh0IChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBuanVuayBuIHMgPSBuanVua19yZWMgcy5ub2RlIG4gc1xuXG5sZXQgcmVjIGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuIGJlZ2luXG4gICAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgICBqdW5rX3doaWxlX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua193aGlsZSBmIHMgPSBqdW5rX3doaWxlX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua193aGlsZV9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgICAganVua193aGlsZV9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlX3MgZiBzID0ganVua193aGlsZV9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMganVua19vbGRfcmVjIG5vZGUgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgTHd0LmZhaWwgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBqdW5rX29sZF9yZWMgbm9kZS5uZXh0IHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQganVua19vbGQgcyA9IGp1bmtfb2xkX3JlYyBzLm5vZGUgc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlIGFjYyBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlIHMgPSBnZXRfYXZhaWxhYmxlX3JlYyBzLm5vZGUgW10gc1xuXG5sZXQgcmVjIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUgYWNjIG4gcyA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzXG4gICAgfCBMd3QuRmFpbCBleG4gLT5cbiAgICAgIHJhaXNlIGV4blxuICAgIHwgTHd0LlNsZWVwIC0+XG4gICAgICBMaXN0LnJldiBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIHMubm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuXG5sZXQgZ2V0X2F2YWlsYWJsZV91cF90byBuIHMgPSBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgaXNfZW1wdHkgcyA9XG4gIGlmIHMubm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGlzX2VtcHR5IHNcbiAgZWxzZVxuICAgIEx3dC5yZXR1cm4gKHMubm9kZS5kYXRhID0gTm9uZSlcblxubGV0IG1hcCBmIHMgPVxuICBmcm9tIChmdW4gKCkgLT4gZ2V0IHMgPnw9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+XG4gICAgbGV0IHggPSBmIHggaW5cbiAgICBTb21lIHhcbiAgfCBOb25lIC0+XG4gICAgTm9uZSlcblxubGV0IG1hcF9zIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBmIHggPnw9IChmdW4geCAtPiBTb21lIHgpXG4gIHwgTm9uZSAtPlxuICAgIEx3dC5yZXR1cm5fbm9uZSlcblxubGV0IGZpbHRlciBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIHRcbiAgICAgIGVsc2VcbiAgICAgICAgbmV4dCAoKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCBzIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBiZWdpblxuICAgICAgICBmIHggPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICAgIHwgTm9uZSAtPlxuICAgICAgdFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZpbHRlcl9tYXAgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcF9zIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbmV4dCAoKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0IGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBsZXQgbCA9IGYgeCBpblxuICAgICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgICAgIG5leHQgKClcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIEx3dC5yZXR1cm5fbm9uZSlcbiAgICB8IHggOjogbCAtPlxuICAgICAgcGVuZGluZ3MgOj0gbDtcbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUgeClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBtYXBfbGlzdF9zIGYgcyA9XG4gIGxldCBwZW5kaW5ncyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIG1hdGNoICFwZW5kaW5ncyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgKGdldCBzID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBmIHggPj49IGZ1biBsIC0+XG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGZsYXR0ZW4gcyA9XG4gIG1hcF9saXN0IChmdW4gbCAtPiBsKSBzXG5cbmxldCByZWMgZm9sZF9yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfcmVjIG5vZGUgZiBzIGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgYWNjID0gZiB4IGFjYyBpblxuICAgICAgZm9sZF9yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkIGYgcyBhY2MgPSBmb2xkX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZvbGRfc19yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGZvbGRfc19yZWMgbm9kZS5uZXh0IGYgcyBhY2NcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG5cbmxldCBmb2xkX3MgZiBzIGFjYyA9IGZvbGRfc19yZWMgcy5ub2RlIGYgcyBhY2NcblxubGV0IHJlYyBpdGVyX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgKCkgPSBmIHggaW5cbiAgICAgIGl0ZXJfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlciBmIHMgPSBpdGVyX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGYgeCA+Pj0gZnVuICgpIC0+XG4gICAgICBpdGVyX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgaXRlcl9zIGYgcyA9IGl0ZXJfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGl0ZXJfcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXRlcl9wX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgcmVzID0gZiB4IGluXG4gICAgICBsZXQgcmVzdCA9IGl0ZXJfcF9yZWMgbm9kZS5uZXh0IGYgcyBpblxuICAgICAgcmVzID4+PSBmdW4gKCkgLT4gcmVzdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3AgZiBzID0gaXRlcl9wX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHN0cmVhbSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3N0cmVhbS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgPVxuICAgIGJlZ2luXG4gICAgICBpZiBhdmFpbGFibGUgPiAwIHRoZW4gKFxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUpXG4gICAgICApXG4gICAgICBlbHNlIChcbiAgICAgICAgTHd0Lm5jaG9vc2Vfc3BsaXQgcnVubmluZyA+Pj0gZnVuIChjb21wbGV0ZSwgcnVubmluZykgLT5cbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlICsgTGlzdC5sZW5ndGggY29tcGxldGUpXG4gICAgICApXG4gICAgZW5kID4+PSBmdW4gKHJ1bm5pbmcsIGF2YWlsYWJsZSkgLT5cbiAgICBnZXQgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmpvaW4gcnVubmluZ1xuICAgIHwgU29tZSBlbHQgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSlcbiAgaW5cbiAgbG9vcCBbXSBtYXhfY29uY3VycmVuY3lcblxubGV0IHJlYyBmaW5kX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlblxuICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgZWxzZVxuICAgICAgICBmaW5kX3JlYyBub2RlLm5leHQgZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmQgZiBzID0gZmluZF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9zX3JlYyBub2RlIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCBhcyBvcHQgLT4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgTHd0LnJldHVybiBvcHRcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIGZpbmRfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfcyBmIHMgPSBmaW5kX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBmaW5kX21hcF9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBpZiB4ID0gTm9uZSB0aGVuXG4gICAgICAgIGZpbmRfbWFwX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcCBmIHMgPSBmaW5kX21hcF9yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfbWFwX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCB0ID0gZiB4IGluXG4gICAgICAodCA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGZpbmRfbWFwX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgdClcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9tYXBfcyBmIHMgPSBmaW5kX21hcF9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCBjb21iaW5lIHMxIHMyID1cbiAgbGV0IG5leHQgKCkgPVxuICAgIGxldCB0MSA9IGdldCBzMSBhbmQgdDIgPSBnZXQgczIgaW5cbiAgICB0MSA+Pj0gZnVuIG4xIC0+XG4gICAgdDIgPj49IGZ1biBuMiAtPlxuICAgIG1hdGNoIG4xLCBuMiB3aXRoXG4gICAgfCBTb21lIHgxLCBTb21lIHgyIC0+XG4gICAgICBMd3QucmV0dXJuIChTb21lKHgxLCB4MikpXG4gICAgfCBfIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBhcHBlbmQgczEgczIgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIHMxIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgIWN1cnJlbnRfcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmICFjdXJyZW50X3MgPT0gczIgdGhlblxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgY3VycmVudF9zIDo9IHMyO1xuICAgICAgICBuZXh0ICgpXG4gICAgICBlbmRcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjb25jYXQgc190b3AgPVxuICBsZXQgY3VycmVudF9zID0gcmVmIChmcm9tIChmdW4gKCkgLT4gTHd0LnJldHVybl9ub25lKSkgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgZ2V0IHNfdG9wID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgY3VycmVudF9zIDo9IHM7XG4gICAgICAgIG5leHQgKClcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBjaG9vc2Ugc3RyZWFtcyA9XG4gIGxldCBzb3VyY2UgcyA9IChzLCBnZXQgcyA+fD0gZnVuIHggLT4gKHMsIHgpKSBpblxuICBsZXQgc3RyZWFtcyA9IHJlZiAoTGlzdC5tYXAgc291cmNlIHN0cmVhbXMpIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXN0cmVhbXMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgTHd0LmNob29zZSAoTGlzdC5tYXAgc25kIGwpID4+PSBmdW4gKHMsIHgpIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmVtb3ZlX2Fzc3EgcyBsIGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHN0cmVhbXMgOj0gc291cmNlIHMgOjogbDtcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgc3RyZWFtcyA6PSBsO1xuICAgICAgICBuZXh0ICgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgcGFyc2UgcyBmID1cbiAgKG1hdGNoIHMuc291cmNlIHdpdGhcbiAgIHwgUHVzaF9ib3VuZGVkIF8gLT4gaW52YWxpZF9hcmcgXCJMd3Rfc3RyZWFtLnBhcnNlXCJcbiAgIHwgRnJvbSBfIHwgRnJvbV9kaXJlY3QgXyB8IFB1c2ggXyAtPiAoKSk7XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiBzKVxuICAgIChmdW4gZXhuIC0+XG4gICAgICAgcy5ub2RlIDwtIG5vZGU7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG5sZXQgaGV4ZHVtcCBzdHJlYW0gPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA4MCBhbmQgbnVtID0gcmVmIDAgaW5cbiAgZnJvbSBiZWdpbiBmdW4gXyAtPlxuICAgIG5nZXQgMTYgc3RyZWFtID4+PSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgIHwgbCAtPlxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIFByaW50Zi5icHJpbnRmIGJ1ZiBcIiUwOHh8ICBcIiAhbnVtO1xuICAgICAgbnVtIDo9ICFudW0gKyAxNjtcbiAgICAgIGxldCByZWMgYnl0ZXMgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIGJsYW5rcyBwb3NcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTAyeCBcIiAoQ2hhci5jb2RlIHgpO1xuICAgICAgICAgIGJ5dGVzIChwb3MgKyAxKSBsXG4gICAgICBhbmQgYmxhbmtzIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDE2IHRoZW4gYmVnaW5cbiAgICAgICAgICBpZiBwb3MgPSA4IHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgICBcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIiAgIFwiO1xuICAgICAgICAgIGJsYW5rcyAocG9zICsgMSlcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgYnl0ZXMgMCBsO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiIHxcIjtcbiAgICAgIExpc3QuaXRlciAoZnVuIGNoIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgKGlmIGNoID49ICdcXHgyMCcgJiYgY2ggPD0gJ1xceDdlJyB0aGVuIGNoIGVsc2UgJy4nKSkgbDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ3wnO1xuICAgICAgTHd0LnJldHVybiAoU29tZShCdWZmZXIuY29udGVudHMgYnVmKSlcbiAgZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuKCoqIE1vZHVsZSBbTHd0X3Jlc3VsdF06IGV4cGxpY2l0IGVycm9yIGhhbmRsaW5nICopXG5cbm9wZW4gUmVzdWx0XG5cbnR5cGUgKCsnYSwgKydiKSB0ID0gKCdhLCAnYikgUmVzdWx0LnQgTHd0LnRcblxubGV0IHJldHVybiB4ID0gTHd0LnJldHVybiAoT2sgeClcbmxldCBmYWlsIGUgPSBMd3QucmV0dXJuIChFcnJvciBlKVxuXG5sZXQgbGlmdCA9IEx3dC5yZXR1cm5cbmxldCBvayB4ID0gTHd0Lm1hcCAoZnVuIHkgLT4gT2sgeSkgeFxubGV0IGVycm9yIHggPSBMd3QubWFwIChmdW4geSAtPiBFcnJvciB5KSB4XG5cbmxldCBtYXAgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KSlcbiAgICBlXG5cbmxldCBtYXBfZXJyb3IgZiBlID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChmIGUpXG4gICAgICB8IE9rIHggLT4gT2sgeClcbiAgICBlXG5sZXQgbWFwX2VyciBmIGUgPSBtYXBfZXJyb3IgZiBlXG5cbmxldCBjYXRjaCBlID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBvayAoZSAoKSkpXG4gICAgZmFpbFxuXG5sZXQgZ2V0X2V4biBlID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4geFxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCBiaW5kIGUgZiA9XG4gIEx3dC5iaW5kIGVcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgZSAtPiBMd3QucmV0dXJuIChFcnJvciBlKVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICAgIFxubGV0IGJpbmRfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayB4IC0+IEx3dC5yZXR1cm4gKE9rIHgpKVxuICAgICAgXG5sZXQgYmluZF9sd3QgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IG9rIChmIHgpXG4gICAgICB8IEVycm9yIGUgLT4gZmFpbCBlKVxuXG5sZXQgYmluZF9yZXN1bHQgZSBmID1cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgIHwgT2sgeCAtPiBmIHgpXG4gICAgZVxuXG5sZXQgYmluZF9sd3RfZXJyb3IgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5iaW5kIChmIGUpIGZhaWxcbiAgICAgIHwgT2sgeCAtPiByZXR1cm4geClcbmxldCBiaW5kX2x3dF9lcnIgZSBmID0gYmluZF9sd3RfZXJyb3IgZSBmXG5cbmxldCBib3RoIGEgYiA9XG4gIGxldCBzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHNldF9vbmNlIGUgPVxuICAgIG1hdGNoICFzIHdpdGhcbiAgICB8IE5vbmUgLT4gczo9IFNvbWUgZVxuICAgIHwgU29tZSBfIC0+ICgpXG4gIGluXG4gIGxldCAoYSxiKSA9IG1hcF9lcnJvciBzZXRfb25jZSBhLG1hcF9lcnJvciBzZXRfb25jZSBiIGluXG4gIGxldCBzb21lX2Fzc2VydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBlIC0+IEVycm9yIGVcbiAgaW5cbiAgTHd0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4LCBPayB5IC0+IE9rICh4LHkpXG4gICAgICB8IEVycm9yIF8sIE9rIF9cbiAgICAgIHwgT2sgXyxFcnJvciBfXG4gICAgICB8IEVycm9yIF8sIEVycm9yIF8gLT4gc29tZV9hc3NlcnQgIXMpXG4gICAgKEx3dC5ib3RoIGEgYilcblxubGV0IGl0ZXIgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgICAgfCBFcnJvciBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGl0ZXJfZXJyb3IgZiByID1cbiAgTHd0LmJpbmQgclxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgICAgfCBPayBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoPj49KSA9IGJpbmRcbiAgbGV0ICg+fD0pIGUgZiA9IG1hcCBmIGVcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwIHQgfmYgPSBtYXAgZiB0XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGJpbmQgdCBmXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0IChsZXQqKSA9IGJpbmRcbiAgbGV0IChhbmQqKSA9IGJvdGhcblxuICBsZXQgKGxldCspIHggZiA9IG1hcCBmIHhcbiAgbGV0IChhbmQrKSA9IGJvdGhcbmVuZFxuXG5pbmNsdWRlIEluZml4XG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbnNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcbiAgdmFsIGVtcHR5OiB0XG4gIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICB2YWwgZmluZF9taW46IHQgLT4gZWx0XG4gIHZhbCBsb29rdXBfbWluOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9taW46IHQgLT4gdFxuICB2YWwgc2l6ZTogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBlbHQgPSBPcmQudCkgPVxuc3RydWN0XG4gIHR5cGUgZWx0ID0gT3JkLnRcblxuICB0eXBlIHQgPSB0cmVlIGxpc3RcbiAgYW5kIHRyZWUgPSBOb2RlIG9mIGVsdCAqIGludCAqIHRyZWUgbGlzdFxuXG4gIGxldCByb290IChOb2RlICh4LCBfLCBfKSkgPSB4XG4gIGxldCByYW5rIChOb2RlIChfLCByLCBfKSkgPSByXG4gIGxldCBsaW5rIChOb2RlICh4MSwgcjEsIGMxKSBhcyB0MSkgKE5vZGUgKHgyLCByMiwgYzIpIGFzIHQyKSA9XG4gICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4MSB4MiBpblxuICAgIGlmIGMgPD0gMCB0aGVuIE5vZGUgKHgxLCByMSArIDEsIHQyOjpjMSkgZWxzZSBOb2RlKHgyLCByMiArIDEsIHQxOjpjMilcbiAgbGV0IHJlYyBpbnMgdCA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgICAtPlxuICAgICAgW3RdXG4gICAgfCAodCc6Ol8pIGFzIHRzIHdoZW4gcmFuayB0IDwgcmFuayB0JyAtPlxuICAgICAgdDo6dHNcbiAgICB8IHQnOjp0cyAtPlxuICAgICAgaW5zIChsaW5rIHQgdCcpIHRzXG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGlzX2VtcHR5IHRzID0gdHMgPSBbXVxuICBsZXQgYWRkIHggdHMgPSBpbnMgKE5vZGUgKHgsIDAsIFtdKSkgdHNcbiAgbGV0IHJlYyB1bmlvbiB0cyB0cycgPVxuICAgIG1hdGNoIHRzLCB0cycgd2l0aFxuICAgICAgKFtdLCBfKSAtPiB0cydcbiAgICB8IChfLCBbXSkgLT4gdHNcbiAgICB8ICh0MTo6dHMxLCB0Mjo6dHMyKSAgLT5cbiAgICAgIGlmIHJhbmsgdDEgPCByYW5rIHQyIHRoZW4gdDEgOjogdW5pb24gdHMxICh0Mjo6dHMyKVxuICAgICAgZWxzZSBpZiByYW5rIHQyIDwgcmFuayB0MSB0aGVuIHQyIDo6IHVuaW9uICh0MTo6dHMxKSB0czJcbiAgICAgIGVsc2UgaW5zIChsaW5rIHQxIHQyKSAodW5pb24gdHMxIHRzMilcblxuICBsZXQgcmVjIGZpbmRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBbdF0gICAtPiByb290IHRcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBsZXQgeCA9IGZpbmRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgIGlmIGMgPCAwIHRoZW4gcm9vdCB0IGVsc2UgeFxuXG4gIGxldCByZWMgbG9va3VwX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IFtdICAgIC0+IE5vbmVcbiAgICB8IFt0XSAgIC0+IFNvbWUgKHJvb3QgdClcbiAgICB8IHQ6OnRzIC0+XG4gICAgICBtYXRjaCBsb29rdXBfbWluIHRzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeCBhcyByZXN1bHQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSAocm9vdCB0KSB4IGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gU29tZSAocm9vdCB0KSBlbHNlIHJlc3VsdFxuXG4gIGxldCByZWMgZ2V0X21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdICAgIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgW3RdICAgLT4gKHQsIFtdKVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCAodCcsIHRzJykgPSBnZXRfbWluIHRzIGluXG4gICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIChyb290IHQnKSBpblxuICAgICAgaWYgYyA8IDAgdGhlbiAodCwgdHMpIGVsc2UgKHQnLCB0Ojp0cycpXG5cbiAgbGV0IHJlbW92ZV9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IHRzIC0+XG4gICAgICBsZXQgKE5vZGUgKF8sIF8sIGMpLCB0cykgPSBnZXRfbWluIHRzIGluXG4gICAgICB1bmlvbiAoTGlzdC5yZXYgYykgdHNcblxuICBsZXQgcmVjIHNpemUgbCA9XG4gICAgbGV0IHNpemV0cmVlIChOb2RlIChfLF8sdGwpKSA9IDEgKyBzaXplIHRsIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHQgLT4gcyArIHNpemV0cmVlIHQpIDAgbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIEEgc3VydmV5IGFuZCBtZWFzdXJlbWVudHMgb2YgbW9yZSBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBmb3VuZCBhdDpcblxuICAgIGh0dHBzOi8vanN0aG9tYXMuZ2l0aHViLmlvL21hcC1jb21wYXJpc29uLmh0bWxcblxuICAgU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L3B1bGwvMzQ3LiAqKVxubGV0IHRhaWxfcmVjdXJzaXZlX21hcCBmIGwgPVxuICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgbClcblxubGV0IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZDo6dGwgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAoKGYgaSBoZCk6OmFjYykgKGkgKyAxKSB0bFxuICBpblxuICBpbm5lciBbXSAwIGxcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlYyBpdGVyX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyX3MgZiBsXG5cbmxldCBpdGVyX3AgZiBsID1cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgcmVjIGl0ZXJpX3MgaSBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSAoZiBpKSB4ID4+PSBmdW4gKCkgLT5cbiAgICBpdGVyaV9zIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaV9zIGYgbCA9IGl0ZXJpX3MgMCBmIGxcblxubGV0IGl0ZXJpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBMd3Quam9pbiB0c1xuXG5sZXQgbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjIHw+IEx3dC5yZXR1cm5cbiAgICB8IGhkOjp0bCAtPlxuICAgICAgTHd0LmFwcGx5IGYgaGQgPj49IGZ1biByIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIChyOjphY2MpIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IHJlYyBfY29sbGVjdF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW4gaSAtPlxuICAgIChfY29sbGVjdF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIChpOjphY2MpIHRzXG5cbmxldCBtYXBfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X3JldiBbXSB0c1xuXG5sZXQgZmlsdGVyX21hcF9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB2IC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgdGxcbiAgICAgIHwgTm9uZSAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0bFxuICBpblxuICBpbm5lciBbXSBsXG5cbmxldCBmaWx0ZXJfbWFwX3AgZiBsID1cbiAgbGV0IHJlYyBfY29sbGVjdF9vcHRpb25hbF9yZXYgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAgICAtPiBMd3QucmV0dXJuIGFjY1xuICB8IHQ6OnRzIC0+XG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgdiAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0c1xuICAgIHwgTm9uZSAtPiAoX2NvbGxlY3Rfb3B0aW9uYWxfcmV2IFtAb2NhbWwudGFpbGNhbGxdKSBhY2MgdHNcbiAgaW5cbiAgbGV0IHRzID0gTGlzdC5yZXZfbWFwIChMd3QuYXBwbHkgZikgbCBpblxuICBfY29sbGVjdF9vcHRpb25hbF9yZXYgW10gdHNcblxubGV0IG1hcGlfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyBpID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgKGYgaSkgaGQgPj49IGZ1biB2IC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIChpKzEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5sZXQgbWFwaV9wIGYgbCA9XG4gIGxldCBmJyBpID0gTHd0LmFwcGx5IChmIGkpIGluXG4gIGxldCB0cyA9IHRhaWxfcmVjdXJzaXZlX21hcGlfcmV2IGYnIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcyBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuIGFjY1xuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biB4IC0+XG4gICAgcmV2X21hcF9hcHBlbmRfcyAoeCA6OiBhY2MpIGYgbFxuXG5sZXQgcmV2X21hcF9zIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3MgW10gZiBsXG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmRfcCBhY2MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICByZXZfbWFwX2FwcGVuZF9wXG4gICAgICAoTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICAgICBhY2MgPnw9IGZ1biBsIC0+XG4gICAgICAgeCA6OiBsKSBmIGxcblxubGV0IHJldl9tYXBfcCBmIGwgPVxuICByZXZfbWFwX2FwcGVuZF9wIEx3dC5yZXR1cm5fbmlsIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdF9zIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGFjYykgeCA+Pj0gZnVuIGFjYyAtPlxuICAgIChmb2xkX2xlZnRfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBhY2MgbFxuXG5sZXQgZm9sZF9yaWdodF9zIGYgbCBhY2MgPVxuICBsZXQgcmVjIGlubmVyIGYgYSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiBhXG4gICAgfCBoZDo6dGwgLT4gKEx3dC5hcHBseSAoZiBoZCkgYSkgPj49IGZ1biBhJyAtPlxuICAgICAgKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSBmIGEnIHRsXG4gIGluXG4gIGlubmVyIGYgYWNjIChMaXN0LnJldiBsKVxuXG5sZXQgcmVjIGZvcl9hbGxfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICAoZm9yX2FsbF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuX2ZhbHNlXG5cbmxldCBmb3JfYWxsX3AgZiBsID1cbiAgbWFwX3AgZiBsID4+PSBmdW4gYmwgLT4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZXhpc3RzX3MgZiBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QucmV0dXJuX2ZhbHNlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm5fdHJ1ZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChleGlzdHNfcyBbQG9jYW1sLnRhaWxjYWxsXSkgZiBsXG5cbmxldCBleGlzdHNfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmV4aXN0cyAoZnVuIHggLT4geCkgYmwgfD4gTHd0LnJldHVyblxuXG5sZXQgcmVjIGZpbmRfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5mYWlsIE5vdF9mb3VuZFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoZmluZF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IF9vcHRpb25hbGl6ZSBmIHggPVxuICBmIHggPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBMd3QucmV0dXJuIChTb21lIHgpIGVsc2UgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaWx0ZXJfcyBmIGwgPVxuICBmaWx0ZXJfbWFwX3MgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBmaWx0ZXJfcCBmIGwgPVxuICAgZmlsdGVyX21hcF9wIChfb3B0aW9uYWxpemUgZikgbFxuXG5sZXQgcGFydGl0aW9uX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MxIGFjYzIgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYzEsIExpc3QucmV2IGFjYzIpXG4gICAgfCBoZDo6dGwgLT4gTHd0LmFwcGx5IGYgaGQgPj49IGZ1biBiIC0+XG4gICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgIGlubmVyIChoZDo6YWNjMSkgYWNjMiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5uZXIgYWNjMSAoaGQ6OmFjYzIpIHRsXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9wIGYgbCA9XG4gIGxldCBnIHggPSBMd3QuYXBwbHkgZiB4ID4+PSBmdW4gYiAtPiBMd3QucmV0dXJuIChiLCB4KSBpblxuICBtYXBfcCBnIGwgPj49IGZ1biB0bCAtPlxuICBsZXQgZ3JvdXAxID0gdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciBmc3QgdGwgaW5cbiAgbGV0IGdyb3VwMiA9XG4gICAgdGFpbF9yZWN1cnNpdmVfbWFwIHNuZCBAQCBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IEBAIGZzdCB4KSB0bCBpblxuICBMd3QucmV0dXJuIChncm91cDEsIGdyb3VwMilcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxub3BlbiBMd3QuSW5maXhcblxudHlwZSAnYSB0ID0ge1xuICBjcmVhdGUgOiB1bml0IC0+ICdhIEx3dC50O1xuICAoKiBDcmVhdGUgYSBuZXcgcG9vbCBtZW1iZXIuICopXG4gIGNoZWNrIDogJ2EgLT4gKGJvb2wgLT4gdW5pdCkgLT4gdW5pdDtcbiAgKCogQ2hlY2sgdmFsaWRpdHkgb2YgYSBwb29sIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZS4gKilcbiAgdmFsaWRhdGUgOiAnYSAtPiBib29sIEx3dC50O1xuICAoKiBWYWxpZGF0ZSBhbiBleGlzdGluZyBmcmVlIHBvb2wgbWVtYmVyIGJlZm9yZSB1c2UuICopXG4gIGRpc3Bvc2UgOiAnYSAtPiB1bml0IEx3dC50O1xuICAoKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG4gIGNsZWFyZWQgOiBib29sIHJlZiByZWY7XG4gICgqIEhhdmUgdGhlIGN1cnJlbnQgcG9vbCBlbGVtZW50cyBiZWVuIGNsZWFyZWQgb3V0PyAqKVxuICBtYXggOiBpbnQ7XG4gICgqIFNpemUgb2YgdGhlIHBvb2wuICopXG4gIG11dGFibGUgY291bnQgOiBpbnQ7XG4gICgqIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcG9vbC4gKilcbiAgbGlzdCA6ICdhIFF1ZXVlLnQ7XG4gICgqIEF2YWlsYWJsZSBwb29sIG1lbWJlcnMuICopXG4gIHdhaXRlcnMgOiAnYSBMd3QudSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogUHJvbWlzZSByZXNvbHZlcnMgd2FpdGluZyBmb3IgYSBmcmVlIG1lbWJlci4gKilcbn1cblxubGV0IGNyZWF0ZSBtID8odmFsaWRhdGUgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3RydWUpID8oY2hlY2sgPSBmdW4gXyBmIC0+IGYgdHJ1ZSkgPyhkaXNwb3NlID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSBjcmVhdGUgPVxuICB7IG1heCA9IG07XG4gICAgY3JlYXRlID0gY3JlYXRlO1xuICAgIHZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgY2hlY2sgPSBjaGVjaztcbiAgICBkaXNwb3NlID0gZGlzcG9zZTtcbiAgICBjbGVhcmVkID0gcmVmIChyZWYgZmFsc2UpO1xuICAgIGNvdW50ID0gMDtcbiAgICBsaXN0ID0gUXVldWUuY3JlYXRlICgpO1xuICAgIHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxuKCogQ3JlYXRlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgY3JlYXRlX21lbWJlciBwID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgICgqIE11c3QgYmUgZG9uZSBiZWZvcmUgcC5jcmVhdGUgdG8gcHJldmVudCBvdGhlciByZXNvbHZlcnMgZnJvbVxuICAgICAgICAgIGNyZWF0aW5nIG5ldyBtZW1iZXJzIGlmIHRoZSBsaW1pdCBpcyByZWFjaGVkLiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCArIDE7XG4gICAgICAgcC5jcmVhdGUgKCkpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIHNvIGRvbid0IGluY3JlbWVudCBjb3VudC4gKilcbiAgICAgICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICAgICAgIEx3dC5mYWlsIGV4bilcblxuKCogUmVsZWFzZSBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IHJlbGVhc2UgcCBjID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgcC53YWl0ZXJzIHdpdGhcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICAoKiBBIHByb21pc2UgcmVzb2x2ZXIgaXMgd2FpdGluZywgZ2l2ZSBpdCB0aGUgcG9vbCBtZW1iZXIuICopXG4gICAgTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGNcbiAgfCBOb25lIC0+XG4gICAgKCogTm8gb25lIGlzIHdhaXRpbmcsIHF1ZXVlIGl0LiAqKVxuICAgIFF1ZXVlLnB1c2ggYyBwLmxpc3RcblxuKCogRGlzcG9zZSBvZiBhIHBvb2wgbWVtYmVyLiAqKVxubGV0IGRpc3Bvc2UgcCBjID1cbiAgcC5kaXNwb3NlIGMgPj49IGZ1biAoKSAtPlxuICBwLmNvdW50IDwtIHAuY291bnQgLSAxO1xuICBMd3QucmV0dXJuX3VuaXRcblxuKCogQ3JlYXRlIGEgbmV3IG1lbWJlciB3aGVuIG9uZSBpcyB0aHJvd24gYXdheS4gKilcbmxldCByZXBsYWNlX2Rpc3Bvc2VkIHAgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgZG8gbm90IGNyZWF0ZSBhIG5ldyBtZW1iZXIgdG8gYXZvaWRcbiAgICAgICBsb3NpbmcgYW4gZXJyb3IgaWYgY3JlYXRpb24gZmFpbHMuICopXG4gICAgKClcbiAgfCBTb21lIHdha2VuZXIgLT5cbiAgICBMd3Qub25fYW55XG4gICAgICAoTHd0LmFwcGx5IHAuY3JlYXRlICgpKVxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYylcbiAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAoKiBDcmVhdGlvbiBmYWlsZWQsIG5vdGlmeSB0aGUgd2FpdGVyIG9mIHRoZSBmYWlsdXJlLiAqKVxuICAgICAgICAgTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pXG5cbigqIFZlcmlmeSBhIG1lbWJlciBpcyBzdGlsbCB2YWxpZCBiZWZvcmUgdXNpbmcgaXQuICopXG5sZXQgdmFsaWRhdGVfYW5kX3JldHVybiBwIGMgPVxuICBMd3QudHJ5X2JpbmRcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIHAudmFsaWRhdGUgYylcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIGNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIFJlbW92ZSB0aGlzIG1lbWJlciBhbmQgY3JlYXRlIGEgbmV3IG9uZS4gKilcbiAgICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgY3JlYXRlX21lbWJlciBwKVxuICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAoKiBWYWxpZGF0aW9uIGZhaWxlZDogY3JlYXRlIGEgbmV3IG1lbWJlciBpZiBhdCBsZWFzdCBvbmVcbiAgICAgICAgICAgIHJlc29sdmVyIGlzIHdhaXRpbmcuICopXG4gICAgICAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgICAgICByZXBsYWNlX2Rpc3Bvc2VkIHA7XG4gICAgICAgICBMd3QuZmFpbCBlKVxuXG4oKiBBY3F1aXJlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgYWNxdWlyZSBwID1cbiAgaWYgUXVldWUuaXNfZW1wdHkgcC5saXN0IHRoZW5cbiAgICAoKiBObyBtb3JlIGF2YWlsYWJsZSBtZW1iZXIuICopXG4gICAgaWYgcC5jb3VudCA8IHAubWF4IHRoZW5cbiAgICAgICgqIExpbWl0IG5vdCByZWFjaGVkOiBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgY3JlYXRlX21lbWJlciBwXG4gICAgZWxzZVxuICAgICAgKCogTGltaXQgcmVhY2hlZDogd2FpdCBmb3IgYSBmcmVlIG9uZS4gKilcbiAgICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgcC53YWl0ZXJzID4+PSB2YWxpZGF0ZV9hbmRfcmV0dXJuIHBcbiAgZWxzZVxuICAgICgqIFRha2UgdGhlIGZpcnN0IGZyZWUgbWVtYmVyIGFuZCB2YWxpZGF0ZSBpdC4gKilcbiAgICBsZXQgYyA9IFF1ZXVlLnRha2UgcC5saXN0IGluXG4gICAgdmFsaWRhdGVfYW5kX3JldHVybiBwIGNcblxuKCogUmVsZWFzZSBhIG1lbWJlciB3aGVuIHVzZSByZXN1bHRlZCBpbiBmYWlsZWQgcHJvbWlzZSBpZiB0aGUgbWVtYmVyXG4gICBpcyBzdGlsbCB2YWxpZC4gKilcbmxldCBjaGVja19hbmRfcmVsZWFzZSBwIGMgY2xlYXJlZCA9XG4gIGxldCBvayA9IHJlZiBmYWxzZSBpblxuICBwLmNoZWNrIGMgKGZ1biByZXN1bHQgLT4gb2sgOj0gcmVzdWx0KTtcbiAgaWYgY2xlYXJlZCB8fCBub3QgIW9rIHRoZW4gKFxuICAgICgqIEVsZW1lbnQgaXMgbm90IG9rIG9yIHRoZSBwb29sIHdhcyBjbGVhcmVkIC0gZGlzcG9zZSBvZiBpdCAqKVxuICAgIGRpc3Bvc2UgcCBjXG4gIClcbiAgZWxzZSAoXG4gICAgKCogRWxlbWVudCBpcyBvayAtIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgcG9vbCAqKVxuICAgIHJlbGVhc2UgcCBjO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICApXG5cbmxldCB1c2UgcCBmID1cbiAgYWNxdWlyZSBwID4+PSBmdW4gYyAtPlxuICAoKiBDYXB0dXJlIHRoZSBjdXJyZW50IGNsZWFyZWQgc3RhdGUgc28gd2UgY2FuIHNlZSBpZiBpdCBjaGFuZ2VzIHdoaWxlIHRoaXNcbiAgICAgZWxlbWVudCBpcyBpbiB1c2UgKilcbiAgbGV0IGNsZWFyZWQgPSAhKHAuY2xlYXJlZCkgaW5cbiAgbGV0IHByb21pc2UgPVxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPiBmIGMpXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgIGNoZWNrX2FuZF9yZWxlYXNlIHAgYyAhY2xlYXJlZCA+Pj0gZnVuICgpIC0+XG4gICAgICAgICBMd3QuZmFpbCBlKVxuICBpblxuICBwcm9taXNlID4+PSBmdW4gXyAtPlxuICBpZiAhY2xlYXJlZCB0aGVuIChcbiAgICAoKiBwIHdhcyBjbGVhcmVkIHdoaWxlIHByb21pc2Ugd2FzIHJlc29sdmluZyAtIGRpc3Bvc2Ugb2YgdGhpcyBlbGVtZW50ICopXG4gICAgZGlzcG9zZSBwIGMgPj49IGZ1biAoKSAtPlxuICAgIHByb21pc2VcbiAgKVxuICBlbHNlIChcbiAgICByZWxlYXNlIHAgYztcbiAgICBwcm9taXNlXG4gIClcblxubGV0IGNsZWFyIHAgPVxuICBsZXQgZWxlbWVudHMgPSBRdWV1ZS5mb2xkIChmdW4gbCBlbGVtZW50IC0+IGVsZW1lbnQgOjogbCkgW10gcC5saXN0IGluXG4gIFF1ZXVlLmNsZWFyIHAubGlzdDtcbiAgKCogSW5kaWNhdGUgdG8gYW55IGN1cnJlbnRseSBpbi11c2UgZWxlbWVudHMgdGhhdCB3ZSBjbGVhcmVkIHRoZSBwb29sICopXG4gIGxldCBvbGRfY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBvbGRfY2xlYXJlZCA6PSB0cnVlO1xuICBwLmNsZWFyZWQgOj0gcmVmIGZhbHNlO1xuICBMd3RfbGlzdC5pdGVyX3MgKGRpc3Bvc2UgcCkgZWxlbWVudHNcblxubGV0IHdhaXRfcXVldWVfbGVuZ3RoIHAgPSBMd3Rfc2VxdWVuY2UubGVuZ3RoIHAud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFRoaXMgY29kZSBpcyBhZGFwdGVkIGZyb21cbiAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMTAwMTIxNTQyNS9odHRwOi8vZWlnZW5jbGFzcy5vcmc6ODAvaGlraS9saWdodHdlaWdodC10aHJlYWRzLXdpdGgtbHd0LiAqKVxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbXZhcl9jb250ZW50cyA6ICdhIG9wdGlvbjtcbiAgKCogQ3VycmVudCBjb250ZW50cyAqKVxuXG4gIHdyaXRlcnMgOiAoJ2EgKiB1bml0IEx3dC51KSBMd3Rfc2VxdWVuY2UudDtcbiAgKCogVGhyZWFkcyB3YWl0aW5nIHRvIHB1dCBhIHZhbHVlICopXG5cbiAgcmVhZGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgZm9yIGEgdmFsdWUgKilcbn1cblxubGV0IGNyZWF0ZV9lbXB0eSAoKSA9XG4gIHsgbXZhcl9jb250ZW50cyA9IE5vbmU7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgY3JlYXRlIHYgPVxuICB7IG12YXJfY29udGVudHMgPSBTb21lIHY7XG4gICAgd3JpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCk7XG4gICAgcmVhZGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgcHV0IG12YXIgdiA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGJlZ2luIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIG12YXIucmVhZGVycyB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdlxuICAgICAgfCBTb21lIHcgLT5cbiAgICAgICAgTHd0Lndha2V1cF9sYXRlciB3IHZcbiAgICBlbmQ7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgU29tZSBfIC0+XG4gICAgbGV0IChyZXMsIHcpID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgbm9kZSA9IEx3dF9zZXF1ZW5jZS5hZGRfciAodiwgdykgbXZhci53cml0ZXJzIGluXG4gICAgTHd0Lm9uX2NhbmNlbCByZXMgKGZ1biBfIC0+IEx3dF9zZXF1ZW5jZS5yZW1vdmUgbm9kZSk7XG4gICAgcmVzXG5cbmxldCBuZXh0X3dyaXRlciBtdmFyID1cbiAgbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci53cml0ZXJzIHdpdGhcbiAgfCBTb21lKHYnLCB3KSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBTb21lIHYnO1xuICAgIEx3dC53YWtldXBfbGF0ZXIgdyAoKVxuICB8IE5vbmUgLT5cbiAgICBtdmFyLm12YXJfY29udGVudHMgPC0gTm9uZVxuXG5sZXQgdGFrZV9hdmFpbGFibGUgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSB2IC0+XG4gICAgbmV4dF93cml0ZXIgbXZhcjtcbiAgICBTb21lIHZcbiAgfCBOb25lIC0+XG4gICAgTm9uZVxuXG5sZXQgdGFrZSBtdmFyID1cbiAgbWF0Y2ggdGFrZV9hdmFpbGFibGUgbXZhciB3aXRoXG4gIHwgU29tZSB2IC0+IEx3dC5yZXR1cm4gdlxuICB8IE5vbmUgLT4gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBtdmFyLnJlYWRlcnNcblxubGV0IGlzX2VtcHR5IG12YXIgPVxuICBtYXRjaCBtdmFyLm12YXJfY29udGVudHMgd2l0aFxuICB8IFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHQgPSB7IG11dGFibGUgbG9ja2VkIDogYm9vbDsgd2FpdGVycyA6IHVuaXQgTHd0LnUgTHd0X3NlcXVlbmNlLnQgIH1cblxubGV0IGNyZWF0ZSAoKSA9IHsgbG9ja2VkID0gZmFsc2U7IHdhaXRlcnMgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIH1cblxubGV0IGxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW5cbiAgICAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG0ud2FpdGVyc1xuICBlbHNlIGJlZ2luXG4gICAgbS5sb2NrZWQgPC0gdHJ1ZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCB1bmxvY2sgbSA9XG4gIGlmIG0ubG9ja2VkIHRoZW4gYmVnaW5cbiAgICBpZiBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzIHRoZW5cbiAgICAgIG0ubG9ja2VkIDwtIGZhbHNlXG4gICAgZWxzZVxuICAgICAgKCogV2UgZG8gbm90IHVzZSBbTHd0Lndha2V1cF0gaGVyZSB0byBhdm9pZCBhIHN0YWNrIG92ZXJmbG93XG4gICAgICAgICB3aGVuIHVubG9ja2luZyBhIGxvdCBvZiB0aHJlYWRzLiAqKVxuICAgICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBtLndhaXRlcnMpICgpXG4gIGVuZFxuXG5sZXQgd2l0aF9sb2NrIG0gZiA9XG4gIGxvY2sgbSA+Pj0gZnVuICgpIC0+XG4gIEx3dC5maW5hbGl6ZSBmIChmdW4gKCkgLT4gdW5sb2NrIG07IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGlzX2xvY2tlZCBtID0gbS5sb2NrZWRcbmxldCBpc19lbXB0eSBtID0gTHd0X3NlcXVlbmNlLmlzX2VtcHR5IG0ud2FpdGVyc1xuIiwiKCogT0NhbWwgcHJvbWlzZSBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2x3dFxuICogQ29weXJpZ2h0IChjKSAyMDA5LCBNZXRhd2ViIFRlY2hub2xvZ2llcywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICogYXJlIG1ldDpcbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBgYEFTIElTJycgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUlxuICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUVUQVdFQiBURUNITk9MT0dJRVMgQkVcbiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1JcbiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GXG4gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1JcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLFxuICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0VcbiAqIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU5cbiAqIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50XG5cbmxldCBjcmVhdGUgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlXG5cbmxldCB3YWl0ID9tdXRleCBjdmFyID1cbiAgbGV0IHdhaXRlciA9IChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgY3ZhciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgudW5sb2NrIG1cbiAgICB8IE5vbmUgLT4gKClcbiAgaW5cbiAgTHd0LmZpbmFsaXplXG4gICAgKGZ1biAoKSAtPiB3YWl0ZXIpXG4gICAgKGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIG11dGV4IHdpdGhcbiAgICAgICB8IFNvbWUgbSAtPiBMd3RfbXV0ZXgubG9jayBtXG4gICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNpZ25hbCBjdmFyIGFyZyA9XG4gIHRyeVxuICAgIEx3dC53YWtldXBfbGF0ZXIgKEx3dF9zZXF1ZW5jZS50YWtlX2wgY3ZhcikgYXJnXG4gIHdpdGggTHd0X3NlcXVlbmNlLkVtcHR5IC0+XG4gICAgKClcblxubGV0IGJyb2FkY2FzdCBjdmFyIGFyZyA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlciB3YWtlbmVyIGFyZykgd2FrZW5lcnNcblxubGV0IGJyb2FkY2FzdF9leG4gY3ZhciBleG4gPVxuICBsZXQgd2FrZW5lcnMgPSBMd3Rfc2VxdWVuY2UuZm9sZF9yIChmdW4geCBsIC0+IHggOjogbCkgY3ZhciBbXSBpblxuICBMd3Rfc2VxdWVuY2UuaXRlcl9ub2RlX2wgTHd0X3NlcXVlbmNlLnJlbW92ZSBjdmFyO1xuICBMaXN0Lml0ZXIgKGZ1biB3YWtlbmVyIC0+IEx3dC53YWtldXBfbGF0ZXJfZXhuIHdha2VuZXIgZXhuKSB3YWtlbmVyc1xuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIGV2ZW50ID0gJ2EgUmVhY3QuZXZlbnRcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgUmVhY3Quc2lnbmFsXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuRVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBldmVudCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXAgKGZ1biB4IC0+IGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSByKTsgeCkgZXZlbnRcblxuICBsZXQgbmV4dCBldiA9XG4gICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgbGV0IGV2ID0gbWFwIChmdW4geCAtPiBMd3Qud2FrZXVwIHdha2VuZXIgeCkgKG9uY2UgZXYpIGluXG4gICAgTHd0Lm9uX2NhbmNlbCB3YWl0ZXIgKGZ1biAoKSAtPiBzdG9wIGV2KTtcbiAgICB3YWl0ZXJcblxuICBsZXQgbGltaXQgZiBlID1cbiAgICAoKiBUaHJlYWQgd2hpY2ggcHJldmVudHMgW2VdIGZyb20gb2NjdXJyaW5nIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgTHd0LnJldHVybl91bml0IGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAhY2VsbCBpblxuICAgICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgICAgcHVzaCB4KTtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAoKiBTZXQgdGhlIGxpbWl0ZXIgZm9yIGZ1dHVyZSBldmVudHMuICopXG4gICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICgqIFNlbmQgdGhlIG9jY3VycmVuY2Ugbm93LiAqKVxuICAgICAgICAgICAgIHB1c2ggeDtcbiAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZClcbiAgICAgICAgZVxuICAgIGluXG5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBjYW5jZWxfdGhyZWFkIHQgKCkgPVxuICAgIEx3dC5jYW5jZWwgdFxuXG4gIGxldCBmcm9tIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBmICgpID4+PSBmdW4geCAtPlxuICAgICAgcHVzaCB4O1xuICAgICAgbG9vcCAoKVxuICAgIGluXG4gICAgbGV0IHQgPSBMd3QucGF1c2UgKCkgPj49IGxvb3AgaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCB0b19zdHJlYW0gZXZlbnQgPVxuICAgIGxldCBzdHJlYW0sIHB1c2gsIHNldF9yZWYgPSBMd3Rfc3RyZWFtLmNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAgIHNldF9yZWYgKG1hcCAoZnVuIHggLT4gcHVzaCAoU29tZSB4KSkgZXZlbnQpO1xuICAgIHN0cmVhbVxuXG4gIGxldCBvZl9zdHJlYW0gc3RyZWFtID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgdCA9XG4gICAgICBMd3QucGF1c2UgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgTHd0X3N0cmVhbS5pdGVyIChmdW4gdiAtPiB0cnkgcHVzaCB2IHdpdGggZXhuIC0+ICFMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuKSBzdHJlYW0gaW5cbiAgICB3aXRoX2ZpbmFsaXNlciAoY2FuY2VsX3RocmVhZCB0KSBldmVudFxuXG4gIGxldCBkZWxheSB0aHJlYWQgPVxuICAgIG1hdGNoIEx3dC5wb2xsIHRocmVhZCB3aXRoXG4gICAgfCBTb21lIGUgLT5cbiAgICAgIGVcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudCwgc2VuZCA9IGNyZWF0ZSAoKSBpblxuICAgICAgTHd0Lm9uX3N1Y2Nlc3MgdGhyZWFkIChmdW4gZSAtPiBzZW5kIGU7IHN0b3AgZXZlbnQpO1xuICAgICAgc3dpdGNoIG5ldmVyIGV2ZW50XG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIGUgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIGUgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgRXZlbnQgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9wIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHQgLT4gTHd0Lm9uX3N1Y2Nlc3MgdCAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJ1bl9zIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gdCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gdCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuIHYgLT4gcHVzaCB2KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IG1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKSBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhcHBfcCBlZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9zIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoYXBwIChtYXAgKGZ1biBmIHggLT4gKGYsIHgpKSBlZikgZSlcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmaWx0ZXJfcyBmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9wIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoZiB4KSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm1hcF9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gU29tZSB4IC0+IHB1c2ggeCB8IE5vbmUgLT4gKCkpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZGlmZl9zIGYgZSA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcHJldmlvdXMgOj0gU29tZSB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgfCBTb21lIHkgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYWNjdW1fcyBlZiBhY2MgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIGYgLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MpKSAoZnVuIHggLT4gYWNjIDo9IHg7IHB1c2ggeCk7IE5vbmUpIGVmIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZm9sZF9zIGYgYWNjIGUgPVxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICFhY2MgeCkpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zIGYgYWNjIGVsID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAobWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gZWwpXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuZW5kXG5cbm1vZHVsZSBTID0gc3RydWN0XG4gIGluY2x1ZGUgUmVhY3QuU1xuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTHd0LXNwZWNpZmljIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IGZpbmFsaXNlIGYgXyA9IGYgKClcblxuICBsZXQgd2l0aF9maW5hbGlzZXIgZiBzaWduYWwgPVxuICAgIGxldCByID0gcmVmICgpIGluXG4gICAgR2MuZmluYWxpc2UgKGZpbmFsaXNlIGYpIHI7XG4gICAgbWFwXG4gICAgICAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KVxuICAgICAgc2lnbmFsXG5cbiAgbGV0IGxpbWl0ID9lcSBmIHMgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50IFtzXSB0byBjaGFuZ2VzIHdoaWxlIGl0IGlzIHNsZWVwaW5nICopXG4gICAgbGV0IGxpbWl0ZXIgPSByZWYgKGYgKCkpIGluXG5cbiAgICAoKiBUaGUgb2NjdXJyZW5jZSB0aGF0IGlzIGRlbGF5ZWQgdW50aWwgdGhlIGxpbWl0ZXIgcmV0dXJucy4gKilcbiAgICBsZXQgZGVsYXllZCA9IHJlZiBOb25lIGluXG5cbiAgICAoKiBUaGUgcmVzdWx0aW5nIGV2ZW50LiAqKVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgKCogVGhlIGxpbWl0ZXIgaXMgc2xlZXBpbmcsIHdlIHF1ZXVlIHRoZSBldmVudCBmb3IgbGF0ZXJcbiAgICAgICAgICAgICAgICBkZWxpdmVyaW5nLiAqKVxuICAgICAgICAgICAgIG1hdGNoICFkZWxheWVkIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgY2VsbCAtPlxuICAgICAgICAgICAgICAgKCogQW4gb2NjdXJyZW5jZSBpcyBhbHJlYWR5IHF1ZXVlZCwgcmVwbGFjZSBpdC4gKilcbiAgICAgICAgICAgICAgIGNlbGwgOj0geDtcbiAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBjZWxsID0gcmVmIHggaW5cbiAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gU29tZSBjZWxsO1xuICAgICAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgIWxpbWl0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmVcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICBkZWxheWVkIDo9IE5vbmU7XG4gICAgICAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG5cbiAgICBob2xkID9lcSAodmFsdWUgcykgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pXG5cbiAgbGV0IGtlZXBlZCA9IHJlZiBbXVxuXG4gIGxldCBrZWVwIHMgPVxuICAgIGtlZXBlZCA6PSBtYXAgaWdub3JlIHMgOjogIWtlZXBlZFxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgU2lnbmFsIHRyYW5zZm9ybWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJ1bl9zID9lcSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB2YWx1ZSBzKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgbWFwX3MgP2VxIGYgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBhcHBfcyA/ZXEgc2YgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4gKGYsIHgpIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoRS5hcHAgKEUubWFwIChmdW4gZiB4IC0+IChmLCB4KSkgKGNoYW5nZXMgc2YpKSAoY2hhbmdlcyBzKSlcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiAodmFsdWUgc2YpICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZpbHRlcl9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIHRydWUgLT4gcHVzaCB4IHwgZmFsc2UgLT4gKCkpOyBOb25lKSAoY2hhbmdlcyBzKSBpblxuICAgIGxldCB4ID0gdmFsdWUgcyBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgaSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGZtYXBfcyA/ZXEgZiBpIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gRS5mbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZGlmZl9zIGYgcyA9XG4gICAgbGV0IHByZXZpb3VzID0gcmVmICh2YWx1ZSBzKSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgbGV0IHkgPSAhcHJldmlvdXMgaW5cbiAgICAgICAgICAgcHJldmlvdXMgOj0geDtcbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCB5KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEUuc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgc2FtcGxlX3MgZiBlIHMgPVxuICAgIEUubWFwX3MgKGZ1biB4IC0+IGYgeCAodmFsdWUgcykpIGVcblxuICBsZXQgYWNjdW1fcyA/ZXEgZWYgaSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5hY2N1bV9zIGVmIGkpXG5cbiAgbGV0IGZvbGRfcyA/ZXEgZiBpIGUgPVxuICAgIGhvbGQgP2VxIGkgKEUuZm9sZF9zIGYgaSBlKVxuXG4gIGxldCByZWMgcmV2X2ZvbGQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIEx3dC5yZXR1cm4gYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHJldl9mb2xkIGYgYWNjIGwgPj49IGZ1biBhY2MgLT5cbiAgICAgIGYgYWNjIHhcblxuICBsZXQgbWVyZ2VfcyA/ZXEgZiBhY2Mgc2wgPVxuICAgIGxldCBzID0gbWVyZ2UgKGZ1biBhY2MgeCAtPiB4IDo6IGFjYykgW10gc2wgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyBsKSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiByZXZfZm9sZCBmIGFjYyAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBsMV9zID9lcSBmIHMxID1cbiAgICBtYXBfcyA/ZXEgZiBzMVxuXG4gIGxldCBsMl9zID9lcSBmIHMxIHMyID1cbiAgICAoKiBTb21lIGRldGFpbHMgYWJvdXQgdGhlIHVzZSBvZiBbZnVuIF8gXyAtPiBmYWxzZV0gb25cbiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC84OTMjcHVsbHJlcXVlc3RyZXZpZXctNzgzMDgzNDk2ICopXG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MikgLT4gZiB4MSB4MikgKGwyIH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiAtPiAoeDEsIHgyKSkgczEgczIpXG5cbiAgbGV0IGwzX3MgP2VxIGYgczEgczIgczMgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzKSAtPiBmIHgxIHgyIHgzKSAobDMgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzLT4gKHgxLCB4MiwgeDMpKSBzMSBzMiBzMylcblxuICBsZXQgbDRfcyA/ZXEgZiBzMSBzMiBzMyBzNCA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0KSAtPiBmIHgxIHgyIHgzIHg0KSAobDQgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0LT4gKHgxLCB4MiwgeDMsIHg0KSkgczEgczIgczMgczQpXG5cbiAgbGV0IGw1X3MgP2VxIGYgczEgczIgczMgczQgczUgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUpIC0+IGYgeDEgeDIgeDMgeDQgeDUpIChsNSB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUtPiAoeDEsIHgyLCB4MywgeDQsIHg1KSkgczEgczIgczMgczQgczUpXG5cbiAgbGV0IGw2X3MgP2VxIGYgczEgczIgczMgczQgczUgczYgPVxuICAgIG1hcF9zID9lcSAoZnVuICh4MSwgeDIsIHgzLCB4NCwgeDUsIHg2KSAtPiBmIHgxIHgyIHgzIHg0IHg1IHg2KSAobDYgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIHgzIHg0IHg1IHg2LT4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpKSBzMSBzMiBzMyBzNCBzNSBzNilcblxuICAoKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgICB8IE1vbmFkaWMgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG4gIGxldCByZXR1cm4gPVxuICAgIGNvbnN0XG5cbiAgbGV0IGJpbmRfcyA/ZXEgcyBmID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChzd2l0Y2ggP2VxIChob2xkIH5lcTooID09ICkgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpKVxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfbHd0X19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9maWxlICopXG5tb2R1bGUgTHd0X2ZpbGUgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9maWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanMgKilcbm1vZHVsZSBMd3RfanMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cyAqKVxubW9kdWxlIEx3dF9qc19ldmVudHMgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF9qc19ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qc29ucCAqKVxubW9kdWxlIEx3dF9qc29ucCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzb25wXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfeG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBMd3RfeG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9sd3RfX0x3dF94bWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfbHd0X18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIFhtbEh0dHBSZXF1ZXN0XG5vcGVuISBJbXBvcnRcblxubGV0IGVuY29kZV91cmwgbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBcIiZcIlxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gVXJsLnVybGVuY29kZSBuYW1lIF4gXCI9XCIgXiBVcmwudXJsZW5jb2RlICh0b19zdHJpbmcgcylcbiAgICAgICAgIHwgbmFtZSwgYEZpbGUgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzIyMubmFtZSkpXG4gICAgICAgbClcblxuKCogSGlnaGVyIGxldmVsIGludGVyZmFjZTogKilcblxudHlwZSAncmVzcG9uc2UgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgeyB1cmwgOiBzdHJpbmdcbiAgOyBjb2RlIDogaW50XG4gIDsgaGVhZGVycyA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIDsgY29udGVudCA6ICdyZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sIDogdW5pdCAtPiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHRpb25cbiAgfVxuKCoqIHR5cGUgb2YgdGhlIGh0dHAgaGVhZGVycyAqKVxuXG50eXBlIGh0dHBfZnJhbWUgPSBzdHJpbmcgZ2VuZXJpY19odHRwX2ZyYW1lXG5cbmV4Y2VwdGlvbiBXcm9uZ19oZWFkZXJzIG9mIChpbnQgKiAoc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pKVxuXG5sZXQgZGVmYXVsdF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBcIlwiKSAoZnVuIHggLT4gSnMudG9fc3RyaW5nIHgpXG4gIDsgY29udGVudF94bWwgPVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCBKcy5PcHQudG9fb3B0aW9uIHJlcSMjLnJlc3BvbnNlWE1MIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGRvYyAtPiBpZiBKcy5zb21lIGRvYyMjLmRvY3VtZW50RWxlbWVudCA9PSBKcy5udWxsIHRoZW4gTm9uZSBlbHNlIFNvbWUgZG9jKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgdGV4dF9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBKcy5PcHQuY2FzZSByZXEjIy5yZXNwb25zZVRleHQgKGZ1biAoKSAtPiBKcy5zdHJpbmcgXCJcIikgKGZ1biB4IC0+IHgpXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGRvY3VtZW50X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQganNvbl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYmxvYl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2VcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5hcnJheUJ1ZmZlciByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID1cbiAgdHJ5XG4gICAgaWdub3JlIChTdHJpbmcuaW5kZXggdXJsICc/Jyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgcGVyZm9ybV9yYXdcbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID8oY2hlY2tfaGVhZGVycyA9IGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgICh0eXBlIHJlc3B0eXBlKVxuICAgIH4ocmVzcG9uc2VfdHlwZSA6IHJlc3B0eXBlIHJlc3BvbnNlKVxuICAgIHVybCA9XG4gIGxldCBjb250ZW50c19ub3JtYWxpemF0aW9uID0gZnVuY3Rpb25cbiAgICB8IGBQT1NUX2Zvcm0gYXJncyAtPlxuICAgICAgICBsZXQgb25seV9zdHJpbmdzID1cbiAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBfLCBgU3RyaW5nIF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmb3JtX2NvbnRlbnRzID1cbiAgICAgICAgICBpZiBvbmx5X3N0cmluZ3MgdGhlbiBgRmllbGRzIChyZWYgW10pIGVsc2UgRm9ybS5lbXB0eV9mb3JtX2NvbnRlbnRzICgpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRm9ybS5hcHBlbmQgZm9ybV9jb250ZW50cyAobmFtZSwgdmFsdWUpKSBhcmdzO1xuICAgICAgICBgRm9ybV9jb250ZW50cyBmb3JtX2NvbnRlbnRzXG4gICAgfCAoYFN0cmluZyBfIHwgYEZvcm1fY29udGVudHMgXykgYXMgeCAtPiB4XG4gICAgfCBgQmxvYiBiIC0+IGBCbG9iIChiIDogI0ZpbGUuYmxvYiBKcy50IDo+IEZpbGUuYmxvYiBKcy50KVxuICBpblxuICBsZXQgY29udGVudHMgPVxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBjIC0+IFNvbWUgKGNvbnRlbnRzX25vcm1hbGl6YXRpb24gYylcbiAgaW5cbiAgbGV0IG1ldGhvZF90b19zdHJpbmcgbSA9XG4gICAgbWF0Y2ggbSB3aXRoXG4gICAgfCBgR0VUIC0+IFwiR0VUXCJcbiAgICB8IGBQT1NUIC0+IFwiUE9TVFwiXG4gICAgfCBgSEVBRCAtPiBcIkhFQURcIlxuICAgIHwgYFBVVCAtPiBcIlBVVFwiXG4gICAgfCBgREVMRVRFIC0+IFwiREVMRVRFXCJcbiAgICB8IGBPUFRJT05TIC0+IFwiT1BUSU9OU1wiXG4gICAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIGluXG4gIGxldCBtZXRob2RfLCBjb250ZW50X3R5cGUgPVxuICAgIGxldCBvdmVycmlkZV9tZXRob2QgbSA9XG4gICAgICBtYXRjaCBvdmVycmlkZV9tZXRob2Qgd2l0aFxuICAgICAgfCBOb25lIC0+IG1cbiAgICAgIHwgU29tZSB2IC0+IG1ldGhvZF90b19zdHJpbmcgdlxuICAgIGluXG4gICAgbGV0IG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBjID1cbiAgICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gU29tZSBjXG4gICAgICB8IFNvbWUgXyAtPiBjb250ZW50X3R5cGVcbiAgICBpblxuICAgIG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gb3ZlcnJpZGVfbWV0aG9kIFwiR0VUXCIsIGNvbnRlbnRfdHlwZVxuICAgIHwgU29tZSAoYEZvcm1fY29udGVudHMgZm9ybSkgLT4gKFxuICAgICAgICBtYXRjaCBmb3JtIHdpdGhcbiAgICAgICAgfCBgRmllbGRzIF9zdHJpbmdzIC0+XG4gICAgICAgICAgICAoIG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIlxuICAgICAgICAgICAgLCBvdmVycmlkZV9jb250ZW50X3R5cGUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiApXG4gICAgICAgIHwgYEZvcm1EYXRhIF8gLT4gb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiLCBjb250ZW50X3R5cGUpXG4gICAgfCBTb21lIChgU3RyaW5nIF8gfCBgQmxvYiBfKSAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZVxuICBpblxuICBsZXQgdXJsID1cbiAgICBpZiBQb2x5LihnZXRfYXJncyA9IFtdKVxuICAgIHRoZW4gdXJsXG4gICAgZWxzZSB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgZ2V0X2FyZ3NcbiAgaW5cbiAgbGV0IChyZXMgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgTHd0LnQpLCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHJlcSA9IGNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kXykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobWF0Y2ggb3ZlcnJpZGVfbWltZV90eXBlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBtaW1lX3R5cGUgLT4gcmVxIyNvdmVycmlkZU1pbWVUeXBlIChKcy5zdHJpbmcgbWltZV90eXBlKSk7XG4gIChtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICB8IERvY3VtZW50IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJkb2N1bWVudFwiXG4gIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gIHwgRGVmYXVsdCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiXCIpO1xuICAobWF0Y2ggd2l0aF9jcmVkZW50aWFscyB3aXRoXG4gIHwgU29tZSBjIC0+IHJlcSMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGNcbiAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gIHwgU29tZSBjb250ZW50X3R5cGUgLT5cbiAgICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIFwiQ29udGVudC10eXBlXCIpIChKcy5zdHJpbmcgY29udGVudF90eXBlKVxuICB8IF8gLT4gKCkpO1xuICBMaXN0Lml0ZXIgKGZ1biAobiwgdikgLT4gcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbikgKEpzLnN0cmluZyB2KSkgaGVhZGVycztcbiAgbGV0IGhlYWRlcnMgcyA9XG4gICAgT3B0LmNhc2VcbiAgICAgIChyZXEjI2dldFJlc3BvbnNlSGVhZGVyIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgaW5cbiAgbGV0IGRvX2NoZWNrX2hlYWRlcnMgPVxuICAgIGxldCBzdCA9IHJlZiBgTm90X3lldCBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaWYgUG9seS4oIXN0ID0gYE5vdF95ZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGlmIGNoZWNrX2hlYWRlcnMgcmVxIyMuc3RhdHVzIGhlYWRlcnNcbiAgICAgICAgdGhlbiBzdCA6PSBgUGFzc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEx3dC53YWtldXBfZXhuIHcgKFdyb25nX2hlYWRlcnMgKHJlcSMjLnN0YXR1cywgaGVhZGVycykpO1xuICAgICAgICAgIHN0IDo9IGBGYWlsZWQ7XG4gICAgICAgICAgcmVxIyNhYm9ydCk7XG4gICAgICBQb2x5Lighc3QgPD4gYEZhaWxlZClcbiAgaW5cbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlIDo9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICAgICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgICgqIElFIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgZm9yIEhFQURFUlNfUkVDRUlWRUQuXG4gICAgICAgICAgICAgc28gd2Ugd2FpdCB0aWwgTE9BRElORyB0byBjaGVjayBoZWFkZXJzLiBTZWU6XG4gICAgICAgICAgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM0MzYxKHY9dnMuODUpLmFzcHggKilcbiAgICAgICAgfCBIRUFERVJTX1JFQ0VJVkVEIHdoZW4gbm90IERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IExPQURJTkcgd2hlbiBEb21faHRtbC5vbklFIC0+IGlnbm9yZSAoZG9fY2hlY2tfaGVhZGVycyAoKSlcbiAgICAgICAgfCBET05FIC0+XG4gICAgICAgICAgICAoKiBJZiB3ZSBkaWRuJ3QgY2F0Y2ggYSBwcmV2aW91cyBldmVudCwgd2UgY2hlY2sgdGhlIGhlYWRlci4gKilcbiAgICAgICAgICAgIGlmIGRvX2NoZWNrX2hlYWRlcnMgKClcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlIDogcmVzcHR5cGUgZ2VuZXJpY19odHRwX2ZyYW1lID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IGFycmF5YnVmZmVyX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEJsb2IgLT4gYmxvYl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBEb2N1bWVudCAtPiBkb2N1bWVudF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBKU09OIC0+IGpzb25fcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgVGV4dCAtPiB0ZXh0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERlZmF1bHQgLT4gZGVmYXVsdF9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC53YWtldXAgdyByZXNwb25zZVxuICAgICAgICB8IF8gLT4gKCkpO1xuICAobWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IFNvbWUgcHJvZ3Jlc3MgLT5cbiAgICAgIHJlcSMjLm9ucHJvZ3Jlc3MgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICBwcm9ncmVzcyBlIyMubG9hZGVkIGUjIy50b3RhbDtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICB8IE5vbmUgLT4gKCkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICAgIG1hdGNoIHVwbG9hZF9wcm9ncmVzcyB3aXRoXG4gICAgICB8IFNvbWUgdXBsb2FkX3Byb2dyZXNzIC0+XG4gICAgICAgICAgdXBsb2FkIyMub25wcm9ncmVzcyA6PVxuICAgICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgdXBsb2FkX3Byb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgKG1hdGNoIGNvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGaWVsZHMgbCkpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoc3RyaW5nIChlbmNvZGVfdXJsICFsKSkpXG4gIHwgU29tZSAoYEZvcm1fY29udGVudHMgKGBGb3JtRGF0YSBmKSkgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZcbiAgfCBTb21lIChgU3RyaW5nIHMpIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICB8IFNvbWUgKGBCbG9iIGIpIC0+IHJlcSMjc2VuZF9ibG9iIGIpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlcSMjYWJvcnQpO1xuICByZXNcblxubGV0IHBlcmZvcm1fcmF3X3VybFxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICB1cmxcblxubGV0IHBlcmZvcm1cbiAgICA/KGhlYWRlcnMgPSBbXSlcbiAgICA/Y29udGVudF90eXBlXG4gICAgPyhnZXRfYXJncyA9IFtdKVxuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9jb250ZW50c1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB1cmwgPVxuICBwZXJmb3JtX3Jhd1xuICAgIH5oZWFkZXJzXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgIH5nZXRfYXJnc1xuICAgID9jb250ZW50c1xuICAgID9jaGVja19oZWFkZXJzXG4gICAgP3Byb2dyZXNzXG4gICAgP3VwbG9hZF9wcm9ncmVzc1xuICAgID9vdmVycmlkZV9taW1lX3R5cGVcbiAgICA/b3ZlcnJpZGVfbWV0aG9kXG4gICAgP3dpdGhfY3JlZGVudGlhbHNcbiAgICB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0XG4gICAgKFVybC5zdHJpbmdfb2ZfdXJsIHVybClcblxubGV0IGdldCBzID0gcGVyZm9ybV9yYXdfdXJsIHNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHNsZWVwIGQgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpZCA9IERvbV9odG1sLnNldFRpbWVvdXQgKEx3dC53YWtldXAgdykgKGQgKi4gMTAwMC4pIGluXG4gIEx3dC5vbl9jYW5jZWwgdCAoZnVuICgpIC0+IERvbV9odG1sLmNsZWFyVGltZW91dCBpZCk7XG4gIHRcblxubGV0IHlpZWxkICgpID0gc2xlZXAgMC5cblxubGV0IHdha2V1cCA9IGZ1bmN0aW9uXG4gIHwgMSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXQgKEpzLndyYXBfY2FsbGJhY2sgTHd0Lndha2V1cF9wYXVzZWQpIChKcy5mbG9hdCAwLikpXG4gIHwgXyAtPiAoKVxuXG5sZXQgKCkgPSBMd3QucmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgd2FrZXVwXG5cbmxldCBwcmVycl9zdHJpbmcgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IF8gPVxuICBMd3QuYXN5bmNfZXhjZXB0aW9uX2hvb2sgOj1cbiAgICBmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJFeGNlcHRpb24gZHVyaW5nIEx3dC5hc3luYzogXCI7XG4gICAgICBwcmVycl9zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBleG4pO1xuICAgICAgUHJpbnRleGMucHJpbnRfYmFja3RyYWNlIHN0ZGVyclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCByZWMgcmFuZG9tX2lkZW50aWZpZXIgc2l6ZSA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBzaXplIGluXG4gIGZvciBfaSA9IDAgdG8gc2l6ZSAtIDEgZG9cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAoQ2hhci5jaHIgKDk3ICsgUmFuZG9tLmludCAyNikpXG4gIGRvbmU7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgcykpXG4gIHRoZW4gKCogbmFtZSBhbHJlYWR5IGluIHVzZSwgY2hvb3NlIGFub3RoZXIgb25lKilcbiAgICByYW5kb21faWRlbnRpZmllciBzaXplXG4gIGVsc2Ugc1xuXG5sZXQgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBzY3JpcHQgPSBEb21faHRtbC4oY3JlYXRlU2NyaXB0IGRvY3VtZW50KSBpblxuICBsZXQgZmluYWxpemUgKCkgPVxuICAgIEpzLlVuc2FmZS5kZWxldGUgRG9tX2h0bWwud2luZG93IChKcy5zdHJpbmcgbmFtZSk7XG4gICAgSnMuT3B0Lml0ZXIgc2NyaXB0IyMucGFyZW50Tm9kZSAoZnVuIHBhcmVudCAtPiBEb20ucmVtb3ZlQ2hpbGQgcGFyZW50IHNjcmlwdClcbiAgaW5cbiAgbGV0IGV4ZWN1dGVkID0gcmVmIGZhbHNlIGluXG4gIEpzLlVuc2FmZS5zZXRcbiAgICBEb21faHRtbC53aW5kb3dcbiAgICAoSnMuc3RyaW5nIG5hbWUpXG4gICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biB4IC0+XG4gICAgICAgICBleGVjdXRlZCA6PSB0cnVlO1xuICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICB1c2VyX2NiIHgpKTtcbiAgc2NyaXB0IyMuc3JjIDo9IEpzLnN0cmluZyB1cmk7XG4gIHNjcmlwdCMjLl90eXBlIDo9IEpzLnN0cmluZyBcInRleHQvamF2YXNjcmlwdFwiO1xuICBzY3JpcHQjIy5hc3luYyA6PSBKcy5fdHJ1ZTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmVycm9yXG4gIDo9IGZ1biB4IC0+XG4gIGZpbmFsaXplICgpO1xuICBlcnJvcl9jYiB4KTtcbiAgKChKcy5VbnNhZmUuY29lcmNlIHNjcmlwdCkjIy5vbmxvYWRcbiAgOj0gZnVuIHggLT5cbiAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICBpZiAhZXhlY3V0ZWRcbiAgICAgICAgICB0aGVuIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgXCJKc29ucDogc2NyaXB0IGxvYWRlZCBidXQgY2FsbGJhY2sgbm90IGV4ZWN1dGVkXCIpO1xuICAgICAgICAgICAgZmluYWxpemUgKCk7XG4gICAgICAgICAgICBlcnJvcl9jYiB4O1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KSkpKTtcbiAgbGV0IGluaXQgKCkgPSBpZ25vcmUgKERvbS5hcHBlbmRDaGlsZCBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkgc2NyaXB0KSBpblxuICBpbml0LCBmaW5hbGl6ZVxuXG5sZXQgY2FsbF8gcHJlZml4IG1ha2VfdXJpIGVycm9yX2NiIHVzZXJfY2IgPVxuICBsZXQgbmFtZSA9IHByZWZpeCBeIHJhbmRvbV9pZGVudGlmaWVyIDEwIGluXG4gIGxldCB1cmkgPSBtYWtlX3VyaSBuYW1lIGluXG4gIHJhd19jYWxsIG5hbWUgdXJpIGVycm9yX2NiIHVzZXJfY2JcblxubGV0IGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCA/KHByZWZpeCA9IFwiXCIpIG1ha2VfdXJpID1cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgaW5pdCwgZmluYWxpemUgPSBjYWxsXyBwcmVmaXggbWFrZV91cmkgKGZ1biBfIC0+IEx3dC5jYW5jZWwgdCkgKEx3dC53YWtldXAgdykgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGZpbmFsaXplO1xuICBsZXQgbmV3X3QgPVxuICAgIG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0XG4gICAgfCBTb21lIGRlbGF5IC0+XG4gICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICBMd3QuYmluZCAoTHd0X2pzLnNsZWVwIGRlbGF5KSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5jYW5jZWwgdDtcbiAgICAgICAgICAgICAgdClcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LmNob29zZSBbIHdhaXQ7IHQgXVxuICBpblxuICBpbml0ICgpO1xuICBuZXdfdFxuXG5sZXQgYWRkX3BhcmFtIG5hbWUgdmFsdWUgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biAoeCwgXykgLT4gbm90IChTdHJpbmcuZXF1YWwgeCBuYW1lKSkgbCBpblxuICAobmFtZSwgdmFsdWUpIDo6IGxcblxubGV0IGNhbGwgP3RpbWVvdXQgPyhwYXJhbSA9IFwiY2FsbGJhY2tcIikgPyhwcmVmaXggPSBcIlwiKSB1cmwgPVxuICBsZXQgbWFrZV91cmkgY2JuYW1lID1cbiAgICBtYXRjaCBVcmwudXJsX29mX3N0cmluZyB1cmwgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkpzb25wLmNhbGw6IENhbm5vdCBwYXJzZSB1cmxcIlxuICAgIHwgU29tZSB1cmwgLT5cbiAgICAgICAgbGV0IG5ld191cmwgPVxuICAgICAgICAgIG1hdGNoIHVybCB3aXRoXG4gICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5IdHRwcyBodHRwIC0+XG4gICAgICAgICAgICAgIFVybC5IdHRwc1xuICAgICAgICAgICAgICAgIHsgaHR0cCB3aXRoXG4gICAgICAgICAgICAgICAgICBVcmwuaHVfYXJndW1lbnRzID0gYWRkX3BhcmFtIHBhcmFtIGNibmFtZSBodHRwLlVybC5odV9hcmd1bWVudHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+XG4gICAgICAgICAgICAgIFVybC5GaWxlXG4gICAgICAgICAgICAgICAgeyBmaWxlIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5mdV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGZpbGUuVXJsLmZ1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgVXJsLnN0cmluZ19vZl91cmwgbmV3X3VybFxuICBpblxuICBjYWxsX2N1c3RvbV91cmwgP3RpbWVvdXQgfnByZWZpeCBtYWtlX3VyaVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBWaW5jZW50IEJhbGF0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc19vZl9vY2FtbFxub3BlbiEgSW1wb3J0XG5cbmxldCAoID4+PSApID0gTHd0LmJpbmRcblxubGV0IGFzeW5jIGYgPSBMd3QuYXN5bmMgKGZ1biAoKSAtPiBMd3RfanMueWllbGQgKCkgPj49IGYpXG5cbmxldCBvcHRfbWFwIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBtYWtlX2V2ZW50IGV2ZW50X2tpbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIGV2ZW50X2tpbmRcbiAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IGV2O1xuICAgICAgICAgICAgICBKcy5ib29sIHRydWUpKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxubGV0IGNhdGNoX2NhbmNlbCBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTHd0LkNhbmNlbGVkIC0+IEx3dC5yZXR1cm4gKClcbiAgICAgIHwgZSAtPiBMd3QuZmFpbCBlKVxuXG5sZXQgd2l0aF9lcnJvcl9sb2cgZiB4ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgKGZ1biBlIC0+XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZSkpO1xuICAgICAgTHd0LnJldHVybiAoKSlcblxubGV0IHNlcV9sb29wIGV2aCA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gICgqIFVzaW5nIEx3dC5mYWlsIGFzIGRlZmF1bHQsIHRvIGJlIHBvbHltb3JwaGljICopXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgICAgICgqIEluIHRoZSBjYXNlIGl0IGhhcyBiZWVuIGNhbmNlbGxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcHJldmlvdXMgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyBub3QgcmVpbnN0YWxsIHRoZSBldmVudCBoYW5kbGVyICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgY3VyX2hhbmRsZXIgOj0gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQ7XG4gICAgICAhY3VyX2hhbmRsZXIgPj49IGF1eClcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGFzeW5jX2xvb3AgZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgYXV4ICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIEx3dC5hc3luYyAoZnVuICgpIC0+IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0KTtcbiAgICAgIGF1eCAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgYXV4KTtcbiAgbHRcblxubGV0IGJ1ZmZlcmVkX2xvb3BcbiAgICBldmhcbiAgICA/KGNhbmNlbF9oYW5kbGVyID0gZmFsc2UpXG4gICAgPyhjYW5jZWxfcXVldWUgPSB0cnVlKVxuICAgID91c2VfY2FwdHVyZVxuICAgID9wYXNzaXZlXG4gICAgdGFyZ2V0XG4gICAgaGFuZGxlciA9XG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHF1ZXVlID0gcmVmIFtdIGluXG4gIGxldCBjdXIgPSByZWYgKEx3dC5mYWlsIChGYWlsdXJlIFwiTHd0X2pzX2V2ZW50XCIpKSBpblxuICBsZXQgY3VyX2hhbmRsZXIgPSByZWYgKEx3dC5yZXR1cm4gKCkpIGluXG4gIGxldCBsdCwgX2x3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IHNwYXduID0gTHd0X2NvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgTHd0Lm9uX2NhbmNlbCBsdCAoZnVuICgpIC0+XG4gICAgICBMd3QuY2FuY2VsICFjdXI7XG4gICAgICBpZiBjYW5jZWxfaGFuZGxlciB0aGVuIEx3dC5jYW5jZWwgIWN1cl9oYW5kbGVyO1xuICAgICAgaWYgY2FuY2VsX3F1ZXVlIHRoZW4gcXVldWUgOj0gW107XG4gICAgICBjYW5jZWxsZWQgOj0gdHJ1ZSk7XG4gIGxldCByZWMgc3Bhd25lciAoKSA9XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBxdWV1ZSA6PSBlIDo6ICFxdWV1ZTtcbiAgICAgIEx3dF9jb25kaXRpb24uc2lnbmFsIHNwYXduICgpO1xuICAgICAgc3Bhd25lciAoKSlcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgbGV0IHJlYyBydW5uZXIgKCkgPVxuICAgIGN1cl9oYW5kbGVyIDo9IEx3dC5yZXR1cm4gKCk7XG4gICAgaWYgbm90ICFjYW5jZWxsZWRcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoICFxdWV1ZSB3aXRoXG4gICAgICB8IFtdIC0+IEx3dF9jb25kaXRpb24ud2FpdCBzcGF3biA+Pj0gcnVubmVyXG4gICAgICB8IGUgOjogdGwgLT5cbiAgICAgICAgICBxdWV1ZSA6PSB0bDtcbiAgICAgICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICAgICAhY3VyX2hhbmRsZXIgPj49IHJ1bm5lcilcbiAgICBlbHNlIEx3dC5yZXR1cm4gKClcbiAgaW5cbiAgTHd0LmFzeW5jIChjYXRjaF9jYW5jZWwgc3Bhd25lcik7XG4gIEx3dC5hc3luYyBydW5uZXI7XG4gIGx0XG5cbmxldCBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCBsaW1pdGVkX2Z1bmMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNvdW50ID0gcmVmIDAgaW5cbiAgYXN5bmNfbG9vcCBldmVudCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IChmdW4gZXYgbHQgLT5cbiAgICAgIGluY3IgY291bnQ7XG4gICAgICBsZXQgbmIgPSAhY291bnQgaW5cbiAgICAgIGxpbWl0ZWRfZnVuYyAoKSA+Pj0gZnVuIF8gLT4gaWYgIWNvdW50ID0gbmIgdGhlbiBoYW5kbGVyIGV2IGx0IGVsc2UgTHd0LnJldHVybiAoKSlcblxubGV0IGxpbWl0ZWRfbG9vcCBldmVudCA/KGVsYXBzZWRfdGltZSA9IDAuMSkgPVxuICBmdW5jX2xpbWl0ZWRfbG9vcCBldmVudCAoZnVuICgpIC0+IEx3dF9qcy5zbGVlcCBlbGFwc2VkX3RpbWUpXG5cbmxldCBjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjb3B5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmN1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXN0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kYmxjbGljayA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2Vkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNldXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubW91c2VvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5cHJlc3MgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5ZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuaW5wdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdGltZXVwZGF0ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ292ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJvcCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmZvY3VzID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGJsdXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdWJtaXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnNlbGVjdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBhYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5hYm9ydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lcnJvciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5jYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXl0aHJvdWdoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmR1cmF0aW9uY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVtcHRpZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBlbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbmRlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRkYXRhID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkbWV0YWRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWRzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wYXVzZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcGxheWluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHJhdGVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2VkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdGFsbGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VzcGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC52b2x1bWVjaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgd2FpdGluZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxuKCogc3BlY2lhbCBjYXNlIGZvciBtb3VzZXdoZWVsLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGJyb3dzZXIgKilcbmxldCBtb3VzZXdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBsZXQgZWwgPSByZWYgSnMubnVsbCBpblxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBjYW5jZWwgKCkgPSBKcy5PcHQuaXRlciAhZWwgRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lciBpblxuICBMd3Qub25fY2FuY2VsIHQgY2FuY2VsO1xuICBlbCA6PVxuICAgIEpzLnNvbWVcbiAgICAgIChEb21faHRtbC5hZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgICAgICA/Y2FwdHVyZToob3B0X21hcCBKcy5ib29sIHVzZV9jYXB0dXJlKVxuICAgICAgICAgP3Bhc3NpdmU6KG9wdF9tYXAgSnMuYm9vbCBwYXNzaXZlKVxuICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAoZnVuIChldiA6ICNEb21faHRtbC5ldmVudCBKcy50KSB+ZHggfmR5IC0+XG4gICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIGV2O1xuICAgICAgICAgICBjYW5jZWwgKCk7XG4gICAgICAgICAgIEx3dC53YWtldXAgdyAoZXYsIChkeCwgZHkpKTtcbiAgICAgICAgICAgSnMuYm9vbCB0cnVlKVxuICAgICAgICAgKCogdHJ1ZSBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIHByZXZlbnQgZGVmYXVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVzZXIgY2FuIHVzZSB0aGUgcHJldmVudERlZmF1bHQgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlLiAqKSk7XG4gIHRcblxuKCogbGV0IF9ET01Nb3VzZVNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcbiopXG5cbmxldCB3aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC53aGVlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNobW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50b3VjaGNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9zdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmdvdHBvaW50ZXJjYXB0dXJlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyZW50ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdmVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVydXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdHJhbnNpdGlvbmVuZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnJ1biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCBjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjb3BpZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY29weSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGN1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGFzdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhc3RlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZGJsY2xpY2tzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRibGNsaWNrID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2Vkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW92ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlbW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZW91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleXByZXNzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5cHJlc3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXlkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5dXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleXVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBpbnB1dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgaW5wdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0aW1ldXBkYXRlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0aW1ldXBkYXRlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3N0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ2VudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnb3ZlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ292ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnbGVhdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdsZWF2ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcm9wcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcm9wID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2V3aGVlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2V3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB3aGVlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0b3VjaG1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNobW92ZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNoY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0b3VjaGNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGZvY3VzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZm9jdXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBibHVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBibHVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Nyb2xscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzY3JvbGwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdWJtaXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1Ym1pdCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlbGVjdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc2VsZWN0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgYWJvcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGFib3J0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZXJyb3JzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVycm9yID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXlzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNhbnBsYXkgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjYW5wbGF5dGhyb3VnaHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheXRocm91Z2ggP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkdXJhdGlvbmNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHVyYXRpb25jaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbXB0aWVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBlbXB0aWVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZW5kZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVuZGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkZGF0YXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZGVkZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRlZG1ldGFkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRtZXRhZGF0YSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvYWRzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9hZHN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGF1c2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBhdXNlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBsYXlpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBsYXlpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByYXRlY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCByYXRlY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2Vla2VkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVrZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVraW5ncyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWVraW5nID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3RhbGxlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3RhbGxlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1c3BlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHN1c3BlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB2b2x1bWVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHZvbHVtZWNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHdhaXRpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdhaXRpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb3N0cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvc3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGdvdHBvaW50ZXJjYXB0dXJlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBnb3Rwb2ludGVyY2FwdHVyZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJlbnRlcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmVudGVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJkb3ducyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcmxlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm1vdmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm91dHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm91dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHBvaW50ZXJ1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcnVwID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25zdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnN0YXJ0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnJ1bnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbnJ1biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRyYW5zaXRpb25jYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRyYW5zaXRpb25jYW5jZWwgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoKSA9XG4gIGxldCB0LCBzID0gTHd0LndhaXQgKCkgaW5cbiAgbGV0IChfIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQpID1cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoXyA6IEpzLm51bWJlcl90KSAtPiBMd3Qud2FrZXVwIHMgKCkpKVxuICBpblxuICB0XG5cbmxldCBvbmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBkb21Db250ZW50TG9hZGVkID1cbiAgbGV0IGNvbXBsZXRlID0gSnMuc3RyaW5nIFwiY29tcGxldGVcIiBpblxuICBsZXQgZG9jID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZVxuICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgZWxzZVxuICAgICAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICAgICAgbGV0IHdha2V1cCB3IF8gPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXAgdyAoKSBpblxuICAgICAgbGV0IHdha2V1cF9leG4gdyBlID0gaWYgTHd0LmlzX3NsZWVwaW5nIHQgdGhlbiBMd3Qud2FrZXVwX2V4biB3IGUgaW5cbiAgICAgICgqIGh0dHBzOi8vZ2l0aHViLmNvbS9kcGVyaW5pL0NvbnRlbnRMb2FkZWQvYmxvYi9tYXN0ZXIvc3JjL2NvbnRlbnRsb2FkZWQuanMgKilcbiAgICAgIGxldCByZWd1bGFyID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIGRvYyBpblxuICAgICAgTHd0Lm9uX2FueSByZWd1bGFyICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBpZTggKilcbiAgICAgIGxldCByZWFkeXN0YXRlY2hhbmdlID1cbiAgICAgICAgYXN5bmNfbG9vcFxuICAgICAgICAgIChtYWtlX2V2ZW50IChEb20uRXZlbnQubWFrZSBcInJlYWR5c3RhdGVjaGFuZ2VcIikpXG4gICAgICAgICAgZG9jXG4gICAgICAgICAgKGZ1biBlIF8gLT5cbiAgICAgICAgICAgIGlmIGRvYyMjLnJlYWR5U3RhdGUgPT0gY29tcGxldGUgdGhlbiB3YWtldXAgdyBlO1xuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgaW5cbiAgICAgICgqIGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKilcbiAgICAgIGxldCBpbml0ID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkIERvbV9odG1sLndpbmRvdyBpblxuICAgICAgTHd0Lm9uX2FueSBpbml0ICh3YWtldXAgdykgKHdha2V1cF9leG4gdyk7XG4gICAgICAoKiBjbGVhbiBhbmQgcmV0dXJuICopXG4gICAgICBMd3QuYmluZCB0IChmdW4gX2UgLT5cbiAgICAgICAgICBMd3QuY2FuY2VsIHJlZ3VsYXI7XG4gICAgICAgICAgTHd0LmNhbmNlbCByZWFkeXN0YXRlY2hhbmdlO1xuICAgICAgICAgIEx3dC5jYW5jZWwgaW5pdDtcbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvbnVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25iZWZvcmV1bmxvYWQgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmJlZm9yZXVubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucmVzaXplICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yZXNpemUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5vcmllbnRhdGlvbmNoYW5nZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ucG9wc3RhdGUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvcHN0YXRlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25oYXNoY2hhbmdlICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5oYXNoY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSA9IEx3dC5waWNrIFsgb25yZXNpemUgKCk7IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgXVxuXG5sZXQgb25yZXNpemVzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzIHQgPVxuICBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSkgKCkgdFxuXG5sZXQgb25wb3BzdGF0ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnBvcHN0YXRlICgpKSAoKSB0XG5cbmxldCBvbmhhc2hjaGFuZ2VzIHQgPSBzZXFfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25oYXNoY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpKSAoKSB0XG5cbmxldCBsaW1pdGVkX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucmVzaXplICgpKSA/ZWxhcHNlZF90aW1lICgpIHRcblxubGV0IGxpbWl0ZWRfb25vcmllbnRhdGlvbmNoYW5nZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vcl9vbnJlc2l6ZXMgP2VsYXBzZWRfdGltZSB0ID1cbiAgbGltaXRlZF9sb29wXG4gICAgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpXG4gICAgP2VsYXBzZWRfdGltZVxuICAgICgpXG4gICAgdFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiBGaWxlXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYWRfd2l0aF9maWxlcmVhZGVyIChmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0cikga2luZCBmaWxlID1cbiAgbGV0IHJlYWRlciA9IG5ldyVqcyBmaWxlUmVhZGVyIGluXG4gIGxldCByZXMsIHcgPSBMd3QudGFzayAoKSBpblxuICByZWFkZXIjIy5vbmxvYWRlbmQgOj1cbiAgICBoYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBpZiByZWFkZXIjIy5yZWFkeVN0YXRlID09IERPTkVcbiAgICAgICAgdGhlblxuICAgICAgICAgIEx3dC53YWtldXBcbiAgICAgICAgICAgIHdcbiAgICAgICAgICAgIChtYXRjaCBPcHQudG9fb3B0aW9uIChDb2VyY2VUby5zdHJpbmcgcmVhZGVyIyMucmVzdWx0KSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGNhbid0IGhhcHBlbjogY2FsbGVkIHdpdGggZ29vZCByZWFkQXNfICopXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBzKVxuICAgICAgICBlbHNlICgpO1xuICAgICAgICAoKiBDQ0MgVE9ETzogaGFuZGxlIGVycm9ycyAqKVxuICAgICAgICBKcy5fZmFsc2UpO1xuICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuICgpIC0+IHJlYWRlciMjYWJvcnQpO1xuICAobWF0Y2gga2luZCB3aXRoXG4gIHwgYEJpbmFyeVN0cmluZyAtPiByZWFkZXIjI3JlYWRBc0JpbmFyeVN0cmluZyBmaWxlXG4gIHwgYFRleHQgLT4gcmVhZGVyIyNyZWFkQXNUZXh0IGZpbGVcbiAgfCBgVGV4dF93aXRoRW5jb2RpbmcgZSAtPiByZWFkZXIjI3JlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZVxuICB8IGBEYXRhVVJMIC0+IHJlYWRlciMjcmVhZEFzRGF0YVVSTCBmaWxlKTtcbiAgcmVzXG5cbmxldCByZWFkZXIga2luZCBmaWxlID0gcmVhZF93aXRoX2ZpbGVyZWFkZXIgZmlsZVJlYWRlciBraW5kIGZpbGVcblxubGV0IHJlYWRBc0JpbmFyeVN0cmluZyBmaWxlID0gcmVhZGVyIGBCaW5hcnlTdHJpbmcgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dCBmaWxlID0gcmVhZGVyIGBUZXh0IGZpbGVcblxubGV0IHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIGZpbGUgZSA9IHJlYWRlciAoYFRleHRfd2l0aEVuY29kaW5nIGUpIGZpbGVcblxubGV0IHJlYWRBc0RhdGFVUkwgZmlsZSA9IHJlYWRlciBgRGF0YVVSTCBmaWxlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE3IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdFxuICBpbmNsdWRlIEx3dF94bWxIdHRwUmVxdWVzdFxuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIGluY2x1ZGUgSnNfb2Zfb2NhbWwuRmlsZVxuICBpbmNsdWRlIEx3dF9maWxlXG5lbmRcblxubW9kdWxlIEpzb25wID0gTHd0X2pzb25wXG5tb2R1bGUgTHd0X2pzID0gTHd0X2pzXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEx3dF9qc19ldmVudHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIG5lZWQgdG8gc3BlY2lmeSBtZXNzYWdlcyB3aGVyZSB0aGVyZSBpcyBhbiBlcnJvciAqKVxubGV0IHRvc3MgOiAnYSAnYi4gJ2EgLT4gJ2IgPVxuIGZ1biBlIC0+XG4gIGxldCAoKSA9XG4gICAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInRvc3NcIikgW3wgSnMuVW5zYWZlLmluamVjdCBlIHxdXG4gIGluXG4gIGFzc2VydCBmYWxzZVxuXG5sZXQgaWQgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaWRcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgZGVidWcgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiZGVidWdcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgaW5mbyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJpbmZvXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IG5vdGljZSB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJub3RpY2VcIikgW3wgSnMuVW5zYWZlLmluamVjdCB2YWx1ZSB8XVxuXG5sZXQgd2FybmluZyB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJ3YXJuaW5nXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGVycm9yIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImVycm9yXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGZhdGFsIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImZhdGFsXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGpxdWVyeV9vbiAoc2VsZWN0b3IgOiBzdHJpbmcpIChldmVudCA6IHN0cmluZykgaGFuZGxlciA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImpxdWVyeU9uXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZXZlbnQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCBoYW5kbGVyO1xuICAgIHxdXG5cbmxldCBvcHRpb25fc3RyaW5nIChpZCA6IHN0cmluZyBvcHRpb24pID1cbiAgbWF0Y2ggaWQgd2l0aFxuICB8IFNvbWUgaWQgLT4gSnMuc29tZSAoSnMuc3RyaW5nIGlkKVxuICB8IE5vbmUgLT4gSnMubnVsbFxuXG5sZXQgcGxvdFBORyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90UE5HXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgcGxvdFNWRyA/KHBsb3RTdHlsZUlkIDogc3RyaW5nIG9wdGlvbikgKHBsb3REaXZJZCA6IHN0cmluZykgKHRpdGxlIDogc3RyaW5nKVxuICAgIChwbG90TmFtZSA6IHN0cmluZykgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJwbG90U1ZHXCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90RGl2SWQpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHRpdGxlKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBwbG90TmFtZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChvcHRpb25fc3RyaW5nIHBsb3RTdHlsZUlkKTtcbiAgICB8XVxuXG5sZXQgc2F2ZUZpbGUgfihkYXRhIDogJ2EgSnMudCkgfihtaW1lIDogc3RyaW5nKSB+KGZpbGVuYW1lIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzYXZlRmlsZVwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IGRhdGE7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbWltZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIHxdXG5cbnR5cGUgbWV0aCA9IFsgYERFTEVURSB8IGBHRVQgfCBgSEVBRCB8IGBPUFRJT05TIHwgYFBBVENIIHwgYFBPU1QgfCBgUFVUIF1cblxubGV0IG1ldGhvZF90b19zdHJpbmcgOiBtZXRoIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYERFTEVURSAtPiBcIkRFTEVURVwiXG4gIHwgYEdFVCAtPiBcIkdFVFwiXG4gIHwgYEhFQUQgLT4gXCJIRUFEXCJcbiAgfCBgT1BUSU9OUyAtPiBcIk9QVElPTlNcIlxuICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgfCBgUE9TVCAtPiBcIlBPU1RcIlxuICB8IGBQVVQgLT4gXCJQVVRcIlxuXG5sZXQgYWpheF9yZXF1ZXN0ID8odGltZW91dCA6IGZsb2F0IG9wdGlvbikgfih1cmwgOiBzdHJpbmcpIH4obWV0aCA6IG1ldGgpXG4gICAgPyhkYXRhIDogc3RyaW5nIG9wdGlvbikgfihoYW5kbGVyIDogaW50IC0+IHN0cmluZyAtPiB1bml0KSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImFqYXhSZXF1ZXN0XCIpXG4gICAgW3xcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB1cmwpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChtZXRob2RfdG9fc3RyaW5nIG1ldGgpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBTb21lIChKcy5zdHJpbmcgZGF0YSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzdGF0dXMgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgZGVidWdcbiAgICAgICAgICAgICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAoXCJyZXF1ZXN0IFwiIF4gdXJsIF4gXCIgYW5zd2VyOiBcIiBeIHN0cmluZ19vZl9pbnQgc3RhdHVzKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IGRlYnVnIHJlc3BvbnNlIGluXG4gICAgICAgICAgICAgaGFuZGxlciBzdGF0dXMgKEpzLnRvX3N0cmluZyByZXNwb25zZSkpKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3RcbiAgICAgICAgKEpzLk9wdC5vcHRpb25cbiAgICAgICAgICAgKG1hdGNoIHRpbWVvdXQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICB8IFNvbWUgdGltZW91dCAtPiBTb21lIHRpbWVvdXQpKTtcbiAgICB8XVxuXG4oKiBUaGlzIGlzIHRvIGhhbmRsZSBlcnJvcnMgYmVpbmcgbG9zdCBpbiBhc3luY3NcbiAgIHNvIHRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBhc3luYyBjYWxscyBpbiB0aGVcbiAgIGNvZGUuXG4qKVxubGV0IGFzeW5jIGxvYyAodGFzayA6IHVuaXQgLT4gJ2EgTHd0LnQpIDogdW5pdCA9XG4gIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmFzeW5jIChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYXRjaCB0YXNrIChmdW4gZXhuIC0+XG4gICAgICAgICAgbGV0ICgpID0gaW5mbyAoSnMuc3RyaW5nIChsb2MgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBkZWJ1ZyAoSnMuc3RyaW5nIChQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKSkgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZ3VpZCAoKSA6IHN0cmluZyA9XG4gIEpzLnRvX3N0cmluZyAoSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImd1aWRcIikgW3x8XSlcblxubGV0IG1vZGFsIH4oaWQgOiBzdHJpbmcpIH4oYWN0aW9uIDogc3RyaW5nKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJtb2RhbFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBhY3Rpb24pIHxdXG5cbmxldCBlbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIChsYWJlbCA6IHN0cmluZykgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImVsZW1lbnREYXRhXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBlbGVtZW50OyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbGFiZWwpIHxdXG5cbmxldCBjcmVhdGVfc29ydCAoaWQgOiBzdHJpbmcpIChoYW5kbGVyIDogRG9tX2h0bWwuZXZlbnQgSnMudCAtPiAnYiAtPiB1bml0KSA6XG4gICAgdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIChKcy5VbnNhZmUuanNfZXhwciBcImNyZWF0ZVNvcnRcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGhhbmRsZXIgfF1cblxubGV0IGNoaWxkcmVuX3ZhbHVlIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAoc2VsZWN0b3IgOiBzdHJpbmcpXG4gICAgKG1hcCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiAnYSkgOiAnYSBsaXN0ID1cbiAgQXJyYXkudG9fbGlzdFxuICAgIChKcy50b19hcnJheVxuICAgICAgIChKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAgICAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjaGlsZHJlblZhbHVlXCIpXG4gICAgICAgICAgW3xcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDtcbiAgICAgICAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzZWxlY3Rvcik7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IG1hcDtcbiAgICAgICAgICB8XSkpXG5cbmxldCBoaWRlX2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImhpZGVDb2RlTWlycm9yXCIpIFt8fF1cblxubGV0IHNob3dfY29kZW1pcnJvciAoKSA6IHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwic2hvd0NvZGVNaXJyb3JcIikgW3x8XVxuIiwibGV0IHJldl9zcGxpdCBsID1cbiAgbGV0IHJlYyBpbm5lciB4cyB5cyA9IGZ1bmN0aW9uXG4gICAgfCAoeCwgeSkgOjogeHlzIC0+XG4gICAgICAgaW5uZXIgKHg6OnhzKSAoeTo6eXMpIHh5c1xuICAgIHwgW10gLT4gKHhzLCB5cylcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG50eXBlIHdyYXAgPSBbXG4gIHwgYFdyYXBfYXRvbXNcbiAgfCBgQWx3YXlzX3dyYXBcbiAgfCBgTmV2ZXJfd3JhcFxuICB8IGBGb3JjZV9icmVha3NcbiAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICB8IGBOb19icmVha3Ncbl1cblxudHlwZSBsYWJlbF9icmVhayA9IFtcbiAgfCBgQXV0b1xuICB8IGBBbHdheXNcbiAgfCBgQWx3YXlzX3JlY1xuICB8IGBOZXZlclxuXVxuXG50eXBlIHN0eWxlX25hbWUgPSBzdHJpbmdcbnR5cGUgc3R5bGUgPSB7XG4gIHRhZ19vcGVuIDogc3RyaW5nO1xuICB0YWdfY2xvc2UgOiBzdHJpbmdcbn1cblxudHlwZSBhdG9tX3BhcmFtID0ge1xuICBhdG9tX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBhdG9tID0ge1xuICBhdG9tX3N0eWxlID0gTm9uZVxufVxuXG50eXBlIGxpc3RfcGFyYW0gPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgOiBib29sO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgOiBib29sO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yIDogYm9vbDtcbiAgc2VwYXJhdG9yc19zdGlja19sZWZ0IDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX2Nsb3NpbmcgOiBib29sO1xuICBzdGlja190b19sYWJlbCA6IGJvb2w7XG4gIGFsaWduX2Nsb3NpbmcgOiBib29sO1xuICB3cmFwX2JvZHkgOiB3cmFwO1xuICBpbmRlbnRfYm9keSA6IGludDtcbiAgbGlzdF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBvcGVuaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGJvZHlfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgc2VwYXJhdG9yX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIGNsb3Npbmdfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbn1cblxubGV0IGxpc3QgPSB7XG4gIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICBzcGFjZV9hZnRlcl9zZXBhcmF0b3IgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gZmFsc2U7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWU7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICBhbGlnbl9jbG9zaW5nID0gdHJ1ZTtcbiAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gIGluZGVudF9ib2R5ID0gMjtcbiAgbGlzdF9zdHlsZSA9IE5vbmU7XG4gIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICBib2R5X3N0eWxlID0gTm9uZTtcbiAgc2VwYXJhdG9yX3N0eWxlID0gTm9uZTtcbiAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgbGFiZWxfcGFyYW0gPSB7XG4gIGxhYmVsX2JyZWFrOiBsYWJlbF9icmVhaztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgOiBib29sO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgOiBpbnQ7XG4gIGxhYmVsX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsYWJlbCA9IHtcbiAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgc3BhY2VfYWZ0ZXJfbGFiZWwgPSB0cnVlO1xuICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICBsYWJlbF9zdHlsZSA9IE5vbmU7XG59XG5cbnR5cGUgdCA9XG4gICAgQXRvbSBvZiBzdHJpbmcgKiBhdG9tX3BhcmFtXG4gIHwgTGlzdCBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nICogbGlzdF9wYXJhbSkgKiB0IGxpc3RcbiAgfCBMYWJlbCBvZiAodCAqIGxhYmVsX3BhcmFtKSAqIHRcbiAgfCBDdXN0b20gb2YgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdClcblxudHlwZSBlc2NhcGUgPVxuICAgIFsgYE5vbmVcbiAgICB8IGBFc2NhcGUgb2ZcbiAgICAgICAgKChzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0KVxuICAgIHwgYEVzY2FwZV9zdHJpbmcgb2YgKHN0cmluZyAtPiBzdHJpbmcpIF1cblxudHlwZSBzdHlsZXMgPSAoc3R5bGVfbmFtZSAqIHN0eWxlKSBsaXN0XG5cbigqXG4gICBUcmFuc2Zvcm0gYSB0cmVlIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXZlcywgcHJvcGFnYXRpbmcgYW5kIG1lcmdpbmdcbiAgIGFjY3VtdWxhdG9ycyB1bnRpbCByZWFjaGluZyB0aGUgcm9vdC5cbiopXG5sZXQgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gIH5pbml0X2FjYyAgKCogY3JlYXRlIGluaXRpYWwgYWNjdW11bGF0b3IgZm9yIGEgbGVhZiAqKVxuICB+bWVyZ2VfYWNjICgqIG1lcmdlIHR3byBhY2N1bXVsYXRvcnMgY29taW5nIGZyb20gY2hpbGQgbm9kZXMgKilcbiAgfm1hcF9ub2RlICAoKiAobm9kZSwgYWNjKSAtPiAobm9kZSwgYWNjKSAqKVxuICB4ID1cblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEF0b20gXyAtPlxuICAgICAgICBsZXQgYWNjID0gaW5pdF9hY2MgeCBpblxuICAgICAgICBtYXBfbm9kZSB4IGFjY1xuICAgIHwgTGlzdCAocGFyYW0sIGNoaWxkcmVuKSAtPlxuICAgICAgICBsZXQgbmV3X2NoaWxkcmVuLCBhY2NzID0gcmV2X3NwbGl0IChMaXN0LnJldl9tYXAgYXV4IGNoaWxkcmVuKSBpblxuICAgICAgICBsZXQgYWNjID0gTGlzdC5mb2xkX2xlZnQgbWVyZ2VfYWNjIChpbml0X2FjYyB4KSBhY2NzIGluXG4gICAgICAgIG1hcF9ub2RlIChMaXN0IChwYXJhbSwgbmV3X2NoaWxkcmVuKSkgYWNjXG4gICAgfCBMYWJlbCAoKHgxLCBwYXJhbSksIHgyKSAtPlxuICAgICAgICBsZXQgYWNjMCA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbGV0IG5ld194MSwgYWNjMSA9IGF1eCB4MSBpblxuICAgICAgICBsZXQgbmV3X3gyLCBhY2MyID0gYXV4IHgyIGluXG4gICAgICAgIGxldCBhY2MgPSBtZXJnZV9hY2MgKG1lcmdlX2FjYyBhY2MwIGFjYzEpIGFjYzIgaW5cbiAgICAgICAgbWFwX25vZGUgKExhYmVsICgobmV3X3gxLCBwYXJhbSksIG5ld194MikpIGFjY1xuICAgIHwgQ3VzdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgaW5cbiAgYXV4IHhcblxuKCpcbiAgIENvbnZlcnQgd3JhcHBhYmxlIGxpc3RzIGludG8gdmVydGljYWwgbGlzdHMgaWYgYW55IG9mIHRoZWlyIGRlc2NlbmRhbnRzXG4gICBoYXMgdGhlIGF0dHJpYnV0ZSB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYy5cbiopXG5sZXQgcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeCA9XG4gICgqIGFjYyA9IHdoZXRoZXIgdG8gZm9yY2UgYnJlYWtzIGluIHdyYXBwYWJsZSBsaXN0cyBvciBsYWJlbHMgKilcbiAgbGV0IGluaXRfYWNjID0gZnVuY3Rpb25cbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3NfcmVjOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gYEFsd2F5c19yZWM7IF8gfSksIF8pIC0+IHRydWVcbiAgICB8IEF0b20gX1xuICAgIHwgTGFiZWwgX1xuICAgIHwgQ3VzdG9tIF9cbiAgICB8IExpc3QgXyAtPiBmYWxzZVxuICBpblxuICBsZXQgbWVyZ2VfYWNjIGZvcmNlX2JyZWFrczEgZm9yY2VfYnJlYWtzMiA9XG4gICAgZm9yY2VfYnJlYWtzMSB8fCBmb3JjZV9icmVha3MyXG4gIGluXG4gIGxldCBtYXBfbm9kZSB4IGZvcmNlX2JyZWFrcyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXykgLT4geCwgdHJ1ZVxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrczsgXyB9KSwgXykgLT4geCwgZm9yY2VfYnJlYWtzXG5cbiAgICB8IExpc3QgKChvcCwgc2VwLCBjbCwgKHsgd3JhcF9ib2R5ID0gKGBXcmFwX2F0b21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgQWx3YXlzX3dyYXApOyBfIH0gYXMgcCkpLFxuICAgICAgICAgICAgY2hpbGRyZW4pIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IHAgPSB7IHAgd2l0aCB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzIH0gaW5cbiAgICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBjaGlsZHJlbiksIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHgsIGZhbHNlXG5cbiAgICB8IExhYmVsICgoYSwgKHsgbGFiZWxfYnJlYWsgPSBgQXV0bzsgXyB9IGFzIGxwKSksIGIpIC0+XG4gICAgICAgIGlmIGZvcmNlX2JyZWFrcyB0aGVuXG4gICAgICAgICAgbGV0IGxwID0geyBscCB3aXRoIGxhYmVsX2JyZWFrID0gYEFsd2F5cyB9IGluXG4gICAgICAgICAgTGFiZWwgKChhLCBscCksIGIpLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgTm9fYnJlYWtzOyBfIH0pLCBfKVxuICAgIHwgTGFiZWwgKChfLCB7IGxhYmVsX2JyZWFrID0gKGBBbHdheXMgfCBgQWx3YXlzX3JlYyB8IGBOZXZlcik7IF8gfSksIF8pXG4gICAgfCBBdG9tIF9cbiAgICB8IEN1c3RvbSBfIC0+IHgsIGZvcmNlX2JyZWFrc1xuICBpblxuICBsZXQgbmV3X3gsIF9mb3JjZWRfYnJlYWtzID1cbiAgICBwcm9wYWdhdGVfZnJvbV9sZWFmX3RvX3Jvb3RcbiAgICAgIH5pbml0X2FjY1xuICAgICAgfm1lcmdlX2FjY1xuICAgICAgfm1hcF9ub2RlXG4gICAgICB4XG4gIGluXG4gIG5ld194XG5cbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4gICgqXG4gICAgIFJld3JpdGUgdGhlIHRyZWUgdG8gYmUgcHJpbnRlZC5cbiAgICAgQ3VycmVudGx5LCB0aGlzIGlzIHVzZWQgb25seSB0byBoYW5kbGUgYEZvcmNlX2JyZWFrc19yZWMuXG4gICopXG4gIGxldCByZXdyaXRlIHggPSBwcm9wYWdhdGVfZm9yY2VkX2JyZWFrcyB4XG5cbiAgKCpcbiAgICBSZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBtYXJrX29wZW5fdGFnIGFuZCBtYXJrX2Nsb3NlX3RhZ1xuICAgIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSBjYWxsaW5nIHBwX291dHB1dF9zdHJpbmcgb25jZS5cbiAgICBJdCdzIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uIGFsdGhvdWdoIG5vdCBndWFyYW50ZWVkIGJ5IHRoZVxuICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIEZvcm1hdCBtb2R1bGUuXG4gICopXG4gIGxldCBzZXRfZXNjYXBlIGZtdCBlc2NhcGUgPVxuICAgIGxldCBwcmludDAsIGZsdXNoMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10ICgpIGluXG4gICAgbGV0IHRhZ2YwID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpIGluXG5cbiAgICBsZXQgaXNfdGFnID0gcmVmIGZhbHNlIGluXG5cbiAgICBsZXQgbW90IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfb3Blbl9zdGFnIHRhZ1xuICAgIGluXG5cbiAgICBsZXQgbWN0IHRhZyA9XG4gICAgICBpc190YWcgOj0gdHJ1ZTtcbiAgICAgIHRhZ2YwLm1hcmtfY2xvc2Vfc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IHByaW50IHMgcCBuID1cbiAgICAgIGlmICFpc190YWcgdGhlblxuICAgICAgICAocHJpbnQwIHMgcCBuO1xuICAgICAgICAgaXNfdGFnIDo9IGZhbHNlKVxuICAgICAgZWxzZVxuICAgICAgICBlc2NhcGUgcHJpbnQwIHMgcCBuXG4gICAgaW5cblxuICAgIGxldCB0YWdmID0ge1xuICAgICAgdGFnZjAgd2l0aFxuICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0XG4gICAgfVxuICAgIGluXG4gICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBmbXQgcHJpbnQgZmx1c2gwO1xuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCB0YWdmXG5cblxuICBsZXQgc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYyA9XG4gICAgbGV0IGVzY2FwZSBwcmludCBzIHAgbiA9XG4gICAgICBsZXQgczAgPSBTdHJpbmcuc3ViIHMgcCBuIGluXG4gICAgICBsZXQgczEgPSBlc2MgczAgaW5cbiAgICAgIHByaW50IHMxIDAgKFN0cmluZy5sZW5ndGggczEpXG4gICAgaW5cbiAgICBzZXRfZXNjYXBlIGZtdCBlc2NhcGVcblxuXG4gIGxldCBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgbCA9XG4gICAgaWYgbCA8PiBbXSB0aGVuIChcbiAgICAgIEZvcm1hdC5wcF9zZXRfdGFncyBmbXQgdHJ1ZTtcbiAgICAgIGxldCB0YmwxID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IHRibDIgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICBmdW4gKHN0eWxlX25hbWUsIHN0eWxlKSAtPlxuICAgICAgICAgIEhhc2h0YmwuYWRkIHRibDEgc3R5bGVfbmFtZSBzdHlsZS50YWdfb3BlbjtcbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwyIHN0eWxlX25hbWUgc3R5bGUudGFnX2Nsb3NlXG4gICAgICApIGw7XG4gICAgICBsZXQgbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRm9ybWF0LlN0cmluZ190YWcgc3R5bGVfbmFtZSAtPlxuICAgICAgICAgICAgKHRyeSBIYXNodGJsLmZpbmQgdGJsMSBzdHlsZV9uYW1lXG4gICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gXCJcIilcbiAgICAgICAgfCBfIC0+IFwiXCJcbiAgICAgIGluXG4gICAgICBsZXQgbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDIgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgXCJcIlxuICAgICAgaW5cblxuICAgICAgbGV0IHRhZ2YgPSB7XG4gICAgICAgIChGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkpIHdpdGhcbiAgICAgICAgICBtYXJrX29wZW5fc3RhZyA9IG1hcmtfb3Blbl90YWc7XG4gICAgICAgICAgbWFya19jbG9zZV9zdGFnID0gbWFya19jbG9zZV90YWdcbiAgICAgIH1cbiAgICAgIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuICAgICk7XG5cbiAgICAobWF0Y2ggZXNjYXBlIHdpdGhcbiAgICAgICAgIGBOb25lIC0+ICgpXG4gICAgICAgfCBgRXNjYXBlIGVzYyAtPiBzZXRfZXNjYXBlIGZtdCBlc2NcbiAgICAgICB8IGBFc2NhcGVfc3RyaW5nIGVzYyAtPiBzZXRfZXNjYXBlX3N0cmluZyBmbXQgZXNjKVxuXG5cbiAgbGV0IHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwXG4gICAgICB8IGBOZXZlcl93cmFwXG4gICAgICB8IGBXcmFwX2F0b21zIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG4gIGxldCBleHRyYV9ib3ggcCBsID1cbiAgICBsZXQgd3JhcCA9XG4gICAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgICAgYEFsd2F5c193cmFwIC0+IHRydWVcbiAgICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlY1xuICAgICAgICB8IGBOb19icmVha3MgLT4gZmFsc2VcbiAgICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsIChmdW5jdGlvbiBBdG9tIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcbiAgICBpblxuICAgIGlmIHdyYXAgdGhlblxuICAgICAgKChmdW4gZm10IC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgMCksXG4gICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCkpKVxuICAgIGVsc2VcbiAgICAgICgoZnVuIF8gLT4gKCkpLFxuICAgICAgIChmdW4gXyAtPiAoKSkpXG5cblxuICBsZXQgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCBpbmRlbnQgbCA9XG4gICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICBgQWx3YXlzX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faG92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5ldmVyX3dyYXAgLT4gRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPlxuICAgICAgICAgIGlmIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LnBwX29wZW5faHZib3ggZm10IGluZGVudFxuICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICB8IGBGb3JjZV9icmVha3NfcmVjIC0+IEZvcm1hdC5wcF9vcGVuX3Zib3ggZm10IGluZGVudFxuICAgICAgfCBgTm9fYnJlYWtzIC0+IEZvcm1hdC5wcF9vcGVuX2hib3ggZm10ICgpXG5cblxuICBsZXQgb3Blbl90YWcgZm10ID0gZnVuY3Rpb25cbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPiBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgcylcblxuICBsZXQgY2xvc2VfdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT4gRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHRhZ19zdHJpbmcgZm10IG8gcyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgICAgIE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgc1xuICAgICAgfCBTb21lIHRhZyAtPlxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX3N0YWcgZm10IChGb3JtYXQuU3RyaW5nX3RhZyB0YWcpO1xuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHM7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX3N0YWcgZm10ICgpXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBmbXQgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgcCkgLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5hdG9tX3N0eWxlIHM7XG5cbiAgICB8IExpc3QgKChfLCBfLCBfLCBwKSBhcyBwYXJhbSwgbCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IHAubGlzdF9zdHlsZTtcbiAgICAgICAgaWYgcC5hbGlnbl9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdCBmbXQgTm9uZSBwYXJhbSBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdDIgZm10IHBhcmFtIGw7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgcC5saXN0X3N0eWxlXG5cbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgZm10IGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+IGYgZm10XG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfbGVmdCBmbXQgcCBzZXAgaGQgdGwgPVxuICAgIG9wZW5fdGFnIGZtdCBwLmJvZHlfc3R5bGU7XG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuICAgIGNsb3NlX3RhZyBmbXQgcC5ib2R5X3N0eWxlXG5cbiAgYW5kIGZwcmludF9saXN0X2JvZHlfc3RpY2tfcmlnaHQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfb3B0X2xhYmVsIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIChsYWIsIGxwKSAtPlxuICAgICAgICBvcGVuX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG4gICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuXG4gICgqIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGxpc3QgKilcbiAgYW5kIGZwcmludF9saXN0IGZtdCBsYWJlbCAoKG9wLCBfc2VwLCBjbCwgcCkgYXMgcGFyYW0pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB8fCBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsXG5cbiAgICB8IGhkIDo6IHRsIGFzIGwgLT5cblxuICAgICAgICBpZiB0bCA9IFtdIHx8IHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCBwYXJhbSBoZCB0bCBsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX2xlZnQgZm10IGxhYmVsIChvcCwgc2VwLCBjbCwgcCkgaGQgdGwgbCA9XG4gICAgbGV0IGluZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50O1xuICAgIGZwcmludF9vcHRfbGFiZWwgZm10IGxhYmVsO1xuXG4gICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuXG4gICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfY3V0IGZtdCAoKTtcblxuICAgIGxldCBvcGVuX2V4dHJhLCBjbG9zZV9leHRyYSA9IGV4dHJhX2JveCBwIGwgaW5cbiAgICBvcGVuX2V4dHJhIGZtdDtcbiAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsO1xuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0X3N0aWNrX3JpZ2h0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBiYXNlX2luZGVudCA9IHAuaW5kZW50X2JvZHkgaW5cbiAgICBsZXQgc2VwX2luZGVudCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIHNlcCArIChpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuIDEgZWxzZSAwKVxuICAgIGluXG4gICAgbGV0IGluZGVudCA9IGJhc2VfaW5kZW50ICsgc2VwX2luZGVudCBpblxuXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG5cbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtc2VwX2luZGVudClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLXNlcF9pbmRlbnQpO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLnNlcGFyYXRvcl9zdHlsZSBzZXA7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgZnByaW50X3QgZm10IHhcbiAgICApIHRsO1xuXG4gICAgY2xvc2VfZXh0cmEgZm10O1xuXG4gICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDEgKC1pbmRlbnQpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwICgtaW5kZW50KTtcbiAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2w7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuXG5cbiAgKCogYWxpZ25fY2xvc2luZyA9IGZhbHNlICopXG4gIGFuZCBmcHJpbnRfbGlzdDIgZm10IChvcCwgc2VwLCBjbCwgcCkgPSBmdW5jdGlvblxuICAgICAgW10gLT5cbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcblxuICAgICAgICBwcF9vcGVuX25vbmFsaWduZWRfYm94IGZtdCBwIDAgbCA7XG4gICAgICAgIGlmIHAuc2VwYXJhdG9yc19zdGlja19sZWZ0IHRoZW5cbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG5cbiAgKCogUHJpbnRpbmcgYSBsYWJlbDp2YWx1ZSBwYWlyLlxuXG4gICAgIFRoZSBvcGVuaW5nIGJyYWNrZXQgc3RheXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUga2V5LCBubyBtYXR0ZXIgd2hhdCxcbiAgICAgYW5kIHRoZSBjbG9zaW5nIGJyYWNrZXQgaXMgZWl0aGVyIG9uIHRoZSBzYW1lIGxpbmVcbiAgICAgb3IgdmVydGljYWxseSBhbGlnbmVkIHdpdGggdGhlIGJlZ2lubmluZyBvZiB0aGUga2V5LlxuICAqKVxuICBhbmQgZnByaW50X3BhaXIgZm10ICgobGFiLCBscCkgYXMgbGFiZWwpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBMaXN0ICgob3AsIHNlcCwgY2wsIHApLCBsKSB3aGVuIHAuc3RpY2tfdG9fbGFiZWwgJiYgcC5hbGlnbl9jbG9zaW5nIC0+XG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IChTb21lIGxhYmVsKSAob3AsIHNlcCwgY2wsIHApIGxcblxuICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGluZGVudCA9IGxwLmluZGVudF9hZnRlcl9sYWJlbCBpblxuICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCAwO1xuXG4gICAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICAgIGZwcmludF90IGZtdCBsYWI7XG4gICAgICAgICAgY2xvc2VfdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcblxuICAgICAgICAgIChtYXRjaCBscC5sYWJlbF9icmVhayB3aXRoXG4gICAgICAgICAgIHwgYEF1dG8gLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxIGluZGVudFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgaW5kZW50XG4gICAgICAgICAgIHwgYEFsd2F5c1xuICAgICAgICAgICB8IGBBbHdheXNfcmVjIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBmbXQgKCk7XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCAoU3RyaW5nLm1ha2UgaW5kZW50ICcgJylcbiAgICAgICAgICAgfCBgTmV2ZXIgLT5cbiAgICAgICAgICAgICAgIGlmIGxwLnNwYWNlX2FmdGVyX2xhYmVsIHRoZW5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2NoYXIgZm10ICcgJ1xuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgZnByaW50X3QgZm10IHg7XG4gICAgICAgICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKClcblxuICBsZXQgdG9fZm9ybWF0dGVyIGZtdCB4ID1cbiAgICBsZXQgeCA9IHJld3JpdGUgeCBpblxuICAgIGZwcmludF90IGZtdCB4O1xuICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmbXQgKClcblxuICBsZXQgdG9fYnVmZmVyID8oZXNjYXBlID0gYE5vbmUpID8oc3R5bGVzID0gW10pIGJ1ZiB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIHN0eWxlcztcbiAgICB0b19mb3JtYXR0ZXIgZm10IHhcblxuICBsZXQgdG9fc3RyaW5nID9lc2NhcGUgP3N0eWxlcyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgP2VzY2FwZSA/c3R5bGVzIGJ1ZiB4O1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgdG9fY2hhbm5lbCA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBvYyB4ID1cbiAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0ZG91dCA/ZXNjYXBlID9zdHlsZXMgeCA9IHRvX2NoYW5uZWwgP2VzY2FwZSA/c3R5bGVzIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRlcnIgeFxuXG5lbmRcblxuXG5cblxubW9kdWxlIENvbXBhY3QgPVxuc3RydWN0XG4gIG9wZW4gUHJpbnRmXG5cbiAgbGV0IHJlYyBmcHJpbnRfdCBidWYgPSBmdW5jdGlvblxuICAgICAgQXRvbSAocywgXykgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNcbiAgICB8IExpc3QgKHBhcmFtLCBsKSAtPiBmcHJpbnRfbGlzdCBidWYgcGFyYW0gbFxuICAgIHwgTGFiZWwgKGxhYmVsLCB4KSAtPiBmcHJpbnRfcGFpciBidWYgbGFiZWwgeFxuICAgIHwgQ3VzdG9tIGYgLT5cbiAgICAgICAgKCogV2lsbCBtb3N0IGxpa2VseSBub3QgYmUgY29tcGFjdCAqKVxuICAgICAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgICAgIGYgZm10O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgYW5kIGZwcmludF9saXN0IGJ1ZiAob3AsIHNlcCwgY2wsIF8pID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+IGJwcmludGYgYnVmIFwiJXMlc1wiIG9wIGNsXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBvcDtcbiAgICAgICAgZnByaW50X3QgYnVmIHg7XG4gICAgICAgIExpc3QuaXRlciAoXG4gICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgICAgICAgICBmcHJpbnRfdCBidWYgeFxuICAgICAgICApIHRsO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgY2xcblxuICBhbmQgZnByaW50X3BhaXIgYnVmIChsYWJlbCwgXykgeCA9XG4gICAgZnByaW50X3QgYnVmIGxhYmVsO1xuICAgIGZwcmludF90IGJ1ZiB4XG5cblxuICBsZXQgdG9fYnVmZmVyIGJ1ZiB4ID0gZnByaW50X3QgYnVmIHhcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgeCBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIgcztcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2NoYW5uZWwgb2MgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyIGJ1ZiB4O1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuXG4gIGxldCB0b19zdGRvdXQgeCA9IHRvX2NoYW5uZWwgc3Rkb3V0IHhcbiAgbGV0IHRvX3N0ZGVyciB4ID0gdG9fY2hhbm5lbCBzdGRlcnIgeFxuZW5kXG5cblxuXG5cbigqIE9ic29sZXRlICopXG5tb2R1bGUgUGFyYW0gPVxuc3RydWN0XG4gIGxldCBsaXN0X3RydWUgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IHRydWU7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gdHJ1ZTtcbiAgICBzdGlja190b19sYWJlbCA9IHRydWU7XG4gICAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGlzdF9mYWxzZSA9IHtcbiAgICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG4gICAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gZmFsc2U7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSBmYWxzZTtcbiAgICBhbGlnbl9jbG9zaW5nID0gZmFsc2U7XG4gICAgd3JhcF9ib2R5ID0gYFdyYXBfYXRvbXM7XG4gICAgaW5kZW50X2JvZHkgPSAyO1xuICAgIGxpc3Rfc3R5bGUgPSBOb25lO1xuICAgIG9wZW5pbmdfc3R5bGUgPSBOb25lO1xuICAgIGJvZHlfc3R5bGUgPSBOb25lO1xuICAgIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gICAgY2xvc2luZ19zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfdHJ1ZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgICBpbmRlbnRfYWZ0ZXJfbGFiZWwgPSAyO1xuICAgIGxhYmVsX3N0eWxlID0gTm9uZTtcbiAgfVxuXG4gIGxldCBsYWJlbF9mYWxzZSA9IHtcbiAgICBsYWJlbF9icmVhayA9IGBBdXRvO1xuICAgIHNwYWNlX2FmdGVyX2xhYmVsID0gZmFsc2U7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cbmVuZFxuIiwiZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5cbigqXG4gIERlYnVnZ2luZyB1dGlsaXRpZXMuXG4qKVxuXG5sZXQgc3RyaW5nOF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgZm9yIGkgPSAwIHRvIDcgZG9cbiAgICBCeXRlcy5zZXQgcyAoNy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgc3RyaW5nNF9vZl9pbnQgeCA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgZm9yIGkgPSAwIHRvIDMgZG9cbiAgICBCeXRlcy5zZXQgcyAoMy1pKSAoQ2hhci5jaHIgKDB4ZmYgbGFuZCAoeCBsc3IgKDggKiBpKSkpKVxuICBkb25lO1xuICBCeXRlcy50b19zdHJpbmcgc1xuXG5sZXQgcHJpbnRfYml0cyA/KHBvcyA9IDApID9sZW4gcyA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHBvcyA8IDAgfHwgKHBvcyA+IDAgJiYgcG9zID49IHNsZW4pIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX3V0aWwucHJpbnRfYml0c1wiO1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICBOb25lIC0+IHNsZW4gLSBwb3NcbiAgICAgIHwgU29tZSBsZW4gLT5cbiAgICAgICAgICBpZiBsZW4gPiBzbGVuIC0gcG9zIHRoZW4gaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIlxuICAgICAgICAgIGVsc2UgbGVuXG4gIGluXG5cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDkpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGsgPSBpICogOSBpblxuICAgIGxldCB4ID0gQ2hhci5jb2RlIHMuW3BvcytpXSBpblxuICAgIGZvciBqID0gMCB0byA3IGRvXG4gICAgICBCeXRlcy5zZXQgciAoaytqKSAoaWYgKHggbHNyICg3IC0gaikpIGxhbmQgMSA9IDAgdGhlbiAnMCcgZWxzZSAnMScpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgciAoays4KSAoaWYgKGkgKyAxKSBtb2QgOCA9IDAgdGhlbiAnXFxuJyBlbHNlICcgJylcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHJcblxuKCogaW50IHNpemUgaW4gYml0cyAqKVxubGV0IGludF9zaXplID1cbiAgbGV0IGMgPSByZWYgMCBpblxuICBsZXQgciA9IHJlZiAoLTEpIGluXG4gIHdoaWxlICFyIDw+IDAgZG9cbiAgICByIDo9ICFyIGxzciAxO1xuICAgIGluY3IgY1xuICBkb25lO1xuICAhY1xuIiwidHlwZSB0eXBlX2lkID0gaW50XG5cbmxldCBkdW1teV90eXBlX2lkID0gMFxuXG5sZXQgY3JlYXRlX3R5cGVfaWQgPVxuICBsZXQgbiA9IHJlZiBkdW1teV90eXBlX2lkIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgbjtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgZmFpbHdpdGggXCJCaV9zaGFyZS5SZF9wb2x5LmNyZWF0ZV90eXBlX2lkOiBcXFxuICAgICAgICAgICAgICAgIGV4aGF1c3RlZCBhdmFpbGFibGUgdHlwZV9pZCdzXCJcbiAgICBlbHNlXG4gICAgICAhblxuXG5tb2R1bGUgV3IgPVxuc3RydWN0XG4gIG1vZHVsZSBIID0gSGFzaHRibC5NYWtlIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE9iai50ICogdHlwZV9pZFxuICAgICAgbGV0IGVxdWFsICh4MSwgdDEpICh4MiwgdDIpID0geDEgPT0geDIgJiYgdDEgPT0gdDJcbiAgICAgIGxldCBoYXNoID0gSGFzaHRibC5oYXNoXG4gICAgZW5kXG4gIClcblxuICB0eXBlIHRibCA9IGludCBILnRcblxuICBsZXQgY3JlYXRlID0gSC5jcmVhdGVcbiAgbGV0IGNsZWFyIHRibCA9XG4gICAgaWYgSC5sZW5ndGggdGJsID4gMCB0aGVuXG4gICAgICBILmNsZWFyIHRibFxuXG4gIGxldCBwdXQgdGJsIGsgcG9zID1cbiAgICB0cnlcbiAgICAgIGxldCBwb3MwID0gSC5maW5kIHRibCAoT2JqLm1hZ2ljIGspIGluXG4gICAgICBwb3MgLSBwb3MwXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIEguYWRkIHRibCAoT2JqLm1hZ2ljIGspIHBvcztcbiAgICAgIDBcbmVuZFxuXG5tb2R1bGUgUmQgPVxuc3RydWN0XG4gIHR5cGUgdGJsID0gKChpbnQgKiB0eXBlX2lkKSwgT2JqLnQpIEhhc2h0YmwudFxuXG4gIGxldCBjcmVhdGUgbiA9IEhhc2h0YmwuY3JlYXRlIG5cbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuXG4gIGxldCBwdXQgdGJsIHBvcyB4ID1cbiAgICBIYXNodGJsLmFkZCB0YmwgcG9zIHhcblxuICBsZXQgZ2V0IHRibCBwb3MgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgdGJsIHBvc1xuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgcmVmZXJlbmNlKVwiXG5lbmRcbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpX3MgOiBieXRlcztcbiAgbXV0YWJsZSBpX3BvcyA6IGludDtcbiAgbXV0YWJsZSBpX2xlbiA6IGludDtcbiAgbXV0YWJsZSBpX29mZnMgOiBpbnQ7XG4gIG11dGFibGUgaV9tYXhfbGVuIDogaW50O1xuICBpX3JlZmlsbCA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgaV9zaGFyZWQgOiBCaV9zaGFyZS5SZC50Ymw7XG59XG5cbmV4Y2VwdGlvbiBFbmRfb2ZfaW5wdXRcblxubGV0IHRyeV9wcmVyZWFkIGliIG4gPVxuICBpZiBpYi5pX2xlbiAtIGliLmlfcG9zIDwgbiB0aGVuIChcbiAgICBpYi5pX3JlZmlsbCBpYiBuO1xuICAgIG1pbiAoaWIuaV9sZW4gLSBpYi5pX3BvcykgblxuICApXG4gIGVsc2VcbiAgICBuXG5cbmxldCByZWFkIGliIG4gPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPj0gbiB0aGVuIChcbiAgICBpYi5pX3BvcyA8LSBwb3MgKyBuO1xuICAgIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiBuID49IG4gdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIG47XG4gICAgICBwb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHJlYWRfY2hhciBpYiA9XG4gIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICBpZiBpYi5pX2xlbiAtIHBvcyA+IDAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICBpYi5pX3BvcyA8LSBwb3MgKyAxO1xuICAgIGNcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gICAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IHBlZWsgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIEJ5dGVzLnVuc2FmZV9nZXQgaWIuaV9zIHBvc1xuICApXG4gIGVsc2VcbiAgICBpZiB0cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBpYi5pX3Bvc1xuICAgIGVsc2VcbiAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuXG5sZXQgZnJvbV9ieXRlcyA/KHBvcyA9IDApID8oc2hybGVuID0gMTYpIHMgPSB7XG4gIGlfcyA9IHM7XG4gIGlfcG9zID0gcG9zO1xuICBpX2xlbiA9IEJ5dGVzLmxlbmd0aCBzO1xuICBpX29mZnMgPSAtcG9zO1xuICBpX21heF9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9yZWZpbGwgPSAoZnVuIGliIG4gLT4gKCkpO1xuICBpX3NoYXJlZCA9IEJpX3NoYXJlLlJkLmNyZWF0ZSBzaHJsZW47XG59XG5cbmxldCBmcm9tX3N0cmluZyA/cG9zID9zaHJsZW4gcyA9IGZyb21fYnl0ZXMgP3BvcyA/c2hybGVuIChCeXRlcy5vZl9zdHJpbmcgcylcblxuKCpcbiAgTGlrZSBQZXJ2YXNpdmVzLnJlYWxseV9pbnB1dCBidXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gIHJlYWQgaW5zdGVhZCBvZiByYWlzaW5nIEVuZF9vZl9maWxlIHdoZW4gdGhlIGVuZCBvZiBmaWxlIGlzIHJlYWNoZWQuXG4qKVxubGV0IHJlYyBub3RfcmVhbGx5X2lucHV0IGljIHMgcG9zIGxlbiBhY2N1ID1cbiAgbGV0IG4gPSBpbnB1dCBpYyBzIHBvcyBsZW4gaW5cbiAgaWYgbiA8IGxlbiAmJiBuID4gMCB0aGVuXG4gICAgbm90X3JlYWxseV9pbnB1dCBpYyBzIChwb3MgKyBuKSAobGVuIC0gbikgKGFjY3UgKyBuKVxuICBlbHNlXG4gICAgYWNjdSArIG5cblxubGV0IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWMgaWIgbiA9XG4gIGlmIG4gPiBpYi5pX21heF9sZW4gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQmlfaW5idWYucmVmaWxsX2Zyb21fY2hhbm5lbFwiXG4gIGVsc2UgKFxuICAgIGxldCByZW1fbGVuID0gaWIuaV9sZW4gLSBpYi5pX3BvcyBpblxuICAgIGlmIHJlbV9sZW4gPCBuIHRoZW5cbiAgICAgIGxldCBzID0gaWIuaV9zIGluXG4gICAgICBCeXRlcy5ibGl0IHMgaWIuaV9wb3MgcyAwIHJlbV9sZW47XG4gICAgICBsZXQgdG9fcmVhZCA9IG4gLSByZW1fbGVuIGluXG4gICAgICBsZXQgcmVhbGx5X3JlYWQgPSBub3RfcmVhbGx5X2lucHV0IGljIHMgcmVtX2xlbiB0b19yZWFkIDAgaW5cbiAgICAgIGliLmlfb2ZmcyA8LSBpYi5pX29mZnMgKyBpYi5pX3BvcztcbiAgICAgIGliLmlfcG9zIDwtIDA7XG4gICAgICBpYi5pX2xlbiA8LSByZW1fbGVuICsgcmVhbGx5X3JlYWRcbiAgKVxuXG5sZXQgZnJvbV9jaGFubmVsID8obGVuID0gNDA5NikgPyhzaHJsZW4gPSAxNikgaWMgPSB7XG4gIGlfcyA9IEJ5dGVzLmNyZWF0ZSBsZW47XG4gIGlfcG9zID0gMDtcbiAgaV9sZW4gPSAwO1xuICBpX29mZnMgPSAwO1xuICBpX21heF9sZW4gPSBsZW47XG4gIGlfcmVmaWxsID0gcmVmaWxsX2Zyb21fY2hhbm5lbCBpYztcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuIiwidHlwZSB0ID0ge1xuICBtdXRhYmxlIG9fcyA6IGJ5dGVzO1xuICBtdXRhYmxlIG9fbWF4X2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX2xlbiA6IGludDtcbiAgbXV0YWJsZSBvX29mZnMgOiBpbnQ7XG4gIG9faW5pdF9sZW4gOiBpbnQ7XG4gIG9fbWFrZV9yb29tIDogKHQgLT4gaW50IC0+IHVuaXQpO1xuICBtdXRhYmxlIG9fc2hhcmVkIDogQmlfc2hhcmUuV3IudGJsO1xuICBvX3NoYXJlZF9pbml0X2xlbiA6IGludDtcbn1cblxubGV0IHJlYWxseV9leHRlbmQgYiBuID1cbiAgbGV0IHNsZW4wID0gYi5vX21heF9sZW4gaW5cbiAgbGV0IHJlcWxlbiA9IGIub19sZW4gKyBuIGluXG4gIGxldCBzbGVuID1cbiAgICBsZXQgeCA9IG1heCByZXFsZW4gKDIgKiBzbGVuMCkgaW5cbiAgICBpZiB4IDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHhcbiAgICBlbHNlXG4gICAgICBpZiBTeXMubWF4X3N0cmluZ19sZW5ndGggPCByZXFsZW4gdGhlblxuXHRpbnZhbGlkX2FyZyBcIkJ1Zi5leHRlbmQ6IHJlYWNoZWQgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXCJcbiAgICAgIGVsc2Vcblx0U3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIHNsZW4gaW5cbiAgQnl0ZXMuYmxpdCBiLm9fcyAwIHMgMCBiLm9fbGVuO1xuICBiLm9fcyA8LSBzO1xuICBiLm9fbWF4X2xlbiA8LSBzbGVuXG5cbmxldCBmbHVzaF90b19vdXRwdXQgYWJzdHJhY3Rfb3V0cHV0IGIgbiA9XG4gIGFic3RyYWN0X291dHB1dCAoQnl0ZXMudG9fc3RyaW5nIGIub19zKSAwIGIub19sZW47XG4gIGIub19vZmZzIDwtIGIub19vZmZzICsgYi5vX2xlbjtcbiAgYi5vX2xlbiA8LSAwO1xuICBpZiBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIHJlYWxseV9leHRlbmQgYiBuXG5cbmxldCBmbHVzaF90b19jaGFubmVsIG9jID0gZmx1c2hfdG9fb3V0cHV0IChvdXRwdXRfc3Vic3RyaW5nIG9jKVxuXG5cbmxldCBjcmVhdGUgPyhtYWtlX3Jvb20gPSByZWFsbHlfZXh0ZW5kKSA/KHNocmxlbiA9IDE2KSBuID0ge1xuICBvX3MgPSBCeXRlcy5jcmVhdGUgbjtcbiAgb19tYXhfbGVuID0gbjtcbiAgb19sZW4gPSAwO1xuICBvX29mZnMgPSAwO1xuICBvX2luaXRfbGVuID0gbjtcbiAgb19tYWtlX3Jvb20gPSBtYWtlX3Jvb207XG4gIG9fc2hhcmVkID0gQmlfc2hhcmUuV3IuY3JlYXRlIHNocmxlbjtcbiAgb19zaGFyZWRfaW5pdF9sZW4gPSBzaHJsZW47XG59XG5cbmxldCBjcmVhdGVfY2hhbm5lbF93cml0ZXIgPyhsZW4gPSA0MDk2KSA/c2hybGVuIG9jID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX2NoYW5uZWwgb2MpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9jaGFubmVsX3dyaXRlciBiID1cbiAgYi5vX21ha2Vfcm9vbSBiIDBcblxubGV0IGNyZWF0ZV9vdXRwdXRfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvdXQgPVxuICBjcmVhdGUgfm1ha2Vfcm9vbTooZmx1c2hfdG9fb3V0cHV0IG91dCNvdXRwdXQpID9zaHJsZW4gbGVuXG5cbmxldCBmbHVzaF9vdXRwdXRfd3JpdGVyID0gZmx1c2hfY2hhbm5lbF93cml0ZXJcblxuXG4oKlxuICBHdWFyYW50ZWUgdGhhdCB0aGUgYnVmZmVyIHN0cmluZyBoYXMgZW5vdWdoIHJvb20gZm9yIG4gYWRkaXRpb25hbCBieXRlcy5cbiopXG5sZXQgZXh0ZW5kIGIgbiA9XG4gIGlmIGIub19sZW4gKyBuID4gYi5vX21heF9sZW4gdGhlblxuICAgIGIub19tYWtlX3Jvb20gYiBuXG5cbmxldCBhbGxvYyBiIG4gPVxuICBleHRlbmQgYiBuO1xuICBsZXQgcG9zID0gYi5vX2xlbiBpblxuICBiLm9fbGVuIDwtIHBvcyArIG47XG4gIHBvc1xuXG5sZXQgYWRkX3N1YiBibGl0IGIgcyBwb3MgbGVuID1cbiAgZXh0ZW5kIGIgbGVuO1xuICBibGl0IHMgcG9zIGIub19zIGIub19sZW4gbGVuO1xuICBiLm9fbGVuIDwtIGIub19sZW4gKyBsZW5cblxubGV0IGFkZF9zdWJzdHJpbmcgPSBhZGRfc3ViIFN0cmluZy5ibGl0XG5sZXQgYWRkX3N1YmJ5dGVzID0gYWRkX3N1YiBCeXRlcy5ibGl0XG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIHMgPVxuICBhZGRfc3ViYnl0ZXMgYiBzIDAgKEJ5dGVzLmxlbmd0aCBzKVxuXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAxIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBwb3MgY1xuXG5sZXQgdW5zYWZlX2FkZF9jaGFyIGIgYyA9XG4gIGxldCBsZW4gPSBiLm9fbGVuIGluXG4gIEJ5dGVzLnNldCBiLm9fcyBsZW4gYztcbiAgYi5vX2xlbiA8LSBsZW4gKyAxXG5cbmxldCBhZGRfY2hhcjIgYiBjMSBjMiA9XG4gIGxldCBwb3MgPSBhbGxvYyBiIDIgaW5cbiAgbGV0IHMgPSBiLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIGMxO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSBjMlxuXG5sZXQgYWRkX2NoYXI0IGIgYzEgYzIgYzMgYzQgPVxuICBsZXQgcG9zID0gYWxsb2MgYiA0IGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzI7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzIpIGMzO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSBjNFxuXG5cblxubGV0IGNsZWFyIGIgPVxuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIEJpX3NoYXJlLldyLmNsZWFyIGIub19zaGFyZWRcblxubGV0IHJlc2V0IGIgPVxuICBpZiBCeXRlcy5sZW5ndGggYi5vX3MgPD4gYi5vX2luaXRfbGVuIHRoZW5cbiAgICBiLm9fcyA8LSBCeXRlcy5jcmVhdGUgYi5vX2luaXRfbGVuO1xuICBiLm9fb2ZmcyA8LSAwO1xuICBiLm9fbGVuIDwtIDA7XG4gIGIub19zaGFyZWQgPC0gQmlfc2hhcmUuV3IuY3JlYXRlIGIub19zaGFyZWRfaW5pdF9sZW5cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIub19zIDAgYi5vX2xlblxuIiwiKCogVmFyaWFibGUtYnl0ZSBlbmNvZGluZyBvZiA4LWJ5dGUgaW50ZWdlcnMgKHN0YXJ0aW5nIGZyb20gMCkuICopXG5cbm9wZW4gUHJpbnRmXG5vcGVuIEJpX291dGJ1Zlxub3BlbiBCaV9pbmJ1ZlxuXG50eXBlIHVpbnQgPSBpbnRcblxuKCogTWF4aW11bSBsZW5ndGggb2YgYSB2aW50IGRlY29kYWJsZSBpbnRvIGFuIE9DYW1sIGludCxcbiAgIG1heGltdW0gdmFsdWUgb2YgdGhlIGhpZ2hlc3QgYnl0ZSBvZiB0aGUgbGFyZ2VzdCB2aW50IHN1cHBvcnRlZCAqKVxubGV0IG1heF92aW50X2J5dGVzLCBtYXhfaGlnaGVzdF9ieXRlID1cbiAgaWYgQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNyA9IDAgdGhlblxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgaW5cbiAgICBsZXQgaCA9IDEgbHNsIDcgLSAxIGluXG4gICAgbSwgaFxuICBlbHNlXG4gICAgbGV0IG0gPSBCaV91dGlsLmludF9zaXplIC8gNyArIDEgaW5cbiAgICBsZXQgaCA9IDEgbHNsIChCaV91dGlsLmludF9zaXplIG1vZCA3KSAtIDEgaW5cbiAgICBtLCBoXG5cbmxldCBjaGVja19oaWdoZXN0X2J5dGUgeCA9XG4gIGlmIHggPiBtYXhfaGlnaGVzdF9ieXRlIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiVmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG5cblxubGV0IHVuc2lnbmVkX29mX3NpZ25lZCBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICAoKlxuICAgICAgMCAtPiAwXG4gICAgICAxIC0+IDJcbiAgICAgIDIgLT4gNFxuICAgICAgMyAtPiA2XG4gICAgKilcbiAgICBpIGxzbCAxXG4gIGVsc2VcbiAgICAoKlxuICAgICAgLTEgLT4gMVxuICAgICAgLTIgLT4gM1xuICAgICAgLTMgLT4gNVxuICAgICopXG4gICAgKCgtMS1pKSBsc2wgMSkgbG9yIDFcblxubGV0IHNpZ25lZF9vZl91bnNpZ25lZCBpID1cbiAgaWYgaSBsYW5kIDEgPSAwIHRoZW4gaSBsc3IgMVxuICBlbHNlIC0xIC0gKGkgbHNyIDEpXG5cbmxldCB3cml0ZV91dmludCBidWYgaSAgPVxuICBCaV9vdXRidWYuZXh0ZW5kIGJ1ZiBtYXhfdmludF9ieXRlcztcblxuICBsZXQgeCA9IHJlZiBpIGluXG4gIHdoaWxlICF4IGxzciA3IDw+IDAgZG9cbiAgICBsZXQgYnl0ZSA9IDB4ODAgbG9yICgheCBsYW5kIDB4N2YpIGluXG4gICAgQmlfb3V0YnVmLnVuc2FmZV9hZGRfY2hhciBidWYgKENoYXIuY2hyIGJ5dGUpO1xuICAgIHggOj0gIXggbHNyIDc7XG4gIGRvbmU7XG4gIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociAheClcblxubGV0IHdyaXRlX3N2aW50IGJ1ZiBpID1cbiAgd3JpdGVfdXZpbnQgYnVmICh1bnNpZ25lZF9vZl9zaWduZWQgaSlcblxuKCogY29udmVuaWVuY2UgKilcbmxldCB1dmludF9vZl91aW50ID9idWYgaSA9XG4gIGxldCBidWZmZXIgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gQmlfb3V0YnVmLmNyZWF0ZSAxMFxuICAgICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBCaV9vdXRidWYuY2xlYXIgYnVmZmVyO1xuICB3cml0ZV91dmludCBidWZmZXIgaTtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgc3ZpbnRfb2ZfaW50ID9idWYgaSA9XG4gIHV2aW50X29mX3VpbnQgP2J1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cblxubGV0IHJlYWRfdXZpbnQgaWIgPVxuICBsZXQgYXZhaWwgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiBtYXhfdmludF9ieXRlcyBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgbGV0IHggPSByZWYgMCBpblxuICAodHJ5XG4gICAgIGZvciBpID0gMCB0byBhdmFpbCAtIDEgZG9cbiAgICAgICBsZXQgYiA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKHBvcytpKSkgaW5cbiAgICAgICB4IDo9ICgoYiBsYW5kIDB4N2YpIGxzbCAoNyppKSkgbG9yICF4O1xuICAgICAgIGlmIGIgPCAweDgwIHRoZW4gKFxuXHQgaWIuaV9wb3MgPC0gcG9zICsgaSArIDE7XG5cdCBpZiBpICsgMSA9IG1heF92aW50X2J5dGVzIHRoZW5cblx0ICAgY2hlY2tfaGlnaGVzdF9ieXRlIGI7XG5cdCByYWlzZSBFeGl0XG4gICAgICAgKVxuICAgICBkb25lO1xuICAgICBCaV91dGlsLmVycm9yIFwiVW50ZXJtaW5hdGVkIHZpbnQgb3IgdmludCBleGNlZWRpbmcgcmFuZ2Ugb2YgT0NhbWwgaW50c1wiXG4gICB3aXRoIEV4aXQgLT4gKClcbiAgKTtcbiAgIXhcblxuXG5sZXQgcmVhZF9zdmludCBpYiA9XG4gIHNpZ25lZF9vZl91bnNpZ25lZCAocmVhZF91dmludCBpYilcblxuKCogY29udmVuaWVuY2UgKilcblxubGV0IGNoZWNrX2VuZF9vZl9pbnB1dCBpYiA9XG4gIGlmIEJpX2luYnVmLnRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiSnVuayBpbnB1dCBhZnRlciBlbmQgb2YgdmludFwiXG5cbmxldCB1aW50X29mX3V2aW50IHMgPVxuICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzIGluXG4gIGxldCB4ID0gcmVhZF91dmludCBpYiBpblxuICBjaGVja19lbmRfb2ZfaW5wdXQgaWI7XG4gIHhcblxubGV0IGludF9vZl9zdmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfc3ZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cblxuKCpcbiAgVGVzdGluZ1xuKilcblxubGV0IHN0cmluZ19vZl9saXN0IGwgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDEwMCBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX3V2aW50IG9iKSBsO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYyByZWFkX2xpc3QgaWIgPVxuICBpZiBpYi5pX3BvcyA8IGliLmlfbGVuIHRoZW5cbiAgICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgICB4IDo6IHJlYWRfbGlzdCBpYlxuICBlbHNlXG4gICAgW11cblxubGV0IGxpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xpc3QgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9saXN0IGwgPVxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBpIC0+XG4gICAgICBwcmludGYgXCJkZWMgJWlcXG5oZXggJXhcXG5iaW4gJXNcXG5cIiBpIGlcblx0KEJpX3V0aWwucHJpbnRfYml0cyAoQmlfdXRpbC5zdHJpbmc4X29mX2ludCBpKSlcbiAgKSBsXG5cbmxldCB0ZXN0ICgpID1cbiAgbGV0IGwgPSBbXG4gICAgMDtcbiAgICAweGZmZmZmZmY7XG4gICAgKDB4MDEwMjAzMDQgbHNsIDMyKSBsb3IgMHgwNTA2MDcwODtcbiAgICBtYXhfaW50O1xuICAgIG1pbl9pbnRcbiAgXSBpblxuICBwcmludGYgXCJJbnB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsO1xuICBsZXQgbCcgPSBsaXN0X29mX3N0cmluZyAoc3RyaW5nX29mX2xpc3QgbCkgaW5cbiAgcHJpbnRmIFwiT3V0cHV0OlxcblwiO1xuICBwcmludF9saXN0IGwnO1xuICBpZiBsID0gbCcgdGhlblxuICAgIHByaW50X2VuZGxpbmUgXCJTVUNDRVNTXCJcbiAgZWxzZVxuICAgIHByaW50X2VuZGxpbmUgXCJGQUlMVVJFXCJcbiIsIm9wZW4gUHJpbnRmXG5cbmxldCBlcnJvciBzID0gZmFpbHdpdGggKFwiQmlfc3RyZWFtOiBcIiBeIHMpXG5cbmxldCBpbnB1dF9pbnQ2NCBpYyA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICAgICAgNjQgLT5cbiAgICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gOCBkb1xuICAgICAgICAgIG4gOj0gKCFuIGxzbCA4KSBsb3IgKGlucHV0X2J5dGUgaWMpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgICAgIGVycm9yIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aFwiO1xuICAgICAgICAhblxuICAgIHwgMzIgLT5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBpZiBpbnB1dF9ieXRlIGljIDw+IDAgdGhlblxuICAgICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNodW5rIGxlbmd0aCBleGNlZWRzIHN1cHBvcnRlZCByYW5nZSBvbiB0aGlzIHBsYXRmb3JtXCI7XG4gICAgICAgICFuXG4gICAgfCBuIC0+XG4gICAgICAgIGVycm9yIChzcHJpbnRmIFwidW5zdXBwb3J0ZWQgd29yZCBzaXplICglaSlcIiBuKVxuXG5sZXQgb3V0cHV0X2ludDY0IG9jIG4gPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciA1NikpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgMzIgLT5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gICAgICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDQgZG9cbiAgICAgICAgICBvdXRwdXRfY2hhciBvYyAoY2hhcl9vZl9pbnQgKCFuIGxzciAyNCkpO1xuICAgICAgICAgIG4gOj0gIW4gbHNsIDhcbiAgICAgICAgZG9uZVxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IHJlYyByZWFkX2NodW5rIG9mX3N0cmluZyBpYyA9XG4gIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgJ1xcMDAxJyAtPlxuICAgICAgICBsZXQgbGVuID0gaW5wdXRfaW50NjQgaWMgaW5cbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgIFwiQ29ycnVwdGVkIHN0cmVhbTogZXhjZXNzaXZlIGNodW5rIGxlbmd0aCAoJWkgYnl0ZXMpXCIgbGVuKTtcbiAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICAgICAgICBTb21lIChvZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKSlcblxuICAgIHwgJ1xcMDAwJyAtPiBOb25lXG5cbiAgICB8IGMgLT4gZXJyb3IgKHNwcmludGYgXCJDb3JydXB0ZWQgc3RyZWFtOiAlQ1wiIGMpXG5cblxubGV0IGZsYXR0ZW4gc3QgPVxuICBsZXQgYSA9IHJlZiBbfCB8XSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlYyBuZXh0IGkgPVxuICAgIGlmICFwb3MgPj0gQXJyYXkubGVuZ3RoICFhIHRoZW4gKFxuICAgICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3Qgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgYScgLT5cbiAgICAgICAgICAgIFN0cmVhbS5qdW5rIHN0O1xuICAgICAgICAgICAgYSA6PSBhJztcbiAgICAgICAgICAgIHBvcyA6PSAwO1xuICAgICAgICAgICAgbmV4dCBpXG4gICAgKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHggPSAoIWEpLighcG9zKSBpblxuICAgICAgaW5jciBwb3M7XG4gICAgICBTb21lIHhcbiAgICApXG4gIGluXG4gIFN0cmVhbS5mcm9tIG5leHRcblxuXG5sZXQgcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljID1cbiAgZmxhdHRlbiAoU3RyZWFtLmZyb20gKGZ1biBpIC0+IHJlYWRfY2h1bmsgb2Zfc3RyaW5nIGljKSlcblxubGV0IHJldl9hcnJheV9vZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+IFt8fF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgICAgICAgICAgaGQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBhLihpKSA8LSBoZDtcbiAgICAgICAgICAgICAgICByIDo9IHRsO1xuICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYVxuXG5sZXQgd3JpdGVfc3RyZWFtID8oY2h1bmtfbGVuID0gMTAyNCkgdG9fc3RyaW5nIG9jIHN0ID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYWNjID0gcmVmIFtdIGluXG4gIGxldCBmbHVzaF9jaHVuayAoKSA9XG4gICAgbGV0IGEgPSByZXZfYXJyYXlfb2ZfbGlzdCAhYWNjIGluXG4gICAgYWNjIDo9IFtdO1xuICAgIG4gOj0gMDtcbiAgICBsZXQgcyA9IHRvX3N0cmluZyBhIGluXG4gICAgb3V0cHV0X2NoYXIgb2MgJ1xcMDAxJztcbiAgICBvdXRwdXRfaW50NjQgb2MgKFN0cmluZy5sZW5ndGggcyk7XG4gICAgb3V0cHV0X3N0cmluZyBvYyBzXG4gIGluXG4gIFN0cmVhbS5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgaW5jciBuO1xuICAgICAgYWNjIDo9IHggOjogIWFjYztcbiAgICAgIGlmICFuID49IGNodW5rX2xlbiB0aGVuXG4gICAgICAgIGZsdXNoX2NodW5rICgpXG4gICkgc3Q7XG4gIGlmICFuID4gMCB0aGVuXG4gICAgZmx1c2hfY2h1bmsgKCk7XG4gIG91dHB1dF9jaGFyIG9jICdcXDAwMCdcblxuXG5sZXQgdGVzdCBsID1cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBhc3NlcnQgKHggPj0gMCAmJiB4IDw9IDkpKSBsO1xuICBsZXQgdG9fc3RyaW5nIGEgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCAoQXJyYXkudG9fbGlzdCBhKSlcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChmdW4gaSAtPiBpbnRfb2Zfc3RyaW5nIChTdHJpbmcubWFrZSAxIHMuW2ldKSlcbiAgaW5cbiAgbGV0IHN0ID0gU3RyZWFtLm9mX2xpc3QgbCBpblxuICBsZXQgb2MgPSBvcGVuX291dCBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIHdyaXRlX3N0cmVhbSB+Y2h1bmtfbGVuOjIgdG9fc3RyaW5nIG9jIHN0O1xuICBjbG9zZV9vdXQgb2M7XG5cbiAgbGV0IGljID0gb3Blbl9pbiBcInRlc3Qtc3RyZWFtLmRhdFwiIGluXG4gIGxldCBzdCcgPSByZWFkX3N0cmVhbSBvZl9zdHJpbmcgaWMgaW5cbiAgbGV0IGwnID0gcmVmIFtdIGluXG4gIFN0cmVhbS5pdGVyIChmdW4gaSAtPiBsJyA6PSBpIDo6ICFsJykgc3QnO1xuICBjbG9zZV9pbiBpYztcbiAgbCA9IExpc3QucmV2ICFsJ1xuIiwib3BlbiBQcmludGZcblxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSBub2RlX3RhZyA9IGludFxuXG5sZXQgYm9vbF90YWcgPSAwXG5sZXQgaW50OF90YWcgPSAxXG5sZXQgaW50MTZfdGFnID0gMlxubGV0IGludDMyX3RhZyA9IDNcbmxldCBpbnQ2NF90YWcgPSA0XG5sZXQgZmxvYXQzMl90YWcgPSAxMVxubGV0IGZsb2F0NjRfdGFnID0gMTJcbmxldCB1dmludF90YWcgPSAxNlxubGV0IHN2aW50X3RhZyA9IDE3XG5sZXQgc3RyaW5nX3RhZyA9IDE4XG5sZXQgYXJyYXlfdGFnID0gMTlcbmxldCB0dXBsZV90YWcgPSAyMFxubGV0IHJlY29yZF90YWcgPSAyMVxubGV0IG51bV92YXJpYW50X3RhZyA9IDIyXG5sZXQgdmFyaWFudF90YWcgPSAyM1xubGV0IHVuaXRfdGFnID0gMjRcbmxldCB0YWJsZV90YWcgPSAyNVxubGV0IHNoYXJlZF90YWcgPSAyNlxuXG50eXBlIGhhc2ggPSBpbnRcblxuKCpcbiAgRGF0YSB0cmVlLCBmb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiopXG50eXBlIHRyZWUgPVxuICAgIFsgYFVuaXRcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQ4IG9mIGNoYXJcbiAgICB8IGBJbnQxNiBvZiBpbnRcbiAgICB8IGBJbnQzMiBvZiBJbnQzMi50XG4gICAgfCBgSW50NjQgb2YgSW50NjQudFxuICAgIHwgYEZsb2F0MzIgb2YgZmxvYXRcbiAgICB8IGBGbG9hdDY0IG9mIGZsb2F0XG4gICAgfCBgVXZpbnQgb2YgaW50XG4gICAgfCBgU3ZpbnQgb2YgaW50XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFycmF5IG9mIChub2RlX3RhZyAqIHRyZWUgYXJyYXkpIG9wdGlvblxuICAgIHwgYFR1cGxlIG9mIHRyZWUgYXJyYXlcbiAgICB8IGBSZWNvcmQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSkgYXJyYXlcbiAgICB8IGBOdW1fdmFyaWFudCBvZiAoaW50ICogdHJlZSBvcHRpb24pXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nIG9wdGlvbiAqIGhhc2ggKiB0cmVlIG9wdGlvbilcbiAgICB8IGBUYWJsZSBvZlxuXHQoKHN0cmluZyBvcHRpb24gKiBoYXNoICogbm9kZV90YWcpIGFycmF5ICogdHJlZSBhcnJheSBhcnJheSkgb3B0aW9uXG4gICAgfCBgU2hhcmVkIG9mIHRyZWUgXVxuXG4oKiBleHRlbmQgc2lnbiBiaXQgKilcbmxldCBtYWtlX3NpZ25lZCB4ID1cbiAgaWYgeCA+IDB4M0ZGRkZGRkYgdGhlbiB4IC0gKDEgbHNsIDMxKSBlbHNlIHhcblxuKCpcbiAgU2FtZSBmdW5jdGlvbiBhcyB0aGUgb25lIHVzZWQgZm9yIE9DYW1sIHZhcmlhbnRzIGFuZCBvYmplY3QgbWV0aG9kcy5cbiopXG5sZXQgaGFzaF9uYW1lIHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbWFrZV9zaWduZWQgIWFjY3VcblxuXG4oKlxuICBTdHJ1Y3R1cmUgb2YgYSBoYXNodGFnOiA0IGJ5dGVzLFxuXG4gIGFyZ2JpdCA3Yml0cyA4Yml0cyA4Yml0cyA4Yml0c1xuICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgICAgICAgICAgMzEtYml0IGhhc2hcblxuICBhcmdiaXQgPSAxIGlmZiBoYXNodGFnIGlzIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50LCB0aGlzIGlzIGFsd2F5cyAxIGZvclxuICAgICAgICAgICByZWNvcmQgZmllbGRzLlxuXG4qKVxuXG5sZXQgbWFza18zMWJpdCA9XG4gIGxldCBuID0gQmlfdXRpbC5pbnRfc2l6ZSAtIDMxIGluXG4gIGFzc2VydCAobiA+PSAwKTtcbiAgZnVuIHggLT4gKHggbHNsIG4pIGxzciBuXG5cbmxldCB3cml0ZV9oYXNodGFnIG9iIGggaGFzX2FyZyA9XG4gIGxldCBoID0gbWFza18zMWJpdCBoIGluXG4gIGxldCBwb3MgPSBCaV9vdXRidWYuYWxsb2Mgb2IgNCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcyszKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysxKSAoQ2hhci5jaHIgKGggbGFuZCAweGZmKSk7XG4gIGxldCBoID0gaCBsc3IgOCBpblxuICBCeXRlcy51bnNhZmVfc2V0IHMgcG9zIChcbiAgICBDaGFyLmNociAoXG4gICAgICBpZiBoYXNfYXJnIHRoZW4gaCBsb3IgMHg4MFxuICAgICAgZWxzZSBoXG4gICAgKVxuICApXG5cbmxldCBzdHJpbmdfb2ZfaGFzaHRhZyBoIGhhc19hcmcgPVxuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDQgaW5cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmc7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9oYXNodGFnIGliIGNvbnQgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCBoYXNfYXJnID0geDAgPj0gMHg4MCBpblxuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKSBsc2wgMTYgaW5cbiAgbGV0IHgzID0gKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzMpKSBpblxuICBsZXQgaCA9IG1ha2Vfc2lnbmVkICh4MSBsb3IgeDIgbG9yIHgzIGxvciB4NCkgaW5cblxuICBjb250IGliIGggaGFzX2FyZ1xuXG5cbmxldCByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgNCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDAgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyBpKSBpblxuICBpZiB4MCA8IDB4ODAgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBmaWVsZCBoYXNodGFnKVwiO1xuICBsZXQgeDEgPSAoeDAgbGFuZCAweDdmKSBsc2wgMjQgaW5cbiAgbGV0IHgyID0gKENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsyKSkpIGxzbCA4IGluXG4gIGxldCB4NCA9IENoYXIuY29kZSAoQnl0ZXMudW5zYWZlX2dldCBzIChpKzMpKSBpblxuICBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpXG5cblxudHlwZSBpbnQ3ID0gaW50XG5cbmxldCB3cml0ZV9udW10YWcgb2IgaSBoYXNfYXJnID1cbiAgaWYgaSA8IDAgfHwgaSA+IDB4N2YgdGhlblxuICAgIEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCBudW10YWcpXCI7XG4gIGxldCB4ID1cbiAgICBpZiBoYXNfYXJnIHRoZW4gaSBsb3IgMHg4MFxuICAgIGVsc2UgaVxuICBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCByZWFkX251bXRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDEgaW5cbiAgbGV0IHggPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBpYi5pX3MgaSkgaW5cbiAgbGV0IGhhc19hcmcgPSB4ID49IDB4ODAgaW5cbiAgY29udCBpYiAoeCBsYW5kIDB4N2YpIGhhc19hcmdcblxubGV0IG1ha2VfdW5oYXNoIGwgPVxuICBsZXQgdGJsID0gSGFzaHRibC5jcmVhdGUgKDQgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biBzIC0+XG4gICAgICBsZXQgaCA9IGhhc2hfbmFtZSBzIGluXG4gICAgICB0cnlcblx0bWF0Y2ggSGFzaHRibC5maW5kIHRibCBoIHdpdGhcblx0ICAgIFNvbWUgcycgLT5cblx0ICAgICAgaWYgcyA8PiBzJyB0aGVuXG5cdFx0ZmFpbHdpdGggKFxuXHRcdCAgc3ByaW50ZlxuXHRcdCAgICBcIkJpX2lvLm1ha2VfdW5oYXNoOiBcXFxuICAgICAgICAgICAgICAgICAgICAgJVMgYW5kICVTIGhhdmUgdGhlIHNhbWUgaGFzaCwgcGxlYXNlIHBpY2sgYW5vdGhlciBuYW1lXCJcblx0XHQgICAgcyBzJ1xuXHRcdClcblx0ICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG5cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IEhhc2h0YmwuYWRkIHRibCBoIChTb21lIHMpXG4gICkgbDtcbiAgZnVuIGggLT5cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBoXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5cbmxldCB3cml0ZV90YWcgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKCkgPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChpZiB4IHRoZW4gJ1xceDAxJyBlbHNlICdcXHgwMCcpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeCBsYW5kIDB4ZmYpKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeCA9XG4gIGxldCBoaWdoID0gSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoaGlnaCBsYW5kIDB4ZmYpKTtcbiAgbGV0IGxvdyA9IEludDMyLnRvX2ludCB4IGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKChsb3cgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChsb3cgbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIChJbnQzMi5iaXRzX29mX2Zsb2F0IHgpXG5cbmxldCBmbG9hdF9lbmRpYW5uZXNzID0gbGF6eSAoXG4gIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgMS4wKSAwIHdpdGhcbiAgICAgICdcXHgzZicgLT4gYEJpZ1xuICAgIHwgJ1xceDAwJyAtPiBgTGl0dGxlXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDggaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5kb3VibGVfdGFnIDggaW5cbiAgKG1hdGNoIExhenkuZm9yY2UgZmxvYXRfZW5kaWFubmVzcyB3aXRoXG4gICAgICAgYExpdHRsZSAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCAoT2JqLm9iaiB4KSAoNy1qKSAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICAgICB8IGBCaWcgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgaiAoQnl0ZXMudW5zYWZlX2dldCBzIChpK2opKVxuXHQgZG9uZVxuICApO1xuICAoT2JqLm9iaiB4IDogZmxvYXQpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHggPVxuICBsZXQgaSA9IEJpX291dGJ1Zi5hbGxvYyBvYiA4IGluXG4gIGxldCBzID0gb2Iub19zIGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgcyAoaStqKSAoU3RyaW5nLnVuc2FmZV9nZXQgKE9iai5tYWdpYyB4KSAoNy1qKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgailcblx0IGRvbmVcbiAgKVxuXG4oKlxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICBsZXQgeDQgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCA0OCkgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbHNyIDgpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDQgbGFuZCAweGZmKSk7XG4gIGxldCB4MyA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDMyKSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDMgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MyBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgyID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMTYpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKCh4MiBsc3IgOCkgbGFuZCAweGZmKSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHgyIGxhbmQgMHhmZikpO1xuICBsZXQgeDEgPSBJbnQ2NC50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDEgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MSBsYW5kIDB4ZmYpKVxuKilcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIChJbnQ2NC5mbG9hdF9vZl9iaXRzIHgpXG5cblxubGV0IHNhZmV0eV90ZXN0ICgpID1cbiAgbGV0IHMgPSBcIlxceDNmXFx4ZjBcXHgwNlxceDA1XFx4MDRcXHgwM1xceDAyXFx4MDFcIiBpblxuICBsZXQgeCA9IDEuMDAxNDY5NjI3MDY2NTEyODggaW5cbiAgbGV0IHkgPSByZWFkX3VudGFnZ2VkX2Zsb2F0NjQgKEJpX2luYnVmLmZyb21fc3RyaW5nIHMpIGluXG4gIGlmIHggPD4geSB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlO1xuICBsZXQgb2IgPSBCaV9vdXRidWYuY3JlYXRlIDggaW5cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4O1xuICBpZiBCaV9vdXRidWYuY29udGVudHMgb2IgPD4gcyB0aGVuXG4gICAgYXNzZXJ0IGZhbHNlXG5cblxuXG5sZXQgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHMgPVxuICBCaV92aW50LndyaXRlX3V2aW50IG9iIChTdHJpbmcubGVuZ3RoIHMpO1xuICBCaV9vdXRidWYuYWRkX3N0cmluZyBvYiBzXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQud3JpdGVfdXZpbnRcbmxldCB3cml0ZV91bnRhZ2dlZF9zdmludCA9IEJpX3ZpbnQud3JpdGVfc3ZpbnRcblxubGV0IHdyaXRlX3VuaXQgb2IgKCkgPVxuICB3cml0ZV90YWcgb2IgdW5pdF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3VuaXQgb2IgKClcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBib29sX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfYm9vbCBvYiB4XG5cbmxldCB3cml0ZV9jaGFyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50OF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2NoYXIgb2IgeFxuXG5sZXQgd3JpdGVfaW50OCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ4IG9iIHhcblxubGV0IHdyaXRlX2ludDE2IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbmxldCB3cml0ZV9pbnQzMiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxubGV0IHdyaXRlX2Zsb2F0MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHggPVxuICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHhcblxubGV0IHdyaXRlX3V2aW50IG9iIHggPVxuICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91dmludCBvYiB4XG5cbmxldCB3cml0ZV9zdmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfc3ZpbnQgb2IgeFxuXG5cblxuXG5sZXQgcmVjIHdyaXRlX3Qgb2IgdGFnZ2VkICh4IDogdHJlZSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBVbml0IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbiAgICB8IGBCb29sIHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG4gICAgfCBgSW50OCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxuICAgIHwgYEludDE2IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50MTZfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQxNiBvYiB4XG5cbiAgICB8IGBJbnQzMiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MzIgb2IgeFxuXG4gICAgfCBgSW50NjQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDY0IG9iIHhcblxuICAgIHwgYEZsb2F0MzIgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBmbG9hdDMyX3RhZztcblx0d3JpdGVfdW50YWdnZWRfZmxvYXQzMiBvYiB4XG5cbiAgICB8IGBGbG9hdDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQ2NF90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeFxuXG4gICAgfCBgVXZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1dmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgeFxuXG4gICAgfCBgU3ZpbnQgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG5cdEJpX3ZpbnQud3JpdGVfc3ZpbnQgb2IgeFxuXG4gICAgfCBgU3RyaW5nIHMgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3RyaW5nX3RhZztcblx0d3JpdGVfdW50YWdnZWRfc3RyaW5nIG9iIHNcblxuICAgIHwgYEFycmF5IG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgYXJyYXlfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChub2RlX3RhZywgYSkgLT5cblx0ICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBsZW47XG5cdCAgICAgICBpZiBsZW4gPiAwIHRoZW4gKFxuXHRcdCB3cml0ZV90YWcgb2Igbm9kZV90YWc7XG5cdFx0IEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgZmFsc2UpIGFcblx0ICAgICAgIClcblx0KVxuXG4gICAgfCBgVHVwbGUgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB0dXBsZV90YWc7XG5cdEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgKEFycmF5Lmxlbmd0aCBhKTtcblx0QXJyYXkuaXRlciAod3JpdGVfdCBvYiB0cnVlKSBhXG5cbiAgICB8IGBSZWNvcmQgYSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiByZWNvcmRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG4gICAgICAgIEFycmF5Lml0ZXIgKHdyaXRlX2ZpZWxkIG9iKSBhXG5cbiAgICB8IGBOdW1fdmFyaWFudCAoaSwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgbnVtX3ZhcmlhbnRfdGFnO1xuXHR3cml0ZV9udW10YWcgb2IgaSAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBWYXJpYW50IChvLCBoLCB4KSAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB2YXJpYW50X3RhZztcblx0d3JpdGVfaGFzaHRhZyBvYiBoICh4IDw+IE5vbmUpO1xuXHQobWF0Y2ggeCB3aXRoXG5cdCAgICAgTm9uZSAtPiAoKVxuXHQgICB8IFNvbWUgdiAtPiB3cml0ZV90IG9iIHRydWUgdilcblxuICAgIHwgYFRhYmxlIG8gLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdGFibGVfdGFnO1xuXHQobWF0Y2ggbyB3aXRoXG5cdCAgICAgTm9uZSAtPiBCaV92aW50LndyaXRlX3V2aW50IG9iIDBcblx0ICAgfCBTb21lIChmaWVsZHMsIGEpIC0+XG5cdCAgICAgICBsZXQgcm93X251bSA9IEFycmF5Lmxlbmd0aCBhIGluXG5cdCAgICAgICBCaV92aW50LndyaXRlX3V2aW50IG9iIHJvd19udW07XG5cdCAgICAgICBpZiByb3dfbnVtID4gMCB0aGVuXG5cdFx0IGxldCBjb2xfbnVtID0gQXJyYXkubGVuZ3RoIGZpZWxkcyBpblxuXHRcdCBCaV92aW50LndyaXRlX3V2aW50IG9iIGNvbF9udW07XG5cdFx0IEFycmF5Lml0ZXIgKFxuXHRcdCAgIGZ1biAobmFtZSwgaCwgdGFnKSAtPlxuXHRcdCAgICAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG5cdFx0ICAgICB3cml0ZV90YWcgb2IgdGFnXG5cdFx0ICkgZmllbGRzO1xuXHRcdCBpZiByb3dfbnVtID4gMCB0aGVuIChcblx0XHQgICBmb3IgaSA9IDAgdG8gcm93X251bSAtIDEgZG9cblx0XHQgICAgIGxldCBhaSA9IGEuKGkpIGluXG5cdFx0ICAgICBpZiBBcnJheS5sZW5ndGggYWkgPD4gY29sX251bSB0aGVuXG5cdFx0ICAgICAgIGludmFsaWRfYXJnIFwiQmlfaW8ud3JpdGVfdDogTWFsZm9ybWVkIGBUYWJsZVwiO1xuXHRcdCAgICAgZm9yIGogPSAwIHRvIGNvbF9udW0gLSAxIGRvXG5cdFx0ICAgICAgIHdyaXRlX3Qgb2IgZmFsc2UgYWkuKGopXG5cdFx0ICAgICBkb25lXG5cdFx0ICAgZG9uZVxuXHRcdCApXG5cdClcblxuICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgIGlmIHRhZ2dlZCB0aGVuXG4gICAgICAgICAgd3JpdGVfdGFnIG9iIHNoYXJlZF90YWc7XG4gICAgICAgIGxldCBvZmZzZXQgPVxuICAgICAgICAgIEJpX3NoYXJlLldyLnB1dCBvYi5vX3NoYXJlZFxuICAgICAgICAgICAgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChvYi5vX29mZnMgKyBvYi5vX2xlbikgaW5cbiAgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiBvZmZzZXQ7XG4gICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmFuZCB3cml0ZV9maWVsZCBvYiAocywgaCwgeCkgPVxuICB3cml0ZV9oYXNodGFnIG9iIGggdHJ1ZTtcbiAgd3JpdGVfdCBvYiB0cnVlIHhcblxubGV0IHdyaXRlX3RyZWUgb2IgeCA9XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCBzdHJpbmdfb2ZfdHJlZSB4ID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAwIGluXG4gIHdyaXRlX3RyZWUgb2IgeDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCB0YWdfb2ZfdHJlZSAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPiB1bml0X3RhZ1xuICAgIHwgYEJvb2wgXyAtPiBib29sX3RhZ1xuICAgIHwgYEludDggXyAtPiBpbnQ4X3RhZ1xuICAgIHwgYEludDE2IF8gLT4gaW50MTZfdGFnXG4gICAgfCBgSW50MzIgXyAtPiBpbnQzMl90YWdcbiAgICB8IGBJbnQ2NCBfIC0+IGludDY0X3RhZ1xuICAgIHwgYEZsb2F0MzIgXyAtPiBmbG9hdDMyX3RhZ1xuICAgIHwgYEZsb2F0NjQgXyAtPiBmbG9hdDY0X3RhZ1xuICAgIHwgYFV2aW50IF8gLT4gdXZpbnRfdGFnXG4gICAgfCBgU3ZpbnQgXyAtPiBzdmludF90YWdcbiAgICB8IGBTdHJpbmcgXyAtPiBzdHJpbmdfdGFnXG4gICAgfCBgQXJyYXkgXyAtPiBhcnJheV90YWdcbiAgICB8IGBUdXBsZSBfIC0+IHR1cGxlX3RhZ1xuICAgIHwgYFJlY29yZCBfIC0+IHJlY29yZF90YWdcbiAgICB8IGBOdW1fdmFyaWFudCBfIC0+IG51bV92YXJpYW50X3RhZ1xuICAgIHwgYFZhcmlhbnQgXyAtPiB2YXJpYW50X3RhZ1xuICAgIHwgYFRhYmxlIF8gLT4gdGFibGVfdGFnXG4gICAgfCBgU2hhcmVkIF8gLT4gc2hhcmVkX3RhZ1xuXG5cbmxldCByZWFkX3RhZyBpYiA9XG4gIENoYXIuY29kZSAoQmlfaW5idWYucmVhZF9jaGFyIGliKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF91bml0IGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gKClcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhICh1bml0IHZhbHVlKVwiXG5cbmxldCByZWFkX3VudGFnZ2VkX2Jvb2wgaWIgPVxuICBtYXRjaCBCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIgd2l0aFxuICAgICAgJ1xceDAwJyAtPiBmYWxzZVxuICAgIHwgJ1xceDAxJyAtPiB0cnVlXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoYm9vbCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9jaGFyIGliID0gQmlfaW5idWYucmVhZF9jaGFyIGliXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDggaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfaW50MTYgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgMiBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICAoKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkpIGxzbCA4KSBsb3IgKENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgKGkrMSkpKVxuXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDMyIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IGdldF9jb2RlIHMgaSA9IENoYXIuY29kZSAoQnl0ZXMuZ2V0IHMgaSkgaW5cbiAgbGV0IHgxID1cbiAgICBJbnQzMi5vZl9pbnQgKCgoZ2V0X2NvZGUgcyAoaSAgKSkgbHNsIDgpIGxvciAoZ2V0X2NvZGUgcyAoaSsxKSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkrMikpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMykpKSBpblxuICBJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCB4MSAxNikgeDJcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYiA9XG4gIEludDMyLmZsb2F0X29mX2JpdHMgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbigqXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4MSA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpICBdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSsxXSkpIGluXG4gIGxldCB4MiA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzJdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSszXSkpIGluXG4gIGxldCB4MyA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzRdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs1XSkpIGluXG4gIGxldCB4NCA9XG4gICAgSW50NjQub2ZfaW50ICgoKENoYXIuY29kZSBzLltpKzZdKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgcy5baSs3XSkpIGluXG4gIEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgxIDQ4KVxuICAgIChJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MiAzMilcbiAgICAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDMgMTYpIHg0KSlcbiopXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDY0IGliID1cbiAgSW50NjQuYml0c19vZl9mbG9hdCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5cblxubGV0IHJlYWRfdW50YWdnZWRfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgbGV0IHJlbSA9IHJlZiBsZW4gaW5cbiAgd2hpbGUgIXJlbSA+IDAgZG9cbiAgICBsZXQgYnl0ZXNfcmVhZCA9IEJpX2luYnVmLnRyeV9wcmVyZWFkIGliICFyZW0gaW5cbiAgICBpZiBieXRlc19yZWFkID0gMCB0aGVuXG4gICAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKHN0cmluZylcIlxuICAgIGVsc2UgKFxuICAgICAgQnl0ZXMuYmxpdCBpYi5pX3MgaWIuaV9wb3Mgc3RyICFwb3MgYnl0ZXNfcmVhZDtcbiAgICAgIGliLmlfcG9zIDwtIGliLmlfcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHBvcyA6PSAhcG9zICsgYnl0ZXNfcmVhZDtcbiAgICAgIHJlbSA6PSAhcmVtIC0gYnl0ZXNfcmVhZFxuICAgIClcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHN0clxuXG5sZXQgcmVhZF91bnRhZ2dlZF91dmludCA9IEJpX3ZpbnQucmVhZF91dmludFxubGV0IHJlYWRfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LnJlYWRfc3ZpbnRcblxubGV0IHJlYWRfdW5pdCBpYiA9IHJlYWRfdW50YWdnZWRfdW5pdCBpYjsgYFVuaXRcblxubGV0IHJlYWRfYm9vbCBpYiA9IGBCb29sIChyZWFkX3VudGFnZ2VkX2Jvb2wgaWIpXG5cbmxldCByZWFkX2ludDggaWIgPSBgSW50OCAocmVhZF91bnRhZ2dlZF9jaGFyIGliKVxuXG5sZXQgcmVhZF9pbnQxNiBpYiA9IGBJbnQxNiAocmVhZF91bnRhZ2dlZF9pbnQxNiBpYilcblxubGV0IHJlYWRfaW50MzIgaWIgPSBgSW50MzIgKHJlYWRfdW50YWdnZWRfaW50MzIgaWIpXG5cbmxldCByZWFkX2ludDY0IGliID0gYEludDY0IChyZWFkX3VudGFnZ2VkX2ludDY0IGliKVxuXG5sZXQgcmVhZF9mbG9hdDMyIGliID1cbiAgYEZsb2F0MzIgKHJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYilcblxubGV0IHJlYWRfZmxvYXQ2NCBpYiA9XG4gIGBGbG9hdDY0IChyZWFkX3VudGFnZ2VkX2Zsb2F0NjQgaWIpXG5cbmxldCByZWFkX3V2aW50IGliID0gYFV2aW50IChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHJlYWRfc3ZpbnQgaWIgPSBgU3ZpbnQgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCByZWFkX3N0cmluZyBpYiA9IGBTdHJpbmcgKHJlYWRfdW50YWdnZWRfc3RyaW5nIGliKVxuXG5sZXQgcHJpbnQgcyA9IHByaW50X3N0cmluZyBzOyBwcmludF9uZXdsaW5lICgpXG5cbmxldCByZWFkX3RyZWUgPyh1bmhhc2ggPSBtYWtlX3VuaGFzaCBbXSkgaWIgOiB0cmVlID1cblxuICBsZXQgcmVjIHJlYWRfYXJyYXkgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBsZW4gPSAwIHRoZW4gYEFycmF5IE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgdGFnID0gcmVhZF90YWcgaWIgaW5cbiAgICAgIGxldCByZWFkID0gcmVhZGVyX29mX3RhZyB0YWcgaW5cbiAgICAgIGBBcnJheSAoU29tZSAodGFnLCBBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZCBpYikpKVxuXG4gIGFuZCByZWFkX3R1cGxlIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFR1cGxlIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF90cmVlIGliKSlcblxuICBhbmQgcmVhZF9maWVsZCBpYiA9XG4gICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cbiAgICBsZXQgbmFtZSA9IHVuaGFzaCBoIGluXG4gICAgbGV0IHggPSByZWFkX3RyZWUgaWIgaW5cbiAgICAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF9yZWNvcmQgaWIgPVxuICAgIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBgUmVjb3JkIChBcnJheS5pbml0IGxlbiAoZnVuIF8gLT4gcmVhZF9maWVsZCBpYikpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBOdW1fdmFyaWFudCAoaSwgeClcblxuICBhbmQgcmVhZF9udW1fdmFyaWFudCBpYiA9XG4gICAgcmVhZF9udW10YWcgaWIgcmVhZF9udW1fdmFyaWFudF9jb250XG5cbiAgYW5kIHJlYWRfdmFyaWFudF9jb250IGliIGggaGFzX2FyZyA9XG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID1cbiAgICAgIGlmIGhhc19hcmcgdGhlblxuXHRTb21lIChyZWFkX3RyZWUgaWIpXG4gICAgICBlbHNlXG5cdE5vbmVcbiAgICBpblxuICAgIGBWYXJpYW50IChuYW1lLCBoLCB4KVxuXG4gIGFuZCByZWFkX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfaGFzaHRhZyBpYiByZWFkX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3RhYmxlIGliID1cbiAgICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGlmIHJvd19udW0gPSAwIHRoZW5cbiAgICAgIGBUYWJsZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IGNvbF9udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICAgIGxldCBmaWVsZHMgPVxuXHRBcnJheS5pbml0IGNvbF9udW0gKFxuXHQgIGZ1biBfIC0+XG5cdCAgICBsZXQgaCA9IHJlYWRfZmllbGRfaGFzaHRhZyBpYiBpblxuXHQgICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuXHQgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG5cdCAgICAobmFtZSwgaCwgdGFnKVxuXHQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYWRlcnMgPVxuXHRBcnJheS5tYXAgKGZ1biAobmFtZSwgaCwgdGFnKSAtPiByZWFkZXJfb2ZfdGFnIHRhZykgZmllbGRzIGluXG4gICAgICBsZXQgYSA9XG5cdEFycmF5LmluaXQgcm93X251bVxuXHQgIChmdW4gXyAtPlxuXHQgICAgIEFycmF5LmluaXQgY29sX251bSAoZnVuIGogLT4gcmVhZGVycy4oaikgaWIpKVxuICAgICAgaW5cbiAgICAgIGBUYWJsZSAoU29tZSAoZmllbGRzLCBhKSlcblxuICBhbmQgcmVhZF9zaGFyZWQgaWIgPVxuICAgIGxldCBwb3MgPSBpYi5pX29mZnMgKyBpYi5pX3BvcyBpblxuICAgIGxldCBvZmZzZXQgPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgIGxldCByZWMgciA9IGBTaGFyZWQgciBpblxuICAgICAgQmlfc2hhcmUuUmQucHV0IGliLmlfc2hhcmVkXG4gICAgICAgIChwb3MsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIChPYmoucmVwciByKTtcbiAgICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciByKSAxIChPYmoucmVwciB4KTtcbiAgICAgIHJcbiAgICBlbHNlXG4gICAgICBPYmoub2JqIChCaV9zaGFyZS5SZC5nZXQgaWIuaV9zaGFyZWRcbiAgICAgICAgICAgICAgICAgKHBvcyAtIG9mZnNldCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkpXG5cbiAgYW5kIHJlYWRlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgICAgMCAoKiBib29sICopIC0+IHJlYWRfYm9vbFxuICAgIHwgMSAoKiBpbnQ4ICopIC0+IHJlYWRfaW50OFxuICAgIHwgMiAoKiBpbnQxNiAqKSAtPiByZWFkX2ludDE2XG4gICAgfCAzICgqIGludDMyICopIC0+IHJlYWRfaW50MzJcbiAgICB8IDQgKCogaW50NjQgKikgLT4gcmVhZF9pbnQ2NFxuICAgIHwgMTEgKCogZmxvYXQzMiAqKSAtPiByZWFkX2Zsb2F0MzJcbiAgICB8IDEyICgqIGZsb2F0NjQgKikgLT4gcmVhZF9mbG9hdDY0XG4gICAgfCAxNiAoKiB1dmludCAqKSAtPiByZWFkX3V2aW50XG4gICAgfCAxNyAoKiBzdmludCAqKSAtPiByZWFkX3N2aW50XG4gICAgfCAxOCAoKiBzdHJpbmcgKikgLT4gcmVhZF9zdHJpbmdcbiAgICB8IDE5ICgqIGFycmF5ICopIC0+IHJlYWRfYXJyYXlcbiAgICB8IDIwICgqIHR1cGxlICopIC0+IHJlYWRfdHVwbGVcbiAgICB8IDIxICgqIHJlY29yZCAqKSAtPiByZWFkX3JlY29yZFxuICAgIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gcmVhZF9udW1fdmFyaWFudFxuICAgIHwgMjMgKCogdmFyaWFudCAqKSAtPiByZWFkX3ZhcmlhbnRcbiAgICB8IDI0ICgqIHVuaXQgKikgLT4gcmVhZF91bml0XG4gICAgfCAyNSAoKiB0YWJsZSAqKSAtPiByZWFkX3RhYmxlXG4gICAgfCAyNiAoKiBzaGFyZWQgKikgLT4gcmVhZF9zaGFyZWRcbiAgICB8IF8gLT4gQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHRhZylcIlxuXG4gIGFuZCByZWFkX3RyZWUgaWIgOiB0cmVlID1cbiAgICByZWFkZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuICBpblxuICByZWFkX3RyZWUgaWJcblxubGV0IHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcyA9IHJlYWRfdHJlZSA/dW5oYXNoIChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5cbmxldCBza2lwX2J5dGVzIGliIG4gPSBpZ25vcmUgKEJpX2luYnVmLnJlYWQgaWIgbilcblxubGV0IHNraXBfdW5pdCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfYm9vbCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50OCBpYiA9IHNraXBfYnl0ZXMgaWIgMVxubGV0IHNraXBfaW50MTYgaWIgPSBza2lwX2J5dGVzIGliIDJcbmxldCBza2lwX2ludDMyIGliID0gc2tpcF9ieXRlcyBpYiA0XG5sZXQgc2tpcF9pbnQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfZmxvYXQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfZmxvYXQ2NCBpYiA9IHNraXBfYnl0ZXMgaWIgOFxubGV0IHNraXBfdXZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfdXZpbnQgaWIpXG5sZXQgc2tpcF9zdmludCBpYiA9IGlnbm9yZSAocmVhZF91bnRhZ2dlZF9zdmludCBpYilcblxubGV0IHNraXBfc3RyaW5nIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBza2lwX2J5dGVzIGliIGxlblxuXG5sZXQgcmVjIHNraXBfYXJyYXkgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgbGV0IHJlYWQgPSBza2lwcGVyX29mX3RhZyB0YWcgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgICByZWFkIGliXG4gICAgZG9uZVxuXG5hbmQgc2tpcF90dXBsZSBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgIHNraXAgaWJcbiAgZG9uZVxuXG5hbmQgc2tpcF9maWVsZCBpYiA9XG4gIGlnbm9yZSAocmVhZF9maWVsZF9oYXNodGFnIGliKTtcbiAgc2tpcCBpYlxuXG5hbmQgc2tpcF9yZWNvcmQgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwX2ZpZWxkIGliXG4gIGRvbmVcblxuYW5kIHNraXBfbnVtX3ZhcmlhbnRfY29udCBpYiBpIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX251bV92YXJpYW50IGliID1cbiAgcmVhZF9udW10YWcgaWIgc2tpcF9udW1fdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICBpZiBoYXNfYXJnIHRoZW5cbiAgICBza2lwIGliXG5cbmFuZCBza2lwX3ZhcmlhbnQgaWIgPVxuICByZWFkX2hhc2h0YWcgaWIgc2tpcF92YXJpYW50X2NvbnRcblxuYW5kIHNraXBfdGFibGUgaWIgPVxuICBsZXQgcm93X251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgKClcbiAgZWxzZVxuICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgbGV0IHJlYWRlcnMgPVxuICAgICAgQXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ZnVuIF8gLT5cblx0ICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG5cdCAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKVxuICAgICAgKVxuICAgIGluXG4gICAgZm9yIGkgPSAxIHRvIHJvd19udW0gZG9cbiAgICAgIGZvciBqID0gMSB0byBjb2xfbnVtIGRvXG5cdHJlYWRlcnMuKGopIGliXG4gICAgICBkb25lXG4gICAgZG9uZVxuXG5hbmQgc2tpcHBlcl9vZl90YWcgPSBmdW5jdGlvblxuICAgIDAgKCogYm9vbCAqKSAtPiBza2lwX2Jvb2xcbiAgfCAxICgqIGludDggKikgLT4gc2tpcF9pbnQ4XG4gIHwgMiAoKiBpbnQxNiAqKSAtPiBza2lwX2ludDE2XG4gIHwgMyAoKiBpbnQzMiAqKSAtPiBza2lwX2ludDMyXG4gIHwgNCAoKiBpbnQ2NCAqKSAtPiBza2lwX2ludDY0XG4gIHwgMTEgKCogZmxvYXQzMiAqKSAtPiBza2lwX2Zsb2F0MzJcbiAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHNraXBfZmxvYXQ2NFxuICB8IDE2ICgqIHV2aW50ICopIC0+IHNraXBfdXZpbnRcbiAgfCAxNyAoKiBzdmludCAqKSAtPiBza2lwX3N2aW50XG4gIHwgMTggKCogc3RyaW5nICopIC0+IHNraXBfc3RyaW5nXG4gIHwgMTkgKCogYXJyYXkgKikgLT4gc2tpcF9hcnJheVxuICB8IDIwICgqIHR1cGxlICopIC0+IHNraXBfdHVwbGVcbiAgfCAyMSAoKiByZWNvcmQgKikgLT4gc2tpcF9yZWNvcmRcbiAgfCAyMiAoKiBudW1fdmFyaWFudCAqKSAtPiBza2lwX251bV92YXJpYW50XG4gIHwgMjMgKCogdmFyaWFudCAqKSAtPiBza2lwX3ZhcmlhbnRcbiAgfCAyNCAoKiB1bml0ICopIC0+IHNraXBfdW5pdFxuICB8IDI1ICgqIHRhYmxlICopIC0+IHNraXBfdGFibGVcbiAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuYW5kIHNraXAgaWIgOiB1bml0ID1cbiAgc2tpcHBlcl9vZl90YWcgKHJlYWRfdGFnIGliKSBpYlxuXG5cbigqIEVxdWl2YWxlbnQgb2YgQXJyYXkubWFwIHRoYXQgZ3VhcmFudGVlcyBhIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbmxldCBhcnJheV9tYXAgZiBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGlmIGxlbiA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gQXJyYXkubWFrZSBsZW4gKGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgKVxuXG5cbm1vZHVsZSBQcCA9XG5zdHJ1Y3RcbiAgb3BlbiBFYXN5X2Zvcm1hdFxuXG4gIGxldCBhcnJheSA9IGxpc3RcbiAgbGV0IHJlY29yZCA9IGxpc3RcbiAgbGV0IHR1cGxlID0geyBsaXN0IHdpdGhcblx0XHQgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSBmYWxzZTtcblx0XHQgIHNwYWNlX2JlZm9yZV9jbG9zaW5nID0gZmFsc2U7XG5cdFx0ICBhbGlnbl9jbG9zaW5nID0gZmFsc2UgfVxuICBsZXQgdmFyaWFudCA9IHsgbGlzdCB3aXRoXG5cdFx0ICAgIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA9IHRydWUgfVxuXG4gIGxldCBtYXAgZiBhID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfbWFwIGYgYSlcblxuICBsZXQgcmVjIGZvcm1hdCBzaGFyZWQgKHggOiB0cmVlKSA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIGBVbml0IC0+IEF0b20gKFwidW5pdFwiLCBhdG9tKVxuICAgICAgfCBgQm9vbCB4IC0+IEF0b20gKChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpLCBhdG9tKVxuICAgICAgfCBgSW50OCB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwMnhcIiAoQ2hhci5jb2RlIHgpLCBhdG9tKVxuICAgICAgfCBgSW50MTYgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDR4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDMyIHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA4bHhcIiB4LCBhdG9tKVxuICAgICAgfCBgSW50NjQgeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDE2THhcIiB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQzMiB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgRmxvYXQ2NCB4IC0+IEF0b20gKHN0cmluZ19vZl9mbG9hdCB4LCBhdG9tKVxuICAgICAgfCBgVXZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdmludCB4IC0+IEF0b20gKHN0cmluZ19vZl9pbnQgeCwgYXRvbSlcbiAgICAgIHwgYFN0cmluZyBzIC0+IEF0b20gKHNwcmludGYgXCIlU1wiIHMsIGF0b20pXG4gICAgICB8IGBBcnJheSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYEFycmF5IChTb21lIChfLCBhKSkgLT5cbiAgICAgICAgICBMaXN0ICgoXCJbXCIsIFwiLFwiLCBcIl1cIiwgYXJyYXkpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBUdXBsZSBhIC0+IExpc3QgKChcIihcIiwgXCIsXCIsIFwiKVwiLCB0dXBsZSksIG1hcCAoZm9ybWF0IHNoYXJlZCkgYSlcbiAgICAgIHwgYFJlY29yZCBhIC0+IExpc3QgKChcIntcIiwgXCIsXCIsIFwifVwiLCByZWNvcmQpLCBtYXAgKGZvcm1hdF9maWVsZCBzaGFyZWQpIGEpXG4gICAgICB8IGBOdW1fdmFyaWFudCAoaSwgbykgLT5cblx0ICBsZXQgc3VmZml4ID1cblx0ICAgIGlmIGkgPSAwIHRoZW4gXCJcIlxuXHQgICAgZWxzZSBzdHJpbmdfb2ZfaW50IGlcblx0ICBpblxuXHQgIChtYXRjaCBvIHdpdGhcblx0ICAgICAgIE5vbmUgLT4gQXRvbSAoXCJOb25lXCIgXiBzdWZmaXgsIGF0b20pXG5cdCAgICAgfCBTb21lIHggLT5cblx0XHQgbGV0IGNvbnMgPSBBdG9tIChcIlNvbWVcIiBeIHN1ZmZpeCwgYXRvbSkgaW5cblx0XHQgTGFiZWwgKChjb25zLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeCkpXG4gICAgICB8IGBWYXJpYW50IChvcHRfbmFtZSwgaCwgbykgLT5cblx0ICBsZXQgbmFtZSA9XG5cdCAgICBtYXRjaCBvcHRfbmFtZSB3aXRoXG5cdFx0Tm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHQgICAgICB8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiPFwiIF4gbmFtZSBeIFwiPlwiLCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IExpc3QgKChcIjxcIiwgXCJcIiwgXCI+XCIsIHR1cGxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgWyBMYWJlbCAoKEF0b20gKG5hbWUgXiBcIjpcIiwgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KSBdKVxuXHQgIClcbiAgICAgIHwgYFRhYmxlIE5vbmUgLT4gQXRvbSAoXCJbXVwiLCBhdG9tKVxuICAgICAgfCBgVGFibGUgKFNvbWUgKGhlYWRlciwgYWEpKSAtPlxuXHQgIGxldCByZWNvcmRfYXJyYXkgPVxuXHQgICAgYEFycmF5IChcblx0ICAgICAgU29tZSAoXG5cdFx0cmVjb3JkX3RhZyxcblx0XHRBcnJheS5tYXAgKFxuXHRcdCAgZnVuIGEgLT5cblx0XHQgICAgYFJlY29yZCAoXG5cdFx0ICAgICAgQXJyYXkubWFwaSAoXG5cdFx0XHRmdW4gaSB4IC0+XG5cdFx0XHQgIGxldCBzLCBoLCBfID0gaGVhZGVyLihpKSBpblxuXHRcdFx0ICAocywgaCwgeClcblx0XHQgICAgICApIGFcblx0XHQgICAgKVxuXHRcdCkgYWFcblx0ICAgICAgKVxuXHQgICAgKSBpblxuXHQgIGZvcm1hdCBzaGFyZWQgcmVjb3JkX2FycmF5XG5cbiAgICAgIHwgYFNoYXJlZCB4IC0+XG4gICAgICAgICAgbGV0IHRibCwgcCA9IHNoYXJlZCBpblxuICAgICAgICAgIGluY3IgcDtcbiAgICAgICAgICBsZXQgcG9zID0gIXAgaW5cbiAgICAgICAgICBsZXQgb2Zmc2V0ID0gQmlfc2hhcmUuV3IucHV0IHRibCAoeCwgQmlfc2hhcmUuZHVtbXlfdHlwZV9pZCkgcG9zIGluXG4gICAgICAgICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICAgICAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCJzaGFyZWQlaSAtPlwiIHBvcywgYXRvbSksIGxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICBmb3JtYXQgc2hhcmVkIHgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXRvbSAoc3ByaW50ZiBcInNoYXJlZCVpXCIgKHBvcyAtIG9mZnNldCksIGF0b20pXG5cbiAgYW5kIGZvcm1hdF9maWVsZCBzaGFyZWQgKG8sIGgsIHgpID1cbiAgICBsZXQgcyA9XG4gICAgICBtYXRjaCBvIHdpdGhcblx0ICBOb25lIC0+IHNwcmludGYgXCIjJTA4bHhcIiAoSW50MzIub2ZfaW50IGgpXG5cdHwgU29tZSBzIC0+IHNwcmludGYgXCIlU1wiIHNcbiAgICBpblxuICAgIExhYmVsICgoQXRvbSAoc3ByaW50ZiBcIiVzOlwiIHMsIGF0b20pLCBsYWJlbCksIGZvcm1hdCBzaGFyZWQgeClcbmVuZFxuXG5sZXQgaW5pdCAoKSA9IChCaV9zaGFyZS5Xci5jcmVhdGUgNTEyLCByZWYgMClcblxubGV0IHZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0cmluZyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgcHJpbnRfdmlld19vZl90cmVlIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fc3Rkb3V0IChQcC5mb3JtYXQgKGluaXQgKCkpIHQpXG5cbmxldCBvdXRwdXRfdmlld19vZl90cmVlIG9jIHQgPVxuICBFYXN5X2Zvcm1hdC5QcmV0dHkudG9fY2hhbm5lbCBvYyAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgdmlldyA/dW5oYXNoIHMgPVxuICB2aWV3X29mX3RyZWUgKHRyZWVfb2Zfc3RyaW5nID91bmhhc2ggcylcblxubGV0IHByaW50X3ZpZXcgP3VuaGFzaCBzID1cbiAgcHJpbnRfdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBvdXRwdXRfdmlldyA/dW5oYXNoIG9jIHMgPVxuICBvdXRwdXRfdmlld19vZl90cmVlIG9jICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG4iLCJvcGVuIFByaW50ZlxuXG4oKlxubGV0IHNwbGl0IHMgPSBTdHIuc3BsaXQgKFN0ci5yZWdleHAgXCIsXCIpIHNcbiopXG5cbmxldCBzcGxpdCBzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgc3RvcCA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBmb3IgaSA9ICFzdG9wIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHMuW2ldID0gJywnIHRoZW4gKFxuICAgICAgbGV0IHN0YXJ0ID0gaSArIDEgaW5cbiAgICAgIGFjYyA6PSBTdHJpbmcuc3ViIHMgc3RhcnQgKCFzdG9wIC0gc3RhcnQpIDo6ICFhY2M7XG4gICAgICBzdG9wIDo9IGlcbiAgICApXG4gIGRvbmU7XG4gIFN0cmluZy5zdWIgcyAwICFzdG9wIDo6ICFhY2NcblxuXG5sZXQgbG9hZF9saW5lcyBhY2N1IHMgPVxuICBsZXQgaWMgPSBvcGVuX2luIHMgaW5cbiAgbGV0IGwgPSByZWYgYWNjdSBpblxuICAodHJ5XG4gICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICBsIDo9IGlucHV0X2xpbmUgaWMgOjogTGlzdC5yZXYgIWxcbiAgICAgZG9uZVxuICAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgICBjbG9zZV9pbiBpY1xuICApO1xuICAhbFxuXG5sZXQgbG9hZCBpYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEwMDAgaW5cbiAgdHJ5XG4gICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaW5wdXRfY2hhciBpYyk7XG4gICAgZG9uZTtcbiAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aCBFbmRfb2ZfZmlsZSAtPlxuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0ICggLy8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG5sZXQgZGVmYXVsdF9kaWN0X3BhdGggKCkgPVxuICB0cnlcbiAgICBtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgIFwiVW5peFwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIldpbjMyXCIgLT4gU29tZSAoU3lzLmdldGVudiBcIkhPTUVQQVRIXCIgLy8gXCJfYmR1bXAtZGljdFwiKVxuICAgICAgfCBcIkN5Z3dpblwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FXCIgLy8gXCIuYmR1bXAtZGljdFwiKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBOb25lXG5cbmxldCBsb2FkX2RpY3Rpb25hcnkgZGljX2ZpbGUgYWNjdSA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gYWNjdVxuICAgIHwgU29tZSBmbiAtPlxuICAgICAgICBpZiBTeXMuZmlsZV9leGlzdHMgZm4gdGhlblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbG9hZF9saW5lcyBhY2N1IGZuXG4gICAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIkNhbm5vdCBsb2FkIGRpY3Rpb25hcnkgZnJvbSAlUzogJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmbiAoUHJpbnRleGMudG9fc3RyaW5nIGUpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWNjdVxuXG5sZXQgd3JpdGVfdW5pcSBvYyBhID1cbiAgaWYgQXJyYXkubGVuZ3RoIGEgPiAwIHRoZW4gKFxuICAgIGZwcmludGYgb2MgXCIlc1xcblwiIGEuKDApO1xuICAgIGlnbm9yZSAoXG4gICAgICBBcnJheS5mb2xkX2xlZnQgKFxuICAgICAgICBmdW4gbGFzdCB4IC0+XG4gICAgICAgICAgaWYgbGFzdCA8PiB4IHRoZW5cbiAgICAgICAgICAgIGZwcmludGYgb2MgXCIlc1xcblwiIHg7XG4gICAgICAgICAgeFxuICAgICAgKSBhLigwKSBhXG4gICAgKVxuICApXG5cbmxldCBzYXZlX2RpY3Rpb25hcnkgZGljX2ZpbGUgbCA9XG4gIG1hdGNoIGRpY19maWxlIHdpdGhcbiAgICAgIE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgICAgICAgQXJyYXkuc29ydCBTdHJpbmcuY29tcGFyZSBhO1xuICAgICAgICBsZXQgb2MgPSBvcGVuX291dCBmbiBpblxuICAgICAgICBsZXQgZmluYWxseSAoKSA9IGNsb3NlX291dF9ub2VyciBvYyBpblxuICAgICAgICB0cnlcbiAgICAgICAgICB3cml0ZV91bmlxIG9jIGE7XG4gICAgICAgICAgZmluYWxseSAoKVxuICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICBmaW5hbGx5ICgpO1xuICAgICAgICAgIHJhaXNlIGVcbiIsImxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG4iLCJsZXQgdmVyc2lvbiA9IFwiMi4xLjJcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2p1bmsgYnVmIG4gbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMiBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgICAoICgpIClcbiMgOTggXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgMSAtPlxuIyAzIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAoXG4gICAgIGlmIG4gPD0gMCB0aGVuICgpXG4gICAgIGVsc2UgYmVnaW5cbiAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChMZXhpbmcubGV4ZW1lX2NoYXIgbGV4YnVmIDApO1xuICAgICAgIHJlYWRfanVuayBidWYgKG4gLSAxKSBsZXhidWZcbiAgICAgZW5kXG4gICAgIClcbiMgMTA5IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMSBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuIFxubGV0IHJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgbiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICBsZXQganVua19zdGFydF9wb3MgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICByZWFkX2p1bmsgYnVmIG4gbGV4YnVmO1xuICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBqdW5rX3N0YXJ0X3BvcyArIDFcblxuIyAxMjMgXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuIiwiXG50eXBlICdhIG9jYW1sX2FycmF5ID0gJ2EgYXJyYXlcblxubGV0IGlucHV0X2ZpbGUgZm5hbWUgcmVhZCA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gIHRyeVxuICAgIGxldCB4ID0gcmVhZCBpYyBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHhcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZVxuXG5sZXQgb3V0cHV0X2ZpbGUgZm5hbWUgd3JpdGUgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgd3JpdGUgb2M7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbm1vZHVsZSBCaW5pb3UgPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gQmlfaW5idWYudCAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJpX291dGJ1Zi50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZnJvbV9jaGFubmVsID9sZW4gPyhzaHJsZW4gPSAwKSByZWFkIGljID1cbiAgICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIGljIGluXG4gICAgcmVhZCBpYlxuXG4gIGxldCBmcm9tX2ZpbGUgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgZm5hbWUgPVxuICAgIGlucHV0X2ZpbGUgZm5hbWUgKGZ1biBpYyAtPiBmcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIHJlYWQgaWMpXG5cbiAgbGV0IHRvX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGVfY2hhbm5lbF93cml0ZXIgP2xlbiB+c2hybGVuIG9jIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCaV9vdXRidWYuZmx1c2hfY2hhbm5lbF93cml0ZXIgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gfnNocmxlbiB3cml0ZSBvYyB4KVxuZW5kXG5cbm1vZHVsZSBKc29uID1cbnN0cnVjdFxuICB0eXBlICdhIHJlYWRlciA9IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcbiAgdHlwZSAnYSB3cml0ZXIgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbiAgbGV0IGZpbmlzaCBscyBsZXhidWYgPVxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgbHMgbGV4YnVmO1xuICAgIGlmIG5vdCAoWW9qc29uLlNhZmUucmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBZb2pzb24uanNvbl9lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWVcIlxuXG4gIGxldCBmcm9tX2xleGJ1ZiA/KHN0cmVhbSA9IGZhbHNlKSByZWFkIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBZb2pzb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQgbHMgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIGxzIGxleGJ1ZjtcblxuICAgIHhcblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBzID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIGZyb21fbGV4YnVmIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/YnVmIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpYylcblxuICAoKiBzZXFfdW5mb2xkIGlzIFNlcS51bmZvbGQsIG5lZWRlZCBmb3Igb2NhbWwgPCA0LjExICopXG4gIGxldCByZWMgc2VxX3VuZm9sZCBmIHUgKCkgPVxuICAgIG1hdGNoIGYgdSB3aXRoXG4gICAgfCBOb25lIC0+IFNlcS5OaWxcbiAgICB8IFNvbWUgKHgsIHUnKSAtPiBTZXEuQ29ucyAoeCwgc2VxX3VuZm9sZCBmIHUnKVxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBsZXQgZiAoKSA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHYgPSBmcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcmVhZCBscyBsZXhidWYgaW5cbiAgICAgICAgU29tZSAodiwgKCkpXG4gICAgICB3aXRoXG4gICAgICAgICAgWW9qc29uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgTm9uZVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoKiBTZXEudW5mb2xkIGlzIG9ubHkgYXZhaWxhYmxlIGZyb20gb2NhbWwgNC4xMSAqKVxuICAgIHNlcV91bmZvbGQgZiAoKVxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgP2ZpbiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWM7IGZpbiAoKSBpblxuICAgIHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCBsaXN0X2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IHNlcSA9IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWU6c3JjID9sbnVtIHJlYWQgZm5hbWUgPVxuICAgIGxldCBmbmFtZTAgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGZuYW1lXG4gICAgICAgIHwgU29tZSBzIC0+IHNcbiAgICBpblxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luX25vZXJyIGljIGluXG4gICAgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCB0b19zdHJpbmcgPyhsZW4gPSAxMDI0KSB3cml0ZSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhsZW4gPSAxMDI0KSB3cml0ZSBvYyB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuIHdyaXRlIGZuYW1lIHggPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gdG9fY2hhbm5lbCA/bGVuIHdyaXRlIG9jIHgpXG5cbiAgbGV0IHNlcV90b19zdHJpbmcgPyhsZW4gPSAxMDI0KSA/KGxmID0gXCJcXG5cIikgd3JpdGUgc2VxID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIFNlcS5pdGVyIChmdW4geCAtPiB3cml0ZSBvYiB4OyBCdWZmZXIuYWRkX3N0cmluZyBvYiBsZikgc2VxO1xuICAgIEJ1ZmZlci5jb250ZW50cyBvYlxuXG4gIGxldCBzZXFfdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBvYyBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgc2VxID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIHNlcSlcblxuICBsZXQgbGlzdF90b19zdHJpbmcgP2xlbiA/bGYgd3JpdGUgbCA9XG4gICAgc2VxX3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSAoTGlzdC50b19zZXEgbClcblxuICBsZXQgbGlzdF90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIGwgPVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgIGwgPVxuICAgIHNlcV90b19maWxlID9sZW4gP2xmIHdyaXRlIGZuYW1lIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyIGxvYyBuYW1lID1cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiRm91bmQgdW5rbm93biBKU09OIGZpZWxkICVzIHdoaWxlIGV4cGVjdGluZyB0eXBlIGRlZmluZWQgYXQ6ICVzXCJcbiAgICAgICAgbmFtZSBsb2NcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIGxldCB1bmtub3duX2ZpZWxkX2hhbmRsZXIgPSByZWYgcHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlclxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0aW9uID1cbnN0cnVjdFxuICB0eXBlIHBhdGhfZWxlbSA9IFsgYEZpZWxkIG9mIHN0cmluZyB8IGBJbmRleCBvZiBpbnQgXVxuICB0eXBlIHBhdGggPSBwYXRoX2VsZW0gbGlzdFxuXG4gIGxldCBzdHJpbmdfb2ZfcGF0aCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgICAgTGlzdC5yZXZfbWFwIChcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IGBGaWVsZCBzIC0+IFwiLlwiIF4gc1xuICAgICAgICAgIHwgYEluZGV4IG4gLT4gXCJbXCIgXiBzdHJpbmdfb2ZfaW50IG4gXiBcIl1cIlxuICAgICAgKSBsXG4gICAgKVxuXG4gIHR5cGUgZXJyb3IgPSB7XG4gICAgZXJyb3JfcGF0aCA6IHBhdGg7XG4gICAgZXJyb3JfbXNnIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBlcnJvciA/bXNnIHBhdGggPSB7XG4gICAgZXJyb3JfcGF0aCA9IHBhdGg7XG4gICAgZXJyb3JfbXNnID0gbXNnO1xuICB9XG5cbiAgbGV0IHN0cmluZ19vZl9lcnJvciB4ID1cbiAgICBsZXQgcGF0aCA9IHN0cmluZ19vZl9wYXRoIHguZXJyb3JfcGF0aCBpblxuICAgIG1hdGNoIHguZXJyb3JfbXNnIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICAgIFwiVmFsaWRhdGlvbiBlcnJvcjsgcGF0aCA9IDxyb290PlwiIF4gcGF0aFxuICAgICAgfCBTb21lIG1zZyAtPlxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFsaWRhdGlvbiBlcnJvcjogJXM7IHBhdGggPSA8cm9vdD4lc1wiIG1zZyBwYXRoXG5lbmRcbiIsImxldCB2YWxpZGF0ZV9saXN0IGYgcGF0aCBsID1cbiAgbGV0IHJlYyBsb29wIGYgcGF0aCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgc3VicGF0aCA9IGBJbmRleCBpIDo6IHBhdGggaW5cbiAgICAgICAgbWF0Y2ggZiBzdWJwYXRoIHggd2l0aFxuICAgICAgICAgICAgTm9uZSAtPiBsb29wIGYgcGF0aCAoaSsxKSBsXG4gICAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIDAgbFxuXG5sZXQgdmFsaWRhdGVfYXJyYXkgZiBwYXRoIGEgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGEgbGVuIGkgPVxuICAgIGlmIGkgPj0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKGBJbmRleCBpIDo6IHBhdGgpIGEuKGkpIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIGEgbGVuIChpKzEpXG4gICAgICAgIHwgZXJyIC0+IGVyclxuICBpblxuICBsb29wIGYgcGF0aCBhIChBcnJheS5sZW5ndGggYSkgMFxuXG5sZXQgdmFsaWRhdGVfb3B0aW9uIGYgcGF0aCA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGYgcGF0aCB4XG4iLCIoKlxuICBSdW50aW1lIGxpYnJhcnkgZm9yIEpTT05cbiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgJ2Egd3JpdGUgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxuKCpcbiAgRXJyb3IgbWVzc2FnZXNcbiopXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5sZXQgZXJyb3Jfd2l0aF9saW5lIHAgcyA9XG4gIGxldCBzMiA9XG4gICAgbWF0Y2ggcC5Zb2pzb24uTGV4ZXJfc3RhdGUuZm5hbWUgd2l0aFxuICAgICAgU29tZSBmIC0+IHNwcmludGYgXCJGaWxlICVzLCBsaW5lICVpOlxcbiVzXCIgZiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIkxpbmUgJWk6XFxuJXNcIiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgaW5cbiAgcmFpc2UgKEVycm9yIHMyKVxuXG5cbmxldCBsaXN0X2l0ZXIgZiBzZXAgeCBsID1cbiAgbGV0IHJlYyBhdXggZiBzZXAgeCA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICAgIHNlcCB4O1xuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgZiB4IHk7XG4gICAgICAgIGF1eCBmIHNlcCB4IGxcblxubGV0IGFycmF5X2l0ZXIgZiBzZXAgeCBhID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBuID4gMCB0aGVuIChcbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSAwKTtcbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIHNlcCB4O1xuICAgICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lXG4gIClcblxubGV0IHdyaXRlX2NvbW1hIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgd3JpdGVfbGlzdCB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBsaXN0X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hcnJheSB3cml0ZV9pdGVtIG9iIGEgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBhcnJheV9pdGVyIHdyaXRlX2l0ZW0gd3JpdGVfY29tbWEgb2IgYTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfYXNzb2NfbGlzdCB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgbGlzdF9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9hc3NvY19hcnJheSB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgYXJyYXlfaXRlciAoXG4gICAgZnVuIG9iIChrLCB2KSAtPlxuICAgICAgd3JpdGVfa2V5IG9iIGs7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgd3JpdGVfaXRlbSBvYiB2XG4gICkgd3JpdGVfY29tbWEgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjxcXFwiTm9uZVxcXCI+XCJcbiAgfCBTb21lIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJTb21lXFxcIjpcIjtcbiAgICAgIHdyaXRlX2l0ZW0gb2IgeDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPlwiXG5cbmxldCB3cml0ZV9zdGRfb3B0aW9uIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiTm9uZVxcXCJcIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNvbWVcXFwiLFwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdXCJcblxubGV0IHdyaXRlX251bGxhYmxlIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcbiAgfCBTb21lIHggLT4gd3JpdGVfaXRlbSBvYiB4XG5cbmxldCB3cml0ZV9pbnRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ4IG9iIHggPVxuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgKGludF9vZl9jaGFyIHgpXG5cbmxldCB3cml0ZV9pbnQ4X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDggb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDMyIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoSW50MzIudG9fc3RyaW5nIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9pbnQzMiBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQ2NC50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDY0X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDY0IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBtaW5fZmxvYXQgPSBmbG9hdCBtaW5faW50XG5sZXQgbWF4X2Zsb2F0ID0gZmxvYXQgbWF4X2ludFxuXG5sZXQgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHggPVxuICBpZiB4ID49IG1pbl9mbG9hdCAmJiB4IDw9IG1heF9mbG9hdCB0aGVuXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iXG4gICAgICAoaW50X29mX2Zsb2F0IChpZiB4IDwgMC4gdGhlbiB4IC0uIDAuNSBlbHNlIHggKy4gMC41KSlcbiAgZWxzZVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgICAgICBGUF9ub3JtYWxcbiAgICAgIHwgRlBfc3Vibm9ybWFsXG4gICAgICB8IEZQX3plcm8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKFByaW50Zi5zcHJpbnRmIFwiJS4wZlwiIHgpXG4gICAgICB8IEZQX2luZmluaXRlIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgaW5mIG9yIC1pbmYgaW50byBhIEpTT04gaW50XCJcbiAgICAgIHwgRlBfbmFuIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgTmFOIGludG8gYSBKU09OIGludFwiXG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnRfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbnR5cGUgJ2EgcmVhZCA9IFlvanNvbi5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+ICdhXG5cbmxldCByZWFkX251bGwgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udWxsIHAgbGJcblxubGV0IHJlYWRfYm9vbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2Jvb2wgcCBsYlxuXG5sZXQgcmVhZF9pbnQgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQgcCBsYlxuXG5sZXQgcmVhZF9pbnQ4IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50OCBwIGxiXG5cbmxldCByZWFkX2ludDMyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50MzIgcCBsYlxuXG5sZXQgcmVhZF9pbnQ2NCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludDY0IHAgbGJcblxubGV0IHJlYWRfbnVtYmVyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbnVtYmVyIHAgbGJcblxubGV0IHJlYWRfc3RyaW5nIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nIHAgbGJcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYlxuXG5sZXQgcmVhZF9saXN0IHJlYWRfaXRlbSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIGxldCByZWFkIGFjYyBrIHAgbGIgPSAoaywgcmVhZF9pdGVtIHAgbGIpIDo6IGFjYyBpblxuICBZb2pzb24uU2FmZS5yZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkIFtdIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdCByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIExpc3QucmV2IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gW3wgfF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHJlYWRfYXNzb2NfYXJyYXkgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBhcnJheV9vZl9yZXZfbGlzdCAocmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYilcblxubGV0IHJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9jb2xvbiBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGJcblxubGV0IG1pc3NpbmdfdHVwbGVfZmllbGRzIHAgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5sZXQgbWlzc2luZ19maWVsZCBwIGZpZWxkX25hbWUgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkICVzXCIgZmllbGRfbmFtZSlcblxubGV0IG1pc3NpbmdfZmllbGRzIHAgYml0X2ZpZWxkcyBmaWVsZF9uYW1lcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgZm9yIHogPSBBcnJheS5sZW5ndGggZmllbGRfbmFtZXMgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IGkgPSB6IC8gMzEgaW5cbiAgICBsZXQgaiA9IHogbW9kIDMxIGluXG4gICAgaWYgYml0X2ZpZWxkcy4oaSkgbGFuZCAoMSBsc2wgaikgPSAwIHRoZW5cbiAgICAgIGFjYyA6PSBmaWVsZF9uYW1lcy4oeikgOjogIWFjY1xuICBkb25lO1xuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggIWFjYyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAhYWNjKSlcblxubGV0IGludmFsaWRfdmFyaWFudF90YWcgcCBzID1cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50ICVTXCIgcylcblxubGV0IHJlYWRfd2l0aF9hZGFwdGVyIG5vcm1hbGl6ZSByZWFkZXIgcCBsYiA9XG4gIGxldCBhc3QgPSBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYiBpblxuICBsZXQgYXN0JyA9IG5vcm1hbGl6ZSBhc3QgaW5cbiAgbGV0IHMnID0gWW9qc29uLlNhZmUudG9fc3RyaW5nIGFzdCcgaW5cbiAgbGV0IGxiJyA9IExleGluZy5mcm9tX3N0cmluZyBzJyBpblxuICByZWFkZXIgcCBsYidcblxubGV0IHdyaXRlX3dpdGhfYWRhcHRlciByZXN0b3JlIHdyaXRlciBvYiB4ID1cbiAgbGV0IG9iX3RtcCA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICB3cml0ZXIgb2JfdG1wIHg7XG4gIGxldCBzX3RtcCA9IEJ1ZmZlci5jb250ZW50cyBvYl90bXAgaW5cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHNfdG1wIGluXG4gIGxldCBhc3QnID0gcmVzdG9yZSBhc3QgaW5cbiAgWW9qc29uLlNhZmUudG9fYnVmZmVyIG9iIGFzdCdcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuICAgVE9ETzogd2hhdCBhcmUgdGhlc2UgYXNzdW1wdGlvbnMgYW5kIHdoaWNoIGNvbXBvbmVudCBtYWtlcyB0aGVtP1xuKilcbnR5cGUgdCA9IHtcbiAgX2EgOiBpbnQgb3B0aW9uO1xuICBfYiA6IGludDtcbn1cblxuKCogVGhpcyBtdXN0IGJlIGEgdGVzdCBmb3IgdGhlIHR5cGUgY2hlY2tlciBzaW5jZSB0aGUgZnVuY3Rpb24gaXNuJ3QgdXNlZFxuICAgYW55d2hlcmUuICopXG5sZXQgX3Rlc3QgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbigqXG4gIFJ1bnRpbWUgbGlicmFyeVxuKilcblxub3BlbiBQcmludGZcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCByZWFkX2Vycm9yICgpID1cbiAgZXJyb3IgXCJSZWFkIGVycm9yXCJcblxubGV0IHJlYWRfZXJyb3JfYXQgaWIgPVxuICBlcnJvciAoc3ByaW50ZiBcIlJlYWQgZXJyb3IgKCVpKVwiIGliLkJpX2luYnVmLmlfcG9zKVxuXG5sZXQgdGFnX2Vycm9yIHRhZyBzID1cbiAgZXJyb3IgKHNwcmludGYgXCJGb3VuZCB3cm9uZyB0YWcgJWkgZm9yICVzXCIgdGFnIHMpXG5cbmxldCB1bnN1cHBvcnRlZF92YXJpYW50IGggaGFzX2FyZyA9XG4gIGVycm9yIChzcHJpbnRmIFwiVW5zdXBwb3J0ZWQgdmFyaWFudCAoaGFzaD0laSwgYXJnPSVCKVwiIGggaGFzX2FyZylcblxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5cbmxldCBtaXNzaW5nX2ZpZWxkcyBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5cbigqXG4gIFJlYWRlcnNcbiopXG5cbmxldCBnZXRfdW5pdF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8udW5pdF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfdW5pdFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInVuaXRcIlxuXG5sZXQgcmVhZF91bml0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfYm9vbF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYm9vbF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfYm9vbFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImJvb2xcIlxuXG5sZXQgcmVhZF9ib29sIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50X3JlYWRlciB0YWcgPVxuICBtYXRjaCB0YWcgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDhcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludFxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludFxuICAgIHwgXyAtPiB0YWdfZXJyb3IgdGFnIFwiaW50XCJcblxubGV0IHJlYWRfaW50IGliID1cbiAgbWF0Y2ggQmlfaW8ucmVhZF90YWcgaWIgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDggaWJcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludCBpYlxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludCBpYlxuICAgIHwgXyAtPiByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfY2hhcl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50OF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfY2hhclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImNoYXJcIlxuXG5sZXQgcmVhZF9jaGFyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MTZfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDE2XCJcblxubGV0IHJlYWRfaW50MTYgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQzMlwiXG5cbmxldCByZWFkX2ludDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50NjRcIlxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfZmxvYXQzMl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0MzJcIlxuXG5sZXQgZ2V0X2Zsb2F0NjRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJmbG9hdDY0XCJcblxubGV0IGdldF9mbG9hdF9yZWFkZXIgPSBnZXRfZmxvYXQ2NF9yZWFkZXJcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9mbG9hdDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdDY0XG5cbmxldCBnZXRfc3RyaW5nX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZ1xuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInN0cmluZ1wiXG5cbmxldCByZWFkX3N0cmluZyBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uc3RyaW5nX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9zdHJpbmcgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgcmVhZGVyID0gZ2V0X3JlYWRlciAoQmlfaW8ucmVhZF90YWcgaWIpIGluXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAocmVhZGVyIGliKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAocmVhZGVyIGliKVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgcmVhZF9saXN0X3ZhbHVlIGdldF9yZWFkZXIgaWIgPVxuICBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG5cbmxldCBnZXRfYXJyYXlfcmVhZGVyIGdldF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJhcnJheVwiXG5cbmxldCBnZXRfbGlzdF9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIGZ1biBpYiAtPiBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwibGlzdFwiXG5cbmxldCByZWFkX2FycmF5IGdldF9yZWFkZXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2xpc3QgcmVhZCBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXkgcmVhZCBpYilcblxuXG4oKlxuICBXcml0ZXJzXG4qKVxuXG5sZXQgd3JpdGVfdGFnZ2VkIHRhZyB3cml0ZSBidWYgeCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgdGFnO1xuICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBOb25lIC0+IEJpX2lvLndyaXRlX251bXRhZyBidWYgMCBmYWxzZVxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJpX2lvLndyaXRlX251bXRhZyBidWYgMCB0cnVlO1xuICAgICAgICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5udW1fdmFyaWFudF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX29wdGlvbiB3cml0ZSBidWYgeFxuXG5sZXQgYXJyYXlfaW5pdDIgbGVuIHggZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHgpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChmIGkgeClcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2luaXQzIGxlbiB4IHkgZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHggeSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4IHkpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCBhcnJheV9pdGVyMiBmIHggYSA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cbmxldCBhcnJheV9pdGVyMyBmIHggeSBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCB5IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuXG5cbmxldCByZWMgbGlzdF9pdGVyMiBmIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmIHggeTtcbiAgICAgIGxpc3RfaXRlcjIgZiB4IGxcblxubGV0IHJlYyBsaXN0X2l0ZXIzIGYgeCB5ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHogOjogbCAtPlxuICAgICAgZiB4IHkgejtcbiAgICAgIGxpc3RfaXRlcjMgZiB4IHkgbFxuXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBCaV92aW50LndyaXRlX3V2aW50IGJ1ZiBsZW47XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBjZWxsX3RhZztcbiAgICBhcnJheV9pdGVyMiB3cml0ZSBidWYgYVxuICApXG5cbmxldCB3cml0ZV9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGxpc3RfaXRlcjIgd3JpdGUgYnVmIGxcbiAgKVxuXG5sZXQgd3JpdGVfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsXG5cbigqXG4gIHNob3J0Y3V0IGZvciBnZXR0aW5nIHRoZSB0YWcgb2YgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHNpbmNlXG4gIGJpbmlvdSB1c2VzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uXG4gICh1c2VmdWxuZXNzPylcbiopXG5sZXQgZ2V0X3BvbHlfdGFnICh4IDogWz4gXSkgPVxuICBsZXQgciA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLmlzX2Jsb2NrIHIgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgciAwKSA6IGludClcbiAgZWxzZVxuICAgIChPYmoub2JqIHIgOiBpbnQpXG5cbigqIFdlIHdhbnQgYW4gaWRlbnRpdHkgZnVuY3Rpb24gdGhhdCBpcyBub3QgaW5saW5lZCAqKVxudHlwZSBpZGVudGl0eV90ID0geyBtdXRhYmxlIF9pZGVudGl0eSA6ICdhLiAnYSAtPiAnYSB9XG5sZXQgaWRlbnRpdHlfcmVmID0geyBfaWRlbnRpdHkgPSAoZnVuIHggLT4geCkgfVxubGV0IGlkZW50aXR5IHggPSBpZGVudGl0eV9yZWYuX2lkZW50aXR5IHhcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuKilcblxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyB7IF9hID0gTm9uZTsgX2IgPSBBcnJheS5sZW5ndGggU3lzLmFyZ3YgfSB3aXRoIF9hID0gTm9uZSB9XG5cbigqXG4gICBUaGlzIGlzIGEgcnVudGltZSB0ZXN0IHRoYXQgY2hlY2tzIHdoZXRoZXIgb3VyIGFzc3VtcHRpb25zIGFib3V0XG4gICB0aGUgY29tcGlsZXIgc3RpbGwgaG9sZC5cblxuICAgV2UgZ2V0IHRoZSBmb2xsb3dpbmcgd2FybmluZyB3aGVuIHVzaW5nIGFuIE9DYW1sIGNvbXBpbGVyIGJ1aWx0XG4gICB3aXRoIHRoZSBmbGFtYmRhIG9wdGltaXphdGlvbi4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2Qgd2FybmluZ1xuICAgYW5kIHNob3VsZG4ndCBiZSBpZ25vcmVkIGlmIHRoZSBPQ2FtbC9iaW5pb3UgaXMgdG8gYmUgdXNlZC5cbiAgIFRoaXMgd29uJ3QgYWZmZWN0IHRoZSBPQ2FtbC9KU09OIGJhY2tlbmQuXG5cbiAgID4gV2FybmluZyA1OSBbZmxhbWJkYS1hc3NpZ25tZW50LXRvLW5vbi1tdXRhYmxlLXZhbHVlXTogQSBwb3RlbnRpYWxcbiAgID4gYXNzaWdubWVudCB0byBhIG5vbi1tdXRhYmxlIHZhbHVlIHdhcyBkZXRlY3RlZCBpbiB0aGlzIHNvdXJjZSBmaWxlLlxuICAgPiBTdWNoIGFzc2lnbm1lbnRzIG1heSBnZW5lcmF0ZSBpbmNvcnJlY3QgY29kZSB3aGVuIHVzaW5nIEZsYW1iZGEuXG4qKVxubGV0IHRlc3QgKCkgPVxuICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdiA9IFNvbWUgMTcgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMCAoT2JqLnJlcHIgdik7XG4gIGxldCBzYWZlX3IgPSBpZGVudGl0eSByIGluXG4gICgqIHIuX2EgaXMgaW5saW5lZCBieSBvY2FtbG9wdCBhbmQgZXF1YWxzIE5vbmVcbiAgICAgYmVjYXVzZSB0aGUgZmllbGQgaXMgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLiAqKVxuICBhc3NlcnQgKHNhZmVfci5fYSA9IHYpXG5cbmxldCAoKSA9IHRlc3QgKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiIsIigqIEpzb24gYWRhcHRlcnMuIFNlZSAubWxpLiAqKVxuXG5sZXQgbm9ybWFsaXplX3R5cGVfZmllbGQgdHlwZV9maWVsZF9uYW1lICh4IDogWW9qc29uLlNhZmUudCkgOiBZb2pzb24uU2FmZS50ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgKG1hdGNoIExpc3QuYXNzb2MgdHlwZV9maWVsZF9uYW1lIGZpZWxkcyB3aXRoXG4gICAgICAgfCBgU3RyaW5nIHR5cGVfIC0+IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgeCBdXG4gICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IHhcbiAgICAgICB8IF8gLT4geCAoKiBtYWxmb3JtZWQgKilcbiAgICAgIClcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubGV0IHJlc3RvcmVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTGlzdCBbIGBTdHJpbmcgdHlwZV87IGBBc3NvYyBmaWVsZHMgXSAtPlxuICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdHlwZV8pIDo6XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4gKGssIHYpIC0+IGsgPD4gdHlwZV9maWVsZF9uYW1lKSBmaWVsZHNcbiAgICAgIGluXG4gICAgICBgQXNzb2MgZmllbGRzXG4gIHwgYFN0cmluZyB0eXBlXyBhcyB4IC0+IHhcbiAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIG5vcm1hbGl6ZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuICB2YWwgcmVzdG9yZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuZW5kXG5cbm1vZHVsZSBUeXBlX2ZpZWxkID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgbGV0IG5vcm1hbGl6ZSA9IG5vcm1hbGl6ZV90eXBlX2ZpZWxkIFBhcmFtLnR5cGVfZmllbGRfbmFtZVxuXG4gICAgbGV0IHJlc3RvcmUgPSByZXN0b3JlX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X3BhcmFtIDogUGFyYW0gPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9maWVsZF9uYW1lID0gXCJ0eXBlXCJcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlIChEZWZhdWx0X3BhcmFtKVxuZW5kXG5cbm1vZHVsZSBPbmVfZmllbGQgPSBzdHJ1Y3RcbiAgb3BlbiBZb2pzb24uU2FmZVxuXG4gIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYEFzc29jIFtuYW1lLCB2YWx1ZV0gLT4gYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdIC0+IGBBc3NvYyBbbmFtZSwgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5lbmRcblxubW9kdWxlIFR5cGVfYW5kX3ZhbHVlX2ZpZWxkcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBQYXJhbSA9IHNpZ1xuICAgIHZhbCB0eXBlX2ZpZWxkX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsdWVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBrbm93bl90YWdzIDogKHN0cmluZyBsaXN0ICogc3RyaW5nKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFBhcmFtIDogUGFyYW0pIDogUyA9IHN0cnVjdFxuICAgIG9wZW4gWW9qc29uLlNhZmVcbiAgICBvcGVuIFBhcmFtXG5cbiAgICBsZXQgaXNfa25vd25fdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiB0cnVlKVxuICAgICAgfCBTb21lIChsLCBfKSAtPlxuICAgICAgICAgIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4geCAtPiBIYXNodGJsLmFkZCB0YmwgeCAoKSkgbDtcbiAgICAgICAgICBIYXNodGJsLm1lbSB0YmxcblxuICAgIGxldCBpc19jYXRjaF9hbGxfdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiBmYWxzZSlcbiAgICAgIHwgU29tZSAoXywgcykgLT4gKCg9KSBzKVxuXG4gICAgbGV0IGNhdGNoX2FsbF90YWcgKCkgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKF8sIHMpIC0+IHNcblxuICAgIGxldCB3cmFwX3ZhcmlhbnQgdHlwZV8gdmFsdWUgPVxuICAgICAgbGV0IHZhcmlhbnQgPSBgTGlzdCBbYFN0cmluZyB0eXBlXzsgdmFsdWVdIGluXG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICB2YXJpYW50XG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IHZhcmlhbnQgXVxuXG4gICAgbGV0IHdyYXBfZW51bSB0eXBlXyA9XG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICBgU3RyaW5nIHR5cGVfXG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IGBOdWxsIF1cblxuICAgIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgICAgbGV0IG9wZW4gWW9qc29uLlNhZmUuVXRpbCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSBtZW1iZXIgdHlwZV9maWVsZF9uYW1lIHggfD4gdG9fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICgoaywgdikgYXMgZmllbGQpIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGZvdW5kIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgKGssIHdyYXBfdmFyaWFudCB0eXBlXyB2KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmaWVsZFxuICAgICAgICAgICAgKSBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgaWYgIWZvdW5kIHRoZW5cbiAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICh2YWx1ZV9maWVsZF9uYW1lLCB3cmFwX2VudW0gdHlwZV8pIDo6IGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgYEFzc29jIGZpZWxkc1xuICAgICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgICBsZXQgdW53cmFwX3ZhbHVlICh4IDogdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTdHJpbmcgdGFnIC0+ICh0YWcsIE5vbmUpXG4gICAgICB8IGBMaXN0IFtgU3RyaW5nIHRhZzsgdl0gLT5cbiAgICAgICAgICBpZiBpc19jYXRjaF9hbGxfdGFnIHRhZyB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgYE51bGxdIC0+IChyZWFsX3RhZywgTm9uZSlcbiAgICAgICAgICAgIHwgYExpc3QgW2BTdHJpbmcgcmVhbF90YWc7IHJlYWxfdl0gLT4gKHJlYWxfdGFnLCBTb21lIHJlYWxfdilcbiAgICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJNYWxmb3JtZWQganNvbiBmaWVsZCBcIiBeIHZhbHVlX2ZpZWxkX25hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICh0YWcsIFNvbWUgdilcbiAgICAgIHwgbWFsZm9ybWVkIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcblxuICAgIGxldCByZXN0b3JlICh4IDogdCkgOiB0ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAgICAgbGV0IHR5cGVfID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuICgoaywgdGFnZ2VkKSBhcyBmaWVsZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB0YWcsIG9wdF92YWx1ZSA9IHVud3JhcF92YWx1ZSB0YWdnZWQgaW5cbiAgICAgICAgICAgICAgICB0eXBlXyA6PSBTb21lIHRhZztcbiAgICAgICAgICAgICAgICBtYXRjaCBvcHRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodmFsdWVfZmllbGRfbmFtZSwgdikgOjogYWNjXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gdHlwZV9maWVsZF9uYW1lIHRoZW5cbiAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkIDo6IGFjY1xuICAgICAgICAgICAgICApIGZpZWxkcyBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBtYXRjaCAhdHlwZV8gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgICAgICAgICAgfCBTb21lIHRhZyAtPiAodHlwZV9maWVsZF9uYW1lLCBgU3RyaW5nIHRhZykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBBcnJheSB3aXRoIGR5bmFtaWMgc2l6ZVxuXG4gICAgSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXMgKilcblxubW9kdWxlIER5bkFycmF5ID1cbmZ1bmN0b3JcbiAgKEcgOiBHZW5BcnJheS5HZW5BcnJheSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0ge1xuICAgICAgICBtdXRhYmxlIGFycmF5OiAnYSBHLnQ7XG4gICAgICAgIG11dGFibGUgY3VycmVudF9zaXplOiBpbnQ7XG4gICAgICAgIGRlZmF1bHQ6IGludCAtPiAnYTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSBuIGEgPVxuICAgICAgICB7IGFycmF5ID0gRy5jcmVhdGUgbiBhOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gKGZ1biBfIC0+IGEpIH1cblxuICAgICAgbGV0IGxlbmd0aCBhID0gYS5jdXJyZW50X3NpemVcblxuICAgICAgbGV0IGV4cGFuZCB0ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgICAgICBsZXQgbicgPSBtYXggKG4gKyAxKSAobiAqIDIpIGluXG4gICAgICAgIGxldCBhcnJheScgPSBHLmluaXQgbicgdC5kZWZhdWx0IGluXG4gICAgICAgIGxldCAoKSA9IEcuYmxpdCB0LmFycmF5IDAgYXJyYXknIDAgbiBpblxuICAgICAgICBsZXQgKCkgPSB0LmFycmF5IDwtIGFycmF5JyBpblxuICAgICAgICB0LmN1cnJlbnRfc2l6ZSA8LSBuJ1xuXG4gICAgICBsZXQgZ2V0IGEgaSA9XG4gICAgICAgIGlmIGxlbmd0aCBhID4gaSB0aGVuXG4gICAgICAgICAgRy5nZXQgYS5hcnJheSBpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhLmRlZmF1bHQgaVxuXG4gICAgICBsZXQgcmVjIHNldCBhIGkgdiA9XG4gICAgICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbiA+IGkgdGhlblxuICAgICAgICAgIEcuc2V0IGEuYXJyYXkgaSB2XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGV4cGFuZCBhIGluXG4gICAgICAgICAgc2V0IGEgaSB2XG4gICAgICAgIClcblxuICAgICAgbGV0IG1ha2UgPSBjcmVhdGVcbiAgICAgIGxldCBpbml0IG4gZiA9IHsgYXJyYXkgPSBHLmluaXQgbiBmOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gZiB9XG5cbiAgICAgIGxldCBhcHBlbmQgYSBiID1cbiAgICAgICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICAgICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IGMgPSBsYSArIGxiIGluXG4gICAgICAgIGluaXQgYyAoZnVuIHggLT5cbiAgICAgICAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgICAgICAgIGdldCBhIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbiAgICAgIGxldCBjb25jYXQgbCA9XG4gICAgICAgIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNBcnJheS5jb25jYXRcIilcbiAgICAgICAgfCB0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgICAgICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgICAgICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXV4MiAwIGtcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGF1eCAwIGwgaW5cbiAgICAgICAgICBtXG5cbiAgICAgIGxldCBzdWIgYSBzdGFydCBsZW4gPVxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LnN1YlwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG4gICAgICBsZXQgY29weSBhID1cbiAgICAgICAge1xuICAgICAgICAgIGFycmF5ID0gRy5jb3B5IGEuYXJyYXk7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gYS5jdXJyZW50X3NpemU7XG4gICAgICAgICAgZGVmYXVsdCA9IGEuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID0gc2V0IGEgaSB4IGluXG4gICAgICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LmZpbGxcIilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCAwIHN0YXJ0XG5cbiAgICAgIGxldCBvZl9saXN0IH5kZWZhdWx0IGwgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gTGlzdC5sZW5ndGggbDtcbiAgICAgICAgICBhcnJheSA9IEcub2ZfbGlzdCB+ZGVmYXVsdCBsO1xuICAgICAgICAgIGRlZmF1bHQgPSAoZnVuIF8gLT4gZGVmYXVsdCk7XG4gICAgICAgIH1cblxuICAgICAgbGV0IGl0ZXIgZiBhID0gRy5pdGVyIGYgYS5hcnJheVxuICAgICAgbGV0IGl0ZXJpIGYgYSA9IEcuaXRlcmkgZiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9sZWZ0aSBmIGIgYSA9IEcuZm9sZF9sZWZ0aSBmIGIgYS5hcnJheVxuICAgICAgbGV0IGZvbGRfcmlnaHRpIGYgYSBiID0gRy5mb2xkX3JpZ2h0aSBmIGEuYXJyYXkgYlxuICAgICAgbGV0IG1hcCBmIGEgPSBpbml0IChsZW5ndGggYSkgKGZ1biBpIC0+IGYgKGdldCBhIGkpKVxuXG4gICAgICBsZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgICAgICAgaWZcbiAgICAgICAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgICAgICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgIHx8IG9mczIgPCAwXG4gICAgICAgICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgXCJEeW5hbWljQXJyYXkuYmxpdFwiXG4gICAgICAgIGVsc2UgaWYgb2ZzMSA8IG9mczIgdGhlblxuICAgICAgICAgICgqIFRvcC1kb3duIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIEcuc2V0IGEyLmFycmF5IChvZnMyICsgaSkgKEcuZ2V0IGExLmFycmF5IChvZnMxICsgaSkpXG4gICAgICAgICAgZG9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG5cbiAgICAgIGxldCBwcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYSA9IEcucHJpbnQgP3RyYWlsaW5nIHByX3MgcHJfYSBmIGEuYXJyYXlcbiAgICBlbmQgOlxuICAgICAgR2VuQXJyYXkuR2VuQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSBVbmFyeSBvZiAnYSBhcnJheSB8IEJpbmFyeSBvZiAnYSBhcnJheSBhcnJheVxuXG5sZXQgbWF4X2FycmF5X3NpemUxID0gU3lzLm1heF9hcnJheV9sZW5ndGggKCogNSAqKVxuXG5sZXQgbWF4X2FycmF5X3NpemUyID1cbiAgaWYgZmxvYXRfb2ZfaW50IG1heF9hcnJheV9zaXplMSA+IHNxcnQgKGZsb2F0X29mX2ludCBtYXhfaW50KSB0aGVuXG4gICAgbWF4X2ludFxuICBlbHNlXG4gICAgbWF4X2FycmF5X3NpemUxICogbWF4X2FycmF5X3NpemUxXG5cbmxldCBldWNsaWRlZW4gcCBxID0gcCAvIHEsIHAgbW9kIHFcblxubGV0IGNyZWF0ZSBuIGEgPVxuICBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5Lm1ha2UgbiBhKVxuICBlbHNlIGlmIG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiR2VuQXJyYXk6IGFycmF5IHRvbyBsYXJnZVwiXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBsZXQgbCA9IEFycmF5Lm1ha2UgbWF4X2FycmF5X3NpemUxIGEgaW5cbiAgICAgIGxldCBtID1cbiAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgcFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgcCArIDEpXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIG1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbS4oaykgPC0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYTtcbiAgICAgICAgICBhdXggKGsgLSAxKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgaWYgcSA9IDAgdGhlblxuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG0uKHApIDwtIEFycmF5Lm1ha2UgcSBhO1xuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgKVxuICAgIGluXG4gICAgQmluYXJ5IG1cbiAgKVxuXG5sZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lmxlbmd0aCBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHEgPSBBcnJheS5sZW5ndGggKEFycmF5LnVuc2FmZV9nZXQgYSAocCAtIDEpKSBpblxuICAgICgocCAtIDEpICogbWF4X2FycmF5X3NpemUxKSArIHFcblxubGV0IGdldDIgYSBwIHEgPSBBcnJheS51bnNhZmVfZ2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcVxuXG5sZXQgZ2V0IGEgaSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFVuYXJ5IGEgLT4gQXJyYXkudW5zYWZlX2dldCBhIGlcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgZ2V0MiBhIHAgcVxuXG5sZXQgc2V0MiBhIHAgcSBqID0gQXJyYXkudW5zYWZlX3NldCAoQXJyYXkudW5zYWZlX2dldCBhIHApIHEgalxuXG5sZXQgc2V0IGEgaSBqID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfc2V0IGEgaSBqXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBpIG1heF9hcnJheV9zaXplMSBpblxuICAgIHNldDIgYSBwIHEgalxuXG5sZXQgbWFrZSA9IGNyZWF0ZVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB8fCBuID4gbWF4X2FycmF5X3NpemUyIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJCaWdfYXJyYXkuaW5pdCA6IFwiIF4gc3RyaW5nX29mX2ludCBuKSlcbiAgZWxzZSBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5LmluaXQgbiBmKVxuICBlbHNlIChcbiAgICBsZXQgbSA9XG4gICAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBuIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgQXJyYXkuaW5pdFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICBwXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHAgKyAxKVxuICAgICAgICAoZnVuIHAnIC0+XG4gICAgICAgICAgaWYgcCcgPSBwIHRoZW5cbiAgICAgICAgICAgIEFycmF5LmluaXQgcSAoZnVuIHggLT4gZiAoKHAgKiBtYXhfYXJyYXlfc2l6ZTEpICsgeCkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkuaW5pdCBtYXhfYXJyYXlfc2l6ZTEgKGZ1biB4IC0+IGYgKChwJyAqIG1heF9hcnJheV9zaXplMSkgKyB4KSkpXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBhcHBlbmQgYSBiID1cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGMgPSBsYSArIGxiIGluXG4gIGluaXQgYyAoZnVuIHggLT5cbiAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgIGdldCBhIHhcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbmxldCBjb25jYXQgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIC0+XG4gICAgbGV0IGVsdCA9IGdldCB0IDAgaW5cbiAgICBsZXQgYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gc29sIGEgLT4gc29sICsgbGVuZ3RoIGEpIDAgbCBpblxuICAgIGxldCBtID0gY3JlYXRlIGMgZWx0IGluXG4gICAgbGV0IHJlYyBhdXggayBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBtXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MiAwIGtcbiAgICBpblxuICAgIGF1eCAwIGxcblxubGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5zdWJcIilcbiAgZWxzZSBpZiBzaXplID0gMCB0aGVuXG4gICAgVW5hcnkgW3x8XVxuICBlbHNlXG4gICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG5sZXQgY29weSA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBVbmFyeSAoQXJyYXkuY29weSBhKVxuICB8IEJpbmFyeSBiJyAtPlxuICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGInIGluXG4gICAgQmluYXJ5IChBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+IEFycmF5LmNvcHkgYicuKHgpKSlcblxubGV0IGZpbGwgYSBzdGFydCBsZW4geCA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5maWxsXCIpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgYXV4IGsgaSA9XG4gICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgYXV4IChrICsgMSkgKGkgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgc3RhcnRcbiAgKVxuXG5sZXQgb2ZfbGlzdCB+ZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gVW5hcnkgW3x8XVxuICB8IHQgOjogXyBhcyBsIC0+XG4gICAgbGV0IF9pa25vd3doYXRpbWRvaW5nID0gZGVmYXVsdCBpblxuICAgIGxldCBzaXplID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIHNpemUgdCBpblxuICAgIGxldCByZWMgYXV4IGsgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBrIHQgaW5cbiAgICAgICAgYXV4IChrICsgMSkgcVxuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXIgZiBhXG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuaXRlciAoQXJyYXkuaXRlciBmKSBhXG5cbmxldCBpdGVyaSBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXJpIGYgYVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IGcgayBrJyA9IChrICogbWF4X2FycmF5X3NpemUxKSArIGsnIGluXG4gICAgQXJyYXkuaXRlcmkgKGZ1biBrIGEgLT4gQXJyYXkuaXRlcmkgKGZ1biBrJyBhIC0+IGYgKGcgayBrJykgYSkgYSkgYVxuXG5sZXQgZ2VuIGcxIGcyIGgxIGgyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgfCBCaW5hcnkgYSAtPiBoMiAoZzIgKGcxIGYpIGEpXG5cbmxldCBtYXAgZiB4ID0gZ2VuIEFycmF5Lm1hcCBBcnJheS5tYXAgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkgZiB4XG5cbigqbGV0IGdlbmkgZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgICAgIHwgQmluYXJ5IGIgLT5cbiAgaDJcbiAgICAoZzJcbiAgICAgICAoZnVuIHAgYSAtPlxuICAgICAgICBsZXQgbiA9IHAgKiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgICAgZzFcbiAgIChmdW4gcSBhIC0+IGYgKHEgKyBuKSBhKVxuICAgYSlcbiAgICAgICBiKVxuXG4gICAgbGV0IG1hcGkgPVxuICAgICAgZ2VuaSBBcnJheS5tYXBpIEFycmF5Lm1hcGkgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkqKVxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWZcbiAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgIHx8IG9mczIgPCAwXG4gICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgICgqIEJvdHRvbS11cCBjb3B5ICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCBhMiAob2ZzMiArIGkpIChnZXQgYTEgKG9mczEgKyBpKSlcbiAgICBkb25lXG5cbmxldCBmb2xkX2xlZnRpIGYgaW5pdCBhID1cbiAgbGV0IHkgPSByZWYgaW5pdCBpblxuICBsZXQgKCkgPSBpdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBpbml0ID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IGYgYSBpbml0XG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuZm9sZF9yaWdodCAoQXJyYXkuZm9sZF9yaWdodCBmKSBhIGluaXRcblxubGV0IGZvbGRfcmlnaHRpIGYgYSBpbml0ID1cbiAgbGV0IGcgayAoaSwgY3VycmVudCkgPSBpIC0gMSwgZiBpIGsgY3VycmVudCBpblxuICBzbmQgKGZvbGRfcmlnaHQgZyBhIChsZW5ndGggYSAtIDEsIGluaXQpKVxuXG5sZXQgcHJpbnQgPyh0cmFpbGluZyA9IGZ1biBfIC0+ICgpKSBwcl9zZXAgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgbGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBwcl9lbCBpIGYgKGdldCBhIGkpIGluXG4gICAgICBpZiBpIDwgbGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGZsb2F0X2lzX3plcm8geCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICB8IEZQX3plcm8gLT4gdHJ1ZVxuICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IGZhbHNlXG5cbmxldCBwb3cgaSBqID1cbiAgbGV0ICgpID0gYXNzZXJ0ICgwIDw9IGopIGluXG4gIGxldCByZWMgYXV4IGkgayBhY2N1ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBrIGxhbmQgMSA9IDAgdGhlblxuICAgICAgYXV4IGkgKGsgLyAyKSBhY2N1ICogYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCBpIChrIC8gMikgKGkgKiBhY2N1ICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgaiAxXG5cbmxldCBmYWN0IGkgPVxuICBsZXQgcmVjIGF1eCBpIGFjY3UgPVxuICAgIGlmIGkgPCAyIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlXG4gICAgICBhdXggKGkgLSAxKSAoaSAqIGFjY3UpXG4gIGluXG4gIGF1eCBpIDFcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jYyBzdGFydCBjb21iaW5lIGYgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIG9sZCBvY2MgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBoID0gb2xkIC0+IGF1eCB0IG9sZCAoMSArIG9jYykgYWNjdVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGFjY3UgPSBjb21iaW5lIGFjY3UgKGYgb2NjKSBpblxuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCAxIGFjY3VcbiAgICAgIHwgW10gLT4gYWNjdSlcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gMVxuICB8IGggOjogdCAtPiBhdXggdCBoIDEgc3RhcnRcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jY18yIHN0YXJ0IGNvbWJpbmUgZiBsMSBsMiA9XG4gIGxldCBsMSA9IExpc3Quc29ydCBjb21wYXJlIGwxIGluXG4gIGxldCBsMiA9IExpc3Quc29ydCBjb21wYXJlIGwyIGluXG4gIGxldCBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdLCAwXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCByZWMgYXV4IGwgaCBvY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXSwgb2NjXG4gICAgICAgIHwgaCcgOjogdCB3aGVuIGggPSBoJyAtPiBhdXggdCBoIChvY2MgKyAxKVxuICAgICAgICB8IF8gLT4gbCwgb2NjXG4gICAgICBpblxuICAgICAgYXV4IHQgaCAxXG4gIGluXG4gIGxldCByZWMgYXV4IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gaDEgPSBoMiAtPlxuICAgICAgbGV0IGwxLCBvY2MxID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDEgaW5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIG9jYzIpKVxuICAgIHwgaDEgOjogXywgaDIgOjogXyB3aGVuIGNvbXBhcmUgaDEgaDIgPCAwIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgb2NjMSAwKSlcbiAgICB8IF8gOjogXywgXyA6OiBfIC0+XG4gICAgICBsZXQgbDIsIG9jYzIgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMiBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgMCBvY2MyKSlcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gYWNjdVxuICBpblxuICBhdXggbDEgbDIgc3RhcnRcblxubGV0IGRpdjIgeCA9IEludDY0LmRpdiB4IChJbnQ2NC5hZGQgSW50NjQub25lIEludDY0Lm9uZSlcblxubGV0IHBvdzY0IHggbiA9XG4gIGFzc2VydCAobiA+PSBJbnQ2NC56ZXJvKTtcbiAgbGV0IHJlYyBhdXggayBhY2N1ID1cbiAgICBpZiBrID0gSW50NjQuemVybyB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBJbnQ2NC5sb2dhbmQgayBJbnQ2NC5vbmUgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIGFjY3UgYWNjdSlcbiAgICBlbHNlXG4gICAgICBhdXggKGRpdjIgaykgKEludDY0Lm11bCB4IChJbnQ2NC5tdWwgYWNjdSBhY2N1KSlcbiAgaW5cbiAgYXV4IG4gSW50NjQub25lXG5cbmxldCBjYW50b3JfcGFpcmluZyB4IHkgPVxuICBsZXQgcyA9IHggKyB5IGluXG4gIChzdWNjIHMgKiBzIC8gMikgKyB5XG5cbmxldCByZWFkX2lucHV0ICgpID1cbiAgbGV0IHJlYyBwYXJzZSBhY2MgaW5wdXQgPVxuICAgIG1hdGNoIFN0cmVhbS5uZXh0IGlucHV0IHdpdGhcbiAgICB8ICdcXG4nIC0+IGFjY1xuICAgIHwgYyAtPiBwYXJzZSAoUHJpbnRmLnNwcmludGYgXCIlcyVjXCIgYWNjIGMpIGlucHV0XG4gIGluXG4gIHRyeVxuICAgIGxldCB1c2VyX2lucHV0ID0gU3RyZWFtLm9mX2NoYW5uZWwgc3RkaW4gaW5cbiAgICBwYXJzZSBcIlwiIHVzZXJfaW5wdXRcbiAgd2l0aCBTdHJlYW0uRmFpbHVyZSAtPiBpbnZhbGlkX2FyZyBcIlRvb2xzLlJlYWRfaW5wdXQ6IGNhbm5vdCByZWFkIHN0cmVhbVwiXG5cbmxldCBub3RfYW5faWQgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA9IDBcbiAgfHxcbiAgbGV0IGkgPSBpbnRfb2ZfY2hhciBzLlswXSBpblxuICAoaSA8IDY1IHx8IGkgPiAxMjIgfHwgKGkgPiA5MCAmJiAoaSA8PiA5NSB8fCBTdHJpbmcubGVuZ3RoIHMgPSAxKSAmJiBpIDwgOTcpKVxuICB8fFxuICB0cnlcbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIGxldCBpID0gaW50X29mX2NoYXIgYyBpblxuICAgICAgICBpZlxuICAgICAgICAgIGkgPCA0OCB8fCBpID4gMTIyXG4gICAgICAgICAgfHwgKGkgPiA1NyAmJiAoaSA8IDY1IHx8IChpID4gOTAgJiYgaSA8PiA5NSAmJiBpIDwgOTcpKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZClcbiAgICAgIHM7XG4gICAgZmFsc2VcbiAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0X21hcGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCBvID1cbiAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggYSkgKGZ1biBpIC0+XG4gICAgICAgIGxldCB5Jywgb3V0ID0gZiBpICF5IGEuKGkpIGluXG4gICAgICAgIGxldCAoKSA9IHkgOj0geScgaW5cbiAgICAgICAgb3V0KVxuICBpblxuICAheSwgb1xuXG5sZXQgYXJyYXlfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBpIHYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHggOjogbCAtPlxuICAgICAgQXJyYXkudW5zYWZlX3NldCB2IGkgKGYgeCk7XG4gICAgICBmaWxsIGYgKHN1Y2MgaSkgdiBsXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIGxldCBsZW4gPSBzdWNjIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IGFucyA9IEFycmF5Lm1ha2UgbGVuIChmIHgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgMSBhbnMgbCBpblxuICAgICAgYW5zXG5cbmxldCBhcnJheV9yZXZfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIGgnIGluXG4gICAgICBmaWxsIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+IFt8fF1cbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbCBoIGluXG4gICAgbGV0ICgpID0gZmlsbCBvdXQgKGwgLSAyKSB0IGluXG4gICAgb3V0XG5cbmxldCBhcnJheV9yZXZfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIChmIGgnKSBpblxuICAgICAgZmlsbCBmIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW4gZiAtPiBmdW5jdGlvblxuICAgIHwgW10gLT4gW3x8XVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIChmIGgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgb3V0IChsIC0gMikgdCBpblxuICAgICAgb3V0XG5cbmxldCBhcnJheV9mb2xkX2xlZnRpIGYgeCBhID1cbiAgbGV0IHkgPSByZWYgeCBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCByZWMgYXV4X2ZvbGRfcmlnaHRpIGkgZiBhIHggPVxuICBpZiBpIDwgMCB0aGVuXG4gICAgeFxuICBlbHNlXG4gICAgYXV4X2ZvbGRfcmlnaHRpIChwcmVkIGkpIGYgYSAoZiBpIGEuKGkpIHgpXG5cbmxldCBhcnJheV9mb2xkX3JpZ2h0aSBmIGEgeCA9IGF1eF9mb2xkX3JpZ2h0aSAoQXJyYXkubGVuZ3RoIGEgLSAxKSBmIGEgeFxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0MmkgZiB4IGExIGEyID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgaWYgbCA8PiBBcnJheS5sZW5ndGggYTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiYXJyYXlfZm9sZF9sZWZ0MmlcIilcbiAgZWxzZVxuICAgIGFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggZSAtPiBmIGkgeCBlIGEyLihpKSkgeCBhMVxuXG5sZXQgYXJyYXlfZmlsdGVyIGYgYSA9XG4gIGFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgIGlmIGYgaSB4IHRoZW5cbiAgICAgICAgaSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IGFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCBsMSBsMiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBsMSA8PiBBcnJheS5sZW5ndGggbDIgdGhlblxuICAgIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBmIGogPVxuICAgICAgaWYgaiA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgIFNvbWUgKFtdLCBbXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmIxLCBhZzEgPSBsMS4oaikgaW5cbiAgICAgICAgbGV0IG5iMiwgYWcyID0gbDIuKGopIGluXG4gICAgICAgIGlmIG5iMSA8PiBuYjIgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBuYjEgPSAwIHRoZW5cbiAgICAgICAgICBmIChzdWNjIGopXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgYXV4IGkgdmEgb3V0ID1cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggbDEgdGhlblxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihpKSBpblxuICAgICAgICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaSkgaW5cbiAgICAgICAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlIGlmIG5iMSA+IDAgJiYgbmIxIDwgdmEgdGhlblxuICAgICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBuYjEgKGFnMSwgYWcyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIHZhIG91dFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIGopIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICBpblxuICAgIGYgMFxuICApXG5cbmxldCBhcnJheV9jb21wYXJlIGNvbXBhcmUgYSBiID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgbCcgPSBBcnJheS5sZW5ndGggYiBpblxuICBsZXQgZCA9IFN0ZGxpYi5jb21wYXJlIGwgbCcgaW5cbiAgbGV0IHJlYyBhdXhfYXJyYXlfY29tcGFyZSBrID1cbiAgICBpZiBrID49IGwgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG8gPSBjb21wYXJlIGEuKGspIGIuKGspIGluXG4gICAgICBpZiBvIDw+IDAgdGhlblxuICAgICAgICBvXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9hcnJheV9jb21wYXJlIChzdWNjIGspXG4gICAgKVxuICBpblxuICBpZiBkIDw+IDAgdGhlblxuICAgIGRcbiAgZWxzZVxuICAgIGF1eF9hcnJheV9jb21wYXJlIDBcblxubGV0IGl0ZXJpIGYgaSA9XG4gIGxldCByZWMgYXV4IGogPVxuICAgIGlmIGogPCBpIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiBqIGluXG4gICAgICBhdXggKHN1Y2MgailcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCByZWMgcmVjdGkgZiB4IGkgPVxuICBpZiAwIDwgaSB0aGVuIChcbiAgICBsZXQgaScgPSBwcmVkIGkgaW5cbiAgICByZWN0aSBmIChmIHggaScpIGknXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG1pbl9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGtleWEgPSAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlIGlmIGtleWIgPSAwIHRoZW5cbiAgICBrZXlhLCBkYXRhYVxuICBlbHNlIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YiwgZGF0YWJcbiAgZWxzZVxuICAgIGtleWEsIGRhdGFhXG5cbmxldCBtYXhfcG9zX2ludF9ub3RfemVybyAoa2V5YSwgZGF0YWEpIChrZXliLCBkYXRhYikgPVxuICBpZiBjb21wYXJlIGtleWEga2V5YiA+IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2VcbiAgICBrZXliLCBkYXRhYlxuXG5sZXQgZm9sZF9vdmVyX3Blcm11dGF0aW9ucyBmIGwgYWNjdSA9XG4gIGxldCByZWMgYXV4IHRvX2RvIGRpc2NhcmRlZCBwZXJtdXRhdGlvbiBhY2N1ID1cbiAgICBtYXRjaCB0b19kbywgZGlzY2FyZGVkIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBmIHBlcm11dGF0aW9uIGFjY3VcbiAgICB8IFtdLCBfIDo6IF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBfIC0+XG4gICAgICBsZXQgdG9fZG8xID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSB0IGRpc2NhcmRlZCBpblxuICAgICAgbGV0IGFjY3UgPSBhdXggdG9fZG8xIFtdIChoIDo6IHBlcm11dGF0aW9uKSBhY2N1IGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0IChoIDo6IGRpc2NhcmRlZCkgcGVybXV0YXRpb24gYWNjdSBpblxuICAgICAgYWNjdVxuICBpblxuICBhdXggbCBbXSBbXSBhY2N1XG5cbmxldCBnY2RfMiBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgPVxuICAgIGlmIGIgPSAwIHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhdXggYiAoYSBtb2QgYilcbiAgaW5cbiAgbGV0IGEgPSBhYnMgYSBpblxuICBsZXQgYiA9IGFicyBiIGluXG4gIGlmIGEgPCBiIHRoZW5cbiAgICBhdXggYiBhXG4gIGVsc2VcbiAgICBhdXggYSBiXG5cbmxldCBsY21fMiBhIGIgPSBhYnMgYSAqIGFicyBiIC8gZ2NkXzIgYSBiXG5cbmxldCBsY20gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IDBcbiAgfCBoIDo6IHQgLT4gTGlzdC5mb2xkX2xlZnQgbGNtXzIgaCB0XG5cbmxldCBnZXRfaW50ZXJ2YWxfbGlzdCBwIGkgaiA9XG4gIGxldCBhZGQgY3VycmVudCBvdXRwdXQgPVxuICAgIG1hdGNoIGN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICB8IFNvbWUgcCAtPiBwIDo6IG91dHB1dFxuICBpblxuICBsZXQgaW5zZXJ0IGsgY3VycmVudCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKGssIGspXG4gICAgfCBTb21lIChfLCBqKSAtPiBTb21lIChrLCBqKVxuICBpblxuICBsZXQgcmVjIGF1eCBwIGsgY3VycmVudCBvdXRwdXQgPVxuICAgIGlmIGsgPCBpIHRoZW5cbiAgICAgIGFkZCBjdXJyZW50IG91dHB1dFxuICAgIGVsc2UgaWYgcCBrIHRoZW5cbiAgICAgIGF1eCBwIChrIC0gMSkgKGluc2VydCBrIGN1cnJlbnQpIG91dHB1dFxuICAgIGVsc2VcbiAgICAgIGF1eCBwIChrIC0gMSkgTm9uZSAoYWRkIGN1cnJlbnQgb3V0cHV0KVxuICBpblxuICBhdXggcCBqIE5vbmUgW11cblxubGV0IGxvd2VyY2FzZSA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBjYXBpdGFsaXplID0gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcblxubGV0IHN0cmluZ19zcGxpdF9vbl9jaGFyIChkZWxpbWl0ZXIgOiBjaGFyKSAocyA6IHN0cmluZykgOlxuICAgIHN0cmluZyAqIHN0cmluZyBvcHRpb24gPVxuICB0cnlcbiAgICBsZXQgaW5kZXggPSBTdHJpbmcuaW5kZXggcyBkZWxpbWl0ZXIgaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgU3RyaW5nLnN1YiBzIDAgaW5kZXgsIFNvbWUgKFN0cmluZy5zdWIgcyAoaW5kZXggKyAxKSAobGVuZ3RoIC0gaW5kZXggLSAxKSlcbiAgd2l0aCBOb3RfZm91bmQgLT4gcywgTm9uZVxuXG5sZXQgc21hc2hfZHVwbGljYXRlX2luX29yZGVyZWRfbGlzdCBwIGwgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgXFxuXCIgaW5cblxuICBsZXQgcmVjIGF1eCB0YWlsIG5vY2MgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0YWlsIHdpdGhcbiAgICB8IFtdIC0+IChjdXJyZW50LCBub2NjKSA6OiBhY2N1XG4gICAgfCAoaCwgbikgOjogdCB3aGVuIHAgaCBjdXJyZW50ID0gMCAtPlxuICAgICAgKCpsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgJWlcXG5cIiAobitub2NjKSBpbiopXG4gICAgICBhdXggdCAobiArIG5vY2MpIGN1cnJlbnQgYWNjdVxuICAgIHwgKGgsIG4pIDo6IHQgLT4gYXV4IHQgbiBoICgoY3VycmVudCwgbm9jYykgOjogYWNjdSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggW11cblxubGV0IGNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCA9XG4gIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIGV4dCB0aGVuXG4gICAgRmlsZW5hbWUuY2hvcF9zdWZmaXggbmFtZSBleHRcbiAgZWxzZVxuICAgIEZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb24gbmFtZVxuXG5sZXQgZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBuYW1lIH5mYWN1bHRhdGl2ZSB+ZXh0ID1cbiAgbGV0IGV4dCA9XG4gICAgbWF0Y2ggZXh0IHdpdGhcbiAgICB8IFNvbWUgZSAtPiBlXG4gICAgfCBOb25lIC0+IEZpbGVuYW1lLmV4dGVuc2lvbiBuYW1lXG4gIGluXG4gIGxldCBiYXNlID0gY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0IGluXG4gIGlmIGFscmVhZHlfdGhlcmUgKGJhc2UgXiBleHQpIHRoZW4gKFxuICAgIGxldCBiYXNlJyA9XG4gICAgICBpZiBmYWN1bHRhdGl2ZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgYmFzZSBeIFwiX1wiIF4gZmFjdWx0YXRpdmVcbiAgICAgIGVsc2VcbiAgICAgICAgYmFzZVxuICAgIGluXG4gICAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBleHQpIHRoZW4gKFxuICAgICAgbGV0IHYgPSByZWYgMCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2hpbGUgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgIXYgXiBleHQpIGRvXG4gICAgICAgICAgaW5jciB2XG4gICAgICAgIGRvbmVcbiAgICAgIGluXG4gICAgICBiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dFxuICAgICkgZWxzZVxuICAgICAgYmFzZScgXiBleHRcbiAgKSBlbHNlXG4gICAgYmFzZSBeIGV4dFxuXG5sZXQgZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIDogY2hhciA9ICdcXHgxZScgKCogXCJcXHRcIiAqKVxuXG5sZXQgZ2V0X3JlZiByZWYgPVxuICBsZXQgaSA9ICFyZWYgaW5cbiAgbGV0ICgpID0gcmVmIDo9IGkgKyAxIGluXG4gIGlcblxubGV0IHJlbW92ZV9kb3VibGVfZWxlbWVudHMgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIGFjY3Ugb2xkID1cbiAgICBtYXRjaCBsLCBvbGQgd2l0aFxuICAgIHwgW10sIF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBTb21lIGgnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IGFjY3Ugb2xkXG4gICAgfCBoIDo6IHQsIChOb25lIHwgU29tZSBfKSAtPiBhdXggdCAoaCA6OiBhY2N1KSAoU29tZSBoKVxuICBpblxuICBhdXggbCBbXSBOb25lXG5cbmxldCBmcm9tX25fdG9fMCBuID1cbiAgbGV0IHJlYyBhdXggayBhY2MgPVxuICAgIGlmIGsgPiBuIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGF1eCAoayArIDEpIChrIDo6IGFjYylcbiAgaW5cbiAgYXV4IDAgW11cblxubGV0IGNsZWFyIGEgPSBBcnJheS5pdGVyaSAoZnVuIGkgXyAtPiBhLihpKSA8LSBbXSkgYVxuXG5sZXQgc29ydF9ieV9wcmlvcml0eSBmIG4gPVxuICBsZXQgYSA9IEFycmF5Lm1ha2UgKG4gKyAxKSBbXSBpblxuICBsZXQga2V5cyA9IGZyb21fbl90b18wIG4gaW5cbiAgbGV0IHNvcnQgbCA9XG4gICAgbGV0IHJlYyBhdXggbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBrID0gZiBoIGluXG4gICAgICAgIGxldCAoKSA9IGEuKGspIDwtIGggOjogYS4oaykgaW5cbiAgICAgICAgYXV4IHRcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBsIGluXG4gICAgbGV0IG91dHB1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Qga2V5IC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGVsdCAtPiBlbHQgOjogbGlzdCkgbGlzdCBhLihrZXkpKVxuICAgICAgICBbXSBrZXlzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBjbGVhciBhIGluXG4gICAgb3V0cHV0XG4gIGluXG4gIHNvcnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0aWFsX2J1ZmZlcl9zaXplID0gMHgxMDAwXG5cbmxldCB3cml0ZV90b19jaGFubmVsIGYgZCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgbGV0ICgpID0gZiBiIHggaW5cbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgZCBiXG5cbmxldCBzdHJpbmdfb2Zfd3JpdGUgZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX29mX3N0cmluZyBmIHggPVxuICBsZXQgbGV4X3N0ID0gWW9qc29uLkJhc2ljLmluaXRfbGV4ZXIgKCkgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgeCBpblxuICBmIGxleF9zdCBsZXhfYnVmXG5cbmxldCByZWFkX2JldHdlZW5fc3BhY2VzIGYgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgeCA9IGYgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgbGV4X3N0IGxleF9idWYgaW5cbiAgeFxuXG5sZXQgcmVhZF9uZXh0X2l0ZW0gZiBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYlxuXG5sZXQgYnVpbGRfbXNnIHMgPSBcIk5vdCBhIGNvcnJlY3QgXCIgXiBzXG5sZXQgb2Zfc3RyaW5nIChzIDogc3RyaW5nKSA9IGBTdHJpbmcgc1xuXG5sZXQgdG9fc3RyaW5nID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwic3RyaW5nXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIChzIDogc3RyaW5nKSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2ludCAocyA6IGludCkgPSBgSW50IHNcblxubGV0IHRvX2ludCA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcImludFwiKSA9IGZ1bmN0aW9uXG4gIHwgYEludCAocyA6IGludCkgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9ib29sIChzIDogYm9vbCkgPVxuICBgU3RyaW5nXG4gICAgKGlmIHMgdGhlblxuICAgICAgIFwidHJ1ZVwiXG4gICAgIGVsc2VcbiAgICAgICBcImZhbHNlXCIpXG5cbmxldCB0b19ib29sID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYm9vbGVhblwiKSA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInRydWVcIiAtPiB0cnVlXG4gIHwgYFN0cmluZyBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdW5pdCAoKSA9IGBOdWxsXG5cbmxldCB0b191bml0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwidW5pdFwiKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gKClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2Zfb3B0aW9uIHRvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIHggLT5cbiAgICAobWF0Y2ggdG9fanNvbiB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IGZhaWx3aXRoIFwiYW1iaWd1b3VzIEpzb25VdGlsLm9mX29wdGlvblwiXG4gICAgfCB4IC0+IHgpXG5cbmxldCB0b19vcHRpb24gPSBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cblxubGV0IHdyaXRlX29wdGlvbiBmIG9iID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG9iICgpXG4gIHwgU29tZSB4IC0+IGYgb2IgeFxuXG5sZXQgcmVhZF9vcHRpb24gZiBwIGxiID1cbiAgaWYgWW9qc29uLkJhc2ljLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChmIHAgbGIpXG5cbmxldCBvZl9saXN0IHRvX2pzb24gbCA9IGBMaXN0IChMaXN0LnJldl9tYXAgdG9fanNvbiAoTGlzdC5yZXYgbCkpXG5cbmxldCB0b19saXN0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwibGlzdFwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIHggLT5cbiAgICAodHJ5IExpc3QucmV2X21hcCBvZl9qc29uIChMaXN0LnJldiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgYE51bGwgLT4gW11cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgaXRlcjIgZl9lbHQgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICB3cml0ZV9jb21tYSB4O1xuICAgIGZfZWx0IHggeTtcbiAgICBpdGVyMiBmX2VsdCB4IGxcblxubGV0IHdyaXRlX2xpc3QgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgZiBvYiB5O1xuICAgICAgaXRlcjIgZiBvYiBsXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IG9mX2FycmF5IHRvX2pzb24gYSA9XG4gIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4geCBhY2MgLT4gdG9fanNvbiB4IDo6IGFjYykgYSBbXSlcblxubGV0IHRvX2FycmF5ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXJyYXlcIikgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBvZl9qc29uIGxcbiAgfCBgTnVsbCAtPiBbfHxdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2FycmF5IGYgb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gaWYgQXJyYXkubGVuZ3RoIGwgPiAwIHRoZW4gZiBvYiBsLigwKSBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgZiBvYiBsLihzdWNjIGkpKVxuICAgICAgKHByZWQgKEFycmF5Lmxlbmd0aCBsKSlcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVjIGl0ZXJfc2VxIG9iID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGYgOjogcSAtPlxuICAgIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gICAgbGV0ICgpID0gZiBvYiBpblxuICAgIGl0ZXJfc2VxIG9iIHFcblxubGV0IHdyaXRlX3NlcXVlbmNlIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgZiA6OiBxIC0+XG4gICAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgICBpdGVyX3NlcSBvYiBxXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfdmFyaWFudCByZWFkX2lkIHJlYWQgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCBjc3QgPSByZWFkX2JldHdlZW5fc3BhY2VzIHJlYWRfaWQgc3QgYiBpblxuICBsZXQgb3V0ID0gcmVhZCBzdCBiIGNzdCBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgc3QgYiBpblxuICBvdXRcblxubGV0IHNtYXJ0X2Fzc29jIGwgPVxuICBgQXNzb2NcbiAgICAoTGlzdC5yZXZcbiAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBfLCAoYE51bGwgfCBgQXNzb2MgW10gfCBgTGlzdCBbXSkgLT4gYWNjXG4gICAgICAgICAgICB8IHggLT4geCA6OiBhY2MpXG4gICAgICAgICAgW10gbCkpXG5cbmxldCBvZl9hc3NvYyB0b19qc29uIGwgPSBgQXNzb2MgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2Fzc29jID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXNzb2NpYXRpb25cIikgb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9maWVsZCBuYSBmIG9iIHggPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIG5hIGluXG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnOicgaW5cbiAgZiBvYiB4XG5cbmxldCBvZl9wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgdG9fanNvbjEgdG9fanNvbjIgKGEsIGIpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYiBdXG5cbmxldCB0b190cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ0cmlwbGVcIikgb2ZfanNvbjEgb2ZfanNvbjIgb2ZfanNvbjMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksXG4gICAgICAgICBvZl9qc29uMiAoTGlzdC5hc3NvYyBsYWIyIGwpLFxuICAgICAgICAgb2ZfanNvbjMgKExpc3QuYXNzb2MgbGFiMyBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdHJpcGxlID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhsYWIzID0gXCJ0aGlyZFwiKSB0b19qc29uMVxuICAgIHRvX2pzb24yIHRvX2pzb24zIChhLCBiLCBjKSA9XG4gIGBBc3NvYyBbIGxhYjEsIHRvX2pzb24xIGE7IGxhYjIsIHRvX2pzb24yIGI7IGxhYjMsIHRvX2pzb24zIGMgXVxuXG5sZXQgdG9fcGFpciA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwicGFpclwiKVxuICAgIG9mX2pzb24xIG9mX2pzb24yID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5IG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21wYWN0X3BhaXIgZiBnIG9iICh4LCB5KSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gZiBvYiB4IGluXG4gIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IGcgb2IgeSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWFkX2NvbXBhY3RfcGFpciBmIGcgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCB4ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBmIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICBsZXQgeSA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZyBzdCBiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIHgsIHlcblxubGV0IGNvbXBhY3RfdG9fcGFpciBmIGcgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgeDsgeSBdIC0+IGYgeCwgZyB5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb21wYWN0IHBhaXJcIiwgeCkpXG5cbmxldCBvZl9tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpIH5mb2xkIGtleV90b19qc29uXG4gICAgdmFsdWVfdG9fanNvbiBtYXAgPVxuICBgTGlzdFxuICAgIChMaXN0LnJldlxuICAgICAgIChmb2xkXG4gICAgICAgICAgKGZ1biAoa2V5IDogJ2tleSkgKHZhbHVlIDogJ3ZhbHVlKSAobGlzdCA6IFlvanNvbi5CYXNpYy50IGxpc3QpIC0+XG4gICAgICAgICAgICBgQXNzb2MgWyBsYWJfa2V5LCBrZXlfdG9fanNvbiBrZXk7IGxhYl92YWx1ZSwgdmFsdWVfdG9fanNvbiB2YWx1ZSBdXG4gICAgICAgICAgICA6OiBsaXN0KVxuICAgICAgICAgIG1hcCBbXSkpXG5cbmxldCB0b19tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJtYXBcIikgfmFkZCB+ZW1wdHkganNvbl90b19rZXkganNvbl90b192YWx1ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1hcCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBhZGRcbiAgICAgICAgICAgICAgIChqc29uX3RvX2tleSAoTGlzdC5hc3NvYyBsYWJfa2V5IGwpKVxuICAgICAgICAgICAgICAgKGpzb25fdG9fdmFsdWUgKExpc3QuYXNzb2MgbGFiX3ZhbHVlIGwpKVxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgZW1wdHkgbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml4X2xhYmVsID0gZnVuY3Rpb25cbiAgfCBVbml4TGFiZWxzLkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfbGFiZWwgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4TGFiZWxzLmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4TGFiZWxzLkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggbGFiZWxzIGVycm9yXCIsIHgpKVxuXG5sZXQgb2ZfdW5peF9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgVW5peC5FMkJJRyAtPiBgQXNzb2MgWyBcIkUyQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBQ0NFUyAtPiBgQXNzb2MgWyBcIkVBQ0NFU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUdBSU4gLT4gYEFzc29jIFsgXCJFQUdBSU5cIiwgYE51bGwgXVxuICB8IFVuaXguRUJBREYgLT4gYEFzc29jIFsgXCJFQkFERlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQlVTWSAtPiBgQXNzb2MgWyBcIkVCVVNZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDSElMRCAtPiBgQXNzb2MgWyBcIkVDSElMRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVBRExLIC0+IGBBc3NvYyBbIFwiRURFQURMS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FRE9NIC0+IGBBc3NvYyBbIFwiRURPTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRVhJU1QgLT4gYEFzc29jIFsgXCJFRVhJU1RcIiwgYE51bGwgXVxuICB8IFVuaXguRUZBVUxUIC0+IGBBc3NvYyBbIFwiRUZBVUxUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVGQklHIC0+IGBBc3NvYyBbIFwiRUZCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOVFIgLT4gYEFzc29jIFsgXCJFSU5UUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5WQUwgLT4gYEFzc29jIFsgXCJFSU5WQUxcIiwgYE51bGwgXVxuICB8IFVuaXguRUlPIC0+IGBBc3NvYyBbIFwiRUlPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJU0RJUiAtPiBgQXNzb2MgWyBcIkVJU0RJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUZJTEUgLT4gYEFzc29jIFsgXCJFTUZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU1MSU5LIC0+IGBBc3NvYyBbIFwiRU1MSU5LXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOQU1FVE9PTE9ORyAtPiBgQXNzb2MgWyBcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkZJTEUgLT4gYEFzc29jIFsgXCJFTkZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PREVWIC0+IGBBc3NvYyBbIFwiRU5PREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VOVCAtPiBgQXNzb2MgWyBcIkVOT0VOVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9FWEVDIC0+IGBBc3NvYyBbIFwiRU5PRVhFQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9MQ0sgLT4gYEFzc29jIFsgXCJFTk9MQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PTUVNIC0+IGBBc3NvYyBbIFwiRU5PTUVNXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NQQyAtPiBgQXNzb2MgWyBcIkVOT1NQQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9TWVMgLT4gYEFzc29jIFsgXCJFTk9TWVNcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVERJUiAtPiBgQXNzb2MgWyBcIkVOT1RESVJcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVEVNUFRZIC0+IGBBc3NvYyBbIFwiRU5PVEVNUFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RUWSAtPiBgQXNzb2MgWyBcIkVOT1RUWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTlhJTyAtPiBgQXNzb2MgWyBcIkVOWElPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRVJNIC0+IGBBc3NvYyBbIFwiRVBFUk1cIiwgYE51bGwgXVxuICB8IFVuaXguRVBJUEUgLT4gYEFzc29jIFsgXCJFUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUkFOR0UgLT4gYEFzc29jIFsgXCJFUkFOR0VcIiwgYE51bGwgXVxuICB8IFVuaXguRVJPRlMgLT4gYEFzc29jIFsgXCJFUk9GU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1BJUEUgLT4gYEFzc29jIFsgXCJFU1BJUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRVNSQ0ggLT4gYEFzc29jIFsgXCJFU1JDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FWERFViAtPiBgQXNzb2MgWyBcIkVYREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVXT1VMREJMT0NLIC0+IGBBc3NvYyBbIFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOUFJPR1JFU1MgLT4gYEFzc29jIFsgXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUxSRUFEWSAtPiBgQXNzb2MgWyBcIkVBTFJFQURZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RTT0NLIC0+IGBBc3NvYyBbIFwiRU5PVFNPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRURFU1RBRERSUkVRIC0+IGBBc3NvYyBbIFwiRURFU1RBRERSUkVRXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNU0dTSVpFIC0+IGBBc3NvYyBbIFwiRU1TR1NJWkVcIiwgYE51bGwgXVxuICB8IFVuaXguRVBST1RPVFlQRSAtPiBgQXNzb2MgWyBcIkVQUk9UT1RZUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PUFJPVE9PUFQgLT4gYEFzc29jIFsgXCJFTk9QUk9UT09QVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9OT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRVNPQ0tUTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPUE5PVFNVUFAgLT4gYEFzc29jIFsgXCJFT1BOT1RTVVBQXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJJTlVTRSAtPiBgQXNzb2MgWyBcIkVBRERSSU5VU0VcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJOT1RBVkFJTCAtPiBgQXNzb2MgWyBcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVERPV04gLT4gYEFzc29jIFsgXCJFTkVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVORVRVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRSRVNFVCAtPiBgQXNzb2MgWyBcIkVORVRSRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTkFCT1JURUQgLT4gYEFzc29jIFsgXCJFQ09OTkFCT1JURURcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5SRVNFVCAtPiBgQXNzb2MgWyBcIkVDT05OUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PQlVGUyAtPiBgQXNzb2MgWyBcIkVOT0JVRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRUlTQ09OTiAtPiBgQXNzb2MgWyBcIkVJU0NPTk5cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVENPTk4gLT4gYEFzc29jIFsgXCJFTk9UQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU0hVVERPV04gLT4gYEFzc29jIFsgXCJFU0hVVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRVRPT01BTllSRUZTIC0+IGBBc3NvYyBbIFwiRVRPT01BTllSRUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVUSU1FRE9VVCAtPiBgQXNzb2MgWyBcIkVUSU1FRE9VVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFRlVTRUQgLT4gYEFzc29jIFsgXCJFQ09OTlJFRlVTRURcIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RET1dOIC0+IGBBc3NvYyBbIFwiRUhPU1RET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVIT1NUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTE9PUCAtPiBgQXNzb2MgWyBcIkVMT09QXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPVkVSRkxPVyAtPiBgQXNzb2MgWyBcIkVPVkVSRkxPV1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FVU5LTk9XTkVSUiBpbnQgLT4gYEFzc29jIFsgXCJFVU5LTk9XTkVSUlwiLCBvZl9pbnQgaW50IF1cblxubGV0ICh0b191bml4X2Vycm9yIDogWW9qc29uLkJhc2ljLnQgLT4gVW5peC5lcnJvcikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcIkUyQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRTJCSUdcbiAgfCBgQXNzb2MgWyAoXCJFQUNDRVNcIiwgYE51bGwpIF0gLT4gVW5peC5FQUNDRVNcbiAgfCBgQXNzb2MgWyAoXCJFQUdBSU5cIiwgYE51bGwpIF0gLT4gVW5peC5FQUdBSU5cbiAgfCBgQXNzb2MgWyAoXCJFQkFERlwiLCBgTnVsbCkgXSAtPiBVbml4LkVCQURGXG4gIHwgYEFzc29jIFsgKFwiRUJVU1lcIiwgYE51bGwpIF0gLT4gVW5peC5FQlVTWVxuICB8IGBBc3NvYyBbIChcIkVDSElMRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDSElMRFxuICB8IGBBc3NvYyBbIChcIkVERUFETEtcIiwgYE51bGwpIF0gLT4gVW5peC5FREVBRExLXG4gIHwgYEFzc29jIFsgKFwiRURPTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVET01cbiAgfCBgQXNzb2MgWyAoXCJFRVhJU1RcIiwgYE51bGwpIF0gLT4gVW5peC5FRVhJU1RcbiAgfCBgQXNzb2MgWyAoXCJFRkFVTFRcIiwgYE51bGwpIF0gLT4gVW5peC5FRkFVTFRcbiAgfCBgQXNzb2MgWyAoXCJFRkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVGQklHXG4gIHwgYEFzc29jIFsgKFwiRUlOVFJcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5UUlxuICB8IGBBc3NvYyBbIChcIkVJTlZBTFwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlZBTFxuICB8IGBBc3NvYyBbIChcIkVJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJT1xuICB8IGBBc3NvYyBbIChcIkVJU0RJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0RJUlxuICB8IGBBc3NvYyBbIChcIkVNRklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNRklMRVxuICB8IGBBc3NvYyBbIChcIkVNTElOS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVNTElOS1xuICB8IGBBc3NvYyBbIChcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOQU1FVE9PTE9OR1xuICB8IGBBc3NvYyBbIChcIkVORklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVORklMRVxuICB8IGBBc3NvYyBbIChcIkVOT0RFVlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0RFVlxuICB8IGBBc3NvYyBbIChcIkVOT0VOVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VOVFxuICB8IGBBc3NvYyBbIChcIkVOT0VYRUNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9FWEVDXG4gIHwgYEFzc29jIFsgKFwiRU5PTENLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTENLXG4gIHwgYEFzc29jIFsgKFwiRU5PTUVNXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTUVNXG4gIHwgYEFzc29jIFsgKFwiRU5PU1BDXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1BDXG4gIHwgYEFzc29jIFsgKFwiRU5PU1lTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1lTXG4gIHwgYEFzc29jIFsgKFwiRU5PVERJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RESVJcbiAgfCBgQXNzb2MgWyAoXCJFTk9URU1QVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9URU1QVFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UVFlcbiAgfCBgQXNzb2MgWyAoXCJFTlhJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOWElPXG4gIHwgYEFzc29jIFsgKFwiRVBFUk1cIiwgYE51bGwpIF0gLT4gVW5peC5FUEVSTVxuICB8IGBBc3NvYyBbIChcIkVQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBJUEVcbiAgfCBgQXNzb2MgWyAoXCJFUkFOR0VcIiwgYE51bGwpIF0gLT4gVW5peC5FUkFOR0VcbiAgfCBgQXNzb2MgWyAoXCJFUk9GU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVST0ZTXG4gIHwgYEFzc29jIFsgKFwiRVNQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVNSQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FU1JDSFxuICB8IGBBc3NvYyBbIChcIkVYREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRVhERVZcbiAgfCBgQXNzb2MgWyAoXCJFV09VTERCTE9DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVXT1VMREJMT0NLXG4gIHwgYEFzc29jIFsgKFwiRUlOUFJPR1JFU1NcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5QUk9HUkVTU1xuICB8IGBBc3NvYyBbIChcIkVBTFJFQURZXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFMUkVBRFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UU09DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RTT0NLXG4gIHwgYEFzc29jIFsgKFwiRURFU1RBRERSUkVRXCIsIGBOdWxsKSBdIC0+IFVuaXguRURFU1RBRERSUkVRXG4gIHwgYEFzc29jIFsgKFwiRU1TR1NJWkVcIiwgYE51bGwpIF0gLT4gVW5peC5FTVNHU0laRVxuICB8IGBBc3NvYyBbIChcIkVQUk9UT1RZUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUFJPVE9UWVBFXG4gIHwgYEFzc29jIFsgKFwiRU5PUFJPVE9PUFRcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9QUk9UT09QVFxuICB8IGBBc3NvYyBbIChcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT05PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTT0NLVE5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVPUE5PVFNVUFBcIiwgYE51bGwpIF0gLT4gVW5peC5FT1BOT1RTVVBQXG4gIHwgYEFzc29jIFsgKFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFERFJJTlVTRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRERSSU5VU0VcbiAgfCBgQXNzb2MgWyAoXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJOT1RBVkFJTFxuICB8IGBBc3NvYyBbIChcIkVORVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRU5FVFJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5BQk9SVEVEXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFTk9CVUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PQlVGU1xuICB8IGBBc3NvYyBbIChcIkVJU0NPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FSVNDT05OXG4gIHwgYEFzc29jIFsgKFwiRU5PVENPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UQ09OTlxuICB8IGBBc3NvYyBbIChcIkVTSFVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVTSFVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVUT09NQU5ZUkVGU1xuICB8IGBBc3NvYyBbIChcIkVUSU1FRE9VVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVUSU1FRE9VVFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVGVVNFRFxuICB8IGBBc3NvYyBbIChcIkVIT1NURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NURE9XTlxuICB8IGBBc3NvYyBbIChcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVMT09QXCIsIGBOdWxsKSBdIC0+IFVuaXguRUxPT1BcbiAgfCBgQXNzb2MgWyAoXCJFT1ZFUkZMT1dcIiwgYE51bGwpIF0gLT4gVW5peC5FT1ZFUkZMT1dcbiAgfCBgQXNzb2MgWyAoXCJFVU5LTk9XTkVSUlwiLCBpbnQpIF0gLT4gVW5peC5FVU5LTk9XTkVSUiAodG9faW50IGludClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChidWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIHgpKVxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIFlvanNvbi5CYXNpYy53cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHN0b3AgPSBTdG9wIG9mICdiIHwgU3VjY2VzcyBvZiAnYVxuXG5sZXQgc3VjY2VzcyBhID0gU3VjY2VzcyBhXG5sZXQgc3RvcCBhID0gU3RvcCBhXG5cbmxldCBzdWNjZXNzX29yX3N0b3AgZiBnIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTdWNjZXNzIGEgLT4gZiBhXG4gIHwgU3RvcCBhIC0+IGcgYVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG5lbmRcblxudHlwZSAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EpIHdpdGhfbG9nX3dyYXAgPVxuICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIC0+IGV4biAtPiAnZXJyb3IpIC0+XG4gICdwYXJhbWV0ZXJzIC0+XG4gICdlcnJvciAtPlxuICAnYVxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IGVsdCAtPiB0IC0+IHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBzcGxpdCA6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlzam9pbnRfdW5pb24gOiB0IC0+IHQgLT4gdCBvcHRpb25cbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcblxuICB2YWwgbWludXMgOiB0IC0+IHQgLT4gdFxuICAoKiogW21pbnVzIGEgYl0gY29udGFpbnMgZWxlbWVudHMgb2YgW2FdIHRoYXQgYXJlIG5vdCBpbiBbYl0gKilcblxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gICgqKiBbZGlmZiBhIGJdID0gW21pbnVzICh1bmlvbiBhIGIpIChpbnRlciBhIGIpXSAqKVxuXG4gIHZhbCBtaW51c193aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpbnRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaWZmX3dpdGhfbG9ncyA6ICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuICAoKiB2YWwgc3BsaXRfd2l0aF9sb2dzOlxuICAgICAgICAoJ3BhcmFtZXRlcnMsJ2Vycm9yLGVsdCAtPiB0IC0+ICdlcnJvciAqICggdCAqIGJvb2wgKiB0KSkgd2l0aF9sb2dfd3JhcCAqKVxuXG4gIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuXG4gIHZhbCBmaWx0ZXJfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcblxuICB2YWwgcGFydGl0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIChlbHQgLT4gYm9vbCkgLT4gdCAtPiAnZXJyb3IgKiB0ICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJhbmRvbSA6IFJhbmRvbS5TdGF0ZS50IC0+IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHNldFxuICB0eXBlICsnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICB2YWwgcm9vdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9rZXkgOiAnYSB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGFkZCA6IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6IGVsdCAtPiAnYSB0IC0+ICdhIHRcblxuICB2YWwgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcG9wIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRfb3B0aW9uIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2RlZmF1bHQgOiAnYSAtPiBlbHQgLT4gJ2EgdCAtPiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSBvcHRpb24pIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhKSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmX3ByZWQgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG5cbiAgdmFsIGFkZF93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGpvaW5fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICgnYSB0ICogJ2Egb3B0aW9uICogJ2EgdCkgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdXBkYXRlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYSAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdiIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yICogJ2MgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBtYXAyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdhIC0+ICdlcnJvciAqICdhKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2Vycm9yICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMnpfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfcHJlZF93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lcmdlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKGVsdCAtPiAnYSAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgKGVsdCAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcblxuICB2YWwgZm9sZF93aXRoX2ludGVycnVwdGlvbiA6XG4gICAgKGVsdCAtPiAnYSAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3ApIC0+ICdhIHQgLT4gJ2IgLT4gKCdiLCAnYykgU3RvcC5zdG9wXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDIgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2IgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBtb25hZGljX2l0ZXIyX3NwYXJzZSA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnbWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAyIDogKCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgcHJpbnQgOlxuICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgdCAtPiB1bml0XG5cbiAgdmFsIG9mX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgP2Vycm9yX21zZzpzdHJpbmcgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gZWx0KSAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiAndmFsdWUpIC0+XG4gICAgWW9qc29uLkJhc2ljLnQgLT5cbiAgICAndmFsdWUgdFxuXG4gIHZhbCB0b19qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgIChlbHQgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgKCd2YWx1ZSAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAndmFsdWUgdCAtPlxuICAgIFlvanNvbi5CYXNpYy50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXQgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwIHdpdGggdHlwZSBlbHQgPSBlbHQgYW5kIHR5cGUgc2V0ID0gU2V0LnRcbmVuZFxuXG5leGNlcHRpb24gRGVhZENvZGVJc05vdERlYWQgb2Ygc3RyaW5nXG5cbm1vZHVsZSBNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSkgOiBTIHdpdGggdHlwZSBlbHQgPSBPcmQudCA9IHN0cnVjdFxuICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgbW9kdWxlIFNldCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiB0XG4gICAgICB2YWwgaGVpZ2h0IDogdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogdCAtPiBlbHQgLT4gdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGVsdCAqIHQgKiBpbnQgKiBpbnRcblxuICAgICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxuICAgICAgbGV0IHNpemUgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG5cbiAgICAgIGxldCBub2RlIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgICBobFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGhyKVxuICAgICAgICAgICAgKyAxLFxuICAgICAgICAgICAgc2l6ZSBsZWZ0ICsgc2l6ZSByaWdodCArIDEgKVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gUHJpdmF0ZS50XG5cbiAgICBsZXQgZW1wdHkgPSBQcml2YXRlLmVtcHR5XG4gICAgbGV0IGhlaWdodCA9IFByaXZhdGUuaGVpZ2h0XG4gICAgbGV0IHNpemUgPSBQcml2YXRlLnNpemVcbiAgICBsZXQgbm9kZSA9IFByaXZhdGUubm9kZVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IGZhbHNlXG5cbiAgICBsZXQgc2luZ2xldG9uIHZhbHVlID0gbm9kZSBlbXB0eSB2YWx1ZSBlbXB0eVxuXG4gICAgbGV0IGlzX3NpbmdsZXRvbiBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKHNldDEsIF8sIHNldDIsIF8sIF8pIC0+IGlzX2VtcHR5IHNldDEgJiYgaXNfZW1wdHkgc2V0MlxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIyMlwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCBsZWZ0bGVmdCA+PSBoZWlnaHQgbGVmdHJpZ2h0IHRoZW5cbiAgICAgICAgICAgIG5vZGUgbGVmdGxlZnQgbGVmdHZhbHVlIChub2RlIGxlZnRyaWdodCB2YWx1ZSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnRyaWdodCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjI5XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0bGVmdCA8IGhlaWdodCBsZWZ0cmlnaHQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0cmlnaHRsZWZ0LCBsZWZ0cmlnaHR2YWx1ZSwgbGVmdHJpZ2h0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgbGVmdHJpZ2h0bGVmdClcbiAgICAgICAgICAgICAgICBsZWZ0cmlnaHR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRyaWdodHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIzOFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodHJpZ2h0ID49IGhlaWdodCByaWdodGxlZnQgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdCkgcmlnaHR2YWx1ZSByaWdodHJpZ2h0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByaWdodGxlZnQgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDI0NVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHRyaWdodCA8IGhlaWdodCByaWdodGxlZnQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnRsZWZ0LCByaWdodGxlZnR2YWx1ZSwgcmlnaHRsZWZ0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdGxlZnQpXG4gICAgICAgICAgICAgICAgcmlnaHRsZWZ0dmFsdWVcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodGxlZnRyaWdodCByaWdodHZhbHVlIHJpZ2h0cmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgU2V0IGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgKCoqIEJld2FyZSBzb21lIGNvZGUgcmVsaWVzIG9uIHRoZSBpbnZhcmlhbnQgW2FkZCB4IHMgPT0gc10gaWZmIFttZW0geCBzXSAqKVxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggbCBpblxuICAgICAgICAgIGlmIG8gPT0gbCB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBvIHYgclxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggciBpblxuICAgICAgICAgIGlmIG8gPT0gciB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsIHYgb1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgc2luZ2xldG9uIG5ld192YWxcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIG5ld192YWwgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChcIlNldE1hcCBsaW5lIDMwMFwiIF4gXCIgYW4gYWxyZWFkeSBlbHQgaGFzIGJlZW4gYWRkZWQgdG8gYSBzZXRcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLlNFVC5hZGRcIilcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgXywgc2V0ID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIHNldFxuXG4gICAgbGV0IHJlYyBqb2luIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZCB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZCB2YWx1ZSBsZWZ0XG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIGxlZnRoZWlnaHQsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCByaWdodGhlaWdodCwgXykgKSAtPlxuICAgICAgICBpZiBsZWZ0aGVpZ2h0ID4gcmlnaHRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCByaWdodCcgPSBqb2luIGxlZnRyaWdodCB2YWx1ZSByaWdodCBpblxuICAgICAgICAgIGJhbGFuY2UgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSBqb2luIGxlZnQgdmFsdWUgcmlnaHRsZWZ0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdmFsdWUsIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWluX2VsdF93aXRoX2xvZ3MsIGxpbmUgMzAzXCIpXG4gICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBlcnJvciwgU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXykgLT5cbiAgICAgICAgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSBcInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMTFcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIF8sIHJpZ2h0LCBfLCBfKSAtPiBlcnJvciwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuICAgICAgICBpblxuICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCBtZXJnZSBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGJhbGFuY2Ugc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWVyZ2Vfd2l0aF9sb2dzLGxpbmUgMzM5XCIpXG4gICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHNldDFcbiAgICAgICAgfCBTb21lIGVsdCAtPiBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBlbHQgbGVmdDIpXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRyaWdodCB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRsZWZ0IGxlZnR2YWx1ZSByaWdodCdcbiAgICAgICAgKSBlbHNlIGlmIHJpZ2h0aGVpZ2h0ID4gbGVmdGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCB2YWx1ZSByaWdodGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGNvbmNhdCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGpvaW4gc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgY29uY2F0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdDIgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGVsdF9vcHQgPSBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MiBpblxuICAgICAgICAobWF0Y2ggZWx0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImNvbmNhdF93aXRoX2xvZ3MsbGluZSAzOTBcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgZmFsc2UsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWwsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbCBzZXRfdmFsIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQsIHRydWUsIHJpZ2h0KVxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodGxlZnQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHRyaWdodCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHRsZWZ0IHNldF92YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHQpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0KSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0bGVmdCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBzZXRfdmFsIGxlZnRyaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBzZXRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSBhcyBzZXQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZSB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSByZW1vdmUgdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgcmlnaHQnID0gcmVtb3ZlIHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW5cbiAgICAgICAgICAgIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJhbGFuY2UgbGVmdCB2YWx1ZV9zZXQgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBzZXRcbiAgICAgICAgKSBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0ID09IGxlZnQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NTRcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJpZ2h0ID09IHJpZ2h0JyB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgNDY3XCIpXG4gICAgICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgc2V0ID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgZXJyb3IsIHNldFxuICAgICAgZWxzZVxuICAgICAgICAoIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgKFwiU2V0TWFwIGxpbmUgNDgxXCJcbiAgICAgICAgICAgICAgXiBcIkF0dGVtcHQgdG8gcmVtb3ZlIGFuIGVsdCB0aGF0IGRvZXMgbm90IGV4aXN0XCIpKVxuICAgICAgICAgICAgTm90X2ZvdW5kLFxuICAgICAgICAgIHNldCApXG5cbiAgICBsZXQgcmVjIHNwbGl0IHNwbGl0X3ZhbHVlIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbGVmdCwgdHJ1ZSwgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCA9IHNwbGl0IHNwbGl0X3ZhbHVlIGxlZnQgaW5cbiAgICAgICAgICBsZXQgcmlnaHRyaWdodCA9IGpvaW4gcmlnaHRsZWZ0IHNldF92YWx1ZSByaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnRyaWdodCwgYm9vbCwgcmlnaHRyaWdodCA9IHNwbGl0IHNwbGl0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGV0IGxlZnRsZWZ0ID0gam9pbiBsZWZ0IHNldF92YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgICBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkIHZhbHVlMiBzZXQxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MSwgXywgcmlnaHQxID0gc3BsaXQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgIGxldCByaWdodCcgPSB1bmlvbiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlzam9pbnRfdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IFNvbWUgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IFNvbWUgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlbiAoXG4gICAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgICBpZiBvdXQgPT0gc2V0MSB0aGVuXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGxlZnQyLCBfLCByaWdodDIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGxlZnQnLCBTb21lIHJpZ2h0JyAtPiBTb21lIChqb2luIGxlZnQnIHZhbHVlMSByaWdodCcpXG4gICAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuIChcbiAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgaWYgc2V0MiA9PSBvdXQgdGhlblxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIG1hdGNoIGRpc2pvaW50X3VuaW9uIGxlZnQxIGxlZnQyLCBkaXNqb2ludF91bmlvbiByaWdodDEgcmlnaHQyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUyIHJpZ2h0JylcbiAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBfLCByaWdodDIpID1cbiAgICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgICAgICApXG4gICAgICAgIGVsc2UgaWYgaGVpZ2h0MSA9IDEgdGhlblxuICAgICAgICAgIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQxLCBfLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHVuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF9ldmVuX2lmX2l0X2V4aXN0cyB3IHAgZSBzIHMnXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF93aXRoX2xvZ3MgdyBwIGUgcyBzJ1xuXG4gICAgbGV0IHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgbGVmdCcgPSBmIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgcmlnaHQnID0gZiByaWdodDEgcmlnaHQyIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXQgbGVmdCcgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGludGVyXG5cbiAgICBsZXQgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcblxuICAgIGxldCByZWMgaW50ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IG1oJywgdHJpcGxlMiA9IHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgbWgnIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTJcbiAgICAgICAgICBpbnRlcl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgZGlmZiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX25vdCAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGRpZmZcblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgZGlmZl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgbWludXMgc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgbWludXNcblxuICAgIGxldCByZWMgbWludXNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgdHJpcGxlMiA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICBpblxuICAgICAgICBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgICB0cmlwbGUyIG1pbnVzX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtZW0gc2VhcmNoZWRfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSBzZWFyY2hlZF92YWx1ZSBzZXRfdmFsdWUgaW5cbiAgICAgICAgYyA9PSAwXG4gICAgICAgIHx8IG1lbSBzZWFyY2hlZF92YWx1ZVxuICAgICAgICAgICAgIChpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgZmlsdGVyIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIGFjY3VcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgZmlsdCBlbXB0eSBzZXRcblxuICAgIGxldCBmaWx0ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwIHNldCA9XG4gICAgICBsZXQgcmVjIGZpbHQgYWNjdSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGFjY3UgaW5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGlzdFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IChlcnJvciwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbiBwIHNldCA9XG4gICAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFkZCB2YWx1ZSB0LCBmXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgdCwgYWRkIHZhbHVlIGYpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlbXB0eSwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHJoLCB0LCBmKSBhcyBhY2N1KSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIHBhcnRcbiAgICAgICAgICAgIChwYXJ0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgdCBpblxuICAgICAgICAgICAgICAgICAgYSwgYiwgZlxuICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYyA9IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIHJoIHZhbHVlIGYgaW5cbiAgICAgICAgICAgICAgICAgIGEsIHQsIGNcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgcGFydCAoZXJyb3IsIGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIGVudW0gPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVudW1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGNvbnNfZW51bSAoTW9yZSAodmFsdWUsIHJpZ2h0LCBlbnVtKSkgbGVmdFxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgIGNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gZTEgcjEpIChjb25zX2VudW0gZTIgcjIpXG5cbiAgICBsZXQgY29tcGFyZSBzZXQxIHNldDIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBFbmQgc2V0MSkgKGNvbnNfZW51bSBFbmQgc2V0MilcblxuICAgIGxldCBlcXVhbCBzZXQxIHNldDIgPSBjb21wYXJlIHNldDEgc2V0MiA9PSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSApIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUxIHZhbHVlMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IGxlZnQxIGxlZnQyICYmIHN1YnNldCByaWdodDEgcmlnaHQyXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgIHN1YnNldCAobm9kZSBsZWZ0MSB2YWx1ZTEgZW1wdHkpIGxlZnQyICYmIHN1YnNldCByaWdodDEgc2V0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3Vic2V0IChub2RlIGVtcHR5IHZhbHVlMSByaWdodDEpIHJpZ2h0MiAmJiBzdWJzZXQgbGVmdDEgc2V0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgKCkgPSBpdGVyIGYgbGVmdCBpblxuICAgICAgICBsZXQgKCkgPSBmIHZhbHVlIGluXG4gICAgICAgIGl0ZXIgZiByaWdodFxuXG4gICAgbGV0IHJlYyBmb2xkIGYgc2V0IGFjY3UgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBmb2xkIGYgcmlnaHQgKGYgdmFsdWUgKGZvbGQgZiBsZWZ0IGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb2xkX2ludiBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9pbnYgZiBsIChmIHYgKGZvbGRfaW52IGYgciBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIHZhbHVlICYmIGZvcl9hbGwgcCBsZWZ0ICYmIGZvcl9hbGwgcCByaWdodFxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgfHwgZXhpc3RzIHAgbGVmdCB8fCBleGlzdHMgcCByaWdodFxuXG4gICAgbGV0IGVsZW1lbnRzIHNldCA9XG4gICAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBlbGVtZW50c19hdXggKHZhbHVlIDo6IGVsZW1lbnRzX2F1eCBhY2N1IHJpZ2h0KSBsZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNldFxuXG4gICAgbGV0IHJlYyBhdXhfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiBPcmQucHJpbnQga2V5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXSxAICVhXCIgT3JkLnByaW50IGtleSBhdXhfcHJpbnQgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhQF0sQCAlYVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgICAgICBhdXhfcHJpbnQgcmlnaHRcblxuICAgIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIGF1eF9wcmludCBtXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIHYsIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIHJpZ2h0LCBfLCBfKSAtPiBtYXhfZWx0IHJpZ2h0XG5cbiAgICBsZXQgY2hvb3NlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG5cbiAgICBsZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIGFjYykgLT5cbiAgICAgICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFjY19sID0gc2l6ZSBsIGluXG4gICAgICAgICAgbGV0IGFjY19yID0gc2l6ZSByIGluXG4gICAgICAgICAgaWYgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgICAgIGVsc2UgaWYgYWNjX3IgKyBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgKGFpbV9hY2MgLSBhY2NfbCkgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUga2V5XG4gICAgICAgIClcblxuICAgICgqIGxldCByZWMgZmluZF9hY2MgayBtID1cbiAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIF8pIC0+XG4gICAgICAgICAgICBsZXQgcyA9IHNpemUgbCBpblxuICAgICAgICAgICAgaWYgayA8IHMgdGhlbiBmaW5kX2FjYyBrIGxcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gcyB0aGVuIFNvbWUga2V5XG4gICAgICAgICAgICAgIGVsc2UgZmluZF9hY2MgKGsgLSBzIC0gMSkgciAqKVxuXG4gICAgbGV0IHJhbmRvbSBycyBtID1cbiAgICAgIGxldCBzID0gc2l6ZSBtIGluXG4gICAgICBpZiBzID0gMCB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZmluZF9hY2MgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKHNpemUgbSkpIG1cblxuICAgICgqIGxldCBhZGQgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gYWRkX3dpdGhfbG9nc1xuICAgICAgIGxldCBzcGxpdCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBzcGxpdF93aXRoX2xvZ3NcbiAgICAgICBsZXQgcmVtb3ZlID0gIExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSByZW1vdmVfd2l0aF9sb2dzXG4gICAgICAgbGV0IHVuaW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHVuaW9uX3dpdGhfbG9nc1xuICAgICAgIGxldCBpbnRlciA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBpbnRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgZGlmZiA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBkaWZmX3dpdGhfbG9nc1xuICAgICAgIGxldCBtaW51cyA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBtaW51c193aXRoX2xvZ3NcbiAgICAgICBsZXQgZmlsdGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGZpbHRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgcGFydGl0aW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBwYXJ0aXRpb25fd2l0aF9sb2dzXG4gICAgKilcbiAgZW5kXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBNYXAgaW1wbGVtZW50YXRpb24qKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgICAgdHlwZSArJ2RhdGEgdCA9IHByaXZhdGVcbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiAnYSB0XG4gICAgICB2YWwgaGVpZ2h0IDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlICsnZGF0YSB0ID1cbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCBrZXkwIGRhdGEgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIGtleTAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoMVxuICAgICAgICAgICAgK1xuICAgICAgICAgICAgaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGhyKSxcbiAgICAgICAgICAgIDEgKyBzaXplIGxlZnQgKyBzaXplIHJpZ2h0IClcbiAgICBlbmRcblxuICAgIHR5cGUgKydhIHQgPSAnYSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICB0eXBlIHNldCA9IFNldC50XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCByb290ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgeCwgZCwgXywgXywgXykgLT4gU29tZSAoeCwgZClcblxuICAgIGxldCByZWMgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIGssIF8sIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUga1xuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIF8sIG0sIF8sIF8pIC0+IG1heF9rZXkgbVxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCBrZXkgZGF0YSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDgyOFwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnQwID49IGhlaWdodCByaWdodDAgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0MCBrZXkwIGRhdGEwIChub2RlIHJpZ2h0MCBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0MCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODM1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0MCA8IGhlaWdodCByaWdodDAgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQwIGtleTAgZGF0YTAgbGVmdDEpXG4gICAgICAgICAgICAgICAga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2UgaWYgaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NDRcIilcbiAgICAgICAgKCogaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyID49IDIgKilcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQwLCBrZXkwLCBkYXRhMCwgcmlnaHQwLCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodDAgPj0gaGVpZ2h0IGxlZnQwIHRoZW5cbiAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MCkga2V5MCBkYXRhMCByaWdodDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NTFcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IHJpZ2h0MCA8IGhlaWdodCBsZWZ0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlIChub2RlIGxlZnQga2V5IGRhdGEgbGVmdDEpIGtleTEgZGF0YTFcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodDEga2V5MCBkYXRhMCByaWdodDApXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgTWFwIGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIG1hcFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuTWFwLmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IHJlYyBhZGQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBub2RlIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAoYWRkIGtleSBkYXRhIGxlZnQpIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIChhZGQga2V5IGRhdGEgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHRydWUsIG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQnIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQga2V5X21hcCBkYXRhX21hcCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGEsIGIsIF8sIF8gPSBfX1BPU19fIGluXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWwgXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoYSBeIFwiIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBiXG4gICAgICAgICAgICAgIF4gXCI6IEF0dGVtcHQgdG8gYWRkIGFuIGFzc29jaWF0aW9uIG92ZXIgYSBmb3JtZXIgb25lIGluIGEgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYWRkXCIpLFxuICAgICAgICAgIG1hcCApXG4gICAgICApXG5cbiAgICBsZXQgcmVjIGV4dHJhY3RfbWluX2JpbmRpbmcgbWFwIGtleSBkYXRhIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoa2V5LCBkYXRhKSwgbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IGV4dHJhY3RfbWluX2JpbmRpbmcgbGVmdDIga2V5MiBkYXRhMiByaWdodDIgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIGtleSBkYXRhIG1hcCdcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcCBrZXkgZGF0YVxuICAgICAgICBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsICgoa2V5LCBkYXRhKSwgbWFwJylcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobWluLCBsZWZ0JykgPVxuICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIChtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJylcblxuICAgIGxldCBtZXJnZSBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgICBsZXQgKGtleTMsIGRhdGEzKSwgbGVmdCcgPVxuICAgICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZSBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKChrZXkzLCBkYXRhMyksIGxlZnQnKSA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMlxuICAgICAgICAgICAgICByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAocmVtb3ZlIGtleSBsZWZ0KSBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGEgKHJlbW92ZSBrZXkgcmlnaHQpXG5cbiAgICBsZXQgcmVjIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPSBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgcmlnaHQgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbWFwXG4gICAgICAgICkgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbGVmdCcgPT0gbGVmdCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgOTYxXCIpXG4gICAgICAgICAgICAgICAgICAoZmFpbHdpdGggXCJJbnZhcmlhbnQgaXMgYnJva2VuXCIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQnID09IHJpZ2h0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NzhcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleV9tYXAgZGF0YSByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA5OTRcIlxuICAgICAgICAgICAgICBeIFwiVHJ5IHRvIHJlbW92ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIE1hcC5yZW1vdmVcIlxuICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIChmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiKSxcbiAgICAgICAgICBtYXAgKVxuXG4gICAgbGV0IHJlYyBwb3AgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgbSAtPiBOb25lLCBtXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgYXMgbSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkLCBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCBsIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSB0IHYgZCByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcG9wIHggciB3aXRoXG4gICAgICAgICAgfCAoTm9uZSBhcyBvKSwgXyAtPiBvLCBtXG4gICAgICAgICAgfCAoU29tZSBfIGFzIG8pLCB0IC0+IG8sIGJhbGFuY2UgbCB2IGQgdFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZSBsZWZ0IGtleSB2YWx1ZSByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMTAxM1wiKSAoKiBCeSBjYXNlIGFuYWx5c2lzICopXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIGFzIG1hcDIgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbiBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWFwMlxuXG4gICAgbGV0IHJlYyBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgZXJyb3IsIFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIFwiTWFwLmpvaW5fd2l0aF9sb2dzLCBsaW5lIDk4NiwgdGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICBiZSBlbXB0eVwiKVxuICAgICAgICAgICAgKGZhaWx3aXRoIFwidGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgYmUgZW1wdHlcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IGVycm9yLCAoUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMikgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlcnJvciwgbWFwMlxuXG4gICAgbGV0IHJlYyBzcGxpdCB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIE5vbmUsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGxlZnQxLCBTb21lIGRhdGExLCByaWdodDFcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIGxlZnQxIGluXG4gICAgICAgICAgbGV0IHJpZ2h0MicgPSBqb2luIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MSBpblxuICAgICAgICAgIGxlZnQyLCBkYXRhMiwgcmlnaHQyJ1xuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIHJpZ2h0MSBpblxuICAgICAgICAgIGxldCBsZWZ0MicgPSBqb2luIGxlZnQxIGtleTEgZGF0YTEgbGVmdDIgaW5cbiAgICAgICAgICBsZWZ0MicsIGRhdGEyLCByaWdodDJcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCAoZW1wdHksIE5vbmUsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUgdmFsdWUga2V5MSBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQxLCBTb21lIGRhdGExLCByaWdodDEpXG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodDInID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDIga2V5MSBkYXRhMSByaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDInKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGtleTEgZGF0YTEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDInLCBkYXRhMiwgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGRpZmYgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4geCA9IGRhdGExIC0+IG1lcmdlIG9sZWZ0MSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIGpvaW4gb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICB8IE5vbmUgLT4gam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MilcblxuICAgIGxldCByZWMgdW5pb24gbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1hcDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0Miwgb3BfZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodW5pb24gbGVmdDEgbGVmdDIpIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVuaW9uIHJpZ2h0MSByaWdodDIpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBvcF9kYXRhMSwgcmlnaHQxID0gc3BsaXQgdmFsdWUyIG1hcDEgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBtYXAyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgcmlnaHQnXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIG9wX2RhdGExLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIG1hcDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGUgbWFwMSBtYXAyID1cbiAgICAgIGlmIG1hcDEgPT0gbWFwMiB0aGVuXG4gICAgICAgIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAgIGpvaW4gKHVwZGF0ZSBsZWZ0MSBsZWZ0Mikga2V5MVxuICAgICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVwZGF0ZSByaWdodDEgcmlnaHQyKVxuICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgZXJyb3IsIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAyXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgIClcblxuICAgIGxldCByZWMgZGlmZl9wcmVkIHByZWQgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmX3ByZWQgcHJlZCBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICBsZXQgb3JpZ2h0MSwgb3JpZ2h0MiA9IGRpZmZfcHJlZCBwcmVkIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBwcmVkIHggZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBfLCBfLCBfKSAtPiBTb21lIChrZXksIGRhdGEpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXywgXykgLT4gbWluX2VsdCBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0aW9uIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbiBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0IGQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX2RlZmF1bHQgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9vcHRpb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NTlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5XG4gICAgICAgICAgICAoaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImxpbmUgNjY5XCIpIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBfLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGNtcCA9PSAwXG4gICAgICAgIHx8XG4gICAgICAgIGlmIGNtcCA+IDAgdGhlblxuICAgICAgICAgIG1lbSBrZXkgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1lbSBrZXkgbGVmdFxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfb25lIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgaWYgcCBrZXkgdmFsdWUgdGhlblxuICAgICAgICAgIFNvbWUgKGtleSwgdmFsdWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGZpbHRlcl9vbmUgcCBsZWZ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX29uZSBwIHJpZ2h0XG4gICAgICAgICAgfCBvdXQgLT4gb3V0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYga2V5IGRhdGEgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiBrZXkgZGF0YSAoZm9sZCBmIGxlZnQgdmFsdWUpKVxuXG4gICAgbGV0IHJlYyBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2UsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBvdXRwdXRsID0gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIGxlZnQgdmFsdWUgaW5cbiAgICAgICAgbGV0IGludGVycnVwdGVkLCB2YWx1ZSA9IG91dHB1dGwgaW5cbiAgICAgICAgaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgIG91dHB1dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgIGxldCB2YWxfb3B0ID1cbiAgICAgICAgICAgICAgICB0cnkgU29tZSAoZiBrZXkgZGF0YSB2YWx1ZSkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCB2YWxfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWUsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIHJpZ2h0IHYpXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZmFsc2UsIFN0b3Auc3RvcCB2KVxuICAgICAgICAgICAgICAgICAgdilcbiAgICAgICAgICAgIChmdW4geCAtPiBmYWxzZSwgU3RvcC5zdG9wIHgpXG4gICAgICAgICAgICB2YWx1ZVxuXG4gICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgc25kIChmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyLCB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnInLCB2YWx1ZScgPSBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgZXJyJycsIHZhbHVlJycgPSBmIHBhcmFtIGVycicga2V5IGRhdGEgdmFsdWUnIGluXG4gICAgICAgIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnInJyBmIHJpZ2h0IHZhbHVlJydcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gcmgsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGggbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyByaCBnIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGcgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBtb25hZGljX2ZvbGQyX3NwYXJzZSBwYXJhbWV0ZXJzIHJoIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBsZXQgaWQgXyB4IF8gXyB5ID0geCwgeSBpblxuICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgaWQgaWQgbWFwMSBtYXAyIHJlc1xuXG4gICAgbGV0IG1vbmFkaWNfaXRlcjJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgPVxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmhcbiAgICAgICAgICAoZnVuIHAgZSBrIGEgYiAoKSAtPiBmIHAgZSBrIGEgYiwgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJyBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID1cbiAgICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmgnJywgcmVzJycgPSBmIHBhcmFtZXRlcnMgcmgnIGtleTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJycgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbm9kZSAobWFwaSBmIGxlZnQpIGtleSAoZiBrZXkgZGF0YSkgKG1hcGkgZiByaWdodClcblxuICAgIGxldCBtYXAgZiBzID0gbWFwaSAoZnVuIF8geCAtPiBmIHgpIHNcblxuICAgIGxldCByZWMgbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIGxlZnQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbGVmdCBpblxuICAgICAgICBsZXQgZXJyb3JzLCBkYXRhJyA9IGYgcGFyYW1ldGVycyBlcnJvcnMgZGF0YSBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIHJpZ2h0IGluXG4gICAgICAgIGVycm9yLCBub2RlIGxlZnQnIGtleSBkYXRhJyByaWdodCdcblxuICAgIGxldCByZWMgbWFwMiBmIG1hcCBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbGVmdDIsIGRhdGEyLCByaWdodDIgPSBzcGxpdCBrZXkxIG1hcCcgaW5cbiAgICAgICAgam9pbiAobWFwMiBmIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICB8IFNvbWUgZDIgLT4gZiBkYXRhMSBkMilcbiAgICAgICAgICAobWFwMiBmIHJpZ2h0MSByaWdodDIpXG5cbiAgICBsZXQgcmVjIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9ycywgZW1wdHlcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZyBtYXAyKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3JzLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID1cbiAgICAgICAgICBtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVycyBlcnJvciBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBoIHBhcmFtZXRlcnMgZXJyb3JzIGRhdGExIGQyXG4gICAgICAgIGluXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxIGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IG1hcDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzID1cbiAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnNcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCByZXNcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBnIG1hcDIgcmVzXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGYgcGFyYW1ldGVycyBlcnJvciBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gaCBwYXJhbWV0ZXJzIGVycm9yIChrZXkxIDogZWx0KSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGZvbGQyel93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yID1cbiAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIF8gXyBhIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAgIChTb21lIFwibGluZSAxMjQ4LCBpbmNvbXBhdGlibGUgbWFwcyBpbiBmb2xkMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG5cbiAgICBsZXQgcmVjIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsIF8gPVxuICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyIGVyciBhIGIgYyBfIC0+IGYgcGFyIGVyciBhIGIgYywgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCBrZXkgZGF0YSAmJiBmb3JfYWxsIHAgcmlnaHQgJiYgZm9yX2FsbCBwIGxlZnRcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+IGNvbnNfZW51bSBsIChNb3JlICh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgICAgY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICAgIGNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBjb21wYXJlXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgY21wIHggeSB0aGVuXG4gICAgICAgICAgICAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgMSlcbiAgICAgICAgbTEgbTJcbiAgICAgID09IDBcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSAtPlxuICAgICAgICBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9IGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPkAsJWFAXVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLT4lYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcilcbiAgICAgICAgICByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYS0+JWFAXVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50IGtleSBwclxuICAgICAgICAgIGRhdGFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdLEAgJWFcIiAoYXV4X3ByaW50IHByKSBsZWZ0IE9yZC5wcmludFxuICAgICAgICAgIGtleSBwciBkYXRhIChhdXhfcHJpbnQgcHIpIHJpZ2h0XG5cbiAgICBsZXQgcHJpbnQgcHIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gYXMgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFt7JWF9QF1cIiAoYXV4X3ByaW50IHByKSBtXG5cbiAgICBsZXQgcmVjIGRpZmZfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMilcblxuICAgIGxldCByZWMgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9yaWdodDEsIG9yaWdodDIgPVxuICAgICAgICAgIGRpZmZfcHJlZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHByZWQgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICBlcnJvciBmIGcgc2V0IG1hcCByZXMgPVxuICAgICAgbWF0Y2ggc2V0LCBtYXAgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcFxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgZXJyb3IgZiBnIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGcga2V5MSAoZXJyb3IsIHJlcycpIGluXG4gICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgIGVycm9yIGYgZyByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBrZXkxIGRhdGEyIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgc2V0IG1hcCByZXMgPVxuICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgZlxuICAgICAgICAoZnVuIF8geCAtPiB4KVxuICAgICAgICBzZXQgbWFwIHJlc1xuXG4gICAgbGV0IHRvX2pzb24gPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpID1cbiAgICAgIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleSB+bGFiX3ZhbHVlIH5mb2xkXG5cbiAgICBsZXQgb2ZfanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICAgICAgPyhlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJtYXBcIikgPVxuICAgICAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmVycm9yX21zZyB+YWRkIH5lbXB0eVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSBzZXRfYVxuICB0eXBlIHNldF9iXG5cbiAgdmFsIHByb2pfbWFwIDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+ICdiIC0+ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2EgbWFwX2EgLT4gJ2IgbWFwX2JcblxuICB2YWwgcHJval9tYXBfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9iXG5cbiAgdmFsIHByb2pfc2V0X21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHRfYSAtPiAnbWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBzZXRfYSAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9hIG1hcF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFMpIChCIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYlxuICAgICAgICAgIChtZXJnZSAoTUIuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYiBtYXBfYikgZGF0YV9hKVxuICAgICAgICAgIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2pfbWFwX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBpZGVudGl0eV9lbHQgbW9uYWRpY19tZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1vbmFkaWNfbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIG1hcCAoaGFuZGxlciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2pfc2V0IGYgc2V0X2EgPSBTQS5mb2xkIChmdW4ga2V5X2EgLT4gU0IuYWRkIChmIGtleV9hKSkgc2V0X2EgU0IuZW1wdHlcblxuICBsZXQgcHJval9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICBoYW5kbGVyLCBTQi5hZGQga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoaGFuZGxlciwgU0IuZW1wdHkpXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYiAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKSBtYXBfYilcbiAgICAgIHNldF9hIE1CLmVtcHR5XG5cbiAgbGV0IHBhcnRpdGlvbl9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICAoIGhhbmRsZXIsXG4gICAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgICAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKVxuICAgICAgICAgICAgbWFwX2IgKSlcbiAgICAgIHNldF9hIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuKCogdG9kbzogYWRkIHRoZSBmb2xsb3dpbmcgIHRlc3QgdG8gdGhlIHNhbml0eSB0ZXN0cyAqKVxuXG4oKlxuKCogZm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIGNvZGU6ICopXG5cbm1vZHVsZSBJbnRNYXAgPSBNYWtlKHN0cnVjdCB0eXBlIHQgPSBpbnQgbGV0IGNvbXBhcmUgPSBjb21wYXJlIGVuZClcbm1vZHVsZSBQID0gUHJvaihJbnRNYXApKEludE1hcClcblxuXG5sZXQgZiA9IExpc3QuZm9sZF9sZWZ0XG4oZnVuIG1hcCAoYSxiKSAtPiBJbnRNYXAuTWFwLmFkZCBhIGIgbWFwKVxuSW50TWFwLk1hcC5lbXB0eVxuWzEsWzI7M107MixbMzs0XTs1LFs2OzddOzgsWzEyOzEzXV1cblxuKCogYmFkIGltcGxlbWVudGF0aW9uIChxdWFkcmF0aWMgdGltZSBjb21wbGV4aXR5KSAqKVxubGV0IGcgPSBQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChMaXN0LmFwcGVuZCkgZlxuXG4oKiBnb29kIGltcGxlbWVudGF0aW9uIChsaW5lYXIgdGltZSBjb21wbGV4aXR5KSopXG5sZXQgZycgPSBJbnRNYXAuTWFwLm1hcCBMaXN0LnJldiAoUC5wcm9qIChmdW4gaSAtPiBpIG1vZCAyKSBbXSAoZnVuIHggeSAtPiBMaXN0LmFwcGVuZCAoTGlzdC5yZXYgeSkgeCkgZilcblxuXG5sZXQgZHVtcCAoczpzdHJpbmcpIGYgPVxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVzOiBcXG5cIiBzIGluXG4gIGxldCBfID0gSW50TWFwLk1hcC5pdGVyXG4oZnVuIGEgbCAtPlxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCIgICVpOlwiIGEgaW5cbmxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSxcIikgbCBpblxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpbiAoKSlcbmYgaW5cbiAgKClcbmxldCBfID0gZHVtcCBcImZcIiBmXG5sZXQgXyA9IGR1bXAgXCJnXCIgZ1xubGV0IF8gPSBkdW1wIFwiZydcIiBnJ1xuXG4oKiBzaG91bGQgZHVtcDogKilcbigqXG5cbmY6XG4gIDE6MiwzLFxuICAyOjMsNCxcbiAgNTo2LDcsXG4gIDg6MTIsMTMsXG5nOlxuICAwOjMsNCwxMiwxMyxcbiAgMToyLDMsNiw3LFxuICopXG4gKilcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbjIgPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgZWx0X2NcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgJ2EgbWFwX2NcblxuICB2YWwgcHJvajIgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnYiBtYXBfYyBtYXBfYlxuXG4gIHZhbCBwcm9qMl9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTKSAoQiA6IFMpIChDIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIGtleV9jXG4gICAgICAgICAgICAobWVyZ2UgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKSBkYXRhX2EpXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCBNQi5lbXB0eVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUIuZmluZF9kZWZhdWx0IE1DLmVtcHR5IGtleV9iIG1hcF9iIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQy5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcClcbiAgICAgICAgICAgIGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUMuYWRkIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBoYW5kbGVyLCBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGludF9jb21wYXJlICh4IDogaW50KSB5ID0gU3RkbGliLmNvbXBhcmUgeCB5XG5cbmxldCBpbnRfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gaW50X2NvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgaW50X2NvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgc3RyaW5nX3BhaXJfY29tcGFyZSAocCwgcSkgKHAnLCBxJykgPVxuICBsZXQgbyA9IFN0cmluZy5jb21wYXJlIHAgcCcgaW5cbiAgaWYgbyA9IDAgdGhlblxuICAgIFN0cmluZy5jb21wYXJlIHEgcSdcbiAgZWxzZVxuICAgIG9cblxubGV0IHBhaXJfZXF1YWwgZXFhIGVxYiAoeGEsIHhiKSAoeWEsIHliKSA9IGVxYSB4YSB5YSAmJiBlcWIgeGIgeWJcblxubW9kdWxlIFN0cmluZ1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5tb2R1bGUgU3RyaW5nMlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBzdHJpbmdfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJXMsICVzKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgU3RyaW5nMk1hcCA9IFN0cmluZzJTZXRNYXAuTWFwXG5cbm1vZHVsZSBJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X2NvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgSW50U2V0ID0gSW50U2V0TWFwLlNldFxubW9kdWxlIEludE1hcCA9IEludFNldE1hcC5NYXBcblxubW9kdWxlIEludDJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludCAqIGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X3BhaXJfY29tcGFyZVxuICBsZXQgcHJpbnQgZiAoYSwgYikgPSBGb3JtYXQuZnByaW50ZiBmIFwiKCVpLCAlaSlcIiBhIGJcbmVuZClcblxubW9kdWxlIEludDJTZXQgPSBJbnQyU2V0TWFwLlNldFxubW9kdWxlIEludDJNYXAgPSBJbnQyU2V0TWFwLk1hcFxuXG5tb2R1bGUgQ2hhclNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhclxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxuZW5kKVxuXG5tb2R1bGUgQ2hhclNldCA9IENoYXJTZXRNYXAuU2V0XG5tb2R1bGUgQ2hhck1hcCA9IENoYXJTZXRNYXAuTWFwXG5tb2R1bGUgRHluQXJyYXkgPSBEeW5hbWljQXJyYXkuRHluQXJyYXkgKExhcmdlQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdW5zb21lIGRlZmF1bHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCB1bnNvbWVfb3JfcmFpc2VcbiAgICA/KGV4Y2VwID0gSW52YWxpZF9hcmd1bWVudCBcInVuc29tZV9vcl9yYWlzZSB3YXMgcGFzc2VkIGEgTm9uZVwiKSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiByYWlzZSBleGNlcFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IGJpbmQgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBvIC0+IGYgb1xuXG5sZXQgZm9sZCBmIHggPSBmdW5jdGlvblxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgeSAtPiBmIHggeVxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXEgeCB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBvc2l0aW9uID0geyBjaHI6IGludDsgbGluZTogaW50IH1cbnR5cGUgdCA9IHsgZmlsZTogc3RyaW5nOyBmcm9tX3Bvc2l0aW9uOiBwb3NpdGlvbjsgdG9fcG9zaXRpb246IHBvc2l0aW9uIH1cbnR5cGUgJ2EgYW5ub3RlZCA9ICdhICogdFxuXG5sZXQgdiAodiwgXykgPSB2XG5sZXQgZ2V0X2Fubm90IChfLCBhbm5vdCkgPSBhbm5vdFxubGV0IGNvcHlfYW5ub3QgKF8sIGxvYykgYSA9IGEsIGxvY1xubGV0IG1hcF9hbm5vdCBmIChhLCBsb2MpID0gZiBhLCBsb2NcblxubGV0IG9mX3BvcyBzdGFydF9sb2NhdGlvbiBlbmRfbG9jYXRpb24gPVxuICBsZXQgKCkgPVxuICAgIGFzc2VydCAoc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lKVxuICBpblxuICB7XG4gICAgZmlsZSA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWU7XG4gICAgZnJvbV9wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfYm9sO1xuICAgICAgICBsaW5lID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgICB0b19wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2NudW0gLSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgfVxuXG5sZXQgZHVtbXlfcG9zaXRpb24gPVxuICB7XG4gICAgY2hyID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2NudW0gLSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfYm9sO1xuICAgIGxpbmUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfbG51bTtcbiAgfVxuXG5sZXQgZHVtbXkgPVxuICB7XG4gICAgZmlsZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb247XG4gICAgdG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgfVxuXG5sZXQgYW5ub3Rfd2l0aF9kdW1teSB4ID0geCwgZHVtbXlcblxubGV0IGlzX2R1bW15IGxvYyA9XG4gIGxvYy5maWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lXG4gICYmIGxvYy5mcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cbiAgJiYgbG9jLnRvX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cblxubGV0IGlzX2Fubm90ZWRfd2l0aF9kdW1teSAoXywgbG9jKSA9IGlzX2R1bW15IGxvY1xuXG5sZXQgcHJpbnQgZiBsb2MgPVxuICBsZXQgcHJfZiBmID1cbiAgICBpZiBsb2MuZmlsZSA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkZpbGUgXFxcIiVzXFxcIiwgXCIgbG9jLmZpbGVcbiAgaW5cbiAgbGV0IHByX2wgZiA9XG4gICAgaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA9IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lICVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lcyAlaS0laVwiIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgbG9jLnRvX3Bvc2l0aW9uLmxpbmVcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0JXQsIGNoYXJhY3RlcnMgJWktJWk6XCIgcHJfZiBwcl9sIGxvYy5mcm9tX3Bvc2l0aW9uLmNoclxuICAgIGxvYy50b19wb3NpdGlvbi5jaHJcblxubGV0IHRvX3N0cmluZyBsb2MgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludCBsb2NcbmxldCBwcmludF9hbm5vdGVkIHByIGYgKHgsIGwpID0gRm9ybWF0LmZwcmludGYgZiBcIiVhQCAlYVwiIHByaW50IGwgcHIgeFxuXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG5cbmxldCB0b19jb21wYWN0X3lvanNvbiBkZWNscyBsb2MgPVxuICBpZiBpc19kdW1teSBsb2MgdGhlblxuICAgIGBOdWxsXG4gIGVsc2VcbiAgICBgQXNzb2NcbiAgICAgICgoaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA8PiBsb2MudG9fcG9zaXRpb24ubGluZSB0aGVuXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgKFwiZWxpbmVcIiwgYEludCBsb2MudG9fcG9zaXRpb24ubGluZSkgOjogbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgbClcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcImZpbGVcIixcbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZCAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbG9jLmZpbGUpIGRlY2xzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaVxuICAgICAgICAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIGxvYy5maWxlICk7XG4gICAgICAgICAgIFwiYmxpbmVcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5saW5lO1xuICAgICAgICAgICBcImJjaHJcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5jaHI7XG4gICAgICAgICAgIFwiZWNoclwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5jaHI7XG4gICAgICAgICBdKVxuXG5sZXQgb2ZfY29tcGFjdF95b2pzb24gPyhmaWxlbmFtZXMgPSBbfHxdKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gZHVtbXlcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA1IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJmaWxlXCIgbCB3aXRoXG4gICAgICAgICB8IGBTdHJpbmcgeCAtPiB4XG4gICAgICAgICB8IGBJbnQgaSAtPiBmaWxlbmFtZXMuKGkpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9saW5lID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJibGluZVwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgb2ZfY2hyID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiY2hyXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCB0b19jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImVjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZWxpbmVcIiB4IHdpdGhcbiAgICAgICAgIHwgYE51bGwgLT4gb2ZfbGluZVxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlO1xuICAgICAgICAgZnJvbV9wb3NpdGlvbiA9IHsgbGluZSA9IG9mX2xpbmU7IGNociA9IG9mX2NociB9O1xuICAgICAgICAgdG9fcG9zaXRpb24gPSB7IGxpbmUgPSB0b19saW5lOyBjaHIgPSB0b19jaHIgfTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuXG5sZXQgeW9qc29uX29mX2Fubm90ZWQgP2ZpbGVuYW1lcyBmICh4LCBsKSA9XG4gIGxldCBqcCA9IHRvX2NvbXBhY3RfeW9qc29uIGZpbGVuYW1lcyBsIGluXG4gIGlmIGpwID0gYE51bGwgdGhlblxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeCBdXG4gIGVsc2VcbiAgICBgQXNzb2MgWyBcInZhbFwiLCBmIHg7IFwibG9jXCIsIGpwIF1cblxubGV0IGFubm90ZWRfb2ZfeW9qc29uID9maWxlbmFtZXMgZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpOyAoXCJsb2NcIiwgbCkgXSB8IGBBc3NvYyBbIChcImxvY1wiLCBsKTsgKFwidmFsXCIsIHgpIF0gLT5cbiAgICBmIHgsIG9mX2NvbXBhY3RfeW9qc29uID9maWxlbmFtZXMgbFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCB4KSBdIC0+IGYgeCwgZHVtbXlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9yYW5nZSBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9fY29tcGFjdF95b2pzb24gTm9uZSBmKVxuXG5sZXQgc3RyaW5nX29mX3JhbmdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JhbmdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9yYW5nZSBwIGxiID1cbiAgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lczpOb25lIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCByYW5nZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmFuZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IGlzX2luY2x1ZGVkX2luIGZpbGUgeyBsaW5lOyBjaHIgfSByYW5nZSA9XG4gIGZpbGUgPSByYW5nZS5maWxlXG4gICYmIGxpbmUgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5saW5lXG4gICYmIGxpbmUgPD0gcmFuZ2UudG9fcG9zaXRpb24ubGluZVxuICAmJiAobGluZSA8PiByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmUgfHwgY2hyID49IHJhbmdlLmZyb21fcG9zaXRpb24uY2hyKVxuICAmJiAobGluZSA8PiByYW5nZS50b19wb3NpdGlvbi5saW5lIHx8IGNociA8PSByYW5nZS50b19wb3NpdGlvbi5jaHIpXG5cbmxldCBtZXJnZSBiIGUgPVxuICBsZXQgKCkgPSBhc3NlcnQgKGIuZmlsZSA9IGUuZmlsZSkgaW5cbiAge1xuICAgIGZpbGUgPSBiLmZpbGU7XG4gICAgZnJvbV9wb3NpdGlvbiA9IGIuZnJvbV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGUudG9fcG9zaXRpb247XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gRm9ybWF0XG5cbmxldCBsaXN0aSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyBlbCBdIC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBlbCBpblxuICAgICAgdHJhaWxpbmcgZlxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBoIGluXG4gICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgYXV4IChzdWNjIGFjYykgZiB0XG4gIGluXG4gIGF1eCAwIGYgbFxuXG5sZXQgbGlzdCA/dHJhaWxpbmcgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxpc3RpID90cmFpbGluZyBwcl9zZXAgKGZ1biBfIGYgeCAtPiBwcl9lbCBmIHgpIGYgbFxuXG5sZXQgc2V0ID90cmFpbGluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgZiBzZXQgPVxuICBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiAoZWxlbWVudHMgc2V0KVxuXG5sZXQgaGFzaHRibCBwcl9zZXAgcHJfZWwgZiB0YmwgPVxuICBsaXN0IHByX3NlcCBwcl9lbCBmIChIYXNodGJsLmZvbGQgKGZ1biBhIGIgbCAtPiAoYSwgYikgOjogbCkgdGJsIFtdKVxuXG5sZXQgYm90dG9tIGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDhBXFx4QTVcIlxubGV0IG51IGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhDRVxceEJEXCJcbmxldCBlbXB0eV9zZXQgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG5sZXQgY29tbWEgZiA9IGZwcmludGYgZiBcIixAIFwiXG5sZXQgZG90IGYgPSBmcHJpbnRmIGYgXCIuXCJcbmxldCBjb21wYWN0X2NvbW1hIGYgPSBmcHJpbnRmIGYgXCIsQCxcIlxubGV0IGNvbG9uIGYgPSBmcHJpbnRmIGYgXCI7QCBcIlxubGV0IHNwYWNlIGYgPSBwcF9wcmludF9zcGFjZSBmICgpXG5sZXQgY3V0IGYgPSBwcF9wcmludF9jdXQgZiAoKVxubGV0IGVtcHR5IF8gPSAoKVxubGV0IHVuaXQgXyAoKSA9ICgpXG5sZXQgcGFpciBwcGEgcHBiIGYgKGEsIGIpID0gZnByaW50ZiBmIFwiKCVhLCAlYSlcIiBwcGEgYSBwcGIgYlxuXG5sZXQgb3B0aW9uID8od2l0aF9zcGFjZSA9IHRydWUpIHByIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICBmcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX3NwYWNlIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gICAgICBwciB4XG5cbmxldCBhcnJheSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJfc2VwIGYgaW5cbiAgICAgICAgYXV4IChzdWNjIGkpIGZcbiAgICAgICkgZWxzZSBpZiBpID4gMCB0aGVuXG4gICAgICAgIHRyYWlsaW5nIGZcbiAgICApXG4gIGluXG4gIGF1eCAwIGZcblxubGV0IHBsYWluX2FycmF5IHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVhXCIgaSBwcl9lbCBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCI7QCwldFwiIChhdXggKHN1Y2MgaSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiW3wldHxdXCIgKGF1eCAwKVxuXG5sZXQgZXJyb3IgcHIgeCA9IGVwcmludGYgXCIlYUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSB4XG5cbmxldCBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgbCA9XG4gIGxldCByZWMgYXV4ICgpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IFsgZWwgXSAtPiBwcl9lbCAoKSBlbFxuICAgIHwgaCA6OiB0IC0+IHNwcmludGYgXCIlYSV0JWFcIiBwcl9lbCBoIHByX3NlcCBhdXggdFxuICBpblxuICBhdXggKCkgbFxuXG5sZXQgc2V0X3RvX3N0cmluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgKCkgc2V0ID1cbiAgbGlzdF90b19zdHJpbmcgcHJfc2VwIHByX2VsICgpIChlbGVtZW50cyBzZXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IGludFxudHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHQgKiBrZXkgKiB0ICogaW50ICogSW50NjQudFxuKCpOb2RlKGxlZnQsa2V5LHJpZ2h0LGhlaWdodCxhY2MpKilcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxubGV0IGFjY3ZhbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChfLCBfLCBfLCBfLCBhY2MpIC0+IGFjY1xuXG5sZXQgdG90YWwgPSBhY2N2YWxcblxubGV0IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChsLCBfLCByLCBfLCBhY2MpIC0+IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpXG5cbmxldCByZWMgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBOb2RlIChsLCBrLCByLCBfLCBhY2MpIGFzIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+PCVkLCVMaSglTGkpPkAsWyVhQCx8JWFALF1cIiBrIGFjYyAod2VpZ2h0IHgpXG4gICAgICBwcmludCBsIHByaW50IHJcblxubGV0IGNyZWF0ZSBsIGtleSBhY2MgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIE5vZGUgKGwsIGtleSwgciwgc3VjYyAobWluIGhsIGhyKSwgYWNjKVxuXG5sZXQgYmFsIGwgeCB3IHIgPVxuICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICBpZiBobCA+IGhyICsgMiB0aGVuIChcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgYWNjX2wpIC0+XG4gICAgICBsZXQgYWNjX3IgPSBhY2N2YWwgciBpblxuICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgIGNyZWF0ZSBsbCBsdlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICAoY3JlYXRlIGxyIHggKEludDY0LmFkZCAoSW50NjQuYWRkIHcgKGFjY3ZhbCBscikpIGFjY19yKSByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfbHJyID0gYWNjdmFsIGxyciBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsbCBsdiAoSW50NjQuc3ViIGFjY19sIGFjY19scnIpIGxybClcbiAgICAgICAgICAgIGxydlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBscnIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2xyciB3KSBhY2NfcikgcilcbiAgICAgIClcbiAgKSBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gKFxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBhY2NfcikgLT5cbiAgICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgY3JlYXRlXG4gICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIChhY2N2YWwgcmwpKSBybClcbiAgICAgICAgICBydlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICByclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfcmxsID0gYWNjdmFsIHJsbCBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19ybGwpIHJsbClcbiAgICAgICAgICAgIHJsdlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBybHIgcnYgKEludDY0LnN1YiBhY2NfciBhY2NfcmxsKSBycilcbiAgICAgIClcbiAgKSBlbHNlIChcbiAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpIHJcbiAgKVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBOb2RlIF8gLT4gZmFsc2VcblxubGV0IHJlYyBhZGQga2V5IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9kZSAoRW1wdHksIGtleSwgRW1wdHksIDEsIEludDY0Lm9mX2ludCB3ZWlnaHQpXG4gIHwgTm9kZSAobCwga2V5JywgciwgaCwgYWNjKSAtPlxuICAgIGlmIGtleSA9IGtleScgdGhlblxuICAgICAgTm9kZVxuICAgICAgICAoIGwsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHIsXG4gICAgICAgICAgaCxcbiAgICAgICAgICBJbnQ2NC5hZGQgKEludDY0LmFkZCAoSW50NjQub2ZfaW50IHdlaWdodCkgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSApXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0JyA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBrZXkgPCBrZXknIHRoZW5cbiAgICAgICAgYmFsIChhZGQga2V5IHdlaWdodCBsKSBrZXknIHdlaWdodCcgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCBrZXknIHdlaWdodCcgKGFkZCBrZXkgd2VpZ2h0IHIpXG4gICAgKVxuXG5sZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgIGlmIGFpbV9hY2MgPj0gYWNjIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICBmaW5kX2FjYyBhaW1fYWNjIGxcbiAgICAgIGVsc2UgaWYgSW50NjQuYWRkIGFjY19yIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIChJbnQ2NC5zdWIgYWltX2FjYyBhY2NfbCkgclxuICAgICAgZWxzZVxuICAgICAgICBrZXlcbiAgICApXG5cbmxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBOb2RlIChsLCBrZXknLCByLCBfLCBfKSAtPlxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBrZXkga2V5JyBpblxuICAgIGMgPSAwXG4gICAgfHwgbWVtIGtleVxuICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByKVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBOb2RlIChFbXB0eSwgeCwgciwgXywgYWNjKSAtPiB4LCBJbnQ2NC5zdWIgYWNjIChhY2N2YWwgcilcbiAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fYmluZGluZyBsXG5cbmxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmVtb3ZlX21pbl9lbHRcIlxuICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gIHwgTm9kZSAobCwgeCwgciwgXywgYWNjKSAtPlxuICAgIGxldCB3ZWlnaHQgPSBJbnQ2NC5zdWIgKEludDY0LnN1YiBhY2MgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSBpblxuICAgIGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHggd2VpZ2h0IHJcblxubGV0IG1lcmdlIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBFbXB0eSwgdCAtPiB0XG4gIHwgdCwgRW1wdHkgLT4gdFxuICB8IE5vZGUgXywgTm9kZSBfIC0+XG4gICAgbGV0IHgsIHcgPSBtaW5fYmluZGluZyB0MiBpblxuICAgIGJhbCB0MSB4IHcgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxubGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBOb2RlIChsLCB2LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIHggdiBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIG1lcmdlIGwgclxuICAgIGVsc2UgKFxuICAgICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGJhbCAocmVtb3ZlIHggbCkgdiB3ZWlnaHQgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCB2IHdlaWdodCAocmVtb3ZlIHggcilcbiAgICApXG4oKlxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gaXRlciBmIGw7IGYgdiAod2VpZ2h0IHgpOyBpdGVyIGYgclxuXG5sZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICBtYXRjaCBtIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gZm9sZCBmIHIgKGYgdiAod2VpZ2h0IHgpIChmb2xkIGYgbCBhY2N1KSlcbiopXG5cbigqKlJldHVybnMgKGtleSx2YWx1ZSkgYXQgcmFuZG9tIGluIHRoZSB0cmVlKilcbmxldCByYW5kb20gc3RhdGUgbSA9XG4gIHRyeVxuICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlIChhY2N2YWwgbSkgaW5cbiAgICBmaW5kX2FjYyByIG1cbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLnJhbmRvbV92YWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0dXMgPVxuICBbIGBPS1xuICB8IGBBY2NlcHRlZFxuICB8IGBDcmVhdGVkXG4gIHwgYEJhZF9yZXF1ZXN0XG4gIHwgYENvbmZsaWN0XG4gIHwgYE5vdF9mb3VuZFxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgXVxuKCoqIFRoZSBzdWJzZXQgb2YgW0NvaHR0cC5Db2RlLnN0YXR1c10gd2UgbmVlZCAqKVxuXG50eXBlIG1lc3NhZ2UgPSB7XG4gIHNldmVyaXR5OiBMb2dzLmxldmVsO1xuICB0ZXh0OiBzdHJpbmc7ICgqc2hvdWxkIGJlIGFuIGFsZ2VicmFpYyB0eXBlKilcbiAgcmFuZ2U6IExvYy50IG9wdGlvbjtcbn1cblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICB2YWx1ZTogKCdhLCAnYikgUmVzdWx0LnJlc3VsdDtcbiAgc3RhdHVzOiBzdGF0dXM7XG4gIG1lc3NhZ2VzOiBtZXNzYWdlIGxpc3Q7XG59XG5cbmxldCB3cml0ZV9zZXZlcml0eSBvYiB4ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdcIicgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKExvZ3MubGV2ZWxfdG9fc3RyaW5nIChTb21lIHgpKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgcmVhZF9zZXZlcml0eSBwIGxiID1cbiAgbWF0Y2ggTG9ncy5sZXZlbF9vZl9zdHJpbmcgKFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKSB3aXRoXG4gIHwgUmVzdWx0Lk9rIChTb21lIHgpIC0+IHhcbiAgfCBSZXN1bHQuT2sgTm9uZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJNZXNzYWdlIG9mIG5vIHNldmVyaXR5XCIpXG4gIHwgUmVzdWx0LkVycm9yIChgTXNnIHgpIC0+XG4gICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIldoaWxlIHJlYWRpbmcgc2V2ZXJpdHk6IFwiIF4geCkpXG5cbmxldCB3cml0ZV9zdGF0dXMgb2IgPSBmdW5jdGlvblxuICB8IGBPSyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMFwiXG4gIHwgYEFjY2VwdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAyXCJcbiAgfCBgQ3JlYXRlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMVwiXG4gIHwgYEJhZF9yZXF1ZXN0IC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDAwXCJcbiAgfCBgQ29uZmxpY3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDlcIlxuICB8IGBOb3RfZm91bmQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDRcIlxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDhcIlxuXG5sZXQgcmVhZF9zdGF0dXMgcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiIHdpdGhcbiAgfCAyMDAgLT4gYE9LXG4gIHwgMjAyIC0+IGBBY2NlcHRlZFxuICB8IDIwMSAtPiBgQ3JlYXRlZFxuICB8IDQwMCAtPiBgQmFkX3JlcXVlc3RcbiAgfCA0MDkgLT4gYENvbmZsaWN0XG4gIHwgNDA0IC0+IGBOb3RfZm91bmRcbiAgfCA0MDggLT4gYFJlcXVlc3RfdGltZW91dFxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAoXCJTdGF0dXMgXCIgXiBzdHJpbmdfb2ZfaW50IHggXiBcIiBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mIEthcHBhXCIpKVxuXG5sZXQgd3JpdGVfbWVzc2FnZSBvYiB7IHNldmVyaXR5OyB0ZXh0OyByYW5nZSB9ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNldmVyaXR5XCIgd3JpdGVfc2V2ZXJpdHkgb2Igc2V2ZXJpdHkgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0ZXh0XCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiB0ZXh0IGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSByIC0+XG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJyYW5nZVwiIExvYy53cml0ZV9yYW5nZSBvYiByXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfbWVzc2FnZSBwIGxiID1cbiAgbGV0IHNldmVyaXR5LCB0ZXh0LCByYW5nZSA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChzLCB0LCByKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNldmVyaXR5XCIgdGhlblxuICAgICAgICAgIHJlYWRfc2V2ZXJpdHkgcCBsYiwgdCwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwidGV4dFwiIHRoZW5cbiAgICAgICAgICBzLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwicmFuZ2VcIiB0aGVuXG4gICAgICAgICAgcywgdCwgU29tZSAoTG9jLnJlYWRfcmFuZ2UgcCBsYilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciAoXCJObyBmaWVsZCBcIiBeIGtleSBeIFwiIGV4cGVjdGVkIGluIG1lc3NhZ2VcIikpKVxuICAgICAgKExvZ3MuQXBwLCBcIlwiLCBOb25lKSBwIGxiXG4gIGluXG4gIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH1cblxubGV0IHByaW50X21lc3NhZ2UgZiB7IHJhbmdlOyB0ZXh0OyBfIH0gPVxuICBtYXRjaCByYW5nZSB3aXRoXG4gIHwgU29tZSByYW5nZSAtPiBMb2MucHJpbnRfYW5ub3RlZCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHRleHQsIHJhbmdlKVxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHRleHRcblxubGV0IHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiA9IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiT2tcXFwiLFwiO1xuICAgIHdyaXRlX19vayBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiRXJyb3JcXFwiLFwiO1xuICAgIHdyaXRlX19lcnJvciBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCBzdHJpbmdfb2ZfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfdF9jb250ZW50IGYgcCBsYiA9XG4gIGxldCB2ID0gZiBwIGxiIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgcyA9IHJlYWRfc3RhdHVzIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIHYsIHMsIFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgcmVhZF9tZXNzYWdlIHAgbGJcblxubGV0IHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciBwIGxiID1cbiAgbGV0IGF1eF9yZWFkX3QgY2xvc2luZyBwIGxiID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGxldCBvdXQgPVxuICAgICAgWW9qc29uLkJhc2ljLm1hcF9pZGVudCBwXG4gICAgICAgIChmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YiBzIHBvcyBsZW4gd2l0aFxuICAgICAgICAgIHwgXCJPa1wiIC0+XG4gICAgICAgICAgICBsZXQgdiwgc3RhdHVzLCBtZXNzYWdlcyA9IHJlYWRfdF9jb250ZW50IHJlYWRfX29rIHAgbGIgaW5cbiAgICAgICAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgdjsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICAgICAgfCBcIkVycm9yXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fZXJyb3IgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uSnNvbl9lcnJvclxuICAgICAgICAgICAgICAgICAoXCJGaWVsZCBcXFwiXCIgXiB4IF4gXCJcXFwiIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgcmVzdWx0IHR5cGVcIikpKVxuICAgICAgICBsYlxuICAgIGluXG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBjbG9zaW5nIHAgbGI7XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBvdXRcbiAgaW5cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICB8IGBFZGd5X2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9ndCBwIGxiXG4gIHwgYERvdWJsZV9xdW90ZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJOb3Qgb2YgcmVzdWx0IHR5cGVcIilcbiAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYlxuXG5sZXQgdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgbGlmdCA/KG9rX3N0YXR1cyA9IGBPSykgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBva19zdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuICB8IFJlc3VsdC5FcnJvciBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IGVycm9yX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBmb2xkIH4ob2sgOiAnb2sgLT4gJ2EpIH4oZXJyb3IgOiAnZXJyb3IgLT4gJ2EpIDogKCdvaywgJ2Vycm9yKSB0IC0+ICdhID1cbiAgZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIG87IF8gfSAtPiBvayBvXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBlOyBfIH0gLT4gZXJyb3IgZVxuXG5sZXQgYmluZCA6XG4gICAgdHlwZSBvayBhIGVyci5cbiAgICA/b3ZlcndyaXRlX3N0YXR1czpzdGF0dXMgLT5cbiAgICA/ZXJyb3Jfc3RhdHVzOnN0YXR1cyAtPlxuICAgIChvayAtPiAoYSwgZXJyKSBSZXN1bHQucmVzdWx0KSAtPlxuICAgIChvaywgZXJyKSB0IC0+XG4gICAgKGEsIGVycikgdCA9XG4gZnVuID9vdmVyd3JpdGVfc3RhdHVzID8oZXJyb3Jfc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgKG1hdGNoIG9rIG8gd2l0aFxuICAgIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPlxuICAgICAgKG1hdGNoIG92ZXJ3cml0ZV9zdGF0dXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgfCBTb21lIHN0YXR1cyAtPiB7IHZhbHVlOyBzdGF0dXM7IG1lc3NhZ2VzIH0pKVxuXG5sZXQgbWFwIDogdHlwZSBvayBhIGVyci4gKG9rIC0+IGEpIC0+IChvaywgZXJyKSB0IC0+IChhLCBlcnIpIHQgPVxuIGZ1biBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgeyB2YWx1ZSA9IFJlc3VsdC5PayAob2sgbyk7IHN0YXR1czsgbWVzc2FnZXMgfVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuXG5sZXQgbWFwMiA6XG4gICAgdHlwZSBhIGIgb2sgZXJyLiAoYSAtPiBiIC0+IG9rKSAtPiAoYSwgZXJyKSB0IC0+IChiLCBlcnIpIHQgLT4gKG9rLCBlcnIpIHQgPVxuIGZ1biBmIGEgYiAtPlxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoIHsgdmFsdWUgPSBSZXN1bHQuT2sgYTsgbWVzc2FnZXM7IF8gfSxcbiAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgYjsgc3RhdHVzOyBtZXNzYWdlcyA9IG0nIH0gKSAtPlxuICAgIHtcbiAgICAgIHZhbHVlID0gUmVzdWx0Lk9rIChmIGEgYik7XG4gICAgICBzdGF0dXM7XG4gICAgICBtZXNzYWdlcyA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbScpIG1lc3NhZ2VzO1xuICAgIH1cbiAgfCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSksIF8gLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgXzsgXyB9LCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSkgLT4gZVxuXG5sZXQgZXJyb3IgPyhzdGF0dXMgPSBgQmFkX3JlcXVlc3QpIChlcnJvciA6ICdlcnJvcikgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGVycm9yOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuXG5sZXQgb2sgPyhzdGF0dXMgPSBgT0spIChvayA6ICdvaykgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0Lk9rIG9rOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuZXhjZXB0aW9uIE5vdEJpamVjdGl2ZVxuZXhjZXB0aW9uIENsYXNoaW5nXG5cbmxldCBzcGVjaWFsX3ZhbCA9IG1heF9pbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGltbWVkaWF0ZTogaW50IGFycmF5O1xuICBtdXRhYmxlIGRlbGF5ZWQ6ICh0ICogdCkgb3B0aW9uO1xuICBtdXRhYmxlIGlzX2lkZW50aXR5OiBib29sO1xuICBtdXRhYmxlIGRzdHM6IE1vZHMuSW50U2V0LnQ7XG59XG5cbmxldCBlbXB0eSAoKSA9XG4gIHtcbiAgICBpbW1lZGlhdGUgPSBbfHxdO1xuICAgIGRlbGF5ZWQgPSBOb25lO1xuICAgIGlzX2lkZW50aXR5ID0gdHJ1ZTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGR1bW15ID0gZW1wdHkgKClcblxubGV0IGlkZW50aXR5IGwgPVxuICBsZXQgbWF4ID0gTGlzdC5mb2xkX2xlZnQgbWF4IDAgbCBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyBtYXgpIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IExpc3QuaXRlciAoZnVuIHggLT4gaW1tZWRpYXRlLih4KSA8LSB4KSBsIGluXG4gIHtcbiAgICBpbW1lZGlhdGU7XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBvdXQgeCAtPiBNb2RzLkludFNldC5hZGQgeCBvdXQpIE1vZHMuSW50U2V0LmVtcHR5IGw7XG4gIH1cblxubGV0IGlzX2lkZW50aXR5IGkgPSBpLmlzX2lkZW50aXR5XG5cbmxldCByZWMgY29tcHV0ZSBrIGkgPVxuICBsZXQgdiA9IGkuaW1tZWRpYXRlLihrKSBpblxuICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICB2XG4gIGVsc2UgKFxuICAgIG1hdGNoIGkuZGVsYXllZCB3aXRoXG4gICAgfCBOb25lIC0+IHNwZWNpYWxfdmFsXG4gICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgaWYgayA+PSBBcnJheS5sZW5ndGggeC5pbW1lZGlhdGUgdGhlblxuICAgICAgICBzcGVjaWFsX3ZhbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2JyA9IGNvbXB1dGUgayB4IGluXG4gICAgICAgIGlmIHYnID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIHkgaW5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBpZiB2JycgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICAgIHYnXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHYnJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaS5pbW1lZGlhdGUuKGspIDwtIG8gaW5cbiAgICAgICAgICBvXG4gICAgICAgIClcbiAgICAgIClcbiAgKVxuXG5sZXQgZm9yY2UgaSA9XG4gIGlmIGkuZGVsYXllZCA8PiBOb25lIHRoZW4gKFxuICAgIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gayBfIC0+IGlnbm9yZSAoY29tcHV0ZSBrIGkpKSBpLmltbWVkaWF0ZSBpblxuICAgIGkuZGVsYXllZCA8LSBOb25lXG4gIClcblxubGV0IHRvX2xpc3QgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIChpLCB2KSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGkuaW1tZWRpYXRlXG4gIHw+IExpc3QucmV2XG5cbmxldCBpbWFnZSBpID0gaS5kc3RzXG5cbmxldCB1bnNhZmVfZnVuY3Rpb25uYWxfYWRkIHggeSBpID1cbiAgbGV0IGwgPSBtYXggKEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSkgKHggKyAxKSBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSBsIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBpblxuICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gaS5kZWxheWVkO1xuICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiB4ID09IHk7XG4gICAgZHN0cyA9IE1vZHMuSW50U2V0LmFkZCB5IGkuZHN0cztcbiAgfVxuXG5sZXQgYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBpJyA9IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgaW5cbiAgICBpZiBpLmRzdHMgPT0gaScuZHN0cyB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSBpJ1xuICApXG5cbmxldCB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgPVxuICBsZXQgKCkgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gICAgaWYgeCA+PSBsIHRoZW4gKFxuICAgICAgbGV0IGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgKHN1Y2MgeCkgc3BlY2lhbF92YWwgaW5cbiAgICAgIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCBsIGluXG4gICAgICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAgICAgIGkuaW1tZWRpYXRlIDwtIGltbWVkaWF0ZVxuICAgICkgZWxzZVxuICAgICAgaS5pbW1lZGlhdGUuKHgpIDwtIHlcbiAgaW5cbiAgbGV0ICgpID0gaS5pc19pZGVudGl0eSA8LSBpLmlzX2lkZW50aXR5ICYmIHggPT0geSBpblxuICBpLmRzdHMgPC0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzXG5cbmxldCBpbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSB4IHkgaSA9XG4gIGxldCBub3Rfb2sgPVxuICAgIGRlYnVnX21vZGUgJiYgeCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBpLmltbWVkaWF0ZS4oeCkgPD4gc3BlY2lhbF92YWxcbiAgaW5cbiAgaWYgbm90X29rIHRoZW5cbiAgICByYWlzZSBDbGFzaGluZ1xuICBlbHNlIChcbiAgICBsZXQgb3JpZ2luID0gaS5kc3RzIGluXG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHggeSBpIGluXG4gICAgbm90IChpLmRzdHMgPT0gb3JpZ2luKVxuICApXG5cbmxldCByZWMgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IHByZSA9IGZ1bmN0aW9uXG4gIHwgXyB3aGVuIHByZSA9IGlkIC0+IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCBwcmUgbWF4IHN1YnN0XG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBoIHN1YnN0IGluXG4gICAgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IGggdFxuXG5sZXQgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdCB+c3RvcF9hdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJSZW5hbWluZy5jeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0XCJcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBoIHN0b3BfYXQgb3V0IGggdCBpblxuICAgIG91dFxuXG5sZXQgbWVtIHggaSA9IHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgY29tcHV0ZSB4IGkgPD4gc3BlY2lhbF92YWxcblxubGV0IGZvbGQgZiBpIGFjYyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGYgaSB2IGFjYylcbiAgICBhY2MgaS5pbW1lZGlhdGVcblxubGV0IGFwcGx5IH5kZWJ1Z19tb2RlIGkgeCA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZGVidWdfbW9kZSB0aGVuIChcbiAgICBsZXQgYyA9IGNvbXB1dGUgeCBpIGluXG4gICAgaWYgYyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgIHJhaXNlIFVuZGVmaW5lZFxuICAgIGVsc2VcbiAgICAgIGNcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgY29tcG9zZSB+ZGVidWdfbW9kZSBleHRlbnNpYmxlIGkgaScgPVxuICBpZiAobm90IGkuaXNfaWRlbnRpdHkpIHx8IGV4dGVuc2libGUgfHwgZGVidWdfbW9kZSB0aGVuXG4gICAge1xuICAgICAgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBzcGVjaWFsX3ZhbDtcbiAgICAgIGRlbGF5ZWQgPSBTb21lIChpLCBpJyk7XG4gICAgICBpc19pZGVudGl0eSA9IGkuaXNfaWRlbnRpdHkgJiYgaScuaXNfaWRlbnRpdHk7XG4gICAgICBkc3RzID1cbiAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gdicgc2V0IC0+XG4gICAgICAgICAgICBsZXQgdicnID0gY29tcHV0ZSB2JyBpJyBpblxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIHYnJyBzZXQpXG4gICAgICAgICAgaS5kc3RzIE1vZHMuSW50U2V0LmVtcHR5O1xuICAgIH1cbiAgKCogbGV0IHNpZ21hLGlzX2lkID1cbiAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4geCB5IChvdXQsaXNfaWQpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHkgaScuc2lnbWEgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeiAtPiAoTW9kcy5JbnRNYXAuYWRkIHggeiBvdXQsaXNfaWQgJiYgeD09eilcbiAgICAgICAgICAgfCBOb25lIC0+IChvdXQsaXNfaWQgJiYgeD09eSlcbiAgICAgICAgICkgaS5zaWdtYSAoaS5zaWdtYSx0cnVlKVxuICAgICBpblxuICAgICB7c2lnbWE9c2lnbWEgOyBpc19pZGVudGl0eT1pc19pZCA7IGRzdHMgPSBpJy5kc3RzfVxuICAqKVxuICBlbHNlXG4gICAgaSdcblxubGV0IGludmVyc2UgaSA9XG4gIGlmIGkuaXNfaWRlbnRpdHkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IGVtcHR5ICgpIGluXG4gICAgbGV0ICgpID0gZm9yY2UgaSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgIGlmIHkgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgeSA8IEFycmF5Lmxlbmd0aCBvdXQuaW1tZWRpYXRlICYmIG91dC5pbW1lZGlhdGUuKHkpIDw+IHNwZWNpYWxfdmFsXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIE5vdEJpamVjdGl2ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeSB4IG91dClcbiAgICAgICAgaS5pbW1lZGlhdGVcbiAgICBpblxuICAgIG91dFxuICApXG5cbmxldCBjb21wYXJlIGkgaScgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGxldCAoKSA9IGZvcmNlIGknIGluXG4gIFRvb2xzLmFycmF5X2NvbXBhcmUgTW9kcy5pbnRfY29tcGFyZSBpLmltbWVkaWF0ZSBpJy5pbW1lZGlhdGVcblxubGV0IGVxdWFsIGkgaScgPSBjb21wYXJlIGkgaScgPSAwXG5cbmxldCBtaW5fZWx0IGkgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSBpblxuICBsZXQgcmVjIGF1eF9taW5fZWx0IGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXB1dGUgayBpIGluXG4gICAgICBpZiBvID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhdXhfbWluX2VsdCAoc3VjYyBrKVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChrLCBvKVxuICAgIClcbiAgaW5cbiAgYXV4X21pbl9lbHQgMFxuXG5sZXQgcHJpbnQgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBpZ25vcmVcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGIgZHN0IC0+XG4gICAgICAgICBpZiBzcmMgPD4gZHN0ICYmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuIChcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlaS0+JWlcIlxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgIHNyYyBkc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgIGIpXG4gICAgICAgZmFsc2UgaS5pbW1lZGlhdGUpXG5cbmxldCBwcmludF9mdWxsIGYgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzcmMgZiBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGlmIHNyYyA8PiBkc3QgdGhlblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaS0+JWlcIiBzcmMgZHN0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGYgc3JjKSlcbiAgICBpLmltbWVkaWF0ZVxuXG5sZXQgdG9feW9qc29uIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGBMaXN0XG4gICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAoZnVuIHNyYyBhY2MgZHN0IC0+XG4gICAgICAgICBpZiBkc3QgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIDo6IGFjY1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhY2MpXG4gICAgICAgW10gaS5pbW1lZGlhdGUpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYExpc3QgWyBgSW50IHNyYzsgYEludCBkc3QgXSBhcyB4IC0+XG4gICAgICAgICAgICBpZiBub3QgKGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlOmZhbHNlIHNyYyBkc3Qgb3V0KSB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nIGl0ZW1cIiwgeCkpXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIG91dFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0cmVlID0ge1xuICBtYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgdW5tYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgbXV0YWJsZSBuZXdfbWFzazogaW50O1xuICBtdXRhYmxlIGluZl9saXN0OiBNb2RzLkludFNldC50O1xuICBzaXplOiBpbnQ7XG4gIHdlaWdodF9vZl9ub2RlczogZmxvYXQgYXJyYXk7XG4gIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXk7XG4gIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHM6IGJvb2wgYXJyYXk7XG4gIGxheWVyOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgY29uc2lzdGVudDogYm9vbDtcbn1cblxubGV0IG1hc2sgdCBpID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0Lm1hc2sgaVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBtID0gdC5uZXdfbWFzayBpblxuICAgIGxldCAoKSA9IHQubmV3X21hc2sgPC0gbSArIDEgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgdC5tYXNrIGkgbSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0LnVubWFzayBtIGkgaW5cbiAgICBtXG5cbmxldCB1bm1hc2sgdCBtID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0LnVubWFzayBtXG4gIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiUmFuZG9tX3RyZWU6IGluY29oZXJlbnQgaGFzaFwiXG5cbmxldCBpc19pbmZpbml0ZSBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIE1vZHMuSW50U2V0Lm1lbSBpIHQuaW5mX2xpc3RcblxubGV0IGZpbmQgaSB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICB0LndlaWdodF9vZl9ub2Rlcy4oaSlcblxubGV0IGNvcHkgdCA9XG4gIHtcbiAgICBtYXNrID0gSGFzaHRibC5jb3B5IHQubWFzaztcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNvcHkgdC51bm1hc2s7XG4gICAgbmV3X21hc2sgPSB0Lm5ld19tYXNrO1xuICAgIHNpemUgPSB0LnNpemU7XG4gICAgKCpcdHRvdGFsID0gdC50b3RhbCA7KilcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSBBcnJheS5jb3B5IHQud2VpZ2h0X29mX25vZGVzO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfc3VidHJlZXM7XG4gICAgbGF5ZXIgPSBBcnJheS5jb3B5IHQubGF5ZXI7XG4gICAgY29uc2lzdGVudCA9IHQuY29uc2lzdGVudDtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cyA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50cztcbiAgICBpbmZfbGlzdCA9IE1vZHMuSW50U2V0LmVtcHR5O1xuICB9XG5cbmxldCBjb3B5X3ZlY3RfaW4gdCB0MSA9IEFycmF5Lml0ZXJpIChmdW4gaSBhIC0+IHQxLihpKSA8LSBhKSB0XG5cbmxldCBjb3B5X2luIHQxIHQyID1cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9ub2RlcyB0Mi53ZWlnaHRfb2Zfbm9kZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9zdWJ0cmVlcyB0Mi53ZWlnaHRfb2Zfc3VidHJlZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLmxheWVyIHQyLmxheWVyIGluXG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50cyB0Mi51bmJhbGFuY2VkX2V2ZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciB0Mi51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllclxuICBpblxuICBsZXQgKCkgPSB0Mi5jb25zaXN0ZW50IDwtIHQxLmNvbnNpc3RlbnQgaW5cbiAgdDJcblxubGV0IGlzX3Jvb3QgaSA9IGkgPSAxXG5cbmxldCBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0ID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgdC51bmJhbGFuY2VkX2V2ZW50cy4oaSkgdGhlbiAoXG4gICAgICBsZXQgbCA9IHQubGF5ZXIuKGkpIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSB0cnVlIGluXG4gICAgICB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihsKSA8LSBpIDo6IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpXG4gICAgKVxuICBpblxuICB0LmNvbnNpc3RlbnQgPC0gZmFsc2VcblxubGV0IHVwZGF0ZV9zdHJ1Y3R1cmUgdCA9XG4gIGlmIHQuY29uc2lzdGVudCB0aGVuXG4gICAgdFxuICBlbHNlIChcbiAgICBsZXQgbl9sYXllciA9IHQubGF5ZXIuKHQuc2l6ZSkgaW5cbiAgICBsZXQgdXBkYXRlX3N0cnVjdHVyZV9hdXggaSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oaSkgPC1cbiAgICAgICAgICAodC53ZWlnaHRfb2Zfbm9kZXMuKGkpXG4gICAgICAgICAgKy4gKGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDIgKiBpKSlcbiAgICAgICAgICArLlxuICAgICAgICAgIGlmICgyICogaSkgKyAxID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgIDAuXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKCgyICogaSkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSBmYWxzZSBpblxuICAgICAgaWYgbm90IChpc19yb290IGkpIHRoZW4gKFxuICAgICAgICBsZXQgZmF0aGVyID0gaSAvIDIgaW5cbiAgICAgICAgZGVjbGFyZV91bmJhbGFuY2VkIGZhdGhlciB0XG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbCA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIGluXG4gICAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIDwtIFtdIGluXG4gICAgICAgIGxldCAoKSA9IExpc3QuaXRlciB1cGRhdGVfc3RydWN0dXJlX2F1eCBsIGluXG4gICAgICAgIGF1eCAoayAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBhdXggbl9sYXllciBpblxuICAgIGxldCAoKSA9IHQuY29uc2lzdGVudCA8LSB0cnVlIGluXG4gICAgdFxuICApXG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCB0X25vZGUgPSBBcnJheS5tYWtlIChuICsgMSkgMC4gaW5cbiAgbGV0IHRfc3VidHJlZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgbGF5ZXIgPSBBcnJheS5tYWtlIChuICsgMSkgMCBpblxuICBsZXQgKCkgPVxuICAgIGxldCByZWMgYXV4IGsgY3VycmVudF9sYXllciBsYXllcl9lbmQgPVxuICAgICAgaWYgayA8PSBuIHRoZW5cbiAgICAgICAgaWYgayA+IGxheWVyX2VuZCB0aGVuXG4gICAgICAgICAgYXV4IGsgKGN1cnJlbnRfbGF5ZXIgKyAxKSAoKDIgKiBsYXllcl9lbmQpICsgMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gbGF5ZXIuKGspIDwtIGN1cnJlbnRfbGF5ZXIgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSBjdXJyZW50X2xheWVyIGxheWVyX2VuZFxuICAgICAgICApXG4gICAgaW5cbiAgICBhdXggMSAxIDFcbiAgaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkubWFrZSAobGF5ZXIuKG4pICsgMSkgW10gaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkubWFrZSAobiArIDEpIGZhbHNlIGluXG4gIHtcbiAgICBzaXplID0gbjtcbiAgICAoKlx0dG90YWwgPSAwLjsqKVxuICAgIG5ld19tYXNrID0gMTtcbiAgICBtYXNrID0gSGFzaHRibC5jcmVhdGUgKG4gKyAxKTtcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgY29uc2lzdGVudCA9IHRydWU7XG4gICAgd2VpZ2h0X29mX25vZGVzID0gdF9ub2RlO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IHRfc3VidHJlZTtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cztcbiAgICBsYXllcjtcbiAgfVxuXG5sZXQgYWRkIGkgdyB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICBpZiB3IDwgMC4gdGhlblxuICAgIGZhaWx3aXRoIFwiTmVnYXRpdmUgdmFsdWUgZm9yYmlkZGVuIGluIFJhbmRvbV90cmVlXCJcbiAgZWxzZSAoXG4gICAgbGV0IHcgPVxuICAgICAgaWYgdyA9IGluZmluaXR5IHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSB0LmluZl9saXN0IDwtIE1vZHMuSW50U2V0LmFkZCBpIHQuaW5mX2xpc3QgaW5cbiAgICAgICAgMC5cbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQucmVtb3ZlIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICB3XG4gICAgICApXG4gICAgaW5cbiAgICAoKlx0bGV0IHRvdGFsID0gdC50b3RhbCAtLiB0LndlaWdodF9vZl9ub2Rlcy4oaSkgKy4gdyBpbiopXG4gICAgbGV0ICgpID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIDwtIHcgaW5cbiAgICBsZXQgKCkgPSBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0IGluXG4gICAgKCkgKCp0LnRvdGFsIDwtIChtYXggMC4wIHRvdGFsKSAoKm5vdCBzYXRpc2ZhY3RvcnkqKSopXG4gIClcblxubGV0IHRvdGFsIHQgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSB0LmluZl9saXN0IHRoZW4gKFxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgaWYgdC5zaXplID0gMCB0aGVuXG4gICAgICAwLlxuICAgIGVsc2VcbiAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLigxKVxuICApIGVsc2VcbiAgICBpbmZpbml0eVxuXG5sZXQgcmFuZG9tIHJzIHQgPVxuICBtYXRjaCBNb2RzLkludFNldC5yYW5kb20gcnMgdC5pbmZfbGlzdCB3aXRoXG4gIHwgU29tZSB4IC0+IHVubWFzayB0IHgsIGluZmluaXR5XG4gIHwgTm9uZSAtPlxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgbGV0IGEgPSB0b3RhbCB0IGluXG4gICAgaWYgYSA8PSAwLiB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJzIGEgaW5cbiAgICAgIGxldCByZWMgZmluZCBpIHIgPVxuICAgICAgICBsZXQgbm9kZSA9IHQud2VpZ2h0X29mX25vZGVzLihpKSBpblxuICAgICAgICBpZiByIDwgbm9kZSB0aGVuXG4gICAgICAgICAgaSwgbm9kZVxuICAgICAgICBlbHNlIGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHInID0gciAtLiBub2RlIGluXG4gICAgICAgICAgbGV0IGxzb24gPSAyICogaSBpblxuICAgICAgICAgIGxldCByc29uID0gKDIgKiBpKSArIDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCA9IHQud2VpZ2h0X29mX3N1YnRyZWVzLihsc29uKSBpblxuICAgICAgICAgIGlmIHInIDwgbGVmdCB0aGVuXG4gICAgICAgICAgICBmaW5kIGxzb24gcidcbiAgICAgICAgICBlbHNlIGlmIHJzb24gPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZCByc29uIChyJyAtLiBsZWZ0KVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IHJlcCwgdyA9IGZpbmQgMSByIGluXG4gICAgICB1bm1hc2sgdCByZXAsIHdcbiAgICApXG5cbigqIFRPRE9cbiAgICB3ZWlnaHRfb2Zfc3VidHJlZXM6IGZsb2F0IGFycmF5IDtcbiAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheSA7XG4qKVxubGV0IGRlYnVnX3ByaW50IGYgdCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJXNjb25zaXN0ZW50OkAgW1wiXG4gICAgICAoaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICAgICAgIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcInVuXCIpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIGkgayAtPlxuICAgICAgICBsZXQgYmFsID1cbiAgICAgICAgICBpZiB0LnVuYmFsYW5jZWRfZXZlbnRzLihrKSB0aGVuXG4gICAgICAgICAgICBcIiFcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludiA9XG4gICAgICAgICAgaWYgSGFzaHRibC5maW5kIHQubWFzayBrID0gaSB0aGVuXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCIgbm90IGludm9sdXRpdmVcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW5mID1cbiAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0LndlaWdodF9vZl9ub2Rlcy4oaykgd2l0aFxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgd2hlbiBNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0IC0+IFwiXCJcbiAgICAgICAgICB8IEZQX2luZmluaXRlIC0+IFwiIG5vdCBpbiBpbmZfbGlzdFwiXG4gICAgICAgICAgfCBfIHdoZW4gbm90IChNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0KSAtPiBcIlwiXG4gICAgICAgICAgfCBGUF9ub3JtYWwgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfc3Vibm9ybWFsIC0+IFwiIGluIGluZl9saXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWk6JWYlcyVzLEAsXCIgYmFsIGkgdC53ZWlnaHRfb2Zfbm9kZXMuKGspIGluZiBpbnYpXG4gICAgICB0LnVubWFza1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBncmFwaF9wYWdlIHRpdGxlID9zdWJ0aXRsZSBkZXBzIGhlYWRlciBjb3JlIGYgPVxuICBsZXQgZGVwZW5kZW5jeSBmIHQgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0IHNyYz1cXFwiJXNcXFwiIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj48L3NjcmlwdD5cIiB0XG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PjwhZG9jdHlwZSBodG1sPkAsQCw8aHRtbD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGhlYWQ+QCw8bWV0YSBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiV0PC90aXRsZT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IFBwLmxpc3QgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlIGRlcGVuZGVuY3kgZiBkZXBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiBoZWFkZXIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48Ym9keT5ALDxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFsldCV0QF08L2gxPkAsXCIgdGl0bGUgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIHN1YnRpdGxlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALDxzbWFsbD4ldDwvc21hbGw+XCIgdClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0QCw8L2Rpdj5AXUAsPC9ib2R5PkAsPC9odG1sPkBdQC5cIiBjb3JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbl9hbGdfb3AgPSBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gfCBNSU4gfCBNQVhcbnR5cGUgdW5fYWxnX29wID0gTE9HIHwgU1FSVCB8IEVYUCB8IFNJTlVTIHwgQ09TSU5VUyB8IFRBTiB8IElOVCB8IFVNSU5VU1xuXG50eXBlIHN0YXRlX2FsZ19vcCA9XG4gIHwgQ1BVVElNRVxuICB8IFRJTUVfVkFSXG4gIHwgRVZFTlRfVkFSXG4gIHwgTlVMTF9FVkVOVF9WQVJcbiAgfCBUTUFYX1ZBUlxuICB8IEVNQVhfVkFSXG5cbnR5cGUgYmluX2Jvb2xfb3AgPSBBTkQgfCBPUlxudHlwZSB1bl9ib29sX29wID0gTk9UXG50eXBlIGNvbXBhcmVfb3AgPSBHUkVBVEVSIHwgU01BTExFUiB8IEVRVUFMIHwgRElGRlxudHlwZSByZXZfZGVwID0gQUxHIG9mIGludCB8IFJVTEUgb2YgaW50IHwgTU9ESUYgb2YgaW50XG5cbmxldCBiaW5fYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTVVMVCAtPiBcIipcIlxuICB8IFNVTSAtPiBcIitcIlxuICB8IERJViAtPiBcIi9cIlxuICB8IE1JTlVTIC0+IFwiLVwiXG4gIHwgUE9XIC0+IFwiXlwiXG4gIHwgTU9EVUxPIC0+IFwiW21vZF1cIlxuICB8IE1JTiAtPiBcIlttaW5dXCJcbiAgfCBNQVggLT4gXCJbbWF4XVwiXG5cbmxldCBiaW5fYWxnX29wX2lzX3ByZWZpeCA9IGZ1bmN0aW9uXG4gIHwgTUFYIHwgTUlOIC0+IHRydWVcbiAgfCBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gLT4gZmFsc2VcblxubGV0IHByaW50X2Jpbl9hbGdfb3AgZnggeCBmeSB5IGYgb3AgPVxuICBpZiBiaW5fYWxnX29wX2lzX3ByZWZpeCBvcCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzICglYSkgKCVhKVwiIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcCkgZnggeCBmeSB5XG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhICVzICVhKVwiIGZ4IHggKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeSB5XG5cbmxldCBiaW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIipcIiAtPiBNVUxUXG4gIHwgYFN0cmluZyBcIitcIiAtPiBTVU1cbiAgfCBgU3RyaW5nIFwiL1wiIC0+IERJVlxuICB8IGBTdHJpbmcgXCItXCIgLT4gTUlOVVNcbiAgfCBgU3RyaW5nIFwiXlwiIC0+IFBPV1xuICB8IGBTdHJpbmcgXCJbbW9kXVwiIC0+IE1PRFVMT1xuICB8IGBTdHJpbmcgXCJbbWluXVwiIC0+IE1JTlxuICB8IGBTdHJpbmcgXCJbbWF4XVwiIC0+IE1BWFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJpbl9hbGdfb3BcIiwgeCkpXG5cbmxldCB1bl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDT1NJTlVTIC0+IFwiW2Nvc11cIlxuICB8IFNJTlVTIC0+IFwiW3Npbl1cIlxuICB8IFRBTiAtPiBcIlt0YW5dXCJcbiAgfCBFWFAgLT4gXCJbZXhwXVwiXG4gIHwgU1FSVCAtPiBcIltzcXJ0XVwiXG4gIHwgSU5UIC0+IFwiW2ludF1cIlxuICB8IExPRyAtPiBcIltsb2ddXCJcbiAgfCBVTUlOVVMgLT4gXCItXCJcblxubGV0IHByaW50X3VuX2FsZ19vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAodW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW2Nvc11cIiAtPiBDT1NJTlVTXG4gIHwgYFN0cmluZyBcIltzaW5dXCIgLT4gU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Rhbl1cIiAtPiBUQU5cbiAgfCBgU3RyaW5nIFwiW2V4cF1cIiAtPiBFWFBcbiAgfCBgU3RyaW5nIFwiW3NxcnRdXCIgLT4gU1FSVFxuICB8IGBTdHJpbmcgXCJbaW50XVwiIC0+IElOVFxuICB8IGBTdHJpbmcgXCJbbG9nXVwiIC0+IExPR1xuICB8IGBTdHJpbmcgXCItXCIgLT4gVU1JTlVTXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgdW5fYWxnX29wXCIsIHgpKVxuXG5sZXQgc3RhdGVfYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQ1BVVElNRSAtPiBcIltUc2ltXVwiXG4gIHwgVElNRV9WQVIgLT4gXCJbVF1cIlxuICB8IEVWRU5UX1ZBUiAtPiBcIltFXVwiXG4gIHwgTlVMTF9FVkVOVF9WQVIgLT4gXCJbRS1dXCJcbiAgfCBUTUFYX1ZBUiAtPiBcIltUbWF4XVwiXG4gIHwgRU1BWF9WQVIgLT4gXCJbRW1heF1cIlxuXG5sZXQgcHJpbnRfc3RhdGVfYWxnX29wIGYgb3AgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltUc2ltXVwiIC0+IENQVVRJTUVcbiAgfCBgU3RyaW5nIFwiW1RdXCIgLT4gVElNRV9WQVJcbiAgfCBgU3RyaW5nIFwiW0VdXCIgLT4gRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltFLV1cIiAtPiBOVUxMX0VWRU5UX1ZBUlxuICB8IGBTdHJpbmcgXCJbVG1heF1cIiAtPiBUTUFYX1ZBUlxuICB8IGBTdHJpbmcgXCJbRW1heF1cIiAtPiBFTUFYX1ZBUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHN0YXRlX2FsZ19vcFwiLCB4KSlcblxubGV0IGJpbl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQU5EIC0+IFwiJiZcIlxuICB8IE9SIC0+IFwifHxcIlxuXG5sZXQgcHJpbnRfYmluX2Jvb2xfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoYmluX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IGJpbl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBiaW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiJiZcIiAtPiBBTkRcbiAgfCBgU3RyaW5nIFwifHxcIiAtPiBPUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJvb2xlYW4gb3BcIiwgeCkpXG5cbmxldCB1bl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTk9UIC0+IFwiW25vdF1cIlxuXG5sZXQgcHJpbnRfdW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcbmxldCB1bl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2Jvb2xfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltub3RdXCIgLT4gTk9UXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IGNvbXBhcmVfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBHUkVBVEVSIC0+IFwiPlwiXG4gIHwgU01BTExFUiAtPiBcIjxcIlxuICB8IEVRVUFMIC0+IFwiPVwiXG4gIHwgRElGRiAtPiBcIiE9XCJcblxubGV0IHByaW50X2NvbXBhcmVfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5sZXQgY29tcGFyZV9vcF90b19qc29uIG9wID0gYFN0cmluZyAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBjb21wYXJlX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCI+XCIgLT4gR1JFQVRFUlxuICB8IGBTdHJpbmcgXCI8XCIgLT4gU01BTExFUlxuICB8IGBTdHJpbmcgXCI9XCIgLT4gRVFVQUxcbiAgfCBgU3RyaW5nIFwiIT1cIiAtPiBESUZGXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgY29tcGFyZV9vcFwiLCB4KSlcblxubGV0IHByaW50X3Jldl9kZXAgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwicmF0ZV9vZl9ydWxlIFslaV1cIiBpZFxuICAoKlwicmF0ZSBvZiBydWxlICclYSdcIiAoTW9kZWwucHJpbnRfcnVsZSBlbnYpIGlkKilcbiAgfCBBTEcgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImFsZ2VicmFpYyB2YXJpYWJsZSBbJWldXCIgaWRcbiAgKCpcInZhcmlhYmxlICclYSdcIiAoTW9kZWwucHJpbnRfYWxnIGVudikgaWQqKVxuICB8IE1PRElGIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJpbnRlcnZlbnRpb24gWyVpXVwiIGlkXG5cbmxldCByZXZfZGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXVxuICB8IEFMRyBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTEdcIjsgYEludCBpZCBdXG4gIHwgTU9ESUYgaWQgLT4gYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdXG5cbmxldCByZXZfZGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUlVMRVwiOyBgSW50IGlkIF0gLT4gUlVMRSBpZFxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF0gLT4gQUxHIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdIC0+IE1PRElGIGlkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgcmV2X2RlcFwiLCB4KSlcblxubW9kdWxlIERlcFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcmV2X2RlcFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBwcmludF9yZXZfZGVwXG5lbmQpXG5cbm1vZHVsZSBEZXBTZXQgPSBEZXBTZXRNYXAuU2V0XG5cbmxldCBkZXBzZXRfdG9feW9qc29uIHggPVxuICBgTGlzdCAoRGVwU2V0LmZvbGQgKGZ1biB4IGEgLT4gcmV2X2RlcF90b195b2pzb24geCA6OiBhKSB4IFtdKVxuXG5sZXQgZGVwc2V0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRGVwU2V0LmVtcHR5XG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IERlcFNldC5hZGQgKHJldl9kZXBfb2ZfeW9qc29uIHgpIGFjYylcbiAgICAgIERlcFNldC5lbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGRlcHNldFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IEYgb2YgZmxvYXQgfCBJIG9mIGludCB8IEk2NCBvZiBJbnQ2NC50XG5cbmxldCBjYXN0X2Jpbl9vcCB+b3BfZiA/b3BfaSA/b3BfaTY0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IEYgeCwgRiB5IC0+IEYgKG9wX2YgeCB5KVxuICB8IEkgeCwgRiB5IC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSB5KVxuICB8IEYgeCwgSSB5IC0+IEYgKG9wX2YgeCAoZmxvYXRfb2ZfaW50IHkpKVxuICB8IEkgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHggeSkpXG4gIHwgSSB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKEludDY0LnRvX2Zsb2F0IHkpKVxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgKEludDY0Lm9mX2ludCB4KSB5KSlcbiAgfCBJNjQgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChmbG9hdF9vZl9pbnQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IChJbnQ2NC5vZl9pbnQgeSkpKVxuICB8IEk2NCB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IHkpKVxuICB8IEYgeCwgSTY0IHkgLT4gRiAob3BfZiB4IChJbnQ2NC50b19mbG9hdCB5KSlcbiAgfCBJNjQgeCwgRiB5IC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIHkpXG5cbmxldCBjYXN0X3VuX29wID9vcF9mID9vcF9pID9vcF9pNjQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuXCJcbiAgICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgKGludF9vZl9mbG9hdCB4KSkpKVxuICB8IEk2NCB4IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4KVxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiY2FzdF91bl9vcFwiXG4gICAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSkpKVxuICB8IEkgeCAtPlxuICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSkpKVxuXG5sZXQgY29tcGFyZSBuMSBuMiA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSSB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgRiB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoZmxvYXRfb2ZfaW50IHkpXG4gIHwgSSB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgKGZsb2F0X29mX2ludCB4KSB5XG4gIHwgSSB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQub2ZfaW50IHgpIHlcbiAgfCBJNjQgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSTY0IHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChJbnQ2NC5vZl9pbnQgeSlcbiAgfCBGIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0LnRvX2Zsb2F0IHkpXG4gIHwgSTY0IHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQudG9fZmxvYXQgeCkgeVxuXG5sZXQgaXNfZ3JlYXRlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPiAwXG5sZXQgaXNfc21hbGxlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPCAwXG5sZXQgaXNfZXF1YWwgbjEgbjIgPSBjb21wYXJlIG4xIG4yID0gMFxubGV0IGFkZCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKy4gKSB+b3BfaTooICsgKSB+b3BfaTY0OkludDY0LmFkZCBuMSBuMlxubGV0IHN1YiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggLS4gKSB+b3BfaTooIC0gKSB+b3BfaTY0OkludDY0LnN1YiBuMSBuMlxubGV0IG11bHQgbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjooICouICkgfm9wX2k6KCAqICkgfm9wX2k2NDpJbnQ2NC5tdWwgbjEgbjJcbmxldCBtaW4gbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptaW4gfm9wX2k6bWluIH5vcF9pNjQ6bWluIG4xIG4yXG5sZXQgbWF4IG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6bWF4IH5vcF9pOm1heCB+b3BfaTY0Om1heCBuMSBuMlxuXG5sZXQgcmVtIG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCBtb2QgKSB+b3BfaTY0OkludDY0LnJlbSB+b3BfZjptb2RfZmxvYXQgbjEgbjJcblxubGV0IGludGVybmFsX2RpdiBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9pOiggLyApIH5vcF9pNjQ6SW50NjQuZGl2IH5vcF9mOiggLy4gKSBuMSBuMlxuXG5sZXQgc3VjYyBuID0gY2FzdF91bl9vcCB+b3BfZjooKCArLiApIDEuKSB+b3BfaTpzdWNjIH5vcF9pNjQ6SW50NjQuc3VjYyBuXG5sZXQgcHJlZCBuID0gY2FzdF91bl9vcCB+b3BfZjooZnVuIHggLT4geCAtLiAxLikgfm9wX2k6cHJlZCB+b3BfaTY0OkludDY0LnByZWQgblxubGV0IG5lZyBuID0gY2FzdF91bl9vcCB+b3BfZjooIH4tLiApIH5vcF9pOiggfi0gKSB+b3BfaTY0OkludDY0Lm5lZyBuXG5cbmxldCB0b19mbG9hdCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgSSB4IC0+IFNvbWUgKGZsb2F0X29mX2ludCB4KVxuICB8IEk2NCB4IC0+IFNvbWUgKEludDY0LnRvX2Zsb2F0IHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBTb21lIHhcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IE5vbmUpXG5cbmxldCB0b19pbnQgbiA9XG4gIG1hdGNoIG4gd2l0aFxuICB8IEYgeCAtPiBpbnRfb2ZfZmxvYXQgeFxuICB8IEkgeCAtPiB4XG4gIHwgSTY0IHggLT4gSW50NjQudG9faW50IHggKCpNaWdodCBleGNlZWQgdGhlYmlnZ2VzdCAzMiBiaXRzIGludGVnZXIqKVxuXG5sZXQgemVybyA9IEkgMFxuXG5sZXQgaXNfemVybyA9IGZ1bmN0aW9uXG4gIHwgSTY0IHggLT4geCA9IEludDY0Lnplcm9cbiAgfCBJIHggLT4geCA9IDBcbiAgfCBGIHggLT4gVG9vbHMuZmxvYXRfaXNfemVybyB4XG5cbmxldCBvbmUgPSBJIDFcblxubGV0IGlzX3N0cmljdGx5X3Bvc2l0aXZlID0gZnVuY3Rpb25cbiAgfCBGIHggLT4geCA+IDAuXG4gIHwgSSB4IC0+IHggPiAwXG4gIHwgSTY0IHggLT4geCA+IEludDY0Lnplcm9cblxubGV0IHBvc19wb3cgbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfZjooICoqICkgfm9wX2k6VG9vbHMucG93IH5vcF9pNjQ6VG9vbHMucG93NjQgbjEgbjJcblxubGV0IHBvdyB4IG4gPVxuICBpZiBpc196ZXJvIG4gfHwgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgcG9zX3BvdyB4IG5cbiAgZWxzZSAoXG4gICAgbWF0Y2ggdG9fZmxvYXQgeCB3aXRoXG4gICAgfCBTb21lIHggLT4gcG9zX3BvdyAoRiAoMS4gLy4geCkpIChuZWcgbilcbiAgICB8IE5vbmUgLT4gRiBuYW5cbiAgKVxuXG5sZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmV0dHlfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZ1wiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmludF9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+ICgpKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gc3RyaW5nX29mX2Zsb2F0IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19zdHJpbmcgeFxuICB8IEkgeCAtPiBzdHJpbmdfb2ZfaW50IHhcblxubGV0IHJlYyBpdGVyaSBmIHggbiA9XG4gIGlmIGlzX3N0cmljdGx5X3Bvc2l0aXZlIG4gdGhlblxuICAgIGl0ZXJpIGYgKGYgbiB4KSAocHJlZCBuKVxuICBlbHNlXG4gICAgeFxuXG5sZXQgcmVjIG1heWJlX2l0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuIChcbiAgICBtYXRjaCBmIG4geCB3aXRoXG4gICAgfCBOb25lIC0+IHhcbiAgICB8IFNvbWUgeCcgLT4gbWF5YmVfaXRlcmkgZiB4JyAocHJlZCBuKVxuICApIGVsc2VcbiAgICB4XG5cbmxldCBvZl9zdHJpbmcgeCA9XG4gIHRyeSBJIChpbnRfb2Zfc3RyaW5nIHgpIHdpdGggRmFpbHVyZSBfIC0+IEYgKGZsb2F0X29mX3N0cmluZyB4KVxuXG5sZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gYEludCB4XG4gIHwgSTY0IHggLT4gYFN0cmluZyAoSW50NjQudG9fc3RyaW5nIHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBgRmxvYXQgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gYFN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHgpKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHggLT4gSSB4XG4gIHwgYEZsb2F0IHggLT4gRiB4XG4gIHwgYFN0cmluZyBuIGFzIHggLT5cbiAgICAodHJ5IEk2NCAoSW50NjQub2Zfc3RyaW5nIG4pXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgKHRyeSBGIChmbG9hdF9vZl9zdHJpbmcgbilcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKVxuXG5sZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbmxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBvZl9iaW5fYWxnX29wID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5NVUxUIC0+IG11bHRcbiAgfCBPcGVyYXRvci5TVU0gLT4gYWRkXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgZnVuIHggeSAtPlxuICAgICAgaWYgKG5vdCAoaXNfemVybyB5KSkgJiYgaXNfemVybyAocmVtIHggeSkgdGhlblxuICAgICAgICBpbnRlcm5hbF9kaXYgeCB5XG4gICAgICBlbHNlXG4gICAgICAgIGNhc3RfYmluX29wIH5vcF9mOiggLy4gKSB4IHlcbiAgfCBPcGVyYXRvci5NSU5VUyAtPiBzdWJcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT4gcmVtXG4gIHwgT3BlcmF0b3IuTUlOIC0+IG1pblxuICB8IE9wZXJhdG9yLk1BWCAtPiBtYXhcbiAgfCBPcGVyYXRvci5QT1cgLT4gcG93XG5cbmxldCBvZl91bl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkxPRyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmxvZyB4XG4gIHwgT3BlcmF0b3IuU1FSVCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNxcnQgeFxuICB8IE9wZXJhdG9yLkVYUCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmV4cCB4XG4gIHwgT3BlcmF0b3IuU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpzaW4geFxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpjb3MgeFxuICB8IE9wZXJhdG9yLlRBTiAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnRhbiB4XG4gIHwgT3BlcmF0b3IuSU5UIC0+XG4gICAgZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfaTooZnVuIG4gLT4gbikgfm9wX2k2NDooZnVuIG4gLT4gbikgeFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPiBuZWdcblxubGV0IG9mX2NvbXBhcmVfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkdSRUFURVIgLT4gaXNfZ3JlYXRlclxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT4gaXNfc21hbGxlclxuICB8IE9wZXJhdG9yLkVRVUFMIC0+IGlzX2VxdWFsXG4gIHwgT3BlcmF0b3IuRElGRiAtPiBmdW4gdiB2JyAtPiBub3QgKGlzX2VxdWFsIHYgdicpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gU3ludGF4X0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIE1hbGZvcm1lZF9EZWNsIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIEludGVybmFsX0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IGRlY2xzOiAoc3RyaW5nICogJ2EpIGFycmF5OyBmaW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50IH1cblxubGV0IG5hbWVfbWFwX29mX2FycmF5ID9mb3JiaWRkZW4gYSA9XG4gIGxldCBiYWQgPVxuICAgIG1hdGNoIGZvcmJpZGRlbiB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBTb21lIHMgLT4gZnVuIHggLT4gTW9kcy5TdHJpbmdTZXQubWVtIHggc1xuICBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIG1hcCAoKHgsIHBvcyksIF8pIC0+XG4gICAgICBpZiBiYWQgeCB8fCBNb2RzLlN0cmluZ01hcC5tZW0geCBtYXAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGFiZWwgJ1wiIF4geCBeIFwiJyBhbHJlYWR5IGRlZmluZWRcIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgYVxuXG5sZXQgY3JlYXRlID9mb3JiaWRkZW4gYSA9XG4gIHtcbiAgICBkZWNscyA9IEFycmF5Lm1hcCAoZnVuICgoeCwgXyksIHkpIC0+IHgsIHkpIGE7XG4gICAgZmluZGVyID0gbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhO1xuICB9XG5cbmxldCBjcmVhdGVfZnJvbV9saXN0ID9mb3JiaWRkZW4gbCA9IGNyZWF0ZSA/Zm9yYmlkZGVuIChBcnJheS5vZl9saXN0IGwpXG5cbigqIFRPRE8gc2VlIGlmIHdlIHNob3VsZCBrZWVwIHRoaXMgKilcbmxldCBjcmVhdGVfbm9fbG9jID9mb3JiaWRkZW4gYSA9XG4gIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiAoeCwgTG9jLmR1bW15KSwgeSkgYSB8PiBjcmVhdGUgP2ZvcmJpZGRlblxuXG5sZXQgc2l6ZSBuZCA9IEFycmF5Lmxlbmd0aCBuZC5kZWNsc1xubGV0IGVsdF9uYW1lIG5kIGkgPSBmc3QgbmQuZGVjbHMuKGkpXG5cbmxldCBlbHRfaWQgPyhraW5kID0gXCJlbGVtZW50XCIpIG5kIChzLCBwb3MpID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gcyBuZC5maW5kZXIgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlxcXCIlc1xcXCIgaXMgbm90IGEgZGVjbGFyZWQgJXMuXCIgcyBraW5kLCBwb3MpKVxuXG5sZXQgcHJpbnQgfnNlcCBwcCBmIG5kID1cbiAgUHAuYXJyYXkgc2VwIChmdW4gaSBmIChuLCBlbCkgLT4gcHAgaSBuIGYgZWwpIGYgbmQuZGVjbHNcblxubGV0IGRlYnVnX3ByaW50IHByIGYgbmQgPVxuICBwcmludCB+c2VwOlBwLnNwYWNlXG4gICAgKGZ1biBpIG4gZiBlbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslaT4lczogQFs8Mj4lYUBdQF1cIiBpIG4gcHIgZWwpXG4gICAgZiBuZFxuXG5sZXQgZm9sZCBmIGFjYyBuZCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIGFjYyAobmEsIHgpIC0+IGYgaSBuYSBhY2MgeCkgYWNjIG5kLmRlY2xzXG5cbmxldCBtYXAgZiBuZCA9XG4gIHsgZGVjbHMgPSBBcnJheS5tYXAgKGZ1biAocywgdikgLT4gcywgZiBzIHYpIG5kLmRlY2xzOyBmaW5kZXIgPSBuZC5maW5kZXIgfVxuXG5sZXQgbWFwaSBmIG5kID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwaSAoZnVuIGkgKHMsIHYpIC0+IHMsIGYgaSBzIHYpIG5kLmRlY2xzO1xuICAgIGZpbmRlciA9IG5kLmZpbmRlcjtcbiAgfVxuXG5sZXQgZWx0X3ZhbCBuZCBpID0gc25kIG5kLmRlY2xzLihpKVxuXG5sZXQgdG9fanNvbiBhdXggbmQgPVxuICBgTGlzdFxuICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoeCwgYSkgYWNjIC0+IGBBc3NvYyBbIFwibmFtZVwiLCBgU3RyaW5nIHg7IFwiZGVjbFwiLCBhdXggYSBdIDo6IGFjYylcbiAgICAgICBuZC5kZWNscyBbXSlcblxubGV0IG9mX2pzb24gYXV4ID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgbGV0IGRlY2xzID1cbiAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYEFzc29jIFsgKFwibmFtZVwiLCBgU3RyaW5nIHgpOyAoXCJkZWNsXCIsIGEpIF1cbiAgICAgICAgICB8IGBBc3NvYyBbIChcImRlY2xcIiwgYSk7IChcIm5hbWVcIiwgYFN0cmluZyB4KSBdIC0+XG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBhdXggYVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsIGVsZW1lbnRcIiwgeCkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBjcmVhdGUgZGVjbHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHZhbGlkIE5hbWVkRGVjbFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXJyZW5jZSBwIGxpc3QgPVxuICBsZXQgcmVjIGF1eCBsaXN0IGJ1ZmZlciBvdXRwdXQgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgaCA6OiB0IHdoZW4gcCBoIC0+IGF1eCB0IFtdICgoaCA6OiBidWZmZXIpIDo6IG91dHB1dClcbiAgICB8IGggOjogdCAtPiBhdXggdCAoaCA6OiBidWZmZXIpIG91dHB1dFxuICAgIHwgW10gLT4gb3V0cHV0XG4gIGluXG4gIGxldCByZXZfY29uY2F0IGxpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZnVuIG91dHB1dCBhIC0+IGEgOjogb3V0cHV0KSkgW10gbGlzdFxuICBpblxuICByZXZfY29uY2F0IChhdXggbGlzdCBbXSBbXSlcblxubGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfbGFzdFwiXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogbCAtPiBsYXN0IGxcblxubGV0IHJlYyBhdXhfcG9wX2xhc3QgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfcG9wX2xhc3RcIlxuICB8IFsgeCBdIC0+IExpc3QucmV2IGFjYywgeFxuICB8IGggOjogdCAtPiBhdXhfcG9wX2xhc3QgKGggOjogYWNjKSB0XG5cbmxldCBwb3BfbGFzdCBsID0gYXV4X3BvcF9sYXN0IFtdIGxcblxubGV0IGNvbnNfb3B0aW9uIGggdCA9XG4gIG1hdGNoIGggd2l0aFxuICB8IFNvbWUgeCAtPiB4IDo6IHRcbiAgfCBOb25lIC0+IHRcblxubGV0IHJlYyBzbWFydF9maWx0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgdCA6OiBxIGFzIGwgLT5cbiAgICBsZXQgcScgPSBzbWFydF9maWx0ZXIgZiBxIGluXG4gICAgaWYgZiB0IHRoZW5cbiAgICAgIGlmIHEgPT0gcScgdGhlblxuICAgICAgICBsXG4gICAgICBlbHNlXG4gICAgICAgIHQgOjogcSdcbiAgICBlbHNlXG4gICAgICBxJ1xuICB8IGwgLT4gbFxuXG5sZXQgcmVjIHNtYXJ0X21hcCBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X21hcCBmIHEgaW5cbiAgICBsZXQgdCcgPSBmIHQgaW5cbiAgICBpZiB0JyA9PSB0ICYmIHEnID09IHEgdGhlblxuICAgICAgbFxuICAgIGVsc2VcbiAgICAgIHQnIDo6IHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZXZfbWFwaSBmIGwgPVxuICBsZXQgcmVjIGF1eF9tYXBpIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eF9tYXBpIChwcmVkIGkpIChmIGkgaCA6OiBhY2MpIHFcbiAgaW5cbiAgYXV4X21hcGkgKExpc3QubGVuZ3RoIGwgLSAxKSBbXSBsXG5cbmxldCByZWMgbWFwX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IGggOjogcSAtPiBjb25zX29wdGlvbiAoZiBoKSAobWFwX29wdGlvbiBmIHEpXG5cbmxldCBleGlzdHNfdW5pcSBmIGwgPVxuICBsZXQgcmVjIHNlY29uZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoIDo6IHQgLT4gKG5vdCAoZiBoKSkgJiYgc2Vjb25kIHRcbiAgaW5cbiAgbGV0IHJlYyBmaXJzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBmIGggdGhlblxuICAgICAgICBzZWNvbmQgdFxuICAgICAgZWxzZVxuICAgICAgICBmaXJzdCB0XG4gIGluXG4gIGZpcnN0IGxcblxubGV0IG1lcmdlX3VuaXEgY21wIGwxIGwyID1cbiAgbGV0IHJlYyBhdXhfbWVyZ2VfdW5pcSBsMSBsMiBrID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gLT4gayBsMlxuICAgIHwgXywgW10gLT4gayBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICBhdXhfbWVyZ2VfdW5pcSB0MSBsMiAoZnVuIG8gLT5cbiAgICAgICAgICAgIGlmIG8gPT0gdDEgdGhlblxuICAgICAgICAgICAgICBrIGwxXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGsgKGgxIDo6IG8pKVxuICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIGwxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MiB0aGVuXG4gICAgICAgICAgICAgIGsgbDJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDIgOjogbykpXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gIGluXG4gIGF1eF9tZXJnZV91bmlxIGwxIGwyIChmdW4geCAtPiB4KVxuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGYgbCBhY2MgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgZiB0IChmIGggOjogYWNjKVxuXG5sZXQgcmVjIG1hcF9mbGF0dGVuIGYgPSBmdW5jdGlvblxuICAoKiBsaXN0X2JpbmQgKilcbiAgfCBbXSAtPiBbXVxuICB8IGggOjogdCAtPiBMaXN0LmFwcGVuZCAoZiBoKSAobWFwX2ZsYXR0ZW4gZiB0KVxuKCogTGlzdC5yZXZcbiAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiBMaXN0LnJldl9hcHBlbmQgeSB4KSBbXSAoTGlzdC5yZXZfbWFwIGYgbCkpXG4qKVxuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2RvdWJsZSBsID1cbiAgbGV0IHJlYyBhdXggbGFzdCBsIGFjYyA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHEgd2hlbiBsYXN0ID0gaCAtPiBhdXggbGFzdCBxIGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eCBoIHEgKGggOjogYWNjKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGF1eCBoIHEgWyBoIF1cblxubGV0IHJlYyBmb2xkX3JpZ2h0X21hcCBmIGwgeCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdLCB4XG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0IHQnLCB4JyA9IGZvbGRfcmlnaHRfbWFwIGYgdCB4IGluXG4gICAgbGV0IGgnLCB4JycgPSBmIGggeCcgaW5cbiAgICBoJyA6OiB0JywgeCcnXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIHggbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB4XG4gIHwgW10sIF8gOjogXyB8IF8gOjogXywgW10gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJsaXN0X2ZvbGRfbGVmdDJcIilcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT4gZm9sZF9sZWZ0MiBmIChmIHggaDEgaDIpIHQxIHQyXG5cbmxldCByYW5kb20gcnMgbCA9IExpc3QubnRoIGwgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKExpc3QubGVuZ3RoIGwpKVxuXG5sZXQgZmluZF9vcHRpb24gKHAgOiAnYSAtPiBib29sKSAobCA6ICdhIGxpc3QpIDogJ2Egb3B0aW9uID1cbiAgdHJ5IFNvbWUgKExpc3QuZmluZCBwIGwpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICQkICkgPSBjb25zX29wdGlvblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGJhZzogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgbXV0YWJsZSBzaXplOiBpbnQ7XG4gIGRpY3Q6IChpbnQsIGludCkgSGFzaHRibC50O1xufVxuXG5sZXQgY3JlYXRlIHNpemUgPVxuICB7IHNpemUgPSAwOyBiYWcgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSBzaXplICgtMSk7IGRpY3QgPSBIYXNodGJsLmNyZWF0ZSBzaXplIH1cblxubGV0IHByaW50IGYgcyA9XG4gIGlmIHMuc2l6ZSA8PSAwIHRoZW5cbiAgICBQcC5lbXB0eV9zZXQgZlxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7IFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBpID0gMCB0byBzLnNpemUgLSAyIGRvXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgaSk7XG4gICAgICAgIFBwLmNvbW1hIGZcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpKSBpblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB9XCJcbiAgKVxuXG5sZXQgaXNfZW1wdHkgcyA9IHMuc2l6ZSA9IDBcblxubGV0IGFkZCB4IHMgPVxuICBpZiBub3QgKEhhc2h0YmwubWVtIHMuZGljdCB4KSB0aGVuIChcbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzLmJhZyBzLnNpemUgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgeCBzLnNpemUgaW5cbiAgICBzLnNpemUgPC0gc3VjYyBzLnNpemVcbiAgKVxuXG5sZXQgcmVtb3ZlIHggcyA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBIYXNodGJsLmZpbmQgcy5kaWN0IHggaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwb3MgPCBzLnNpemUgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgbGFzdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChzLnNpemUgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2Ugcy5kaWN0IGxhc3QgcG9zIGluXG4gICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHBvcyBsYXN0XG4gICAgICApXG4gICAgaW5cbiAgICBzLnNpemUgPC0gcHJlZCBzLnNpemVcbiAgd2l0aCBOb3RfZm91bmQgLT4gKClcblxubGV0IHNpemUgcyA9IHMuc2l6ZVxuXG5sZXQgcmFuZG9tIHJzIHMgPVxuICBpZiBzLnNpemUgPCAxIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAoUmFuZG9tLlN0YXRlLmludCBycyBzLnNpemUpKVxuXG5sZXQgZm9sZCBmIHMgYWNjID1cbiAgVG9vbHMucmVjdGkgKGZ1biBhY2MgaSAtPiBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKSBhY2MpIGFjYyBzLnNpemVcblxubGV0IG1lbSB4IHMgPSBIYXNodGJsLm1lbSBzLmRpY3QgeFxuIiwidHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG5sZXQgY3JlYXRlIF9pIF9kZWZhdWx0ID0gW11cbmxldCBhZGQgeCB0ID0geCA6OiB0XG5sZXQgaXRlciBmIHQgPSBMaXN0Lml0ZXIgZiAoTGlzdC5yZXYgdClcbmxldCBjbGVhbiBfID0gW11cbiIsIm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBoYXNoZWRfbGlzdFxuICB0eXBlIGVsdFxuICB0eXBlIGNhY2hlXG5cbiAgdmFsIGludF9vZl9oYXNoZWRfbGlzdCA6IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgY29tcGFyZSA6IGhhc2hlZF9saXN0IC0+IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgaW5pdCA6IHVuaXQgLT4gY2FjaGVcbiAgdmFsIGhhc2ggOiBjYWNoZSAtPiBlbHQgbGlzdCAtPiBjYWNoZSAqIGhhc2hlZF9saXN0XG4gIHZhbCBjb25zIDogY2FjaGUgLT4gZWx0IC0+IGhhc2hlZF9saXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGVtcHR5IDogaGFzaGVkX2xpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiBoYXNoZWRfbGlzdCAtPiB1bml0XG4gIHZhbCBwcmludF9jYWNoZSA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gY2FjaGUgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBNYWtlID1cbmZ1bmN0b3JcbiAgKEEgOiBTZXRNYXAuT3JkZXJlZFR5cGUpXG4gIC0+XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gQS50XG4gICAgdHlwZSBlbHRfaWQgPSBpbnRcbiAgICB0eXBlIGhhc2hlZF9saXN0ID0gaW50XG5cbiAgICBsZXQgaW50X29mX2hhc2hlZF9saXN0IChoIDogaGFzaGVkX2xpc3QpIDogaW50ID0gaFxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgbW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChBKVxuXG4gICAgdHlwZSBjYWNoZSA9IHtcbiAgICAgIGRpY3Rpb25hcnk6IGVsdF9pZCBTZXRNYXAuTWFwLnQ7XG4gICAgICBuZXh0X2VsdF9pZDogZWx0X2lkO1xuICAgICAgY29uczogaGFzaGVkX2xpc3Qgb3B0aW9uIE1vZHMuRHluQXJyYXkudCBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICAgICAgbmV4dF9saXN0X2lkOiBoYXNoZWRfbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgZnN0X2VsdF9pZCA9IDFcbiAgICBsZXQgbmV4dF9lbHRfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfZWx0X2lkIGNhY2hlID1cbiAgICAgICggY2FjaGUubmV4dF9lbHRfaWQsXG4gICAgICAgIHsgY2FjaGUgd2l0aCBuZXh0X2VsdF9pZCA9IG5leHRfZWx0X2lkIGNhY2hlLm5leHRfZWx0X2lkIH0gKVxuXG4gICAgbGV0IGZzdF9saXN0X2lkID0gMVxuICAgIGxldCBuZXh0X2xpc3RfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfbGlzdF9pZCBjYWNoZSA9XG4gICAgICAoIHsgY2FjaGUgd2l0aCBuZXh0X2xpc3RfaWQgPSBuZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9saXN0X2lkIH0sXG4gICAgICAgIGNhY2hlLm5leHRfbGlzdF9pZCApXG5cbiAgICBsZXQgaW5pdCAoKSA9XG4gICAgICB7XG4gICAgICAgIGRpY3Rpb25hcnkgPSBTZXRNYXAuTWFwLmVtcHR5O1xuICAgICAgICBuZXh0X2VsdF9pZCA9IGZzdF9lbHRfaWQ7XG4gICAgICAgIGNvbnMgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmU7XG4gICAgICAgIG5leHRfbGlzdF9pZCA9IGZzdF9saXN0X2lkO1xuICAgICAgfVxuXG4gICAgbGV0IGVtcHR5ID0gMFxuXG4gICAgbGV0IGhhc2hfZWx0IGNhY2hlIGVsdCA9XG4gICAgICBtYXRjaCBTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIGVsdCBjYWNoZS5kaWN0aW9uYXJ5IHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IGNhY2hlLCBpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkLCBjYWNoZSA9IGZyZXNoX2VsdF9pZCBjYWNoZSBpblxuICAgICAgICB7IGNhY2hlIHdpdGggZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuYWRkIGVsdCBpZCBjYWNoZS5kaWN0aW9uYXJ5IH0sIGlkXG5cbiAgICBsZXQgY29ucyBjYWNoZSBoZWFkIHRhaWwgPVxuICAgICAgbGV0IGNhY2hlLCBoYXNoX2hlYWQgPSBoYXNoX2VsdCBjYWNoZSBoZWFkIGluXG4gICAgICBsZXQgc3VidGFiID1cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgd2l0aFxuICAgICAgICB8IFNvbWUgc3VidGFiIC0+IHN1YnRhYlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgc3VidGFiID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMCBOb25lIGluXG4gICAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgKFNvbWUgc3VidGFiKSBpblxuICAgICAgICAgIHN1YnRhYlxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHN1YnRhYiB0YWlsIHdpdGhcbiAgICAgIHwgU29tZSBoYXNoIC0+IGNhY2hlLCBoYXNoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGNhY2hlLCBoYXNoID0gZnJlc2hfbGlzdF9pZCBjYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzdWJ0YWIgdGFpbCAoU29tZSBoYXNoKSBpblxuICAgICAgICBjYWNoZSwgaGFzaFxuXG4gICAgbGV0IHJlYyBoYXNoIGNhY2hlIGxpc3QgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGNhY2hlLCBlbXB0eVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGNhY2hlLCB0ID0gaGFzaCBjYWNoZSB0IGluXG4gICAgICAgIGNvbnMgY2FjaGUgaCB0XG5cbiAgICBsZXQgcHJpbnQgZm9ybWF0dGVyID0gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJWlcIlxuXG4gICAgbGV0IHByaW50X2NhY2hlIGZvcm1hdHRlciBjYWNoZSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXJcbiAgICAgICAgICBcIkNhY2hlXFxuIG5leHRfZnJlc2hfbGlzdF9pZDogJWk7IG5leHRfZnJlc2hfZWx0X2lkOiAlaVxcblwiXG4gICAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIGNhY2hlLm5leHRfZWx0X2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU2V0TWFwLk1hcC5pdGVyXG4gICAgICAgICAgKGZ1biBhIGkgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiRElDOiVhOiVpXFxuXCIgQS5wcmludCBhIGkpXG4gICAgICAgICAgY2FjaGUuZGljdGlvbmFyeVxuICAgICAgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBhIG9wdCAtPlxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG9wdCAtPlxuICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAgICAgICAoZnVuIGIgayAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSBrIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiglaSwlaSktPiVpIFxcblwiIGEgYiBrKVxuICAgICAgICAgICAgICBvcHQpXG4gICAgICAgIGNhY2hlLmNvbnNcbiAgZW5kXG4iLCJ0eXBlIHQgPSB7IG51bTogaW50OyBkZW46IGludCB9XG5cbmxldCBzaWduIGYgPVxuICBpZiBmLm51bSA9IDAgdGhlblxuICAgIHsgbnVtID0gMDsgZGVuID0gMSB9XG4gIGVsc2UgaWYgZi5kZW4gPCAwIHRoZW5cbiAgICB7IG51bSA9IC1mLm51bTsgZGVuID0gLWYuZGVuIH1cbiAgZWxzZVxuICAgIGZcblxubGV0IHNpbXBsaWZ5IGYgPVxuICBsZXQgZ2NkID0gVG9vbHMuZ2NkXzIgZi5udW0gZi5kZW4gaW5cbiAgc2lnbiB7IG51bSA9IGYubnVtIC8gZ2NkOyBkZW4gPSBmLmRlbiAvIGdjZCB9XG5cbmxldCBhZGQgYSBiID1cbiAgc2ltcGxpZnkgeyBudW0gPSAoYS5udW0gKiBiLmRlbikgKyAoYi5udW0gKiBhLmRlbik7IGRlbiA9IGIuZGVuICogYS5kZW4gfVxuXG5sZXQgb3AgZiA9IHsgZiB3aXRoIG51bSA9IC1mLm51bSB9XG5sZXQgc3ViIGEgYiA9IGFkZCBhIChvcCBiKVxubGV0IG11bHQgYSBiID0gc2ltcGxpZnkgeyBudW0gPSBhLm51bSAqIGIubnVtOyBkZW4gPSBhLmRlbiAqIGIuZGVuIH1cblxubGV0IGludiBhID1cbiAgaWYgYS5udW0gPSAwIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIHsgbnVtID0gYS5kZW47IGRlbiA9IGEubnVtIH1cblxubGV0IGRpdiBhIGIgPVxuICBtYXRjaCBpbnYgYiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBiX2ludiAtPiBTb21lIChtdWx0IGEgYl9pbnYpXG5cbmxldCB6ZXJvID0geyBudW0gPSAwOyBkZW4gPSAxIH1cbmxldCBpc19lcXVhbCBhIGIgPSBhID0gYlxubGV0IG9mX2ludCBpID0gc2ltcGxpZnkgeyBudW0gPSBpOyBkZW4gPSAxIH1cbmxldCBpc196ZXJvIGEgPSBhLm51bSA9IDBcbmxldCBvbmUgPSBvZl9pbnQgMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyB3YWl0aW5nX2VsdHM6ICdhIGxpc3Q7IGxpc3Q6ICdhIGxpc3QgfVxuXG5sZXQgZW1wdHkgPSB7IHdhaXRpbmdfZWx0cyA9IFtdOyBsaXN0ID0gW10gfVxubGV0IGlzX2VtcHR5IHQgPSB0LndhaXRpbmdfZWx0cyA9IFtdICYmIHQubGlzdCA9IFtdXG5sZXQgcHVzaCBhIHQgPSB7IHQgd2l0aCB3YWl0aW5nX2VsdHMgPSBhIDo6IHQud2FpdGluZ19lbHRzIH1cblxubGV0IHJlYyBwb3AgdCA9XG4gIG1hdGNoIHQubGlzdCB3aXRoXG4gIHwgaGVhZCA6OiB0YWlsIC0+IHsgdCB3aXRoIGxpc3QgPSB0YWlsIH0sIFNvbWUgaGVhZFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQud2FpdGluZ19lbHRzIHdpdGhcbiAgICB8IFtdIC0+IHQsIE5vbmVcbiAgICB8IGxpc3QgLT4gcG9wIHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBMaXN0LnJldiBsaXN0IH0pXG4iLCIoKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEpvbmF0aGFuIERlcnF1ZSAtIE1JVCBsaWNlbnNlZCAqKVxuXG5sZXQgKCAmJiYgKSA9IEludDMyLmxvZ2FuZFxubGV0ICggXl5eICkgPSBJbnQzMi5sb2d4b3JcbmxldCAoID4+PiApID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuXG5sZXQgY3JjX3RhYmxlID1cbiAgW3xcbiAgICAweDAwMDAwMDAwbDtcbiAgICAweDc3MDczMDk2bDtcbiAgICAweGVlMGU2MTJjbDtcbiAgICAweDk5MDk1MWJhbDtcbiAgICAweDA3NmRjNDE5bDtcbiAgICAweDcwNmFmNDhmbDtcbiAgICAweGU5NjNhNTM1bDtcbiAgICAweDllNjQ5NWEzbDtcbiAgICAweDBlZGI4ODMybDtcbiAgICAweDc5ZGNiOGE0bDtcbiAgICAweGUwZDVlOTFlbDtcbiAgICAweDk3ZDJkOTg4bDtcbiAgICAweDA5YjY0YzJibDtcbiAgICAweDdlYjE3Y2JkbDtcbiAgICAweGU3YjgyZDA3bDtcbiAgICAweDkwYmYxZDkxbDtcbiAgICAweDFkYjcxMDY0bDtcbiAgICAweDZhYjAyMGYybDtcbiAgICAweGYzYjk3MTQ4bDtcbiAgICAweDg0YmU0MWRlbDtcbiAgICAweDFhZGFkNDdkbDtcbiAgICAweDZkZGRlNGVibDtcbiAgICAweGY0ZDRiNTUxbDtcbiAgICAweDgzZDM4NWM3bDtcbiAgICAweDEzNmM5ODU2bDtcbiAgICAweDY0NmJhOGMwbDtcbiAgICAweGZkNjJmOTdhbDtcbiAgICAweDhhNjVjOWVjbDtcbiAgICAweDE0MDE1YzRmbDtcbiAgICAweDYzMDY2Y2Q5bDtcbiAgICAweGZhMGYzZDYzbDtcbiAgICAweDhkMDgwZGY1bDtcbiAgICAweDNiNmUyMGM4bDtcbiAgICAweDRjNjkxMDVlbDtcbiAgICAweGQ1NjA0MWU0bDtcbiAgICAweGEyNjc3MTcybDtcbiAgICAweDNjMDNlNGQxbDtcbiAgICAweDRiMDRkNDQ3bDtcbiAgICAweGQyMGQ4NWZkbDtcbiAgICAweGE1MGFiNTZibDtcbiAgICAweDM1YjVhOGZhbDtcbiAgICAweDQyYjI5ODZjbDtcbiAgICAweGRiYmJjOWQ2bDtcbiAgICAweGFjYmNmOTQwbDtcbiAgICAweDMyZDg2Y2UzbDtcbiAgICAweDQ1ZGY1Yzc1bDtcbiAgICAweGRjZDYwZGNmbDtcbiAgICAweGFiZDEzZDU5bDtcbiAgICAweDI2ZDkzMGFjbDtcbiAgICAweDUxZGUwMDNhbDtcbiAgICAweGM4ZDc1MTgwbDtcbiAgICAweGJmZDA2MTE2bDtcbiAgICAweDIxYjRmNGI1bDtcbiAgICAweDU2YjNjNDIzbDtcbiAgICAweGNmYmE5NTk5bDtcbiAgICAweGI4YmRhNTBmbDtcbiAgICAweDI4MDJiODllbDtcbiAgICAweDVmMDU4ODA4bDtcbiAgICAweGM2MGNkOWIybDtcbiAgICAweGIxMGJlOTI0bDtcbiAgICAweDJmNmY3Yzg3bDtcbiAgICAweDU4Njg0YzExbDtcbiAgICAweGMxNjExZGFibDtcbiAgICAweGI2NjYyZDNkbDtcbiAgICAweDc2ZGM0MTkwbDtcbiAgICAweDAxZGI3MTA2bDtcbiAgICAweDk4ZDIyMGJjbDtcbiAgICAweGVmZDUxMDJhbDtcbiAgICAweDcxYjE4NTg5bDtcbiAgICAweDA2YjZiNTFmbDtcbiAgICAweDlmYmZlNGE1bDtcbiAgICAweGU4YjhkNDMzbDtcbiAgICAweDc4MDdjOWEybDtcbiAgICAweDBmMDBmOTM0bDtcbiAgICAweDk2MDlhODhlbDtcbiAgICAweGUxMGU5ODE4bDtcbiAgICAweDdmNmEwZGJibDtcbiAgICAweDA4NmQzZDJkbDtcbiAgICAweDkxNjQ2Yzk3bDtcbiAgICAweGU2NjM1YzAxbDtcbiAgICAweDZiNmI1MWY0bDtcbiAgICAweDFjNmM2MTYybDtcbiAgICAweDg1NjUzMGQ4bDtcbiAgICAweGYyNjIwMDRlbDtcbiAgICAweDZjMDY5NWVkbDtcbiAgICAweDFiMDFhNTdibDtcbiAgICAweDgyMDhmNGMxbDtcbiAgICAweGY1MGZjNDU3bDtcbiAgICAweDY1YjBkOWM2bDtcbiAgICAweDEyYjdlOTUwbDtcbiAgICAweDhiYmViOGVhbDtcbiAgICAweGZjYjk4ODdjbDtcbiAgICAweDYyZGQxZGRmbDtcbiAgICAweDE1ZGEyZDQ5bDtcbiAgICAweDhjZDM3Y2YzbDtcbiAgICAweGZiZDQ0YzY1bDtcbiAgICAweDRkYjI2MTU4bDtcbiAgICAweDNhYjU1MWNlbDtcbiAgICAweGEzYmMwMDc0bDtcbiAgICAweGQ0YmIzMGUybDtcbiAgICAweDRhZGZhNTQxbDtcbiAgICAweDNkZDg5NWQ3bDtcbiAgICAweGE0ZDFjNDZkbDtcbiAgICAweGQzZDZmNGZibDtcbiAgICAweDQzNjllOTZhbDtcbiAgICAweDM0NmVkOWZjbDtcbiAgICAweGFkNjc4ODQ2bDtcbiAgICAweGRhNjBiOGQwbDtcbiAgICAweDQ0MDQyZDczbDtcbiAgICAweDMzMDMxZGU1bDtcbiAgICAweGFhMGE0YzVmbDtcbiAgICAweGRkMGQ3Y2M5bDtcbiAgICAweDUwMDU3MTNjbDtcbiAgICAweDI3MDI0MWFhbDtcbiAgICAweGJlMGIxMDEwbDtcbiAgICAweGM5MGMyMDg2bDtcbiAgICAweDU3NjhiNTI1bDtcbiAgICAweDIwNmY4NWIzbDtcbiAgICAweGI5NjZkNDA5bDtcbiAgICAweGNlNjFlNDlmbDtcbiAgICAweDVlZGVmOTBlbDtcbiAgICAweDI5ZDljOTk4bDtcbiAgICAweGIwZDA5ODIybDtcbiAgICAweGM3ZDdhOGI0bDtcbiAgICAweDU5YjMzZDE3bDtcbiAgICAweDJlYjQwZDgxbDtcbiAgICAweGI3YmQ1YzNibDtcbiAgICAweGMwYmE2Y2FkbDtcbiAgICAweGVkYjg4MzIwbDtcbiAgICAweDlhYmZiM2I2bDtcbiAgICAweDAzYjZlMjBjbDtcbiAgICAweDc0YjFkMjlhbDtcbiAgICAweGVhZDU0NzM5bDtcbiAgICAweDlkZDI3N2FmbDtcbiAgICAweDA0ZGIyNjE1bDtcbiAgICAweDczZGMxNjgzbDtcbiAgICAweGUzNjMwYjEybDtcbiAgICAweDk0NjQzYjg0bDtcbiAgICAweDBkNmQ2YTNlbDtcbiAgICAweDdhNmE1YWE4bDtcbiAgICAweGU0MGVjZjBibDtcbiAgICAweDkzMDlmZjlkbDtcbiAgICAweDBhMDBhZTI3bDtcbiAgICAweDdkMDc5ZWIxbDtcbiAgICAweGYwMGY5MzQ0bDtcbiAgICAweDg3MDhhM2QybDtcbiAgICAweDFlMDFmMjY4bDtcbiAgICAweDY5MDZjMmZlbDtcbiAgICAweGY3NjI1NzVkbDtcbiAgICAweDgwNjU2N2NibDtcbiAgICAweDE5NmMzNjcxbDtcbiAgICAweDZlNmIwNmU3bDtcbiAgICAweGZlZDQxYjc2bDtcbiAgICAweDg5ZDMyYmUwbDtcbiAgICAweDEwZGE3YTVhbDtcbiAgICAweDY3ZGQ0YWNjbDtcbiAgICAweGY5YjlkZjZmbDtcbiAgICAweDhlYmVlZmY5bDtcbiAgICAweDE3YjdiZTQzbDtcbiAgICAweDYwYjA4ZWQ1bDtcbiAgICAweGQ2ZDZhM2U4bDtcbiAgICAweGExZDE5MzdlbDtcbiAgICAweDM4ZDhjMmM0bDtcbiAgICAweDRmZGZmMjUybDtcbiAgICAweGQxYmI2N2YxbDtcbiAgICAweGE2YmM1NzY3bDtcbiAgICAweDNmYjUwNmRkbDtcbiAgICAweDQ4YjIzNjRibDtcbiAgICAweGQ4MGQyYmRhbDtcbiAgICAweGFmMGExYjRjbDtcbiAgICAweDM2MDM0YWY2bDtcbiAgICAweDQxMDQ3YTYwbDtcbiAgICAweGRmNjBlZmMzbDtcbiAgICAweGE4NjdkZjU1bDtcbiAgICAweDMxNmU4ZWVmbDtcbiAgICAweDQ2NjliZTc5bDtcbiAgICAweGNiNjFiMzhjbDtcbiAgICAweGJjNjY4MzFhbDtcbiAgICAweDI1NmZkMmEwbDtcbiAgICAweDUyNjhlMjM2bDtcbiAgICAweGNjMGM3Nzk1bDtcbiAgICAweGJiMGI0NzAzbDtcbiAgICAweDIyMDIxNmI5bDtcbiAgICAweDU1MDUyNjJmbDtcbiAgICAweGM1YmEzYmJlbDtcbiAgICAweGIyYmQwYjI4bDtcbiAgICAweDJiYjQ1YTkybDtcbiAgICAweDVjYjM2YTA0bDtcbiAgICAweGMyZDdmZmE3bDtcbiAgICAweGI1ZDBjZjMxbDtcbiAgICAweDJjZDk5ZThibDtcbiAgICAweDViZGVhZTFkbDtcbiAgICAweDliNjRjMmIwbDtcbiAgICAweGVjNjNmMjI2bDtcbiAgICAweDc1NmFhMzljbDtcbiAgICAweDAyNmQ5MzBhbDtcbiAgICAweDljMDkwNmE5bDtcbiAgICAweGViMGUzNjNmbDtcbiAgICAweDcyMDc2Nzg1bDtcbiAgICAweDA1MDA1NzEzbDtcbiAgICAweDk1YmY0YTgybDtcbiAgICAweGUyYjg3YTE0bDtcbiAgICAweDdiYjEyYmFlbDtcbiAgICAweDBjYjYxYjM4bDtcbiAgICAweDkyZDI4ZTlibDtcbiAgICAweGU1ZDViZTBkbDtcbiAgICAweDdjZGNlZmI3bDtcbiAgICAweDBiZGJkZjIxbDtcbiAgICAweDg2ZDNkMmQ0bDtcbiAgICAweGYxZDRlMjQybDtcbiAgICAweDY4ZGRiM2Y4bDtcbiAgICAweDFmZGE4MzZlbDtcbiAgICAweDgxYmUxNmNkbDtcbiAgICAweGY2YjkyNjVibDtcbiAgICAweDZmYjA3N2UxbDtcbiAgICAweDE4Yjc0Nzc3bDtcbiAgICAweDg4MDg1YWU2bDtcbiAgICAweGZmMGY2YTcwbDtcbiAgICAweDY2MDYzYmNhbDtcbiAgICAweDExMDEwYjVjbDtcbiAgICAweDhmNjU5ZWZmbDtcbiAgICAweGY4NjJhZTY5bDtcbiAgICAweDYxNmJmZmQzbDtcbiAgICAweDE2NmNjZjQ1bDtcbiAgICAweGEwMGFlMjc4bDtcbiAgICAweGQ3MGRkMmVlbDtcbiAgICAweDRlMDQ4MzU0bDtcbiAgICAweDM5MDNiM2MybDtcbiAgICAweGE3NjcyNjYxbDtcbiAgICAweGQwNjAxNmY3bDtcbiAgICAweDQ5Njk0NzRkbDtcbiAgICAweDNlNmU3N2RibDtcbiAgICAweGFlZDE2YTRhbDtcbiAgICAweGQ5ZDY1YWRjbDtcbiAgICAweDQwZGYwYjY2bDtcbiAgICAweDM3ZDgzYmYwbDtcbiAgICAweGE5YmNhZTUzbDtcbiAgICAweGRlYmI5ZWM1bDtcbiAgICAweDQ3YjJjZjdmbDtcbiAgICAweDMwYjVmZmU5bDtcbiAgICAweGJkYmRmMjFjbDtcbiAgICAweGNhYmFjMjhhbDtcbiAgICAweDUzYjM5MzMwbDtcbiAgICAweDI0YjRhM2E2bDtcbiAgICAweGJhZDAzNjA1bDtcbiAgICAweGNkZDcwNjkzbDtcbiAgICAweDU0ZGU1NzI5bDtcbiAgICAweDIzZDk2N2JmbDtcbiAgICAweGIzNjY3YTJlbDtcbiAgICAweGM0NjE0YWI4bDtcbiAgICAweDVkNjgxYjAybDtcbiAgICAweDJhNmYyYjk0bDtcbiAgICAweGI0MGJiZTM3bDtcbiAgICAweGMzMGM4ZWExbDtcbiAgICAweDVhMDVkZjFibDtcbiAgICAweDJkMDJlZjhkbDtcbiAgfF1cblxubGV0IHN0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyIG9mZnNldCBsZW5ndGggPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gb2Zmc2V0IHRvIG9mZnNldCArIGxlbmd0aCAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciAoU3RyaW5nLmdldCBzdHIgaSlcbiAgZG9uZTtcbiAgIWFjY19yXG5cbigqbGV0IGJpZ3N0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyID1cbiAgbGV0IGFjY19yID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IDAgdG8gKEJpZ2FycmF5LkFycmF5MS5kaW0gc3RyKSAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciBAQCBCaWdhcnJheS5BcnJheTEuZ2V0IHN0ciBpXG4gIGRvbmU7XG4gICFhY2NfclxuKilcbnR5cGUgdCA9IGludDMyXG5cbmxldCB1cGRhdGVfY3JjIGFjYyBjID1cbiAgbGV0IGluZGV4ID0gSW50MzIudG9faW50IChhY2MgXl5eIEludDMyLm9mX2ludCAoaW50X29mX2NoYXIgYykgJiYmIDB4ZmZsKSBpblxuICBjcmNfdGFibGUuKGluZGV4KSBeXl4gKGFjYyA+Pj4gOCkgJiYmIDB4ZmZmZmZmZmZsXG5cbmxldCBzdHJpbmcgPyhjcmMgPSAwbCkgc3RyIG9mZnNldCBsZW5ndGggPVxuICBzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0ciBvZmZzZXQgbGVuZ3RoXG4gIF5eXiAweGZmZmZmZmZmbFxuXG4oKmxldCBiaWdzdHJpbmcgPyhjcmM9MGwpIHN0ciA9XG4gIChiaWdzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0cikgXl5eIDB4ZmZmZmZmZmZsXG4qKVxuKCpcbmxldCBkaWdlc3QgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBDc3RydWN0LmxlbiBidWYgLSBvZmYgaW5cbiAgY3N0cnVjdCB+Y3JjOihjcmMgOj4gaW50MzIpIChDc3RydWN0LnN1YiBidWYgb2ZmIGxlbilcblxubGV0IGRpZ2VzdHYgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyB2IC0+IGRpZ2VzdCBhY2MgdilcblxubGV0IGRpZ2VzdGMgKGNyYyA6IHQpIGJ5dGUgPVxuICAodXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgKENoYXIuY2hyIGJ5dGUpKSBeXl4gMHhmZmZmZmZmZmxcblxubGV0IGRpZ2VzdHMgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBCeXRlcy5sZW5ndGggYnVmIC0gb2ZmIGluXG4gIGJ5dGVzIH5jcmM6KGNyYyA6PiBpbnQzMikgYnVmIG9mZiBsZW5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiB0IC0+IGludDMyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgcHAgcHBmIHYgPSBGbXQucGYgcHBmIFwiJTA0bHhcIiAodiA6PiBpbnQzMilcblxubGV0IGRlZmF1bHQgPSAwbFxuXG5sZXQgZXEgPSBJbnQzMi5lcXVhbFxubGV0IG5lcSBhIGIgPSBub3QgKGVxIGEgYilcbiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvbG9yID0gUmVkIHwgR3JleSB8IExpZ2h0Ymx1ZSB8IEJsYWNrXG5cbmxldCB0cmlwbGVfb2ZfY29sb3IgPSBmdW5jdGlvblxuICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgfCBMaWdodGJsdWUgLT4gMCwgMCwgMTI4XG4gIHwgQmxhY2sgLT4gMCwgMCwgMFxuIiwidHlwZSAnYSB0ID0ge1xuICBzaXplOiBpbnQ7XG4gIGRlZmF1bHQ6ICdhO1xuICBtdXRhYmxlIHN0YXJ0OiBpbnQ7XG4gIG11dGFibGUgZmluYWw6IGludDtcbiAgY29udGVudDogJ2EgYXJyYXk7XG59XG5cbmxldCBjcmVhdGUgaSBkZWZhdWx0ID1cbiAgbGV0IHNpemUgPSBtYXggaSAyIGluXG4gIHsgc2l6ZTsgZGVmYXVsdDsgc3RhcnQgPSAwOyBmaW5hbCA9IDA7IGNvbnRlbnQgPSBBcnJheS5tYWtlIHNpemUgZGVmYXVsdCB9XG5cbmxldCBzdWNjIGkgdCA9XG4gIGlmIGkgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBzdWNjIGlcblxubGV0IGZ1bGwgdCA9IHN1Y2MgdC5maW5hbCB0ID0gdC5zdGFydFxubGV0IGZyZWVfb25lIHQgPSB0LnN0YXJ0IDwtIHN1Y2MgdC5zdGFydCB0XG5cbmxldCBhZGQgeCB0ID1cbiAgbGV0ICgpID0gaWYgZnVsbCB0IHRoZW4gZnJlZV9vbmUgdCBpblxuICBsZXQgKCkgPSB0LmNvbnRlbnQuKHQuZmluYWwpIDwtIHggaW5cbiAgbGV0ICgpID0gdC5maW5hbCA8LSBzdWNjIHQuZmluYWwgdCBpblxuICB0XG5cbmxldCBpdGVyIGYgdCA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPD4gdC5maW5hbCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGYgdC5jb250ZW50LihpKSBpblxuICAgICAgYXV4IChzdWNjIGkgdClcbiAgICApXG4gIGluXG4gIGF1eCB0LnN0YXJ0XG5cbmxldCBjbGVhbiB0ID1cbiAgbGV0IHJlYyBhdXggayA9XG4gICAgaWYgayA9IHQuc2l6ZSB0aGVuXG4gICAgICB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPSB0LmNvbnRlbnQuKGspIDwtIHQuZGVmYXVsdCBpblxuICAgICAgYXV4IChrICsgMSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG4iLCIoKipcbiAgKiBjYWNoZS5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI3LzAzLzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjcvMDMvMjAxMlxuICAqICpcbiAgKlxuICAqIEl0IHVzZXMgaW1wZXJhdGl2ZSBzdHlsZXMgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBtb2R1bGVzXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIENhY2hlID0gc2lnXG4gIG1vZHVsZSBPIDogU2V0TWFwLk9yZGVyZWRUeXBlXG5cbiAgdHlwZSB0XG5cbiAgdmFsIGxhc3QgOiB0IC0+IE8udCBvcHRpb25cbiAgdmFsIGNyZWF0ZSA6IGludCBvcHRpb24gLT4gdFxuICB2YWwgYWRkIDogTy50IC0+IHQgLT4gdFxuICB2YWwgZm9sZCA6IChPLnQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGl0ZXIgOiAoTy50IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBDYWNoZSA9XG5mdW5jdG9yXG4gIChPTyA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgbW9kdWxlIE8gPSBPT1xuICAgICAgbW9kdWxlIFNNID0gU2V0TWFwLk1ha2UgKE8pXG4gICAgICBtb2R1bGUgUyA9IFNNLlNldFxuXG4gICAgICB0eXBlIGZpbml0ZV9jYWNoZSA9IHtcbiAgICAgICAgc2l6ZTogaW50O1xuICAgICAgICBvZmZzZXQ6IGludDtcbiAgICAgICAgY2FjaGU6IE8udCBvcHRpb24gYXJyYXk7XG4gICAgICAgIGJhZzogUy50O1xuICAgICAgICBsYXN0OiBPLnQgb3B0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlX2Zpbml0ZSBuID1cbiAgICAgICAge1xuICAgICAgICAgIHNpemUgPSBuO1xuICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgY2FjaGUgPSBBcnJheS5tYWtlIG4gTm9uZTtcbiAgICAgICAgICBiYWcgPSBTLmVtcHR5O1xuICAgICAgICAgIGxhc3QgPSBOb25lO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgaW5cbiAgICAgICAgaWYgb2Zmc2V0ID0gdC5zaXplIC0gMSB0aGVuXG4gICAgICAgICAgeyB0IHdpdGggb2Zmc2V0ID0gMCB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSBvZmZzZXQgKyAxIH1cblxuICAgICAgbGV0IGFkZF9maW5pdGUga2V5IHQgPVxuICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGxhc3QgPSBTb21lIGtleSB9IGluXG4gICAgICAgIGlmIFMubWVtIGtleSB0LmJhZyB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGJhZyA9IFMuYWRkIGtleSB0LmJhZyB9IGluXG4gICAgICAgICAgbGV0IHQgPSBuZXh0IHQgaW5cbiAgICAgICAgICBsZXQgb3ZlcndyaXR0ZW5fdmFsdWUgPSB0LmNhY2hlLih0Lm9mZnNldCkgaW5cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICBtYXRjaCBvdmVyd3JpdHRlbl92YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gdFxuICAgICAgICAgICAgfCBTb21lIG92ZXJ3cml0dGVuX3ZhbHVlIC0+XG4gICAgICAgICAgICAgIHsgdCB3aXRoIGJhZyA9IFMucmVtb3ZlIG92ZXJ3cml0dGVuX3ZhbHVlIHQuYmFnIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfID0gdC5jYWNoZS4odC5vZmZzZXQpIDwtIFNvbWUga2V5IGluXG4gICAgICAgICAgdFxuICAgICAgICApXG5cbiAgICAgIGxldCBsYXN0X2Zpbml0ZSB0ID0gdC5sYXN0XG5cbiAgICAgIHR5cGUgaW5maW5pdGVfY2FjaGUgPSB7IGluZl9iYWc6IFMudDsgbGFzdDogTy50IG9wdGlvbiB9XG4gICAgICB0eXBlIHQgPSBGaW5pdGUgb2YgZmluaXRlX2NhY2hlIHwgSW5maW5pdGUgb2YgaW5maW5pdGVfY2FjaGVcblxuICAgICAgbGV0IGNyZWF0ZV9pbmZpbml0ZSA9IHsgaW5mX2JhZyA9IFMuZW1wdHk7IGxhc3QgPSBOb25lIH1cblxuICAgICAgbGV0IGFkZF9pbmZpbml0ZSBrZXkgdCA9XG4gICAgICAgIHsgaW5mX2JhZyA9IFMuYWRkIGtleSB0LmluZl9iYWc7IGxhc3QgPSBTb21lIGtleSB9XG5cbiAgICAgIGxldCBjcmVhdGUgc2l6ZSA9XG4gICAgICAgIG1hdGNoIHNpemUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSW5maW5pdGUgY3JlYXRlX2luZmluaXRlXG4gICAgICAgIHwgU29tZSBhIC0+IEZpbml0ZSAoY3JlYXRlX2Zpbml0ZSBhKVxuXG4gICAgICBsZXQgbGFzdCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gbGFzdF9maW5pdGUgdFxuICAgICAgICB8IEluZmluaXRlIHQgLT4gdC5sYXN0XG5cbiAgICAgIGxldCBhZGQga2V5IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBGaW5pdGUgKGFkZF9maW5pdGUga2V5IHQpXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBJbmZpbml0ZSAoYWRkX2luZmluaXRlIGtleSB0KVxuXG4gICAgICBsZXQgZm9sZCBmIHQgYSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuYmFnIGFcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuaW5mX2JhZyBhXG5cbiAgICAgIGxldCBpdGVyIGYgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuaXRlciBmIHQuYmFnXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBTLml0ZXIgZiB0LmluZl9iYWdcbiAgICBlbmQgOlxuICAgICAgQ2FjaGUgd2l0aCB0eXBlIE8udCA9IE9PLnQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZyb20pIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG5tb2R1bGUgQkEgPSBCaWdhcnJheS5BcnJheTFcblxudHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgYnVmZmVyOiBiaWdzdHJpbmc7XG4gIG11dGFibGUgcG9zaXRpb246IGludDtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgaW5pdGlhbF9idWZmZXI6IGJpZ3N0cmluZztcbn1cblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPVxuICAgIGlmIG4gPCAxIHRoZW5cbiAgICAgIDFcbiAgICBlbHNlXG4gICAgICBuXG4gIGluXG4gIGxldCBuID1cbiAgICBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IHMgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBuIGluXG4gIHsgYnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHMgfVxuXG5sZXQgY29udGVudHMgYiA9XG4gIGxldCBvdXQgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBiLnBvc2l0aW9uIGluXG4gIGxldCAoKSA9IEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIG91dCBpblxuICBvdXRcblxuKCpsZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCQS5zdWIgYi5idWZmZXIgb2ZzIGxlblxuKilcbigqXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCQS5ibGl0IChzdWIgc3JjIHNyY29mZiBsZW4pXG4gICAgICAoQmlnc3RyaW5nLnN1YiAoQmlnc3RyaW5nLm9mX2FycmF5IEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgZHN0KSBkc3RvZmYgbGVuKVxuKilcblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2VcbiAgICBCQS51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQkEuZGltIGIuYnVmZmVyXG5cbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IGxlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICB3aGlsZSBiLnBvc2l0aW9uICsgbW9yZSA+ICFuZXdfbGVuIGRvXG4gICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW5cbiAgZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgIGlmIGIucG9zaXRpb24gKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gIGxldCBuZXdfYnVmZmVyID0gQkEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCQS5ibGl0IChCQS5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uKSAoQkEuc3ViIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uKTtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW5cblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG4oKlxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiopXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAoYi5wb3NpdGlvbiArIGkpIChTdHJpbmcuZ2V0IHMgKG9mZnNldCArIGkpKVxuICBkb25lO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID0gYWRkX3N1YnN0cmluZyBiIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKlxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgZnJvbSBbaWNdIGludG8gW2JdLiAqKVxubGV0IHJlYyBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW4gPVxuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIGxldCBuID0gaW5wdXQgaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICAgIGlmIG4gPSAwIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIGFkZF9jaGFubmVsX3JlYyBiIGljIChsZW4tbikgICAoKiBuIDw9IGxlbiAqKVxuICApXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW5cblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyAoTHd0X2J5dGVzLnRvX2J5dGVzIGIuYnVmZmVyKSAwIGIucG9zaXRpb25cbiopXG4oKmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgICB8ICcoJyAtPiAnKSdcbiAgICB8ICd7JyAtPiAnfSdcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG4gIGxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuICBsZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICAgIHwgXyAtPiBpIGluXG4gICAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gICgqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG4gIGxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gICAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgICAoKiBSZWd1bGFyIGlkZW50ICopXG4gICAgfCBfIC0+XG4gICAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbiAgKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG4gIGxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gICAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgICB8ICckJyAtPlxuICAgICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgZW5kIGVsc2VcbiAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICAgIHN1YnN0ICcgJyAwXG5cbiAgbGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGIucG9zaXRpb24gPC0gbGVuXG4qKVxuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IENpdHJpeCBTeXN0ZW1zIEluYy5cbiAqIENvcHlyaWdodCAoYykgMjAxMCBUaG9tYXMgR2F6YWduYWlyZSA8dGhvbWFzQGdhemFnbmFpcmUuY29tPlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbmxldCBkZWZhdWx0X2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCJcblxubGV0IHVyaV9zYWZlX2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCJcblxubGV0IHBhZGRpbmcgPSAnPSdcblxubGV0IG9mX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPVxuICBpZiB4ID0gcGFkZGluZyB0aGVuXG4gICAgMFxuICBlbHNlXG4gICAgU3RyaW5nLmluZGV4IGFscGhhYmV0IHhcblxubGV0IHRvX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPSBhbHBoYWJldC5beF1cblxubGV0IGRlY29kZSA/YWxwaGFiZXQgaW5wdXQgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgaW5wdXQgPVxuICAgIGlmIGxlbmd0aCBtb2QgNCA9IDAgdGhlblxuICAgICAgaW5wdXRcbiAgICBlbHNlXG4gICAgICBpbnB1dCBeIFN0cmluZy5tYWtlICg0IC0gKGxlbmd0aCBtb2QgNCkpIHBhZGRpbmdcbiAgaW5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gbGVuZ3RoIC8gNCBpblxuICBsZXQgcGFkZGluZyA9XG4gICAgbWF0Y2ggbGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gMFxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAyXSA9IHBhZGRpbmcgLT4gMlxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAxXSA9IHBhZGRpbmcgLT4gMVxuICAgIHwgXyAtPiAwXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIEJpZ2FycmF5LkFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dFxuICAgICAgKCh3b3JkcyAqIDMpIC0gcGFkZGluZylcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCBhID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAwKSlcbiAgICBhbmQgYiA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMSkpXG4gICAgYW5kIGMgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDIpKVxuICAgIGFuZCBkID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAzKSkgaW5cbiAgICBsZXQgbiA9IChhIGxzbCAxOCkgbG9yIChiIGxzbCAxMikgbG9yIChjIGxzbCA2KSBsb3IgZCBpblxuICAgIGxldCB4ID0gKG4gbHNyIDE2KSBsYW5kIDI1NSBhbmQgeSA9IChuIGxzciA4KSBsYW5kIDI1NSBhbmQgeiA9IG4gbGFuZCAyNTUgaW5cbiAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDApIChjaGFyX29mX2ludCB4KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMiB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDEpIChjaGFyX29mX2ludCB5KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMSB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDIpIChjaGFyX29mX2ludCB6KVxuICBkb25lO1xuICBvdXRwdXRcblxubGV0IGVuY29kZSA/KHBhZCA9IHRydWUpID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBCaWdhcnJheS5BcnJheTEuZGltIGlucHV0IGluXG4gIGxldCB3b3JkcyA9IChsZW5ndGggKyAyKSAvIDMgaW5cbiAgKCogcm91bmRlZCB1cCAqKVxuICBsZXQgcGFkZGluZ19sZW4gPVxuICAgIGlmIGxlbmd0aCBtb2QgMyA9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIDMgLSAobGVuZ3RoIG1vZCAzKVxuICBpblxuICBsZXQgb3V0cHV0ID0gQnl0ZXMubWFrZSAod29yZHMgKiA0KSAnXFwwMDAnIGluXG4gIGxldCBnZXQgaSA9XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9jaGFyIChCaWdhcnJheS5BcnJheTEuZ2V0IGlucHV0IGkpXG4gIGluXG4gIGZvciBpID0gMCB0byB3b3JkcyAtIDEgZG9cbiAgICBsZXQgeCA9IGdldCAoKDMgKiBpKSArIDApXG4gICAgYW5kIHkgPSBnZXQgKCgzICogaSkgKyAxKVxuICAgIGFuZCB6ID0gZ2V0ICgoMyAqIGkpICsgMikgaW5cbiAgICBsZXQgbiA9ICh4IGxzbCAxNikgbG9yICh5IGxzbCA4KSBsb3IgeiBpblxuICAgIGxldCBhID0gKG4gbHNyIDE4KSBsYW5kIDYzXG4gICAgYW5kIGIgPSAobiBsc3IgMTIpIGxhbmQgNjNcbiAgICBhbmQgYyA9IChuIGxzciA2KSBsYW5kIDYzXG4gICAgYW5kIGQgPSBuIGxhbmQgNjMgaW5cbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMCkgKHRvX2NoYXIgP2FscGhhYmV0IGEpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAxKSAodG9fY2hhciA/YWxwaGFiZXQgYik7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDIpICh0b19jaGFyID9hbHBoYWJldCBjKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMykgKHRvX2NoYXIgP2FscGhhYmV0IGQpXG4gIGRvbmU7XG4gIGZvciBpID0gMSB0byBwYWRkaW5nX2xlbiBkb1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBpKSBwYWRkaW5nXG4gIGRvbmU7XG4gIGlmIHBhZCB0aGVuXG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBvdXRwdXRcbiAgZWxzZVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgb3V0cHV0IDAgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBwYWRkaW5nX2xlbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgbGlua3MgPVxuICB8IExJTktTIG9mICgoaW50ICogaW50KSAqIGludCkgbGlzdFxuICB8IFdIQVRFVkVSXG4gIHwgU09NRVxuICB8IFRZUEUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgY2NfcG9ydCA9IHtcbiAgcG9ydF9saW5rczogbGlua3M7XG4gIHBvcnRfc3RhdGVzOiBzdHJpbmcgbGlzdCBvcHRpb247ICAoKiogW05vbmVdIG1lYW5zIFdIQVRFVkVSICopXG59XG5cbnR5cGUgc2l0ZSA9IFBvcnQgb2YgY2NfcG9ydCB8IENvdW50ZXIgb2YgaW50XG50eXBlIGNjX3NpdGUgPSB7IHNpdGVfbmFtZTogc3RyaW5nOyBzaXRlX3R5cGU6IHNpdGUgfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX2lkOiBpbnQgb3B0aW9uO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIG9wdGlvbiBhcnJheSBhcnJheVxuXG5tb2R1bGUgTGlua1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCAqIGludCkgKiBpbnRcblxuICBsZXQgcHJpbnQgPVxuICAgIFBwLnBhaXJcbiAgICAgIChQcC5wYWlyIEZvcm1hdC5wcF9wcmludF9pbnQgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIEZvcm1hdC5wcF9wcmludF9pbnRcblxuICBsZXQgY29tcGFyZSAoeCwgeSkgKHgnLCB5JykgPVxuICAgIGxldCBjID0gTW9kcy5pbnRfcGFpcl9jb21wYXJlIHggeCcgaW5cbiAgICBpZiBjID0gMCB0aGVuXG4gICAgICBNb2RzLmludF9jb21wYXJlIHkgeSdcbiAgICBlbHNlXG4gICAgICBjXG5lbmQpXG5cbmxldCBwcmludF9saW5rIChkYW5nbGluZywgZnJlZV9pZCkgcCBmID0gZnVuY3Rpb25cbiAgfCBXSEFURVZFUiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbI11cIlxuICB8IFNPTUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiW19dXCJcbiAgfCBUWVBFIChzaSwgdHkpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJXMuJXNdXCIgc2kgdHlcbiAgfCBMSU5LUyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IExJTktTIGwgLT5cbiAgICBsZXQgbXlzZWxmID1cbiAgICAgIHJlZiAoTGlua1NldE1hcC5NYXAuZmluZF9kZWZhdWx0IExpbmtTZXRNYXAuTWFwLmVtcHR5IHAgIWRhbmdsaW5nKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWFdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIHAnIC0+XG4gICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICAgaWYgcCA9IHAnIHRoZW5cbiAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAgICAgIChMaW5rU2V0TWFwLk1hcC5maW5kX29wdGlvbiBwKVxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHAnICFkYW5nbGluZylcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWQgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBteXNlbGYgOj0gTGlua1NldE1hcC5NYXAuYWRkIHAnICFmcmVlX2lkICFteXNlbGYgaW5cbiAgICAgICAgICAgICAgICAgICAhZnJlZV9pZFxuICAgICAgICAgICAgICAgICB8IFNvbWUgdmEgLT4gdmFcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIGkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBkYW5nbGluZyA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCAhbXlzZWxmICFkYW5nbGluZ1xuXG5sZXQgcHJpbnRfcG9ydCB3aXRoX2xpbmsgbm9kZSBwIGlkIGYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgICAgIHwgU29tZSBbXSAtPiAoKVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIGkpKVxuICAgICAgICAgIGwpXG4gICAgcC5wb3J0X3N0YXRlc1xuICAgIChtYXRjaCB3aXRoX2xpbmsgd2l0aFxuICAgIHwgU29tZSBwYWNrIC0+IHByaW50X2xpbmsgcGFjayAobm9kZSwgaWQpXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gLT4gKCkpXG4gICAgcC5wb3J0X2xpbmtzXG5cbmxldCBwcmludF9pbnRmIHdpdGhfbGluayBub2RlID1cbiAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpZCBmIHNpIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiBzaS5zaXRlX25hbWUgaW5cbiAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICB8IFBvcnQgcCAtPiBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZlxuICAgICAgfCBDb3VudGVyIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIns9JWl9XCIgaSlcblxubGV0IHByaW50X2FnZW50IHdpdGhfaWQgbGluayBub2RlIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgU29tZSBhZyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVzKEBbPGg+JWFAXSlcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwieCVpOlwiIGkpKVxuICAgICAgKGlmIHdpdGhfaWQgdGhlblxuICAgICAgICAgYWcubm9kZV9pZFxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpXG4gICAgICBhZy5ub2RlX3R5cGUgKHByaW50X2ludGYgbGluayBub2RlKSBhZy5ub2RlX3NpdGVzXG5cbmxldCBwcmludF9jYyBmIG1peCA9XG4gIGxldCBsaW5rID0gU29tZSAocmVmIExpbmtTZXRNYXAuTWFwLmVtcHR5LCByZWYgMCkgaW5cbiAgUHAuYXJyYXlcbiAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXFxAIFwiKVxuICAgIChmdW4gYWwgLT4gUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBhciAtPiBwcmludF9hZ2VudCB0cnVlIGxpbmsgKGFsLCBhcikpKVxuICAgIGYgbWl4XG5cbmxldCBnZXRfY29sb3IgPVxuICBsZXQgc3RvcmUgPSBIYXNodGJsLmNyZWF0ZSAxMCBpblxuICBmdW4gaSAtPlxuICAgIHRyeSBIYXNodGJsLmZpbmQgc3RvcmUgaVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgdiA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiIyV4JXgleFwiIChSYW5kb20uaW50IDI1NSkgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgICAgIChSYW5kb20uaW50IDI1NSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBIYXNodGJsLmFkZCBzdG9yZSBpIHYgaW5cbiAgICAgIHZcblxubGV0IHByaW50X2RvdF9jYyBuYl9jYyBmIG1peCA9XG4gIFBwLmFycmF5IFBwLmVtcHR5XG4gICAgKGZ1biBpbCAtPlxuICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBpciBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICBcIm5vZGUlZF8lZF8lZCBbbGFiZWwgPSBcXFwiQFs8aD4lYUBdXFxcIiwgY29sb3IgPSBcXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgIHN0eWxlPWZpbGxlZF07QCxcIlxuICAgICAgICAgICAgbmJfY2MgaWwgaXJcbiAgICAgICAgICAgIChwcmludF9hZ2VudCBmYWxzZSBOb25lIChpbCwgaXIpKVxuICAgICAgICAgICAgKFNvbWUgYWcpIChnZXRfY29sb3IgYWcubm9kZV90eXBlKTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwibm9kZSVkXyVkXyVkIC0+IGNvdW50ZXIlZCBbc3R5bGU9aW52aXNdO0AsXCIgbmJfY2MgaWxcbiAgICAgICAgICAgIGlyIG5iX2NjKSlcbiAgICBmIG1peDtcbiAgaWdub3JlXG4gIEBAIEFycmF5Lml0ZXJpXG4gICAgICAgKGZ1biBhbCAtPlxuICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBhciAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGFnIC0+XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAgICAgIChmdW4gcyBzaSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgICB8IENvdW50ZXIgXyAtPiAoKVxuICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgV0hBVEVWRVIgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBTT01FIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgVFlQRSAoX3NpLCBfdHkpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgTElOS1MgbGlua3MgLT5cbiAgICAgICAgICAgICAgICAgICAgIFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmICgoYWwnLCBhcicpLCBzJykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWwgPCBhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhbCA9IGFsJyAmJiAoYXIgPCBhcicgfHwgKGFyID0gYXInICYmIHMgPCBzJykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbWl4LihhbCcpLihhcicpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhZycgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIC0+IG5vZGUlZF8lZF8lZCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFpbGxhYmVsPVxcXCIlc1xcXCIsIGhlYWRsYWJlbD1cXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI9bm9uZV07QCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX2NjIGFsIGFyIG5iX2NjIGFsJyBhcicgc2kuc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWcnLm5vZGVfc2l0ZXMuKHMnKS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICBmIGxpbmtzKSlcbiAgICAgICAgICAgICAgIGFnLm5vZGVfc2l0ZXMpKVxuICAgICAgIG1peFxuXG4oKlxudHlwZSBjY19ub2RlID0ge1xuICBub2RlX3R5cGU6IHN0cmluZztcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgYXJyYXlcbiAqKVxuXG5sZXQgd3JpdGVfY2NfcG9ydCBvYiBwID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9ydF9saW5rc1wiXG4gICAgICAoZnVuIG9iIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgV0hBVEVWRVIgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgICAgICAgfCBTT01FIC0+IFlvanNvbi5CYXNpYy53cml0ZV9ib29sIG9iIHRydWVcbiAgICAgICAgfCBUWVBFIChzaSwgdHkpIC0+XG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJ7XFxcInNpdGVfbmFtZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc2kgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCIsXFxcImFnZW50X3R5cGVcXFwiOlxcXCJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHR5IGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwifVwiXG4gICAgICAgIHwgTElOS1MgbCAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICBvYiBsKVxuICAgICAgb2IgcC5wb3J0X2xpbmtzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X3N0YXRlc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIChKc29uVXRpbC53cml0ZV9saXN0IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpKVxuICAgICAgb2IgcC5wb3J0X3N0YXRlc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9zaXRlIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZi5zaXRlX3R5cGUgd2l0aFxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwiY291bnRlclwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGlcbiAgICB8IFBvcnQgcCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcInBvcnRcIiBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICcsJyBpblxuICAgICAgd3JpdGVfY2NfcG9ydCBvYiBwXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2NjX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfbmFtZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgZi5zaXRlX25hbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJzaXRlX3R5cGVcIiB3cml0ZV9zaXRlIG9iIGYgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgbGlua3Nfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBXSEFURVZFUlxuICB8IGBCb29sIGIgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgYiBpblxuICAgIFNPTUVcbiAgfCBgQXNzb2MgWyAoXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaSk7IChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSkgXVxuICB8IGBBc3NvYyBbIChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSk7IChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKSBdIC0+XG4gICAgVFlQRSAoc2ksIHR5KVxuICB8IGBMaXN0IF8gYXMgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBOb25lIGluXG4gICAgTElOS1NcbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnKSlcbiAgICAgICAgIHgpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgY2NfcG9ydFwiLCB4KSlcblxubGV0IHJlYWRfY2NfcG9ydCBwIGxiID1cbiAgbGV0IHBvcnRfbGlua3MsIHBvcnRfc3RhdGVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIGkpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9ydF9saW5rc1wiIHRoZW5cbiAgICAgICAgICBsaW5rc19vZl95b2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiksIGlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInBvcnRfc3RhdGVzXCIpIGluXG4gICAgICAgICAgKCBzLFxuICAgICAgICAgICAgSnNvblV0aWwucmVhZF9vcHRpb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgIChMSU5LUyBbXSwgU29tZSBbXSkgcCBsYlxuICBpblxuICB7IHBvcnRfbGlua3M7IHBvcnRfc3RhdGVzIH1cblxubGV0IHJlYWRfc2l0ZSBwIGxiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHAgbGIgaW5cbiAgbGV0IGtleSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoZnVuIHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJjb3VudGVyXCIgdGhlblxuICAgICAgICAgIENvdW50ZXIgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydFwiKSBpblxuICAgICAgICAgIFBvcnQgKHJlYWRfY2NfcG9ydCBwIGxiKVxuICAgICAgICApKVxuICAgICAgcCBsYlxuICBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYiBpblxuICBvdXRcblxubGV0IHJlYWRfY2Nfc2l0ZSBwIGxiID1cbiAgbGV0IHNpdGVfbmFtZSwgc2l0ZV90eXBlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2l0ZV9uYW1lXCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzaXRlX3R5cGVcIikgaW5cbiAgICAgICAgICBuLCByZWFkX3NpdGUgcCBsYlxuICAgICAgICApKVxuICAgICAgKFwiXCIsIENvdW50ZXIgKC0xKSkgcCBsYlxuICBpblxuICB7IHNpdGVfbmFtZTsgc2l0ZV90eXBlIH1cblxubGV0IHdyaXRlX2NjX25vZGUgb2IgeCA9XG4gIEpzb25VdGlsLndyaXRlX29wdGlvblxuICAgIChmdW4gb2IgZiAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX3R5cGVcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iXG4gICAgICAgICAgZi5ub2RlX3R5cGVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggZi5ub2RlX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBub2RlX2lkIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9pZFwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2Igbm9kZV9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2JcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfc2l0ZXNcIlxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSB3cml0ZV9jY19zaXRlKVxuICAgICAgICAgIG9iIGYubm9kZV9zaXRlc1xuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgb2IgeFxuXG5sZXQgcmVhZF9jY19ub2RlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgIChmdW4gcCBsYiAtPlxuICAgICAgbGV0IG5vZGVfaWQsIG5vZGVfdHlwZSwgbm9kZV9zaXRlcyA9XG4gICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgICAgIChmdW4gKGlkLCBuLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICAgICAgaWYga2V5ID0gXCJub2RlX2lkXCIgdGhlblxuICAgICAgICAgICAgICBTb21lIChZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiksIG4sIHNcbiAgICAgICAgICAgIGVsc2UgaWYga2V5ID0gXCJub2RlX3R5cGVcIiB0aGVuXG4gICAgICAgICAgICAgIGlkLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJub2RlX3NpdGVzXCIpIGluXG4gICAgICAgICAgICAgIGlkLCBuLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSByZWFkX2NjX3NpdGUgcCBsYlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoTm9uZSwgXCJcIiwgW3x8XSkgcCBsYlxuICAgICAgaW5cbiAgICAgIHsgbm9kZV9pZDsgbm9kZV90eXBlOyBub2RlX3NpdGVzIH0pXG4gICAgcCBsYlxuXG5sZXQgd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX25vZGUpIG9iIGZcblxubGV0IHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgc3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgbGV0ICgpID0gd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiB4IGluXG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnbGlua3Mgc2l0ZV9zaWcgPSB7XG4gIGludGVybmFsX3N0YXRlOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgbGlua3M6ICdsaW5rcyBvcHRpb247XG4gIGNvdW50ZXJzX2luZm86IChpbnQgKiBpbnQpIG9wdGlvbjtcbiAgICAgICgqKiBJZiByZWxldmFudDogY291bnRlciBDRVEgdmFsdWUgKiBjb3VudGVyIGRlbHRhICopXG59XG5cbnR5cGUgdCA9IGJvb2wgYXJyYXkgYXJyYXkgc2l0ZV9zaWcgTmFtZWREZWNscy50XG5cbmxldCBmb2xkIGYgPSBOYW1lZERlY2xzLmZvbGQgKGZ1biBpIG4gbyBfIC0+IGYgaSBuIG8pXG5cbmxldCBudW1fb2Zfc2l0ZSA/YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlID1cbiAgbGV0IGtpbmQgPVxuICAgIG1hdGNoIGFnZW50X25hbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBcInNpdGUgbmFtZVwiXG4gICAgfCBTb21lIGFnZW50X25hbWUgLT4gXCJzaXRlIG5hbWUgZm9yIGFnZW50IFwiIF4gYWdlbnRfbmFtZVxuICBpblxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZCBzaWduYXR1cmUgc2l0ZV9uYW1lXG5cbmxldCBzaXRlX29mX251bSBhZGRyIHNpZ25hdHVyZSA9XG4gIHRyeSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ25hdHVyZSBhZGRyXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgbnVtX29mX2ludGVybmFsX3N0YXRlIHNpdGVfaWQgc3RhdGUgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfbmFtZSwgc2l0ZV9zaWcgPSBzaWduYXR1cmUuTmFtZWREZWNscy5kZWNscy4oc2l0ZV9pZCkgaW5cbiAgICBOYW1lZERlY2xzLmVsdF9pZFxuICAgICAgfmtpbmQ6KFwiaW50ZXJuYWwgc3RhdGUgZm9yIHNpdGUgXCIgXiBzaXRlX25hbWUpXG4gICAgICBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSBzdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgc2l0ZV9pZCB2YWxfaWQgc2lnbmF0dXJlID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIHNpZ25hdHVyZSBzaXRlX2lkIGluXG4gICAgTmFtZWREZWNscy5lbHRfbmFtZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSB2YWxfaWRcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBjb3VudGVyX29mX3NpdGVfaWQgc2l0ZV9pZCBzaWduYXR1cmUgPVxuICB0cnkgKE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCkuY291bnRlcnNfaW5mb1xuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGhhc19jb3VudGVyIHNpZ25hdHVyZSA9XG4gIGZvbGRcbiAgICAoZnVuIHBfaWQgXyBvayAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgcF9pZCBpblxuICAgICAgICBvayB8fCBub3QgKHNpdGVfc2lnLmNvdW50ZXJzX2luZm8gPSBOb25lKVxuICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIGZhbHNlIHNpZ25hdHVyZVxuXG4oKlxubGV0IHJlYWRfcG9zaXRpb24gcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgSW50IGxpbmUpOyAoXCJjaHJcIiwgYEludCBjaHIpIF1cbiAgfCBgQXNzb2MgWyAoXCJjaHJcIiwgYEludCBjaHIpOyAoXCJsaW5lXCIsIGBJbnQgbGluZSkgXSAtPlxuICAgIHsgbGluZTsgY2hyIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcG9zaXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9wb3NpdGlvbiBvYiB7IGxpbmU7IGNociB9ID1cbiAgWW9qc29uLndyaXRlX2Fzc29jIG9iIFsgXCJsaW5lXCIsIGBJbnQgbGluZTsgXCJjaHJcIiwgYEludCBjaHIgXVxuKilcblxubGV0IG9uZV90b19qc29uID1cbiAgTmFtZWREZWNscy50b19qc29uIChmdW4gc2lnbmF0dXJlIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgW1xuICAgICAgICAgICggXCJpbnRlcm5hbF9zdGF0ZVwiLFxuICAgICAgICAgICAgTmFtZWREZWNscy50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSApO1xuICAgICAgICAgICggXCJsaW5rc1wiLFxuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gbGlua3MgLT5cbiAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gYSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYExpc3QgKEFycmF5LmZvbGRfcmlnaHQgKGZ1biBiIGMgLT4gYEJvb2wgYiA6OiBjKSBhIFtdKVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICBsaW5rcyBbXSkpXG4gICAgICAgICAgICAgIHNpZ25hdHVyZS5saW5rcyApO1xuICAgICAgICAgICggXCJjb3VudGVyc19pbmZvXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biAoYzEsIGMyKSAtPiBgTGlzdCBbIGBJbnQgYzE7IGBJbnQgYzIgXSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmNvdW50ZXJzX2luZm8gKTtcbiAgICAgICAgXSlcblxubGV0IG9uZV9vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gYm9vbCBhcnJheSBhcnJheSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgPVxuICBOYW1lZERlY2xzLm9mX2pzb24gKGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbF9zdGF0ZVwiLCBhKTsgKFwibGlua3NcIiwgYik7IChcImNvdW50ZXJzX2luZm9cIiwgYykgXSAtPlxuICAgICAge1xuICAgICAgICBpbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgTmFtZWREZWNscy5vZl9qc29uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBhO1xuICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBCb29sIGIgLT4gYlxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBsJ1xuICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGI7XG4gICAgICAgIGNvdW50ZXJzX2luZm8gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgYExpc3QgWyBgSW50IGMxOyBgSW50IGMyIF0gLT4gYzEsIGMyXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGM7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuXG50eXBlIGNvdW50ZXJfYWdlbnRfaW5mbyA9IHsgaWQ6IGludDsgYXJpdHk6IGludDsgcG9ydHM6IGludCAqIGludCB9XG5cbnR5cGUgcyA9IHtcbiAgYWdlbnRfc2lnczogdCBOYW1lZERlY2xzLnQ7XG4gIGNvdW50ZXJfYWdlbnRfaW5mbzogY291bnRlcl9hZ2VudF9pbmZvIG9wdGlvbjtcbn1cblxubGV0IHNpemUgc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBzaWdzLmFnZW50X3NpZ3NcbmxldCBnZXQgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWdzLmFnZW50X3NpZ3MgYWdlbnRfaWRcbmxldCBhcml0eSBzaWdzIGFnZW50X2lkID0gTmFtZWREZWNscy5zaXplIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IG1heF9hcml0eSBzaWdzID1cbiAgTmFtZWREZWNscy5mb2xkIChmdW4gXyBfIHggYSAtPiBtYXggeCAoTmFtZWREZWNscy5zaXplIGEpKSAwIHNpZ3MuYWdlbnRfc2lnc1xuXG5sZXQgYWdlbnRfb2ZfbnVtIGkgc2lncyA9IE5hbWVkRGVjbHMuZWx0X25hbWUgc2lncy5hZ2VudF9zaWdzIGlcblxubGV0IG51bV9vZl9hZ2VudCBuYW1lIHNpZ3MgPVxuICBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcImFnZW50XCIgc2lncy5hZ2VudF9zaWdzIG5hbWVcblxubGV0IGlkX29mX3NpdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIG51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHNpdGVfbmFtZSAoZ2V0IHNpZ3MgbilcblxubGV0IHNpdGVfb2ZfaWQgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID0gc2l0ZV9vZl9udW0gc2l0ZV9pZCAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpZF9vZl9pbnRlcm5hbF9zdGF0ZSAoKGFnZW50X25hbWUsIF8pIGFzIGFnZW50X3R5KSBzaXRlX25hbWUgc3RhdGUgc2lncyA9XG4gIGxldCBuID0gbnVtX29mX2FnZW50IGFnZW50X3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ25hdHVyZSA9IGdldCBzaWdzIG4gaW5cbiAgbGV0IHNpdGVfaWQgPSBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgc2lnbmF0dXJlIGluXG4gIG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZVxuXG5sZXQgaW50ZXJuYWxfc3RhdGVfb2ZfaWQgYWdlbnRfaWQgaWRfc2l0ZSBpZF9zdGF0ZSBzaWdzID1cbiAgaW50ZXJuYWxfc3RhdGVfb2Zfc2l0ZV9pZCBpZF9zaXRlIGlkX3N0YXRlIChnZXQgc2lncyBhZ2VudF9pZClcblxubGV0IGludGVybmFsX3N0YXRlc19udW1iZXIgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdlbnRfaWQgc2l0ZV9pZCBzaWdzID1cbiAgdHJ5XG4gICAgbGV0IHNpdGVfc2lnID0gTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZ2VudF9pZCkgc2l0ZV9pZCBpblxuICAgIGlmIE5hbWVkRGVjbHMuc2l6ZSBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZSA9IDAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgMFxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmRlZmF1bHRfbnVtX3ZhbHVlOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG5cbmxldCByZWMgYWxsb3dlZF9saW5rIGFnMSBzMSBhZzIgczIgc2lncyA9XG4gIGlmIGFnMSA+IGFnMiB0aGVuXG4gICAgYWxsb3dlZF9saW5rIGFnMiBzMiBhZzEgczEgc2lnc1xuICBlbHNlIChcbiAgICB0cnlcbiAgICAgIG1hdGNoIChOYW1lZERlY2xzLmVsdF92YWwgKGdldCBzaWdzIGFnMSkgczEpLmxpbmtzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgbCAtPiBsLihhZzIgLSBhZzEpLihzMilcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJTaWduYXR1cmUuYWxsb3dlZF9saW5rOiBpbnZhbGlkIHNpdGUgaWRlbnRpZmllclwiXG4gIClcblxubGV0IGNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3MgPVxuICB7XG4gICAgYWdlbnRfc2lncztcbiAgICBjb3VudGVyX2FnZW50X2luZm8gPVxuICAgICAgKGlmIGNvdW50ZXJzX3Blcl9hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIGNvdW50ZXIgYWdlbnQsIHdlIGNob29zZSAwIGZvciBpdHMgYWdlbnQgaWQgYW5kIDAgYW5kIDEgYXMgaXRzIHBvcnQgaWRzICopXG4gICAgICAgICBTb21lIHsgaWQgPSAwOyBhcml0eSA9IDI7IHBvcnRzID0gMCwgMSB9KTtcbiAgfVxuXG5sZXQgaXNfY291bnRlcl9hZ2VudCBzaWdzIG5faWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYWdlbnRfaW5mbyAtPiBuX2lkID0gYWdlbnRfaW5mby5pZFxuXG5sZXQgcG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIG5faWQgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+XG4gICAgaWYgbl9pZCA9IGFnZW50X2luZm8uaWQgdGhlblxuICAgICAgU29tZSBhZ2VudF9pbmZvLnBvcnRzXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5sZXQgc2l0ZV9pc19jb3VudGVyIHNpZ3MgYWdfdHkgaWQgPVxuICBjb3VudGVyX29mX3NpdGVfaWQgaWQgKGdldCBzaWdzIGFnX3R5KSA8PiBOb25lXG5cbmxldCBnZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgPVxuICBtYXRjaCBzaWdzLmNvdW50ZXJfYWdlbnRfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIk5vIGNvdW50ZXIgYWdlbnRcIlxuICB8IFNvbWUgY291bnRlcl9hZ2VudF9pbmZvIC0+IGNvdW50ZXJfYWdlbnRfaW5mb1xuXG5sZXQgcHJpbnRfYWdlbnQgc2lncyBmIGFnX3R5ID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGFnZW50X29mX251bSBhZ190eSBzaWdzXG5cbmxldCBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBzaXRlX29mX2lkIGFnX3R5IGlkIHNpZ3NcblxubGV0IHByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSBmIGlkID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIEBAIGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwcmludF9zaXRlIHNpZ3MgYWdfdHkgZiBzaXRlXG4gIHwgU29tZSBpZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc3slc31cIlxuICAgICAgKHNpdGVfb2ZfaWQgYWdfdHkgc2l0ZSBzaWdzKVxuICAgICAgKGludGVybmFsX3N0YXRlX29mX2lkIGFnX3R5IHNpdGUgaWQgc2lncylcblxubGV0IHByaW50X2NvdW50ZXIgc2lncyBhZ190eSBmIGlkID1cbiAgbWF0Y2ggY291bnRlcl9vZl9zaXRlX2lkIGlkIChnZXQgc2lncyBhZ190eSkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChjMSwgYzIpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ7PSVkLys9JWR9XCIgYzEgYzJcblxubGV0IHByaW50X29uZSA/KHNpZ3MgOiBzIG9wdGlvbikgKGkgOiBpbnQpIChmIDogRm9ybWF0LmZvcm1hdHRlcilcbiAgICAoc2lnbmF0dXJlIDogdCkgPVxuICBsZXQgcHBfaW50IGYgeCA9XG4gICAgaWYgTmFtZWREZWNscy5zaXplIHggPiAwIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCJcbiAgICAgICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbmEgZiAoKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIG5hKSlcbiAgICAgICAgeFxuICBpblxuICBsZXQgcHBfbGluayA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gXyAtPiAoKVxuICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICBmdW4gaSBmIC0+IChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGxpbmtzIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgLT5cbiAgICAgICAgICAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBzaSBmIGIgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChwcmludF9zaXRlIHNpZ3MgKGkgKyBhZykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2kgKHByaW50X2FnZW50IHNpZ3MpIChpICsgYWcpKSkpXG4gICAgICAgICAgICBsaW5rcylcbiAgaW5cbiAgbGV0IHBwX2NvdW50cyBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGMxLCBjMikgLT4gRm9ybWF0LmZwcmludGYgZiBcIns9JWQvKz0lZH1cIiBjMSBjMlxuICBpblxuICAoTmFtZWREZWNscy5wcmludFxuICAgICB+c2VwOihmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCIpXG4gICAgIChmdW4gXyBuYW1lIGYgc2l0ZV9zaWcgLT5cbiAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhJWFcIiBuYW1lIHBwX2ludCBzaXRlX3NpZy5pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgKHBwX2xpbmsgaSkgc2l0ZV9zaWcubGlua3MgcHBfY291bnRzIHNpdGVfc2lnLmNvdW50ZXJzX2luZm8pKVxuICAgIGYgc2lnbmF0dXJlXG5cbmxldCBwcmludCBmIHNpZ3MgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgc2kgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlYWdlbnQ6ICVzKCVhKUBdXCIgbiAocHJpbnRfb25lIH5zaWdzIGkpIHNpKSlcbiAgICBzaWdzLmFnZW50X3NpZ3NcblxubGV0IHRvX2pzb24gc2lncyA9IE5hbWVkRGVjbHMudG9fanNvbiBvbmVfdG9fanNvbiBzaWdzLmFnZW50X3NpZ3NcblxubGV0IG9mX2pzb24gdiA9XG4gIGxldCBhZ2VudF9zaWdzIDogJ2Egc2l0ZV9zaWcgTmFtZWREZWNscy50IE5hbWVkRGVjbHMudCA9XG4gICAgTmFtZWREZWNscy5vZl9qc29uIG9uZV9vZl9qc29uIHZcbiAgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBcIl9fY291bnRlcl9hZ2VudFwiIGFnZW50X3NpZ3MuTmFtZWREZWNscy5maW5kZXJcbiAgd2l0aFxuICB8IFNvbWUgaWQgLT5cbiAgICBsZXQgYWdlbnRfc2lnbmF0dXJlID0gTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3MgaWQgaW5cbiAgICBsZXQgcG9ydHMgPVxuICAgICAgKCBudW1fb2Zfc2l0ZSAoXCJhXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlLFxuICAgICAgICBudW1fb2Zfc2l0ZSAoXCJiXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlIClcbiAgICBpblxuICAgIHsgYWdlbnRfc2lnczsgY291bnRlcl9hZ2VudF9pbmZvID0gU29tZSB7IGlkOyBhcml0eSA9IDI7IHBvcnRzIH0gfVxuICB8IE5vbmUgLT4geyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBOb25lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9saW5rOiAoaW50ICogaW50KSBvcHRpb247IHNpdGVfc3RhdGU6IGludCBvcHRpb24gfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogaW50O1xuICBub2RlX2lkX2luX3dpdG5lc3M6IGludDtcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cblxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuXG5sZXQgcmVjIGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIGRvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8ICh4LCB5KSA6OiBxIC0+XG4gICAgbGV0IG8gPSBhLih4KSBpblxuICAgIGxldCBwID0gYi4oeSkgaW5cbiAgICBvLm5vZGVfdHlwZSA9IHAubm9kZV90eXBlXG4gICAgJiZcbiAgICBsZXQgaV9vayA9XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAoZnVuIF8gYiB4IHkgLT5cbiAgICAgICAgICBiXG4gICAgICAgICAgJiZcbiAgICAgICAgICBtYXRjaCB4LnNpdGVfc3RhdGUsIHkuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPiBhID0gYlxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCAoU29tZSBfIHwgTm9uZSksIF8gLT4gZmFsc2UpXG4gICAgICAgIHRydWUgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgIGluXG4gICAgaV9va1xuICAgICYmXG4gICAgKG1hdGNoXG4gICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgIChmdW4gXyBjIHggeSAtPlxuICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNcbiAgICAgICAgICAgfCBTb21lIHRvZG8gLT5cbiAgICAgICAgICAgICAobWF0Y2ggeC5zaXRlX2xpbmssIHkuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKGEsIHMpLCBTb21lIChiLCBzJykgLT5cbiAgICAgICAgICAgICAgIGlmIHMgPD4gcycgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAoIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSBkb24sXG4gICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfYWxsIChmdW4gKGEnLCBiJykgLT4gYSA9IGEnIHx8IGIgPSBiJykgdG9kbyApXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyB8IF8sIF8gOjogXyA6OiBfIHwgWyBfIF0sIFsgXyBdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbIChhJywgYicpIF0sIFtdIHwgW10sIFsgKGEnLCBiJykgXSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGEgPSBhJyAmJiBiID0gYicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbXSwgW10gLT4gU29tZSAoKGEsIGIpIDo6IHRvZG8pXG4gICAgICAgICAgICAgICApKSlcbiAgICAgICAgIChTb21lIHEpIG8ubm9kZV9zaXRlcyBwLm5vZGVfc2l0ZXNcbiAgICAgd2l0aFxuICAgIHwgU29tZSB0b2RvJyAtPiBhZ2VudHNfYXJlX2NvbXBhdGlibGVzIGEgYiAoKHgsIHkpIDo6IGRvbikgdG9kbydcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgbWl4ID1cbiAgbGV0IGxlbiA9IFNpZ25hdHVyZS5zaXplIHNpZ3MgaW5cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbGVuICgwLCBbXSkgaW5cbiAgbGV0IGNsYXNzaWZ5IGlkIGFnID1cbiAgICBsZXQgbmIsIGFncyA9IG91dC4oYWcubm9kZV90eXBlKSBpblxuICAgIG91dC4oYWcubm9kZV90eXBlKSA8LSBzdWNjIG5iLCBpZCA6OiBhZ3NcbiAgaW5cbiAgbGV0ICgpID0gQXJyYXkuaXRlcmkgY2xhc3NpZnkgbWl4IGluXG4gIG91dFxuXG5sZXQgZXF1YWwgY2J0X2EgYSBjYnRfYiBiID1cbiAgbWF0Y2ggVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGNidF9hIGNidF9iIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSAoW10sIGFncykgLT4gYWdzID0gW11cbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPiBib29sIHx8IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIFtdIFsgaDEsIGFnIF0pXG4gICAgICBmYWxzZSBhZ3NcblxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2J0ID1cbiAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChsLCBfKSBhY2MgLT4gbCArIChoYXNoX3ByaW1lICogYWNjKSkgY2J0IDBcblxudHlwZSB0ID0gKGludCAqIChpbnQgKiBpbnQgbGlzdCkgYXJyYXkgKiBjb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuSW50TWFwLnRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHlcblxubGV0IGluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3MgeCBzID1cbiAgbGV0IGNidF94ID0gY2xhc3NpZnlfYnlfdHlwZSBzaWdzIHggaW5cbiAgbGV0IGhzID0gY29hcnNlX2hhc2ggY2J0X3ggaW5cbiAgbGV0IGwgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaHMgcyBpblxuICBsZXQgcmVjIGF1eF9pbmNyZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyAxLCBjYnRfeCwgeCBdXG4gICAgfCAoKG4sIGNidF95LCB5KSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBlcXVhbCBjYnRfeCB4IGNidF95IHkgdGhlblxuICAgICAgICAoc3VjYyBuLCBjYnRfeSwgeSkgOjogdFxuICAgICAgZWxzZVxuICAgICAgICBoIDo6IGF1eF9pbmNyZW1lbnQgdFxuICBpblxuICBNb2RzLkludE1hcC5hZGQgaHNcbiAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAoMSwgY2J0X3gsIHgpIDo6IGxcbiAgICAgZWxzZVxuICAgICAgIGF1eF9pbmNyZW1lbnQgbClcbiAgICBzXG5cbmxldCByZWMgY291bnRlcl92YWx1ZSBjYyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbGV0IGFnID0gY2MuKG5pZCkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaWQgYWNjIHNpIC0+XG4gICAgICBpZiBpZCA9IHNpZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNpLnNpdGVfbGluayB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT4gY291bnRlcl92YWx1ZSBjYyB4IChhY2MgKyAxKVxuICAgICAgKSlcbiAgICBjb3VudCBhZy5ub2RlX3NpdGVzXG5cbmxldCBjY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBjYyA9XG4gIGxldCByID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IGNjX2xpc3QsIGluZGV4ZXMsIF8gPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaSAoYWNjLCBpbmRleGVzLCBwb3MpIGFnIC0+XG4gICAgICAgIG1hdGNoIFNpZ25hdHVyZS5wb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWcubm9kZV90eXBlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluZGV4ZXMnID1cbiAgICAgICAgICAgIGlmIGkgPSBwb3MgdGhlblxuICAgICAgICAgICAgICBpbmRleGVzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgcG9zIGluZGV4ZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkluamVjdGl2aXR5IG9mIHJlbmFtaW5nIGluIHNuYXBzaG90XCIpKVxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiByXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhZyA6OiBhY2MsIGluZGV4ZXMnLCBwb3MgKyAxXG4gICAgICAgIHwgU29tZSBfIC0+IGFjYywgaW5kZXhlcywgcG9zKVxuICAgICAgKFtdLCByLCAwKSBjY1xuICBpblxuICBsZXQgY2Nfd2l0aG91dF9jb3VudGVycyA9IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGNjX2xpc3QpIGluXG4gIFt8XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuIGFnIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfaWQgPVxuICAgICAgICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZSBhZy5ub2RlX2lkX2luX3dpdG5lc3NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfdHlwZSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5ub2RlX3R5cGU7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfc2l0ZXMgPVxuICAgICAgICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgICAgICAgKGZ1biBpZCBzaSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcubm9kZV90eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAobGV0IHBvcnRfc3RhdGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnLm5vZGVfdHlwZSBpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoZG5faWQsIHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRuX2lkJyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5kZXhlcyBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSZW5hbWluZy5VbmRlZmluZWQgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5wb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLihkbl9pZCkubm9kZV90eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguTElOS1MgWyAoMCwgZG5faWQnKSwgcyBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Db3VudGVyIChjb3VudGVyX3ZhbHVlIGNjIChkbl9pZCwgcykgMCkpKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgYWcubm9kZV9zaXRlcztcbiAgICAgICAgICB9KVxuICAgICAgY2Nfd2l0aG91dF9jb3VudGVycztcbiAgfF1cblxubGV0IGZvbGQgZiB4IHMgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBfIGwgYWNjIC0+IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAobmIsIF8sIGNjKSAtPiBmIGEgbmIgY2MpIGFjYyBsKVxuICAgIHMgeFxuXG5sZXQgZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBzID1cbiAgZm9sZCAoZnVuIGEgeCB5IC0+ICh4LCBjY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXcgc2lncyB5KSA6OiBhKSBbXSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnQgKiBpbnRcbigqKiBhZ2VudF9pZCAqIGFnZW50X3R5cGUgKilcblxudHlwZSBhZyA9IHRcblxubGV0IG1ha2UgfmlkIH5zb3J0ID0gaWQsIHNvcnRcblxubGV0IHByaW50ID9zaWdzIH53aXRoX2lkIGYgKGksIHR5KSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSB0eSAoZnVuIGYgLT5cbiAgICAgICAgaWYgd2l0aF9pZCB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIvKiVpKi9cIiBpKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laVwiIGlcblxubGV0IHByaW50X3NpdGUgP3NpZ3MgKGksIGFnZW50KSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdlbnQgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaVwiIGkgaWRcblxubGV0IHByaW50X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYWdlbnQgc2l0ZSBmIChTb21lIGlkKVxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcHJpbnRfcmF3X2ludGVybmFsID9zaWdzIChpLCBhZ2VudCkgc2l0ZSBmIGlkID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiBpZFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIm4laXMlaX4laVwiIGkgc2l0ZSBpZFxuXG5sZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiAobl9pZCwgbl90eSkgPVxuICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogbl9pZCwgbl90eVxuXG5sZXQgc29ydCAoXywgdHkpID0gdHlcbmxldCBpZCAoaWQsIF8pID0gaWRcbmxldCBjb21wYXJlIChpZDEsIF8pIChpZDIsIF8pID0gTW9kcy5pbnRfY29tcGFyZSBpZDEgaWQyXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9IFwiXFxcImFnZW50XFxcIjp7XFxcImlkXFxcIjowLFxcXCJ0eXBlXFxcIjoxfVwiXG5cbmxldCB3cml0ZV9qc29uIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfaW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiXG5cbmxldCB0b19qc29uIChpZCwgdHkpID0gYExpc3QgWyBgSW50IGlkOyBgSW50IHR5IF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdIC0+IGlkLCB0eVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcblxubW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWdcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gcHJpbnQgP3NpZ3M6Tm9uZSB+d2l0aF9pZDp0cnVlXG5lbmQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWRnZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBZ2VudC50ICogaW50XG4gICgqKiBhZ2VudCAqIHNpdGUgKilcblxuICBsZXQgX2NvbXBhcmUgKChuLCBfKSwgcykgKChuJywgXyksIHMnKSA9XG4gICAgbGV0IGMgPSBNb2RzLmludF9jb21wYXJlIG4gbicgaW5cbiAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgY1xuICAgIGVsc2VcbiAgICAgIE1vZHMuaW50X2NvbXBhcmUgcyBzJ1xuXG4gICgqIGxldCBkdW1teV9saW5rID0gKCgtMSwtMSksLTEpICopXG5lbmRcblxuKCogZnVuY3Rpb25zIHVzaW5nIHRoZSBjYWNoZSBhcmUgcmVzcG9uc2libGUgb2YgcmVzZXRpbmcgdGhlIGNhY2hlIGF0IGV4aXQgKilcbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgdGVzdHM6IGludCBNb2RzLkR5bkFycmF5LnQ7XG4gICAgYmFnOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIG11dGFibGUgbGltaXQ6IGludDtcbiAgfVxuXG4gIGxldCBpbnRfbCA9IDMxICgqU3lzLmludF9zaXplKilcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IHRlc3RzID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgYmFnID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgMDsgbGltaXQgPSAwIH1cblxuICBsZXQgbWFyayB0IGkgPVxuICAgIGxldCB4ID0gaSAvIGludF9sIGluXG4gICAgbGV0IG9sZCA9IE1vZHMuRHluQXJyYXkuZ2V0IHQudGVzdHMgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBvbGQgPSAwIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0LmJhZyB0LmxpbWl0IHggaW5cbiAgICAgICAgdC5saW1pdCA8LSBzdWNjIHQubGltaXRcbiAgICAgIClcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgeCAob2xkIGxvciAoMSBsc2wgKGkgbW9kIGludF9sKSkpXG5cbiAgbGV0IHRlc3QgdCBpID1cbiAgICBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIChpIC8gaW50X2wpIGxhbmQgKDEgbHNsIChpIG1vZCBpbnRfbCkpIDw+IDBcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIChNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBpKSAwKVxuICAgICAgICB0LmxpbWl0XG4gICAgaW5cbiAgICB0LmxpbWl0IDwtIDBcblxuICBsZXQgaXRlcmlfcmVzZXQgZiB0ID1cbiAgICBsZXQgKCkgPVxuICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgbGV0IGkgPSBNb2RzLkR5bkFycmF5LmdldCB0LmJhZyBrIGluXG4gICAgICAgICAgbGV0IHYgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIGkgaW5cbiAgICAgICAgICBpZiB2IDw+IDAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaW50X2wgKiBpIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBUb29scy5pdGVyaVxuICAgICAgICAgICAgICAgIChmdW4gaiAtPiBpZiB2IGxhbmQgKDEgbHNsIGopIDw+IDAgdGhlbiBmIChhY2MgKyBqKSlcbiAgICAgICAgICAgICAgICBpbnRfbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQudGVzdHMgaSAwXG4gICAgICAgICAgKSlcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5lbmRcblxubGV0IGdsdWVfY29ubmVjdGVkX2NvbXBvbmVudCBsaW5rcyBjYWNoZSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgY2NfaWRfb3AgPSBNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTIgaW5cbiAgbGV0IHJlYyBleHBsb3JlX3NpdGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBuZXh0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWYgTW9kcy5EeW5BcnJheS5nZXQgY2NzIGlkJyA9IGNjX2lkX29wIHx8IENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGV4cGxvcmVfc2l0ZSBpZCAocHJlZCBzaXRlKSAoaWQnIDo6IG5leHQpXG4gICAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCByZWMgaXNfaW5fY2MgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgaXNfaW5fY2NcbiAgICAgICAgKGV4cGxvcmVfc2l0ZSBpZCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIG5leHQpXG4gICAgICAgIHRvZG9zXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgY2NfaWRfb3ApIGNhY2hlXG4gICAgICB8IF8gLT4gaXNfaW5fY2MgW10gbmV4dClcbiAgaW5cbiAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBub2RlMSBpblxuICBpc19pbl9jYyBbXSBbIG5vZGUxIF1cblxubGV0IHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgKGNhY2hlMSwgY2FjaGUyKSBjY3Mgbm9kZTEgbm9kZTIgPVxuICBsZXQgb2xkX2NjX2lkID0gT3B0aW9uX3V0aWwudW5zb21lICgtMSkgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBub2RlMSkgaW5cbiAgbGV0IHJlYyBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCBzaXRlIG5leHQgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgfCBTb21lICgoaWQnLCBfKSwgXykgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBtYXRjaCBkc3RfY2FjaGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgIHwgU29tZSBkYyAtPiBDYWNoZS50ZXN0IGRjIGlkJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgP2RzdF9jYWNoZSBpZCAocHJlZCBzaXRlKSBuZXh0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgaWQnIGluXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgY2FjaGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIG5leHQnIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgbmV4dCcgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0IChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSBvcmlnKSkgY2FjaGVcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAob2xkX2NjX2lkLCBvcmlnKVxuICAgICAgfCBfIC0+IG1hcmtfbmV3X2NjIG9yaWcgY2FjaGUgW10gbmV4dClcbiAgaW5cbiAgbGV0IHJlYyBpbl9zYW1lX2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgb3RoZXJfbmV4dCB0aGlzX29yaWcgdGhpc19jYWNoZVxuICAgICAgdGhpc19uZXh0ID0gZnVuY3Rpb25cbiAgICB8IGlkIDo6IHRvZG9zIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGluc3BlY3Rfc2l0ZSB0aGlzX2NhY2hlIH5kc3RfY2FjaGU6b3RoZXJfY2FjaGUgaWRcbiAgICAgICAgICAgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKVxuICAgICAgICAgICB0aGlzX25leHRcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCBvdGhlcl9jYWNoZSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFNvbWUgbmV4dCcgLT5cbiAgICAgICAgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGUgbmV4dCdcbiAgICAgICAgICB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggdGhpc19uZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgQ2FjaGUudGVzdCB0aGlzX2NhY2hlIG9sZF9jY19pZCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCB0aGlzX2NhY2hlIGluXG4gICAgICAgICAgbWFya19uZXdfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXSBvdGhlcl9uZXh0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXRcbiAgICAgICAgICAgICAgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIChTb21lIHRoaXNfb3JpZykpXG4gICAgICAgICAgICAgIHRoaXNfY2FjaGVcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWUgKG9sZF9jY19pZCwgdGhpc19vcmlnKVxuICAgICAgICApXG4gICAgICB8IF8gLT5cbiAgICAgICAgaW5fc2FtZV9jYyB0aGlzX29yaWcgdGhpc19jYWNoZSB0aGlzX25leHQgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBbXVxuICAgICAgICAgIG90aGVyX25leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUxIG5vZGUxIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUyIG5vZGUyIGluXG4gIGluX3NhbWVfY2Mgbm9kZTEgY2FjaGUxIFsgbm9kZTEgXSBub2RlMiBjYWNoZTIgW10gWyBub2RlMiBdXG5cbnR5cGUgdGFibGVzID0ge1xuICBjb25uZWN0OiBFZGdlLnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc3RhdGU6IGludCBvcHRpb24gYXJyYXkgTW9kcy5EeW5BcnJheS50O1xuICBzb3J0OiBpbnQgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgY29ubmVjdGVkX2NvbXBvbmVudDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQgb3B0aW9uO1xuICBjYWNoZXM6IENhY2hlLnQgKiBDYWNoZS50O1xufVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGFibGVzOiB0YWJsZXMgb3B0aW9uO1xuICBtaXNzaW5nczogTW9kcy5JbnQyU2V0LnQ7XG4gIGZyZWVfaWQ6IGludCAqIGludCBsaXN0O1xufVxuKCoqIChhZ2VudCxzaXRlIC0+IGJpbmRpbmdfc3RhdGU7IG1pc3NpbmdzKTtcbiAgICBhZ2VudCxzaXRlIC0+IGludGVybmFsX3N0YXRlOyBhZ2VudCAtPiBzb3J0OyBmcmVlX2lkXG4gICAgdGhlIGZyZWUgc2l0ZXMgYXJlIG5laXRoZXIgaW4gbWlzc2luZ3Mgbm9yIGluIGxpbmtpbmdfZGVzdGluYXRpb24gKilcblxubGV0IGVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID1cbiAge1xuICAgIHRhYmxlcyA9XG4gICAgICBTb21lXG4gICAgICAgIHtcbiAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYWtlIDEgW3x8XTtcbiAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIE5vbmU7XG4gICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAoaWYgd2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyB0aGVuXG4gICAgICAgICAgICAgICBTb21lIChNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lKVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIE5vbmUpO1xuICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICB9O1xuICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmVtcHR5O1xuICAgIGZyZWVfaWQgPSAwLCBbXTtcbiAgfVxuXG5sZXQgY29weSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIHtcbiAgICAgIHRhYmxlcyA9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uZWN0ID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuY29ubmVjdDtcbiAgICAgICAgICAgIHN0YXRlID0gTW9kcy5EeW5BcnJheS5tYXAgQXJyYXkuY29weSB0YWJsZXMuc3RhdGU7XG4gICAgICAgICAgICBzb3J0ID0gTW9kcy5EeW5BcnJheS5jb3B5IHRhYmxlcy5zb3J0O1xuICAgICAgICAgICAgY29ubmVjdGVkX2NvbXBvbmVudCA9XG4gICAgICAgICAgICAgIChtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoTW9kcy5EeW5BcnJheS5jb3B5IGNjcykpO1xuICAgICAgICAgICAgY2FjaGVzID0gQ2FjaGUuY3JlYXRlICgpLCBDYWNoZS5jcmVhdGUgKCk7XG4gICAgICAgICAgfTtcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICB9XG5cbnR5cGUgc3RhdHMgPSB7IG5iX2FnZW50czogaW50IH1cblxubGV0IHN0YXRzIGdyYXBoID1cbiAgbGV0IHRvcF9pZCwgZnJlZV9pZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gIHsgbmJfYWdlbnRzID0gdG9wX2lkIC0gTGlzdC5sZW5ndGggZnJlZV9pZHMgfVxuXG5sZXQgYWRkX2FnZW50ID9pZCBzaWdzIHR5IGdyYXBoID1cbiAgbGV0IGFyID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgdHkgaW5cbiAgbGV0IGFsID0gQXJyYXkubWFrZSBhciBOb25lIGluXG4gIGxldCBhaSA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCBoLCBmcmVlX2lkID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPlxuICAgICAgICAoIGlkLFxuICAgICAgICAgIGxldCBuZXdfaWQsIGwgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICAgaWYgaWQgPCBuZXdfaWQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBMaXN0LnBhcnRpdGlvbiAoZnVuIGkgLT4gaSA9IGlkKSBsIHdpdGhcbiAgICAgICAgICAgIHwgWyBfIF0sIHQgLT4gbmV3X2lkLCB0XG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgIChcIlRyeSB0byBhZGQgYW4gYWdlbnQgd2l0aCBhIHRoZSBmcmVlIGlkIFwiXG4gICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgaWQpKSlcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICggc3VjYyBpZCxcbiAgICAgICAgICAgICAgVG9vbHMucmVjdGkgKGZ1biBhY2MgayAtPiAoayArIG5ld19pZCkgOjogYWNjKSBsIChpZCAtIG5ld19pZCkgKSApXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGdyYXBoLmZyZWVfaWQgd2l0aFxuICAgICAgICB8IG5ld19pZCwgaCA6OiB0IC0+IGgsIChuZXdfaWQsIHQpXG4gICAgICAgIHwgbmV3X2lkLCBbXSAtPiBuZXdfaWQsIChzdWNjIG5ld19pZCwgW10pKVxuICAgIGluXG4gICAgbGV0IG1pc3NpbmdzJyA9XG4gICAgICBUb29scy5yZWN0aSAoZnVuIGEgcyAtPiBNb2RzLkludDJTZXQuYWRkIChoLCBzKSBhKSBncmFwaC5taXNzaW5ncyBhclxuICAgIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLmNvbm5lY3QgaCBhbCBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zdGF0ZSBoIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnNvcnQgaCAoU29tZSB0eSkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBoIChTb21lIGgpXG4gICAgaW5cbiAgICBoLCB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IG1pc3NpbmdzJzsgZnJlZV9pZCB9XG5cbmxldCBhZGRfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5yZW1vdmUgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGFkZF9pbnRlcm5hbCBhZyBzIGkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBTb21lIGkgaW5cbiAgICB7IHRhYmxlcyA9IFNvbWUgdGFibGVzOyBtaXNzaW5ncyA9IGdyYXBoLm1pc3NpbmdzOyBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZCB9XG5cbmxldCBhZGRfbGluayAoYWcsIHR5KSBzIChhZycsIHR5JykgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBTb21lICgoYWcnLCB0eScpLCBzJylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIFNvbWUgKChhZywgdHkpLCBzKVxuICAgIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBsZXQgaSA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpIGluXG4gICAgICAgIGxldCBqID0gT3B0aW9uX3V0aWwudW5zb21lICgtMikgKE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZycpIGluXG4gICAgICAgIGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBjY3MgYWdcbiAgICAgICAgICAgICAgYWcnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChqLCBpKVxuICAgICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcylcbiAgICAgICAgICAgIChNb2RzLkludDJTZXQucmVtb3ZlIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCByZW1vdmVfYWdlbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgYWcgW3x8XSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGFnIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBhZyBOb25lXG4gICAgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmZpbHRlciAoZnVuIChhZycsIF8pIC0+IGFnIDw+IGFnJykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID1cbiAgICAgICAgKGxldCBuZXdfaWQsIGlkcyA9IGdyYXBoLmZyZWVfaWQgaW5cbiAgICAgICAgIG5ld19pZCwgYWcgOjogaWRzKTtcbiAgICB9XG5cbmxldCByZW1vdmVfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpID0gTm9uZSkgaW5cbiAgICB7XG4gICAgICB0YWJsZXMgPSBTb21lIHRhYmxlcztcbiAgICAgIG1pc3NpbmdzID0gTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgfVxuXG5sZXQgZ2V0X2ludGVybmFsIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJTaXRlIFwiIF4gc3RyaW5nX29mX2ludCBzIF4gXCIgb2YgYWdlbnQgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gICAgICAgXiBcIiBoYXMgbm8gaW50ZXJuYWwgc3RhdGUgaW4gdGhlIGN1cnJlbnQgZ3JhcGguXCIpKVxuXG5sZXQgZ2V0X3NpdGVzIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IGFyciA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIEFycmF5Lmxlbmd0aCBhcnJcblxubGV0IGdldF9zb3J0IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHkgLT4gdHlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIkFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIGhhcyBubyB0eXBlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IHJlbW92ZV9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSA8LSBOb25lIGluXG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgKCBpLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgICAgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5ncztcbiAgICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgICAgfSApKVxuXG5sZXQgcmVtb3ZlX2xpbmsgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBncmFwaC50YWJsZXMgPC0gTm9uZSBpblxuICAgIGxldCAoKSA9IChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZykuKHMpIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcnKS4ocycpIDwtIE5vbmUgaW5cbiAgICBsZXQgb3V0ID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgY2NzIC0+XG4gICAgICAgIHNlcGFyYXRlX2Nvbm5lY3RlZF9jb21wb25lbnQgdGFibGVzLmNvbm5lY3QgdGFibGVzLmNhY2hlcyBjY3MgYWcgYWcnXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICAgIG1pc3NpbmdzID1cbiAgICAgICAgICBNb2RzLkludDJTZXQuYWRkIChhZywgcykgKE1vZHMuSW50MlNldC5hZGQgKGFnJywgcycpIGdyYXBoLm1pc3NpbmdzKTtcbiAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICB9LFxuICAgICAgb3V0IClcblxubGV0IGlzX2FnZW50IChhZywgdHkpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgKG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICB8IFNvbWUgdHknIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKHR5ID0gdHknKSBpblxuICAgICAgdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGlzX2FnZW50X2lkIGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgYWcgPD4gTm9uZVxuXG5sZXQgaXNfZnJlZSBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XSAmJiB0LihzKSA9IE5vbmVcblxubGV0IGlzX2ludGVybmFsIGkgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSBqIC0+IGogPSBpXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgbGlua19leGlzdHMgYWcgcyBhZycgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgdCA8PiBbfHxdXG4gICAgJiZcbiAgICAobWF0Y2ggdC4ocykgd2l0aFxuICAgIHwgU29tZSAoKGFnJycsIF8pLCBzJycpIC0+IGFnJyA9IGFnJycgJiYgcycgPSBzJydcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBleGlzdHNfZnJlc2ggYWcgcyB0eSBzJyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICBpZiB0ID0gW3x8XSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB0LihzKSB3aXRoXG4gICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnJykgLT5cbiAgICAgICAgaWYgdHknID0gdHkgJiYgcycgPSBzJycgdGhlblxuICAgICAgICAgIFNvbWUgYWcnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIClcblxubGV0IGxpbmtfZGVzdGluYXRpb24gYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPiAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKVxuXG5sZXQgaXRlcl9uZWlnaGJvcnMgZiBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhZ190YWJsZSA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgQXJyYXkuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgcyAtPiBmIChmc3QgcykpXG4gICAgICBhZ190YWJsZVxuXG5sZXQgYWxsX2FnZW50c193aGVyZSBmIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IG91dCA9IEludENvbGxlY3Rpb24uY3JlYXRlIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGlkIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHR5IHdoZW4gZiAoaWQsIHR5KSAtPiBJbnRDb2xsZWN0aW9uLmFkZCBpZCBvdXRcbiAgICAgICAgICB8IF8gLT4gKCkpXG4gICAgICAgIHRhYmxlcy5zb3J0XG4gICAgaW5cbiAgICBvdXRcblxubGV0IGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCBhZyBhZycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcgPSBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKVxuXG5sZXQgZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgIFwiZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgd2hpbGUgbm90IHRyYWNraW5nIGNjc1wiKSlcbiAgICB8IFNvbWUgY2NzIC0+IE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBhZylcblxuKCoqIFRoZSBzbmFwc2hvdCBtYWNoaW5lcnkgKilcbmxldCBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCBzaWdzIHR5IG5vZGUgZ3JhcGggPVxuICBsZXQgcmVjIGJ1aWxkIGlkIGFjYyBrbm93biA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgVG9vbHMuYXJyYXlfcmV2X21hcF9vZl9saXN0XG4gICAgICAgIChmdW4gKG5vZGVfaWRfaW5fd2l0bmVzcywgbm9kZV90eXBlLCBzaXRlcykgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX2lkX2luX3dpdG5lc3M7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3R5cGU7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3NpdGVzID1cbiAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChsaW5rLCBzaXRlX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKG4sIF8pLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgKC0xKSBuIGtub3duLCBzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGluaztcbiAgICAgICAgICAgICAgICAgICAgU25hcHNob3Quc2l0ZV9zdGF0ZTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgc2l0ZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgYWNjXG4gICAgfCAobm9kZSwgdHkpIDo6IHRvZG9zIC0+XG4gICAgICBpZiBDYWNoZS50ZXN0IChmc3QgZ3JhcGguY2FjaGVzKSBub2RlIHRoZW5cbiAgICAgICAgYnVpbGQgaWQgYWNjIGtub3duIHRvZG9zXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc29ydCBub2RlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRWRnZXMub25lX2Nvbm5lY3RlZF9jb21wb25lbnRcIlxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgaW5cbiAgICAgICAgICBsZXQga25vd24nID0gTW9kcy5JbnRNYXAuYWRkIG5vZGUgaWQga25vd24gaW5cbiAgICAgICAgICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eSBpblxuICAgICAgICAgIGxldCB0b2RvcycsIHBvcnRzID1cbiAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgIChmdW4gKHRvZG9zLCBhY2MpIGkgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGluayA9IChNb2RzLkR5bkFycmF5LmdldCBncmFwaC5jb25uZWN0IG5vZGUpLihpKSBpblxuICAgICAgICAgICAgICAgICggKG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRvZG9zXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKCgobicsIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBNb2RzLkludE1hcC5tZW0gbicga25vd24nIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0b2Rvc1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgcCA6OiB0b2RvcyksXG4gICAgICAgICAgICAgICAgICAobGluaywgKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLnN0YXRlIG5vZGUpLihpKSkgOjogYWNjICkpXG4gICAgICAgICAgICAgICh0b2RvcywgW10pIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZCAoc3VjYyBpZCkgKChub2RlLCB0eSwgcG9ydHMpIDo6IGFjYykga25vd24nIHRvZG9zJ1xuICAgICAgKVxuICBpblxuICBidWlsZCAwIFtdIE1vZHMuSW50TWFwLmVtcHR5IFsgbm9kZSwgdHkgXVxuXG5sZXQgc3BlY2llcyB+ZGVidWdfbW9kZSBzaWdzIHJvb3QgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgc3BlY2llID1cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IHJvb3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAoXCJTb3J0IG9mIG5vZGUgdW5hdmFpbGFibGUgXCIgXiBzdHJpbmdfb2ZfaW50IHJvb3QpKSlcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICBTbmFwc2hvdC5jY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXc6dHJ1ZSBzaWdzXG4gICAgICAgICAgKG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgcm9vdCB0YWJsZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgc3BlY2llXG5cbmxldCByZWMgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3Mgbm9kZSA9XG4gIGlmIG5vZGUgPSBNb2RzLkR5bkFycmF5Lmxlbmd0aCB0YWJsZXMuc29ydCB0aGVuIChcbiAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgY2NzXG4gICkgZWxzZSBpZiBDYWNoZS50ZXN0IChmc3QgdGFibGVzLmNhY2hlcykgbm9kZSB0aGVuXG4gICAgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgY2NzIChzdWNjIG5vZGUpXG4gICAgfCBTb21lIHR5IC0+XG4gICAgICBsZXQgb3V0ID0gb25lX2Nvbm5lY3RlZF9jb21wb25lbnQgc2lncyB0eSBub2RlIHRhYmxlcyBpblxuICAgICAgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlc1xuICAgICAgICAoU25hcHNob3QuaW5jcmVtZW50X2luX3NuYXBzaG90IH5yYXcgc2lncyBvdXQgY2NzKVxuICAgICAgICAoc3VjYyBub2RlKVxuICApXG5cbmxldCBidWlsZF9zbmFwc2hvdCB+cmF3IHNpZ3MgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBTbmFwc2hvdC5lbXB0eSAwXG5cbmxldCBidWlsZF91c2VyX3NuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyBncmFwaCA9XG4gIFNuYXBzaG90LmV4cG9ydCB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgKGJ1aWxkX3NuYXBzaG90IH5yYXcgc2lncyBncmFwaClcblxubGV0IGRlYnVnX3ByaW50IGYgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIk9VVERBVEVEQCBcIlxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0IHByaW50X3NpdGVzIGFnID1cbiAgICAgIFBwLmFycmF5IFBwLmNvbW1hIChmdW4gcyBmIGwgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWkldCV0XCIgc1xuICAgICAgICAgICAgKG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaW50IC0+IGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ+JWlcIiBpbnRcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgaWYgTW9kcy5JbnQyU2V0Lm1lbSAoYWcsIHMpIGdyYXBoLm1pc3NpbmdzIHRoZW5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIj9cIlxuICAgICAgICAgICAgICB8IFNvbWUgKChhZycsIHR5JyksIHMnKSAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItPiVpOiVpLiVpXCIgYWcnIHR5JyBzJykpXG4gICAgaW5cbiAgICBNb2RzLkR5bkFycmF5LnByaW50IFBwLmVtcHR5XG4gICAgICAoZnVuIGFnIGYgYSAtPlxuICAgICAgICBtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgICAgIHwgU29tZSB0eSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWk6JWkoQFslYUBdKUAgXCIgYWcgdHkgKHByaW50X3NpdGVzIGFnKSBhXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGEgPSBbfHxdIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVpOk5PVFlQRShAWyVhQF0pQCBcIiBhZyAocHJpbnRfc2l0ZXMgYWcpIGEpXG4gICAgICBmIHRhYmxlcy5jb25uZWN0XG5cbnR5cGUgcGF0aCA9ICgoQWdlbnQudCAqIGludCkgKiAoQWdlbnQudCAqIGludCkpIGxpc3RcbigqKiAoKGFnZW50X2lkLCBhZ2VudF9uYW1lKSxzaXRlX25hbWUpICopXG5cbmxldCByZWMgcHJpbnRfcGF0aCA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBQcC5lbXB0eV9zZXQgZlxuICB8IFsgKChhZywgcyksIChhZycsIHMnKSkgXSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYUAsLSVhLiVhXCJcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWdcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgc1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcnKVxuICAgICAgcydcbiAgICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgICAgYWcnXG4gIHwgKChhZywgcyksICgoKHAnLCBfKSBhcyBhZycpLCBzJykpIDo6ICgoKChwJycsIF8pLCBfKSwgXykgOjogXyBhcyBsKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYUAsLSVhLiV0JWFcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICBzXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZycpXG4gICAgICBzJ1xuICAgICAgKGZ1biBmIC0+XG4gICAgICAgIGlmIHAnIDw+IHAnJyB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhIyNcIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgYWcnKVxuICAgICAgKHByaW50X3BhdGggP3NpZ3MpIGxcblxubGV0IGVtcHR5X3BhdGggPSBbXVxubGV0IHNpbmdsZXRvbl9wYXRoIG4gcyBuJyBzJyA9IFsgKG4sIHMpLCAobicsIHMnKSBdXG5sZXQgcmV2X3BhdGggbCA9IExpc3QucmV2X21hcCAoZnVuICh4LCB5KSAtPiB5LCB4KSBsXG5cbmxldCBpc192YWxpZF9wYXRoIHAgZ3JhcGggPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuICgoKGFnLCBfKSwgcyksICgoYWcnLCBfKSwgcycpKSAtPiBsaW5rX2V4aXN0cyBhZyBzIGFnJyBzJyBncmFwaClcbiAgICBwXG5cbmxldCBicmVhZHRoX2ZpcnN0X3RyYXZlcnNhbCB+bG9vcGluZyA/bWF4X2Rpc3RhbmNlIHN0b3Bfb25fZmluZCBpc19pbnRlcmVzdGluZ1xuICAgIGxpbmtzIGNhY2hlIG91dCB0b2RvcyA9XG4gIGxldCByZWMgbG9va19lYWNoX3NpdGUgKCgoKGlkLCBfKSBhcyBhZyksIHBhdGgpIGFzIHgpIHNpdGVcbiAgICAgICgob3V0LCBuZXh0KSBhcyBhY2MpID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBTb21lIChmYWxzZSwgb3V0LCBuZXh0KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSBhY2NcbiAgICAgIHwgU29tZSAoKCgoaWQnLCBfKSBhcyBhZycpLCBzaXRlJykgYXMgeSkgLT5cbiAgICAgICAgaWYgYWcnID0gZnN0IGxvb3BpbmcgJiYgc2l0ZScgPD4gc25kIGxvb3BpbmcgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAocHJlZCBzaXRlKSBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBsZXQgcGF0aCcgPSAoeSwgKGFnLCBwcmVkIHNpdGUpKSA6OiBwYXRoIGluXG4gICAgICAgICAgbGV0IG5leHQnID0gKGFnJywgcGF0aCcpIDo6IG5leHQgaW5cbiAgICAgICAgICBsZXQgb3V0Jywgc3RvcmUgPVxuICAgICAgICAgICAgbWF0Y2ggaXNfaW50ZXJlc3RpbmcgYWcnIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+ICgoeCwgaWQnKSwgcGF0aCcpIDo6IG91dCwgdHJ1ZVxuICAgICAgICAgICAgfCBOb25lIC0+IG91dCwgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHN0b3JlICYmIHN0b3Bfb25fZmluZCB0aGVuXG4gICAgICAgICAgICBTb21lICh0cnVlLCBvdXQnLCBuZXh0JylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIChvdXQnLCBuZXh0JylcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgKCogZGVwdGggPSBudW1iZXIgb2YgZWRnZXMgYmV0d2VlbiByb290IGFuZCBub2RlICopXG4gIGxldCByZWMgYXV4IGRlcHRoIG91dCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8ICgoKGlkLCBfKSwgXykgYXMgeCkgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgbG9va19lYWNoX3NpdGUgeCAoQXJyYXkubGVuZ3RoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkpIChvdXQsIG5leHQpXG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgKHN0b3AsIG91dCcsIG5leHQnKSAtPlxuICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICBvdXQnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhdXggZGVwdGggb3V0JyBuZXh0JyB0b2RvcylcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+IG91dFxuICAgICAgKCogZW5kIHdoZW4gYWxsIGdyYXBoIHRyYXZlcnNlZCBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIHBhdGhzICopXG4gICAgICB8IF8gLT5cbiAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgIHwgU29tZSBkIHdoZW4gZCA8PSBkZXB0aCAtPiBvdXRcbiAgICAgICAgKCogc3RvcCB3aGVuIHRoZSBtYXggZGlzdGFuY2UgaXMgcmVhY2hlZCAqKVxuICAgICAgICB8IFNvbWUgXyAtPiBhdXggKGRlcHRoICsgMSkgb3V0IFtdIG5leHRcbiAgICAgICAgfCBOb25lIC0+IGF1eCBkZXB0aCBvdXQgW10gbmV4dCkpXG4gIGluXG4gIGF1eCAxIG91dCBbXSB0b2Rvc1xuXG4oKiBub2Rlc194OiBhZ2VudF9pZCBsaXN0ID0gKGludCAqIGludCkgbGlzdFxuICAgbm9kZXNfeTogYWRlbnRfaWQgbGlzdCA9IGludCBsaXN0ICopXG5sZXQgYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGdyYXBoIG5vZGVzX3ggbm9kZXNfeSA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGlmXG4gICAgICBpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnRcbiAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlc194KSlcbiAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlc195KSlcbiAgICAgICAgZ3JhcGhcbiAgICB0aGVuIChcbiAgICAgICgqIGxvb2sgZm9yIHRoZSBjbG9zZXN0IG5vZGUgaW4gbm9kZXNfeSAqKVxuICAgICAgbGV0IGlzX2luX25vZGVzX3kgeiA9XG4gICAgICAgIGlmIExpc3QubWVtIHogbm9kZXNfeSB0aGVuXG4gICAgICAgICAgU29tZSAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgICgqIGJyZWFkdGggZmlyc3Qgc2VhcmNoIGlzIGNhbGxlZCBvbiBhIGxpc3Qgb2Ygc2l0ZXM7XG4gICAgICAgICBzdGFydCB0aGUgYnJlYWR0aCBmaXJzdCBzZWFyY2ggd2l0aCB0aGUgYm91bmRhcmllcyBvZiBub2Rlc194LFxuICAgICAgICAgdGhhdCBpcyBhbGwgc2l0ZXMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIG90aGVyIG5vZGVzIGluIHhcbiAgICAgICAgIGFuZCB3aXRoIGFsbCBub2RlcyBpbiBub2Rlc194IG1hcmtlZCBhcyBkb25lICopXG4gICAgICBsZXQgcHJlcGFyZSA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgKChpZCwgXykgYXMgYWcpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIChmc3QgdGFibGVzLmNhY2hlcykgaWQgaW5cbiAgICAgICAgICAgIChhZywgW10pIDo6IGFjYylcbiAgICAgICAgICBbXSBub2Rlc194XG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgYnJlYWR0aF9maXJzdF90cmF2ZXJzYWxcbiAgICAgICAgICB+bG9vcGluZzooKC0xLCAtMSksIC0xKVxuICAgICAgICAgID9tYXhfZGlzdGFuY2UgdHJ1ZSBpc19pbl9ub2Rlc195IHRhYmxlcy5jb25uZWN0IChmc3QgdGFibGVzLmNhY2hlcykgW11cbiAgICAgICAgICBwcmVwYXJlXG4gICAgICB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICAgICAgTm9uZVxuICAgICAgfCBbIChfLCBwKSBdIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICAgICAgU29tZSBwXG4gICAgICB8IF8gOjogXyAtPiBmYWlsd2l0aCBcIkVkZ2VzLmFyZV90aGV5X2Nvbm5lY3RlZCBjb21wbGV0ZWx5IGJyb2tlblwiXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGFic3RyYWN0ID0gRXhpc3Rpbmcgb2YgaW50IHwgRnJlc2ggb2YgQWdlbnQudFxudHlwZSAnYSBwb3J0ID0gJ2EgKiBpbnRcbnR5cGUgJ2EgYXJyb3cgPSBUb05vZGUgb2YgJ2EgcG9ydCB8IFRvTm90aGluZyB8IFRvSW50ZXJuYWwgb2YgaW50XG50eXBlICdhIHN0ZXAgPSAnYSBwb3J0ICogJ2EgYXJyb3dcbnR5cGUgJ2EgdCA9ICdhIHN0ZXAgbGlzdFxuXG5sZXQgcHJpbnRfaWQgc2lncyBmID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpZCAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaWRcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWEtJWlcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHR5IGlkXG5cbmxldCBwcmludF9pZF9zaXRlID9zb3VyY2Ugc2lncyBmaW5kX3R5IG4gPVxuICBsZXQgdHkgPVxuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgRnJlc2ggKF8sIHR5KSAtPiB0eVxuICAgIHwgRXhpc3RpbmcgaWQgLT5cbiAgICAgIChtYXRjaCBzb3VyY2Ugd2l0aFxuICAgICAgfCBTb21lIChGcmVzaCAoaWQnLCB0eSkpIHdoZW4gaWQgPSBpZCcgLT4gdHlcbiAgICAgIHwgTm9uZSB8IFNvbWUgKEZyZXNoIF8gfCBFeGlzdGluZyBfKSAtPiBmaW5kX3R5IGlkKVxuICBpblxuICBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5XG5cbmxldCBwcmludF9pZF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGZpbmRfdHkgbiA9XG4gIFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3NcbiAgICAobWF0Y2ggbiB3aXRoXG4gICAgfCBFeGlzdGluZyBpZCAtPiBmaW5kX3R5IGlkXG4gICAgfCBGcmVzaCAoXywgdHkpIC0+IHR5KVxuXG5sZXQgaWRfdXBfdG9fYWxwaGFfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpIC0+IGBJbnQgaVxuICB8IEZyZXNoIGYgLT4gQWdlbnQudG9fanNvbiBmXG5cbmxldCBpZF91cF90b19hbHBoYV9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBFeGlzdGluZyBpXG4gIHwgeCAtPiBGcmVzaCAoQWdlbnQub2ZfanNvbiB4KVxuXG5sZXQgcG9ydF90b195b2pzb24gKGEsIHMpID0gYExpc3QgWyBpZF91cF90b19hbHBoYV90b195b2pzb24gYTsgYEludCBzIF1cblxubGV0IHBvcnRfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGE7IGBJbnQgcyBdIC0+IGlkX3VwX3RvX2FscGhhX29mX3lvanNvbiBhLCBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvbiBwb3J0XCIsIHgpKVxuXG5sZXQgYXJyb3dfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBUb05vZGUgcCAtPiBwb3J0X3RvX3lvanNvbiBwXG4gIHwgVG9Ob3RoaW5nIC0+IGBOdWxsXG4gIHwgVG9JbnRlcm5hbCBpIC0+IGBJbnQgaVxuXG5sZXQgYXJyb3dfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBUb05vdGhpbmdcbiAgfCBgSW50IGkgLT4gVG9JbnRlcm5hbCBpXG4gIHwgeCAtPiBUb05vZGUgKHBvcnRfb2ZfeW9qc29uIHgpXG5cbmxldCBzdGVwX3RvX3lvanNvbiAocCwgYSkgPSBgTGlzdCBbIHBvcnRfdG9feW9qc29uIHA7IGFycm93X3RvX3lvanNvbiBhIF1cblxubGV0IHN0ZXBfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIHA7IGEgXSAtPiBwb3J0X29mX3lvanNvbiBwLCBhcnJvd19vZl95b2pzb24gYVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb24gc3RlcFwiLCB4KSlcblxubGV0IHRvX3lvanNvbiBsID0gYExpc3QgKExpc3QubWFwIHN0ZXBfdG9feW9qc29uIGwpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgc3RlcF9vZl95b2pzb24gbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IG5hdmlnYXRpb25cIiwgeCkpXG5cbmxldCBleHRlbmQgZiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgXyAtPiBmXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgaWYgeCA9IGlkIHRoZW5cbiAgICAgICAgdHlcbiAgICAgIGVsc2VcbiAgICAgICAgZiB4XG5cbmxldCByZWMgcHJpbnQgc2lncyBmaW5kX3R5IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb05vdGhpbmcpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhWy5dKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfc2l0ZSBzaWdzIGZpbmRfdHkgc291cmNlKVxuICAgICAgc2l0ZVxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCBmaW5kX3R5IHNvdXJjZSkpXG4gICAgICB0XG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb05vZGUgKGlkLCBwb3J0KSkgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWFbJWEuJWFdKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfc2l0ZSBzaWdzIGZpbmRfdHkgc291cmNlKVxuICAgICAgc2l0ZVxuICAgICAgKHByaW50X2lkX3NpdGUgfnNvdXJjZSBzaWdzIGZpbmRfdHkgaWQpXG4gICAgICBwb3J0IChwcmludF9pZCBzaWdzKSBpZFxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCAoZXh0ZW5kIGZpbmRfdHkgaWQpIHNvdXJjZSkpXG4gICAgICB0XG4gIHwgKChzb3VyY2UsIHNpdGUpLCBUb0ludGVybmFsIGkpIDo6IHQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiLSVhKCVhKS0+JWFcIiAocHJpbnRfaWQgc2lncykgc291cmNlXG4gICAgICAocHJpbnRfaWRfaW50ZXJuYWxfc3RhdGUgc2lncyBmaW5kX3R5IHNvdXJjZSBzaXRlKVxuICAgICAgKFNvbWUgaSlcbiAgICAgIChwcmludCBzaWdzIChleHRlbmQgZmluZF90eSBzb3VyY2UpKVxuICAgICAgdFxuXG5sZXQgY29tcGF0aWJsZV9mcmVzaF9wb2ludCB+ZGVidWdfbW9kZSBlIChzaWQsIHN0eSkgc3NpdGUgYXJyb3cgPVxuICBtYXRjaCBlLCBhcnJvdyB3aXRoXG4gIHwgXywgVG9Ob2RlIChFeGlzdGluZyBfLCBfKSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICBcIk5hdmlnYXRpb24uY29tcGF0aWJsZV9mcmVzaF9wb2ludCBkb2VzIG5vdCBkZWFsIHdpdGggZXhpc3RpbmcgXFxcbiAgICAgICAgICAgICBhcnJvd1wiKSlcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgeCksIFRvTm90aGluZyAtPlxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB4ID0gVG9Ob3RoaW5nIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCB4KSwgVG9JbnRlcm5hbCBpIC0+XG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHggPSBUb0ludGVybmFsIGkgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJykpLFxuICAgICAgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykgKSAtPlxuICAgICgqIGxpbmsgYmV0d2VlbiAyIGFnZW50cyAqKVxuICAgIGlmIHR5ID0gc3R5ICYmIHNpdGUgPSBzc2l0ZSAmJiB0eScgPSBzdHknICYmIHNpdGUnID0gc3NpdGUnIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qIHRoZW5cbiAgICAgICAgICBTb21lIGlualxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlIGlmIHR5ID0gc3R5JyAmJiBzaXRlID0gc3NpdGUnICYmIHR5JyA9IHN0eSAmJiBzaXRlJyA9IHNzaXRlIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQnIGluaiB0aGVuXG4gICAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQgaW5qIHRoZW5cbiAgICAgICAgICBTb21lIGlualxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKCAoIChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJylcbiAgICAgIHwgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQsIHNpdGUnKSApLFxuICAgICAgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykgKSAtPlxuICAgICgqIHNlbGYtbGluayBpbiBhZ2VudCAqKVxuICAgIGlmXG4gICAgICAoKHNzaXRlID0gc2l0ZSAmJiBzc2l0ZScgPSBzaXRlJykgfHwgKHNzaXRlJyA9IHNpdGUgJiYgc3NpdGUgPSBzaXRlJykpXG4gICAgICAmJiBpZCA9IGlkJyAmJiBzaWQgPSBzaWQnICYmIHR5ID0gc3R5ICYmIHN0eSA9IHN0eSdcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIF8sIF8pLCBfKSwgXyAtPiBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgKFRvTm90aGluZyB8IFRvSW50ZXJuYWwgXykpLCBUb05vZGUgXyAtPiBOb25lXG5cbmxldCBjb21wYXRpYmxlX3BvaW50IH5kZWJ1Z19tb2RlIGluaiBlIGUnID1cbiAgbWF0Y2ggZSwgZScgd2l0aFxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vdGhpbmcpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmpcbiAgICAgICYmIGUgPSAoKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSwgVG9Ob3RoaW5nKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb0ludGVybmFsIGkpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmpcbiAgICAgICYmIGUgPSAoKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSwgVG9JbnRlcm5hbCBpKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpKSwgZSAtPlxuICAgIGlmXG4gICAgICBSZW5hbWluZy5tZW0gaWQgaW5qICYmIFJlbmFtaW5nLm1lbSBpZCcgaW5qXG4gICAgICAmJiAoZVxuICAgICAgICAgID0gKCAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLFxuICAgICAgICAgICAgICBUb05vZGUgKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQnKSwgc2l0ZScpIClcbiAgICAgICAgIHx8IGVcbiAgICAgICAgICAgID0gKCAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCcpLCBzaXRlJyksXG4gICAgICAgICAgICAgICAgVG9Ob2RlIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSkgKSlcbiAgICB0aGVuXG4gICAgICBTb21lIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpKSxcbiAgICAgICgoRXhpc3Rpbmcgc2lkLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlJykpIClcbiAgfCAoICgoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpKSxcbiAgICAgICgoRXhpc3Rpbmcgc2lkLCBzc2l0ZSksIFRvTm9kZSAoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlJykpIClcbiAgfCAoICgoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBzaWQsIHNzaXRlJykpIClcbiAgfCAoICgoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCcsIHR5JyksIHNzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBzaWQsIHNzaXRlJykpICkgLT5cbiAgICBpZlxuICAgICAgdHknID0gdHlcbiAgICAgICYmIChub3QgKFJlbmFtaW5nLm1lbSBpZCcgaW5qKSlcbiAgICAgICYmICgoc3NpdGUgPSBzaXRlICYmIHNzaXRlJyA9IHNpdGUnKVxuICAgICAgICAgfHwgKGlkID0gaWQnICYmIHNzaXRlID0gc2l0ZScgJiYgc3NpdGUnID0gc2l0ZSkpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qIHdpdGhcbiAgICAgIHwgU29tZSBpbmonXG4gICAgICAgIHdoZW4gUmVuYW1pbmcubWVtIGlkIGluaicgJiYgc2lkID0gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCAtPlxuICAgICAgICBTb21lIGluaidcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBfLCBfKSwgVG9Ob2RlIChGcmVzaCBfLCBfKSksICgoKEZyZXNoIF8gfCBFeGlzdGluZyBfKSwgXyksIF8pIC0+XG4gICAgTm9uZVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vdGhpbmcpLCAoKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSwgeCkgLT5cbiAgICBpZiB0eSA9IHR5JyAmJiBzaXRlID0gc2l0ZScgJiYgeCA9IFRvTm90aGluZyAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopXG4gICAgdGhlblxuICAgICAgUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvSW50ZXJuYWwgaSksICgoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpLCB4KSAtPlxuICAgIGlmIHR5ID0gdHknICYmIHNpdGUgPSBzaXRlJyAmJiB4ID0gVG9JbnRlcm5hbCBpICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkIGluailcbiAgICB0aGVuXG4gICAgICBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSksXG4gICAgICAoKEZyZXNoIChzaWQsIHN0eSksIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgc3R5JyksIHNzaXRlJykpICkgLT5cbiAgICBpZiAobm90IChSZW5hbWluZy5tZW0gaWQgaW5qKSkgJiYgbm90IChSZW5hbWluZy5tZW0gaWQnIGluaikgdGhlblxuICAgICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHR5JyA9IHN0eScgJiYgc2l0ZScgPSBzc2l0ZScgdGhlbiAoXG4gICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQnIGluaicgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicnIC0+IFNvbWUgaW5qJycpXG4gICAgICApIGVsc2UgaWYgdHkgPSBzdHknICYmIHNpdGUgPSBzc2l0ZScgJiYgdHknID0gc3R5ICYmIHNpdGUnID0gc3NpdGUgdGhlbiAoXG4gICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBzaWQnIGluaiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmonIC0+XG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkIGluaicgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicnIC0+IFNvbWUgaW5qJycpXG4gICAgICApIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCBfKSwgKChGcmVzaCBfLCBfKSwgXykgLT4gTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIF8pLCAoKEV4aXN0aW5nIF8sIF8pLCBfKSAtPiBOb25lXG5cbmxldCByZWMgYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogZ29hbCBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCBoIDo6IHQgLT5cbiAgICAobWF0Y2ggY29tcGF0aWJsZV9wb2ludCB+ZGVidWdfbW9kZSBpbmogaCBnb2FsIHdpdGhcbiAgICB8IE5vbmUgLT4gYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogZ29hbCAoaCA6OiBhY2MpIHRcbiAgICB8IFNvbWUgaW5qJyAtPiBTb21lIChpbmonLCBMaXN0LnJldl9hcHBlbmQgYWNjIHQpKVxuXG5sZXQgcmVjIGlzX3N1Ym5hdmlnYXRpb24gfmRlYnVnX21vZGUgaW5qIG5hdiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gU29tZSAoaW5qLCBuYXYpXG4gIHwgaCA6OiB0IC0+XG4gICAgKG1hdGNoIGF1eF9zdWIgfmRlYnVnX21vZGUgaW5qIGggW10gbmF2IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoaW5qJywgbmF2JykgLT4gaXNfc3VibmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpbmonIG5hdicgdClcblxubGV0IHJlbmFtZV9pZCB+ZGVidWdfbW9kZSBpbmoyY2MgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIG4gLT4gaW5qMmNjLCBFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMmNjIG4pXG4gIHwgRnJlc2ggKGlkLCB0eSkgLT5cbiAgICBsZXQgaW1nID0gUmVuYW1pbmcuaW1hZ2UgaW5qMmNjIGluXG4gICAgbGV0IGlkJyA9XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQgaW1nIHRoZW4gKFxuICAgICAgICBtYXRjaCBNb2RzLkludFNldC5tYXhfZWx0IGltZyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAxXG4gICAgICAgIHwgU29tZSBpIC0+IHN1Y2MgaVxuICAgICAgKSBlbHNlXG4gICAgICAgIGlkXG4gICAgaW5cbiAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIGlkJyBpbmoyY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFNvbWUgaW5qJyAtPiBpbmonLCBGcmVzaCAoaWQnLCB0eSkpXG5cbmxldCByZWMgcmVuYW1lIH5kZWJ1Z19tb2RlIGluajJjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW5qMmNjLCBbXVxuICB8ICgoeCwgaSksICgoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSBhcyBhKSkgOjogdCAtPlxuICAgIGxldCBpbmosIHgnID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyB4IGluXG4gICAgbGV0IGluaicsIHQnID0gcmVuYW1lIH5kZWJ1Z19tb2RlIGluaiB0IGluXG4gICAgaW5qJywgKCh4JywgaSksIGEpIDo6IHQnXG4gIHwgKCh4LCBpKSwgVG9Ob2RlICh5LCBqKSkgOjogdCAtPlxuICAgIGxldCBpbmosIHgnID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyB4IGluXG4gICAgbGV0IGluaicsIHknID0gcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluaiB5IGluXG4gICAgbGV0IGluaicnLCB0JyA9IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmonIHQgaW5cbiAgICBpbmonJywgKCh4JywgaSksIFRvTm9kZSAoeScsIGopKSA6OiB0J1xuXG5sZXQgY2hlY2tfZWRnZSBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSBpZCBzaXRlIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb0ludGVybmFsIGkgLT4gRWRnZXMuaXNfaW50ZXJuYWwgaSBpZCBzaXRlIGdyYXBoXG4gIHwgKEZyZXNoIChpZCwgXyksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgXyksIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgaWQgc2l0ZSBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIF8pLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuXG4oKmluaiBpcyB0aGUgcGFydGlhbCBpbmplY3Rpb24gYnVpbHQgc28gZmFyOiBpbmo6YWJzLT5jb25jcmV0ZSopXG5sZXQgZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgPSBmdW5jdGlvblxuICB8IFRvTm90aGluZyAtPlxuICAgIGlmIEVkZ2VzLmlzX2ZyZWUgcm9vdCBzaXRlIGdyYXBoIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb0ludGVybmFsIGkgLT5cbiAgICBpZiBFZGdlcy5pc19pbnRlcm5hbCBpIHJvb3Qgc2l0ZSBncmFwaCB0aGVuXG4gICAgICBTb21lIGluaidcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIGlmXG4gICAgICBFZGdlcy5saW5rX2V4aXN0cyByb290IHNpdGVcbiAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQnKVxuICAgICAgICBzaXRlJyBncmFwaFxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpIC0+XG4gICAgKG1hdGNoIEVkZ2VzLmV4aXN0c19mcmVzaCByb290IHNpdGUgdHkgc2l0ZScgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG5vZGUgLT4gUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBub2RlIGluaicpXG5cbmxldCBpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBkc3QgLT5cbiAgICBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGhcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpXG4gICAgICBzaXRlIGRzdFxuICB8IChGcmVzaCAoaWQsIHJ0eSksIHNpdGUpLCBkc3QgLT5cbiAgICAobWF0Y2ggcm9vdCB3aXRoXG4gICAgfCBTb21lIChyb290LCBydHknKSB3aGVuIHJ0eSA9IHJ0eScgLT5cbiAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgcm9vdCBpbmogd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBpbmonIC0+IGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaicgZ3JhcGggcm9vdCBzaXRlIGRzdClcbiAgICB8IF8gLT4gTm9uZSlcblxubGV0IGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgPSBmdW5jdGlvblxuICB8IFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIHJvb3Qgc2l0ZSBncmFwaFxuICB8IFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIHJvb3Qgc2l0ZSBncmFwaFxuICB8IFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyByb290IHNpdGVcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkJylcbiAgICAgIHNpdGUnIGdyYXBoXG4gIHwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKSAtPlxuICAgIChtYXRjaCBFZGdlcy5leGlzdHNfZnJlc2ggcm9vdCBzaXRlIHR5IHNpdGUnIGdyYXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbm9kZSAtPiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgbm9kZSBpbmonKVxuXG5sZXQgaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgZHN0IC0+XG4gICAgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmogZ3JhcGhcbiAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpXG4gICAgICBzaXRlIGRzdFxuICB8IChGcmVzaCAoaWQsIHJ0eSksIHNpdGUpLCBkc3QgLT5cbiAgICAobWF0Y2ggcm9vdCB3aXRoXG4gICAgfCBTb21lIChyb290LCBydHknKSB3aGVuIHJ0eSA9IHJ0eScgLT5cbiAgICAgIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHJvb3QgaW5qXG4gICAgICAmJiBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaCByb290IHNpdGUgZHN0XG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgaWQsIHNpdGUgLT4gUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkLCBzaXRlXG4gIHwgRnJlc2ggKGlkLCBfKSwgc2l0ZSAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQsIHNpdGVcblxubGV0IGNvbmNyZXRpemVfYXJyb3cgfmRlYnVnX21vZGUgaW5qID0gZnVuY3Rpb25cbiAgfCAoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSBhcyB4IC0+IHhcbiAgfCBUb05vZGUgeCAtPiBUb05vZGUgKGNvbmNyZXRpemVfcG9ydCB+ZGVidWdfbW9kZSBpbmogeClcblxubGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgcm9vdCBncmFwaCBuYXYgPVxuICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgbGV0IG91dCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gb3V0ICgocCwgZHN0KSBhcyBzdGVwKSAtPlxuICAgICAgICBtYXRjaCBvdXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gb3V0XG4gICAgICAgIHwgU29tZSAocm9vdCwgYWNjKSAtPlxuICAgICAgICAgIGlmIGltcGVyYXRpdmVfZWRnZV9pc192YWxpZCB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggc3RlcCB0aGVuIChcbiAgICAgICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgICAgICggY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiBwLFxuICAgICAgICAgICAgICAgIGNvbmNyZXRpemVfYXJyb3cgfmRlYnVnX21vZGUgaW5qIGRzdCApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZSAoTm9uZSwgc3QgOjogYWNjKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIChTb21lIChTb21lIHJvb3QsIFtdKSlcbiAgICAgIG5hdlxuICBpblxuICBPcHRpb25fdXRpbC5tYXAgKGZ1biAoXywgbCkgLT4gTGlzdC5yZXYgbCkgb3V0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGludGVybmFsID0gaW50IG9wdGlvblxudHlwZSBsaW5rID0gRlJFRSB8IFZBTCBvZiBpbnRcbnR5cGUgYWdlbnQgPSB7IGFfdHlwZTogaW50OyBhX3BvcnRzOiBsaW5rIGFycmF5OyBhX2ludHM6IGludGVybmFsIGFycmF5IH1cbnR5cGUgdCA9IGFnZW50IGxpc3RcblxubGV0IGNvcHlfYWdlbnQgYWdlbnQgPVxuICB7XG4gICAgYV90eXBlID0gYWdlbnQuYV90eXBlO1xuICAgIGFfcG9ydHMgPSBBcnJheS5jb3B5IGFnZW50LmFfcG9ydHM7XG4gICAgYV9pbnRzID0gQXJyYXkuY29weSBhZ2VudC5hX2ludHM7XG4gIH1cblxudHlwZSBpbmNyX3QgPSB7XG4gIGZhdGhlcjogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgcmFuazogKGludCAqIChib29sICogYm9vbCkpIE1vZHMuRHluQXJyYXkudDtcbn1cblxubGV0IGNyZWF0ZSBuID1cbiAge1xuICAgIGZhdGhlciA9IE1vZHMuRHluQXJyYXkuaW5pdCBuIChmdW4gaSAtPiBpKTtcbiAgICByYW5rID0gTW9kcy5EeW5BcnJheS5tYWtlIG4gKDEsICh0cnVlLCBmYWxzZSkpO1xuICB9XG5cbmxldCByZWMgZmluZF9hdXggYSBpID1cbiAgbGV0IGFpID1cbiAgICBpZiBNb2RzLkR5bkFycmF5Lmxlbmd0aCBhIDw9IGkgdGhlblxuICAgICAgaVxuICAgIGVsc2VcbiAgICAgIE1vZHMuRHluQXJyYXkuZ2V0IGEgaVxuICBpblxuICBpZiBhaSA9PSBpIHRoZW5cbiAgICBpXG4gIGVsc2UgKFxuICAgIGxldCByb290ID0gZmluZF9hdXggYSBhaSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGEgaSByb290IGluXG4gICAgcm9vdFxuICApXG5cbmxldCBmaW5kIGggeCA9IGZpbmRfYXV4IGguZmF0aGVyIHhcbmxldCBjb21iaW5lX3JhbmtzIChpeCwgKGJ4LCBfKSkgKGl5LCAoYnksIF8pKSA9IGl4ICsgaXksIChieCAmJiBieSwgdHJ1ZSlcblxubGV0IHVuaW9uIGggeCB5ID1cbiAgbGV0IHJvb3RfeCA9IGZpbmQgaCB4IGluXG4gIGxldCByb290X3kgPSBmaW5kIGggeSBpblxuICBpZiByb290X3ggPT0gcm9vdF95IHRoZW5cbiAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgcmFua194ID0gTW9kcy5EeW5BcnJheS5nZXQgaC5yYW5rIHJvb3RfeCBpblxuICAgIGxldCByYW5rX3kgPSBNb2RzLkR5bkFycmF5LmdldCBoLnJhbmsgcm9vdF95IGluXG4gICAgaWYgZnN0IHJhbmtfeCA+IGZzdCByYW5rX3kgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF94IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3kgcm9vdF94XG4gICAgKSBlbHNlIGlmIGZzdCByYW5rX3ggPCBmc3QgcmFua195IHRoZW4gKFxuICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgaC5yYW5rIHJvb3RfeSAoY29tYmluZV9yYW5rcyByYW5rX3ggcmFua195KSBpblxuICAgICAgTW9kcy5EeW5BcnJheS5zZXQgaC5mYXRoZXIgcm9vdF94IHJvb3RfeVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF94IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3kgcm9vdF94XG4gICAgKVxuICApXG5cbmxldCB1bmlvbl9maW5kX2NvdW50ZXJzIHNpZ3MgbWl4ID1cbiAgbGV0IHQgPSBjcmVhdGUgMSBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBhZyAtPlxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5wb3J0c19pZl9jb3VudGVyX2FnZW50IHNpZ3MgYWcuYV90eXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgKGJlZm9yZSwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IGFnLmFfcG9ydHMuKGFmdGVyKSBpblxuICAgICAgICAgICAgbGV0IGIgPSBhZy5hX3BvcnRzLihiZWZvcmUpIGluXG4gICAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICB8IEZSRUUgLT4gKClcbiAgICAgICAgICAgIHwgVkFMIGxua19iIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgfCBGUkVFIC0+XG4gICAgICAgICAgICAgICAgKCogaW4gdGhpcyBjYXNlIHRoZSBlbmRwb2ludCBvZiB0aGUgY2hhaW4gb2YgaW5jcmVtZW50cyBpcyByYXc6XG4gICAgICAgICAgICAgICAgICAgdGhlIGFnZW50IGlzIGNyZWF0ZWQgd2l0aCBhIGNvdW50ZXIgdmFsdWUqKVxuICAgICAgICAgICAgICAgIGxldCByb290ID0gZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQucmFuayByb290IChzIC0gMSwgKHRydWUsIHRydWUpKVxuICAgICAgICAgICAgICB8IFZBTCBsbmtfYSAtPiB1bmlvbiB0IGxua19iIGxua19hKSkpXG4gICAgICAgIG1peFxuICBpblxuICB0XG5cbmxldCBwcmludF9saW5rIH5ub0NvdW50ZXJzIGNvdW50ZXJfYWdlbnRzIGYgPSBmdW5jdGlvblxuICB8IEZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWy5dXCJcbiAgfCBWQUwgaSAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgcm9vdCA9IGZpbmQgY291bnRlcl9hZ2VudHMgaSBpblxuICAgICAgIGxldCBjb3VudGVyLCAoXywgaXNfY291bnRlcikgPVxuICAgICAgICAgTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcl9hZ2VudHMucmFuayByb290XG4gICAgICAgaW5cbiAgICAgICBpZiBpc19jb3VudGVyICYmIG5vdCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7PSVkfVwiIGNvdW50ZXJcbiAgICAgICBlbHNlXG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGlcbiAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpKVxuXG5sZXQgYXV4X3BwX3NpIHNpZ3MgYSBzIGYgaSA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGEgcyBmIGlcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIGkgd2l0aFxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaXslaX1cIiBzIGlcbiAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHMpXG5cbmxldCBwcmludF9pbnRmIH5ub0NvdW50ZXJzIHdpdGhfbGluayA/c2lncyBjb3VudGVyX2FnZW50cyBhZ190eSBmIChwb3J0cywgaW50cylcbiAgICA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYSVhXCJcbiAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAoYXV4X3BwX3NpIHNpZ3MgYWdfdHkgaSkgaW50cy4oaSlcbiAgICAgICAgICAoaWYgd2l0aF9saW5rIHRoZW5cbiAgICAgICAgICAgICBwcmludF9saW5rIH5ub0NvdW50ZXJzIGNvdW50ZXJfYWdlbnRzXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBmdW4gXyBfIC0+XG4gICAgICAgICAgICgpKVxuICAgICAgICAgIHBvcnRzLihpKVxuICAgICAgaW5cbiAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgIClcbiAgaW5cbiAgYXV4IHRydWUgMFxuXG5sZXQgYXV4X3BwX2FnIHNpZ3MgZiBhID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzIGYgYVxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIGFcblxubGV0IHByaW50X2FnZW50IH5ub0NvdW50ZXJzIGNyZWF0ZWQgbGluayA/c2lncyBjb3VudGVyX2FnZW50cyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChhdXhfcHBfYWcgc2lncykgYWcuYV90eXBlXG4gICAgKHByaW50X2ludGYgfm5vQ291bnRlcnMgbGluayA/c2lncyBjb3VudGVyX2FnZW50cyBhZy5hX3R5cGUpXG4gICAgKGFnLmFfcG9ydHMsIGFnLmFfaW50cykgKGZ1biBmIC0+XG4gICAgICBpZiBjcmVhdGVkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiK1wiKVxuXG5sZXQgcHJpbnQgfm5vQ291bnRlcnMgfmNyZWF0ZWQgfmluaXRpYWxfY29tbWEgP3NpZ3MgZiBtaXggPVxuICBsZXQgY291bnRlcl9hZ2VudHMgPSB1bmlvbl9maW5kX2NvdW50ZXJzIHNpZ3MgbWl4IGluXG4gIGxldCByZWMgYXV4X3ByaW50IHNvbWUgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc2lncyAtPlxuICAgICAgICAgIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgaC5hX3R5cGUgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgIHRoZW5cbiAgICAgICAgYXV4X3ByaW50IHNvbWUgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGlmIHNvbWUgdGhlbiBQcC5jb21tYSBmIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCB0cnVlID9zaWdzIGNvdW50ZXJfYWdlbnRzIGYgaFxuICAgICAgICBpblxuICAgICAgICBhdXhfcHJpbnQgdHJ1ZSB0XG4gICAgICApXG4gIGluXG4gIGF1eF9wcmludCBpbml0aWFsX2NvbW1hIG1peFxuXG5sZXQgYWdlbnRfdG9fanNvbiBhID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJ0eXBlXCIsIGBJbnQgYS5hX3R5cGU7XG4gICAgICAoIFwic2l0ZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgIHwgRlJFRSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgfCBWQUwgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgYS5hX3BvcnRzIFtdKSApO1xuICAgICAgKCBcImludGVybmFsc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGBOdWxsXG4gICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBgSW50IGkpXG4gICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgYS5hX2ludHMgW10pICk7XG4gICAgXVxuXG5sZXQgYWdlbnRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwic2l0ZXNcIiwgYExpc3QgcykgXVxuICB8IGBBc3NvYyBbIChcImludGVybmFsc1wiLCBgTGlzdCBpKTsgKFwidHlwZVwiLCBgSW50IHQpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKSBdXG4gIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwidHlwZVwiLCBgSW50IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJzaXRlc1wiLCBgTGlzdCBzKTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJ0eXBlXCIsIGBJbnQgdCkgXVxuICB8IGBBc3NvYyBbIChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcImludGVybmFsc1wiLCBgTGlzdCBpKSBdIC0+XG4gICAge1xuICAgICAgYV90eXBlID0gdDtcbiAgICAgIGFfcG9ydHMgPVxuICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBGUkVFXG4gICAgICAgICAgICB8IGBJbnQgcCAtPiBWQUwgcFxuICAgICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc2l0ZSBsaW5rXCIsIHgpKSlcbiAgICAgICAgICBzO1xuICAgICAgYV9pbnRzID1cbiAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYE51bGwgLT4gTm9uZVxuICAgICAgICAgICAgfCBgSW50IHAgLT4gU29tZSBwXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBpbnRlcm5hbCBzdGF0ZVwiLCB4KSkpXG4gICAgICAgICAgaTtcbiAgICB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJhd19hZ2VudFwiLCB4KSlcblxubGV0IHRvX2pzb24gbSA9IGBMaXN0IChMaXN0Lm1hcCBhZ2VudF90b19qc29uIG0pXG5cbmxldCBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGFnZW50X29mX2pzb24gbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCByYXdfbWl4dHVyZVwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcGVydmFzaXZlc19ib29sID0gYm9vbFxuXG50eXBlICgnbWl4LCAnaWQpIGUgPVxuICB8IEJJTl9BTEdfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmJpbl9hbGdfb3BcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gIHwgVU5fQUxHX09QIG9mIE9wZXJhdG9yLnVuX2FsZ19vcCAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBTVEFURV9BTEdfT1Agb2YgT3BlcmF0b3Iuc3RhdGVfYWxnX29wXG4gIHwgQUxHX1ZBUiBvZiAnaWRcbiAgfCBLQVBQQV9JTlNUQU5DRSBvZiAnbWl4XG4gIHwgVE9LRU5fSUQgb2YgJ2lkXG4gIHwgQ09OU1Qgb2YgTmJyLnRcbiAgfCBJRiBvZlxuICAgICAgKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBESUZGX1RPS0VOIG9mICgoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkICogJ2lkKVxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0Ugb2YgKCgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWQgKiAnbWl4KVxuXG5hbmQgKCdtaXgsICdpZCkgYm9vbCA9XG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgQklOX0JPT0xfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wXG4gICAgICAqICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICB8IFVOX0JPT0xfT1Agb2YgT3BlcmF0b3IudW5fYm9vbF9vcCAqICgnbWl4LCAnaWQpIGJvb2wgTG9jLmFubm90ZWRcbiAgfCBDT01QQVJFX09QIG9mXG4gICAgICBPcGVyYXRvci5jb21wYXJlX29wXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuXG5sZXQgcmVjIGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBiO1xuICAgICAgXVxuICB8IFVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IudW5fYWxnX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICBdXG4gIHwgU1RBVEVfQUxHX09QIG9wIC0+IE9wZXJhdG9yLnN0YXRlX2FsZ19vcF90b19qc29uIG9wXG4gIHwgQUxHX1ZBUiBpIC0+IGBMaXN0IFsgYFN0cmluZyBcIlZBUlwiOyBmX2lkIGkgXVxuICB8IEtBUFBBX0lOU1RBTkNFIGNjIC0+IGBMaXN0IFsgYFN0cmluZyBcIk1JWFwiOyBmX21peCBjYyBdXG4gIHwgVE9LRU5fSUQgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJUT0tFTlwiOyBmX2lkIGkgXVxuICB8IENPTlNUIG4gLT4gTmJyLnRvX3lvanNvbiBuXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIklGXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBjb25kO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSB5ZXM7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIG5vO1xuICAgICAgXVxuICB8IERJRkZfVE9LRU4gKGV4cHIsIHRva2VuKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESUZGX1RPS0VOXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBleHByO1xuICAgICAgICBmX2lkIHRva2VuO1xuICAgICAgXVxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peHR1cmUpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJRkZfTUlYVFVSRVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgZXhwcjtcbiAgICAgICAgZl9taXggbWl4dHVyZTtcbiAgICAgIF1cblxuYW5kIGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgVFJVRSAtPiBgQm9vbCB0cnVlXG4gIHwgRkFMU0UgLT4gYEJvb2wgZmFsc2VcbiAgfCBVTl9CT09MX09QIChvcCwgYSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci51bl9ib29sX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhO1xuICAgICAgXVxuICB8IEJJTl9CT09MX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5iaW5fYm9vbF9vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYTtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGI7XG4gICAgICBdXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0b3IuY29tcGFyZV9vcF90b19qc29uIG9wO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBiO1xuICAgICAgXVxuXG5sZXQgcmVjIGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiRElGRl9NSVhUVVJFXCI7IGV4cHI7IG1peHR1cmUgXSAtPlxuICAgIERJRkZfS0FQUEFfSU5TVEFOQ0VcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgZXhwcixcbiAgICAgICAgZl9taXggbWl4dHVyZSApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiRElGRl9UT0tFTlwiOyBleHByOyB0b2sgXSAtPlxuICAgIERJRkZfVE9LRU5cbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgZXhwcixcbiAgICAgICAgZl9pZCB0b2sgKVxuICB8IGBMaXN0IFsgb3A7IGE7IGIgXSAtPlxuICAgIEJJTl9BTEdfT1BcbiAgICAgICggT3BlcmF0b3IuYmluX2FsZ19vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBiXG4gICAgICApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiVkFSXCI7IGkgXSAtPiBBTEdfVkFSIChmX2lkIGkpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiVE9LRU5cIjsgaSBdIC0+IFRPS0VOX0lEIChmX2lkIGkpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiTUlYXCI7IGNjIF0gLT4gS0FQUEFfSU5TVEFOQ0UgKGZfbWl4IGNjKVxuICB8IGBMaXN0IFsgb3A7IGEgXSAtPlxuICAgIFVOX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci51bl9hbGdfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYVxuICAgICAgKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIklGXCI7IGNvbmQ7IHllczsgbm8gXSAtPlxuICAgIElGXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBjb25kLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSB5ZXMsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIG5vXG4gICAgICApXG4gIHwgeCAtPlxuICAgICh0cnkgU1RBVEVfQUxHX09QIChPcGVyYXRvci5zdGF0ZV9hbGdfb3Bfb2ZfanNvbiB4KVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICh0cnkgQ09OU1QgKE5ici5vZl95b2pzb24geClcbiAgICAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIEFsZ19leHByXCIsIHgpKSkpXG5cbmFuZCBib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQgPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT5cbiAgICBpZiBiIHRoZW5cbiAgICAgIFRSVUVcbiAgICBlbHNlXG4gICAgICBGQUxTRVxuICB8IGBMaXN0IFsgb3A7IGEgXSAtPlxuICAgIFVOX0JPT0xfT1BcbiAgICAgICggT3BlcmF0b3IudW5fYm9vbF9vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYSApXG4gIHwgYExpc3QgWyBvcDsgYTsgYiBdIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgQklOX0JPT0xfT1BcbiAgICAgICAgICggT3BlcmF0b3IuYmluX2Jvb2xfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgIGEsXG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICBiIClcbiAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgQ09NUEFSRV9PUFxuICAgICAgICAgICAgKCBPcGVyYXRvci5jb21wYXJlX29wX29mX2pzb24gb3AsXG4gICAgICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICAgICBhLFxuICAgICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgICAgYiApXG4gICAgICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJvb2wgZXhwclwiLCB4KSkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJvb2xfZXhwclwiLCB4KSlcblxubGV0IHJlYyBwcmludCBwcl9taXggcHJfdG9rIHByX3ZhciBmID0gZnVuY3Rpb25cbiAgfCBDT05TVCBuIC0+IE5ici5wcmludCBmIG5cbiAgfCBBTEdfVkFSIGxhYiAtPiBwcl92YXIgZiBsYWJcbiAgfCBLQVBQQV9JTlNUQU5DRSBhc3QgLT4gcHJfbWl4IGYgYXN0XG4gIHwgVE9LRU5fSUQgdGsgLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiBwcl90b2sgdGtcbiAgfCBTVEFURV9BTEdfT1Agb3AgLT4gT3BlcmF0b3IucHJpbnRfc3RhdGVfYWxnX29wIGYgb3BcbiAgfCBCSU5fQUxHX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgT3BlcmF0b3IucHJpbnRfYmluX2FsZ19vcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYiBmIG9wXG4gIHwgVU5fQUxHX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSglYSlcIiBPcGVyYXRvci5wcmludF91bl9hbGdfb3Agb3BcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgfCBJRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgWz9dICVhIFs6XSAlYVwiXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGNvbmRcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIHllc1xuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgbm9cbiAgfCBESUZGX1RPS0VOICgoZXhwciwgXyksIHRvaykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGlmZiglYSwlYSlcIiAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpIGV4cHIgcHJfdG9rIHRva1xuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKChleHByLCBfKSwgbWl4dHVyZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiZGlmZiglYSwlYSlcIlxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgZXhwciBwcl9taXggbWl4dHVyZVxuXG5hbmQgcHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhciBmID0gZnVuY3Rpb25cbiAgfCBUUlVFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbdHJ1ZV1cIlxuICB8IEZBTFNFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbZmFsc2VdXCJcbiAgfCBVTl9CT09MX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAoJWEpXCIgT3BlcmF0b3IucHJpbnRfdW5fYm9vbF9vcCBvcFxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gIHwgQklOX0JPT0xfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhICVhICVhKVwiXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGEgT3BlcmF0b3IucHJpbnRfYmluX2Jvb2xfb3Agb3BcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYlxuICB8IENPTVBBUkVfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhICVhICVhKVwiXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhIE9wZXJhdG9yLnByaW50X2NvbXBhcmVfb3Agb3BcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGJcblxubGV0IGNvbnN0IG4gPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQ09OU1QgbilcbmxldCBpbnQgaSA9IGNvbnN0IChOYnIuSSBpKVxubGV0IGZsb2F0IGYgPSBjb25zdCAoTmJyLkYgZilcbmxldCBhZGQgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuU1VNLCBlMSwgZTIpKVxubGV0IG1pbnVzIGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLk1JTlVTLCBlMSwgZTIpKVxubGV0IG11bHQgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgZTEsIGUyKSlcbmxldCBkaXYgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBlMSwgZTIpKVxubGV0IHBvdyBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5QT1csIGUxLCBlMikpXG5sZXQgbG9nIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuTE9HLCBlMSkpXG5cbmxldCBsbiBlMSA9XG4gICgqIEpGOiBJZiBJIHJlbWVtbmJlciB3ZWxsICopXG4gIGRpdiAobG9nIGUxKSAobG9nIChpbnQgMTApKVxuXG5sZXQgc2luIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuU0lOVVMsIGUxKSlcbmxldCBjb3MgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5DT1NJTlVTLCBlMSkpXG5sZXQgdW1pbnVzIGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuVU1JTlVTLCBlMSkpXG5sZXQgc3FydCBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLlNRUlQsIGUxKSlcblxubGV0IHJlYyBhZGRfZGVwICgoaW5fdCwgaW5fZSwgdG9rc19kLCBvdXQpIGFzIHgpIGQgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXAgKGFkZF9kZXAgeCBkIGEpIGQgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF9cbiAgKCogd2hlbiB3ZSBkaWZmZXJlbnRpYXRlIGFnYWluc3QgYSB2YXJpYWJsZSwgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoaXMgdmFyaWFibGUgb25seSBpZiB0aGUgdmFyaWFibGUgb2NjdXJzIGluIHRoZSBkaWZmZXJudGlhdGVkIGV4cHJlc3Npb24gKilcbiAgICAtPlxuICAgIGFkZF9kZXAgeCBkIGFcbiAgfCBBTEdfVkFSIGosIF8gLT5cbiAgICBsZXQgKCkgPSBvdXQuKGopIDwtIE9wZXJhdG9yLkRlcFNldC5hZGQgZCBvdXQuKGopIGluXG4gICAgeFxuICB8IChLQVBQQV9JTlNUQU5DRSBfIHwgQ09OU1QgXyksIF8gLT4geFxuICB8IFRPS0VOX0lEIGksIF8gLT5cbiAgICBsZXQgKCkgPSB0b2tzX2QuKGkpIDwtIE9wZXJhdG9yLkRlcFNldC5hZGQgZCB0b2tzX2QuKGkpIGluXG4gICAgeFxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgXyAtPlxuICAgIGFkZF9kZXAgKGFkZF9kZXAgKGFkZF9kZXBfYm9vbCB4IGQgY29uZCkgZCB5ZXMpIGQgbm9cbiAgfCBTVEFURV9BTEdfT1Agb3AsIF8gLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuRU1BWF9WQVIgfCBPcGVyYXRvci5UTUFYX1ZBUiAtPiB4XG4gICAgfCBPcGVyYXRvci5USU1FX1ZBUiAtPiBPcGVyYXRvci5EZXBTZXQuYWRkIGQgaW5fdCwgaW5fZSwgdG9rc19kLCBvdXRcbiAgICB8IE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiAtPlxuICAgICAgaW5fdCwgT3BlcmF0b3IuRGVwU2V0LmFkZCBkIGluX2UsIHRva3NfZCwgb3V0KVxuXG5hbmQgYWRkX2RlcF9ib29sIHggZCA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4geFxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGFkZF9kZXBfYm9vbCB4IGQgYVxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwX2Jvb2wgKGFkZF9kZXBfYm9vbCB4IGQgYSkgZCBiXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcCAoYWRkX2RlcCB4IGQgYSkgZCBiXG5cbmxldCByZWMgaGFzX21peCA6XG4gICAgdHlwZSBhLiA/dmFyX2RlY2xzOignYiAtPiAoJ2MsICdiKSBlKSAtPiAoYSwgJ2IpIGUgLT4gcGVydmFzaXZlc19ib29sID1cbiBmdW4gP3Zhcl9kZWNscyAtPiBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGhhc19taXggP3Zhcl9kZWNscyBhIHx8IGhhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgVU5fQUxHX09QIChfLCAoYSwgXykpXG4gIHwgRElGRl9UT0tFTiAoKGEsIF8pLCBfKVxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKChhLCBfKSwgXykgLT5cbiAgICAoKiB3aGVuIHdlIGRpZmZlcmVudGlhdGUgYWdhaW5zdCBhIHZhcmlhYmxlLCB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhpcyB2YXJpYWJsZSBvbmx5IGlmIHRoZSB2YXJpYWJsZSBvY2N1cnMgaW4gdGhlIGRpZmZlcm50aWF0ZWQgZXhwcmVzc2lvbiAqKVxuICAgIGhhc19taXggP3Zhcl9kZWNscyBhXG4gIHwgU1RBVEVfQUxHX09QIF8gfCBDT05TVCBfIC0+IGZhbHNlXG4gIHwgVE9LRU5fSUQgXyB8IEtBUFBBX0lOU1RBTkNFIF8gLT4gdHJ1ZVxuICB8IElGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIGhhc19taXggP3Zhcl9kZWNscyB5ZXMgfHwgaGFzX21peCA/dmFyX2RlY2xzIG5vXG4gICAgfHwgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgY29uZFxuICB8IEFMR19WQVIgaSAtPlxuICAgIChtYXRjaCB2YXJfZGVjbHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBmIC0+IGhhc19taXggP3Zhcl9kZWNscyAoZiBpKSlcblxuYW5kIGJvb2xfaGFzX21peCA6XG4gICAgdHlwZSBhLiA/dmFyX2RlY2xzOignYiAtPiAoJ2MsICdiKSBlKSAtPiAoYSwgJ2IpIGJvb2wgLT4gcGVydmFzaXZlc19ib29sID1cbiBmdW4gP3Zhcl9kZWNscyAtPiBmdW5jdGlvblxuICB8IFRSVUUgfCBGQUxTRSAtPiBmYWxzZVxuICB8IENPTVBBUkVfT1AgKF8sIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGhhc19taXggP3Zhcl9kZWNscyBhIHx8IGhhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGJvb2xfaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYlxuICB8IFVOX0JPT0xfT1AgKF8sIChhLCBfKSkgLT4gYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYVxuXG5sZXQgcmVjIGlzX2NvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBDT05TVCBfLCBfIC0+IHRydWVcbiAgfCBJRiAoYSwgYiwgYyksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGIgJiYgaXNfY29uc3RhbnQgY1xuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGlzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykgfCBESUZGX1RPS0VOIChhLCBfKSksIF8gLT5cbiAgICBpc19jb25zdGFudCBhXG4gIHwgKEFMR19WQVIgXyB8IFNUQVRFX0FMR19PUCBfIHwgVE9LRU5fSUQgXyB8IEtBUFBBX0lOU1RBTkNFIF8pLCBfIC0+IGZhbHNlXG5cbmFuZCBib29sX2lzX2NvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB0cnVlXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYSAmJiBib29sX2lzX2NvbnN0YW50IGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGFcblxubGV0IHJlYyBpc190aW1lX2hvbW9nZW5lb3VzID0gZnVuY3Rpb25cbiAgfCBDT05TVCBfLCBfIC0+IHRydWVcbiAgfCBJRiAoYSwgYiwgYyksIF8gLT5cbiAgICBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYSAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGIgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBjXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykgfCBESUZGX1RPS0VOIChhLCBfKSksIF8gLT5cbiAgICBpc190aW1lX2hvbW9nZW5lb3VzIGFcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSxcbiAgICAgIF8gKVxuICB8IEFMR19WQVIgXywgX1xuICB8IFRPS0VOX0lEIF8sIF9cbiAgfCBLQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgdHJ1ZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiwgXyAtPiBmYWxzZVxuXG5hbmQgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB0cnVlXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGFcblxubGV0IHJlYyBhdXhfZXh0cmFjdF9jYyBhY2MgPSBmdW5jdGlvblxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGF1eF9leHRyYWN0X2NjIChhdXhfZXh0cmFjdF9jYyBhY2MgYSkgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF8gLT5cbiAgICBhdXhfZXh0cmFjdF9jYyBhY2MgYVxuICB8IChBTEdfVkFSIF8gfCBDT05TVCBfIHwgVE9LRU5fSUQgXyB8IFNUQVRFX0FMR19PUCBfKSwgXyAtPiBhY2NcbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBfIC0+IGkgOjogYWNjXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIChleHRyYWN0X2NjX2Jvb2wgYWNjIGNvbmQpIHllcykgbm9cblxuYW5kIGV4dHJhY3RfY2NfYm9vbCBhY2MgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IGFjY1xuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPiBleHRyYWN0X2NjX2Jvb2wgKGV4dHJhY3RfY2NfYm9vbCBhY2MgYSkgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGV4dHJhY3RfY2NfYm9vbCBhY2MgYVxuICB8IENPTVBBUkVfT1AgKF8sIGEsIGIpLCBfIC0+IGF1eF9leHRyYWN0X2NjIChhdXhfZXh0cmFjdF9jYyBhY2MgYSkgYlxuXG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyB4ID0gYXV4X2V4dHJhY3RfY2MgW10geFxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCB4ID0gZXh0cmFjdF9jY19ib29sIFtdIHhcblxubGV0IHNldHVwX2FsZ192YXJzX3Jldl9kZXAgdG9rcyB2YXJzID1cbiAgbGV0IGluX3QgPSBPcGVyYXRvci5EZXBTZXQuZW1wdHkgaW5cbiAgbGV0IGluX2UgPSBPcGVyYXRvci5EZXBTZXQuZW1wdHkgaW5cbiAgbGV0IHRva3NfZCA9IEFycmF5Lm1ha2UgKE5hbWVkRGVjbHMuc2l6ZSB0b2tzKSBPcGVyYXRvci5EZXBTZXQuZW1wdHkgaW5cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCB2YXJzKSBPcGVyYXRvci5EZXBTZXQuZW1wdHkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSB4IChfLCB5KSAtPiBhZGRfZGVwIHggKE9wZXJhdG9yLkFMRyBpKSB5KVxuICAgIChpbl90LCBpbl9lLCB0b2tzX2QsIG91dCkgdmFyc1xuXG5sZXQgcmVjIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyA9XG4gIGZ1bmN0aW9uXG4gIHwgKEJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgcG9zKSBhcyB4IC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYSxcbiAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBiXG4gICAgICAgKVxuICAgICB3aXRoXG4gICAgfCAoQ09OU1QgYzEsIF8pLCAoQ09OU1QgYzIsIF8pIC0+IENPTlNUIChOYnIub2ZfYmluX2FsZ19vcCBvcCBjMSBjMiksIHBvc1xuICAgIHwgKCAoKCAoIEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgIHwgRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgX1xuICAgICAgICAgICB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgICAgIF8gKSBhcyBhJyksXG4gICAgICAgICgoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgfCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfXG4gICAgICAgICAgIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgICAgXyApIGFzIGInKSApIC0+XG4gICAgICBpZiBhID09IGEnICYmIGIgPT0gYicgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEJJTl9BTEdfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgKFVOX0FMR19PUCAob3AsIGEpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgICB3aXRoXG4gICAgfCBDT05TVCBjLCBfIC0+IENPTlNUIChOYnIub2ZfdW5fYWxnX29wIG9wIGMpLCBwb3NcbiAgICB8ICggKCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSBhcyBhJyAtPlxuICAgICAgaWYgYSA9PSBhJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgVU5fQUxHX09QIChvcCwgYScpLCBwb3MpXG4gIHwgKERJRkZfVE9LRU4gKGEsIHQpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgICB3aXRoXG4gICAgfCBDT05TVCBfLCBfIC0+XG4gICAgICAoKiB0aGUgZGVyaXZhdGl2ZSBvZiBhIGNvbnN0YW50IGlzIHplcm8gKilcbiAgICAgIENPTlNUIE5ici56ZXJvLCBwb3NcbiAgICB8ICggKCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICB8IElGIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfICksXG4gICAgICAgIF8gKSBhcyBhJyAtPlxuICAgICAgaWYgYSA9PSBhJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRElGRl9UT0tFTiAoYScsIHQpLCBwb3MpXG4gIHwgKERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIG0pLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYVxuICAgICB3aXRoXG4gICAgfCBDT05TVCBfLCBfIC0+XG4gICAgICAoKiB0aGUgZGVyaXZhdGl2ZSBvZiBhIGNvbnN0YW50IGlzIHplcm8gKilcbiAgICAgIENPTlNUIE5ici56ZXJvLCBwb3NcbiAgICB8ICggKCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSBhcyBhJyAtPlxuICAgICAgaWYgYSA9PSBhJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgRElGRl9LQVBQQV9JTlNUQU5DRSAoYScsIG0pLCBwb3MpXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLkVNQVhfVkFSLCBwb3MgLT5cbiAgICAoIENPTlNUXG4gICAgICAgIChtYXRjaCBtYXhfZXZlbnRzIHdpdGhcbiAgICAgICAgfCBTb21lIG4gLT4gTmJyLkkgblxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAgICAgICAgICAgXCJbRW1heF0gY29uc3RhbnQgaXMgZXZhbHVhdGVkIHRvIGluZmluaXR5XCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBOYnIuRiBpbmZpbml0eSksXG4gICAgICBwb3MgKVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5UTUFYX1ZBUiwgcG9zIC0+XG4gICAgKCBDT05TVFxuICAgICAgICAobWF0Y2ggbWF4X3RpbWUgd2l0aFxuICAgICAgICB8IFNvbWUgdCAtPiBOYnIuRiB0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgICAgICBcIltUbWF4XSBjb25zdGFudCBpcyBldmFsdWF0ZWQgdG8gaW5maW5pdHlcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIE5ici5GIGluZmluaXR5KSxcbiAgICAgIHBvcyApXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuVElNRV9WQVIgfCBPcGVyYXRvci5FVkVOVF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiApLFxuICAgICAgXyApIGFzIHggLT5cbiAgICB4XG4gIHwgKEFMR19WQVIgaSwgcG9zKSBhcyB4IC0+XG4gICAgaWYgTGlzdC5tZW0gaSB1cGRhdGVkX3ZhcnMgdGhlblxuICAgICAgeFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdmFycy4oaSkgd2l0aFxuICAgICAgfCBfLCAoKChDT05TVCBfIHwgQUxHX1ZBUiBfKSBhcyB5KSwgXykgLT4geSwgcG9zXG4gICAgICB8ICggXyxcbiAgICAgICAgICAoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgIHwgVE9LRU5fSUQgXyB8IElGIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIHhcbiAgICApXG4gIHwgKChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8pLCBfKSBhcyB4IC0+IHhcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIHBvcyAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICB+dmFycyBjb25kXG4gICAgIHdpdGhcbiAgICB8IFRSVUUsIF8gLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyB5ZXNcbiAgICB8IEZBTFNFLCBfIC0+XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgbm9cbiAgICB8ICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGNvbmQnIC0+XG4gICAgICAoIElGXG4gICAgICAgICAgKCBjb25kJyxcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgICB+dmFycyB5ZXMsXG4gICAgICAgICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgICAgfnZhcnMgbm8gKSxcbiAgICAgICAgcG9zICkpXG5cbmFuZCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyA9XG4gIGZ1bmN0aW9uXG4gIHwgKChUUlVFIHwgRkFMU0UpLCBfKSBhcyB4IC0+IHhcbiAgfCBVTl9CT09MX09QIChvcCwgYSksIHBvcyAtPlxuICAgIChtYXRjaFxuICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgfnZhcnMgYSxcbiAgICAgICAgIG9wIClcbiAgICAgd2l0aFxuICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5OT1QgLT4gRkFMU0UsIHBvc1xuICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuTk9UIC0+IFRSVUUsIHBvc1xuICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGEnKSwgXyAtPlxuICAgICAgVU5fQk9PTF9PUCAob3AsIGEnKSwgcG9zKVxuICB8IEJJTl9CT09MX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIChtYXRjaFxuICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgfnZhcnMgYSxcbiAgICAgICAgIG9wIClcbiAgICAgd2l0aFxuICAgIHwgKFRSVUUsIF8pLCBPcGVyYXRvci5PUiAtPiBUUlVFLCBwb3NcbiAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLkFORCAtPiBGQUxTRSwgcG9zXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLkFORCB8IChGQUxTRSwgXyksIE9wZXJhdG9yLk9SIC0+XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFyc1xuICAgICAgICBiXG4gICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYScpLCBfIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgICggcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgICAgICB+dmFycyBiLFxuICAgICAgICAgICBvcCApXG4gICAgICAgd2l0aFxuICAgICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk9SIC0+IFRSVUUsIHBvc1xuICAgICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5BTkQgLT4gRkFMU0UsIHBvc1xuICAgICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLkFORCB8IChGQUxTRSwgXyksIE9wZXJhdG9yLk9SIC0+IGEnXG4gICAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBiJyksIF8gLT5cbiAgICAgICAgQklOX0JPT0xfT1AgKG9wLCBhJywgYicpLCBwb3MpKVxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGEnID1cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgaW5cbiAgICBsZXQgYicgPVxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGJcbiAgICBpblxuICAgIChtYXRjaCBhJywgYicgd2l0aFxuICAgIHwgKENPTlNUIG4xLCBfKSwgKENPTlNUIG4yLCBfKSAtPlxuICAgICAgaWYgTmJyLm9mX2NvbXBhcmVfb3Agb3AgbjEgbjIgdGhlblxuICAgICAgICBUUlVFLCBwb3NcbiAgICAgIGVsc2VcbiAgICAgICAgRkFMU0UsIHBvc1xuICAgIHwgKCAoICggRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgRElGRl9UT0tFTiBfIHwgQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF9cbiAgICAgICAgICB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgICAgfCBJRiBfICksXG4gICAgICAgICAgXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIENPTVBBUkVfT1AgKG9wLCBhJywgYicpLCBwb3MpXG5cbmxldCByZWMgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lICgoaW5fdCwgXywgXywgZGVwcykgYXMgdmFyc19kZXBzKSA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCAoVU5fQUxHX09QIChfLCBhKSB8IERJRkZfVE9LRU4gKGEsIF8pIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgXykpLCBfIC0+XG4gICAgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyksIF8gLT4gZmFsc2VcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIsIF8gLT4gdHJ1ZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5FVkVOVF9WQVIsIF8gLT4gbm90IG9ubHlfdGltZVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVJcbiAgICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiApLFxuICAgICAgXyApIC0+XG4gICAgZmFsc2VcbiAgfCBBTEdfVkFSIGksIF8gLT5cbiAgICBsZXQgcmVjIGF1eCBqID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC5tZW0gKE9wZXJhdG9yLkFMRyBqKSBpbl90XG4gICAgICB8fCBPcGVyYXRvci5EZXBTZXQuZXhpc3RzXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgT3BlcmF0b3IuQUxHIGsgLT4gYXV4IGtcbiAgICAgICAgICAgICB8IE9wZXJhdG9yLlJVTEUgXyB8IE9wZXJhdG9yLk1PRElGIF8gLT4gZmFsc2UpXG4gICAgICAgICAgIGRlcHMuKGopXG4gICAgaW5cbiAgICBhdXggaVxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgXyAtPlxuICAgIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBjb25kXG4gICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyB5ZXNcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIG5vXG5cbmFuZCBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IGZhbHNlXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcblxubGV0IHJlYyBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzID0gZnVuY3Rpb25cbiAgfCBUUlVFIHwgRkFMU0UgLT4gZmFsc2VcbiAgfCBVTl9CT09MX09QIChPcGVyYXRvci5OT1QsIChhLCBfKSkgLT4gaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBhXG4gIHwgQklOX0JPT0xfT1AgKF8sIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYSB8fCBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBsZXQgb25seV90aW1lID0gdHJ1ZSBpblxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5FUVVBTFxuICAgICAgd2hlbiBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgICAgICAgICAgfHwgaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBiIC0+XG4gICAgICB0cnVlXG4gICAgfCBPcGVyYXRvci5FUVVBTCB8IE9wZXJhdG9yLlNNQUxMRVIgfCBPcGVyYXRvci5HUkVBVEVSIHwgT3BlcmF0b3IuRElGRiAtPlxuICAgICAgZmFsc2UpXG5cbmxldCByZWMgbWFwX29uX21peHR1cmUgZiA9IGZ1bmN0aW9uXG4gIHwgS0FQUEFfSU5TVEFOQ0UgaSwgcCAtPiBmIGksIHBcbiAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICBmYWlsd2l0aFxuICAgICAgXCJBbGdfZXhwci5tYXBfb25fbWl4dHVyZSBkb2Vzbid0IGtub3cgd2hhdCB0byBkbyBvZiBESUZGX0tBUFBBX0lOU1RBTkNFXCJcbiAgfCAoQ09OU1QgXywgXykgYXMgeCAtPiB4XG4gIHwgKEFMR19WQVIgXywgXykgYXMgeCAtPiB4XG4gIHwgKFRPS0VOX0lEIF8sIF8pIGFzIHggLT4geFxuICB8IERJRkZfVE9LRU4gKGEsIGkpLCBwIC0+IERJRkZfVE9LRU4gKG1hcF9vbl9taXh0dXJlIGYgYSwgaSksIHBcbiAgfCAoU1RBVEVfQUxHX09QIF8sIF8pIGFzIHggLT4geFxuICB8IEJJTl9BTEdfT1AgKG8sIHgsIHkpLCBwIC0+XG4gICAgQklOX0FMR19PUCAobywgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG4gIHwgVU5fQUxHX09QIChvLCB4KSwgcCAtPiBVTl9BTEdfT1AgKG8sIG1hcF9vbl9taXh0dXJlIGYgeCksIHBcbiAgfCBJRiAoYiwgeCwgeSksIHAgLT5cbiAgICBJRiAobWFwX2Jvb2xfb25fbWl4dHVyZSBmIGIsIG1hcF9vbl9taXh0dXJlIGYgeCwgbWFwX29uX21peHR1cmUgZiB5KSwgcFxuXG5hbmQgbWFwX2Jvb2xfb25fbWl4dHVyZSBmID0gZnVuY3Rpb25cbiAgfCAoVFJVRSwgXykgYXMgeCAtPiB4XG4gIHwgKEZBTFNFLCBfKSBhcyB4IC0+IHhcbiAgfCBCSU5fQk9PTF9PUCAobywgeCwgeSksIHAgLT5cbiAgICBCSU5fQk9PTF9PUCAobywgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHgsIG1hcF9ib29sX29uX21peHR1cmUgZiB5KSwgcFxuICB8IFVOX0JPT0xfT1AgKG8sIHgpLCBwIC0+IFVOX0JPT0xfT1AgKG8sIG1hcF9ib29sX29uX21peHR1cmUgZiB4KSwgcFxuICB8IENPTVBBUkVfT1AgKG8sIHgsIHkpLCBwIC0+XG4gICAgQ09NUEFSRV9PUCAobywgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG5cbmxldCByZWMgZm9sZF9vbl9taXh0dXJlIGYgeCA9IGZ1bmN0aW9uXG4gIHwgS0FQUEFfSU5TVEFOQ0UgaSwgXyAtPiBmIHggaVxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcIkFsZ19leHByLmZvbGRfb25fbWl4dHVyZSBkb2Vzbid0IGtub3cgd2hhdCB0byBkbyBvZiBESUZGX0tBUFBBX0lOU1RBTkNFXCJcbiAgfCBDT05TVCBfLCBfIC0+IHhcbiAgfCBBTEdfVkFSIF8sIF8gLT4geFxuICB8IFRPS0VOX0lEIF8sIF8gLT4geFxuICB8IERJRkZfVE9LRU4gKGEsIF8pLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIHggYVxuICB8IFNUQVRFX0FMR19PUCBfLCBfIC0+IHhcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCBhKSBiXG4gIHwgVU5fQUxHX09QIChfLCBhKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiB4IGFcbiAgfCBJRiAoYiwgdSwgdiksIF8gLT5cbiAgICBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCB1KSB2KSBiXG5cbmFuZCBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIHggPSBmdW5jdGlvblxuICB8IFRSVUUsIF8gLT4geFxuICB8IEZBTFNFLCBfIC0+IHhcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT5cbiAgICBmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIChmb2xkX2Jvb2xfb25fbWl4dHVyZSBmIHggYSkgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIHggYSkgYlxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IChCSU5fQUxHX09QIChvcGEsIGExLCBhMiksIF8pLCAoQklOX0FMR19PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuICB8ICggKEJJTl9BTEdfT1AgXywgXyksXG4gICAgICAoICggVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIClcbiAgfCAoICggKCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICBfICksXG4gICAgICAoQklOX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoVU5fQUxHX09QIChvcGEsIGExKSwgXyksIChVTl9BTEdfT1AgKG9wYiwgYjEpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMVxuICB8ICggKFVOX0FMR19PUCBfLCBfKSxcbiAgICAgICggKCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgX1xuICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgXyApIClcbiAgfCAoICggKCBTVEFURV9BTEdfT1AgXyB8IEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgX1xuICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgXyApLFxuICAgICAgKFVOX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoU1RBVEVfQUxHX09QIG9wYSwgXyksIChTVEFURV9BTEdfT1Agb3BiLCBfKSAtPiBvcGEgPSBvcGJcbiAgfCAoIChTVEFURV9BTEdfT1AgXywgXyksXG4gICAgICAoKEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKSApXG4gIHwgKCAoKEFMR19WQVIgXyB8IEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKSxcbiAgICAgIChTVEFURV9BTEdfT1AgXywgXykgKSAtPlxuICAgIGZhbHNlXG4gIHwgKEFMR19WQVIgaWQxLCBfKSwgKEFMR19WQVIgaWQyLCBfKSAtPiBpZDEgPSBpZDJcbiAgfCAoQUxHX1ZBUiBfLCBfKSwgKChLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKSwgKEFMR19WQVIgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChLQVBQQV9JTlNUQU5DRSBtaXgxLCBfKSwgKEtBUFBBX0lOU1RBTkNFIG1peDIsIF8pIC0+IG1peDEgPSBtaXgyXG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8sIF8pLCAoKFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pXG4gIHwgKChUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKSwgKEtBUFBBX0lOU1RBTkNFIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoVE9LRU5fSUQgaWQxLCBfKSwgKFRPS0VOX0lEIGlkMiwgXykgLT4gaWQxID0gaWQyXG4gIHwgKFRPS0VOX0lEIF8sIF8pLCAoKENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKENPTlNUIF8gfCBJRiBfKSwgXyksIChUT0tFTl9JRCBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKENPTlNUIGMxLCBfKSwgKENPTlNUIGMyLCBfKSAtPiBOYnIuaXNfZXF1YWwgYzEgYzJcbiAgfCAoQ09OU1QgXywgXyksIChJRiBfLCBfKSB8IChJRiBfLCBfKSwgKENPTlNUIF8sIF8pIC0+IGZhbHNlXG4gIHwgKElGIChjb25kYSwgYTEsIGEyKSwgXyksIChJRiAoY29uZGIsIGIxLCBiMiksIF8pIC0+XG4gICAgZXF1YWxfYm9vbCBjb25kYSBjb25kYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuICB8ICgoRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfKSwgXyksIF9cbiAgfCBfLCAoKERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyksIF8pIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG5cbmFuZCBlcXVhbF9ib29sIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IChUUlVFLCBfKSwgKFRSVUUsIF8pIC0+IHRydWVcbiAgfCAoVFJVRSwgXyksICgoRkFMU0UgfCBCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXylcbiAgfCAoKEZBTFNFIHwgQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pLCAoVFJVRSwgXykgLT5cbiAgICBmYWxzZVxuICB8IChGQUxTRSwgXyksIChGQUxTRSwgXykgLT4gdHJ1ZVxuICB8IChGQUxTRSwgXyksICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pXG4gIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXyksIChGQUxTRSwgXykgLT5cbiAgICBmYWxzZVxuICB8IChVTl9CT09MX09QIChvcGEsIGEpLCBfKSwgKFVOX0JPT0xfT1AgKG9wYiwgYiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsX2Jvb2wgYSBiXG4gIHwgKFVOX0JPT0xfT1AgXywgXyksICgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyksIF8pXG4gIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfKSwgXyksIChVTl9CT09MX09QIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoQklOX0JPT0xfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChCSU5fQk9PTF9PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbF9ib29sIGExIGIxICYmIGVxdWFsX2Jvb2wgYTIgYjJcbiAgfCAoQklOX0JPT0xfT1AgXywgXyksIChDT01QQVJFX09QIF8sIF8pIHwgKENPTVBBUkVfT1AgXywgXyksIChCSU5fQk9PTF9PUCBfLCBfKVxuICAgIC0+XG4gICAgZmFsc2VcbiAgfCAoQ09NUEFSRV9PUCAob3BhLCBhMSwgYTIpLCBfKSwgKENPTVBBUkVfT1AgKG9wYiwgYjEsIGIyKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWwgYTEgYjEgJiYgZXF1YWwgYTIgYjJcbiIsIigqKlxuICAqIGNvbnRhY3RfbWFwLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQgJiBMeSBLaW0gUXV5ZW4sIHByb2plY3QgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIENyZWF0aW9uOiAyMDE3LCB0aGUgMjNyZCBvZiBKdW5lXG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxKdWwgMDUgMjAxNz5cbiAgKlxuICAqIENvbXB1dGUgc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudCBpbiBjb250YWN0IG1hcFxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1LDIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlXG4gICogZW4gSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLlxuICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSB0ID0gKE1vZHMuSW50U2V0LnQgKiBNb2RzLkludDJTZXQudCkgYXJyYXkgYXJyYXlcblxubGV0IHRvX3lvanNvbiBhID1cbiAgbGV0IGludGxzX3RvX2pzb24gYSA9XG4gICAgYExpc3QgKE1vZHMuSW50U2V0LmZvbGQgKGZ1biBiIGFjYyAtPiBgSW50IGIgOjogYWNjKSBhIFtdKVxuICBpblxuICBsZXQgcGFpcmxzX3RvX2pzb24gYSA9XG4gICAgYExpc3RcbiAgICAgIChNb2RzLkludDJTZXQuZm9sZFxuICAgICAgICAgKGZ1biAoYiwgYykgYWNjIC0+IGBMaXN0IFsgYEludCBiOyBgSW50IGMgXSA6OiBhY2MpXG4gICAgICAgICBhIFtdKVxuICBpblxuICBsZXQgYXJyYXlfdG9fanNvbiBhID1cbiAgICBgTGlzdFxuICAgICAgKEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgKGZ1biBhY2MgKGEsIGIpIC0+IGBMaXN0IFsgaW50bHNfdG9fanNvbiBhOyBwYWlybHNfdG9fanNvbiBiIF0gOjogYWNjKVxuICAgICAgICAgW10gYSlcbiAgaW5cbiAgYExpc3QgKEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjYyB0IC0+IGFycmF5X3RvX2pzb24gdCA6OiBhY2MpIFtdIGEpXG5cbmxldCBvZl95b2pzb24gKGEgOiBZb2pzb24uQmFzaWMudCkgPVxuICBsZXQgaW50bHNfb2ZfanNvbiBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgSW50IGIgLT4gTW9kcy5JbnRTZXQuYWRkIGIgYWNjXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGExXCIsIHgpKSlcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGFcbiAgaW5cbiAgbGV0IHBhaXJsc19vZl9qc29uIGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMaXN0IFsgYEludCBiOyBgSW50IGMgXSAtPiBNb2RzLkludDJTZXQuYWRkIChiLCBjKSBhY2NcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTJcIiwgeCkpKVxuICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5IGFcbiAgaW5cbiAgbGV0IGFycmF5X29mX2pzb24gPSBmdW5jdGlvblxuICAgIHwgYExpc3QgbHMgLT5cbiAgICAgIChtYXRjaCBscyB3aXRoXG4gICAgICB8IFsgYExpc3QgYTsgYExpc3QgYiBdIC0+IGludGxzX29mX2pzb24gYSwgcGFpcmxzX29mX2pzb24gYlxuICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhM1wiLCB4KSlcbiAgaW5cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgYExpc3QgYXJyYXkxIC0+XG4gICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IGBMaXN0IGFycmF5MiAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBhcnJheV9vZl9qc29uIGFycmF5MlxuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhNFwiLCB4KSkpXG4gICAgICBhcnJheTFcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgY29udGFjdCBtYXBcIiwgeCkpXG5cbmxldCBwcmludF9rYXBwYSB+bm9Db3VudGVycyBzaWdzIGYgYyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGFnIGYgaW50ZiAtPlxuICAgICAgICAgaWYgU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZyA9IE5vbmUgfHwgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiUlYWdlbnQ6QCAlYShAWyVhQF0pQF1cIlxuICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICBhZ1xuICAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHMgZiAoaXMsIGxzKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnIHMgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2NvdW50ZXIgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJXQldEBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IGlzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7QFslYUBdfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLnNldCBNb2RzLkludFNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZyBzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcylcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGxzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJALFtAWyVhQF1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50MlNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAoYWQsIHNkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzKSkpXG4gICAgICAgICAgICAgaW50ZikpXG4gICAgY1xuXG5sZXQgY3V0X2F0IGkgcycgbCA9XG4gIGxldCByZWMgYXV4X2N1dF9hdCBvID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8ICgoKGosIHMpLCBfKSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgIGlmIHMgPj0gcycgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUgKGggOjogbylcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2N1dF9hdCAoaCA6OiBvKSB0XG4gIGluXG4gIGF1eF9jdXRfYXQgW10gbFxuXG5sZXQgZ2V0X2N5Y2xlcyBjb250YWN0X21hcCA9XG4gIGxldCByZWMgZGZzICgoa25vd24sIG91dCkgYXMgYWNjKSBwYXRoIGkgbGFzdF9zID1cbiAgICBpZiBNb2RzLkludFNldC5tZW0gaSBrbm93biB0aGVuIChcbiAgICAgIG1hdGNoIGN1dF9hdCBpIGxhc3RfcyBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSB4IC0+IGtub3duLCB4IDo6IG91dFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQga25vd24nID0gTW9kcy5JbnRTZXQuYWRkIGkga25vd24gaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBzIGFjYyAoXywgbCkgLT5cbiAgICAgICAgICBpZiBzID0gbGFzdF9zIHRoZW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gKCh0eSwgcycpIGFzIHgpIGFjYyAtPiBkZnMgYWNjICgoKGksIHMpLCB4KSA6OiBwYXRoKSB0eSBzJylcbiAgICAgICAgICAgICAgbCBhY2MpXG4gICAgICAgIChrbm93bicsIG91dCkgY29udGFjdF9tYXAuKGkpXG4gICAgKVxuICBpblxuICBsZXQgcmVjIHNjYW4gKChrbm93biwgb3V0KSBhcyBhY2MpIGkgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIG91dFxuICAgIGVsc2VcbiAgICAgIHNjYW5cbiAgICAgICAgKGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW5cbiAgICAgICAgICAgYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGRmcyBhY2MgW10gaSAoLTEpKVxuICAgICAgICAocHJlZCBpKVxuICBpblxuICBzY2FuIChNb2RzLkludFNldC5lbXB0eSwgW10pIChBcnJheS5sZW5ndGggY29udGFjdF9tYXAgLSAxKVxuXG5sZXQgcHJpbnRfY3ljbGVzIHNpZ3MgZm9ybSBjb250YWN0X21hcCA9XG4gIGxldCBvID0gZ2V0X2N5Y2xlcyBjb250YWN0X21hcCBpblxuICBQcC5saXN0IFBwLnNwYWNlXG4gICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmICgoYWcsIHMpLCAoYWcnLCBzJykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWEtJWEuXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICBhZ1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgc1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZycpXG4gICAgICAgICAgIHMnKSlcbiAgICBmb3JtIG9cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMyBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IE5vX3NoYXJpbmcgfCBDb21wYXRpYmxlX3BhdHRlcm5zIHwgTWF4X3NoYXJpbmdcblxubGV0IHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwibm9fc2hhcmluZ1wiIC0+IE5vX3NoYXJpbmdcbiAgfCBgU3RyaW5nIFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiIC0+IENvbXBhdGlibGVfcGF0dGVybnNcbiAgfCBgU3RyaW5nIFwibWF4X3NoYXJpbmdcIiAtPiBNYXhfc2hhcmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHNoYXJpbmdfbGV2ZWxcIiwgeCkpXG5cbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsIG9iID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJub19zaGFyaW5nXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwibWF4X3NoYXJpbmdcIlxuXG5sZXQgc3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwgP2xlbjooXyA9IDEwMjQpID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFwiXFxcIm5vX3NoYXJpbmdcXFwiXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiXFxcImNvbXBhdGlibGVfcGF0dGVybnNcXFwiXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBcIlxcXCJtYXhfc2hhcmluZ1xcXCJcIlxuXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsIHAgbGIgPVxuICBzaGFyaW5nX2xldmVsX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2hhcmluZ19sZXZlbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGxpbmsgPSBVblNwZWMgfCBGcmVlIHwgTGluayBvZiBpbnQgKiBpbnQgICgqKiBub2RlX2lkLCBzaXRlX2lkICopXG5cbnR5cGUgY2MgPSB7XG4gIG5vZGVzX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICBub2RlczogKGxpbmsgKiBpbnQpIGFycmF5IE1vZHMuSW50TWFwLnQ7XG4gICgqcGF0dGVybiBncmFwaCBpZCAtPiBbfC4uLiAobGlua19qLHN0YXRlX2opLi4ufF0gaS5lIGFnZW50X2lkIG9uIHNpdGVfaiBoYXNcbiAgICBhIGxpbmsgbGlua19qIGFuZCBpbnRlcm5hbCBzdGF0ZSBzdGF0ZV9qICgtMSBtZWFucyBhbnkpICopXG4gIHJlY29nbl9uYXY6IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50O1xufVxuKCoqIFRoZSBsaW5rIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW2ZzdCBub2RlcyhpKS4oayldLlxuXG4gICAgVGhlIGludGVybmFsIHN0YXRlIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW3NuZCBub2RlcyhpKS4oayldLiBBXG4gICAgbmVnYXRpdmUgbnVtYmVyIG1lYW5zIFVuU3BlYy4gKilcblxudHlwZSB0ID0gY2NcbnR5cGUgaWQgPSBpbnRcblxubGV0IGRlYnVnX3ByaW50X2lkIGZtdCBpZCA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgaWRcbmxldCBzaXplX29mX2NjIGNjID0gTW9kcy5JbnRNYXAuc2l6ZSBjYy5ub2Rlc1xubGV0IGNvbXBhcmVfY2Fub25pY2FscyBjYyBjYycgPSBNb2RzLmludF9jb21wYXJlIGNjIGNjJ1xubGV0IGlzX2VxdWFsX2Nhbm9uaWNhbHMgY2MgY2MnID0gY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IDBcbmxldCBoYXNoX3ByaW1lID0gMjlcblxubGV0IGNvYXJzZV9oYXNoIGNjID1cbiAgbGV0IHBsdXNfaW50ZXJuYWwgYWNjIHMgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgVG9vbHMuY2FudG9yX3BhaXJpbmcgKHN1Y2MgcykgKHN1Y2MgaSkgKyBhY2NcbiAgaW5cbiAgbGV0IG5vZGVfc2hhcGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbiBlIGFjYyAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBVblNwZWMsIGkgLT4gcGx1c19pbnRlcm5hbCBhY2MgcyBpXG4gICAgICAgICAgICB8IEZyZWUsIGkgLT4gcGx1c19pbnRlcm5hbCAoMyArIChzICogMykgKyBhY2MpIHMgaVxuICAgICAgICAgICAgfCBMaW5rIChuJywgcycpLCBpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MnID0gcGx1c19pbnRlcm5hbCBhY2MgcyBpIGluXG4gICAgICAgICAgICAgIGxldCBleHRyYSA9IFRvb2xzLmNhbnRvcl9wYWlyaW5nICgxICsgbWluIHMgcycpICgxICsgbWF4IHMgcycpIGluXG4gICAgICAgICAgICAgIGlmIChuID0gbicgJiYgcyA8IHMnKSB8fCBuIDwgbicgdGhlblxuICAgICAgICAgICAgICAgIChleHRyYSAqIDcpICsgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICBhY2MgZSlcbiAgICAgIGNjLm5vZGVzIDBcbiAgaW5cbiAgQXJyYXkuZm9sZF9yaWdodFxuICAgIChmdW4gbCBhY2MgLT4gTGlzdC5sZW5ndGggbCArIChoYXNoX3ByaW1lICogYWNjKSlcbiAgICBjYy5ub2Rlc19ieV90eXBlIG5vZGVfc2hhcGVcblxubGV0IGlkX3RvX3lvanNvbiBjYyA9IGBJbnQgY2NcblxubGV0IGlkX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBjYyAtPiBjY1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGF0dGVybiBpZFwiLCB4KSlcblxubW9kdWxlIFNldCA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTWFwID0gTW9kcy5JbnRNYXBcblxubW9kdWxlIE9ic01hcCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vZHMuRHluQXJyYXlcblxuICBsZXQgZHVtbXkgeCA9IG1ha2UgMCB4XG5lbmRcblxubGV0IGVtcHR5X2NjIHNpZ3MgPVxuICBsZXQgbmJ0ID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgeyBub2Rlc19ieV90eXBlID0gbmJ0OyByZWNvZ25fbmF2ID0gW107IG5vZGVzID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxuXG5sZXQgcmF3X2ZpbmRfdHkgdHlzIGlkID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIExpc3QubWVtIGlkIHR5cy4oaSkgdGhlblxuICAgICAgaVxuICAgIGVsc2VcbiAgICAgIGF1eCAocHJlZCBpKVxuICBpblxuICBhdXggKEFycmF5Lmxlbmd0aCB0eXMgLSAxKVxuXG5sZXQgZmluZF90eSBjYyBpZCA9IHJhd19maW5kX3R5IGNjLm5vZGVzX2J5X3R5cGUgaWRcblxubGV0IGFkZF9vcmlnaW4gZGVwcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZXBzXG4gIHwgU29tZSB4IC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgeCBkZXBzXG5cbmxldCByZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIGNjID0gY2MucmVjb2duX25hdlxuXG4oKiogRXJyb3JzICopXG5sZXQgYWxyZWFkeV9zcGVjaWZpZWQgP3NpZ3MgeCBpID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJTaXRlICVhIG9mIGFnZW50ICVhIGFscmVhZHkgc3BlY2lmaWVkXCJcbiAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyB4KSBpXG4gICAgICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgIHgpKVxuXG5sZXQgZGFuZ2xpbmdfbm9kZSB+c2lncyB0eXMgeCA9XG4gIEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBsYXN0IGRlY2xhcmVkIGFnZW50ICVhLyolaSovJWFcIlxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAocmF3X2ZpbmRfdHkgdHlzIHgpIHggRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgICAgIFwiIGlzIG5vdCBsaW5rZWQgdG8gaXRzIGNvbm5lY3RlZCBjb21wb25lbnQuXCIpKVxuXG5sZXQgaWRlbnRpdHlfaW5qZWN0aW9uIGNjID1cbiAgUmVuYW1pbmcuaWRlbnRpdHlcbiAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIGNjLm5vZGVzX2J5X3R5cGUpXG5cbigqKiBwaWNrIGEgcm9vdCBpbiB0aGUgQ0MuIEFueSByb290IHdvcmtzLlxuICAgIEluIHRoaXMgY2FzZSBwaWNrIHRoZSBmaXJzdCBub2RlIG9mIHNtYWxsZXN0IHR5cGUgKilcbmxldCByYXdfZmluZF9yb290IG5vZGVzX2J5X3R5cGUgPVxuICBsZXQgcmVjIGF1eCB0eSA9XG4gICAgaWYgdHkgPSBBcnJheS5sZW5ndGggbm9kZXNfYnlfdHlwZSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBub2Rlc19ieV90eXBlLih0eSkgd2l0aFxuICAgICAgfCBbXSAtPiBhdXggKHN1Y2MgdHkpXG4gICAgICB8IGggOjogXyAtPiBTb21lIChoLCB0eSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCBmaW5kX3Jvb3QgY2MgPSByYXdfZmluZF9yb290IGNjLm5vZGVzX2J5X3R5cGVcblxubGV0IHdlaWdodCBjYyA9XG4gIGxldCBsaW5rcywgZG91YmxlID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChpLCBzKSAobCwgZCkgLT5cbiAgICAgICAgICAgIGlmIGkgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgKCBzdWNjXG4gICAgICAgICAgICAgICAgICAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBzdWNjIGxcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IEZyZWUgdGhlblxuICAgICAgICAgICAgICAgICAgc3VjYyBkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZCApXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggKGlmIHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbCksXG4gICAgICAgICAgICAgICAgZCApKSlcbiAgICAgIGNjLm5vZGVzICgwLCAwKVxuICBpblxuICBsaW5rcyAtIChkb3VibGUgLyAyKVxuXG5sZXQgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgP3Bvc3NpYmlsaXRpZXMgfnN0cmljdCByb290MSBjYzEgcm9vdDIgY2MyID1cbiAgbGV0IHRpY2sgeCA9XG4gICAgbWF0Y2ggcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHggIXNcbiAgaW5cbiAgbGV0IHJlYyBhdXggYXRfbGVhc3Rfb25lX2VkZ2UgcmVuYW1lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiBhdF9sZWFzdF9vbmVfZWRnZSB0aGVuXG4gICAgICAgIFNvbWUgcmVuYW1lLCBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmUsIE5vbmVcbiAgICB8ICgobywgcCkgYXMgcGFpcikgOjogdG9kb3MgLT5cbiAgICAgIGxldCAoKSA9IHRpY2sgcGFpciBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgICAoZnVuIGkgYyAobHgsIGl4KSAobHksIGl5KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBjXG4gICAgICAgICAgICAgfCBTb21lIChvbmVfZWRnZSwgdG9kbywgcmVuKSwgXyAtPlxuICAgICAgICAgICAgICAgaWYgKChub3Qgc3RyaWN0KSAmJiAoaXggPSAtMSB8fCBpeSA9IC0xKSkgfHwgaXggPSBpeSB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMaW5rIF8sIEZyZWUgfCBGcmVlLCBMaW5rIF8gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlIHwgRnJlZSwgVW5TcGVjIHwgTGluayBfLCBVblNwZWMgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgc3RyaWN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBTb21lIChvbmVfZWRnZSB8fCAoaXggPD4gLTEgJiYgaXggPSBpeSksIHRvZG8sIHJlbiksIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IEZyZWUsIEZyZWUgLT4gU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IExpbmsgKG4xLCBzMSksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzMSA9IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBpZiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZW4gbjEgPSBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX3R5IGNjMSBuMSA9IGZpbmRfdHkgY2MyIG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgKHRydWUsIChuMSwgbjIpIDo6IHRvZG8sIHInKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIHRydWUpKVxuICAgICAgICAgICAoU29tZSAoYXRfbGVhc3Rfb25lX2VkZ2UsIHRvZG9zLCByZW5hbWUpLCBOb25lKVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwIGNjMi5ub2RlcylcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG4gICAgICB8IFNvbWUgKG9uZV9lZGdlcycsIHRvZG9zJywgcmVuJyksIF8gLT4gYXV4IG9uZV9lZGdlcycgcmVuJyB0b2RvcycpXG4gIGluXG4gIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSByb290MSByb290MiAoUmVuYW1pbmcuZW1wdHkgKCkpIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgciAtPlxuICAgIGxldCBhX3NpbmdsZV9hZ2VudCA9XG4gICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICB0cnVlXG4gICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MSBjYzEubm9kZXMpXG4gICAgICB8fCBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICAgICB0cnVlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MiBjYzIubm9kZXMpXG4gICAgaW5cbiAgICBhdXggYV9zaW5nbGVfYWdlbnQgciBbIHJvb3QxLCByb290MiBdXG5cbigqKiBAcmV0dXJuIGluamVjdGlvbiBmcm9tIGEgdG8gYiAqKVxubGV0IGVxdWFsIH5kZWJ1Z19tb2RlIGEgYiA9XG4gIG1hdGNoXG4gICAgVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBhLm5vZGVzX2J5X3R5cGUpXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBiLm5vZGVzX2J5X3R5cGUpXG4gIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChbXSwgYWdzKSAtPlxuICAgIGlmIGFncyA9IFtdIHRoZW5cbiAgICAgIFNvbWUgKFJlbmFtaW5nLmVtcHR5ICgpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPlxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gYm9vbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmVuYW1lLCBfID0gYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGgxIGEgYWcgYiBpblxuICAgICAgICAgIHJlbmFtZSlcbiAgICAgIE5vbmUgYWdzXG5cbmxldCBhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGEgPVxuICBtYXRjaFxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeCAtPiBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhY2MgKExpc3QubGVuZ3RoIHgsIHgpKVxuICAgICAgKDAsIFtdKSBhLm5vZGVzX2J5X3R5cGVcbiAgd2l0aFxuICB8IF8sIFtdIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IF8sIChoIDo6IF8gYXMgbCkgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgYWcgLT5cbiAgICAgICAgbWF0Y2ggYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGggYSBhZyBhIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGxcblxubGV0IHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgIChmdW4geCBhY2MgbGEgbGIgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgeCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIGIgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKSBhY2MgbGEpXG4gICAgICAgICAgYWNjIGxiKVxuICAgIE1vZHMuSW50MlNldC5lbXB0eVxuXG5sZXQgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgYSBiID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBhLm5vZGVzX2J5X3R5cGUgYi5ub2Rlc19ieV90eXBlKVxuICBpblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5wb3NzaWJpbGl0aWVzIH5zdHJpY3Q6ZmFsc2UgeCBhIHkgYlxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBmb3Jfb25lX3Jvb3QgYWNjXG4gICAgICB8IFNvbWUgciwgXyAtPiBmb3Jfb25lX3Jvb3QgKHIgOjogYWNjKSlcbiAgaW5cbiAgZm9yX29uZV9yb290IFtdXG5cbigqdHVybnMgYSBjYyBpbnRvIGEgcGF0aCg6bGlzdCkgaW4gdGhlIGRvbWFpbiopXG5sZXQgcmF3X3RvX25hdmlnYXRpb24gKGZ1bGwgOiBib29sKSBub2Rlc19ieV90eXBlIG5vZGVzID1cbiAgbGV0IHJlYyBidWlsZF9mb3IgKGZpcnN0LCBvdXQpIGRvbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBvdXRcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGZpcnN0Jywgb3V0JywgdG9kbyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChmaXJzdCwgYW5zLCByZSkgYXMgYWNjKSAobCwgcykgLT5cbiAgICAgICAgICAgIGxldCAoKGZpcnN0JywgYW5zJywgXykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiAoZnVsbCB8fCBmaXJzdCkgJiYgcyA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBzIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucyxcbiAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgIGlmIGZ1bGwgfHwgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm90aGluZyApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgfCBMaW5rIChuLCBsKSAtPlxuICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSBuIGRvbiB8fCAobiA9IGggJiYgaSA+IGwpIHRoZW5cbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2UgaWYgbiA9IGggfHwgTGlzdC5tZW0gbiByZSB0aGVuXG4gICAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgbCkgKVxuICAgICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICggKCAoaWYgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGVcbiAgICAgICAgICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5GcmVzaCAobiwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBuKSwgbCkgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zJyxcbiAgICAgICAgICAgICAgICAgIG4gOjogcmUgKSlcbiAgICAgICAgICAoZmlyc3QsIG91dCwgdClcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaCBub2RlcylcbiAgICAgIGluXG4gICAgICBidWlsZF9mb3IgKGZpcnN0Jywgb3V0JykgKGggOjogZG9uKSB0b2RvXG4gIGluXG4gIG1hdGNoIHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSB3aXRoXG4gIHwgTm9uZSAtPiBbXSAoKmVtcHR5IHBhdGggZm9yIHgwKilcbiAgfCBTb21lICh4LCBfKSAtPlxuICAgICgqKGFnX3NvcnQsYWdfaWQpKilcbiAgICBidWlsZF9mb3IgKHRydWUsIFtdKSAoKndpcCopIFtdICgqYWxyZWFkeV9kb25lKikgWyB4IF1cbigqdG9kbyopXG5cbmxldCByZWMgc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHIgPSBmdW5jdGlvblxuICB8IFtdLCBfIC0+IHJcbiAgfCBfIDo6IF8sIFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh4IDo6IHEgYXMgbCksIHkgOjogcScgLT5cbiAgICBpZiB4ID0geSB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSB4IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChxLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGZzdHMsIGxzdCA9IExpc3RfdXRpbC5wb3BfbGFzdCBsIGluXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbHN0IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChmc3RzLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApXG5cbmxldCBtaW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSBkc3RfbmJ0IHJlZl9uYnQgPVxuICBsZXQgcmUgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biB0eSByIGlkcyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciAoaWRzLCByZWZfbmJ0Lih0eSkpKVxuICAgIHJlIGRzdF9uYnRcblxubGV0IG1pbmltaXplIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IGNhbmRfbm9kZXMgcmVmX25idCA9XG4gIGxldCByZSA9IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IHJlZl9uYnQgaW5cbiAgbGV0IHJlX2ltZyA9IFJlbmFtaW5nLmltYWdlIHJlIGluXG4gIGxldCBub2Rlc19ieV90eXBlID1cbiAgICBBcnJheS5tYXAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludFNldC5tZW0gYSByZV9pbWcpKSByZWZfbmJ0XG4gIGluXG4gIGxldCBub2RlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBpZCBzaXRlcyBhY2MgLT5cbiAgICAgICAgbGV0IHNpdGVzJyA9XG4gICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgaSAtPiBMaW5rIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBuLCBzKSwgaVxuICAgICAgICAgICAgICB8ICgoVW5TcGVjIHwgRnJlZSksIF8pIGFzIHggLT4geClcbiAgICAgICAgICAgIHNpdGVzXG4gICAgICAgIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmUgaWQpIHNpdGVzJyBhY2MpXG4gICAgICBjYW5kX25vZGVzIE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbigqIHJldHVybnMgYSBsaXN0IG9mIGNjIHdoZXJlIGVhY2ggY2MgaXMgaW5jbHVkZWQgaW4gY2MxKilcbmxldCBpbmZzIH5kZWJ1Z19tb2RlIHNpZ3MgY2MxIGNjMiA9XG4gIGxldCBwb3NzaWJpbGl0aWVzID1cbiAgICByZWYgKHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgY2MxLm5vZGVzX2J5X3R5cGUgY2MyLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgYXV4IHJlbmFtZSBub2RlcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBub2Rlc1xuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gcG9zc2liaWxpdGllcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHBhaXIgIXBvc3NpYmlsaXRpZXMgaW5cbiAgICAgIGxldCBsbmsxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMgaW5cbiAgICAgIGxldCAodG9kb3MnLCByZW4nKSwgb3V0bCA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgICAgICAgKGZ1biBrICgodG9kbywgcmVuKSBhcyBhY2MpIChseSwgaXkpIC0+XG4gICAgICAgICAgICBsZXQgbHgsIGl4ID0gbG5rMS4oaykgaW5cbiAgICAgICAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAgICAgICB8IExpbmsgXywgRnJlZVxuICAgICAgICAgICAgfCBGcmVlLCBMaW5rIF9cbiAgICAgICAgICAgIHwgTGluayBfLCBVblNwZWNcbiAgICAgICAgICAgIHwgVW5TcGVjLCBMaW5rIF9cbiAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIEZyZWUsXG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICB8IChMaW5rIChuMSwgczEpIGFzIHgpLCBMaW5rIChuMiwgczIpIC0+XG4gICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICggKGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHInIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICggKChuMSwgbjIpIDo6IHRvZG8sIHInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAtMSApICkpXG4gICAgICAgICAgKHRvZG9zLCByZW5hbWUpXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5LmZvbGRfbGVmdCAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgbCA9IFVuU3BlYyAmJiBpIDwgMCkgdHJ1ZSBvdXRsXG4gICAgICB0aGVuXG4gICAgICAgIGF1eCByZW4nIG5vZGVzIHRvZG9zJ1xuICAgICAgZWxzZVxuICAgICAgICBhdXggcmVuJyAoTW9kcy5JbnRNYXAuYWRkIG8gb3V0bCBub2RlcykgdG9kb3MnXG4gIGluXG5cbiAgbGV0IHJlYyBmb3Jfb25lX3Jvb3QgYWNjID1cbiAgICBtYXRjaCBNb2RzLkludDJTZXQuY2hvb3NlICFwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIChyb290MSwgcm9vdDIpIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgbGV0IG5vZGVzID0gYXV4IHIgTW9kcy5JbnRNYXAuZW1wdHkgWyByb290MSwgcm9vdDIgXSBpblxuICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgbm9kZXMgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTW9kcy5JbnRNYXAubWVtIGEgbm9kZXMpKVxuICAgICAgICAgICAgICAgIGNjMS5ub2Rlc19ieV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWluaW1pemUgfmRlYnVnX21vZGUgbm9kZXNfYnlfdHlwZSBub2RlcyBjYzEubm9kZXNfYnlfdHlwZSA6OiBhY2NcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGZvcl9vbmVfcm9vdCBhY2MnKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCogcmVuYW1pbmcgaXMgYSB0b3RhbCBtb3JwaGlzbSBmcm9tIGNjMScgdG8gY2MyOyBjYzEnIGlzIGluY2x1ZGVkIGluIGNjMSAqKVxubGV0IGludGVyc2VjdGlvbiByZW5hbWluZyBjYzEgY2MyID1cbiAgbGV0IG5vZGVzLCBpbWFnZSA9XG4gICAgUmVuYW1pbmcuZm9sZFxuICAgICAgKGZ1biBpIGogKChhY2NuLCBsKSBhcyBhY2MpIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2MxLm5vZGVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgbm9kZXMxIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogY2MyLm5vZGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIG5vZGVzMiAtPlxuICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgICAgICAoZnVuIGsgKGwyLCBpMikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsMSwgaTEgPSBub2RlczEuKGspIGluXG4gICAgICAgICAgICAgICAgICAoIChpZiBsMSA9IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIFVuU3BlY1xuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBsMiksXG4gICAgICAgICAgICAgICAgICAgIGlmIGkxID0gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpMiApKVxuICAgICAgICAgICAgICAgIG5vZGVzMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBqIG91dCBhY2NuLCBqIDo6IGwpKVxuICAgICAgcmVuYW1pbmcgKE1vZHMuSW50TWFwLmVtcHR5LCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IExpc3QubWVtIGEgaW1hZ2UpKSBjYzIubm9kZXNfYnlfdHlwZVxuICBpblxuICB7XG4gICAgbm9kZXNfYnlfdHlwZTtcbiAgICBub2RlcztcbiAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgfVxuXG5sZXQgcmVjIGNvdW50ZXJfdmFsdWUgbm9kZXMgKG5pZCwgc2lkKSBjb3VudCA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIG5pZCBub2RlcyB3aXRoXG4gIHwgTm9uZSAtPiBjb3VudFxuICB8IFNvbWUgYWcgLT5cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGlkIGFjYyAoZWwsIF8pIC0+XG4gICAgICAgIGlmIGlkID0gc2lkIHRoZW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgIHwgVW5TcGVjIHwgRnJlZSAtPiBhY2NcbiAgICAgICAgICB8IExpbmsgKGRuLCBkaSkgLT4gY291bnRlcl92YWx1ZSBub2RlcyAoZG4sIGRpKSAoYWNjICsgMSlcbiAgICAgICAgKSlcbiAgICAgIGNvdW50IGFnXG5cbmxldCBjb3VudGVyX3ZhbHVlX2NjIGNjIChuaWQsIHNpZCkgY291bnQgPVxuICBsZXQgbm9kZXMgPSBjYy5ub2RlcyBpblxuICBjb3VudGVyX3ZhbHVlIG5vZGVzIChuaWQsIHNpZCkgY291bnRcblxubGV0IGRvdGNvbW1hIGRvdG5ldCA9XG4gIGlmIGRvdG5ldCB0aGVuXG4gICAgZnVuIGZtdCAtPlxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsXCJcbiAgZWxzZVxuICAgIFBwLnNwYWNlXG5cbmxldCBwcmludF9jYyB+bm9Db3VudGVycyA/KGRvdG5ldCA9IGZhbHNlKSA/KGZ1bGxfc3BlY2llcyA9IGZhbHNlKSA/c2lncyA/Y2NfaWRcbiAgICB+d2l0aF9pZCBmIGNjID1cbiAgbGV0IHByaW50X2ludGYgKChhZ19pLCBfKSBhcyBhZykgbGlua19pZHMgbmVpZ2ggPVxuICAgIHNuZFxuICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgIChmdW4gcCAobm90X2VtcHR5LCAoKGZyZWUsIGxpbmtfaWRzKSBhcyBvdXQpKSAoZWwsIHN0KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlblxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWFcIlxuICAgICAgICAgICAgICAgICAoaWYgbm90X2VtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZG90Y29tbWEgZG90bmV0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgcClcbiAgICAgICAgICAgICAgICAgc3RcbiAgICAgICAgICAgICBlbHNlIGlmIGVsIDw+IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBkb3Rjb21tYSBkb3RuZXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnKVxuICAgICAgICAgICAgICAgICBwXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgICAgICAgfCBVblNwZWMgLT5cbiAgICAgICAgICAgICBpZiBzdCA+PSAwIHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0ICgpID0gaWYgZnVsbF9zcGVjaWVzIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWy5dXCIgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgbm90X2VtcHR5LCBvdXRcbiAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiWy5dXCIgaW5cbiAgICAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgICAgfCBMaW5rIChkc3RfYSwgZHN0X3ApIC0+XG4gICAgICAgICAgICAgbGV0IGRzdF90eSA9IGZpbmRfdHkgY2MgZHN0X2EgaW5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgZHN0X3R5ICYmIG5vdCBub0NvdW50ZXJzXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfdmFsdWUgY2Mubm9kZXMgKGRzdF9hLCBkc3RfcCkgMCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIns9JWR9XCIgY291bnRlciBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXQnXG4gICAgICAgICAgICAgKSlcbiAgICAgICAgIChmYWxzZSwgbGlua19pZHMpIG5laWdoKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNjX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2NfaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8qY2MlaSovQCBcIiBjY19pZFxuICBpblxuICBsZXQgXywgXyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biB4IGVsIChub3RfZW1wdHksIGxpbmtfaWRzKSAtPlxuICAgICAgICBsZXQgYWdfeCA9IHgsIGZpbmRfdHkgY2MgeCBpblxuICAgICAgICBpZlxuICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgKHNuZCBhZ194KSkpIHx8IG5vQ291bnRlcnNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBbPGg+JWEoXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGlmIGRvdG5ldCB0aGVuXG4gICAgICAgICAgICAgICAgICAgZnVuIGZtdCAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIuXCJcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIFBwLmNvbW1hXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiKUBdXCIgaW5cbiAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm90X2VtcHR5LCBsaW5rX2lkcylcbiAgICAgIGNjLm5vZGVzXG4gICAgICAoZmFsc2UsICgxLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuICBpblxuICAoKVxuXG5sZXQgcHJpbnRfY2NfYXNfaWQgc2lncyBmIGNjID1cbiAgbGV0IHByaW50X2ludGYgKChhZ19pLCBfKSBhcyBhZykgbGlua19pZHMgbmVpZ2ggPVxuICAgIHNuZFxuICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgIChmdW4gcCAobm90X2VtcHR5LCAoKGZyZWUsIGxpbmtfaWRzKSBhcyBvdXQpKSAoZWwsIHN0KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIGVsIDw+IFVuU3BlYyB8fCBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlIH5zaWdzIGFnKVxuICAgICAgICAgICAgICAgICBwXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifiVhXCIgKEFnZW50LnByaW50X3Jhd19pbnRlcm5hbCB+c2lncyBhZyBwKSBzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+IG5vdF9lbXB0eSB8fCBzdCA+PSAwLCBvdXRcbiAgICAgICAgICAgfCBGcmVlIC0+IHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgZHN0X3R5IHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX3ZhbHVlIGNjLm5vZGVzIChkc3RfYSwgZHN0X3ApIDAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ+KyVkXCIgY291bnRlciBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmIG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYV9fXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfX1wiXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgfnNpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCB0b195b2pzb24gY2MgPVxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNjLm5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBtIC0+XG4gICAgbGV0IHMgPSBzdWNjIG0gaW5cbiAgICBsZXQgc29ydHMgPSBBcnJheS5tYWtlIHMgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHR5IC0+IExpc3QuaXRlciAoZnVuIGlkIC0+IHNvcnRzLihpZCkgPC0gU29tZSB0eSkpXG4gICAgICAgIGNjLm5vZGVzX2J5X3R5cGVcbiAgICBpblxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwic29ydHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBzb3J0cyBbXSkgKTtcbiAgICAgICAgKCBcIm5vZGVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgKGZ1biBhY2MgaSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYy5ub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcykgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGcmVlIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGluayAobiwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJub2RlXCIsIGBJbnQgbjsgXCJzaXRlXCIsIGBJbnQgcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVuU3BlYyAtPiBgQm9vbCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcyA8IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgYSBbXSkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIFtdIHMpICk7XG4gICAgICBdXG5cbmxldCBvZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInNvcnRzXCIsIGBMaXN0IHMpOyAoXCJub2Rlc1wiLCBgTGlzdCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibm9kZXNcIiwgYExpc3Qgbik7IChcInNvcnRzXCIsIGBMaXN0IHMpIF0gLT5cbiAgICBsZXQgXywgbm9kZXMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoaSwgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgYE51bGwgLT4gc3VjYyBpLCBhY2NcbiAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICggc3VjYyBpLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBCb29sIGI7IGBOdWxsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAtMSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBgQXNzb2MgWyAoXCJub2RlXCIsIGBJbnQgbik7IChcInNpdGVcIiwgYEludCBzKSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBBc3NvYyBbIChcInNpdGVcIiwgYEludCBzKTsgKFwibm9kZVwiLCBgSW50IG4pIF0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBOdWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIC0xXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYEludCBzIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYEludCBzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIExpbmsgKG4sIHMpLCBzdFxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgICBhY2MgKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG5vZGUgbGlua3NcIiwgeCkpKVxuICAgICAgICAoMCwgTW9kcy5JbnRNYXAuZW1wdHkpIG5cbiAgICBpblxuICAgIGxldCBub2Rlc19ieV90eXBlID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lnX2RlY2wpIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgYEludCB0eSAtPiBub2Rlc19ieV90eXBlLih0eSkgPC0gaSA6OiBub2Rlc19ieV90eXBlLih0eSlcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3Jvbmcgbm9kZSB0eXBlXCIsIHgpKSlcbiAgICAgICAgc1xuICAgIGluXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfVxuICB8IGBOdWxsIC0+IGVtcHR5X2NjIHNpZ19kZWNsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuXCIsIHgpKVxuXG5sZXQgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSByZXNlcnZlZF9pZHMgZnJlZV9pZCBpbmoxX3RvXzIgY2MxIGNjMiA9XG4gIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoxX3RvXzIgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gaWQgLT4gbm90IChNb2RzLkludFNldC5tZW0gaWQgaW1nKSkpXG4gICAgICByZXNlcnZlZF9pZHNcbiAgaW5cbiAgbGV0IHVzZWRfaWRzID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChMaXN0X3V0aWwubWFwX29wdGlvbiAoZnVuIGlkIC0+XG4gICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBpZCBpbmoxX3RvXzIgdGhlblxuICAgICAgICAgICAgIFNvbWUgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajFfdG9fMiBpZClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpKVxuICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pbl9jYzEgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKExpc3QubWVtIHggY2MxLm5vZGVzX2J5X3R5cGUuKGkpKSkgbClcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgZnJlZV9pZF9mb3JfY2MxID0gcmVmIGZyZWVfaWQgaW5cblxuICBsZXQgZ2V0X2NjMiBqICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGogaW5qMiB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyIGosIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MyIGogaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICBsZXQgbyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pbl9jYzEuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgeCA9ICFmcmVlX2lkX2Zvcl9jYzEgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIHhcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaW5fY2MxLih0eSkgPC0gdCBpblxuICAgICAgICAgIGhcbiAgICAgIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbyBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBqIGltZyBpbmoyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgKHRvZG9zMSwgKGosIGltZykgOjogdG9kb3MyKSApIClcbiAgICApXG4gIGluXG5cbiAgbGV0IGdldF9jYzEgaSAoKChpbmoxLCBmcmVlX2lkKSwgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSkgYXMgcGFjaykgPVxuICAgIGlmIFJlbmFtaW5nLm1lbSBpIGluajEgdGhlblxuICAgICAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMSBpLCBwYWNrXG4gICAgZWxzZSAoXG4gICAgICBsZXQgdHkgPSBmaW5kX3R5IGNjMSBpIGluXG4gICAgICBsZXQgaW1nLCBmcmVlX2lkJyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pZHMuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT4gZnJlZV9pZCwgc3VjYyBmcmVlX2lkXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0ICgpID0gYXZhaWxhYmxlX2lkcy4odHkpIDwtIHQgaW5cbiAgICAgICAgICBoLCBmcmVlX2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gdXNlZF9pZHMuKHR5KSA8LSBpbWcgOjogdXNlZF9pZHMuKHR5KSBpblxuICAgICAgKCBpbWcsXG4gICAgICAgICggKCAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgaW1nIGluajEgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgICBmcmVlX2lkJyApLFxuICAgICAgICAgIGluajIsXG4gICAgICAgICAgKChpLCBpbWcpIDo6IHRvZG9zMSwgdG9kb3MyKSApIClcbiAgICApXG4gIGluXG4gIGxldCBwYWNrJywgbm9kZXMgPVxuICAgIGxldCByZWMgZ2x1ZSBwYWNrIGluajIgbm9kZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSwgW10gLT4gcGFjaywgbm9kZXNcbiAgICAgIHwgW10sIChpLCBqKSA6OiB0b2RvczIgLT5cbiAgICAgICAgbGV0IG5vZGVzaSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIGkgY2MyLm5vZGVzIGluXG4gICAgICAgIGxldCBub2Rlc28gPSBBcnJheS5jb3B5IG5vZGVzaSBpblxuICAgICAgICBsZXQgcGFjaycsIGluajInLCB0b2RvcycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgIGFjYycpXG4gICAgICAgICAgICAocGFjaywgaW5qMiwgKFtdLCB0b2RvczIpKVxuICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgICB8IChpLCBqKSA6OiB0b2RvczEsIHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzEubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgICAgKHBhY2ssIGluajIsICh0b2RvczEsIHRvZG9zMikpXG4gICAgICAgICAgICAgIG5vZGVzaVxuICAgICAgICAgIHwgU29tZSBub2Rlc2ogLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRnJlZSwgXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gRnJlZSwgc3RqIGluXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCBzdGogPSBub2Rlc2ouKGspIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc3RvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RpIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggbm9kZXNqLihrKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gVW5TcGVjLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IEZyZWUsIHN0aiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIG5vZGVzby4oaykgPC1cbiAgICAgICAgICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aSApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHN0aiA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBub2Rlc28uKGspIDwtIExpbmsgKG4nLCBzKSwgc3RvIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgaW5cbiAgICBnbHVlIChpbmoxX3RvXzIsIGZyZWVfaWQpXG4gICAgICAoUmVuYW1pbmcuaWRlbnRpdHkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIGltZykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgKFJlbmFtaW5nLnRvX2xpc3QgaW5qMV90b18yLCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgKExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlKSB1c2VkX2lkcyBpblxuICBsZXQgKCkgPVxuICAgIEFycmF5Lml0ZXJpXG4gICAgICAoZnVuIGkgeCAtPlxuICAgICAgICByZXNlcnZlZF9pZHMuKGkpIDwtXG4gICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBub2Rlc19ieV90eXBlLihpKSB4KVxuICAgICAgYXZhaWxhYmxlX2lkc1xuICBpblxuICAoIHBhY2snLFxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICAgIH0gKVxuXG5sZXQgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kX3RvX28gY2NfbyBjY19kID1cbiAgbGV0IHJlYyBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIG5leHRfcm91bmQgPSBbXSB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZWNvZ24gaW50ZXJuXG4gICAgICBlbHNlXG4gICAgICAgIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIFtdIHJlY29nbiBpbnRlcm4gbmV4dF9yb3VuZFxuICAgIHwgKCgoaSwgaiwgcyksIChuJywgcycpKSBhcyBoKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0IG4gPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfZF90b19vIG4nIGluXG4gICAgICAobWF0Y2ggTW9kcy5JbnRTZXQubWVtIGogZGlzY292ZXJlZCwgTW9kcy5JbnRTZXQubWVtIG4nIGRpc2NvdmVyZWQgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgKGggOjogbmV4dF9yb3VuZCkgcmVjb2duIGludGVybiB0b2Rvc1xuICAgICAgfCB0cnVlLCB0cnVlIC0+XG4gICAgICAgIGxldCBpbnRlcm4nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgcycpIClcbiAgICAgICAgICA6OiBpbnRlcm5cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgbmV4dF9yb3VuZCByZWNvZ24gaW50ZXJuJyB0b2Rvc1xuICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChuLCBmaW5kX3R5IGNjX2QgbicpLCBzJykgKVxuICAgICAgICAgIDo6IHJlY29nblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3NcbiAgICAgICAgICAoTW9kcy5JbnRTZXQuYWRkIG4nIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2Rvc1xuICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoaSwgZmluZF90eSBjY19kIGopLCBzKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgaiBkaXNjb3ZlcmVkKVxuICAgICAgICAgIG5leHRfcm91bmQgcmVjb2duJyBpbnRlcm4gdG9kb3MpXG4gIGluXG4gIGxldCBkaXNjb3YsIGFsbF9saW5rcywgaW50ZXJuID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGogaSAoZGlzYywgbGlua3MsIGludGVyKSAtPlxuICAgICAgICBsZXQgbm9kZXNkID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaiBjY19kLm5vZGVzIGluXG4gICAgICAgIGxldCBkaXNjJywgbm9kZXNvID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjX28ubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkaXNjLCBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggbm9kZXNkKSAoVW5TcGVjLCAtMSlcbiAgICAgICAgICB8IFNvbWUgbm9kZXNvIC0+IE1vZHMuSW50U2V0LmFkZCBqIGRpc2MsIG5vZGVzb1xuICAgICAgICBpblxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgIChmdW4gcyAoKGRpcywgbGksIGludCkgYXMgYWNjKSAob2wsIG9zKSAoZGwsIGRzKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgXywgaW50JykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiBvcyA9IC0xICYmIGRzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgZHMpIDo6IGludFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG9sIDw+IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBkbCB3aXRoXG4gICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGFjYydcbiAgICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgICAgKCBkaXMsXG4gICAgICAgICAgICAgICAgICBsaSxcbiAgICAgICAgICAgICAgICAgICgoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IGludCcgKVxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMnKSAtPlxuICAgICAgICAgICAgICAgIGlmIG4gPiAoKmxhKikgaiB8fCAobiA9IGogJiYgcyA+IHMnKSB0aGVuXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZGlzLCAoKGksIGosIHMpLCAobiwgcycpKSA6OiBsaSwgaW50J1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoZGlzYycsIGxpbmtzLCBpbnRlcikgbm9kZXNvIG5vZGVzZClcbiAgICAgIGlual9kX3RvX29cbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgW10sIFtdKVxuICBpblxuICBoYW5kbGVfbGlua3MgZGlzY292IFtdIFtdIGludGVybiBhbGxfbGlua3NcblxubW9kdWxlIEVudiA6IHNpZ1xuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgdmFsIGNvbnRlbnQgOiBwb2ludCAtPiBjY1xuICB2YWwgcm9vdHMgOiBwb2ludCAtPiAoaW50IGxpc3QgKCppZHMqKSAqIGludCAoKnR5KikpIG9wdGlvblxuICB2YWwgZGVwcyA6IHBvaW50IC0+IE9wZXJhdG9yLkRlcFNldC50XG4gIHZhbCBzb25zIDogcG9pbnQgLT4gdHJhbnNpdGlvbiBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICB2YWwgZ2V0IDogdCAtPiBpZCAtPiBwb2ludFxuICB2YWwgZ2V0X3NpbmdsZV9hZ2VudCA6IGludCAtPiB0IC0+IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb25cbiAgdmFsIHRvX25hdmlnYXRpb24gOiB0IC0+IGlkIC0+IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50XG5cbiAgdmFsIGdldF9lbGVtZW50YXJ5IDpcbiAgICBkZWJ1Z19tb2RlOmJvb2wgLT5cbiAgICB0IC0+XG4gICAgQWdlbnQudCAtPlxuICAgIGludCAtPlxuICAgIE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5hcnJvdyAtPlxuICAgIChpZCAqIHBvaW50ICogUmVuYW1pbmcudCkgb3B0aW9uXG5cbiAgdmFsIHNpZ25hdHVyZXMgOiB0IC0+IFNpZ25hdHVyZS5zXG4gIHZhbCBuZXdfb2JzX21hcCA6IHQgLT4gKGlkIC0+ICdhKSAtPiAnYSBPYnNNYXAudFxuICB2YWwgcHJpbnQgOiBub0NvdW50ZXJzOmJvb2wgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3lvanNvbiA6IHQgLT4gWW9qc29uLkJhc2ljLnRcbiAgdmFsIG9mX3lvanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgcCA9IHAuY29udGVudFxuICBsZXQgcm9vdHMgcCA9IHAucm9vdHNcbiAgbGV0IGRlcHMgcCA9IHAuZGVwc1xuICBsZXQgc29ucyBwID0gcC5zb25zXG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICBsZXQgc2lnbmF0dXJlcyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgcHJpbnQgfm5vQ291bnRlcnMgZiBlbnYgPVxuICAgIGxldCBwcF9wb2ludCBwX2lkIGYgcCA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+QFs8aD4lYUBdQCAldC0+IEBbKCVhKUBdQF1cIlxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczplbnYuc2lnX2RlY2wgfmNjX2lkOnBfaWQgfndpdGhfaWQ6dHJ1ZSB4KVxuICAgICAgICBwLmNvbnRlbnRcbiAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgaWYgcC5yb290cyA8PiBOb25lIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slYV1AXUAgXCJcbiAgICAgICAgICAgICAgKFBwLnNldCBPcGVyYXRvci5EZXBTZXQuZWxlbWVudHMgUHAuc3BhY2UgT3BlcmF0b3IucHJpbnRfcmV2X2RlcClcbiAgICAgICAgICAgICAgcC5kZXBzKVxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcyAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhKCVhKUAgJWlAXVwiXG4gICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5wcmludCBlbnYuc2lnX2RlY2wgKGZpbmRfdHkgcC5jb250ZW50KSlcbiAgICAgICAgICAgICAgIHMubmV4dCBSZW5hbWluZy5wcmludCBzLmluaiBzLmRzdCkpXG4gICAgICAgIHAuc29uc1xuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiIChQcC5hcnJheSBQcC5zcGFjZSBwcF9wb2ludCkgZW52LmRvbWFpblxuXG4gIGxldCBnZXRfc2luZ2xlX2FnZW50IHR5IGVudiA9IGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzLih0eSlcbiAgbGV0IGdldCBlbnYgY2NfaWQgPSBlbnYuZG9tYWluLihjY19pZClcblxuICBsZXQgdG9fbmF2aWdhdGlvbiBlbnYgaWQgPVxuICAgIGxldCBjYyA9IChnZXQgZW52IGlkKS5jb250ZW50IGluXG4gICAgcmF3X3RvX25hdmlnYXRpb24gdHJ1ZSBjYy5ub2Rlc19ieV90eXBlIGNjLm5vZGVzXG5cbiAgbGV0IHRyYW5zaXRpb25fdG9feW9qc29uIHQgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImRzdFwiLCBgSW50IHQuZHN0O1xuICAgICAgICBcImlualwiLCBSZW5hbWluZy50b195b2pzb24gdC5pbmo7XG4gICAgICAgIFwibmF2XCIsIE5hdmlnYXRpb24udG9feW9qc29uIHQubmV4dDtcbiAgICAgIF1cblxuICBsZXQgdHJhbnNpdGlvbl9vZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcikgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcikgXSAtPlxuICAgICAgeyBkc3Q7IGluaiA9IFJlbmFtaW5nLm9mX3lvanNvbiByOyBuZXh0ID0gTmF2aWdhdGlvbi5vZl95b2pzb24gbiB9XG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB0cmFuc2l0aW9uXCIsIHgpKVxuXG4gIGxldCBwb2ludF90b195b2pzb24gcCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29udGVudFwiLCB0b195b2pzb24gcC5jb250ZW50O1xuICAgICAgICAoIFwicm9vdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgIChmdW4gKGlkcywgdHkpIC0+XG4gICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgKExpc3QubWFwIEpzb25VdGlsLm9mX2ludCBpZHMpOyBgSW50IHR5IF0pXG4gICAgICAgICAgICBwLnJvb3RzICk7XG4gICAgICAgIFwiZGVwc1wiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIHAuZGVwcztcbiAgICAgICAgXCJzb25zXCIsIGBMaXN0IChMaXN0Lm1hcCB0cmFuc2l0aW9uX3RvX3lvanNvbiBwLnNvbnMpO1xuICAgICAgXVxuXG4gIGxldCBwb2ludF9vZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGNvbnRlbnQgPSBvZl95b2pzb24gc2lnX2RlY2wgKExpc3QuYXNzb2MgXCJjb250ZW50XCIgbCk7XG4gICAgICAgICAgIHJvb3RzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInJvb3RzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICAgfCBgTGlzdCBbIGBMaXN0IGlkczsgYEludCB0eSBdIC0+XG4gICAgICAgICAgICAgICBTb21lIChMaXN0Lm1hcCBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgaWRzLCB0eSlcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZGVwcyA9IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb24gKExpc3QuYXNzb2MgXCJkZXBzXCIgbCk7XG4gICAgICAgICAgIHNvbnMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic29uc1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCB0cmFuc2l0aW9uX29mX3lvanNvbiBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZG9tYWluIHBvaW50XCIsIHgpKVxuXG4gIGxldCB0b195b2pzb24gZW52ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJzaWduYXR1cmVzXCIsIFNpZ25hdHVyZS50b19qc29uIGVudi5zaWdfZGVjbDtcbiAgICAgICAgKCBcInNpbmdsZV9hZ2VudHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIChpZCwgX2RlcHMpIC0+IGBJbnQgaWQpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzIFtdKSApO1xuICAgICAgICAoIFwiZWxlbWVudGFyaWVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3QsIGQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3QgWyBOYXZpZ2F0aW9uLnN0ZXBfdG9feW9qc29uIHN0OyBgSW50IGQgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICB4IFtdKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuZWxlbWVudGFyaWVzIFtdKSApO1xuICAgICAgICAoIFwiZGFnXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IHBvaW50X3RvX3lvanNvbiB4IDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5kb21haW4gW10pICk7XG4gICAgICAgICggXCJpZF9ieV90eXBlXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IGBMaXN0IChMaXN0Lm1hcCAoZnVuIGkgLT4gYEludCBpKSB4KSA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuaWRfYnlfdHlwZSBbXSkgKTtcbiAgICAgICAgXCJtYXhfb2JzXCIsIGBJbnQgZW52Lm1heF9vYnM7XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIGxldCBzaWdfZGVjbCA9IFNpZ25hdHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwic2lnbmF0dXJlc1wiIGwpIGluXG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIHNpZ19kZWNsO1xuICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInNpbmdsZV9hZ2VudHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgSW50IGkgLT4gaSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBzaW5nbGVfYWdlbnRcIiwgeCkpKSlcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBlbGVtZW50YXJpZXMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyaWVzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIHM7IGBJbnQgZCBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLnN0ZXBfb2ZfeW9qc29uIHMsIGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZG9tYWluID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImRhZ1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAocG9pbnRfb2ZfeW9qc29uIHNpZ19kZWNsKSBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGlkX2J5X3R5cGUgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiaWRfYnlfdHlwZVwiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgbWF4X29icyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJtYXhfb2JzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgfVxuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgdXBkYXRlIGRvbWFpblwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKVxuXG4gIGxldCBuZXdfb2JzX21hcCBlbnYgZiA9IE1vZHMuRHluQXJyYXkuaW5pdCBlbnYubWF4X29icyBmXG5cbiAgbGV0IGdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiAoKF8sIHR5KSBhcyBub2RlKSBzIGFycm93ID1cbiAgICBsZXQgc2EgPSBkb21haW4uZWxlbWVudGFyaWVzLih0eSkgaW5cbiAgICBsZXQgcmVjIGZpbmRfZ29vZF9lZGdlID0gZnVuY3Rpb25cbiAgICAgICgqb25lIHNob3VsZCB1c2UgYSBoYXNoIGhlcmUqKVxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IChzdCwgY2NfaWQpIDo6IHRhaWwgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE5hdmlnYXRpb24uY29tcGF0aWJsZV9mcmVzaF9wb2ludCB+ZGVidWdfbW9kZSBzdCBub2RlIHMgYXJyb3dcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmRfZ29vZF9lZGdlIHRhaWxcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICBsZXQgZHN0ID0gZ2V0IGRvbWFpbiBjY19pZCBpblxuICAgICAgICAgIFNvbWUgKGNjX2lkLCBkc3QsIGluaicpKVxuICAgIGluXG4gICAgZmluZF9nb29kX2VkZ2Ugc2EuKHMpXG5lbmRcblxubGV0IHByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQgZiBpZCA9XG4gIG1hdGNoIGRvbWFpbiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIGxldCBjY19pZCA9XG4gICAgICBpZiB3aXRoX2lkIHRoZW5cbiAgICAgICAgU29tZSBpZFxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczooRW52LnNpZ25hdHVyZXMgZW52KSA/Y2NfaWQgfndpdGhfaWQgZlxuICAgICAgZW52LkVudi5kb21haW4uKGlkKS5FbnYuY29udGVudFxuXG5sZXQgZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQgfmRlYnVnX21vZGUgZG9tYWluIGFfaWQgYiA9XG4gIGxldCBhID0gZG9tYWluLkVudi5kb21haW4uKGFfaWQpLkVudi5jb250ZW50IGluXG4gIG1hdGNoIGZpbmRfcm9vdCBhIHdpdGhcbiAgfCBOb25lIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IFNvbWUgKGgsIHR5KSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OmZhbHNlIGggYSBhZyBiIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGIubm9kZXNfYnlfdHlwZS4odHkpXG5cbnR5cGUgcHJlcG9pbnQgPSB7XG4gIHBfaWQ6IGlkO1xuICBlbGVtZW50OiBjYztcbiAgZGVwZW5kaW5nOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xufVxuXG50eXBlIHdvcmsgPSB7XG4gIHNpZ3M6IFNpZ25hdHVyZS5zO1xuICBjY19lbnY6IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICByZXNlcnZlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIHVzZWRfaWQ6IGludCBsaXN0IGFycmF5O1xuICBmcmVlX2lkOiBpbnQ7XG4gIGNjX25vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgZGFuZ2xpbmc6IGludDsgKCogbm9kZV9pZCAqKVxufVxuXG5tb2R1bGUgUHJlRW52ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBzaWdfZGVjbDogU2lnbmF0dXJlLnM7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbmJfaWQ6IGludDtcbiAgICBkb21haW46IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICAgIG11dGFibGUgdXNlZF9ieV9hX2JlZ2luX25ldzogYm9vbDtcbiAgfVxuXG4gIHR5cGUgc3RhdCA9IHsgc3RhdF9ub2RlczogaW50OyBzdGF0X25hdl9zdGVwczogaW50IH1cblxuICBsZXQgZnJlc2ggc2lncyBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiA9XG4gICAgeyBzaWdfZGVjbCA9IHNpZ3M7IGlkX2J5X3R5cGU7IG5iX2lkOyBkb21haW47IHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSB9XG5cbiAgbGV0IGVtcHR5IHNpZ3MgPVxuICAgIGxldCBuYnQnID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgICBmcmVzaCBzaWdzIG5idCcgMSBNb2RzLkludE1hcC5lbXB0eVxuXG4gIGxldCBjaGVja192aXRhbGl0eSBlbnYgPSBhc3NlcnQgKGVudi51c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2UpXG5cbiAgbGV0IHRvX3dvcmsgZW52ID1cbiAgICBsZXQgKCkgPSBjaGVja192aXRhbGl0eSBlbnYgaW5cbiAgICBsZXQgKCkgPSBlbnYudXNlZF9ieV9hX2JlZ2luX25ldyA8LSB0cnVlIGluXG4gICAge1xuICAgICAgc2lncyA9IGVudi5zaWdfZGVjbDtcbiAgICAgIGNjX2VudiA9IGVudi5kb21haW47XG4gICAgICByZXNlcnZlZF9pZCA9IGVudi5pZF9ieV90eXBlO1xuICAgICAgdXNlZF9pZCA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuaWRfYnlfdHlwZSkgW107XG4gICAgICBmcmVlX2lkID0gZW52Lm5iX2lkO1xuICAgICAgY2Nfbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIGRhbmdsaW5nID0gMDtcbiAgICB9XG5cbiAgbGV0IHNpZ3MgZW52ID0gZW52LnNpZ19kZWNsXG5cbiAgbGV0IGVtcHR5X3BvaW50IHNpZ3MgPVxuICAgIHtcbiAgICAgIEVudi5jb250ZW50ID0gZW1wdHlfY2Mgc2lncztcbiAgICAgIEVudi5yb290cyA9IE5vbmU7XG4gICAgICBFbnYuZGVwcyA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eTtcbiAgICAgIEVudi5zb25zID0gW107XG4gICAgfVxuXG4gIGxldCBmaWxsX2VsZW0gc2lncyBib3R0b20gPVxuICAgIGxldCBlbGVtZW50YXJpZXMgPVxuICAgICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgc2lncykgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgaSkgW10pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHAuZWxlbWVudC5yZWNvZ25fbmF2IHdpdGhcbiAgICAgICAgICAgICAgfCBbXSB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBfKSwgXykgOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gOjogXyAtPiAoKVxuICAgICAgICAgICAgICB8IFsgKCgoTmF2aWdhdGlvbi5GcmVzaCAoXywgdHkxKSwgczEpLCBhcnIpIGFzIHN0ZXApIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgc2ExID0gZWxlbWVudGFyaWVzLih0eTEpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gc2ExLihzMSkgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMSkgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXJyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTIpLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIGlmIHR5MSA9IHR5MiAmJiBzMSA8PiBzMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNhMiA9IGVsZW1lbnRhcmllcy4odHkyKSBpblxuICAgICAgICAgICAgICAgICAgICBzYTIuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTIuKHMyKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgXywgczIpIC0+XG4gICAgICAgICAgICAgICAgICBzYTEuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMyKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vdGhpbmcgfCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgXyAtPiAoKSkpKVxuICAgICAgICBib3R0b21cbiAgICBpblxuICAgIGVsZW1lbnRhcmllc1xuXG4gIGxldCBwcmVzZW50X2luX2RzdCB+ZGVidWdfbW9kZSBkc3QgaW5qMmRzdCBuYXYgPVxuICAgIGxldCByZWMgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTb21lIGluaidcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkZyZXNoIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gRnJlZSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgc25kIG4uKHNpKSA9IGkgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZycsIHNpJykgKVxuICAgICAgICA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgZnN0IG4uKHNpKSA9IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcnLCBzaScpIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksXG4gICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKGFnJywgdHknKSwgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAobWF0Y2ggbi4oc2kpIHdpdGhcbiAgICAgICAgICB8IExpbmsgKGFnbCwgc2lsKSwgXyAtPlxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYWdsIGRzdC5ub2Rlc19ieV90eXBlLih0eScpICYmIHNpJyA9IHNpbCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGFnJyBhZ2wgaW5qJyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBpbmonIC0+IGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCAoRnJlZSB8IFVuU3BlYyksIF8gLT4gTm9uZSkpXG4gICAgaW5cbiAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qMmRzdCBuYXZcblxuICBsZXQgcmVjIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgIGluajJkc3QgcF9pZCA9XG4gICAgaWYgcF9pZCA9IGRzdF9pZCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9pbnQgPSBkb21haW4uKHBfaWQpIGluXG4gICAgICBsZXQgcmVjIGluc2VydF9uYXZfc29ucyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgKGlual9lMnN1cCwgXyksIHN1cCA9XG4gICAgICAgICAgICBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgaW5qMmRzdFxuICAgICAgICAgICAgICBwb2ludC5FbnYuY29udGVudCBkc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBlcXVhbCB+ZGVidWdfbW9kZSBzdXAgZHN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGlual9zdXAyZHN0IC0+XG4gICAgICAgICAgICBsZXQgaW5qX2RzdDJwID1cbiAgICAgICAgICAgICAgUmVuYW1pbmcuaW52ZXJzZVxuICAgICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGlual9lMnN1cCBpbmpfc3VwMmRzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbmF2ID1cbiAgICAgICAgICAgICAgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kc3QycCBwb2ludC5FbnYuY29udGVudFxuICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvaW50LkVudi5zb25zIDwtXG4gICAgICAgICAgICAgICAgeyBFbnYuZHN0ID0gZHN0X2lkOyBFbnYuaW5qID0gaW5qX2RzdDJwOyBFbnYubmV4dCA9IG5hdiB9XG4gICAgICAgICAgICAgICAgOjogcG9pbnQuRW52LnNvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lmxlbmd0aCBuYXYpXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IGguRW52Lm5leHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbnNlcnRfbmF2X3NvbnMgdFxuICAgICAgICAgIHwgU29tZSBpbmpfcCcyZHN0IC0+XG4gICAgICAgICAgICBpbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiBkc3RfaWQgZHN0XG4gICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGguRW52LmluaiBpbmpfcCcyZHN0KVxuICAgICAgICAgICAgICBoLkVudi5kc3QpXG4gICAgICBpblxuICAgICAgaW5zZXJ0X25hdl9zb25zIHBvaW50LkVudi5zb25zXG4gICAgKVxuXG4gIGxldCBhZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gZW52IHBfaWQgZWxlbWVudCA9XG4gICAgbGV0IHcgPSB3ZWlnaHQgZWxlbWVudCBpblxuICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggZWxlbWVudCBpblxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICBpZiB0b3BsZXZlbCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKCBMaXN0LnNvcnQgTW9kcy5pbnRfY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAoYXV0b21vcnBoaXNtcyB+ZGVidWdfbW9kZSBlbGVtZW50KSksXG4gICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICAoIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudDtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IG9yaWdpbjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgXSxcbiAgICAgICAgICBpZGVudGl0eV9pbmplY3Rpb24gZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBfaWQgKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIGVsZW1lbnQgaC5lbGVtZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMsIGQgPSBhdXggdCBpblxuICAgICAgICAgIGggOjogYSwgYiwgYywgZFxuICAgICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIGxldCByb290cyA9XG4gICAgICAgICAgICBpZiBoLnJvb3RzIDw+IE5vbmUgfHwgbm90IHRvcGxldmVsIHRoZW5cbiAgICAgICAgICAgICAgaC5yb290c1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChyaWQsIHJ0eSkgLT5cbiAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgcnR5IClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBwX2lkID0gaC5wX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gaC5lbGVtZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBhZGRfb3JpZ2luIGguZGVwZW5kaW5nIG9yaWdpbjtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6OiB0LFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIGguZWxlbWVudCxcbiAgICAgICAgICAgIGgucF9pZCApKVxuICAgIGluXG4gICAgbGV0IGVudl93ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgZW52IGluXG4gICAgbGV0IGVudl93X2gsIHIsIG91dCwgb3V0X2lkID1cbiAgICAgIGF1eCAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggZW52X3cpXG4gICAgaW5cbiAgICBNb2RzLkludE1hcC5hZGQgdyAoTW9kcy5JbnRNYXAuYWRkIGhhc2ggZW52X3dfaCBlbnZfdykgZW52LCByLCBvdXQsIG91dF9pZFxuXG4gIGxldCByZWMgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGxldmVsIDwgbWF4X2wgdGhlblxuICAgICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIChzdWNjIGxldmVsKSBhY2NcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpXG4gICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAoc3VjYyBsZXZlbCkgZG9tYWluKVxuICAgICAgICAgICAgIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBhY2NcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG5ld3MgPVxuICAgICAgICBtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgICAgfCBOb19zaGFyaW5nIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IE1heF9zaGFyaW5nIC0+IGluZnMgc2lncyB+ZGVidWdfbW9kZSB0aGlzLmVsZW1lbnQgaC5lbGVtZW50XG4gICAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyAtPlxuICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgKGZ1biByIC0+IGludGVyc2VjdGlvbiByIHRoaXMuZWxlbWVudCBoLmVsZW1lbnQpXG4gICAgICAgICAgICAobWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobWlkLCBhY2MpIGNjIC0+XG4gICAgICAgICAgICBsZXQgaWQnID0gc3VjYyBtaWQgaW5cbiAgICAgICAgICAgIGxldCB4LCBfLCBfLCBpZCA9IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2UgYWNjIGlkJyBjYyBpblxuICAgICAgICAgICAgKCAoaWYgaWQgPSBpZCcgdGhlblxuICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBtaWQpLFxuICAgICAgICAgICAgICB4ICkpXG4gICAgICAgICAgYWNjIG5ld3NcbiAgICAgIGluXG4gICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsIGFjYycgdFxuXG4gIGxldCByZWMgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPVxuICAgIGlmIGxldmVsIDwgMiB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGxldmVsIGRvbWFpbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICB8IFNvbWUgbGlzdCAtPlxuICAgICAgICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgKHByZWQgbGV2ZWwpIGFjY1xuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBhdXggKHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGggbWF4X2wgbGV2ZWwgYWNjIHQpIHRcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGFjYyAoTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gLT4gTGlzdC5yZXZfYXBwZW5kKSBsaXN0IFtdKVxuICAgIClcblxuICBsZXQgc2F0dXJhdGUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBkb21haW4gPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgZG9tYWluIHdpdGhcbiAgICB8IE5vbmUgLT4gMCwgZG9tYWluXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBzaSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIGwgbSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBwIC0+IG1heCBtIHAucF9pZCkgbSBsKSlcbiAgICAgICAgICBkb21haW4gMFxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgIHwgTm9fc2hhcmluZyAtPiBzaSwgZG9tYWluXG4gICAgICB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZyAtPlxuICAgICAgICBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGwgbCAoc2ksIGRvbWFpbikpXG5cbiAgbGV0IG9mX2VudiBlbnYgPVxuICAgIGxldCBhZGRfY2MgYWNjIHAgPVxuICAgICAgbGV0IHcgPSB3ZWlnaHQgcC5lbGVtZW50IGluXG4gICAgICBsZXQgaGFzaCA9IGNvYXJzZV9oYXNoIHAuZWxlbWVudCBpblxuICAgICAgbGV0IGFjY193ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgYWNjIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgd1xuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGhhc2hcbiAgICAgICAgICAgKHAgOjogTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggYWNjX3cpXG4gICAgICAgICAgIGFjY193KVxuICAgICAgICBhY2NcbiAgICBpblxuICAgIGxldCBkb21haW4nID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBwX2lkIGFjYyBwIC0+XG4gICAgICAgICAgYWRkX2NjIGFjY1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gcC5FbnYuY29udGVudDtcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gcC5FbnYuZGVwcztcbiAgICAgICAgICAgICAgcm9vdHMgPSBwLkVudi5yb290cztcbiAgICAgICAgICAgIH0pXG4gICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IGVudi5FbnYuZG9tYWluXG4gICAgaW5cbiAgICB7XG4gICAgICBzaWdfZGVjbCA9IGVudi5FbnYuc2lnX2RlY2w7XG4gICAgICBuYl9pZCA9IHN1Y2MgKEFycmF5LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgbWF4KSAwIGVudi5FbnYuaWRfYnlfdHlwZSk7XG4gICAgICBpZF9ieV90eXBlID0gZW52LkVudi5pZF9ieV90eXBlO1xuICAgICAgZG9tYWluID0gZG9tYWluJztcbiAgICAgIHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGRlYnVnX3ByaW50IGYgZW52ID1cbiAgICBQcC5hcnJheSBQcC5jb21tYVxuICAgICAgKGZ1biB0eSBmIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVkOiAldFwiIHR5IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIltcIjtcbiAgICAgICAgICAgIFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgYSkgZiBsO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIl1cIikpXG4gICAgICBmIGVudi5pZF9ieV90eXBlO1xuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ1c2VkX2J5X2FfYmVnaW5fbmV3ID0gJUJALlwiIGVudi51c2VkX2J5X2FfYmVnaW5fbmV3XG5lbmRcblxuKCoqIE9wZXJhdGlvbiB0byBjcmVhdGUgY2MgKilcbmxldCBjaGVja19kYW5nbGluZyB3ayA9XG4gIGlmIHdrLmRhbmdsaW5nIDw+IDAgdGhlblxuICAgIHJhaXNlIChkYW5nbGluZ19ub2RlIH5zaWdzOndrLnNpZ3Mgd2sudXNlZF9pZCB3ay5kYW5nbGluZylcblxubGV0IGJlZ2luX25ldyBlbnYgPSBQcmVFbnYudG9fd29yayBlbnZcblxubGV0IGZyZXNoX2NjX2lkIGRvbWFpbiA9XG4gIHN1Y2NcbiAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1heCBhY2MgcC5wX2lkKSBhY2MgeCkpXG4gICAgICAgZG9tYWluIDApXG5cbmxldCByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ayA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gICgqIHJlYnVpbGQgZW52ICopXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICB3ay5yZXNlcnZlZF9pZC4oaSkgPC0gTGlzdC5yZXZfYXBwZW5kIHdrLnVzZWRfaWQuKGkpIHdrLnJlc2VydmVkX2lkLihpKSlcbiAgICAgIChBcnJheS5sZW5ndGggd2sudXNlZF9pZClcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgTGlzdC5yZXYgd2sudXNlZF9pZCBpblxuICBsZXQgY2NfY2FuZGlkYXRlID1cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXMgPSB3ay5jY19ub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIHdrLmNjX25vZGVzO1xuICAgIH1cbiAgaW5cbiAgbGV0IHByZWVudiwgciwgb3V0LCBvdXRfaWQgPVxuICAgIFByZUVudi5hZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gd2suY2NfZW52XG4gICAgICAoZnJlc2hfY2NfaWQgd2suY2NfZW52KSBjY19jYW5kaWRhdGVcbiAgaW5cbiAgUHJlRW52LmZyZXNoIHdrLnNpZ3Mgd2sucmVzZXJ2ZWRfaWQgd2suZnJlZV9pZCBwcmVlbnYsIHIsIG91dCwgb3V0X2lkXG5cbmxldCBmaW5pc2hfbmV3IH5kZWJ1Z19tb2RlID9vcmlnaW4gd2sgPVxuICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6dHJ1ZSA/b3JpZ2luIHdrXG5cbmxldCBuZXdfbGluayB3ayAoKCh4LCBfKSBhcyBuMSksIGkpICgoKHksIF8pIGFzIG4yKSwgaikgPVxuICBsZXQgeF9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geCB3ay5jY19ub2RlcyBpblxuICBsZXQgeV9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geSB3ay5jY19ub2RlcyBpblxuICBtYXRjaCB4X24uKGkpLCB5X24uKGopIHdpdGhcbiAgfCAoVW5TcGVjLCBzdHgpLCAoVW5TcGVjLCBzdHkpIC0+XG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBMaW5rICh5LCBqKSwgc3R4IGluXG4gICAgbGV0ICgpID0geV9uLihqKSA8LSBMaW5rICh4LCBpKSwgc3R5IGluXG4gICAgaWYgd2suZGFuZ2xpbmcgPSB4IHx8IHdrLmRhbmdsaW5nID0geSB0aGVuXG4gICAgICB7IHdrIHdpdGggZGFuZ2xpbmcgPSAwIH1cbiAgICBlbHNlXG4gICAgICB3a1xuICB8ICgoRnJlZSB8IExpbmsgXyksIF8pLCBfIC0+IHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4xIGkpXG4gIHwgXywgKChGcmVlIHwgTGluayBfKSwgXykgLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjIgailcblxubGV0IG5ld19mcmVlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSkgd2l0aFxuICB8IFVuU3BlYywgc3QgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIEZyZWUsIHN0IGluXG4gICAgd2tcbiAgfCAoRnJlZSB8IExpbmsgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuXG5sZXQgbmV3X2ludGVybmFsX3N0YXRlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSB2YSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCBsLCBzID0geF9uLihpKSBpblxuICBpZiBzID49IDAgdGhlblxuICAgIHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4gaSlcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBsLCB2YSBpblxuICAgIHdrXG4gIClcblxubGV0IG5ld19ub2RlIHdrIHR5cGVfaWQgPVxuICBsZXQgKCkgPSBjaGVja19kYW5nbGluZyB3ayBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgd2suc2lncyB0eXBlX2lkIGluXG4gIG1hdGNoIHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSB3aXRoXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gaCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCAoKSA9IHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSA8LSB0IGluXG4gICAgbGV0IG5vZGUgPSBoLCB0eXBlX2lkIGluXG4gICAgKCBub2RlLFxuICAgICAge1xuICAgICAgICBzaWdzID0gd2suc2lncztcbiAgICAgICAgY2NfZW52ID0gd2suY2NfZW52O1xuICAgICAgICByZXNlcnZlZF9pZCA9IHdrLnJlc2VydmVkX2lkO1xuICAgICAgICB1c2VkX2lkID0gd2sudXNlZF9pZDtcbiAgICAgICAgZnJlZV9pZCA9IHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGgpO1xuICAgICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmFkZCBoIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcbiAgfCBbXSAtPlxuICAgIGxldCAoKSA9IHdrLnVzZWRfaWQuKHR5cGVfaWQpIDwtIHdrLmZyZWVfaWQgOjogd2sudXNlZF9pZC4odHlwZV9pZCkgaW5cbiAgICBsZXQgbm9kZSA9IHdrLmZyZWVfaWQsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gc3VjYyB3ay5mcmVlX2lkO1xuICAgICAgICBkYW5nbGluZyA9XG4gICAgICAgICAgKGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IHdrLmNjX25vZGVzIHRoZW5cbiAgICAgICAgICAgICAwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB3ay5mcmVlX2lkKTtcbiAgICAgICAgY2Nfbm9kZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCB3ay5mcmVlX2lkIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcblxubGV0IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IC0+XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBhY2MgKGludHMsIGxpbmtzKSAtPlxuICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgIGxldCB3ID0gbmV3X2ZyZWUgdyAobiwgcykgaW5cbiAgICAgICAgICBsZXQgYWNjJywgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgbGV0IGFjYycnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2ludGVybmFsX3N0YXRlIHcgKG4sIHMpIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICAgIGludHMgYWNjJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgIChmdW4gKHR5JywgcycpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgIGxldCBuJywgdyA9IG5ld19ub2RlIHcgdHknIGluXG4gICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4nLCBzJykgaW5cbiAgICAgICAgICAgICAgbGV0IG91dCwgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgICAgIGlmIHR5ID0gdHknICYmIHMgPCBzJyB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBvdXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgICBsZXQgdyA9IG5ld19saW5rIHcgKG4sIHMpIChuLCBzJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0JywgXywgXywgXyA9XG4gICAgICAgICAgICAgICAgICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2Ugd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgb3V0J1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICBsaW5rcyBhY2MnJykpXG4gICAgZW52IGNvbnRhY3RfbWFwXG5cbmxldCBmb2xkX2J5X3R5cGUgZiBjYyBhY2MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBhZ2VudF90eXBlIGFjYyBsaXN0X3BvcyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgcG9zIC0+XG4gICAgICAgICAgbGV0IGludGYgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwb3MgY2Mubm9kZXMgaW5cbiAgICAgICAgICBmIH5wb3MgfmFnZW50X3R5cGUgaW50ZiBhY2MpXG4gICAgICAgIGFjYyBsaXN0X3BvcylcbiAgICBhY2MgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgZm9sZCBmIGNjIGFjYyA9IE1vZHMuSW50TWFwLmZvbGQgZiBjYy5ub2RlcyBhY2NcblxubGV0IGZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGVudiBjb250YWN0X21hcCA9XG4gIGxldCBzaWdzID0gUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBlbnYgPSBtaW5pbWFsX2VudiB+ZGVidWdfbW9kZSBlbnYgY29udGFjdF9tYXAgaW5cbiAgbGV0IHNpLCBjb21wbGV0ZV9kb21haW4gPVxuICAgIFByZUVudi5zYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGVudi5QcmVFbnYuZG9tYWluXG4gIGluXG4gIGxldCBkb21haW4gPSBBcnJheS5tYWtlIChzdWNjIHNpKSAoUHJlRW52LmVtcHR5X3BvaW50IGVudi5QcmVFbnYuc2lnX2RlY2wpIGluXG4gIGxldCBzaW5nbGVzID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IDEgY29tcGxldGVfZG9tYWluIGluXG4gIGxldCBlbGVtZW50YXJpZXMgPSBQcmVFbnYuZmlsbF9lbGVtIGVudi5QcmVFbnYuc2lnX2RlY2wgc2luZ2xlcyBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICB9KSlcbiAgICAgIHNpbmdsZXNcbiAgaW5cbiAgbGV0IHN0YXRfbmF2X3N0ZXBzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGxldmVsIGRvbWFpbl9sZXZlbCBhY2NfbGV2ZWwgLT5cbiAgICAgICAgaWYgbGV2ZWwgPD0gMSB0aGVuXG4gICAgICAgICAgYWNjX2xldmVsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAoZnVuIF8gbCBhY2MgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuY29udGVudCA9IHguZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIF8gbGwgYWNjbCAtPlxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgZS5lbGVtZW50IHguZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5qcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBpbmpfZV94IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZUVudi5pbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5QcmVFbnYuaWRfYnlfdHlwZSBlbnYuUHJlRW52Lm5iX2lkIGRvbWFpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucF9pZCB4LmVsZW1lbnQgaW5qX2VfeCBlLnBfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgaW5qcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2wgbGwpXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZXMgYWNjKVxuICAgICAgICAgICAgICAgIGFjYyBsKVxuICAgICAgICAgICAgZG9tYWluX2xldmVsIGFjY19sZXZlbClcbiAgICAgIGNvbXBsZXRlX2RvbWFpbiAwXG4gIGluXG4gIGxldCBsZXZlbDAgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMCBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuUHJlRW52LmlkX2J5X3R5cGUpIE5vbmVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IHAuZWxlbWVudCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoXywgdHkpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgZG9tYWluLihwLnBfaWQpIDwtXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0gcC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSBwLnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHAuZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICBFbnYuc29ucyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzLih0eSkgPC0gU29tZSAocC5wX2lkLCBwLmRlcGVuZGluZykpKVxuICAgICAgbGV2ZWwwXG4gIGluXG4gICgge1xuICAgICAgRW52LnNpZ19kZWNsID0gZW52LlByZUVudi5zaWdfZGVjbDtcbiAgICAgIEVudi5pZF9ieV90eXBlID0gZW52LlByZUVudi5pZF9ieV90eXBlO1xuICAgICAgRW52Lm1heF9vYnMgPSBmcmVzaF9jY19pZCBlbnYuUHJlRW52LmRvbWFpbjtcbiAgICAgIEVudi5kb21haW47XG4gICAgICBFbnYuZWxlbWVudGFyaWVzO1xuICAgICAgRW52LnNpbmdsZV9hZ2VudF9wb2ludHM7XG4gICAgfSxcbiAgICB7IHN0YXRfbm9kZXMgPSBzaTsgUHJlRW52LnN0YXRfbmF2X3N0ZXBzIH0gKVxuXG5sZXQgbWVyZ2Vfb25faW5mIH5kZWJ1Z19tb2RlIGVudiBtIGcxIGcyID1cbiAgbGV0IG1fbGlzdCA9IFJlbmFtaW5nLnRvX2xpc3QgbSBpblxuICBsZXQgcm9vdDEsIHJvb3QyID0gTGlzdC5oZCBtX2xpc3QgaW5cbiAgbGV0IHBhaXJpbmcgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoYSwgYikgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKVxuICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5IG1fbGlzdFxuICBpblxuICBsZXQgcG9zc2liaWxpdGllcyA9IHJlZiBwYWlyaW5nIGluXG4gIG1hdGNoXG4gICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSByb290MSBnMSByb290MiBnMlxuICB3aXRoXG4gIHwgU29tZSBtJywgXyAtPlxuICAgIGxldCBfLCBwdXNob3V0ID1cbiAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgbScgZzFcbiAgICAgICAgZzJcbiAgICBpblxuICAgIFNvbWUgcHVzaG91dCwgTm9uZVxuICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG5cbmxldCBsZW5ndGggY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBSZW5hbWluZy50IE1vZHMuSW50TWFwLnQgKiBNb2RzLkludFNldC50XG4oKiAobWFwLHNldClcbiAgIG1hcDogcG9pbnRfaSAtPiAobm9kZV9qKGkpIC0+IGlkX25vZGVfZ3JhcGhfaW5fY3VycmVudF9tYXRjaGluZylcbiAgIHNldDpjb2RvbWFpbiBvZiBjdXJyZW50IG1hdGNoaW5nICopXG5cbnR5cGUgbWF0Y2hpbmcgPSB0XG5cbmxldCBlbXB0eSA9IE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludFNldC5lbXB0eVxuXG5sZXQgYWRkX2NjIChpbmosIGNvKSBpZCByID1cbiAgbGV0IGMgPSBSZW5hbWluZy5pbWFnZSByIGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIGNvIGMgd2l0aFxuICB8IFNvbWUgY28nIC0+IFNvbWUgKE1vZHMuSW50TWFwLmFkZCBpZCByIGluaiwgY28nKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgZGVidWdfcHJpbnQgZiAobSwgX2NvKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyglYSlAXVwiXG4gICAgKFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5jb21tYSAoZnVuIGYgKGNjaWQsIG5tKSAtPlxuICAgICAgICAgUHAuc2V0IFJlbmFtaW5nLnRvX2xpc3QgUHAuY29tbWFcbiAgICAgICAgICAgKGZ1biBmIChub2RlLCBkc3QpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaS0+JWlcIiBjY2lkIG5vZGUgZHN0KVxuICAgICAgICAgICBmIG5tKSlcbiAgICBtXG5cbmxldCByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJNYXRjaGluZy5yZWNvbnN0cnVjdCBjYyBlcnJvclwiXG4gICgqLSBybSAtIGFkZCA6IGludCAtPiBpbnQgLT4gUmVuYW1pbmcudCAtPiBSZW5hbWluZy50ICopXG4gIHwgU29tZSAocmlkcywgcnR5KSAtPlxuICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgIGxldCBfLCBpbmplY3RpdmUgPVxuICAgICAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gICAgICB8IF8gOjogXyBhcyBuYXYgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChyb290LCBpbmplY3RpdmUpIG5hdiAtPlxuICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICBpbmplY3RpdmVcbiAgICAgICAgICAgICAgJiYgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoXG4gICAgICAgICAgICAgICAgICAgbmF2ICkpXG4gICAgICAgICAgKFNvbWUgKHJvb3QsIHJ0eSksIHRydWUpXG4gICAgICAgICAgbmF2XG4gICAgICAoKi0gcm0gLSBmaW5kX3Jvb3Q6IGNjIC0+ICh0eXBlLCBub2RlKSBvcHRpb24gKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIChtYXRjaCByaWRzIHdpdGhcbiAgICAgICAgICB8IFsgcmlkIF0gLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgcmlkIHJvb3QgaW5qXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKSApXG4gICAgaW5cbiAgICBpZiBpbmplY3RpdmUgdGhlblxuICAgICAgaW5qXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiTWF0Y2hpbmcucmVjb25zdHJ1Y3QgcmVuYW1pbmcgZXJyb3IgYXQgcm9vdCBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdClcblxuKCogcmVjb25zdHJ1Y3Q6IFBhdHRlcm4uRW52LnQgLT4gRWRnZXMudCAtPiB0IC0+IGludCAtPiBQYXR0ZXJuLmlkIC0+XG4gICBpbnQgLT4gdCBvcHRpb24qKVxubGV0IHJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBpbmogaWQgY2NfaWQgcm9vdCA9XG4gIGxldCByZW5hbWUgPSByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCBpblxuICBtYXRjaCBNb2RzLkludFNldC5kaXNqb2ludF91bmlvbiAoUmVuYW1pbmcuaW1hZ2UgcmVuYW1lKSAoc25kIGluaikgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgY28gLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHJlbmFtZSAoZnN0IGluaiksIGNvKVxuXG5sZXQgcmVjIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIHJvb3QgaW5qID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgaCA6OiB0IC0+XG4gICAgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIGhcbiAgICAmJiBhdXhfaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBncmFwaCBOb25lIGluaiB0XG5cbmxldCBpc19yb290X29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCAoKF8sIHJ0eSkgYXMgcm9vdCkgY2NfaWQgPVxuICBsZXQgcG9pbnQgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjX2lkIGluXG4gIG1hdGNoIFBhdHRlcm4ucmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiAoUGF0dGVybi5FbnYuY29udGVudCBwb2ludCkgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICB8IFNvbWUgKF8sIHJ0eScpIC0+IHJ0eSA9IHJ0eSdcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG4gIHwgbmF2IC0+IGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIChTb21lIHJvb3QpIChSZW5hbWluZy5lbXB0eSAoKSkgbmF2XG5cbmxldCByb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2MgPVxuICBFZGdlcy5hbGxfYWdlbnRzX3doZXJlXG4gICAgKGZ1biB4IC0+IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIHggY2MpXG4gICAgZ3JhcGhcblxuKCogZ2V0IDogKENvbnRlbnRBZ2VudC50ICogaW50KSAtPiB0IC0+IGludCAqKVxubGV0IGdldCB+ZGVidWdfbW9kZSAoKG5vZGUsIF8pLCBpZCkgKHQsIF8pID1cbiAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBSZW5hbWluZy5kdW1teSBpZCB0KSBub2RlXG5cbmxldCBlbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBjY3MgKHQsIF8pID1cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgKE1vZHMuSW50TWFwLnNpemUgdCkgW10gaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIGlkIG1hcCAtPlxuICAgICAgICBvdXQuKGlkKSA8LVxuICAgICAgICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgICAgICAgIChmdW4gaSBvdXQgYWNjIC0+XG4gICAgICAgICAgICAgICggb3V0LFxuICAgICAgICAgICAgICAgIFBhdHRlcm4uZmluZF90eVxuICAgICAgICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NzLihpZCkpKVxuICAgICAgICAgICAgICAgICAgaSApXG4gICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgIG1hcCBbXSlcbiAgICAgIHRcbiAgaW5cbiAgb3V0XG5cbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYXR0ZXJuLmlkICogKGludCAqIGludCkgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGEnKSAoYiwgYicpID1cbiAgICBsZXQgYyA9IFBhdHRlcm4uY29tcGFyZV9jYW5vbmljYWxzIGEgYiBpblxuICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgbWF0Y2ggYScsIGInIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgICB8IE5vbmUsIFNvbWUgXyAtPiAxXG4gICAgICB8IFNvbWUgXywgTm9uZSAtPiAtMVxuICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB5XG4gICAgKSBlbHNlXG4gICAgICBjXG5cbiAgbGV0IHByaW50IGYgKGEsIGEnKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6dHJ1ZSA/ZG9tYWluOk5vbmUgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFcbiAgICAgIChQcC5vcHRpb24gKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgIGEnXG5lbmRcblxubW9kdWxlIENhY2hlU2V0TWFwID0gU2V0TWFwLk1ha2UgKENhY2hlKVxuXG50eXBlIGNhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LnRcblxubGV0IGVtcHR5X2NhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LmVtcHR5XG5cbmxldCBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmogZ3JhcGggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gaW5qIHN0ZXAgLT5cbiAgICAgIG1hdGNoIGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5qXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIE5hdmlnYXRpb24uaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlIGluaiBncmFwaCBzdGVwKVxuICAgIChTb21lIGluailcblxuKCplZGdlczogbGlzdCBvZiBjb25jcmV0ZSBlZGdlcyxcbiAgICByZXR1cm5zIHRoZSByb290cyBvZiBvYnNlcnZhYmxlcyB0aGF0IGFyZSBhYm92ZSBpbiB0aGUgZG9tYWluKilcbmxldCBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgob3V0LCBjYWNoZSkgYXMgYWNjKSBub2RlIHNpdGUgYXJyb3cgPVxuICBsZXQgcmVjIGF1eF9mcm9tX2VkZ2VzIGNhY2hlICgob2JzLCByZXZfZGVwcykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2MsIGNhY2hlXG4gICAgfCAocGlkLCBwb2ludCwgaW5qX3BvaW50MmdyYXBoKSA6OiByZW1haW5zIC0+XG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgKGlkcywgdHkpIC0+XG4gICAgICAgICAgKCBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIGFjYyBpZCAtPlxuICAgICAgICAgICAgICAgIChwaWQsIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggaWQsIHR5KSlcbiAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgIG9icyBpZHMsXG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gcmV2X2RlcHMgKFBhdHRlcm4uRW52LmRlcHMgcG9pbnQpIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVtYWlucycsIGNhY2hlJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHJlLCBjYSkgYXMgcGFpcikgc29uIC0+XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggZ3JhcGggc29uLlBhdHRlcm4uRW52Lm5leHRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwYWlyXG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICBsZXQgcmVuYW1lID1cbiAgICAgICAgICAgICAgICBSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIHNvbi5QYXR0ZXJuLkVudi5pbmogaW5qJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY2EnID1cbiAgICAgICAgICAgICAgICBDYWNoZVNldE1hcC5TZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoc29uLlBhdHRlcm4uRW52LmRzdCwgUmVuYW1pbmcubWluX2VsdCByZW5hbWUpXG4gICAgICAgICAgICAgICAgICBjYVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBjYSA9PSBjYScgdGhlblxuICAgICAgICAgICAgICAgIHBhaXJcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHAnID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBzb24uUGF0dGVybi5FbnYuZHN0IGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBzb24uUGF0dGVybi5FbnYuZHN0LCBwJywgcmVuYW1lIGluXG4gICAgICAgICAgICAgICAgbmV4dCA6OiByZSwgY2EnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgKHJlbWFpbnMsIGNhY2hlKSAoUGF0dGVybi5FbnYuc29ucyBwb2ludClcbiAgICAgIGluXG4gICAgICBhdXhfZnJvbV9lZGdlcyBjYWNoZScgYWNjJyByZW1haW5zJ1xuICBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfZWxlbWVudGFyeSB+ZGVidWdfbW9kZSBkb21haW4gbm9kZSBzaXRlIGFycm93IHdpdGhcbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgeCAtPlxuICAgIGF1eF9mcm9tX2VkZ2VzXG4gICAgICAoKigqdW5uZWNlc3NhcnkqKUNhY2hlU2V0TWFwLlNldC5hZGQgKGNjX2lkLFJlbmFtaW5nLm1pbl9lbHQgaW5qJykqKVxuICAgICAgY2FjaGUgb3V0IFsgeCBdXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2FnZW50IGRvbWFpbiBncmFwaCAoKChvYnMsIHJkZXBzKSwgY2FjaGUpIGFzIGFjYylcbiAgICAoKF8sIHR5KSBhcyBub2RlKSA9XG4gIGlmIEVkZ2VzLmlzX2FnZW50IG5vZGUgZ3JhcGggdGhlbiAoXG4gICAgbWF0Y2ggUGF0dGVybi5FbnYuZ2V0X3NpbmdsZV9hZ2VudCB0eSBkb21haW4gd2l0aFxuICAgIHwgU29tZSAoY2MsIGRlcHMpIC0+XG4gICAgICAoKGNjLCBub2RlKSA6OiBvYnMsIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzKSwgY2FjaGVcbiAgICB8IE5vbmUgLT4gYWNjXG4gICkgZWxzZVxuICAgIGFjY1xuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9mcmVlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIE5hdmlnYXRpb24uVG9Ob3RoaW5nXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIGlkID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIChOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgaWQpXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBuIHNpdGUgbicgc2l0ZScgPVxuICBmcm9tX2VkZ2UgZG9tYWluIH5kZWJ1Z19tb2RlIGdyYXBoIGFjYyBuIHNpdGVcbiAgICAoTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggbicsIHNpdGUnKSlcblxubW9kdWxlIEFnZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEV4aXN0aW5nIG9mIEFnZW50LnQgKiBpbnQgfCBGcmVzaCBvZiBpbnQgKiBpbnQgKCogdHlwZSwgaWQgKilcblxuICBsZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQnKSBhcyB4IC0+XG4gICAgICBpZiBpZCA8PiBpZCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG4nID0gQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGluaiBuIGluXG4gICAgICAgIGlmIG4gPT0gbicgdGhlblxuICAgICAgICAgIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4aXN0aW5nIChuJywgaWQnKVxuICAgICAgKVxuICAgIHwgRnJlc2ggXyBhcyB4IC0+IHhcblxuICBsZXQgcHJpbnQgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiVpKi9cIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgbiBpZFxuICAgIHwgRnJlc2ggKHR5LCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLyoldCAlaSovXCJcbiAgICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludFxuICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgdHkgUHAubnUgaVxuXG4gIGxldCBwcmludF9zaXRlID9zaWdzIHBsYWNlIGYgc2l0ZSA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X3NpdGUgP3NpZ3MgbiBmIHNpdGVcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgc2l0ZVxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eSBmIHNpdGUpXG5cbiAgbGV0IHByaW50X2ludGVybmFsID9zaWdzIHBsYWNlIHNpdGUgZiBpZCA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIG4gc2l0ZSBmIGlkXG4gICAgfCBGcmVzaCAodHksIF8pIC0+XG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpfiVpXCIgc2l0ZSBpZFxuICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyB0eSBzaXRlIGYgKFNvbWUgaWQpKVxuXG4gIGxldCBnZXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAoaSwgXykgLT4gaVxuXG4gIGxldCBnZXRfaWQgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LmlkIG5cbiAgICB8IEZyZXNoIChfLCBpKSAtPiBpXG5cbiAgbGV0IGlzX2ZyZXNoID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIF8gLT4gZmFsc2VcbiAgICB8IEZyZXNoIF8gLT4gdHJ1ZVxuXG4gIGxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIChpbmpfbm9kZXMsIGlual9mcmVzaCkgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIGlkKSAtPiBnZXQgfmRlYnVnX21vZGUgKG4sIGlkKSBpbmpfbm9kZXMsIEFnZW50LnNvcnQgblxuICAgIHwgRnJlc2ggKHR5LCBpZCkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBpbmpfZnJlc2ggd2l0aFxuICAgICAgfCBTb21lIHggLT4geCwgdHlcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgdHkpIC0+XG4gICAgICAoYEFzc29jXG4gICAgICAgICBbXG4gICAgICAgICAgICggXCJFeGlzdGluZ1wiLFxuICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwiYWdlbnRcIiwgQWdlbnQudG9fanNvbiBuIF07IGBBc3NvYyBbIFwidHlwZVwiLCBgSW50IHR5IF07XG4gICAgICAgICAgICAgICBdICk7XG4gICAgICAgICBdXG4gICAgICAgIDogWW9qc29uLkJhc2ljLnQpXG4gICAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVzaFwiLCBgQXNzb2MgWyBcImlkXCIsIGBJbnQgaWQ7IFwidHlwZVwiLCBgSW50IHR5IF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiRXhpc3RpbmdcIiwgYExpc3QgbGlzdCkgXSAtPlxuICAgICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbIGBBc3NvYyBbIChcImFnZW50XCIsIGEpIF07IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0eSkgXSBdIC0+XG4gICAgICAgIEV4aXN0aW5nIChBZ2VudC5vZl9qc29uIGEsIHR5KVxuICAgICAgfCB4IDo6IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbiAgICAgIHwgW10gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCBgTnVsbCkpKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlc2hcIiwgYSkgXSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwidHlwZVwiLCBgSW50IHR5KSBdIC0+IEZyZXNoIChpZCwgdHkpXG4gICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWdlbnRfbmFtZSA9IGludFxudHlwZSBzaXRlX25hbWUgPSBpbnRcbnR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcbnR5cGUgYmluZGluZ190eXBlID0gYWdlbnRfbmFtZSAqIHNpdGVfbmFtZVxudHlwZSBhYnN0cmFjdCA9IE1hdGNoaW5nLkFnZW50LnRcbnR5cGUgY29uY3JldGUgPSBBZ2VudC50XG50eXBlICdhIHNpdGUgPSAnYSAqIHNpdGVfbmFtZVxuXG50eXBlICdhIHRlc3QgPVxuICB8IElzX0hlcmUgb2YgJ2FcbiAgfCBIYXNfSW50ZXJuYWwgb2YgJ2Egc2l0ZSAqIGludGVybmFsX3N0YXRlXG4gIHwgSXNfRnJlZSBvZiAnYSBzaXRlXG4gIHwgSXNfQm91bmQgb2YgJ2Egc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgb2YgJ2Egc2l0ZSAqIGJpbmRpbmdfdHlwZVxuICB8IElzX0JvdW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG5cbnR5cGUgJ2EgYWN0aW9uID1cbiAgfCBDcmVhdGUgb2YgJ2EgKiAoc2l0ZV9uYW1lICogaW50ZXJuYWxfc3RhdGUgb3B0aW9uKSBsaXN0ICgqIHBvdXJxdW9pIMOnYSAqKVxuICB8IE1vZF9pbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBCaW5kIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgQmluZF90byBvZiAnYSBzaXRlICogJ2Egc2l0ZVxuICB8IEZyZWUgb2YgJ2Egc2l0ZVxuICB8IFJlbW92ZSBvZiAnYVxuXG4oKiBUaGUgc2VtYW50aWNzIG9mIGNvbmNyZXRlIGFjdGlvbnMgc2VlbXMgdG8gYmUgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgIC0gV2hlbiBhbiBhZ2VudCBpcyByZW1vdmVkLCBubyBvdGhlciBhY3Rpb24gaXMgc3RvcmVkIGFib3V0IGl0IChpbmNsdWRpbmcgYm9uZCByZWxlYXNpbmcpLlxuICAgLSBDcmVhdGVkIGFnZW50cyBhcmUgY3JlYXRlZCB3aXRob3V0IGRlZmF1bHQgYmluZGluZy9pbnRlcm5hbCBzdGF0ZXMuXG4gICAtIEJvbmRzIGFyZSBpbnNlcnRlZCB0aGFua3MgdG8gdHdvIHN5bW1ldHJpYyBhY3Rpb25zIChCaW5kX3RvIC4uLikgKilcblxubGV0IHdlaWdodCBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAyXG4gIHwgUmVtb3ZlIF8gLT4gMFxuXG5sZXQgd2VpZ2h0X3JldmVyc2UgYWN0aW9uID1cbiAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgfCBDcmVhdGUgXyAtPiAxXG4gIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gMFxuICB8IFJlbW92ZSBfIC0+IDJcblxubGV0IHNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodCAyXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdF9yZXZlcnNlID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHRfcmV2ZXJzZSAyXG5sZXQgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcblxudHlwZSAnYSBiaW5kaW5nX3N0YXRlID1cbiAgfCBBTllcbiAgfCBGUkVFXG4gIHwgQk9VTkRcbiAgfCBCT1VORF9UWVBFIG9mIGJpbmRpbmdfdHlwZVxuICB8IEJPVU5EX3RvIG9mICdhIHNpdGVcblxudHlwZSAnYSBldmVudCA9IHtcbiAgdGVzdHM6ICdhIHRlc3QgbGlzdCBsaXN0O1xuICBhY3Rpb25zOiAnYSBhY3Rpb24gbGlzdDtcbiAgc2lkZV9lZmZlY3RzX3NyYzogKCdhIHNpdGUgKiAnYSBiaW5kaW5nX3N0YXRlKSBsaXN0O1xuICBzaWRlX2VmZmVjdHNfZHN0OiAnYSBzaXRlIGxpc3Q7XG4gIGNvbm5lY3Rpdml0eV90ZXN0czogJ2EgdGVzdCBsaXN0O1xufVxuXG5sZXQgZW1wdHlfZXZlbnQgPVxuICB7XG4gICAgdGVzdHMgPSBbXTtcbiAgICBhY3Rpb25zID0gW107XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9IFtdO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBbXTtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPSBbXTtcbiAgfVxuXG5sZXQgY29uY3JldGl6ZV9iaW5kaW5nX3N0YXRlIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQU5ZIC0+IEFOWVxuICB8IEZSRUUgLT4gRlJFRVxuICB8IEJPVU5EIC0+IEJPVU5EXG4gIHwgQk9VTkRfVFlQRSBidCAtPiBCT1VORF9UWVBFIGJ0XG4gIHwgQk9VTkRfdG8gKHBsLCBzKSAtPlxuICAgIEJPVU5EX3RvIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcblxubGV0IGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IElzX0hlcmUgcGwgLT4gSXNfSGVyZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG4gIHwgSGFzX0ludGVybmFsICgocGwsIHMpLCBpKSAtPlxuICAgIEhhc19JbnRlcm5hbCAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgaSlcbiAgfCBJc19GcmVlIChwbCwgcykgLT5cbiAgICBJc19GcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBJc19Cb3VuZCAocGwsIHMpIC0+XG4gICAgSXNfQm91bmQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChwbCwgcyksIHQpIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgdClcbiAgfCBJc19Cb3VuZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIElzX0JvdW5kX3RvXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG5cbmxldCBjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IENyZWF0ZSAocGwsIGkpIC0+XG4gICAgQ3JlYXRlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgaSlcbiAgfCBNb2RfaW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgTW9kX2ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IEJpbmQgKChwbCwgcyksIChwbCcsIHMnKSkgLT5cbiAgICBCaW5kXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG4gIHwgQmluZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBGcmVlIChwbCwgcykgLT4gRnJlZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgUmVtb3ZlIHBsIC0+IFJlbW92ZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG5cbmxldCB0cnlfY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMgPVxuICB0cnkgU29tZSAoY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbigqIFRoZSBhY3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgZnJlc2ggYWdlbnQgKilcblxubGV0IGNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdC5tYXAgKExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkpIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9XG4gICAgICAoKiBhY3Rpb25zIGFyZSByZW9yZGVyZWQgdGhlIGZvbGxvd2luZyB3YXk6XG4gICAgICAgICAxKSBSZW1vdmUgYWN0aW9uc1xuICAgICAgICAgMikgQ3JlYXRpb24gYWN0aW9uc1xuICAgICAgICAgMykgQW55dGhpbmcgZWxzZS4qKVxuICAgICAgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdFxuICAgICAgICAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuYWN0aW9ucyk7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoKHBsLCBzKSwgYikgLT5cbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgICAgICBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGIgKSlcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKHBsLCBzKSAtPiBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBtYXBfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFcbiAgfCBIYXNfSW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBJc19GcmVlIChhLCBfKVxuICB8IElzX0JvdW5kIChhLCBfKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBfKSwgXylcbiAgfCBJc19Cb3VuZF90byAoKGEsIF8pLCBfKSAtPlxuICAgIGYgYVxuXG5sZXQgbWFwX2FjdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGEsIF8pXG4gIHwgTW9kX2ludGVybmFsICgoYSwgXyksIF8pXG4gIHwgQmluZCAoKGEsIF8pLCBfKVxuICB8IEJpbmRfdG8gKChhLCBfKSwgXylcbiAgfCBGcmVlIChhLCBfKVxuICB8IFJlbW92ZSBhIC0+XG4gICAgZiBhXG5cbmxldCBtYXRjaF90ZXN0cyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgSXNfSGVyZSBhLCBJc19IZXJlIGIgLT4gTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICB8IEhhc19JbnRlcm5hbCAoKGEsIHMpLCBpKSwgSGFzX0ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBzKSwgYyksIEhhc19CaW5kaW5nX3R5cGUgKChiLCB0KSwgZCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGMgPSBkXG4gIHwgSXNfRnJlZSAoYSwgcyksIElzX0ZyZWUgKGIsIHQpIHwgSXNfQm91bmQgKGEsIHMpLCBJc19Cb3VuZCAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgSXNfQm91bmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgSXNfQm91bmRfdG8gKChiLCB0KSwgKGQsIHYpKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBzID0gdFxuICAgICYmIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGMgPSBBZ2VudC5zb3J0IGRcbiAgICAmJiB1ID0gdlxuICB8IElzX0hlcmUgXywgX1xuICB8IEhhc19JbnRlcm5hbCBfLCBfXG4gIHwgSXNfRnJlZSBfLCBfXG4gIHwgSXNfQm91bmQgXywgX1xuICB8IElzX0JvdW5kX3RvIF8sIF9cbiAgfCBIYXNfQmluZGluZ190eXBlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgbWF0Y2hfYWN0aW9ucyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgQ3JlYXRlIChhLCBhbHMpLCBDcmVhdGUgKGIsIGJscykgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgTGlzdC5mb2xkX2xlZnQyXG4gICAgICAgICAoZnVuIG9rIChzLCBpKSAodCwgaikgLT4gb2sgJiYgcyA9IHQgJiYgaSA9IGopXG4gICAgICAgICB0cnVlIGFscyBibHNcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBzKSwgaSksIE1vZF9pbnRlcm5hbCAoKGIsIHQpLCBqKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgaSA9IGpcbiAgfCBCaW5kICgoYSwgcyksIChjLCB1KSksIEJpbmQgKChiLCB0KSwgKGQsIHYpKVxuICB8IEJpbmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgQmluZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgRnJlZSAoYSwgcyksIEZyZWUgKGIsIHQpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdFxuICB8IFJlbW92ZSBhLCBSZW1vdmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgQ3JlYXRlIF8sIF9cbiAgfCBNb2RfaW50ZXJuYWwgXywgX1xuICB8IEJpbmQgXywgX1xuICB8IEJpbmRfdG8gXywgX1xuICB8IEZyZWUgXywgX1xuICB8IFJlbW92ZSBfLCBfIC0+XG4gICAgZmFsc2VcblxubGV0IGdldF9pZHMgZiBhdXggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGEgLT5cbiAgICAgIGxldCBpZCA9IGYgYSBpblxuICAgICAgaWYgTGlzdC5tZW0gaWQgYWNjIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGlkIDo6IGFjYylcbiAgICBhdXhcblxubGV0IHJlYyBtYXRjaF9xdWFya3MgYV9xdWFya3MgY19xdWFya3MgZm1hdGNoID1cbiAgbWF0Y2ggYV9xdWFya3Mgd2l0aFxuICB8IGFxIDo6IGFxcyAtPlxuICAgIGxldCBjcXMsIHJlc3QgPSBMaXN0LnBhcnRpdGlvbiAoZnVuIGNxIC0+IGZtYXRjaCAoYXEsIGNxKSkgY19xdWFya3MgaW5cbiAgICBpZiBjcXMgPSBbXSB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoX3F1YXJrcyBhcXMgcmVzdCBmbWF0Y2hcbiAgfCBbXSAtPiBjX3F1YXJrcyA9IFtdXG5cbmxldCByZWMgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcImFic3RyYWN0IGFuZCBjb25jcmV0IHF1YXJrcyBkb24ndCBtYXRjaFwiKSlcbiAgfCBjaWQgOjogdGwgLT5cbiAgICBsZXQgY3Rlc3RzJyA9XG4gICAgICBMaXN0LmZpbHRlciAoZnVuIHRlc3QgLT4gbWFwX3Rlc3QgKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIHRlc3QpIGN0ZXN0c1xuICAgIGluXG4gICAgbGV0IGNhY3Rpb25zJyA9XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIGFjdCAtPiBtYXBfYWN0aW9uIChmdW4gYSAtPiBBZ2VudC5pZCBhID0gY2lkKSBhY3QpXG4gICAgICAgIGNhY3Rpb25zXG4gICAgaW5cbiAgICBpZlxuICAgICAgbWF0Y2hfcXVhcmtzIHRlc3RzIGN0ZXN0cycgbWF0Y2hfdGVzdHNcbiAgICAgICYmIG1hdGNoX3F1YXJrcyBhY3Rpb25zIGNhY3Rpb25zJyBtYXRjaF9hY3Rpb25zXG4gICAgdGhlblxuICAgICAgY2lkXG4gICAgZWxzZVxuICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyB0bFxuXG5sZXQgbWF0Y2hpbmdfYWJzdHJhY3RfY29uY3JldGUgfmRlYnVnX21vZGUgYWUgY2UgPVxuICBsZXQgYWVfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gYWUudGVzdHMgaW5cbiAgbGV0IGNlX3Rlc3RzID0gTGlzdC5mbGF0dGVuIGNlLnRlc3RzIGluXG4gIGxldCBhYnN0cmFjdF9pZHMgPVxuICAgIGdldF9pZHNcbiAgICAgIChtYXBfYWN0aW9uIE1hdGNoaW5nLkFnZW50LmdldF9pZClcbiAgICAgIChnZXRfaWRzIChtYXBfdGVzdCBNYXRjaGluZy5BZ2VudC5nZXRfaWQpIFtdIGFlX3Rlc3RzKVxuICAgICAgYWUuYWN0aW9uc1xuICBpblxuICBsZXQgY29uY3JldGVfaWRzID1cbiAgICBnZXRfaWRzIChtYXBfYWN0aW9uIEFnZW50LmlkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IEFnZW50LmlkKSBbXSBjZV90ZXN0cylcbiAgICAgIGNlLmFjdGlvbnNcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgdXNlZCA9XG4gICAgTGlzdC5maWx0ZXJcbiAgICAgIChmdW4gaSAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpIChSZW5hbWluZy5pbWFnZSB1c2VkKSkpXG4gICAgICBjb25jcmV0ZV9pZHNcbiAgaW5cbiAgbGV0IHBhcnRpdGlvbiBmbWFwIGkgPVxuICAgIExpc3QucGFydGl0aW9uIChmdW4gcSAtPiBmbWFwIChmdW4gYSAtPiBNYXRjaGluZy5BZ2VudC5nZXRfaWQgYSA9IGkpIHEpXG4gIGluXG4gIGxldCBtYXRjaGluZyA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBpbmplY3RpdmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgIGFjY1xuICAgICAgICAmJlxuICAgICAgICBsZXQgdGVzdHMsIF8gPSBwYXJ0aXRpb24gbWFwX3Rlc3QgaSBhZV90ZXN0cyBpblxuICAgICAgICBsZXQgYWN0aW9ucywgXyA9IHBhcnRpdGlvbiBtYXBfYWN0aW9uIGkgYWUuYWN0aW9ucyBpblxuICAgICAgICBsZXQgaiA9XG4gICAgICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGNlX3Rlc3RzIGNlLmFjdGlvbnMgKGF2YWlsYWJsZV9pZHMgbWF0Y2hpbmcpXG4gICAgICAgIGluXG4gICAgICAgIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGkgaiBtYXRjaGluZylcbiAgICAgIHRydWUgYWJzdHJhY3RfaWRzXG4gIGluXG4gIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgU29tZSBtYXRjaGluZ1xuICBlbHNlXG4gICAgTm9uZVxuXG5sZXQgc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYgKChpZCwgbmEpIGFzIGFnZW50KSA9XG4gIHRyeVxuICAgIGlmIGYgaWQgPT0gaWQgdGhlblxuICAgICAgYWdlbnRcbiAgICBlbHNlXG4gICAgICBmIGlkLCBuYVxuICB3aXRoIE5vdF9mb3VuZCAtPiBhZ2VudFxuXG5sZXQgc3Vic3RfbWFwX3NpdGUgZiAoKGFnLCBzKSBhcyBzaXRlKSA9XG4gIGxldCBhZycgPSBmIGFnIGluXG4gIGlmIGFnID09IGFnJyB0aGVuXG4gICAgc2l0ZVxuICBlbHNlXG4gICAgYWcnLCBzXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZiBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfSGVyZSBhZ2VudCdcbiAgfCBIYXNfSW50ZXJuYWwgKHNpdGUsIGludGVybmFsX3N0YXRlKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSGFzX0ludGVybmFsIChzaXRlJywgaW50ZXJuYWxfc3RhdGUpXG4gIHwgSXNfRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19GcmVlIHNpdGUnXG4gIHwgSXNfQm91bmQgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmQgc2l0ZSdcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCBiaW5kaW5nX3R5cGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfQmluZGluZ190eXBlIChzaXRlJywgYmluZGluZ190eXBlKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIGFzIHggLT5cbiAgICBsZXQgc2l0ZTEnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlMSBpblxuICAgIGxldCBzaXRlMicgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUyIGluXG4gICAgaWYgc2l0ZTEgPT0gc2l0ZTEnICYmIHNpdGUyID09IHNpdGUyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmRfdG8gKHNpdGUxJywgc2l0ZTInKVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF90ZXN0IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWdlbnQsIGxpc3QpIGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZicgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIENyZWF0ZSAoYWdlbnQnLCBsaXN0KVxuICB8IE1vZF9pbnRlcm5hbCAoc2l0ZSwgaSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYnIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBNb2RfaW50ZXJuYWwgKHNpdGUnLCBpKVxuICB8IEJpbmQgKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmQgKHMxJywgczInKVxuICB8IEJpbmRfdG8gKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmRfdG8gKHMxJywgczInKVxuICB8IEZyZWUgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEZyZWUgc2l0ZSdcbiAgfCBSZW1vdmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBSZW1vdmUgYWdlbnQnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIGYgeCA9IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZiB4XG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uXG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfYWN0aW9uIH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2JpbmRpbmdfc3RhdGUgZiA9IGZ1bmN0aW9uXG4gIHwgKEFOWSB8IEZSRUUgfCBCT1VORCB8IEJPVU5EX1RZUEUgXykgYXMgeCAtPiB4XG4gIHwgQk9VTkRfdG8gKGFnLCBzKSBhcyB4IC0+XG4gICAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgICBpZiBhZyA9PSBhZycgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJPVU5EX3RvIChhZycsIHMpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZiAoKHNpdGUsIGJzdGF0ZSkgYXMgeCkgPVxuICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgbGV0IGJzdGF0ZScgPSBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmIGJzdGF0ZSBpblxuICBpZiBzaXRlID09IHNpdGUnICYmIGJzdGF0ZSA9PSBic3RhdGUnIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBzaXRlJywgYnN0YXRlJ1xuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3Rfc2lkZV9lZmZlY3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCBmIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZikgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudCBmIGYnIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicpIGUuYWN0aW9ucztcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmKSBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9zaXRlIGYpIGUuc2lkZV9lZmZlY3RzX2RzdDtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgZicgeCA9XG4gIHN1YnN0X21hcDJfYWdlbnRfaW5fZXZlbnRcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpXG4gICAgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmJylcbiAgICB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzIGYgKGFnZW50LCBpZCkgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgIGFnZW50XG4gICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWdlbnQpXG4gICAgaWRcblxubGV0IHByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19IZXJlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuICB8IEhhc19JbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSGFzX0ludGVybmFsKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBJc19GcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IElzX0JvdW5kIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCAodHksIHNpZCkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJ0eXBlKCVhLCV0KVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB0eSBzaWRcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgdHlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5KVxuICAgICAgICAgICAgc2lkKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0JvdW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG5cbmxldCBwcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlICgoKF8sIHR5KSBhcyBhZ2VudCksIGxpc3QpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkNyZWF0ZSglYVtAWzxoPiVhQF1dKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnZW50XG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKHgsIHkpIC0+XG4gICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHggZiB5XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCB5IHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHhcbiAgICAgICAgICAgICB8IFNvbWUgeSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB4IHkpKSlcbiAgICAgIGxpc3RcbiAgfCBNb2RfaW50ZXJuYWwgKChhZywgaWQpLCBpbnQpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIk1vZCglYS4lYSlcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIGlkKVxuICAgICAgaW50XG4gIHwgQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kX3RvKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgRnJlZSBzaXRlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkZyZWUoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBSZW1vdmUgYWdlbnQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiUmVtb3ZlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuXG5sZXQgcHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZSA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiKlwiXG4gIHwgRlJFRSAtPiAoKVxuICB8IEJPVU5EIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiFfXCJcbiAgfCBCT1VORF9UWVBFIChzLCBhKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWEuJWFcIlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcbiAgfCBCT1VORF90byAoKGFnX2lkLCBhZyksIHMpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYV8laS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lnc1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBhZyBhZ19pZFxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBzXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwiYmluZGluZ190eXBlXFxcIjp7XFxcInR5cGVcXFwiOjAsXFxcInNpdGVcXFwiOjF9LFxcXCJxdWFya1xcXCI6e1xcXCJhZ2VudFxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInRlc3RcXFwiOltcXFwiSXNfaGVyZVxcXCIsXFxcIkhhc19JbnRlcm5hbFxcXCIsXFxcIklzX0ZyZWVcXFwiLFxcXCJJc19Cb3VuZFxcXCIsXFxcIkhhc19CaW5kaW5nX3R5cGVcXFwiLFxcXCJJc19Cb3VuZF90b1xcXCJdLFxcXCJhY3Rpb25zXFxcIjpbXFxcIkNyZWF0ZVxcXCIsXFxcIk1vZF9pbnRlcm5hbFxcXCIsXFxcIkJpbmRcXFwiLFxcXCJCaW5kX3RvXFxcIixcXFwiRnJlZVxcXCIsXFxcIlJlbW92ZVxcXCJdLFxcXCJiaW5kaW5nX3N0YXRlXFxcIjpbXFxcIkFOWVxcXCIsXFxcIkZSRUVcXFwiLFxcXCJCT1VORFxcXCIsXFxcIkJPVU5EX1RZUEVcXFwiLFxcXCJCT1VORF90b1xcXCJdLFxcXCJldmVudFxcXCI6e1xcXCJ0ZXN0c1xcXCI6MCxcXFwiYWN0aW9uc1xcXCI6MSxcXFwic2lkZV9lZmZlY3Rfc3JjXFxcIjoyLFxcXCJzaWRlX2VmZmVjdF9kc3RcXFwiOjMsXFxcImNvbm5lY3Rpdml0eV90ZXN0c1xcXCI6NH1cIlxuXG5sZXQgd3JpdGVfYmluZGluZ190eXBlIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfYmluZGluZ190eXBlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcblxubGV0IGJpbmRpbmdfdHlwZV90b19qc29uICh0eSwgcykgPSBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdXG5cbmxldCBiaW5kaW5nX3R5cGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSAtPiB0eSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgYmluZGluZ190eXBlXCIsIHgpKVxuXG5sZXQgd3JpdGVfcXVhcmsgZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX3F1YXJrIGYgcCBsYiA9IEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcbmxldCBxdWFya190b19qc29uIGYgKGFnLCBzKSA9IGBMaXN0IFsgZiBhZzsgYEludCBzIF1cblxubGV0IHF1YXJrX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhZzsgYEludCBzIF0gLT4gZiBhZywgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHF1YXJrXCIsIHgpKVxuXG5sZXQgd3JpdGVfdGVzdCBmIG9iIHQgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCB0IHdpdGhcbiAgICB8IElzX0hlcmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7IChmdW4gbyAtPiBmIG8gYSkgXVxuICAgIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgSXNfRnJlZSBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSXNfQm91bmQgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA0KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvYiBiKTtcbiAgICAgIF1cbiAgICB8IElzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA1KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMxKTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMyKTtcbiAgICAgIF0pXG5cbmxldCByZWFkX3Rlc3QgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCB5ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIElzX0hlcmUgeVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIEhhc19JbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfRnJlZSBzXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIElzX0JvdW5kIHNcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IGJpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBIYXNfQmluZGluZ190eXBlIChzLCBiaSlcbiAgICAgIHwgNSAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmRfdG8gKHMxLCBzMilcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIHRlc3RcIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCB0ZXN0X3RvX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhIC0+IGBMaXN0IFsgYEludCAwOyBmIGEgXVxuICB8IEhhc19JbnRlcm5hbCAocywgaSkgLT4gYExpc3QgWyBgSW50IDE7IHF1YXJrX3RvX2pzb24gZiBzOyBgSW50IGkgXVxuICB8IElzX0ZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IElzX0JvdW5kIHMgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBIYXNfQmluZGluZ190eXBlIChzLCBiKSAtPlxuICAgIGBMaXN0IFsgYEludCA0OyBxdWFya190b19qc29uIGYgczsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICBgTGlzdCBbIGBJbnQgNTsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuXG5sZXQgdGVzdF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhIF0gLT4gSXNfSGVyZSAoZiBhKVxuICB8IGBMaXN0IFsgYEludCAxOyBzOyBgSW50IGkgXSAtPiBIYXNfSW50ZXJuYWwgKHF1YXJrX29mX2pzb24gZiBzLCBpKVxuICB8IGBMaXN0IFsgYEludCAyOyBzIF0gLT4gSXNfRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMgXSAtPiBJc19Cb3VuZCAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IHM7IGIgXSAtPlxuICAgIEhhc19CaW5kaW5nX3R5cGUgKHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3R5cGVfb2ZfanNvbiBiKVxuICB8IGBMaXN0IFsgYEludCA1OyBzMTsgczIgXSAtPlxuICAgIElzX0JvdW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHRlc3RcIiwgeCkpXG5cbmxldCB3cml0ZV9hY3Rpb24gZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggYSB3aXRoXG4gICAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gZiBvIGFnKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpKVxuICAgICAgICAgICAgbyBpbmZvKTtcbiAgICAgIF1cbiAgICB8IE1vZF9pbnRlcm5hbCAocywgaSkgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyBpKTtcbiAgICAgIF1cbiAgICB8IEJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczIpO1xuICAgICAgXVxuICAgIHwgQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBGcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBSZW1vdmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSk7IChmdW4gbyAtPiBmIG8gYSkgXSlcblxubGV0IHJlYWRfYWN0aW9uIGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgIHwgMCAtPlxuICAgICAgICBsZXQgYWcgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfb3B0aW9uIFlvanNvbi5CYXNpYy5yZWFkX2ludCkpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBDcmVhdGUgKGFnLCBpbmZvKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIE1vZF9pbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQmluZCAoczEsIHMyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kX3RvIChzMSwgczIpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEZyZWUgc1xuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIFJlbW92ZSBhXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBhY3Rpb25cIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBhY3Rpb25fdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMDtcbiAgICAgICAgZiBhZztcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIChzLCBpKSAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgKGBJbnQgc1xuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBbIGBJbnQgaSBdKSkpXG4gICAgICAgICAgICAgaW5mbyk7XG4gICAgICBdXG4gIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgQmluZCAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEJpbmRfdG8gKHMxLCBzMikgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzMTsgcXVhcmtfdG9fanNvbiBmIHMyIF1cbiAgfCBGcmVlIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBSZW1vdmUgYSAtPiBgTGlzdCBbIGBJbnQgNTsgZiBhIF1cblxubGV0IGFjdGlvbl9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhZzsgYExpc3QgaW5mbyBdIC0+XG4gICAgQ3JlYXRlXG4gICAgICAoIGYgYWcsXG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzIF0gLT4gcywgTm9uZVxuICAgICAgICAgICAgfCBgTGlzdCBbIGBJbnQgczsgYEludCBpIF0gLT4gcywgU29tZSBpXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhY3Rpb24gaW5mb1wiLCB4KSkpXG4gICAgICAgICAgaW5mbyApXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IE1vZF9pbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMxOyBzMiBdIC0+IEJpbmQgKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCAzOyBzMTsgczIgXSAtPiBCaW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCBgTGlzdCBbIGBJbnQgNDsgcyBdIC0+IEZyZWUgKHF1YXJrX29mX2pzb24gZiBzKVxuICB8IGBMaXN0IFsgYEludCA1OyBhIF0gLT4gUmVtb3ZlIChmIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBhY3Rpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9iaW5kaW5nX3N0YXRlIGYgb2IgYmYgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBiZiB3aXRoXG4gICAgfCBBTlkgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApIF1cbiAgICB8IEZSRUUgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpIF1cbiAgICB8IEJPVU5EIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKSBdXG4gICAgfCBCT1VORF9UWVBFIGIgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTsgKGZ1biBvIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvIGIpO1xuICAgICAgXVxuICAgIHwgQk9VTkRfdG8gcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF0pXG5cbmxldCByZWFkX2JpbmRpbmdfc3RhdGUgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+IEFOWVxuICAgICAgfCAxIC0+IEZSRUVcbiAgICAgIHwgMiAtPiBCT1VORFxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBiID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBCT1VORF9UWVBFIGJcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQk9VTkRfdG8gc1xuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgYmluZGluZyBzdGF0ZVwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gYExpc3QgWyBgSW50IDAgXVxuICB8IEZSRUUgLT4gYExpc3QgWyBgSW50IDEgXVxuICB8IEJPVU5EIC0+IGBMaXN0IFsgYEludCAyIF1cbiAgfCBCT1VORF9UWVBFIGIgLT4gYExpc3QgWyBgSW50IDM7IGJpbmRpbmdfdHlwZV90b19qc29uIGIgXVxuICB8IEJPVU5EX3RvIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cblxubGV0IGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgMCBdIC0+IEFOWVxuICB8IGBMaXN0IFsgYEludCAxIF0gLT4gRlJFRVxuICB8IGBMaXN0IFsgYEludCAyIF0gLT4gQk9VTkRcbiAgfCBgTGlzdCBbIGBJbnQgMzsgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSBdIC0+IEJPVU5EX1RZUEUgKHR5LCBzKVxuICB8IGBMaXN0IFsgYEludCA0OyBgTGlzdCBbIGFnOyBgSW50IHMgXSBdIC0+IEJPVU5EX3RvIChmIGFnLCBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJpbmRpbmdfc3RhdGVcIiwgeCkpXG5cbmxldCB3cml0ZV9ldmVudCBmIG9iIGUgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIFtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpKSBvIGUudGVzdHMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX2FjdGlvbiBmKSBvIGUuYWN0aW9ucyk7XG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgKHdyaXRlX3F1YXJrIGYpICh3cml0ZV9iaW5kaW5nX3N0YXRlIGYpKVxuICAgICAgICAgIG8gZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV9xdWFyayBmKSBvIGUuc2lkZV9lZmZlY3RzX2RzdCk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfdGVzdCBmKSBvIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCByZWFkX2V2ZW50IGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudFxuICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX3Rlc3QgZikpKVxuICAgIChmdW4gc3QgYiB0ZXN0cyAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9hY3Rpb24gZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgKHJlYWRfcXVhcmsgZikgKHJlYWRfYmluZGluZ19zdGF0ZSBmKSkpXG4gICAgICAgICAgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfcXVhcmsgZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIHsgdGVzdHM7IGFjdGlvbnM7IHNpZGVfZWZmZWN0c19zcmM7IHNpZGVfZWZmZWN0c19kc3Q7IGNvbm5lY3Rpdml0eV90ZXN0cyB9KVxuICAgIHN0IGJcblxubGV0IGV2ZW50X3RvX2pzb24gZiBlID1cbiAgYExpc3RcbiAgICBbXG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgKGZ1biBjY3QgLT4gYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgY2N0KSkgZS50ZXN0cyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKGFjdGlvbl90b19qc29uIGYpIGUuYWN0aW9ucyk7XG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biAocywgYikgLT5cbiAgICAgICAgICAgICBgTGlzdCBbIHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3N0YXRlX3RvX2pzb24gZiBiIF0pXG4gICAgICAgICAgIGUuc2lkZV9lZmZlY3RzX3NyYyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKHF1YXJrX3RvX2pzb24gZikgZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAodGVzdF90b19qc29uIGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCBldmVudF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYExpc3QgdDsgYExpc3QgYTsgYExpc3Qgc19lX3NyYzsgYExpc3Qgc19lX2RzdDsgYExpc3QgY190IF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IGNjbCAtPiBMaXN0Lm1hcCAodGVzdF9vZl9qc29uIGYpIGNjbFxuICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICB0O1xuICAgICAgICAgYWN0aW9ucyA9IExpc3QubWFwIChhY3Rpb25fb2ZfanNvbiBmKSBhO1xuICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYiBdIC0+IHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3N0YXRlX29mX2pzb24gZiBiXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNfZV9zcmM7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdC5tYXAgKHF1YXJrX29mX2pzb24gZikgc19lX2RzdDtcbiAgICAgICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY190O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGV2ZW50XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFRyYW5zZm9ybWF0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBZ2VudCBvZiAnYVxuICAgIHwgRnJlZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBMaW5rZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlICogJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgb2ZcbiAgICAgICAgJ2EgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZSAqIEluc3RhbnRpYXRpb24uaW50ZXJuYWxfc3RhdGVcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuXG4gIGxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBgQXNzb2MgWyBcIkFnZW50XCIsIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhIF1cbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVlZFwiLCBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHMgXSBdXG4gICAgfCBMaW5rZWQgKChhLCBzKSwgKGIsIHQpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiTGlua2VkXCIsXG4gICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7XG4gICAgICAgICAgICAgICAgYEludCBzO1xuICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBiO1xuICAgICAgICAgICAgICAgIGBJbnQgdDtcbiAgICAgICAgICAgICAgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFsgXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIixcbiAgICAgICAgICAgIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgczsgYEludCBpIF0gKTtcbiAgICAgICAgXVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcIkFnZW50XCIsIGEpIF0gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiTGlua2VkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBiOyBgSW50IHQgXSkgXSAtPlxuICAgICAgTGlua2VkICgoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpLCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGIsIHQpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVXaGF0RXZlclwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcylcbiAgICB8IGBBc3NvYyBbIChcIlBvc2l0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBgSW50IGkgXSkgXSAtPlxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzLCBpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEZyZWVkIChwLCBzKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEZyZWVkIChwJywgcylcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVXaGF0RXZlciAocCcsIHMpXG4gICAgfCBMaW5rZWQgKChwMSwgczEpLCAocDIsIHMyKSkgYXMgeCAtPlxuICAgICAgbGV0IHAxJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDEgaW5cbiAgICAgIGxldCBwMicgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAyIGluXG4gICAgICBpZiBwMSA9PSBwMScgJiYgcDIgPT0gcDInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBMaW5rZWQgKChwMScsIHMxKSwgKHAyJywgczIpKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzKVxuICAgIHwgQWdlbnQgcCBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEFnZW50IHAnXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IG4gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4pXG4gICAgfCBGcmVlZCAobiwgcykgLT5cbiAgICAgIEZyZWVkIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgTGlua2VkICgobiwgcyksIChuJywgcycpKSAtPlxuICAgICAgTGlua2VkXG4gICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpLFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJywgcycpIClcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcywgaSlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChuLCBzKSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG5cbiAgbGV0IG1hcF9mb2xkX2FnZW50IGYgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQWdlbnQgYSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgQWdlbnQgYScsIGFjYydcbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgRnJlZWQgKGEnLCBzKSwgYWNjJ1xuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+XG4gICAgICBsZXQgYTEnLCBhY2MnID0gZiBhMSBhY2MgaW5cbiAgICAgIGxldCBhMicsIGFjYycnID0gZiBhMiBhY2MnIGluXG4gICAgICBMaW5rZWQgKChhMScsIHMxKSwgKGEyJywgczIpKSwgYWNjJydcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcyksIGFjYydcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzLCBpKSwgYWNjJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMpLCBhY2MnXG5cbiAgbGV0IG1hcF9hZ2VudCBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IGEgLT4gQWdlbnQgKGYgYSlcbiAgICB8IEZyZWVkIChhLCBzKSAtPiBGcmVlZCAoZiBhLCBzKVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+IExpbmtlZCAoKGYgYTEsIHMxKSwgKGYgYTIsIHMyKSlcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+IE5lZ2F0aXZlV2hhdEV2ZXIgKGYgYSwgcylcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPiBQb3NpdGl2ZUludGVybmFsaXplZCAoZiBhLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMpXG5cbiAgbGV0IGZvbGRfYWdlbnQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBmIGFjYyBhXG4gICAgfCBGcmVlZCAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgTGlua2VkICgoYTEsIF8pLCAoYTIsIF8pKSAtPiBmIChmIGFjYyBhMSkgYTJcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIF8pIC0+IGYgYWNjIGFcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBfLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgXykgLT4gZiBhY2MgYVxuXG4gIGxldCBlcXVhbCBmIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBZ2VudCBhLCBBZ2VudCBhJyAtPiBmIGEgYSdcbiAgICB8ICggQWdlbnQgXyxcbiAgICAgICAgKCBGcmVlZCBfIHwgTGlua2VkIF8gfCBOZWdhdGl2ZVdoYXRFdmVyIF8gfCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyApIClcbiAgICB8IF8sIEFnZW50IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBGcmVlZCAoYSwgcyksIEZyZWVkIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8ICggRnJlZWQgXyxcbiAgICAgICAgKCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgRnJlZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IExpbmtlZCAoKGExLCBzMSksIChhMiwgczIpKSwgTGlua2VkICgoYTEnLCBzMScpLCAoYTInLCBzMicpKSAtPlxuICAgICAgKHMxID0gczEnICYmIHMyID0gczInICYmIGYgYTEgYTEnICYmIGYgYTIgYTInKVxuICAgICAgfHwgKHMxID0gczInICYmIHMyID0gczEnICYmIGYgYTEgYTInICYmIGYgYTIgYTEnKVxuICAgIHwgKCBMaW5rZWQgXyxcbiAgICAgICAgKE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKSApXG4gICAgfCBfLCBMaW5rZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpLCBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgXywgKFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKVxuICAgIHwgXywgTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpLCBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMnKSAtPlxuICAgICAgcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXywgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXywgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzJywgaScpIC0+XG4gICAgICBpID0gaScgJiYgcyA9IHMnICYmIGYgYSBhJ1xuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncykgcFxuICAgIHwgRnJlZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICV0QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgcyBQcC5ib3R0b21cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ID8/P0BdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPSAlYS4lYUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMSlcbiAgICAgICAgczFcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMilcbiAgICAgICAgczJcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChwLCBzLCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBwIHMpXG4gICAgICAgIGlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChwLCBzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWF+ID1AXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzXG5cbiAgbGV0IGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgKCgoYSwgXyksIF8pIGFzIHApIChkb24sIG91dCkgPVxuICAgIGlmIExpc3QubWVtIHAgZG9uIHx8IExpc3QubWVtIGEgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgZG9uLCBvdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxua19kc3QgcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcCA6OiBkb24sIEZyZWVkIHAgOjogb3V0XG4gICAgICB8IFNvbWUgcCcgLT4gcCA6OiBwJyA6OiBkb24sIExpbmtlZCAocCwgcCcpIDo6IG91dFxuICAgIClcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uID0gZnVuY3Rpb25cbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWdfaWQsIF8pLCBfKSAtPiBTb21lIGFnX2lkXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBOb25lXG5cbiAgbGV0IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyA9XG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb24gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uIGFjdGlvbnNcblxuICBsZXQgbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0IGFjdGlvbnMgPVxuICAgIGxldCBjcmVhdGVkX2FnZW50cyA9IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyBpblxuICAgIHNuZFxuICAgICAgKExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgKGZ1biB4ICgoZG9uLCBvdXQpIGFzIGFjYykgLT5cbiAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKF8sIF8pIC0+IGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKChpZCwgXyksIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgIGlmIExpc3QubWVtIGlkIGNyZWF0ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgIGRvbiwgb3V0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgZG9uLCBOZWdhdGl2ZUludGVybmFsaXplZCBwIDo6IG91dFxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDFcbiAgICAgICAgICAgICAgIChnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IHAyIGFjYylcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIHR5KSBhcyBhKSAtPlxuICAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIHN0IHMgLT4gZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoYSwgcykgc3QpXG4gICAgICAgICAgICAgICAoZG9uLCBBZ2VudCBhIDo6IG91dClcbiAgICAgICAgICAgICAgIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSkpXG4gICAgICAgICBhY3Rpb25zIChbXSwgW10pKVxuXG4gIGxldCBwb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIHNpZGVfZWZmZWN0X2RzdHMgYWN0aW9ucyA9XG4gICAgbGV0IHJlbSwgcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKChyZW0sIG91dCkgYXMgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKCgoXywgdHkpIGFzIGEpLCBfKSAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiAoYSwgcykgOjogc3QpXG4gICAgICAgICAgICAgICAgcmVtIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSksXG4gICAgICAgICAgICAgIEFnZW50IGEgOjogb3V0IClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoYSwgcyksIGkpIC0+XG4gICAgICAgICAgICByZW0sIFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSA6OiBvdXRcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgKCBMaXN0LmZpbHRlciAoZnVuIHAgLT4gcCA8PiBwMSAmJiBwIDw+IHAyKSByZW0sXG4gICAgICAgICAgICAgIExpbmtlZCAocDEsIHAyKSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHAgLT5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gcCcgLT4gcCcgPD4gcCkgcmVtLCBGcmVlZCBwIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPiBhY2MpXG4gICAgICAgIChbXSwgW10pIGFjdGlvbnNcbiAgICBpblxuICAgIExpc3QucmV2X2FwcGVuZCByZXZcbiAgICAgIChMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gcCAtPiBGcmVlZCBwKVxuICAgICAgICAgcmVtXG4gICAgICAgICAoTGlzdC5tYXAgKGZ1biBwIC0+IEZyZWVkIHApIHNpZGVfZWZmZWN0X2RzdHMpKVxuZW5kXG5cbnR5cGUgYWxnX2V4cHIgPSAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmVcblxudHlwZSBlbGVtZW50YXJ5X3J1bGUgPSB7XG4gIHJhdGU6IGFsZ19leHByIExvYy5hbm5vdGVkO1xuICB1bmFyeV9yYXRlOiAoYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBhbGdfZXhwciBvcHRpb24pIG9wdGlvbjtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IFBhdHRlcm4uaWQgYXJyYXk7ICgqaWQgLT4gY2MqKVxuICByZW1vdmVkOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IFRyYW5zZm9ybWF0aW9uLnQgbGlzdDtcbiAgaW5zZXJ0ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBkZWx0YV90b2tlbnM6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgc3ludGFjdGljX3J1bGU6IGludDsgICgqKiBbMF0gbWVhbnMgZ2VuZXJhdGVkIGZvciBwZXJ0dXJiYXRpb24uICopXG4gIGluc3RhbnRpYXRpb25zOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24uZXZlbnQ7XG59XG5cbmxldCBleHRyYWN0X2NjX2lkcyByID0gci5jb25uZWN0ZWRfY29tcG9uZW50c1xubGV0IGV4dHJhY3RfYWJzdHJhY3RfZXZlbnQgciA9IHIuaW5zdGFudGlhdGlvbnNcblxubGV0IGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIHIucmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICByLnVuYXJ5X3JhdGUgKTtcbiAgICAgICggXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiByLmNvbm5lY3RlZF9jb21wb25lbnRzICk7XG4gICAgICBcInJlbW92ZWRcIiwgSnNvblV0aWwub2ZfbGlzdCBUcmFuc2Zvcm1hdGlvbi50b195b2pzb24gci5yZW1vdmVkO1xuICAgICAgXCJpbnNlcnRlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLmluc2VydGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50KVxuICAgICAgICAgIHIuZGVsdGFfdG9rZW5zICk7XG4gICAgICBcInN5bnRhY3RpY19ydWxlXCIsIGBJbnQgci5zeW50YWN0aWNfcnVsZTtcbiAgICAgICggXCJpbnN0YW50aWF0aW9uc1wiLFxuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIHIuaW5zdGFudGlhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBtYXRjaCByIHdpdGhcbiAgfCAoYEFzc29jIGwgOiBZb2pzb24uQmFzaWMudCkgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJyYXRlXCIgbCk7XG4gICAgICAgICB1bmFyeV9yYXRlID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInVuYXJ5X3JhdGVcIiB4KTtcbiAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29ubmVjdGVkX2NvbXBvbmVudHNcIiB4KTtcbiAgICAgICAgIHJlbW92ZWQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0IFRyYW5zZm9ybWF0aW9uLm9mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyZW1vdmVkXCIgeCk7XG4gICAgICAgICBpbnNlcnRlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImluc2VydGVkXCIgeCk7XG4gICAgICAgICBkZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2Vuc1wiIHgpO1xuICAgICAgICAgc3ludGFjdGljX3J1bGUgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgXCJzeW50YWN0aWNfcnVsZVwiIGwpO1xuICAgICAgICAgaW5zdGFudGlhdGlvbnMgPVxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJpbnN0YW50aWF0aW9uc1wiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVsZW1lbnRhcnkgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKVxuXG5sZXQgZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIGNjID1cbiAgbGV0IF8sIHRyID1cbiAgICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgICAgKGZ1biB+cG9zIH5hZ2VudF90eXBlIGludGYgKGVtYiwgZykgLT5cbiAgICAgICAgbGV0IGEgPSBwb3MsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgbGV0IGcnID0gVHJhbnNmb3JtYXRpb24uQWdlbnQgYSA6OiBnIGluXG4gICAgICAgIGxldCBlbWInID0gTW9kcy5JbnRNYXAuYWRkIHBvcyBhIGVtYiBpblxuICAgICAgICAoIGVtYicsXG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAobCwgaSkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPVxuICAgICAgICAgICAgICAgIGlmIGkgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHNpdGUsIGkpIDo6IGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uLkZyZWVkIChhLCBzaXRlKSA6OiBhY2MnXG4gICAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rICh4JywgcycpIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgnIGVtYicgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2MnXG4gICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uTGlua2VkICgoYSwgc2l0ZSksIChhZycsIHMnKSkgOjogYWNjJykpXG4gICAgICAgICAgICBnJyBpbnRmICkpXG4gICAgICBjYyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBMaXN0LnJldiB0clxuXG50eXBlICdhbGdfZXhwciBwcmludF9leHByID1cbiAgfCBTdHJfcGV4cHIgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgQWxnX3BleHByIG9mICdhbGdfZXhwciBMb2MuYW5ub3RlZFxuXG5sZXQgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgU3RyX3BleHByIHMgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBBbGdfcGV4cHIgYSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiQVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIGEgKTtcbiAgICAgIF1cblxubGV0IHByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBBc3NvYyBbIChcIkFcIiwgeCkgXSAtPlxuICAgICh0cnlcbiAgICAgICBBbGdfcGV4cHJcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgICB4KVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBwcmludCBleHByXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgKHRyeVxuICAgICAgIFN0cl9wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuXG5sZXQgbWFwX2V4cHJfcHJpbnQgZiB4ID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gICAgICB8IEFsZ19wZXhwciBlIC0+IEFsZ19wZXhwciAoZiBlKSlcbiAgICB4XG5cbmxldCBmb2xkX2V4cHJfcHJpbnQgZiBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGYgYWNjIGUpXG4gICAgYWNjIHhcblxudHlwZSBkaW5fa2luZCA9IEFCU09MVVRFIHwgUkVMQVRJVkUgfCBQUk9CQUJJTElUWVxuXG5sZXQgZGluX2tpbmRfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBBQlNPTFVURSAtPiBgU3RyaW5nIFwiQUJTT0xVVEVcIlxuICB8IFJFTEFUSVZFIC0+IGBTdHJpbmcgXCJSRUxBVElWRVwiXG4gIHwgUFJPQkFCSUxJVFkgLT4gYFN0cmluZyBcIlBST0JBQklMSVRZXCJcblxubGV0IGRpbl9raW5kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkFCU09MVVRFXCIgLT4gQUJTT0xVVEVcbiAgfCBgU3RyaW5nIFwiUkVMQVRJVkVcIiAtPiBSRUxBVElWRVxuICB8IGBTdHJpbmcgXCJQUk9CQUJJTElUWVwiIC0+IFBST0JBQklMSVRZXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZGluX2tpbmRcIiwgeCkpXG5cbmxldCB3cml0ZV9kaW5fa2luZCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAoZGluX2tpbmRfdG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfZGluX2tpbmQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2tpbmQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX2Rpbl9raW5kIHAgbGIgPVxuICBkaW5fa2luZF9vZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IGRpbl9raW5kX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fa2luZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIG1vZGlmaWNhdGlvbiA9XG4gIHwgSVRFUl9SVUxFIG9mIGFsZ19leHByIExvYy5hbm5vdGVkICogZWxlbWVudGFyeV9ydWxlXG4gIHwgVVBEQVRFIG9mIGludCAqIGFsZ19leHByIExvYy5hbm5vdGVkXG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNUT1Agb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1cgb2ZcbiAgICAgIHN0cmluZyBvcHRpb25cbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBESU4gb2YgZGluX2tpbmQgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBESU5PRkYgb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1dPRkYgb2Ygc3RyaW5nIG9wdGlvbiAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgfCBQTE9URU5UUllcbiAgfCBQUklOVCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3QgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBTUEVDSUVTIG9mXG4gICAgICBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBTUEVDSUVTX09GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcblxubGV0IHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIHByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgcHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAobiwgcikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIjtcbiAgICAgICAgKCBcInJlcGVhdHNcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIG4gKTtcbiAgICAgICAgXCJydWxlXCIsIHJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKHYsIGUpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgXCJ2YXJcIiwgYEludCB2O1xuICAgICAgICAoIFwidmFsdWVcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGUgKTtcbiAgICAgIF1cbiAgfCBTTkFQU0hPVCAocmF3LCBmKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiO1xuICAgICAgICBcInJhd1wiLCBgQm9vbCByYXc7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgU1RPUCBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIjtcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBDRkxPVyAobmFtZSwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgICAgKCBcInRlc3RzXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24pKVxuICAgICAgICAgICAgdGVzdHMgKTtcbiAgICAgIF1cbiAgfCBDRkxPV09GRiAobmFtZSwgaWRzKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dPRkZcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgIF1cbiAgfCBESU4gKGtpbmQsIGYpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgXCJraW5kXCIsIGRpbl9raW5kX3RvX3lvanNvbiBraW5kO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgXVxuICB8IERJTk9GRiBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgQXNzb2MgWyBcImFjdGlvblwiLCBgU3RyaW5nIFwiUExPVE5PV1wiIF1cbiAgfCBQUklOVCAoZiwgdCkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCI7XG4gICAgICAgIFwidGV4dFwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgdCk7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgU1BFQ0lFUyAoZiwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU1wiO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IFNQRUNJRVNfT0ZGIGYgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNfT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG5cbmxldCBtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICAgIC0+XG4gICAgUFJJTlRcbiAgICAgICggTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZixcbiAgICAgICAgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgdCApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdIC0+XG4gICAgUFJJTlQgKFtdLCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0KVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJraW5kXCIsIGtpbmQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIikgXSAtPlxuICAgIERJTiAoZGluX2tpbmRfb2ZfeW9qc29uIGtpbmQsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGYpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAodiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBlKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXSAtPlxuICAgIElURVJfUlVMRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIG4sXG4gICAgICAgIHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIpIF0gLT4gUExPVEVOVFJZXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgW11cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gICAgLT5cbiAgICBTTkFQU0hPVCAocmF3LCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvYyBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdIC0+XG4gICAgU05BUFNIT1QgKHJhdywgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIFtdKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdIC0+XG4gICAgU1RPUCBbXVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XXCIgLT5cbiAgICBDRkxPV1xuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3Rfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb24pKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0ZXN0c1wiIGwpIClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJDRkxPV09GRlwiXG4gICAgLT5cbiAgICBDRkxPV09GRlxuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCkgKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIik7IChcImZpbGVcIiwgcCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgcCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIikgXSAtPlxuICAgIFNQRUNJRVNfT0ZGIChKc29uVXRpbC50b19saXN0IChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHApXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiU1BFQ0lFU1wiXG4gICAgLT5cbiAgICBTUEVDSUVTXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJmaWxlXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbnR5cGUgcGVydHVyYmF0aW9uID0ge1xuICBhbGFybTogTmJyLnQgb3B0aW9uO1xuICBwcmVjb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgZWZmZWN0OiBtb2RpZmljYXRpb24gbGlzdDtcbiAgcmVwZWF0OiAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ7XG4gIG5lZWRzX2JhY2t0cmFjazogYm9vbDtcbn1cblxubGV0IGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBwZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiYWxhcm1cIiwgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4gbiAtPiBOYnIudG9feW9qc29uIG4pIHAuYWxhcm07XG4gICAgICAoIFwiY29uZGl0aW9uXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBwLnByZWNvbmRpdGlvbiApO1xuICAgICAgXCJlZmZlY3RcIiwgSnNvblV0aWwub2ZfbGlzdCAobW9kaWZpY2F0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBwLmVmZmVjdDtcbiAgICAgICggXCJyZXBlYXRcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucmVwZWF0ICk7XG4gICAgICBcIm5lZWRzX2JhY2t0cmFja1wiLCBgQm9vbCBwLm5lZWRzX2JhY2t0cmFjaztcbiAgICBdXG5cbmxldCBwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNSAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBhbGFybSA9IEpzb25VdGlsLnRvX29wdGlvbiBOYnIub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiYWxhcm1cIiBsKTtcbiAgICAgICAgIHByZWNvbmRpdGlvbiA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNvbmRpdGlvblwiIGwpO1xuICAgICAgICAgZWZmZWN0ID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJlZmZlY3RcIiBsKTtcbiAgICAgICAgIHJlcGVhdCA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJlcGVhdFwiIGwpO1xuICAgICAgICAgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJvb2xcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwibmVlZHNfYmFja3RyYWNrXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKVxuXG5sZXQgZXhpc3RzX21vZGlmaWNhdGlvbiBjaGVjayBsID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gYWNjIHx8IExpc3QuZXhpc3RzIGNoZWNrIHAuZWZmZWN0KSBmYWxzZSBsXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBhIC0+IExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCBhKSBhY2MpKVxuICAgIGFjY1xuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgW11cbiAgICAoQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3J1bGUgYWNjIHIgPVxuICBsZXQgYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjICh4LCBfKSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIHgpXG4gICAgICBhY2Mgci5kZWx0YV90b2tlbnNcbiAgaW5cbiAgbGV0IGIgPVxuICAgIG1hdGNoIHIudW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGFcbiAgICB8IFNvbWUgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhIHhcbiAgaW5cbiAgbGV0IGMgPSBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYiByLnJhdGUgaW5cbiAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHIuY29ubmVjdGVkX2NvbXBvbmVudHMpIGNcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFN0cl9wZXhwciBfIC0+IGFjY1xuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUpXG4gICAgYWNjIHhcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIGFjYyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZVxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICAgIHJcbiAgfCBVUERBVEUgKF8sIGUpIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZVxuICB8IFNOQVBTSE9UIChfLCBwKSB8IFNUT1AgcCB8IFNQRUNJRVNfT0ZGIHAgfCBESU4gKF8sIHApIHwgRElOT0ZGIHAgLT5cbiAgICBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnRcbiAgICAgIChleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwKVxuICAgICAgZm5cbiAgfCBDRkxPVyAoXywgeCwgXykgfCBDRkxPV09GRiAoXywgeCkgfCBTUEVDSUVTIChfLCB4LCBfKSAtPlxuICAgIExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCB4KSBhY2NcbiAgfCBQTE9URU5UUlkgLT4gYWNjXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgbCA9XG4gIExpc3QuZm9sZF9sZWZ0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIFtdIGxcblxubGV0IG1hcF9leHByX3J1bGUgZiB4ID1cbiAge1xuICAgIHJhdGUgPSBmIHgucmF0ZTtcbiAgICB1bmFyeV9yYXRlID0gT3B0aW9uX3V0aWwubWFwIChmdW4gKHgsIGQpIC0+IGYgeCwgZCkgeC51bmFyeV9yYXRlO1xuICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0geC5jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICByZW1vdmVkID0geC5yZW1vdmVkO1xuICAgIGluc2VydGVkID0geC5pbnNlcnRlZDtcbiAgICBkZWx0YV90b2tlbnMgPSBMaXN0Lm1hcCAoZnVuICh4LCB0KSAtPiBmIHgsIHQpIHguZGVsdGFfdG9rZW5zO1xuICAgIHN5bnRhY3RpY19ydWxlID0geC5zeW50YWN0aWNfcnVsZTtcbiAgICBpbnN0YW50aWF0aW9ucyA9IHguaW5zdGFudGlhdGlvbnM7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9ydWxlIGYgeCByID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAoeSwgXykgLT4gZiBhY2MgeSlcbiAgICAoT3B0aW9uX3V0aWwuZm9sZCAoZnVuIGEgKGUsIF8pIC0+IGYgYSBlKSAoZiB4IHIucmF0ZSkgci51bmFyeV9yYXRlKVxuICAgIHIuZGVsdGFfdG9rZW5zXG5cbmxldCBtYXBfZXhwcl9tb2RpZmljYXRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBJVEVSX1JVTEUgKGYgZSwgbWFwX2V4cHJfcnVsZSBmIHIpXG4gIHwgVVBEQVRFIChpLCBlKSAtPiBVUERBVEUgKGksIGYgZSlcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPiBTTkFQU0hPVCAocmF3LCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgU1RPUCBwIC0+IFNUT1AgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBQUklOVCAoZm4sIHApIC0+IFBSSU5UIChtYXBfZXhwcl9wcmludCBmIGZuLCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgRElOIChiLCBwKSAtPiBESU4gKGIsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU5PRkYgcCAtPiBESU5PRkYgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCAoQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZKSBhcyB4IC0+IHhcbiAgfCBTUEVDSUVTIChwLCB4LCB0KSAtPiBTUEVDSUVTIChtYXBfZXhwcl9wcmludCBmIHAsIHgsIHQpXG5cbmxldCBmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGYgeCA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBmb2xkX2V4cHJfcnVsZSBmIChmIHggZSkgclxuICB8IFVQREFURSAoXywgZSkgLT4gZiB4IGVcbiAgfCBTTkFQU0hPVCAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgU1RPUCBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IFBSSU5UIChmbiwgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgKGZvbGRfZXhwcl9wcmludCBmIHggcCkgZm5cbiAgfCBESU4gKF8sIHApIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IERJTk9GRiBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IENGTE9XIF8gfCBDRkxPV09GRiBfIHwgU1BFQ0lFU19PRkYgXyB8IFBMT1RFTlRSWSAtPiB4XG4gIHwgU1BFQ0lFUyAocCwgXywgXykgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG5cbmxldCBtYXBfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIHggPVxuICB7XG4gICAgYWxhcm0gPSB4LmFsYXJtO1xuICAgIHByZWNvbmRpdGlvbiA9IGZfYm9vbCB4LnByZWNvbmRpdGlvbjtcbiAgICBlZmZlY3QgPSBMaXN0Lm1hcCAobWFwX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSB4LmVmZmVjdDtcbiAgICByZXBlYXQgPSBmX2Jvb2wgeC5yZXBlYXQ7XG4gICAgbmVlZHNfYmFja3RyYWNrID0geC5uZWVkc19iYWNrdHJhY2s7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIGFjYyB4ID1cbiAgbGV0IGExID0gZl9ib29sIGFjYyB4LnByZWNvbmRpdGlvbiBpblxuICBsZXQgYTIgPSBMaXN0LmZvbGRfbGVmdCAoZm9sZF9leHByX21vZGlmaWNhdGlvbiBmX2FsZykgYTEgeC5lZmZlY3QgaW5cbiAgZl9ib29sIGEyIHgucmVwZWF0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2Fubm90KSBsaW5rID1cbiAgfCBBTllfRlJFRVxuICB8IExOS19WQUxVRSBvZiBpbnQgKiAnYW5ub3RcbiAgfCBMTktfRlJFRVxuICB8IExOS19BTllcbiAgfCBMTktfU09NRVxuICB8IExOS19UWVBFIG9mICdhICogJ2EgICgqKiBwb3J0ICogYWdlbnRfdHlwZSAqKVxuXG50eXBlIHN3aXRjaGluZyA9IExpbmtlZCBvZiBpbnQgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWRcblxudHlwZSBydWxlX2ludGVybmFsID1cbiAgfCBJX0FOWVxuICB8IElfQU5ZX0NIQU5HRUQgb2YgaW50XG4gIHwgSV9BTllfRVJBU0VEXG4gIHwgSV9WQUxfQ0hBTkdFRCBvZiBpbnQgKiBpbnRcbiAgfCBJX1ZBTF9FUkFTRUQgb2YgaW50XG5cbnR5cGUgcnVsZV9hZ2VudCA9IHtcbiAgcmFfdHlwZTogaW50O1xuICByYV9lcmFzZWQ6IGJvb2w7XG4gIHJhX3BvcnRzOiAoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheTtcbiAgcmFfaW50czogcnVsZV9pbnRlcm5hbCBhcnJheTtcbiAgcmFfc3ludGF4OlxuICAgICgoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheVxuICAgICogcnVsZV9pbnRlcm5hbCBhcnJheSlcbiAgICBvcHRpb247XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlID0gcnVsZV9hZ2VudCBsaXN0XG5cbnR5cGUgcnVsZSA9IHtcbiAgcl9taXg6IHJ1bGVfbWl4dHVyZTtcbiAgcl9jcmVhdGVkOiBSYXdfbWl4dHVyZS50O1xuICByX2RlbHRhX3Rva2VuczogKChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgcl9yYXRlOiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIHJfdW5fcmF0ZTpcbiAgICAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcl9lZGl0X3N0eWxlOiBib29sO1xufVxuXG5sZXQgcHJpbnRfbGluayBwcl9wb3J0IHByX3R5cGUgcHJfYW5ub3QgZiA9IGZ1bmN0aW9uXG4gIHwgQU5ZX0ZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiI1wiXG4gIHwgTE5LX1RZUEUgKHAsIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiIChwcl9wb3J0IGEpIHAgcHJfdHlwZSBhXG4gIHwgTE5LX0FOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBMTktfU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaSVhXCIgaSBwcl9hbm5vdCBhXG5cbmxldCBsaW5rX3RvX2pzb24gcG9ydF90b19qc29uIHR5cGVfdG9fanNvbiBhbm5vdF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBgU3RyaW5nIFwiQU5ZX0ZSRUVcIlxuICB8IExOS19GUkVFIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gYExpc3QgWyBwb3J0X3RvX2pzb24gYSBwOyB0eXBlX3RvX2pzb24gYSBdXG4gIHwgTE5LX0FOWSAtPiBgTnVsbFxuICB8IExOS19TT01FIC0+IGBTdHJpbmcgXCJTT01FXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IGBMaXN0IChgSW50IGkgOjogYW5ub3RfdG9fanNvbiBhKVxuXG5sZXQgbGlua19vZl9qc29uIHBvcnRfb2ZfanNvbiB0eXBlX29mX2pzb24gYW5ub3RlZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQU5ZX0ZSRUVcIiAtPiBBTllfRlJFRVxuICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTE5LX0ZSRUVcbiAgfCBgTGlzdCBbIHA7IGEgXSAtPlxuICAgIGxldCB4ID0gdHlwZV9vZl9qc29uIGEgaW5cbiAgICBMTktfVFlQRSAocG9ydF9vZl9qc29uIHggcCwgeClcbiAgfCBgTnVsbCAtPiBMTktfQU5ZXG4gIHwgYFN0cmluZyBcIlNPTUVcIiAtPiBMTktfU09NRVxuICB8IGBMaXN0IChgSW50IGkgOjogKChbXSB8IF8gOjogXyA6OiBfKSBhcyBhKSkgLT5cbiAgICBMTktfVkFMVUUgKGksIGFubm90ZWRfb2ZfanNvbiBhKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGxpbmtcIiwgeCkpXG5cbmxldCBwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncyBmIChzLCBhKSA9XG4gIGlmIGx0eXBlcyB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8qJWEuJWEqL1wiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhKVxuICAgICAgc1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgYVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRlcm5hbCBzaWdzIH5zaG93X2VyYXNlZCBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjLyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBqXG4gIHwgSV9BTllfRVJBU0VEIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjJXR9XCIgKGZ1biBmIC0+XG4gICAgICAgIGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIilcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhLyVhfVwiXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBpXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBqXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuICB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYSV0fVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gICAgICAoZnVuIGYgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuXG5sZXQgcnVsZV9pbnRlcm5hbF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiBgTnVsbFxuICB8IElfQU5ZX0NIQU5HRUQgaiAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF1cbiAgfCBJX0FOWV9FUkFTRUQgLT4gYFN0cmluZyBcIkVSQVNFRFwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gYExpc3QgWyBgSW50IGk7IGBJbnQgaiBdXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT4gYExpc3QgWyBgSW50IGk7IGBTdHJpbmcgXCJFUkFTRURcIiBdXG5cbmxldCBydWxlX2ludGVybmFsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IElfQU5ZXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQU5ZXCI7IGBJbnQgaiBdIC0+IElfQU5ZX0NIQU5HRUQgalxuICB8IGBTdHJpbmcgXCJFUkFTRURcIiAtPiBJX0FOWV9FUkFTRURcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF0gLT4gSV9WQUxfQ0hBTkdFRCAoaSwgailcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF0gLT4gSV9WQUxfRVJBU0VEIGlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBydWxlX2ludGVybmFsXCIsIHgpKVxuXG5sZXQgcHJpbnRfc3dpdGNoaW5nIH5zaG93X2VyYXNlZCBmID0gZnVuY3Rpb25cbiAgfCBMaW5rZWQgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLyVpXCIgaVxuICB8IEZyZWVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi8uXCJcbiAgfCBNYWludGFpbmVkIC0+ICgpXG4gIHwgRXJhc2VkIC0+IGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIlxuXG5sZXQgc3dpdGNoaW5nX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEZyZWVkIC0+IGBTdHJpbmcgXCJGcmVlZFwiXG4gIHwgTWFpbnRhaW5lZCAtPiBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiXG4gIHwgRXJhc2VkIC0+IGBTdHJpbmcgXCJFcmFzZWRcIlxuICB8IExpbmtlZCBpIC0+IEpzb25VdGlsLm9mX2ludCBpXG5cbmxldCBzd2l0Y2hpbmdfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkZyZWVkXCIgLT4gRnJlZWRcbiAgfCBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiIC0+IE1haW50YWluZWRcbiAgfCBgU3RyaW5nIFwiRXJhc2VkXCIgLT4gRXJhc2VkXG4gIHwgeCAtPiBMaW5rZWQgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwiSW52YWxpZCBTd2l0Y2hpbmdcIiB4KVxuXG5sZXQgcHJpbnRfcnVsZV9saW5rIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgZiAoKGUsIF8pLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWElYV1cIlxuICAgIChwcmludF9saW5rXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncykpXG4gICAgZVxuICAgIChwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkKVxuICAgIHNcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBjLCB0cnVlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JWlcIiBjXG4gIHwgYywgZmFsc2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiBjXG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIGNvdW50ZXJzIGogZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIGNvdW50ZXJzIGkgaW5cbiAgICBsZXQgcywgKF8sIGlzX2NvdW50ZXIpID0gTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgbGV0IGRlbHRhID1cbiAgICAgIGlmIGlzX2NvdW50ZXIgdGhlblxuICAgICAgICBzIC0gMVxuICAgICAgZWxzZVxuICAgICAgICBqIC0gaVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8rPSVkXCIgZGVsdGFcbiAgfCBGcmVlZCAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ2Fubm90IGVyYXNlIGFsbCBpbmNyZW1lbnQgYWdlbnRzXCIpKVxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gKClcblxubGV0IHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzIGFnX3R5IGZcbiAgICAocG9ydHMsIGludHMsIGNvdW50ZXJzLCBjcmVhdGVkX2NvdW50ZXJzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIE1haW50YWluZWQgLT4gaW50cy4oaSkgPD4gSV9BTllcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKVxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBBTllfRlJFRSB8IExOS19GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IChlLCBfKSwgc3dpdGNoID0gcG9ydHMuKGkpIGluXG4gICAgICAgIGxldCBpc19jb3VudGVyID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+IGZhbHNlXG4gICAgICAgICAgfCBMTktfVkFMVUUgKGosIF8pIC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaiBpblxuICAgICAgICAgICAgICAgbGV0IGMsIChlcSwgaXNfY291bnRlcicpID1cbiAgICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgaXNfY291bnRlcicgJiYgbm90IG5vQ291bnRlcnMgdGhlbiAoXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVheyVhJWF9XCJcbiAgICAgICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgICAgICAgICBpIHByaW50X2NvdW50ZXJfdGVzdFxuICAgICAgICAgICAgICAgICAgIChjIC0gMSwgZXEpXG4gICAgICAgICAgICAgICAgICAgKHByaW50X2NvdW50ZXJfZGVsdGEgY3JlYXRlZF9jb3VudGVycyBqKVxuICAgICAgICAgICAgICAgICAgIHN3aXRjaDtcbiAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgbm90IGlzX2NvdW50ZXIgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYSVhXCJcbiAgICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IGkpXG4gICAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcylcbiAgICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IFJhd19taXh0dXJlLmNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5yYV90eXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgKGJlZm9yZSwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICBsZXQgKGEsIF8pLCBfID0gYWcucmFfcG9ydHMuKGFmdGVyKSBpblxuICAgICAgICAgICAgbGV0IChiLCBfKSwgXyA9IGFnLnJhX3BvcnRzLihiZWZvcmUpIGluXG4gICAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+ICgpXG4gICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2IsIF8pIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgfCBMTktfVkFMVUUgKGxua19hLCBfKSAtPiBSYXdfbWl4dHVyZS51bmlvbiB0IGxua19iIGxua19hXG4gICAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX0FOWSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAoZmFsc2UsIHRydWUpKVxuICAgICAgICAgICAgICB8IExOS19UWVBFIF8gfCBMTktfU09NRSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlBvcnQgYSBvZiBfX2NvdW50ZXJfYWdlbnQgYWdlbnQgbm90IHdlbGwgc3BlY2lmaWVkXCIpKSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcnMgY3JlYXRlZF9jb3VudGVycyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgYWcucmFfdHlwZVxuICAgIChwcmludF9ydWxlX2ludGYgfm5vQ291bnRlcnMgc2lncyB+c2hvd19lcmFzZWQ6ZmFsc2Ugfmx0eXBlcyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpIChmdW4gZiAtPlxuICAgICAgaWYgYWcucmFfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiKVxuXG5sZXQgcHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjcmVhdGVkIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBtaXggaW5cbiAgbGV0IGNyZWF0ZWRfaW5jciA9IFJhd19taXh0dXJlLnVuaW9uX2ZpbmRfY291bnRlcnMgKFNvbWUgc2lncykgY3JlYXRlZCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgaC5yYV90eXBlICYmIG5vdCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgYXV4X3ByaW50IHNvbWUgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGlmIHNvbWUgdGhlbiBQcC5jb21tYSBmIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcl9hZ2VudHMgY3JlYXRlZF9pbmNyXG4gICAgICAgICAgICBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgZmFsc2UgbWl4XG5cbmxldCBwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsjfVwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcblxubGV0IHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogfCBJX1ZBTF9DSEFOR0VEIChfLCBqKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgfCBJX1ZBTF9FUkFTRUQgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHByaW50X2xpbmtfbGhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIF8pID1cbiAgcHJpbnRfbGlua1xuICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgZiBlXG5cbmxldCBwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MgZiAoKGUsIF8pLCBzKSA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICBmXG4gICAgICAoTE5LX1ZBTFVFIChpLCAoKSkpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgTWFpbnRhaW5lZCAtPlxuICAgIHByaW50X2xpbmtcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKVxuICAgICAgZiBlXG4gIHwgRXJhc2VkIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfaW50Zl9saHMgfmx0eXBlcyBzaWdzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoKExOS19TT01FIHwgTE5LX0ZSRUUgfCBBTllfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgXyAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCBfIHwgSV9WQUxfRVJBU0VEIF8gLT4gdHJ1ZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFbJWFdXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICBpXG4gICAgICAgICAgICAocHJpbnRfaW50ZXJuYWxfbGhzIHNpZ3MgYWdfdHkgaSlcbiAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAocHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzKVxuICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCAoRXJhc2VkIHwgRnJlZWQgfCBMaW5rZWQgXykgLT4gdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gaSA8PiBqXG4gICAgICAgICAgfCBJX0FOWV9FUkFTRUQgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9yaHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2FnZW50X2xocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgYWcucmFfdHlwZVxuICAgIChwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9hZ2VudF9yaHMgfmx0eXBlcyBzaWdzIGYgYWcgPVxuICBpZiBub3QgYWcucmFfZXJhc2VkIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKVwiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhZy5yYV90eXBlXG4gICAgICAocHJpbnRfaW50Zl9yaHMgfmx0eXBlcyBzaWdzIGFnLnJhX3R5cGUpXG4gICAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlcyBzaWdzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgcmVjIGF1eCBlbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmluaXRpYWxfY29tbWE6KG5vdCBlbXB0eSkgfmNyZWF0ZWQ6ZmFsc2VcbiAgICAgICAgfnNpZ3MgZiBjcmVhdGVkXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGgucmFfZXJhc2VkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldC5cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLmNvbW1hKVxuICAgICAgICAgICAgKHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApXG4gIGluXG4gIGF1eCB0cnVlIG1peFxuXG5sZXQgcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIGxldCBsdHlwZXMgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiIEBAICVhJXRcIlxuICAgIChBbGdfZXhwci5wcmludFxuICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICBtKVxuICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgKGZzdCByLnJfcmF0ZSlcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIucl91bl9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lICgocmEsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIlxuICAgICAgICAgIChBbGdfZXhwci5wcmludFxuICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgcmFcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiAobWQsIF8pIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCJcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICAgICAgICBtZCkpXG4gICAgICAgICAgbWF4X2Rpc3QpXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4ldCV0JWEldEBdXCJcbiAgICAoZnVuIGYgLT5cbiAgICAgIGlmIGZ1bGwgfHwgci5yX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugci5yX2NyZWF0ZWQpXG4gICAgICAgICAgci5yX21peFxuICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6KHIucl9taXggPD4gW10pIH5zaWdzKVxuICAgICAgICAgIHIucl9jcmVhdGVkXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0JWEgLT4gJWFcIlxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChwcmludF9hZ2VudF9saHMgfmx0eXBlczpmYWxzZSBzaWdzKSlcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKGZ1biBmIC0+IGlmIHIucl9taXggPD4gW10gJiYgci5yX2NyZWF0ZWQgPD4gW10gdGhlbiBQcC5jb21tYSBmKVxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIikpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgICAgICAocHJpbnRfcmhzIH5ub0NvdW50ZXJzIH5sdHlwZXM6ZmFsc2Ugc2lncyByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4KVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX2RlbHRhX3Rva2VucyB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKChuYiwgXyksIHRrKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCJcbiAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2UgW10pXG4gICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICBuYiBwcl90b2sgdGspKVxuICAgIHIucl9kZWx0YV90b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZnVsbCB0aGVuIHByaW50X3JhdGVzIH5ub0NvdW50ZXJzIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIpXG5cbmxldCBydWxlX2FnZW50X3RvX2pzb24gZmlsZW5hbWVzIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLnJhX3R5cGU7XG4gICAgICAoIFwiYmluZGluZ3NcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKGUsIHMpIGMgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgKGxpbmtfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHMsIGEpIC0+IFsgYEludCBzOyBgSW50IGEgXSkpXG4gICAgICAgICAgICAgICAgICAgICBlO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZ190b19qc29uIHM7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJzdGF0ZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBjIC0+IHJ1bGVfaW50ZXJuYWxfdG9fanNvbiB4IDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9pbnRzIFtdKSApO1xuICAgICAgXCJlcmFzZWRcIiwgYEJvb2wgYS5yYV9lcmFzZWQ7XG4gICAgXVxuXG5sZXQgcnVsZV9hZ2VudF9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiYmluZGluZ3NcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPlxuICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIGU7IHMgXSAtPlxuICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbIGBJbnQgczsgYEludCBhIF0gLT4gcywgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX29mX2pzb24gcyApXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNcbiAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICBpblxuICAgICAgIGxldCBpbnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJzdGF0ZXNcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBydWxlX2ludGVybmFsX29mX2pzb24gc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgcmFfdHlwZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInR5cGVcIiBsKTtcbiAgICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICByYV9pbnRzID0gaW50cztcbiAgICAgICAgIHJhX2VyYXNlZCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlcmFzZWRcIiBsKTtcbiAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKHBvcnRzLCBpbnRzKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcnVsZV9hZ2VudFwiLCB4KSlcblxubGV0IHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLm9mX2xpc3QgKHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpXG5cbmxldCBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBKc29uVXRpbC50b19saXN0IChydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzKVxuXG5sZXQgbGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcIm1peHR1cmVcIiwgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzIHIucl9taXg7XG4gICAgICBcImNyZWF0ZWRcIiwgUmF3X21peHR1cmUudG9fanNvbiByLnJfY3JlYXRlZDtcbiAgICAgICggXCJkZWx0YV90b2tlbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5yX2RlbHRhX3Rva2VucyApO1xuICAgICAgKCBcInJhdGVcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykgci5yX3JhdGVcbiAgICAgICk7XG4gICAgICAoIFwidW5hcnlfcmF0ZVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgci5yX3VuX3JhdGUgKTtcbiAgICAgIFwiZWRpdF9zdHlsZVwiLCBgQm9vbCByLnJfZWRpdF9zdHlsZTtcbiAgICBdXG5cbmxldCBydWxlX29mX2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCA3IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJfbWl4ID0gcnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzIChMaXN0LmFzc29jIFwibWl4dHVyZVwiIGwpO1xuICAgICAgICAgcl9jcmVhdGVkID0gUmF3X21peHR1cmUub2ZfanNvbiAoTGlzdC5hc3NvYyBcImNyZWF0ZWRcIiBsKTtcbiAgICAgICAgIHJfZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJkZWx0YV90b2tlbnNcIiBsKTtcbiAgICAgICAgIHJfcmF0ZSA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHJfdW5fcmF0ZSA9XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSkpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidW5hcnlfcmF0ZVwiIGwpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKTtcbiAgICAgICAgIHJfZWRpdF9zdHlsZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlZGl0X3N0eWxlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKVxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBvcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCByYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKFwiSW4gYSBwYXR0ZXJuLCBhIHNpdGUgY2Fubm90IGhhdmUgc2V2ZXJhbCBpbnRlcm5hbCBzdGF0ZXMuXCIsIHBvcykpXG5cbmxldCByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzIH5zaWRlIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgXCIgXiBzdGF0dXMgXiBcIiBzdGF0ZSBvZiBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lIF4gXCInLCBzaXRlICdcIiBeIG5hXG4gICAgICAgICBeIFwiJyBvbiB0aGUgXCIgXiBzaWRlIF4gXCIgaGFuZCBzaWRlIGlzIHVuZGVyc3BlY2lmaWVkXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoaXMgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJTaXRlICdcIiBeIG5hIF4gXCInIG9jY3VycyBib3RoIGFzIHBvcnQgYW5kIGFzIGNvdW50ZXIgaW4gJ1wiXG4gICAgICAgICBeIGFnZW50X25hbWUgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgXiBcIicgb2NjdXJzIG9ubHkgb25lIHRpbWUgaW4gdGhlIG1peHR1cmUuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpIF4gXCInIHNob3VsZCBiZSBtYWRlIGZyZWUgaW4gdGhlIHNpdGUgJ1wiXG4gICAgICAgICBeIG5hIF4gXCInIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWVcbiAgICAgICAgIF4gXCInLCBzaW5jZSBpdCB3aWxsIG1hZGUgYmUgZnJlZSBieSBzaWRlLWVmZmVjdC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgY29weV9ydWxlX2FnZW50IGEgPVxuICBsZXQgcCA9IEFycmF5LmNvcHkgYS5yYV9wb3J0cyBpblxuICBsZXQgaSA9IEFycmF5LmNvcHkgYS5yYV9pbnRzIGluXG4gIHtcbiAgICByYV90eXBlID0gYS5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IGEucmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzID0gcDtcbiAgICByYV9pbnRzID0gaTtcbiAgICByYV9zeW50YXggPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gXyAtPiBBcnJheS5jb3B5IHAsIEFycmF5LmNvcHkgaSkgYS5yYV9zeW50YXg7XG4gIH1cblxubGV0IGFnZW50X3RvX2VyYXNlZCBzaWdzIHIgPVxuICBsZXQgcmFfcG9ydHMgPSBBcnJheS5tYXAgKGZ1biAoYSwgXykgLT4gYSwgRXJhc2VkKSByLnJhX3BvcnRzIGluXG4gIGxldCByYV9pbnRzID1cbiAgICBBcnJheS5tYXBpXG4gICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0VSQVNFRCBpXG4gICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAobWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncyB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gSV9BTllfRVJBU0VEXG4gICAgICAgICAgfCBOb25lIC0+IElfQU5ZKSlcbiAgICAgIHIucmFfaW50c1xuICBpblxuICB7XG4gICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICByYV9lcmFzZWQgPSB0cnVlO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID1cbiAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIF8gLT4gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKSk7XG4gIH1cblxubGV0IHRvX2VyYXNlZCAoc2lncyA6IFNpZ25hdHVyZS5zKSAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcCAoYWdlbnRfdG9fZXJhc2VkIHNpZ3MpIHhcblxubGV0IHRvX21haW50YWluZWQgKHggOiBydWxlX21peHR1cmUpIDogcnVsZV9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIHIgLT5cbiAgICAgIGxldCBwb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBNYWludGFpbmVkKSByLnJhX3BvcnRzIGluXG4gICAgICBsZXQgaW50cyA9XG4gICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IElfQU5ZKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICByYV9zeW50YXggPVxuICAgICAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgXyAtPiBTb21lIChwb3J0cywgaW50cykpO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCB0b19yYXdfbWl4dHVyZSBzaWdzIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IGludGVybmFscyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPiBTb21lIGlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncylcbiAgICAgICAgICByLnJhX2ludHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9ydHMgPVxuICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgKGZ1biBqIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IChMTktfU09NRSwgcG9zIHwgTE5LX1RZUEUgXywgcG9zKSwgXyAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHIucmFfdHlwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcG9ydF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHIucmFfdHlwZSkgalxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgICAgYWdlbnRfbmFtZSAocG9ydF9uYW1lLCBwb3MpXG4gICAgICAgICAgICB8IChMTktfVkFMVUUgKGksIF8pLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5WQUwgaVxuICAgICAgICAgICAgfCAoKExOS19BTlkgfCBBTllfRlJFRSB8IExOS19GUkVFKSwgXyksIF8gLT4gUmF3X21peHR1cmUuRlJFRSlcbiAgICAgICAgICByLnJhX3BvcnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSByLnJhX3R5cGU7XG4gICAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCBtYXhfbGlua19pZCByID1cbiAgbGV0IG1heF9zIG0gPSBmdW5jdGlvblxuICAgIHwgTGlua2VkIGkgLT4gbWF4IGkgbVxuICAgIHwgRnJlZWQgfCBNYWludGFpbmVkIHwgRXJhc2VkIC0+IG1cbiAgaW5cbiAgbGV0IG1heF9saW5rX2lkX3NpdGVzIG1heF9pZCBhZyA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1heF9pZCAtPiBmdW5jdGlvblxuICAgICAgICB8IChMTktfVkFMVUUgKGosIF8pLCBfKSwgcyAtPiBtYXhfcyAobWF4IGogbWF4X2lkKSBzXG4gICAgICAgIHwgKChMTktfVFlQRSBfIHwgTE5LX1NPTUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBBTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgbWF4X3MgbWF4X2lkIHMpXG4gICAgICBtYXhfaWQgYWcucmFfcG9ydHNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgbWF4X2xpbmtfaWRfc2l0ZXMgMCByXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbGlua19vY2N1cmVuY2VfZmFpbHVyZSBrZXkgcG9zID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICggXCJCdWc6IExpbmsgXCIgXiBzdHJpbmdfb2ZfaW50IGtleVxuICAgICAgICAgXiBcIiBpcyBwcm9ibGVtYXRpYyEgTEthcHBhIGlzIGVpdGhlciBicm9rZW5cIlxuICAgICAgICAgXiBcIiBvciB1bnVzZWQhIFBsZWFzZSByZXBvcnQuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgcF9pZCA9XG4gIHNuZCBjb250YWN0X21hcC4odHlfaWQpLihwX2lkKVxuXG5sZXQgZmluZF9pbXBsaWNpdF9pbmZvcyBjb250YWN0X21hcCBhZ3MgPVxuICBsZXQgbmV3X3N3aXRjaCA9IGZ1bmN0aW9uXG4gICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkVyYXNlZCAtPiBMS2FwcGEuRnJlZWRcbiAgaW5cbiAgbGV0IHJlYyBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIGkgPVxuICAgIGxldCB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIGluXG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCBjdXJyZW50JyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgIH1cbiAgICAgICAgOjogY3VycmVudFxuICAgICAgaW5cbiAgICAgIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50JyB0b2RvcyBhZ190YWlsXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICB8IChMS2FwcGEuTE5LX1RZUEUgKHAsIGEpLCBfKSwgcyAtPlxuICAgICAgICBsZXQgb3JfdHkgPSBpLCB0eV9pZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvcnRzLihpKSA8LVxuICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldmlvdXMgY3VycmVudFxuICAgICAgICAgICgoZnJlZV9pZCwgKHAsIGEpLCBvcl90eSwgbmV3X3N3aXRjaCBzKSA6OiB0b2RvcylcbiAgICAgICAgICBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgKGZ1biAoYSwgcCkgcHJldicgLT5cbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IHBvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRvZG9zJyA9IChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zIGluXG4gICAgICAgICAgICBhdXhfb25lIChzdWNjIGZyZWVfaWQpIHByZXYnIGN1cnJlbnQgdG9kb3MnIGFnX3RhaWwgYWcgcG9ydHMnXG4gICAgICAgICAgICAgIChzdWNjIGkpKVxuICAgICAgICAgIChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgcHJldmlvdXNcbiAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgXywgXyksIF8gLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBwb3MpLCAoKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCkgYXMgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlmIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBpZiBNb2RzLkludDJTZXQuaXNfZW1wdHkgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQSBmcmVlIHNpdGUgY2Fubm90IGJlIGZyZWVkXCJcbiAgICAgIHwgKExLYXBwYS5MTktfRlJFRSwgXyksIExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLFxuICAgICAgICAgICgoTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCkgYXMgcykgKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgICYmIHMgPSBMS2FwcGEuRnJlZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogRG8gbm90IG1ha2UgdGVzdCBpcyBiZWluZyBmcmVlIGlzIHRoZSBvbmx5IHBvc3NpYmlsaXR5ICopXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKGkpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICApXG4gIGFuZCBhdXhfYWdzIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTGlzdC5yZXYgY3VycmVudCwgdG9kb3MpIDo6IHByZXZpb3VzXG4gICAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIGFnLkxLYXBwYS5yYV9wb3J0cyAwXG4gIGluXG4gIGF1eF9hZ3MgKHN1Y2MgKExLYXBwYS5tYXhfbGlua19pZCBhZ3MpKSBbXSBbXSBbXSBhZ3NcblxubGV0IGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dHMgcHJldnMgYWcgYWdfdGFpbCBpZCB0b2RvIHBfaWQgZHN0X2luZm8gcF9zd2l0Y2hcbiAgICA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHBvcnQgLT5cbiAgICAgIGlmIGkgPD4gcF9pZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgIGlmIHMgPSBMS2FwcGEuTWFpbnRhaW5lZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgcF9zd2l0Y2hcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICB0b2RvIClcbiAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICkgZWxzZSBpZiBzID0gTEthcHBhLkVyYXNlZCAmJiBwX3N3aXRjaCA9IExLYXBwYS5GcmVlZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaywgeCksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgeCA9IGRzdF9pbmZvIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChqLCBfLCAocCcsIGEnKSwgc3cnKSAtPlxuICAgICAgICAgICAgICAgICAgaiA9IGsgJiYgaSA9IHAnICYmIGEnID0gYWcuTEthcHBhLnJhX3R5cGUgJiYgc3cnID0gcF9zd2l0Y2gpXG4gICAgICAgICAgICAgICAgdG9kb1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdG9kbycgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHgpKSwgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgICB0b2RvJyApXG4gICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgfCBbXSwgXyAtPiBhY2NcbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoKExLYXBwYS5MTktfVFlQRSBfIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19TT01FKSwgXyksIF8gLT4gYWNjXG4gICAgICApKVxuICAgIG91dHMgYWcuTEthcHBhLnJhX3BvcnRzXG5cbmxldCBuZXdfYWdlbnRfd2l0aF9vbmVfbGluayBzaWdzIHR5X2lkIHBvcnQgbGluayBkc3RfaW5mbyBzd2l0Y2ggPVxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eV9pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCAoKSA9XG4gICAgcG9ydHMuKHBvcnQpIDwtXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAobGluaywgZHN0X2luZm8pKSwgc3dpdGNoXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZSA9IHR5X2lkO1xuICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgIExLYXBwYS5yYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgfVxuXG5sZXQgcmVjIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkICgoKHBvcnQsIHR5X2lkKSwgZHN0X2luZm8sIHMpIGFzIGluZm8pIGFjY1xuICAgIG91dCB0b2RvID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgICggTGlzdC5yZXZfYXBwZW5kIGFjY1xuICAgICAgICBbIG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBpZCBkc3RfaW5mbyBzIF0sXG4gICAgICB0b2RvIClcbiAgICA6OiBvdXRcbiAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgbGV0IG91dF90YWlsID1cbiAgICAgIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkIGluZm8gKGFnIDo6IGFjYykgb3V0IHRvZG8gYWdfdGFpbFxuICAgIGluXG4gICAgaWYgdHlfaWQgPSBhZy5MS2FwcGEucmFfdHlwZSB0aGVuXG4gICAgICBjb21wbGV0ZV93aXRoX2NhbmRpZGF0ZSBvdXRfdGFpbCBhY2MgYWcgYWdfdGFpbCBpZCB0b2RvIHBvcnQgZHN0X2luZm8gc1xuICAgIGVsc2VcbiAgICAgIG91dF90YWlsXG5cbmxldCBhZGRfaW1wbGljaXRfaW5mb3Mgc2lncyBsID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgKG0sIFtdKSA6OiB0IC0+IGF1eCAobSA6OiBhY2MpIHRcbiAgICB8IChtLCAoaWQsIGluZm8sIGRzdF9pbmZvLCBzKSA6OiB0b2RvJykgOjogdCAtPlxuICAgICAgYXV4IGFjYyAoYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKGluZm8sIGRzdF9pbmZvLCBzKSBbXSB0IHRvZG8nIG0pXG4gIGluXG4gIGF1eCBbXSBsXG5cbmxldCBpc19saW5rZWRfb25fcG9ydCBtZSBpIGlkID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgXyksIF8pLCBfIHdoZW4gaSA9IGogLT4gaWQgPD4gbWVcbiAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1RZUEUgX1xuICAgICAgICB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG5cbmxldCBpc19saW5rZWRfb24gaSBhZyA9XG4gIFRvb2xzLmFycmF5X2ZpbHRlciAoaXNfbGlua2VkX29uX3BvcnQgKC0xKSBpKSBhZy5MS2FwcGEucmFfcG9ydHMgPD4gW11cblxubGV0IGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmIHBsYWNlXG4gICAgc2l0ZSAoY2FuZCwgXykgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChjYW5kIDo6IHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5NYWludGFpbmVkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkVyYXNlZCAtPiAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCBjYW5kIDo6IHJlbW92ZWQsXG4gICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZSksIGRzdCcpIDo6IGFkZGVkICksXG4gICAgICAgIGxpbmtzX3RyYW5zZicgKSlcblxubGV0IGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZlxuICAgIHBsYWNlIHNpdGUgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChyZW1vdmVkLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZSkgOjogYWRkZWQpLFxuICAgICAgbGlua3NfdHJhbnNmIClcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTGlua2VkIGkgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGUpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgdHJhbnNmLCBsaW5rc190cmFuc2YnXG4gICAgfCBTb21lIGRzdCcgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoICggcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zIHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCAtPiBJbnN0YW50aWF0aW9uLkZyZWUgKHBsLCBzKSA6OiBhY3Rpb25zXG4gIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkIC0+IGFjdGlvbnNcblxubGV0IGFkZF9zaWRlX3NpdGUgc2lkZV9zaXRlcyBidCBwbCBzID0gZnVuY3Rpb25cbiAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+XG4gICAgKChwbCwgcyksIGJ0KSA6OiBzaWRlX3NpdGVzXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gc2lkZV9zaXRlc1xuXG5sZXQgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbCBzID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgTEthcHBhLkZyZWVkIC0+IChwbCwgcykgOjogc2lkZV9lZmZlY3RzXG4gIHwgKCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSxcbiAgICAgIChMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pIClcbiAgfCAoICggKCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIHNpZGVfZWZmZWN0c1xuXG5sZXQgYWRkX2V4dHJhX3NpZGVfZWZmZWN0cyBzaWRlX2VmZmVjdHMgcGxhY2UgcmVmaW5lZCA9XG4gIGxldCByZWMgYXV4IHNpZGVfZWZmZWN0cyBzaXRlX2lkID1cbiAgICBpZiBzaXRlX2lkIDwgMCB0aGVuXG4gICAgICBzaWRlX2VmZmVjdHNcbiAgICBlbHNlXG4gICAgICBhdXhcbiAgICAgICAgKGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHMgcGxhY2Ugc2l0ZV9pZCByZWZpbmVkLihzaXRlX2lkKSlcbiAgICAgICAgKHByZWQgc2l0ZV9pZClcbiAgaW5cbiAgYXV4IHNpZGVfZWZmZWN0cyAocHJlZCAoQXJyYXkubGVuZ3RoIHJlZmluZWQpKVxuXG4oKiBEZWFscyB3aXRoIHRlc3RzLCBlcmFzdXJlIGludGVybmFsIHN0YXRlIGNoYW5nZSBhbmQgcmVsZWFzZSAoYnV0XG4gICBub3QgYmluZGluZykqKVxubGV0IG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBsaW5rcyBldmVudCByZWZfcG9ydHMgaXNfZXJhc2VkID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAge1xuICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCBwbGFjZVxuICAgICAgICAgIHJlZl9wb3J0cztcbiAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgfVxuICB8IFNvbWUgKHBvcnRzLCBpbnRzKSAtPlxuICAgIChtYXRjaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgdGhpc19jY190ZXN0cyA6OiBvX2NjX3Rlc3RzIC0+XG4gICAgICBsZXQgcmVjIGF1eCBzaXRlX2lkIHRlc3RzIGFjdGlvbnMgc2lkZV9lZmZlY3RzX3NyYyBzaWRlX2VmZmVjdHNfZHN0IGxpbmtzXG4gICAgICAgICAgPVxuICAgICAgICBpZiBzaXRlX2lkID49IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICAgICAge1xuICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IHRlc3RzIDo6IG9fY2NfdGVzdHM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRlc3RzJywgYWN0aW9ucycgPVxuICAgICAgICAgICAgbWF0Y2ggaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgfCBMS2FwcGEuSV9BTllfRVJBU0VEIC0+IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICAgdGVzdHMsIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBqKSA6OiBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cyxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IGogdGhlblxuICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zIClcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cywgYWN0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RzJycsIGFjdGlvbnMnJywgc2lkZV9zaXRlcycsIHNpZGVfZWZmZWN0cycsIGxpbmtzJyA9XG4gICAgICAgICAgICBtYXRjaCBwb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgICAgICAgICAgIGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHNfZHN0IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgcmVmX3BvcnRzLihzaXRlX2lkKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCAtPlxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5BTlkgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0cycsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfQm91bmQgKHBsYWNlLCBzaXRlX2lkKSA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjIEluc3RhbnRpYXRpb24uQk9VTkQgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAoYiwgYSksIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlICgocGxhY2UsIHNpdGVfaWQpLCAoYSwgYikpXG4gICAgICAgICAgICAgICAgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICggeCA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3MgKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBsaW5rcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIHNpdGVfaWQpIHRlc3RzJycgYWN0aW9ucycnIHNpZGVfc2l0ZXMnIHNpZGVfZWZmZWN0cycgbGlua3MnXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMFxuICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19IZXJlIHBsYWNlIDo6IHRoaXNfY2NfdGVzdHMpXG4gICAgICAgIChpZiBpc19lcmFzZWQgdGhlblxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLlJlbW92ZSBwbGFjZSA6OiBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmNcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IGxpbmtzKVxuXG5sZXQgcmVjIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByZWdpc3RlcmVkX2xpbmtzXG4gICAgKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMgcmVtYWlucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByZWdpc3RlcmVkX2xpbmtzIHdpdGhcbiAgICB8IE5vbmUgLT4gd2ssIHRyYW5zZiwgbGlua3NfdHJhbnNmLCBpbnN0YW50aWF0aW9ucywgcmVtYWluc1xuICAgIHwgU29tZSAoa2V5LCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBub2RlLCB3ayA9IFBhdHRlcm4ubmV3X25vZGUgd2sgYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZSwgaWQpIGluXG4gICAgbGV0IHRyYW5zZicgPVxuICAgICAgaWYgYWcuTEthcHBhLnJhX2VyYXNlZCB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogcmVtb3ZlZCwgYWRkZWRcbiAgICAgIGVsc2VcbiAgICAgICAgdHJhbnNmXG4gICAgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyB3ayByX2wgY19sIChyZW1vdmVkLCBhZGRlZCkgbF90IHJlIGFjYyBzaXRlX2lkID1cbiAgICAgIGlmIHNpdGVfaWQgPSBBcnJheS5sZW5ndGggYWcuTEthcHBhLnJhX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAgICBtYWtlX2luc3RhbnRpYXRpb24gcGxhY2UgY19sIGluc3RhbnRpYXRpb25zIGFnLkxLYXBwYS5yYV9wb3J0c1xuICAgICAgICAgICAgYWcuTEthcHBhLnJhX2VyYXNlZCBhZy5MS2FwcGEucmFfc3ludGF4XG4gICAgICAgIGluXG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgaW5zdGFudGlhdGlvbnMnIHJlXG4gICAgICAgICAgYWNjXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgdHJhbnNmLCB3aycgPVxuICAgICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gKHJlbW92ZWQsIGFkZGVkKSwgd2tcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCApLFxuICAgICAgICAgICAgICB3ayApXG4gICAgICAgICAgfCBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT5cbiAgICAgICAgICAgICggKGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICAgICAgICAgcmVtb3ZlZCwgYWRkZWRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQsIGopXG4gICAgICAgICAgICAgICAgICAgOjogYWRkZWQgKSksXG4gICAgICAgICAgICAgIFBhdHRlcm4ubmV3X2ludGVybmFsX3N0YXRlIHdrIChub2RlLCBzaXRlX2lkKSBpIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgaSAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhZy5MS2FwcGEucmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAocGxhY2UsIHNpdGVfaWQpLFxuICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wgY19sIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfZnJlZSB3aycgKG5vZGUsIHNpdGVfaWQpIGluXG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZV9pZCksIE5vbmUpXG4gICAgICAgICAgICAgIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8ICgoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICBcIlRyeSB0byBjcmVhdGUgdGhlIGNvbm5lY3RlZCBjb21wb25lbnRzIG9mIGFuIGFtYmlndW91cyBcXFxuICAgICAgICAgICAgICAgICAgIG1peHR1cmUuXCIpKVxuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHJfbCB3aXRoXG4gICAgICAgICAgfCBTb21lICgobm9kZScsIHNpdGUnKSBhcyBkc3QpIC0+XG4gICAgICAgICAgICBsZXQgZHN0X3BsYWNlID0gTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKG5vZGUnLCBpZCksIHNpdGUnIGluXG4gICAgICAgICAgICBsZXQgd2snJyA9IFBhdHRlcm4ubmV3X2xpbmsgd2snIChub2RlLCBzaXRlX2lkKSBkc3QgaW5cbiAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSlcbiAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdF9wbGFjZSksXG4gICAgICAgICAgICAgICAgICBTb21lIHBvcyApXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIChNb2RzLkludE1hcC5yZW1vdmUgaSByX2wpIGNfbCcgdHJhbnNmJyBsX3QnIHJlXG4gICAgICAgICAgICAgIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGlzX2xpbmtlZF9vbl9wb3J0IHNpdGVfaWQgaSlcbiAgICAgICAgICAgICAgICAgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIHNpdGVfaWQnIF1cbiAgICAgICAgICAgICgqIGxpbmsgYmV0d2VlbiAyIHNpdGVzIG9mIDEgYWdlbnQgKilcbiAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjY1xuICAgICAgICAgICAgICAgICAgICYmIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgcmUgLT5cbiAgICAgICAgICAgICAgbGV0IHdrJycsICh0cmFuc2YnLCBsX3QnKSA9XG4gICAgICAgICAgICAgICAgaWYgc2l0ZV9pZCcgPiBzaXRlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIChub2RlLCBzaXRlX2lkJyksXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFjZSwgc2l0ZV9pZCksIChwbGFjZSwgc2l0ZV9pZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB3aycsIGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWQgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY19sJyA9XG4gICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvXG4gICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpKVxuICAgICAgICAgICAgICAgICAgY19sXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wnIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgICAgICAgICAgIGxldCByX2wnID0gTW9kcy5JbnRNYXAuYWRkIGkgKG5vZGUsIHNpdGVfaWQpIHJfbCBpblxuICAgICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgICAgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoaXNfbGlua2VkX29uIGkpIHJlIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmUnIC0+XG4gICAgICAgICAgICAgICAgaWYgTGlzdF91dGlsLmV4aXN0c191bmlxIChpc19saW5rZWRfb24gaSkgYWNjIHRoZW5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgcG9zXG4gICAgICAgICAgICAgIHwgWyBuIF0sIHJlJ1xuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCcgY19sIHRyYW5zZicgbF90JyByZScgKG4gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgfCBfLCBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3MpKSlcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0cyB3ayByZWdpc3RlcmVkX2xpbmtzIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZicgbGlua3NfdHJhbnNmXG4gICAgICByZW1haW5zIGFnX2wgMFxuXG5sZXQgcmVjIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxpbmtzX3RyYW5zZiBjcmVhdGVfYWN0aW9uc1xuICAgIGFjdGlvbnMgZnJlc2ggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY3Rpb25zIGNyZWF0ZV9hY3Rpb25zLCAoTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQpXG4gICAgfCBTb21lIChpLCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgTG9jLmR1bW15KVxuICB8IGFnIDo6IGFnX2wgLT5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5GcmVzaCAoYWcuUmF3X21peHR1cmUuYV90eXBlLCBmcmVzaCkgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyBhZGRlZCBsX3QgYWN0aW9ucyBpbnRmIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgY3JlYXRlX2FjdGlvbnMnID1cbiAgICAgICAgICBJbnN0YW50aWF0aW9uLkNyZWF0ZSAocGxhY2UsIExpc3QucmV2IGludGYpIDo6IGNyZWF0ZV9hY3Rpb25zXG4gICAgICAgIGluXG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxfdCBjcmVhdGVfYWN0aW9ucycgYWN0aW9uc1xuICAgICAgICAgIChzdWNjIGZyZXNoKSBhZ19sXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgYWRkZWQnLCBhY3Rpb25zJywgcG9pbnQgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhZGRlZCwgYWN0aW9ucywgKHNpdGVfaWQsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQsIGkpXG4gICAgICAgICAgICAgIDo6IGFkZGVkLFxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaSkgOjogYWN0aW9ucyxcbiAgICAgICAgICAgICAgKHNpdGVfaWQsIFNvbWUgaSkgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkZWQnJywgYWN0aW9ucycnLCBsX3QnID1cbiAgICAgICAgICBtYXRjaCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5GUkVFIC0+XG4gICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICBsX3QgKVxuICAgICAgICAgIHwgUmF3X21peHR1cmUuVkFMIGkgLT5cbiAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsX3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGRzdCwgbF90JyAtPlxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogYWRkZWQnLFxuICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0KVxuICAgICAgICAgICAgICAgIDo6IEluc3RhbnRpYXRpb24uQmluZF90byAoZHN0LCAocGxhY2UsIHNpdGVfaWQpKVxuICAgICAgICAgICAgICAgIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGxfdCcgKVxuICAgICAgICAgICAgfCBOb25lLCBsX3QgLT5cbiAgICAgICAgICAgICAgbGV0IGxfdCcgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGVfaWQpIGxfdCBpblxuICAgICAgICAgICAgICBhZGRlZCcsIGFjdGlvbnMnLCBsX3QnKVxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfcG9ydHMgYWRkZWQnJyBsX3QnIGFjdGlvbnMnJyAocG9pbnQgOjogaW50ZikgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0c1xuICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogYWRkZWQpXG4gICAgICBsaW5rc190cmFuc2YgYWN0aW9ucyBbXSAwXG5cbmxldCBpbmNyX29yaWdpbiA9IGZ1bmN0aW9uXG4gIHwgKE9wZXJhdG9yLkFMRyBfIHwgT3BlcmF0b3IuTU9ESUYgXykgYXMgeCAtPiB4XG4gIHwgT3BlcmF0b3IuUlVMRSBpIC0+IE9wZXJhdG9yLlJVTEUgKHN1Y2MgaSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX29mX21peHR1cmUgfmRlYnVnX21vZGUgY3JlYXRlZCBtaXggKGVudiwgb3JpZ2luKSA9XG4gIGxldCBzaWdzID0gUGF0dGVybi5QcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IHJlYyBhdXggZW52IHRyYW5zZm9ybWF0aW9ucyBpbnN0YW50aWF0aW9ucyBsaW5rc190cmFuc2YgYWNjIGlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgcmVtb3ZlZCwgYWRkZWQgPSB0cmFuc2Zvcm1hdGlvbnMgaW5cbiAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY3MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoYXgsIF8pIGFzIHgpLCAoKGF5LCBfKSBhcyB5KSlcbiAgICAgICAgICAgICAgd2hlbiBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheCB8fCBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kICh4LCB5KSA6OiBhY3NcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBfIC0+XG4gICAgICAgICAgICAgIGFjcylcbiAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnMgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb25zJyA9IExpc3QucmV2IHJlbW92ZWQsIExpc3QucmV2IGFkZGVkIGluXG4gICAgICBsZXQgYWN0aW9ucycnLCB0cmFuc2Zvcm1hdGlvbnMnJyA9XG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyB0cmFuc2Zvcm1hdGlvbnMnIGxpbmtzX3RyYW5zZiBbXSBhY3Rpb25zJyAwXG4gICAgICAgICAgY3JlYXRlZFxuICAgICAgaW5cbiAgICAgICggKCBvcmlnaW4sXG4gICAgICAgICAgVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgYWNjLFxuICAgICAgICAgIHsgaW5zdGFudGlhdGlvbnMgd2l0aCBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhY3Rpb25zJycgfSxcbiAgICAgICAgICB0cmFuc2Zvcm1hdGlvbnMnJyApLFxuICAgICAgICAoZW52LCBPcHRpb25fdXRpbC5tYXAgaW5jcl9vcmlnaW4gb3JpZ2luKSApXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCB3ayA9IFBhdHRlcm4uYmVnaW5fbmV3IGVudiBpblxuICAgICAgbGV0IGluc3RhbnRpYXRpb25zJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gW10gOjogaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHdrX291dCwgKHJlbW92ZWQsIGFkZGVkKSwgbF90LCBldmVudCwgcmVtYWlucyA9XG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayBNb2RzLkludE1hcC5lbXB0eSB0cmFuc2Zvcm1hdGlvbnNcbiAgICAgICAgICBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMnIHQgWyBoIF1cbiAgICAgIGluXG4gICAgICBsZXQgZW52JywgaW5qLCBjYywgY2NfaWQgPVxuICAgICAgICBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3a19vdXRcbiAgICAgIGluXG4gICAgICBsZXQgYWRkZWQnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopXG4gICAgICAgICAgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVtb3ZlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICByZW1vdmVkXG4gICAgICBpblxuICAgICAgbGV0IGV2ZW50JyA9XG4gICAgICAgIEluc3RhbnRpYXRpb24ucmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiBldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBsX3QnID1cbiAgICAgICAgTW9kcy5JbnRNYXAubWFwXG4gICAgICAgICAgKGZ1biAoKHAsIHMpIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgICAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHAnLCBzKVxuICAgICAgICAgIGxfdFxuICAgICAgaW5cbiAgICAgIGF1eCBlbnYnIChyZW1vdmVkJywgYWRkZWQnKSBldmVudCcgbF90JyAoKGNjX2lkLCBjYykgOjogYWNjKSAoc3VjYyBpZClcbiAgICAgICAgcmVtYWluc1xuICBpblxuICBhdXggZW52IChbXSwgW10pIEluc3RhbnRpYXRpb24uZW1wdHlfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHkgW10gMCBtaXhcblxubGV0IHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHMgPVxuICBhZGRfaW1wbGljaXRfaW5mb3Mgc2lnc1xuICAgIChmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwXG4gICAgICAgKExpc3QucmV2IChMaXN0LnJldl9tYXAgTEthcHBhLmNvcHlfcnVsZV9hZ2VudCBwcmVjb21wX21peHMpKSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gcHJlY29tcF9taXhzIGNyZWF0ZWQgPVxuICBsZXQgbm9Db3VudGVycyA9IGRlYnVnX21vZGUgaW5cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgYWxsX21peHMgPVxuICAgIHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBjb21waWxlX21vZGVfb24gdGhlblxuICAgICAgRm9ybWF0LmVwcmludGYgXCJAWzx2Pl9fX19fKCVpKUAsJWFAXUAuXCIgKExpc3QubGVuZ3RoIGFsbF9taXhzKVxuICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIHggLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzOnRydWUgY3JlYXRlZClcbiAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooeCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgY3JlYXRlZCkpKVxuICAgICAgICBhbGxfbWl4c1xuICBpblxuICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAoY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkKVxuICAgIGFsbF9taXhzIChlbnYsIG9yaWdpbilcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4ID1cbiAgbGV0IHJ1bGVzLCAoY2NfZW52LCBfKSA9XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIGNvbnRhY3RfbWFwIGVudiA/b3JpZ2luIG1peCBbXVxuICBpblxuICAoIGNjX2VudixcbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IF8sIGwsIGV2ZW50LCAoW10sIFtdKSAtPiBsLCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBydWxlcyApXG5cbmxldCBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZCBwID1cbiAgUGF0dGVybi5mb2xkX2J5X3R5cGVcbiAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoYWNjLCBsbmtfcGFjaykgLT5cbiAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKVxuICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gICAgICBpblxuICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaW50ZikgTEthcHBhLklfQU5ZIGluXG4gICAgICBsZXQgb3V0ID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWdlbnRfdHlwZTtcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IE5vbmU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGFjYycgPSBNb2RzLkludE1hcC5hZGQgcG9zIG91dCBhY2MgaW5cbiAgICAgIGxldCBsbmtfcGFjaycgPVxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzaXRlICgoZnJlZV9pZCwga25vd25fc3JjKSBhcyBwYWNrKSAobGluaywgaW50KSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgaW50IDw+IC0xIHRoZW4gcmFfaW50cy4oc2l0ZSkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGludCwgaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyAtPiBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uTGluayAoZHN0X2EsIGRzdF9zKSAtPlxuICAgICAgICAgICAgICBsZXQgc3JjX2luZm8gPSBzaXRlLCBhZ2VudF90eXBlIGluXG4gICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3Rfcykga25vd25fc3JjIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIChpZCwgZHN0X2luZm8pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBvdXQgZHN0X2EgYWNjJykuTEthcHBhLnJhX3BvcnRzLihkc3RfcykgPC1cbiAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHNyY19pbmZvKSksXG4gICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFja1xuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHN1Y2MgZnJlZV9pZCxcbiAgICAgICAgICAgICAgICAgIE1vZHMuSW50Mk1hcC5hZGQgKHBvcywgc2l0ZSkgKGZyZWVfaWQsIHNyY19pbmZvKSBrbm93bl9zcmMgKSkpXG4gICAgICAgICAgbG5rX3BhY2sgaW50ZlxuICAgICAgaW5cbiAgICAgIGFjYycsIGxua19wYWNrJylcbiAgICBwXG4gICAgKE1vZHMuSW50TWFwLmVtcHR5LCAoZnJlZV9pZCwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcblxubGV0IHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCB0cmFuc2ZzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuICgoZmlkLCBmcikgYXMgcGFjaykgLT4gZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8pIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCAoYV90eXBlLCBpZCkpIC0+XG4gICAgICAgIGxldCBzaSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFfdHlwZSBpblxuICAgICAgICBsZXQgbiA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV90eXBlO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IEFycmF5Lm1ha2Ugc2kgUmF3X21peHR1cmUuRlJFRTtcbiAgICAgICAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IEFycmF5Lm1ha2Ugc2kgTm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGZpZCwgTW9kcy5JbnRNYXAuYWRkIGlkIG4gZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAobWF0Y2ggYS5MS2FwcGEucmFfaW50cy4ocykgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTllfQ0hBTkdFRCBfIHwgTEthcHBhLklfQU5ZX0VSQVNFRFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIF8gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBrKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGogPSBrKSBpblxuICAgICAgICAgICAgICBhLkxLYXBwYS5yYV9pbnRzLihzKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaiwgaSlcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZIC0+IGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX0FOWV9DSEFOR0VEIGkpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfaW50cy4ocykgPC0gU29tZSBpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT4gZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4ocykgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMpIDwtIHRlc3QsIExLYXBwYS5GcmVlZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQxLCBfKSwgY2NfaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQyLCBfKSwgY2NfaWQyKSwgczIpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDEgbWl4cy4oY2NfaWQxKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMxKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBtaXhzLihjY19pZDIpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpIClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczEpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMyKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBzdWNjIGZpZCwgZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDIgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczIpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmcilcbiAgICAoZnJlZV9pZCwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgdHJhbnNmc1xuICB8PiBzbmRcblxubGV0IGFkZF9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIHRyYW5zZnMgPVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSwgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKF8sIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pLCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pIC0+XG4gICAgICAgICgpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSkgLT5cbiAgICAgICAgbGV0IGFnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhXG4gICAgICAgIGluXG4gICAgICAgIG1peHMuKGNjX2lkKSA8LVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpZCAoTEthcHBhLmFnZW50X3RvX2VyYXNlZCBzaWdzIGFnKSBtaXhzLihjY19pZCkpXG4gICAgdHJhbnNmc1xuXG5sZXQgbGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIGRvbWFpbiByID1cbiAgbGV0IG5iX2NjID0gQXJyYXkubGVuZ3RoIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICBsZXQgbWl4cyA9IEFycmF5Lm1ha2UgbmJfY2MgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGZyZWVfaWQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gY2NfaWQgZnJlZV9pZCBjYyAtPlxuICAgICAgICBsZXQgb3V0LCAoZnJlZV9pZCcsIF8pID1cbiAgICAgICAgICBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZFxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2MpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBtaXhzLihjY19pZCkgPC0gb3V0IGluXG4gICAgICAgIGZyZWVfaWQnKVxuICAgICAgMSByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgaW5cbiAgbGV0IG5ld3MgPVxuICAgIHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCByLlByaW1pdGl2ZXMuaW5zZXJ0ZWRcbiAgaW5cbiAgbGV0ICgpID0gYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgci5QcmltaXRpdmVzLnJlbW92ZWQgaW5cbiAgbGV0IHJfbWl4ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYSBiIC0+IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIHggYWNjIC0+IHggOjogYWNjKSBiIGEpXG4gICAgICBbXSBtaXhzXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgbGV0IHJfY3JlYXRlZCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIG5ld3MgW10gfD4gTGlzdC5yZXZcbiAgaW5cbiAgcl9taXgsIHJfY3JlYXRlZFxuKCp7XG4gIExLYXBwYS5yX21peDsgTEthcHBhLnJfY3JlYXRlZDsgTEthcHBhLnJfZWRpdF9zdHlsZSA9IHRydWU7XG4gIExLYXBwYS5yX3JhdGUgPSByLlByaW1pdGl2ZXMucmF0ZTtcbiAgTEthcHBhLnJfdW5fcmF0ZSA9IHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlO1xuICBMS2FwcGEucl9kZWx0YV90b2tlbnMgPSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zO1xuICB9KilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvZl9zbmFwc2hvdCBnID1cbiAgbGV0IG91dCwgXyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBub2RlIChhY2MsIHBhY2spIGFnIC0+XG4gICAgICAgIGxldCByYV90eXBlID0gYWcuU25hcHNob3Qubm9kZV90eXBlIGluXG4gICAgICAgIGxldCBhciA9IEFycmF5Lmxlbmd0aCBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzIGluXG4gICAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgICAgQXJyYXkubWFrZSBhciAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIGFyIExLYXBwYS5JX0FOWSBpblxuICAgICAgICBsZXQgcGFjaycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gaWQgKChkYW5nbGluZywgZnJlZV9pZCkgYXMgcGFjaykgcCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gcmFfaW50cy4oaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBwLlNuYXBzaG90LnNpdGVfbGluayB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwYWNrXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5wb3AgcyBkYW5nbGluZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHZhLCBkYW5nbGluZycgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihpZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFICh2YSwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBkYW5nbGluZycsIGZyZWVfaWRcbiAgICAgICAgICAgICAgICB8IE5vbmUsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsICgtMSwgLTEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAobm9kZSwgaWQpIGZyZWVfaWQgZGFuZ2xpbmcnLCBzdWNjIGZyZWVfaWQpKVxuICAgICAgICAgICAgcGFjayBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJhX3BvcnRzO1xuICAgICAgICAgICAgcmFfaW50cztcbiAgICAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcmFfcG9ydHMsIEFycmF5LmNvcHkgcmFfaW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICByYSA6OiBhY2MsIHBhY2snKVxuICAgICAgKFtdLCAoTW9kcy5JbnQyTWFwLmVtcHR5LCAxKSlcbiAgICAgIGdcbiAgaW5cbiAgb3V0XG5cbmxldCBwYXR0ZXJuc19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNvbnRhY3RfbWFwIHNpZ3MgcHJlX2VudiBlID1cbiAgbGV0IHNuYXAgPSBFZGdlcy5idWlsZF9zbmFwc2hvdCB+cmF3OmZhbHNlIHNpZ3MgZSBpblxuICBsZXQgcHJlX2VudicsIGFjYyA9XG4gICAgU25hcHNob3QuZm9sZFxuICAgICAgKGZ1biAoY2NfY2FjaGUsIGFjYykgaSBtIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmVcbiAgICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfY2FjaGVcbiAgICAgICAgICAgIChvZl9zbmFwc2hvdCBtKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgY2NfY2FjaGUnLCBbIChbfCAoXywgeCkgfF0sIF8pIF0gLT5cbiAgICAgICAgICBjY19jYWNoZScsIFRvb2xzLnJlY3RpIChmdW4gYSBfIC0+IHggOjogYSkgYWNjIGlcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIChwcmVfZW52LCBbXSkgc25hcFxuICBpblxuICBwcmVfZW52JywgYWNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGZpbGVuYW1lczogc3RyaW5nIGxpc3Q7XG4gIGRvbWFpbjogUGF0dGVybi5FbnYudDtcbiAgdG9rZW5zOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgYWxnczogUHJpbWl0aXZlcy5hbGdfZXhwciBMb2MuYW5ub3RlZCBOYW1lZERlY2xzLnQ7XG4gIG9ic2VydmFibGVzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIGFycmF5O1xuICBhc3RfcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogTEthcHBhLnJ1bGUgTG9jLmFubm90ZWQpIGFycmF5O1xuICBydWxlczogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUgYXJyYXk7XG4gIGludGVydmVudGlvbnM6IFByaW1pdGl2ZXMucGVydHVyYmF0aW9uIGFycmF5O1xuICBkZXBlbmRlbmNpZXNfaW5fdGltZTogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGRlcGVuZGVuY2llc19pbl9ldmVudDogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbn1cblxubGV0IGluaXQgfmZpbGVuYW1lcyBkb21haW4gdG9rZW5zIGFsZ3MgKGRlcHNfaW5fdCwgZGVwc19pbl9lLCB0b2tfcmQsIGFsZ19yZClcbiAgICAoYXN0X3J1bGVzLCBydWxlcykgb2JzZXJ2YWJsZXMgaW50ZXJ2ZW50aW9ucyBjb250YWN0X21hcCA9XG4gIHtcbiAgICBmaWxlbmFtZXM7XG4gICAgZG9tYWluO1xuICAgIHRva2VucztcbiAgICBhc3RfcnVsZXM7XG4gICAgcnVsZXM7XG4gICAgYWxncztcbiAgICBvYnNlcnZhYmxlcztcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gYWxnX3JkO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHRva19yZDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9IGRlcHNfaW5fdDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSBkZXBzX2luX2U7XG4gICAgaW50ZXJ2ZW50aW9ucztcbiAgICBjb250YWN0X21hcDtcbiAgfVxuXG5sZXQgZGVjb25zdHJ1Y3QgZW52ID1cbiAgKCBlbnYuZmlsZW5hbWVzLFxuICAgIGVudi5kb21haW4sXG4gICAgZW52LnRva2VucyxcbiAgICBlbnYuYWxncyxcbiAgICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICAgIGVudi5kZXBlbmRlbmNpZXNfaW5fZXZlbnQsXG4gICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKSxcbiAgICAoZW52LmFzdF9ydWxlcywgZW52LnJ1bGVzKSxcbiAgICBlbnYub2JzZXJ2YWJsZXMsXG4gICAgZW52LmludGVydmVudGlvbnMsXG4gICAgZW52LmNvbnRhY3RfbWFwIClcblxubGV0IGRvbWFpbiBlbnYgPSBlbnYuZG9tYWluXG5sZXQgZ2V0X29icyBlbnYgPSBlbnYub2JzZXJ2YWJsZXNcbmxldCBnZXRfcnVsZXMgZW52ID0gZW52LnJ1bGVzXG5sZXQgbmV3X2RvbWFpbiBkb21haW4gZW52ID0geyBlbnYgd2l0aCBkb21haW4gfVxubGV0IHNpZ25hdHVyZXMgZW52ID0gUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBlbnYuZG9tYWluXG5sZXQgdG9rZW5zX2ZpbmRlciBlbnYgPSBlbnYudG9rZW5zLk5hbWVkRGVjbHMuZmluZGVyXG5sZXQgYWxnc19maW5kZXIgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5maW5kZXJcbmxldCBjb250YWN0X21hcCBlbnYgPSBlbnYuY29udGFjdF9tYXBcbmxldCBudW1fb2ZfYWdlbnQgbm1lIGVudiA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgbm1lIChzaWduYXR1cmVzIGVudilcblxubGV0IGZvbGRfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcnVsZSAtPiBmIGkgeCBydWxlKSB4IGVudi5ydWxlc1xuXG5sZXQgZm9sZF9wZXJ0dXJiYXRpb25zIGYgeCBlbnYgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gaSB4IHAgLT4gZiBpIHggcCkgeCBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZ2V0X3J1bGUgZW52IGkgPSBlbnYucnVsZXMuKGkpXG5sZXQgZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkgPSBlbnYuYXN0X3J1bGVzLihpIC0gMSlcbmxldCBnZXRfYXN0X3J1bGUgZW52IGkgPSBmc3QgKHNuZCAoZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkpKVxuXG5sZXQgZm9sZF9hc3RfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgX3J1bGUpIC0+XG4gICAgICBsZXQgbGthcHBhX3J1bGUgPSBnZXRfYXN0X3J1bGUgZW52IGkgaW5cbiAgICAgIGYgaSB4IGxrYXBwYV9ydWxlKVxuICAgIHggZW52LmFzdF9ydWxlc1xuXG5sZXQgZ2V0X2FzdF9ydWxlX3JhdGVfcG9zIH51bmFyeSBlbnYgaSA9XG4gIGlmIHVuYXJ5IHRoZW4gKFxuICAgIG1hdGNoIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl91bl9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyB1bmFyeSByYXRlIHRvIGdldCBwb3NpdGlvbiBvZlwiXG4gICAgfCBTb21lICgoXywgcG9zKSwgXykgLT4gcG9zXG4gICkgZWxzZVxuICAgIHNuZCAoZnN0IChzbmQgZW52LmFzdF9ydWxlcy4oaSAtIDEpKSkuTEthcHBhLnJfcmF0ZVxuXG5sZXQgbmJfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5ydWxlc1xuXG5sZXQgbnVtc19vZl9ydWxlIG5hbWUgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gaSBhY2MgciAtPlxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpIHdpdGhcbiAgICAgIHwgU29tZSAoeCwgXyksIF8gLT5cbiAgICAgICAgaWYgeCA9IG5hbWUgdGhlblxuICAgICAgICAgIGkgOjogYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhY2NcbiAgICAgIHwgTm9uZSwgXyAtPiBhY2MpXG4gICAgW10gZW52XG5cbmxldCBuYl9zeW50YWN0aWNfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5hc3RfcnVsZXNcbmxldCBudW1fb2ZfYWxnIHMgZW52ID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJ2YXJpYWJsZVwiIGVudi5hbGdzIHNcbmxldCBnZXRfYWxnIGVudiBpID0gZnN0IEBAIE5hbWVkRGVjbHMuZWx0X3ZhbCBlbnYuYWxncyBpXG5sZXQgZ2V0X2FsZ3MgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xubGV0IG5iX2FsZ3MgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi5hbGdzXG5sZXQgbnVtX29mX3Rva2VuIHN0ciBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInRva2VuXCIgZW52LnRva2VucyBzdHJcbmxldCBuYl90b2tlbnMgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi50b2tlbnNcbmxldCBnZXRfcGVydHVyYmF0aW9uIGVudiBpID0gZW52LmludGVydmVudGlvbnMuKGkpXG5sZXQgbmJfcGVydHVyYmF0aW9ucyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmludGVydmVudGlvbnNcbmxldCBnZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMuKGkpXG5sZXQgZ2V0X3Rva2VuX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcblxubGV0IGFsbF9kZXBlbmRlbmNpZXMgZW52ID1cbiAgKCBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWUsXG4gICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzIClcblxubGV0IHByaW50X2FnZW50ID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FnZW50XyVpXCIgaVxuICB8IFNvbWUgZW52IC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCAoc2lnbmF0dXJlcyBlbnYpIGYgaVxuXG5sZXQgcHJpbnRfYWxnID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19hbGdfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IG5hbWUgPSBOYW1lZERlY2xzLmVsdF9uYW1lIGVudi5hbGdzIGlkIGluXG4gICAgbGV0IHNwZWNpYWwgPSBUb29scy5ub3RfYW5faWQgbmFtZSBpblxuICAgIGxldCAoKSA9IGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFtZSBpblxuICAgIGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCJcblxubGV0IHByaW50X3Rva2VuID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX190b2tlbl8laVwiIGlkXG4gIHwgU29tZSBlbnYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LnRva2VucyBpZClcblxubGV0IHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FzdF9ydWxlXyVpXCIgaVxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICAgIGlmIGkgPSAwIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkludGVydmVudGlvbnNcIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCBpKSB3aXRoXG4gICAgICB8IFNvbWUgKG5hLCBfKSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFcbiAgICAgIHwgTm9uZSwgKHIsIF8pIC0+XG4gICAgICAgIExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIHNpZ3MgKHByaW50X3Rva2VuIH5lbnYpXG4gICAgICAgICAgKHByaW50X2FsZyB+ZW52KSBmIHJcbiAgICApXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19ydWxlXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYgZiBlbnYucnVsZXMuKGlkKS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG5cbmxldCBtYXBfb2JzZXJ2YWJsZXMgZiBlbnYgPSBBcnJheS5tYXAgKGZ1biAoeCwgXykgLT4gZiB4KSBlbnYub2JzZXJ2YWJsZXNcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyA/cHJfcnVsZSBwcl9wZXJ0IGYgZW52ID1cbiAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWEldEAsJWEldCVhQCwldCV0JWFAXVwiXG4gICAgKENvbnRhY3RfbWFwLnByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MpXG4gICAgZW52LmNvbnRhY3RfbWFwXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbiBmICgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBuKSlcbiAgICBlbnYudG9rZW5zXG4gICAgKGZ1biBmIC0+IGlmIGVudi50b2tlbnMuTmFtZWREZWNscy5kZWNscyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXZhcjovKiVpKi8gJyVzJyAlYUBdXCIgaSBuIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYuYWxnc1xuICAgIChmdW4gZiAtPiBpZiBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2UgKGZ1biBfIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXBsb3Q6ICVhQF1cIiAocHJfYWxnIGVudikgZSkpXG4gICAgZW52Lm9ic2VydmFibGVzXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBwcl9ydWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2VcbiAgICAgICAgICAoZnVuIF8gZiAobmEsIChlLCBfKSkgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKG5hLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnIFwiIG5hKSlcbiAgICAgICAgICAgICAgbmFcbiAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOnRydWUgc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAgICAgICAgKHByaW50X2FsZyB+ZW52KSlcbiAgICAgICAgICAgICAgZSlcbiAgICAgICAgICBmIGVudi5hc3RfcnVsZXNcbiAgICAgIHwgU29tZSBwcl9ydWxlIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWFAXVwiIChwcl9ydWxlIGVudikgcilcbiAgICAgICAgICBmIGVudi5ydWxlcylcbiAgICAoZnVuIGYgLT4gaWYgZW52LmludGVydmVudGlvbnMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHAgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPi8qJWkqLyVhQF1cIiBpIChwcl9wZXJ0IGVudikgcCkpXG4gICAgZW52LmludGVydmVudGlvbnNcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIHByX2FsZyBwcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgKCkgPSBwcmludF9rYXBwYSB+bm9Db3VudGVycyBwcl9hbGcgcHJfcGVydCBmIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQCxAWzx2PkBbPHYgMj5SdWxlczpALCVhQF1AXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHIgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpOkAgJWFAXVwiIGkgKHByX3J1bGUgZW52KSByKSlcbiAgICBlbnYucnVsZXNcblxubGV0IGNoZWNrX2lmX2NvdW50ZXJfaXNfZmlsbGVkX2Vub3VnaCB4ID1cbiAgaWZcbiAgICBub3RcbiAgICBAQCBQcmltaXRpdmVzLmV4aXN0c19tb2RpZmljYXRpb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIC0+IHRydWVcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLklURVJfUlVMRSBfIHwgUHJpbWl0aXZlcy5VUERBVEUgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgXyB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuRElOIF9cbiAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTk9GRiBfIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QTE9URU5UUllcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLlBSSU5UIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgeC5pbnRlcnZlbnRpb25zXG4gIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIlRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIHNpbXVsYXRpb24gdG8gc3RvcC5cIikpXG5cbmxldCBvdmVyd3JpdGVfdmFycyBhbGdfb3ZlcndyaXRlIGVudiA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KVxuICAgICAgZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIHsgZW52IHdpdGggYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnIH1cblxubGV0IGZvbGRfYWxnX2V4cHIgZl9hbGcgZl9ib29sIHggZW52ID1cbiAgbGV0IHgxID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sIHkpIC0+IGZfYWxnIGFjYyB5KSB4IGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHNcbiAgaW5cbiAgbGV0IHgyID0gQXJyYXkuZm9sZF9sZWZ0IGZfYWxnIHgxIGVudi5vYnNlcnZhYmxlcyBpblxuICBsZXQgeDMgPSBBcnJheS5mb2xkX2xlZnQgKFByaW1pdGl2ZXMuZm9sZF9leHByX3J1bGUgZl9hbGcpIHgyIGVudi5ydWxlcyBpblxuICBBcnJheS5mb2xkX2xlZnRcbiAgICAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbClcbiAgICB4MyBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZm9sZF9taXh0dXJlX2luX2V4cHIgZiA9XG4gIGZvbGRfYWxnX2V4cHIgKEFsZ19leHByLmZvbGRfb25fbWl4dHVyZSBmKSAoQWxnX2V4cHIuZm9sZF9ib29sX29uX21peHR1cmUgZilcblxubGV0IHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgIH5hbGdfb3ZlcndyaXRlIHggPVxuICBsZXQgYWxncycgPVxuICAgIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KSB4LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSAobmEsIHYpIC0+XG4gICAgICAgIGFsZ3MnLihpKSA8LVxuICAgICAgICAgICggbmEsXG4gICAgICAgICAgICBBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycgdiApKVxuICAgICAgYWxncydcbiAgaW5cbiAge1xuICAgIGZpbGVuYW1lcyA9IHguZmlsZW5hbWVzO1xuICAgIGRvbWFpbiA9IHguZG9tYWluO1xuICAgIHRva2VucyA9IHgudG9rZW5zO1xuICAgIGFsZ3MgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdzJztcbiAgICBvYnNlcnZhYmxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgeC5vYnNlcnZhYmxlcztcbiAgICBhc3RfcnVsZXMgPSB4LmFzdF9ydWxlcztcbiAgICBydWxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMubWFwX2V4cHJfcnVsZVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5ydWxlcztcbiAgICBpbnRlcnZlbnRpb25zID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5pbnRlcnZlbnRpb25zO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0geC5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSB4LmRlcGVuZGVuY2llc19pbl9ldmVudDtcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHgudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIGNvbnRhY3RfbWFwID0geC5jb250YWN0X21hcDtcbiAgfVxuXG5sZXQga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pXG5cbmxldCB0b195b2pzb24gZW52ID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogZW52LmZpbGVuYW1lcylcbiAgaW5cbiAgbGV0IGZpbGVuYW1lcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hcCB4IC0+IE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgZmlsZXNcbiAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJ1cGRhdGVcIiwgUGF0dGVybi5FbnYudG9feW9qc29uIChkb21haW4gZW52KTtcbiAgICAgIFwidG9rZW5zXCIsIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBlbnYudG9rZW5zO1xuICAgICAgKCBcImFsZ3NcIixcbiAgICAgICAgTmFtZWREZWNscy50b19qc29uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT5cbiAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4KVxuICAgICAgICAgIGVudi5hbGdzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKHgsIF8pIGwgLT5cbiAgICAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4XG4gICAgICAgICAgICAgICA6OiBsKVxuICAgICAgICAgICAgIGVudi5vYnNlcnZhYmxlcyBbXSkgKTtcbiAgICAgICggXCJhc3RfcnVsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKG4sIChyLCBfKSkgbCAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKG4sIF8pIC0+IGBTdHJpbmcgbik7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHI7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52LmFzdF9ydWxlcyBbXSkgKTtcbiAgICAgICggXCJlbGVtZW50YXJ5X3J1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IChQcmltaXRpdmVzLnJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMpIGVudi5ydWxlcyApO1xuICAgICAgXCJjb250YWN0X21hcFwiLCBDb250YWN0X21hcC50b195b2pzb24gZW52LmNvbnRhY3RfbWFwO1xuICAgICAgKCBcImludGVydmVudGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXlcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgZW52LmludGVydmVudGlvbnMgKTtcbiAgICAgIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiwgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWU7XG4gICAgICAoIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIsXG4gICAgICAgIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCApO1xuICAgICAgKCBcImFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgICAoIFwidG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IE9wZXJhdG9yLmRlcHNldF90b195b2pzb25cbiAgICAgICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgXVxuXG5sZXQga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMTMgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgZG9tYWluID0gUGF0dGVybi5FbnYub2ZfeW9qc29uIChMaXN0LmFzc29jIFwidXBkYXRlXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPSBOYW1lZERlY2xzLm9mX2pzb24gKGZ1biBfIC0+ICgpKSAoTGlzdC5hc3NvYyBcInRva2Vuc1wiIGwpO1xuICAgICAgICAgYWxncyA9XG4gICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImFsZ3NcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJvYnNlcnZhYmxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgeCkpXG4gICAgICAgICAgICAgICBvXG4gICAgICAgICAgIHwgYE51bGwgLT4gW3x8XVxuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGFzdF9ydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiYXN0X3J1bGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBOdWxsOyByIF0gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpXG4gICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgU3RyaW5nIG47IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgICggU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgbiksXG4gICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpIClcbiAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgcnVsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImVsZW1lbnRhcnlfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKFByaW1pdGl2ZXMucnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcykgb1xuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGludGVydmVudGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW50ZXJ2ZW50aW9uc1wiIHgpO1xuICAgICAgICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl90aW1lXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl9ldmVudFwiIHgpO1xuICAgICAgICAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIiB4KTtcbiAgICAgICAgIGNvbnRhY3RfbWFwID0gQ29udGFjdF9tYXAub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiY29udGFjdF9tYXBcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuXG5sZXQgdW5hcnlfcGF0dGVybnMgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gXyBhY2MgciAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgUGF0dGVybi5TZXQuYWRkXG4gICAgICAgICAgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKVxuICAgICAgICAgIChQYXR0ZXJuLlNldC5hZGQgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBhY2MpKVxuICAgIFBhdHRlcm4uU2V0LmVtcHR5IGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNjX21peCB+bm9Db3VudGVycyA/ZW52IGYgbWl4ID1cbiAgbGV0IGRvbWFpbiA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKVxuICBpblxuICBtYXRjaCBtaXggd2l0aFxuICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIwXCJcbiAgfCBfIC0+XG4gICAgUHAubGlzdFxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgK0AgXCIpXG4gICAgICAoZnVuIGYgY2NzIC0+XG4gICAgICAgIFBwLmFycmF5XG4gICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIqXCIpXG4gICAgICAgICAgKGZ1biBfIGYgY2MgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgY2MpXG4gICAgICAgICAgZiBjY3MpXG4gICAgICBmIG1peFxuXG5sZXQgYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50IChjY19taXggfm5vQ291bnRlcnMgP2VudikgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYgPVxuICBBbGdfZXhwci5wcmludF9ib29sIChjY19taXggfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSBpKVxuICAgIChNb2RlbC5wcmludF9hbGcgP2VudilcblxubGV0IHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudiBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgYWxnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIF0gLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEpXCIgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eCkgZVxuXG5sZXQgcHJpbnRfZXhwcl92YWwgYWxnX3ZhbCBmIGUgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHN0clxuICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgKGFsZywgXykgLT4gTmJyLnByaW50IGYgKGFsZ192YWwgYWxnKVxuICBpblxuICBQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfY3V0IGYgKCkpIGF1eCBmIGVcblxubGV0IGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbCBlbnYgZiByID1cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBsZXQgcl9taXgsIHJfY3JlYXRlZCA9XG4gICAgUGF0dGVybl9jb21waWxlci5sa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgKE1vZGVsLmRvbWFpbiBlbnYpIHJcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdG9rXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhJXQlYSV0XCJcbiAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugcl9jcmVhdGVkKVxuICAgIHJfbWl4XG4gICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWUgfmluaXRpYWxfY29tbWE6KHJfbWl4IDw+IFtdKVxuICAgICAgIH5zaWdzKVxuICAgIHJfY3JlYXRlZFxuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIEBAICVhJXRcIiBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGUgKGZ1biBmIC0+XG4gICAgICAgICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAocmF0ZSwgZGlzdCkgLT5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIiBwcl9hbGcgcmF0ZVxuICAgICAgICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIG1kIC0+XG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgKGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpIG1kKSlcbiAgICAgICAgICAgICAgICBkaXN0KSlcblxubGV0IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyA/ZW52IGYgciA9XG4gIGxldCBkb21haW4sIHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSksIFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZSlcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudikgdG9rXG4gIGluXG4gIGxldCBwcl90cmFucyBmIHQgPSBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnByaW50ID9zaWdzIGYgdCBpblxuICBsZXQgYm94ZWRfY2MgaSBmIGNjID1cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl9ib3ggZiAyIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIGkgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI6IFwiIGluXG4gICAgbGV0ICgpID0gUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOnRydWUgZiBjYyBpblxuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiKGFzdDogJWkpQCBAW0BbJWFAXSV0QFslYUBdQF1AIC0tIEBbJWFAXUAgKysgQFslYUBdQCBAQCVhJXRcIlxuICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgIChQcC5hcnJheSBQcC5jb21tYSBib3hlZF9jYylcbiAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAoaWYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyA8PiBbXSB0aGVuXG4gICAgICAgZnVuIGYgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcInxAIFwiXG4gICAgIGVsc2VcbiAgICAgICBQcC5lbXB0eSlcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90b2spIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90cmFucylcbiAgICByLlByaW1pdGl2ZXMucmVtb3ZlZFxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5pbnNlcnRlZCBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGVcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudikgbWQpKVxuICAgICAgICAgIGRpc3QpXG5cbmxldCBtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIG0gPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKG5tZSwgdmEpIC0+XG4gICAgaWYgbm1lIDw+IFtdIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhID4gJWFcIlxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICB2YVxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICBubWVcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIHZhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJFBMT1RFTlRSWVwiXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKChuLCBfKSwgcnVsZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZICVhICVhXCJcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgblxuICAgICAgKG1hdGNoIGVudiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnZcbiAgICAgIHwgU29tZSBlbnYgLT4gZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIGVudilcbiAgICAgIHJ1bGVcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaWQsICh2YSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRVUERBVEUgJWEgJWFcIiAoTW9kZWwucHJpbnRfYWxnID9lbnYpIGlkXG4gICAgICAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIHZhXG4gIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBmbikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNOQVBTSE9UICVhJXRcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmbiAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFByaW1pdGl2ZXMuU1RPUCBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG4gIHwgUHJpbWl0aXZlcy5ESU4gKGtpbmQsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhICV0W3RydWVdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgUHJpbWl0aXZlcy5ESU5PRkYgZm4gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiAlYSBbZmFsc2VdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkNGTE9XIChfbmFtZSwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gW3RydWVdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAoXywgY2MpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAlYSBbZmFsc2VdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChmbiwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSBbdHJ1ZV0gPiAlYVwiXG4gICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICBjY1xuICAgICAgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIGZuXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1BFQ0lFU19PRiBbZmFsc2VdID4gJWFcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuXG5sZXQgcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzID9lbnYgZiBwZXJ0ID1cbiAgbGV0IGF1eF9hbGFybSBmID1cbiAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYSBcIiBOYnIucHJpbnQgblxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJSVtb2Q6ICV0JWEgZG8gJWFyZXBlYXQgJWFcIiBhdXhfYWxhcm1cbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvbiAobW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzID9lbnYpKVxuICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucmVwZWF0KVxuXG5sZXQgZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnQgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG5cbmxldCBlbnZfa2FwcGEgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGRlY29tcGlsZWRfZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnRfa2FwcGEgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIH5wcl9ydWxlOihkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSlcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJpb2QgPSBERSBvZiBpbnQgfCBEVCBvZiBmbG9hdFxuXG50eXBlIHQgPSB7XG4gIHByb2dyZXNzU2l6ZTogaW50O1xuICBwcm9ncmVzc0NoYXI6IGNoYXI7XG4gIGR1bXBJZkRlYWRsb2NrZWQ6IGJvb2w7XG4gIGluaXRpYWw6IGZsb2F0IG9wdGlvbjtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBvdXRwdXRGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgcGxvdFBlcmlvZDogcGVyaW9kIG9wdGlvbjtcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgdHJhY2VGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWU6IHN0cmluZyBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9XG4gIHtcbiAgICBwcm9ncmVzc1NpemUgPSA3MDtcbiAgICBwcm9ncmVzc0NoYXIgPSAnIyc7XG4gICAgZHVtcElmRGVhZGxvY2tlZCA9IHRydWU7XG4gICAgaW5pdGlhbCA9IE5vbmU7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaCA9IDM7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgdHJhY2VGaWxlTmFtZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RmlsZU5hbWUgPSBOb25lO1xuICAgIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gTm9uZTtcbiAgfVxuXG5sZXQgcGFyc2UgcmVzdWx0ID1cbiAgbGV0IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IGYgPVxuICAgIG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgIHwgWyAodiwgcG9zKSBdIC0+IGYgdiBwb3NcbiAgICB8IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHBhcmFtZXRlciBcIiBeIHBhcmFtLCBwb3NfcCkpXG4gIGluXG4gIGxldCBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0ID1cbiAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHZhbHVlIHBvc192IC0+XG4gICAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgICAgfCBcInRydWVcIiB8IFwieWVzXCIgLT4gdHJ1ZVxuICAgICAgICB8IFwiZmFsc2VcIiB8IFwibm9cIiAtPiBmYWxzZVxuICAgICAgICB8IF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gZXJyb3IgXiBcIiBzaG91bGQgYmUgZWl0aGVyIFxcXCJ5ZXNcXFwiIG9yIFxcXCJub1xcXCJcIiwgcG9zX3YpKSlcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIChjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSlcbiAgICAgICAgICgocGFyYW0sIHBvc19wKSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgIHwgXCJkaXNwbGF5Q29tcHJlc3Npb25cIiAtPlxuICAgICAgICBsZXQgcmVjIHBhcnNlIChhLCBiLCBjKSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IChcInN0cm9uZ1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgYiwgdHJ1ZSkgdGxcbiAgICAgICAgICB8IChcIndlYWtcIiwgXykgOjogdGwgLT4gcGFyc2UgKGEsIHRydWUsIGMpIHRsXG4gICAgICAgICAgfCAoXCJub25lXCIsIF8pIDo6IHRsIC0+IHBhcnNlICh0cnVlLCBiLCBjKSB0bFxuICAgICAgICAgIHwgW10gLT4gY29uZiwgKGEsIGIsIGMpLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAgICAgfCAoZXJyb3IsIHBvcykgOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKFwiVW5rbm93biB2YWx1ZSBcIiBeIGVycm9yIF4gXCIgZm9yIGNvbXByZXNzaW9uIG1vZGVcIiwgcG9zKSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFyc2Ugc3RvcnlfY29tcHJlc3Npb24gdmFsdWVfbGlzdFxuICAgICAgfCBcImNmbG93RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHggXyAtPlxuICAgICAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBTb21lIHgpXG4gICAgICB8IFwic2VlZFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBzZWVkID0gU29tZSAoaW50X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcIlQwXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIGluaXRpYWwgPSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcykgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhIGZsb2F0XCIsIHApKSlcbiAgICAgIHwgXCJwbG90UGVyaW9kXCIgLT5cbiAgICAgICAgKG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgICAgICB8IFsgKHMsIHApIF0gLT5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoRFQgKGZsb2F0X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgICB8IFsgKHMsIHNwKTsgKHUsIHVwKSBdIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIHUgPSBcImVcIiB8fCB1ID0gXCJldmVudFwiIHx8IHUgPSBcImV2ZW50c1wiIHx8IHUgPSBcIkV2ZW50XCJcbiAgICAgICAgICAgIHx8IHUgPSBcIkV2ZW50c1wiXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoREUgKGludF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlIGlmXG4gICAgICAgICAgICAgIHUgPSBcInQudS5cIiB8fCB1ID0gXCJ0aW1lIHVuaXRzXCIgfHwgdSA9IFwiVGltZSB1bml0c1wiXG4gICAgICAgICAgICAgIHx8IHUgPSBcInRpbWUgdW5pdFwiIHx8IHUgPSBcIlRpbWUgdW5pdFwiXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgc3ApKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiSW5jb3JyZWN0IHVuaXQgXCIgXiB1LCB1cCkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSkpXG4gICAgICB8IFwib3V0cHV0RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBvdXRwdXRGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInRyYWNlRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCB0cmFjZUZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInByb2dyZXNzQmFyU2l6ZVwiIC0+XG4gICAgICAgICgge1xuICAgICAgICAgICAgY29uZiB3aXRoXG4gICAgICAgICAgICBwcm9ncmVzc1NpemUgPVxuICAgICAgICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgcCAtPlxuICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgdlxuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcInByb2dyZXNzQmFyU3ltYm9sXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzQ2hhciA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgU3RyaW5nLnVuc2FmZV9nZXQgdiAwXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhIGNoYXJhY3RlclwiLCBwKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJkdW1wSWZEZWFkbG9ja2VkXCIgLT5cbiAgICAgICAgKCB7IGNvbmYgd2l0aCBkdW1wSWZEZWFkbG9ja2VkID0gZ2V0X2Jvb2xfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwibWF4Q29uc2VjdXRpdmVDbGFzaFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBtYXhDb25zZWN1dGl2ZUNsYXNoID0gaW50X29mX3N0cmluZyB2IH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcImRvdENmbG93c1wiIC0+XG4gICAgICAgIGxldCBmb3JtYXRDZmxvdyA9IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBfIC0+IHYpIGluXG4gICAgICAgIGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAoKiBpZiBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IHRoZW5cbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgRG90KSBlbHNlXG4gICAgICAgICAoc3RvcnlfY29tcHJlc3Npb24sIEh0bWwpKilcbiAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIlVua25vd24gcGFyYW1ldGVyIFwiIF4gZXJyb3IsIHBvc19wKSkpXG4gICAgKGVtcHR5LCAoZmFsc2UsIGZhbHNlLCBmYWxzZSksIFwiZG90XCIsIE5vbmUpXG4gICAgcmVzdWx0XG5cbmxldCBwcmludCBmIGNvbmYgPVxuICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInNlZWRcXFwiIFxcXCIlaVxcXCJALFwiKVxuICAgICAgZiBjb25mLnNlZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJkdW1wSWZEZWFkbG9ja2VkXFxcIiBcXFwiJWJcXFwiQCxcIlxuICAgICAgY29uZi5kdW1wSWZEZWFkbG9ja2VkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwibWF4Q29uc2VjdXRpdmVDbGFzaFxcXCIgXFxcIiVpXFxcIkAsXCJcbiAgICAgIGNvbmYubWF4Q29uc2VjdXRpdmVDbGFzaFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU2l6ZVxcXCIgXFxcIiVpXFxcIkAsXCIgY29uZi5wcm9ncmVzc1NpemVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwcm9ncmVzc0JhclN5bWJvbFxcXCIgXFxcIiVjXFxcIkAsXCIgY29uZi5wcm9ncmVzc0NoYXJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVnXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuaW5pdGlhbFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgREUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWlcXFwiIFxcXCJldmVudHNcXFwiQCxcIiBpXG4gICAgICAgIHwgRFQgdCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWdcXFwiIFxcXCJ0LnUuXFxcIkAsXCIgdClcbiAgICAgIGYgY29uZi5wbG90UGVyaW9kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwib3V0cHV0RmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLm91dHB1dEZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwidHJhY2VGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYudHJhY2VGaWxlTmFtZVxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi5kZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVxuICBpblxuICBGb3JtYXQucHBfY2xvc2VfYm94IGYgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkaXZpZGVfZXhwcl9ieV9pbnQgZSBpID1cbiAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAoQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgIChPcGVyYXRvci5ESVYsIGUsIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCAoTmJyLkkgaSkpKSlcblxudHlwZSAoJ2EsICdiKSBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9IHtcbiAgbnVtOiBOYnIudDtcbiAgZGVuOiBOYnIudDtcbiAgdmFyOiAoJ2EsICdiKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbjtcbn1cblxubGV0IHJlYyBzaW1wbGlmeSA/KHJvb3Rfb25seSA9IGZhbHNlKSBleHByID1cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9XG4gICAgICBpZiByb290X29ubHkgdGhlblxuICAgICAgICBhLCBiXG4gICAgICBlbHNlXG4gICAgICAgIHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGJcbiAgICBpblxuICAgIGxldCByb290X29ubHkgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLmFkZCBhIGIpLCBsb2NcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc196ZXJvIGIgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLnN1YiBhIGIpLCBsb2NcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYScsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEnIE5ici56ZXJvIC0+IGFcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGInLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiJyBOYnIuemVybyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCksXG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICkgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYywgKEFsZ19leHByLkNPTlNUIGIsIF8pKSwgXyApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApIC0+XG4gICAgICAgICgqIGEqKGIqYykgLT4gKGEqYikqYyBpZiBhICYgYiBhcmUgY29uc3RhbnQgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSApXG4gICAgICB8ICggKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgXyksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoYSpiKS9jIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jX2NzdCksIGMpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSApXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYykpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoKGEvYykqYikgaWYgYSAmIGMgYXJlIGNvbnN0YW50ICBhbmQgY3xhICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBhIGMpLCBsb2NfY3N0KSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIChub3QgKE5ici5pc196ZXJvIGIpKSAmJiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGIpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYiksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBiKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGEqYi9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGIsIChBbGdfZXhwci5DT05TVCBhLCBfKSksXG4gICAgICAgICAgICBsb2NfYmluICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGMsIF8pIClcbiAgICAgICAgd2hlbiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGMpIC0+XG4gICAgICAgICgqIChiKmEvYykgJiBjfGEgLT4gKChjL2EpKmIpKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGMgYSksIGxvY19iaW4pLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggYSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLFxuICAgICAgICAgICAgbG9jZGl2ICkgKSAtPlxuICAgICAgICAoKiAoYS9iL2MpIC0+IGEvKGIqYykgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCBhLCBBbGdfZXhwci4oQ09OU1QgKE5ici5tdWx0IGIgYyksIGxvY2RpdikpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICAgKCAoIE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5TVU0gfCBPcGVyYXRvci5NSU5VU1xuICAgICAgICAgICAgICAgICAgfCBPcGVyYXRvci5QT1cgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgICAgICBfIClcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXylcbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciBhIChOYnIuSSAxMSlcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZ3JlYXRlciBiIE5ici56ZXJvXG4gICAgICAgICAgICAgJiYgTmJyLmlzX3NtYWxsZXIgYiAoTmJyLkkgMTEpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIucG93IGEgYiksIGxvY1xuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgbGV0IGEgPSBzaW1wbGlmeSBhIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIC0+IEFsZ19leHByLkNPTlNUIChOYnIubmVnIGEpLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc196ZXJvIGEgLT4gQWxnX2V4cHIuQ09OU1QgTmJyLm9uZSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU0lOVVMgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLlNRUlQgfCBPcGVyYXRvci5MT0cgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peCksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYyAtPlxuICAgIGxldCBleHByID0gc2ltcGxpZnkgZXhwciBpblxuICAgIChtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkNPTlNUIF8sIF8gLT4gQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYylcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXywgX1xuICB8IEFsZ19leHByLkFMR19WQVIgXywgX1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8sIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfLCBfXG4gIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPlxuICAgIGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYyAtPlxuICAgIGxldCBjb25kLCB5ZXMsIG5vID0gc2ltcGxpZnlfYm9vbCBjb25kLCBzaW1wbGlmeSB5ZXMsIHNpbXBsaWZ5IG5vIGluXG4gICAgKG1hdGNoIGNvbmQgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSwgXyAtPiB5ZXNcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IG5vXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgX1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgXyAtPlxuICAgICAgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pLCBsb2MpXG5cbmFuZCBzaW1wbGlmeV9ib29sIGV4cHJfYm9vbCA9XG4gIG1hdGNoIGV4cHJfYm9vbCB3aXRoXG4gIHwgQWxnX2V4cHIuVFJVRSwgXyB8IEFsZ19leHByLkZBTFNFLCBfIC0+IGV4cHJfYm9vbFxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgKG1hdGNoIHNpbXBsaWZ5X2Jvb2wgYSB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IEFsZ19leHByLlRSVUUsIGxvY1xuICAgIHwgKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXyksIF8gKSBhcyBhJyAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgbG9jKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID0gc2ltcGxpZnlfYm9vbCBhLCBzaW1wbGlmeV9ib29sIGIgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuQU5EIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5UUlVFLCBfKSwgXyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5GQUxTRSwgXyksIF8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuVFJVRSwgXykgLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuRkFMU0UsIF8pIC0+IGJcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeSBhLCBzaW1wbGlmeSBiIGluXG4gICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgIChtYXRjaCBvcCB3aXRoXG4gICAgICB8IE9wZXJhdG9yLkdSRUFURVIgLT5cbiAgICAgICAgaWYgTmJyLmlzX2dyZWF0ZXIgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuU01BTExFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfc21hbGxlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuRElGRiAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2MpXG4gICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApICkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jKVxuXG5sZXQgc2ltcGxpZnkgZXhwciA9XG4gIGxldCByb290X29ubHkgPSBmYWxzZSBpblxuICBzaW1wbGlmeSB+cm9vdF9vbmx5IGV4cHJcblxubGV0IHJlYyBjbGVhbiBleHByID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwciBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGNsZWFuIGEsIGNsZWFuIGIpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGNsZWFuIGEpKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIGR0KSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5ESUZGX1RPS0VOIChjbGVhbiBleHByLCBkdCkpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuQ09OU1QgXyAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuSUYgKGNsZWFuX2Jvb2wgY29uZCwgY2xlYW4geWVzLCBjbGVhbiBubykpXG5cbmFuZCBjbGVhbl9ib29sIGV4cHJfYm9vbCA9XG4gIGxldCBleHByID0gZnN0IGV4cHJfYm9vbCBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhLCBjbGVhbl9ib29sIGIpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG5cbmxldCByZWMgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPVxuICBtYXRjaCBlIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSwgZSksIF9cbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBudW0gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUubnVtIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBkZW4gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUuZGVuIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuU1VNLCBlMSwgZTIpLCBfIC0+XG4gICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlMSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUxIC0+XG4gICAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUyIHdpdGhcbiAgICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTJcbiAgICAgICAgd2hlbiBjb21wYXJlIGNvcnJlY3RlZF9yYXRlMS52YXIgY29ycmVjdGVkX3JhdGUyLnZhciA9IDBcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZXF1YWwgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID0gTmJyLmFkZCBjb3JyZWN0ZWRfcmF0ZTEubnVtIGNvcnJlY3RlZF9yYXRlMi5udW07XG4gICAgICAgICAgfVxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMCAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ycmVjdGVkX3JhdGUxIHdpdGhcbiAgICAgICAgICAgIG51bSA9XG4gICAgICAgICAgICAgIE5ici5hZGRcbiAgICAgICAgICAgICAgICAoTmJyLm11bHQgY29ycmVjdGVkX3JhdGUyLmRlbiBjb3JyZWN0ZWRfcmF0ZTEubnVtKVxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5udW0pO1xuICAgICAgICAgICAgZGVuID0gTmJyLm11bHQgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuO1xuICAgICAgICAgIH1cbiAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKSlcbiAgfCAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCAoIE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NSU5VUyB8IE9wZXJhdG9yLlBPV1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUFYIHwgT3BlcmF0b3IuTUlOICksXG4gICAgICAgICAgXyxcbiAgICAgICAgICBfICksXG4gICAgICBfIClcbiAgfCAoICggQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5JRiBfICksXG4gICAgICBfICkgLT5cbiAgICBOb25lXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfIC0+IFNvbWUgeyB2YXIgPSBTb21lIGU7IG51bSA9IE5ici5vbmU7IGRlbiA9IE5ici5vbmUgfVxuICB8IEFsZ19leHByLkNPTlNUIGNzdCwgXyAtPiBTb21lIHsgdmFyID0gTm9uZTsgbnVtID0gY3N0OyBkZW4gPSBOYnIub25lIH1cblxubGV0IGdldF9jb3JyZWN0ZWRfcmF0ZSBlID0gZ2V0X2NvcnJlY3RlZF9yYXRlIChjbGVhbiBlKVxuXG5sZXQgcHJpbnQgcHJfdmFyIGYgY29ycmVjdGVkX3JhdGVfY29uc3QgPVxuICBtYXRjaCBjb3JyZWN0ZWRfcmF0ZV9jb25zdCB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTm9uZVwiXG4gIHwgU29tZSBhIC0+XG4gICAgKG1hdGNoIGEudmFyIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglYS8lYSkuJWFcIiBOYnIucHJpbnQgYS5udW0gTmJyLnByaW50IGEuZGVuIHByX3ZhciBhLnZhclxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4pXG5cbmxldCBuZWNlc3NhcmlseV9lcXVhbCBhX29wdCBiX29wdCA9XG4gIG1hdGNoIGFfb3B0LCBiX29wdCB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgIE9wdGlvbl91dGlsLmVxdWFsIEFsZ19leHByLmVxdWFsIGEudmFyIGIudmFyXG4gICAgJiYgTmJyLmlzX2VxdWFsIChOYnIubXVsdCBhLm51bSBiLmRlbikgKE5ici5tdWx0IGEuZGVuIGIubnVtKVxuXG5sZXQgZGVwIGVtcHR5IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52ID90aW1lX3ZhciBleHByID1cbiAgbGV0IHJlYyBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZXhwciBhY2N1ID1cbiAgICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCBlMSwgZTIpIHwgQWxnX2V4cHIuSUYgKF8sIGUxLCBlMikgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlMVxuICAgICAgICAoYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUyIGFjY3UpXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKF8sIGUpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChlLCBfKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZSwgXykgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlIGFjY3VcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPlxuICAgICAgKG1hdGNoIHRpbWVfdmFyIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPiBhZGRfbWl4dHVyZSBpZCBhY2N1XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICggXCJBIHZhcmlhYmxlIGZvciB0aW1lIHNoYWxsIGJlIHByb3ZpZGVkIHRvIGFuYWx5c2UgdGhlIFxcXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jZXMgaW4gYSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICBzbmQgZXhwciApKSlcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgICAgYWNjdVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCAtPiB1bmlvbiAoZGVwX2VudiBpZCkgYWNjdVxuICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGFkZF9taXh0dXJlIG1peCBhY2N1XG4gICAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhZGRfdG9rZW4gaWQgYWNjdVxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBhY2N1XG4gIGluXG4gIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGVtcHR5XG5cbmxldCByZWMgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHIgPVxuICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuSUYgKGIsIGUxLCBlMikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgKEFsZ19leHByLklGXG4gICAgICAgICAoIGIsXG4gICAgICAgICAgIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSxcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyICkpXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGUxLCBlMikgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICBBbGdfZXhwci5hZGRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMSAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSlcbiAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubWludXNcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgT3BlcmF0b3IuTU9EVUxPIC0+IGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICBBbGdfZXhwci5kaXZcbiAgICAgICAgKEFsZ19leHByLm1pbnVzXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpIGUyKVxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSBlMSkpXG4gICAgICAgIChBbGdfZXhwci5wb3cgZTIgKEFsZ19leHByLmludCAyKSlcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKCogKHVedikqKHYnKmxuKHUpK3YqdScvdSkgKilcbiAgICAgIEFsZ19leHByLm11bHQgKEFsZ19leHByLnBvdyBlMSBlMilcbiAgICAgICAgKEFsZ19leHByLmFkZFxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdFxuICAgICAgICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgICAgICAgICAgICAoQWxnX2V4cHIubG4gZTEpKVxuICAgICAgICAgICAoQWxnX2V4cHIuZGl2XG4gICAgICAgICAgICAgIChBbGdfZXhwci5tdWx0IGUyIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpKVxuICAgICAgICAgICAgICBlMSkpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGUpIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgQWxnX2V4cHIudW1pbnVzIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIudW1pbnVzIChBbGdfZXhwci5zaW4gZSkpXG4gICAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpIChBbGdfZXhwci5jb3MgZSlcbiAgICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAxKSBlKVxuICAgIHwgT3BlcmF0b3IuU1FSVCAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAoLTEpKSAoQWxnX2V4cHIuc3FydCBlKSlcbiAgICB8IE9wZXJhdG9yLkVYUCAtPiBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgZVxuICAgIHwgT3BlcmF0b3IuVEFOIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmFkZCAoQWxnX2V4cHIuaW50IDEpIChBbGdfZXhwci5wb3cgZSAoQWxnX2V4cHIuaW50IDIpKSlcbiAgICB8IE9wZXJhdG9yLklOVCAtPiBBbGdfZXhwci5pbnQgMClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIgLT4gZl90aW1lICgpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICkgLT5cbiAgICBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBmX21peCBtaXhcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBmX3Rva2VuIGlkXG4gIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgIC0+XG4gICAgZl9zeW1iIGV4cHJcblxubGV0IGRpZmZfdG9rZW4gZXhwciB0b2tlbiA9XG4gIGxldCBmX21peCBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfdG9rZW4gYSA9XG4gICAgaWYgYSA9IHRva2VuIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGRpZmZfbWl4dHVyZSA/dGltZV92YXIgZXhwciBtaXh0dXJlID1cbiAgbGV0IGZfbWl4IGEgPVxuICAgIGlmIGEgPSBtaXh0dXJlIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfdG9rZW4gXyA9IEFsZ19leHByLmludCAwIGluXG4gIGxldCBmX3N5bWIgZXhwciA9IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peHR1cmUpLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSAoKSA9XG4gICAgbWF0Y2ggdGltZV92YXIgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gbWl4dHVyZSA9IGIgLT4gQWxnX2V4cHIuaW50IDFcbiAgICB8IFNvbWUgXyAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkEgdGltZS1kZXBlbmRlbnQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZGlmZmVyZW50aWF0ZWQgd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgdmFyaWFibGUgZm9yIHRpbWUgcHJvZ3Jlc3NcIixcbiAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjY3UgYXJyYXlfaWQgLT5cbiAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjY3UgcGlkIC0+IGYgcGlkIGFjY3UpIGFjY3UgYXJyYXlfaWQpXG4gICAgYWNjdSBtaXhcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UgPVxuICBsZXQgbCA9IEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZXhwciBpblxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1KSBhY2N1IGxcblxubGV0IGZvbGRfb3Zlcl9taXh0dXJlc19pbl9hbGdfZXhwcnMgZiBtb2RlbCBhY2N1ID1cbiAgbGV0IGFsZ3NfZXhwciA9IE1vZGVsLmdldF9hbGdzIG1vZGVsIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IE1vZGVsLmdldF9vYnMgbW9kZWwgaW5cbiAgKCphbGdzKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IChfLCBtaXgpIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3UgYWxnc19leHByXG4gIGluXG4gICgqb2JzZXJ2YXRpb25zKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IG1peCAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgbWl4IGFjY3UpXG4gICAgICBhY2N1IG9ic2VydmFibGVzXG4gIGluXG4gICgqcnVsZXMqKVxuICBsZXQgcnVsZXMgPSBNb2RlbC5nZXRfcnVsZXMgbW9kZWwgaW5cbiAgKCpyYXRlKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IGVsZW1lbnRhcnlfcnVsZSAtPlxuICAgICAgICBsZXQgcmF0ZSA9IGVsZW1lbnRhcnlfcnVsZS5QcmltaXRpdmVzLnJhdGUgaW5cbiAgICAgICAgbGV0IGFjY3UgPSBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgcmF0ZSBhY2N1IGluXG4gICAgICAgICgqdW5hcnlfcmF0ZSopXG4gICAgICAgIGxldCB1bmFyeV9yYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgKCpkZWx0YSB0b2tlbnMqKVxuICAgICAgICBsZXQgZGVsdGFfdG9rZW5zID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2N1IChleHByLCBfKSAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgZXhwciBhY2N1KVxuICAgICAgICAgICAgYWNjdSBkZWx0YV90b2tlbnNcbiAgICAgICAgaW5cbiAgICAgICAgYWNjdSlcbiAgICAgIGFjY3UgcnVsZXNcbiAgaW5cbiAgYWNjdVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFNpbXVsYXRpb25faW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgc3RvcnlfaWQ6IGludDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV9ldmVudDogaW50O1xuICAgIHByb2ZpbGluZ19pbmZvOiAnYTtcbiAgfVxuICAoKiB0eXBlIG9mIGRhdGEgdG8gYmUgZ2l2ZW4gd2l0aCBvYnNlcnZhYmxlcyBmb3Igc3RvcnkgY29tcHJlc3Npb25cbiAgICAgKHN1Y2ggYXMgZGF0ZSB3aGVuIHRoZSBvYnMgaXMgdHJpZ2dlcmVkKilcblxuICBsZXQgdXBkYXRlX3Byb2ZpbGluZ19pbmZvIGEgaW5mbyA9XG4gICAge1xuICAgICAgc3RvcnlfaWQgPSBpbmZvLnN0b3J5X2lkO1xuICAgICAgc3RvcnlfdGltZSA9IGluZm8uc3RvcnlfdGltZTtcbiAgICAgIHN0b3J5X2V2ZW50ID0gaW5mby5zdG9yeV9ldmVudDtcbiAgICAgIHByb2ZpbGluZ19pbmZvID0gYTtcbiAgICB9XG5cbiAgbGV0IGV2ZW50IGEgPSBhLnN0b3J5X2V2ZW50XG4gIGxldCBzdG9yeV9pZCBhID0gYS5zdG9yeV9pZFxuICBsZXQgY29tcGFyZV9ieV9zdG9yeV9pZCB4IHkgPSBNb2RzLmludF9jb21wYXJlIHguc3RvcnlfaWQgeS5zdG9yeV9pZFxuXG4gIGxldCBkdW1teSBhID1cbiAgICB7IHN0b3J5X2lkID0gMDsgc3RvcnlfdGltZSA9IDAuOyBzdG9yeV9ldmVudCA9IDA7IHByb2ZpbGluZ19pbmZvID0gYSB9XG5cbiAgbGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICAgIFwiXFxcInNpbXVsYXRpb25faW5mb1xcXCI6e1xcXCJpZFxcXCI6MCxcXFwidGltZVxcXCI6MSxcXFwiZXZlbnRcXFwiOjIsXFxcInByb2ZpbGluZ1xcXCI6M31cIlxuXG4gIGxldCB0b19qc29uIGYgeCA9XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCB4LnN0b3J5X2lkO1xuICAgICAgICBgRmxvYXQgeC5zdG9yeV90aW1lO1xuICAgICAgICBgSW50IHguc3RvcnlfZXZlbnQ7XG4gICAgICAgIGYgeC5wcm9maWxpbmdfaW5mbztcbiAgICAgIF1cblxuICBsZXQgb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IFsgYEludCBzdG9yeV9pZDsgYEZsb2F0IHN0b3J5X3RpbWU7IGBJbnQgc3RvcnlfZXZlbnQ7IGluZm8gXSAtPlxuICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvID0gZiBpbmZvIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgc2ltdWxhdGlvbl9pbmZvXCIsIHgpKVxuXG4gIGxldCB3cml0ZV9qc29uIGYgb2IgeCA9XG4gICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2lkKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvIHguc3RvcnlfdGltZSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8geC5zdG9yeV9ldmVudCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8geC5wcm9maWxpbmdfaW5mbyk7XG4gICAgICBdXG5cbiAgbGV0IHJlYWRfanNvbiBmIHN0IGIgPVxuICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgIChmdW4gc3QgYiBzdG9yeV9pZCAtPlxuICAgICAgICBsZXQgc3RvcnlfdGltZSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0b3J5X2V2ZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHByb2ZpbGluZ19pbmZvID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIHsgc3RvcnlfaWQ7IHN0b3J5X3RpbWU7IHN0b3J5X2V2ZW50OyBwcm9maWxpbmdfaW5mbyB9KVxuICAgICAgc3QgYlxuZW5kXG5cbnR5cGUgZXZlbnRfa2luZCA9XG4gIHwgUlVMRSBvZiBpbnRcbiAgfCBJTklUIG9mIGludCBsaXN0ICgqIHRoZSBhZ2VudHMgKilcbiAgfCBQRVJUIG9mIHN0cmluZyAoKiB0aGUgcnVsZSAqKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgeCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFJVTEUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUlVMRSglaSlcIiBpXG4gICAgfCBJTklUIGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IFBFUlQgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUEVSVCglcylcIiBzKVxuICB8IFNvbWUgZW52IC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gICAgfCBSVUxFIHJfaWQgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgcl9pZFxuICAgIHwgSU5JVCBzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBzKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IFJVTEUgcl9pZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVhXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIlxuICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudilcbiAgICAgIHJfaWQgXCJpbnZob3VzZVwiIFwiZmlsbGVkXCIgXCJsaWdodGJsdWVcIlxuICB8IElOSVQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiW2xhYmVsPVxcXCJJbnRybyBAWzxoPiVhQF1cXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvcj1ncmVlbl1cIlxuICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgcyBcImhvdXNlXCIgXCJmaWxsZWRcIlxuICB8IFBFUlQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIiBzXG4gICAgICBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImdyZWVuXCJcblxudHlwZSBzdGVwID1cbiAgfCBTdWJzIG9mIGludCAqIGludFxuICB8IFJ1bGUgb2ZcbiAgICAgIGludCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5ldmVudCAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBQZXJ0IG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBJbml0IG9mIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdFxuICB8IE9icyBvZlxuICAgICAgc3RyaW5nXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICAgICAgKiB1bml0IFNpbXVsYXRpb25faW5mby50XG4gIHwgRHVtbXkgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IHN0ZXAgbGlzdFxuXG5sZXQgc3Vic19zdGVwIGEgYiA9IFN1YnMgKGEsIGIpXG5sZXQgZHVtbXlfc3RlcCB4ID0gRHVtbXkgeFxubGV0IHByaW50X3N1YnMgX2YgKF9hLCBfYikgPSAoKVxuXG5sZXQgcHJpbnRfc2l0ZSA/ZW52IGYgKChhZ19pZCwgYWcpLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYV8laS4lYVwiIChNb2RlbC5wcmludF9hZ2VudCA/ZW52KSBhZyBhZ19pZFxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBhZ1xuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgIHNcblxubGV0IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBsb2cgYWN0aW9ucyA9XG4gIGxldCBzaWdzID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGVudiAtPiBTb21lIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgaW5cbiAgaWYgY29tcGFjdCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgbG9nIFwiSU5JVFwiXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCIqKipAWzwxPklOSVQ6JWFAXSoqKlwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MpKVxuICAgICAgYWN0aW9uc1xuXG5sZXQgcHJpbnRfc2lkZV9lZmZlY3RzID9lbnYgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiBcIilcbiAgICAoZnVuIGYgKHNpdGUsIHN0YXRlKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlNpZGVfZWZmZWN0cyglYSwlYSlcIiAocHJpbnRfc2l0ZSA/ZW52KSBzaXRlXG4gICAgICAgIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgP3NpZ3M6KE9wdGlvbl91dGlsLm1hcCBNb2RlbC5zaWduYXR1cmVzIGVudikpXG4gICAgICAgIHN0YXRlKVxuXG5sZXQgcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBsb2cgKGV2X2tpbmQsIGUpID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBwcmludF9ldmVudF9raW5kID9lbnYgbG9nIGV2X2tpbmRcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZ1xuICAgICAgXCJAWyoqKlJlZmluZWQgZXZlbnQ6KioqQCwqIEthcHBhX3J1bGUgJWEgU3RvcnkgZW5jb2Rpbmc6JWElYSVhQF1cIlxuICAgICAgKHByaW50X2V2ZW50X2tpbmQgP2VudikgZXZfa2luZFxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MpKSlcbiAgICAgIChlLkluc3RhbnRpYXRpb24udGVzdHMgQCBbIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXSlcbiAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBlLkluc3RhbnRpYXRpb24uYWN0aW9ucyAocHJpbnRfc2lkZV9lZmZlY3RzID9lbnYpXG4gICAgICBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuXG5sZXQgcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoZXZfa2luZCwgdGVzdHMsIF8pID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiT0JTICVzXCIgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIioqKkBbPDE+T0JTICVzOiVhQF0qKipcIiBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgdGVzdHNcblxubGV0IHByaW50X3N0ZXAgPyhjb21wYWN0ID0gZmFsc2UpID9lbnYgZiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gcHJpbnRfc3VicyBmIChhLCBiKVxuICB8IFJ1bGUgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFJVTEUgeCwgeSlcbiAgfCBQZXJ0ICh4LCB5LCBfeikgLT4gcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBmIChQRVJUIHgsIHkpXG4gIHwgSW5pdCBhIC0+IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBmIGFcbiAgfCBPYnMgKGEsIGIsIGMpIC0+IHByaW50X29icyB+Y29tcGFjdCA/ZW52IGYgKGEsIGIsIGMpXG4gIHwgRHVtbXkgXyAtPiAoKVxuXG5sZXQgZ2V0X3R5cGVzX2Zyb21faW5pdCBhID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBhY3Rpb24gLT5cbiAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoXywgYXR5cGUpLCBfKSAtPiBhdHlwZSA6OiBhY2NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGFjYylcbiAgICBbXSBhXG5cbmxldCBwcmludF9sYWJlbF9vZl9zdGVwID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgU3VicyBfIC0+ICgpXG4gICAgfCBSdWxlICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWlcIiB4XG4gICAgfCBQZXJ0ICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSU5JVCglYSlcIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfaW50KSBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudiBmIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBEdW1teSBfIC0+ICgpKVxuXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gIFwiXFxcInN0ZXBcXFwiOltcXFwiU3Vic1xcXCIsXFxcIlJ1bGVcXFwiLFxcXCJQZXJ0XFxcIixcXFwiSW5pdFxcXCIsXFxcIk9ic1xcXCIsXFxcIkR1bW15XFxcIl1cIlxuXG5sZXQgd3JpdGVfc3RlcCBvYiBzID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggcyB3aXRoXG4gICAgfCBTdWJzIChhLCBiKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGIpO1xuICAgICAgXVxuICAgIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG8geCk7XG4gICAgICAgIChmdW4gbyAtPiBJbnN0YW50aWF0aW9uLndyaXRlX2V2ZW50IEFnZW50LndyaXRlX2pzb24gbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBJbml0IGEgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV9hY3Rpb24gQWdlbnQud3JpdGVfanNvbikgbyBhKTtcbiAgICAgIF1cbiAgICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgKEluc3RhbnRpYXRpb24ud3JpdGVfdGVzdCBBZ2VudC53cml0ZV9qc29uKSlcbiAgICAgICAgICAgIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgRHVtbXkgXyAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSkgXSlcblxubGV0IHJlYWRfc3RlcCBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBTdWJzIChhLCBiKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBSdWxlICh4LCB5LCB6KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBQZXJ0ICh4LCB5LCB6KVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBsID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RfcmV2XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2FjdGlvbiBBZ2VudC5yZWFkX2pzb24pKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBJbml0IChMaXN0LnJldiBsKVxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfdGVzdCBBZ2VudC5yZWFkX2pzb24pKSlcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBPYnMgKHgsIHksIHopXG4gICAgICB8IDUgLT4gRHVtbXkgXCJcIlxuICAgICAgfCBfIC0+IHJhaXNlIChZb2pzb24uanNvbl9lcnJvciBcIkludmFsaWQgc3RlcFwiKVxuICAgICAgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgc3RlcF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IFN1YnMgKGEsIGIpIC0+IGBMaXN0IFsgYEludCAwOyBgSW50IGE7IGBJbnQgYiBdXG4gIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDE7XG4gICAgICAgIGBJbnQgeDtcbiAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF90b19qc29uIEFnZW50LnRvX2pzb24geTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBQZXJ0ICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMjtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IEluaXQgYSAtPlxuICAgIGxldCByZXZfYWN0aW9ucyA9XG4gICAgICBMaXN0LnJldl9tYXAgKEluc3RhbnRpYXRpb24uYWN0aW9uX3RvX2pzb24gQWdlbnQudG9fanNvbikgYVxuICAgIGluXG4gICAgYExpc3QgWyBgSW50IDM7IGBMaXN0IChMaXN0LnJldiByZXZfYWN0aW9ucykgXVxuICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDQ7XG4gICAgICAgIGBTdHJpbmcgeDtcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIHogLT5cbiAgICAgICAgICAgICAgIGBMaXN0IChMaXN0Lm1hcCAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gQWdlbnQudG9fanNvbikgeikpXG4gICAgICAgICAgICAgeSk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgRHVtbXkgXyAtPiBgTGlzdCBbIGBJbnQgNSBdXG5cbmxldCB3cml0ZV9qc29uID0gSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9zdGVwXG5sZXQgcmVhZF9qc29uIHN0IGIgPSBMaXN0LnJldiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXYgcmVhZF9zdGVwIHN0IGIpXG5cbmxldCBzdHJpbmdfb2Zfc3RlcCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zdGVwIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgc3RlcF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc3RlcCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgc3RlcF9pc19vYnMgPSBmdW5jdGlvblxuICB8IE9icyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX2luaXQgPSBmdW5jdGlvblxuICB8IEluaXQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3N1YnMgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgSW5pdCBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3J1bGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgXyAtPiB0cnVlXG4gIHwgUGVydCBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3BlcnQgPSBmdW5jdGlvblxuICB8IFBlcnQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgT2JzIChfLCBfLCBpbmZvKSB8IFJ1bGUgKF8sIF8sIGluZm8pIHwgUGVydCAoXywgXywgaW5mbykgLT4gU29tZSBpbmZvXG4gIHwgSW5pdCBfIC0+IFNvbWUgKFNpbXVsYXRpb25faW5mby5kdW1teSAoKSlcbiAgfCBTdWJzIF8gfCBEdW1teSBfIC0+IE5vbmVcblxubGV0IGNyZWF0aW9uX29mX2FjdGlvbnMgb3AgYWN0aW9ucyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPiBvcCB4IDo6IGxcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGwpXG4gICAgW10gYWN0aW9uc1xuXG5sZXQgY3JlYXRpb25fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgUnVsZSAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IFBlcnQgKF8sIHsgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gYWM7IF8gfSwgXylcbiAgfCBJbml0IGFjIC0+XG4gICAgY3JlYXRpb25fb2ZfYWN0aW9ucyBmc3QgYWNcbiAgfCBPYnMgXyB8IER1bW15IF8gfCBTdWJzIF8gLT4gW11cblxubGV0IGhhc19jcmVhdGlvbl9vZl9zdGVwIHggPSBjcmVhdGlvbl9vZl9zdGVwIHggPD4gW11cblxubGV0IHRlc3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXVxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT5cbiAgICBMaXN0LmZvbGRfcmlnaHQgTGlzdC5hcHBlbmQgZS5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICBlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzXG4gIHwgSW5pdCBfIC0+IFtdXG4gIHwgT2JzIChfLCB4LCBfKSAtPiBMaXN0LmNvbmNhdCB4XG4gIHwgRHVtbXkgXyAtPiBbXVxuXG5sZXQgYWN0aW9uc19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBTdWJzIF8gLT4gW10sIFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zLCBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICB8IEluaXQgeSAtPiB5LCBbXVxuICB8IE9icyAoXywgXywgXykgLT4gW10sIFtdXG4gIHwgRHVtbXkgXyAtPiBbXSwgW11cblxubGV0IHNpZGVfZWZmZWN0c19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+IGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gIHwgU3VicyBfIHwgT2JzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IFtdXG5cbmxldCBpbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgPVxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ7XFxuXFxcInV1aWRcXFwiIDogXFxcIlwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyAoc3RyaW5nX29mX2ludCB1dWlkKSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJcXFwiLFxcblxcXCJkaWN0XFxcIjp7XCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBTaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIGpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwifSxcXG5cXFwibW9kZWxcXFwiOlwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGRlc2MgKE1vZGVsLnRvX3lvanNvbiBlbnYpIGluXG4gIG91dHB1dF9zdHJpbmcgZGVzYyBcIixcXG5cXFwidHJhY2VcXFwiOltcIlxuXG5sZXQgYXNzZXJ0X2ZpZWxkIGlkZW50IHggPVxuICBpZiBpZGVudCA8PiB4IHRoZW5cbiAgICBZb2pzb24uanNvbl9lcnJvclxuICAgICAgKFwidHJhY2UgbGFja3MgdGhlIGZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgKGF0IHRoZSByaWdodCBwbGFjZSlcIilcblxubGV0IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCBpZGVudCA9XG4gICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZlxuICBpblxuICBsZXQgaWRlbnQnLCB1dWlkID1cbiAgICBpZiBpZGVudCA9IFwidXVpZFwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgICAgIGxldCB1dWlkID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgbGV4X3N0IGxleF9idWZcbiAgICAgIGluXG4gICAgICBsZXQgdXVpZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHV1aWQpIHdpdGggXyAtPiBOb25lIGluXG4gICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiwgdXVpZFxuICAgICkgZWxzZVxuICAgICAgaWRlbnQsIE5vbmVcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50JyBcImRpY3RcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5za2lwX2pzb24gbGV4X3N0IGxleF9idWYgaW5cbiAgdXVpZFxuXG5sZXQgZm9sZF90cmFjZSBmIGluaXQgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgXyA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwidHJhY2VcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoWW9qc29uLkJhc2ljLnJlYWRfc2VxdWVuY2VcbiAgICAgICAgIChmdW4gYWNjIHggeSAtPiBmIGVudiBhY2MgKHJlYWRfc3RlcCB4IHkpKVxuICAgICAgICAgKGluaXQgZW52KSlcbiAgICAgIGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5IFlvanNvbi5CYXNpYy5yZWFkX29iamVjdF9lbmQgbGV4X2J1ZiB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+ICgpXG4gIGluXG4gIGVudiwgb3V0XG5cbmxldCBmb2xkX3RyYWNlX2ZpbGUgZiBpbml0IGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0IG91dCA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgKGZvbGRfdHJhY2UgZiBpbml0KSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBjbG9zZV9pbiBkZXNjIGluXG4gIG91dFxuXG5sZXQgZ2V0X2hlYWRlcnNfZnJvbV9maWxlIGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGN1cmwgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IHV1aWQgPSByZWFkX3RyYWNlX2hlYWRlcnMgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwibW9kZWxcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5vZl95b2pzb25cbiAgICAgIChKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gbGV4X3N0IGxleF9idWYpXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgdXVpZCwgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWZmaWNpZW5jeSA6IHNpZ1xuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBuYiA6IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiBpbnRcbiAgdmFsIHByaW50X2RldGFpbCA6IGN1cnJlbnRfZXZlbnQ6aW50IC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCA6IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX2JpbmFyeSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX3VuYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX3RpbWVfY29ycmVjdGlvbiA6IHQgLT4gdFxuICB2YWwgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCB3cml0ZV90IDogQnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCBzdHJpbmdfb2ZfdCA6ID9sZW46aW50IC0+IHQgLT4gc3RyaW5nXG4gIHZhbCByZWFkX3QgOiBZb2pzb24uU2FmZS5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgdmFsIHRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICBsZXQgaW5pdCBzaXplID1cbiAgICB7XG4gICAgICBjb25zZWN1dGl2ZSA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9IDA7XG4gICAgICBub19tb3JlX2JpbmFyeSA9IDA7XG4gICAgICBub19tb3JlX3VuYXJ5ID0gMDtcbiAgICAgIGNsYXNoaW5nX2luc3RhbmNlID0gMDtcbiAgICAgIHRpbWVfY29ycmVjdGlvbiA9IDA7XG4gICAgfVxuXG4gIGxldCBuYiB0ID1cbiAgICB0Lm5vX21vcmVfYmluYXJ5ICsgdC5ub19tb3JlX3VuYXJ5ICsgdC5jbGFzaGluZ19pbnN0YW5jZSArIHQudGltZV9jb3JyZWN0aW9uXG5cbiAgbGV0IG5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKVxuICBsZXQgbmJfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkXG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gc3VjYyB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX2JpbmFyeSA8LSBzdWNjIHQubm9fbW9yZV9iaW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX3VuYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX3VuYXJ5IGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNsYXNoaW5nX2luc3RhbmNlIDwtIHN1Y2MgdC5jbGFzaGluZ19pbnN0YW5jZSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfdGltZV9jb3JyZWN0aW9uIHQgPVxuICAgIGxldCAoKSA9IHQudGltZV9jb3JyZWN0aW9uIDwtIHN1Y2MgdC50aW1lX2NvcnJlY3Rpb24gaW5cbiAgICB0XG5cbiAgbGV0IHByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudCBmIHQgPVxuICAgIGxldCBhbGwgPSBmbG9hdF9vZl9pbnQgKG5iIHQpIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBmIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWxsID4gMC4gdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuQCBOdWxsIGV2ZW50IGNhdXNlOkBdQCxcIlxuICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX3VuYXJ5IC8uIGFsbClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQubm9fbW9yZV9iaW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdENsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQuY2xhc2hpbmdfaW5zdGFuY2UgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXHRQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0LnRpbWVfY29ycmVjdGlvbiAvLiBhbGwpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIlxuXG4gIGxldCB0b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29uc2VjdXRpdmVcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2ZfaW50IHQuY29uc2VjdXRpdmU7XG4gICAgICAgIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiLCBgSW50IHQuY29uc2VjdXRpdmVfYmxvY2tlZDtcbiAgICAgICAgXCJub19tb3JlX2JpbmFyeVwiLCBgSW50IHQubm9fbW9yZV9iaW5hcnk7XG4gICAgICAgIFwibm9fbW9yZV91bmFyeVwiLCBgSW50IHQubm9fbW9yZV91bmFyeTtcbiAgICAgICAgXCJjbGFzaGluZ19pbnN0YW5jZVwiLCBgSW50IHQuY2xhc2hpbmdfaW5zdGFuY2U7XG4gICAgICAgIFwidGltZV9jb3JyZWN0aW9uXCIsIGBJbnQgdC50aW1lX2NvcnJlY3Rpb247XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIHtcbiAgICAgICAgY29uc2VjdXRpdmUgPVxuICAgICAgICAgIChKc29uVXRpbC50b19hcnJheSBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVcIiB4KTtcbiAgICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiIHgpO1xuICAgICAgICBub19tb3JlX2JpbmFyeSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJub19tb3JlX2JpbmFyeVwiIHgpO1xuICAgICAgICBub19tb3JlX3VuYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfdW5hcnlcIiB4KTtcbiAgICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludFxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImNsYXNoaW5nX2luc3RhbmNlXCIgeCk7XG4gICAgICAgIHRpbWVfY29ycmVjdGlvbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGltZV9jb3JyZWN0aW9uXCIgeCk7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpbXVsYXRpb24gZWZmaWNpZW5jeVwiLCB4KSlcblxuICBsZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbiAgbGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZV90IG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHJlYWRfdCBwIGxiID0gb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG4gIGxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5lbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRpbWU6IGZsb2F0O1xuICBtdXRhYmxlIGV2ZW50czogaW50O1xuICBtdXRhYmxlIHN0b3JpZXM6IGludDtcbiAgbXV0YWJsZSBsYXN0X3BvaW50OiBpbnQ7XG4gIG11dGFibGUgc3RhdF9udWxsOiBFZmZpY2llbmN5LnQ7XG4gIGluaXRfdGltZTogZmxvYXQ7XG4gIGluaXRfZXZlbnQ6IGludDtcbiAgbXV0YWJsZSBwbG90X3BlcmlvZDogQ29uZmlndXJhdGlvbi5wZXJpb2Q7XG4gIG11dGFibGUgbWF4X3RpbWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhfZXZlbnQ6IGludCBvcHRpb247XG59XG5cbmxldCBjdXJyZW50X3N0b3J5IGMgPSBjLnN0b3JpZXNcbmxldCBjdXJyZW50X3RpbWUgYyA9IGMudGltZVxubGV0IGN1cnJlbnRfZXZlbnQgYyA9IGMuZXZlbnRzXG5sZXQgbmJfbnVsbF9ldmVudCBjID0gRWZmaWNpZW5jeS5uYiBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfbnVsbF9ldmVudCB+cnVsZV9pZCBjID1cbiAgRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfYmxvY2tlZCBjID0gRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsXG5sZXQgaW5jX3N0b3JpZXMgYyA9IGMuc3RvcmllcyA8LSBjLnN0b3JpZXMgKyAxXG5sZXQgaW5jX2V2ZW50cyBjID0gYy5ldmVudHMgPC0gYy5ldmVudHMgKyAxXG5cbmxldCBjaGVja190aW1lIGMgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLnRpbWUgPD0gbWF4XG5cbmxldCBjaGVja19vdXRwdXRfdGltZSBjIG90ID1cbiAgbWF0Y2ggYy5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBtYXggLT4gb3QgPD0gbWF4XG5cbmxldCBjaGVja19ldmVudHMgYyA9XG4gIG1hdGNoIGMubWF4X2V2ZW50IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLmV2ZW50cyA8IG1heFxuXG5sZXQgb25lX3RpbWVfYWR2YW5jZSBjIGR0ID1cbiAgbGV0ICgpID0gYy50aW1lIDwtIGMudGltZSArLiBkdCBpblxuICBjaGVja190aW1lIGNcblxubGV0IG9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kucmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsIGluXG4gIGxldCAoKSA9IGluY19ldmVudHMgYyBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfYmluYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfdW5hcnlfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9ub19tb3JlX3VuYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPVxuICAgIGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuICBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgP3RpIGMgPVxuICBtYXRjaCBPcHRpb25fdXRpbC5iaW5kIE5ici50b19mbG9hdCB0aSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgdGkgLT5cbiAgICBsZXQgKCkgPSBjLnRpbWUgPC0gdGkgaW5cbiAgICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfdGltZV9jb3JyZWN0aW9uIGMuc3RhdF9udWxsIGluXG4gICAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfYmxvY2tlZF9ldmVudCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBnZXRfZWZmaWNpZW5jeSBjID0gYy5zdGF0X251bGxcblxubGV0IHByaW50X2VmZmljaWVuY3kgZiBjID1cbiAgRWZmaWNpZW5jeS5wcmludF9kZXRhaWwgfmN1cnJlbnRfZXZlbnQ6KGN1cnJlbnRfZXZlbnQgYykgZiBjLnN0YXRfbnVsbFxuXG5sZXQgaW5pdF90aW1lIGMgPSBjLmluaXRfdGltZVxubGV0IG1heF90aW1lIGMgPSBjLm1heF90aW1lXG5sZXQgbWF4X2V2ZW50cyBjID0gYy5tYXhfZXZlbnRcbmxldCBwbG90X3BlcmlvZCBjID0gYy5wbG90X3BlcmlvZFxuXG5sZXQgdGltZV9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB0bWF4IC0+XG4gICAgaWYgdG1heCA+IHQuaW5pdF90aW1lIHRoZW5cbiAgICAgIFNvbWUgKCh0LnRpbWUgLS4gdC5pbml0X3RpbWUpIC8uICh0bWF4IC0uIHQuaW5pdF90aW1lKSlcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBldmVudF9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW1heCAtPlxuICAgIGlmIGVtYXggPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lXG4gICAgICAgIChmbG9hdF9vZl9pbnQgKHQuZXZlbnRzIC0gdC5pbml0X2V2ZW50KVxuICAgICAgICAvLiBmbG9hdF9vZl9pbnQgKGVtYXggLSB0LmluaXRfZXZlbnQpKVxuXG5sZXQgc2V0X21heF90aW1lIGMgdCA9IGMubWF4X3RpbWUgPC0gdFxubGV0IHNldF9tYXhfZXZlbnRzIGMgZSA9IGMubWF4X2V2ZW50IDwtIGVcblxubGV0IHRyYWNrZWRfZXZlbnRzIChjb3VudGVyIDogdCkgOiBpbnQgb3B0aW9uID1cbiAgaWYgY291bnRlci5zdG9yaWVzID49IDAgdGhlblxuICAgIFNvbWUgY291bnRlci5zdG9yaWVzXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgKHQgOiB0KSBwbG90X3BlcmlvZCA6IHVuaXQgPSB0LnBsb3RfcGVyaW9kIDwtIHBsb3RfcGVyaW9kXG5cbmxldCBjcmVhdGUgPyhpbml0X3QgPSAwLikgPyhpbml0X2UgPSAwKSA/bWF4X3RpbWUgP21heF9ldmVudCB+cGxvdF9wZXJpb2RcbiAgICB+bmJfcnVsZXMgKCkgPVxuICB7XG4gICAgdGltZSA9IGluaXRfdDtcbiAgICBldmVudHMgPSBpbml0X2U7XG4gICAgc3RvcmllcyA9IC0xO1xuICAgIHN0YXRfbnVsbCA9IEVmZmljaWVuY3kuaW5pdCBuYl9ydWxlcztcbiAgICBwbG90X3BlcmlvZDtcbiAgICBpbml0X3RpbWUgPSBpbml0X3Q7XG4gICAgaW5pdF9ldmVudCA9IGluaXRfZTtcbiAgICBtYXhfdGltZTtcbiAgICBtYXhfZXZlbnQ7XG4gICAgbGFzdF9wb2ludCA9IDA7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSBjb3VudGVyID1cbiAgY291bnRlci50aW1lIDwtIGNvdW50ZXIuaW5pdF90aW1lO1xuICBjb3VudGVyLmV2ZW50cyA8LSBjb3VudGVyLmluaXRfZXZlbnQ7XG4gIGNvdW50ZXIuc3RvcmllcyA8LSAtMTtcbiAgY291bnRlci5sYXN0X3BvaW50IDwtIDA7XG4gIGNvdW50ZXIuc3RhdF9udWxsIDwtXG4gICAgRWZmaWNpZW5jeS5pbml0IChBcnJheS5sZW5ndGggY291bnRlci5zdGF0X251bGwuRWZmaWNpZW5jeS5jb25zZWN1dGl2ZSlcblxubGV0IG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gYyA9XG4gIHtcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjdXJyZW50X3N0b3J5IGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgPSBjdXJyZW50X3RpbWUgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgPSBjdXJyZW50X2V2ZW50IGMgKyAxO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBjdXJyZW50X3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8ucHJvZmlsaW5nX2luZm8gPSAoKTtcbiAgfVxuXG5sZXQgbmV4dF9zdG9yeSBjID1cbiAgbGV0ICgpID0gaW5jX3N0b3JpZXMgYyBpblxuICBuZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNcblxubGV0IHBvc2l0aXZlX3Bsb3RfcGVyaW9kIGNvdW50ZXIgPVxuICBtYXRjaCBwbG90X3BlcmlvZCBjb3VudGVyIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRFIGUgLT4gZSA+IDBcbiAgfCBDb25maWd1cmF0aW9uLkRUIHQgLT4gdCA+IDAuXG5cbmxldCBuZXh0X3BvaW50IGNvdW50ZXIgZHQgPVxuICBtYXRjaCBjb3VudGVyLnBsb3RfcGVyaW9kIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRUIGRUIC0+XG4gICAgaWYgZFQgPD0gMC4gdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9mbG9hdFxuICAgICAgICAoKG1pblxuICAgICAgICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSBpbmZpbml0eSAobWF4X3RpbWUgY291bnRlcikpXG4gICAgICAgICAgICAoZHQgKy4gY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAtLiBjb3VudGVyLmluaXRfdGltZSlcbiAgICAgICAgLy4gZFQpXG4gIHwgQ29uZmlndXJhdGlvbi5ERSBkRSAtPlxuICAgIGlmIGRFIDw9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIChjdXJyZW50X2V2ZW50IGNvdW50ZXIgLSBjb3VudGVyLmluaXRfZXZlbnQpIC8gZEVcblxubGV0IHRvX3Bsb3RfcG9pbnRzIGNvdW50ZXIgZHQgPVxuICBsZXQgbmV4dCA9IG5leHRfcG9pbnQgY291bnRlciBkdCBpblxuICBsZXQgbGFzdCA9IGNvdW50ZXIubGFzdF9wb2ludCBpblxuICBsZXQgKCkgPSBjb3VudGVyLmxhc3RfcG9pbnQgPC0gbmV4dCBpblxuICBsZXQgbiA9IG5leHQgLSBsYXN0IGluXG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICAoIHNuZFxuICAgICAgICAoVG9vbHMucmVjdGlcbiAgICAgICAgICAgKGZ1biAodGltZSwgYWNjKSBfIC0+XG4gICAgICAgICAgICAgKCB0aW1lIC0uIGRULFxuICAgICAgICAgICAgICAgaWYgY2hlY2tfb3V0cHV0X3RpbWUgY291bnRlciB0aW1lIHRoZW5cbiAgICAgICAgICAgICAgICAgdGltZSA6OiBhY2NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYWNjICkpXG4gICAgICAgICAgIChjb3VudGVyLmluaXRfdGltZSArLiAoZmxvYXRfb2ZfaW50IG5leHQgKi4gZFQpLCBbXSlcbiAgICAgICAgICAgbiksXG4gICAgICBjb3VudGVyIClcbiAgfCBDb25maWd1cmF0aW9uLkRFIF8gLT5cbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICBbIGNvdW50ZXIudGltZSBdLCBjb3VudGVyXG4gICAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgICBbXSwgY291bnRlclxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIChcIkNvdW50ZXIudG9fcGxvdF9wb2ludHM6IGludmFsaWQgaW5jcmVtZW50IFwiIF4gc3RyaW5nX29mX2ludCBuKVxuXG5sZXQgZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdCA9XG4gIGxldCBwb2ludHMsIGNvdW50ZXInID0gdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCBpblxuICBMaXN0Lml0ZXIgKGZ1biB0aW1lIC0+IG91dHB1dHMgY291bnRlcicgdGltZSkgcG9pbnRzXG5cbmxldCBmYWtlX3RpbWUgdCB0aW1lID0geyB0IHdpdGggdGltZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfaW5pdGlhbF9pbnB1dHMgP3V1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB1dWlkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdXVpZCAtPiBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIiVhQC4lYUAuXCIgQ29uZmlndXJhdGlvbi5wcmludCBjb25mXG4gICAgICAoS2FwcGFfcHJpbnRlci5lbnZfa2FwcGEgfm5vQ291bnRlcnMpXG4gICAgICBlbnZcbiAgaW5cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIkAuQFs8dj4lYUBdQC5cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAobiwgcikgLT5cbiAgICAgICAgIGxldCBfLCBpbnNfZnJlc2ggPVxuICAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIGlmIGluc19mcmVzaCA8PiBbXSB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgQFslYUBdQF1cIlxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTpmYWxzZSB+c2lncylcbiAgICAgICAgICAgICAgICAgaW5zX2ZyZXNoXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW4gRm9ybWF0LnBwX3ByaW50X3NwYWNlIGYgKClcbiAgICAgICAgICAgKVxuICAgICAgICAgaW5cbiAgICAgICAgIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAgICAgICAgKGZ1biBmIChuYiwgdGspIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgJWFAXVwiXG4gICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgKGZzdCAoQWxnX2V4cHIubXVsdCAoTG9jLmFubm90X3dpdGhfZHVtbXkgbikgbmIpKVxuICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIHRrKVxuICAgICAgICAgICBmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMpKVxuICAgIGluaXRcblxudHlwZSBzbmFwc2hvdCA9IHtcbiAgc25hcHNob3RfZXZlbnQ6IGludDtcbiAgc25hcHNob3RfdGltZTogZmxvYXQ7XG4gIHNuYXBzaG90X2FnZW50czogKGludCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdDtcbiAgc25hcHNob3RfdG9rZW5zOiAoc3RyaW5nICogTmJyLnQpIGFycmF5O1xufVxuXG5sZXQgcHJpbnRfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSUlZGVmOiBcXFwiVDBcXFwiIFxcXCIlc1xcXCJALEAsJWFALCVhQF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoSnNvblV0aWwuc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHMuc25hcHNob3RfdGltZSlcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGksIG1peCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj4lJWluaXQ6ICVpIC8qJWkgYWdlbnRzKi8gJWFAXVwiIGlcbiAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdCAoZnVuIHMgZSAtPiBzICsgQXJyYXkubGVuZ3RoIGUpIDAgbWl4KVxuICAgICAgICAgICBVc2VyX2dyYXBoLnByaW50X2NjIG1peCkpXG4gICAgcy5zbmFwc2hvdF9hZ2VudHNcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBfIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVzXCIgTmJyLnByaW50IGVsIG5hKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgcHJpbnRfZG90X3NuYXBzaG90ID91dWlkIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+Ly8gU25hcHNob3QgW0V2ZW50OiAlZF1ALFwiXG4gICAgICAoKlwiLCBUaW1lOiAlZlwiKikgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWFkaWdyYXBoIEd7QCwlYUAsJWF9QF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoUHAubGlzdGkgUHAuY3V0IChmdW4gaSBmIChuYiwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj5zdWJncmFwaCBjbHVzdGVyJWR7QCxcIiBpO1xuICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICBcImNvdW50ZXIlZCBbbGFiZWwgPSBcXFwiJWQgaW5zdGFuY2UocylcXFwiLCBzaGFwZT1ub25lXTtALCVhfUBdXCIgaSBuYlxuICAgICAgICAgICAoVXNlcl9ncmFwaC5wcmludF9kb3RfY2MgaSlcbiAgICAgICAgICAgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5jdXQgKGZ1biBpIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ0b2tlbl8lZCBbbGFiZWwgPSBcXFwiJXMgKCVhKVxcXCIgLCBzaGFwZT1ub25lXVwiIGkgbmFcbiAgICAgICAgICAgTmJyLnByaW50IGVsKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgd3JpdGVfc25hcHNob3Qgb2IgcyA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2V2ZW50XCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYlxuICAgICAgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfdGltZVwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgcy5zbmFwc2hvdF90aW1lXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF9hZ2VudHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgVXNlcl9ncmFwaC53cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50KSlcbiAgICAgIG9iIHMuc25hcHNob3RfYWdlbnRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90b2tlbnNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgTmJyLndyaXRlX3QpKVxuICAgICAgb2Igcy5zbmFwc2hvdF90b2tlbnNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9zbmFwc2hvdCBwIGxiID1cbiAgbGV0IHNuYXBzaG90X2V2ZW50LCBzbmFwc2hvdF90aW1lLCBzbmFwc2hvdF9hZ2VudHMsIHNuYXBzaG90X3Rva2VucyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChlLCB0aSwgYSwgdCkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzbmFwc2hvdF9ldmVudFwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgdGksIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X3RpbWVcIiB0aGVuXG4gICAgICAgICAgZSwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGIsIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X2FnZW50c1wiIHRoZW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudClcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHQgKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwic25hcHNob3RfdG9rZW5zXCIpIGluXG4gICAgICAgICAgKCBlLFxuICAgICAgICAgICAgdGksXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBOYnIucmVhZF90KVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgICgtMSwgbmFuLCBbXSwgW3x8XSkgcCBsYlxuICBpblxuICB7IHNuYXBzaG90X2V2ZW50OyBzbmFwc2hvdF90aW1lOyBzbmFwc2hvdF9hZ2VudHM7IHNuYXBzaG90X3Rva2VucyB9XG5cbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfc25hcHNob3RcblxubGV0IHNuYXBzaG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGRpbl9kYXRhID0ge1xuICBkaW5fa2luZDogUHJpbWl0aXZlcy5kaW5fa2luZDtcbiAgZGluX3N0YXJ0OiBmbG9hdDtcbiAgZGluX2hpdHM6IGludCBhcnJheTtcbiAgZGluX2ZsdXhzOiBmbG9hdCBhcnJheSBhcnJheTtcbn1cblxudHlwZSBkaW4gPSB7IGRpbl9ydWxlczogc3RyaW5nIGFycmF5OyBkaW5fZGF0YTogZGluX2RhdGE7IGRpbl9lbmQ6IGZsb2F0IH1cblxubGV0IHdyaXRlX2RpbiBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2tpbmRcIiBQcmltaXRpdmVzLndyaXRlX2Rpbl9raW5kIG9iXG4gICAgICBmLmRpbl9kYXRhLmRpbl9raW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fc3RhcnRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX3N0YXJ0XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZW5kXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iIGYuZGluX2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX3J1bGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5kaW5fcnVsZXNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9oaXRzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5faGl0c1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2ZsdXhzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSlcbiAgICAgIG9iIGYuZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfZGluIHAgbGIgPVxuICBsZXQgZGluX2tpbmQsIGRpbl9zdGFydCwgZGluX2hpdHMsIGRpbl9mbHV4cywgZGluX3J1bGVzLCBkaW5fZW5kID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGssIHMsIGgsIGYsIHIsIGUpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwiZGluX2tpbmRcIiB0aGVuXG4gICAgICAgICAgUHJpbWl0aXZlcy5yZWFkX2Rpbl9raW5kIHAgbGIsIHMsIGgsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9zdGFydFwiIHRoZW5cbiAgICAgICAgICBrLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2hpdHNcIiB0aGVuXG4gICAgICAgICAgaywgcywgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9mbHV4c1wiIHRoZW5cbiAgICAgICAgICAoIGssXG4gICAgICAgICAgICBzLFxuICAgICAgICAgICAgaCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpXG4gICAgICAgICAgICAgIHAgbGIsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgZSApXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5fZW5kXCIgdGhlblxuICAgICAgICAgIGssIHMsIGgsIGYsIHIsIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJkaW5fcnVsZXNcIikgaW5cbiAgICAgICAgICBrLCBzLCBoLCBmLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgZVxuICAgICAgICApKVxuICAgICAgKFByaW1pdGl2ZXMuQUJTT0xVVEUsIG5hbiwgW3x8XSwgW3x8XSwgW3x8XSwgbmFuKVxuICAgICAgcCBsYlxuICBpblxuICB7XG4gICAgZGluX3J1bGVzO1xuICAgIGRpbl9lbmQ7XG4gICAgZGluX2RhdGEgPSB7IGRpbl9raW5kOyBkaW5fc3RhcnQ7IGRpbl9oaXRzOyBkaW5fZmx1eHMgfTtcbiAgfVxuXG5sZXQgc3RyaW5nX29mX2RpbiA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9kaW5cblxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9kb3RfZGluID91dWlkIGRlc2MgZmx1eCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkBbPHY+JWFcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIixALFwiIHgpKVxuICAgICAgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgIFwiZGlncmFwaCBHeyBsYWJlbD1cXFwiRHluYW1pYyBpbmZsdWVuY2UgbmV0d29ya1xcXCIgOyBsYWJlbGxvYz1cXFwidFxcXCIgOyBcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJub2RlIFtzaGFwZT1ib3gsc3R5bGU9ZmlsbGVkLGZpbGxjb2xvcj1saWdodHNreWJsdWVdQCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLmFycmF5XG4gICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAoZnVuIHMgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBkIGYgdiAtPlxuICAgICAgICAgICAgaWYgdiA9IDAuIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgY29sb3IsIGFycm93aGVhZCA9XG4gICAgICAgICAgICAgICAgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgIFwicmVkM1wiLCBcInRlZVwiXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgXCJncmVlbjNcIiwgXCJub3JtYWxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgXCJAWzxoPlxcXCIlc1xcXCIgLT4gXFxcIiVzXFxcIiBcXFxuICAgICAgICAgICAgICAgICBbd2VpZ2h0PSVkLGxhYmVsPVxcXCIlLjNmXFxcIixjb2xvcj0lcyxhcnJvd2hlYWQ9JXNdO0BdQCxcIlxuICAgICAgICAgICAgICAgIGZsdXguZGluX3J1bGVzLihzKSBmbHV4LmRpbl9ydWxlcy4oZClcbiAgICAgICAgICAgICAgICAoYWJzIChpbnRfb2ZfZmxvYXQgdikpXG4gICAgICAgICAgICAgICAgdiBjb2xvciBhcnJvd2hlYWRcbiAgICAgICAgICAgICkpKVxuICAgICAgZGVzYyBmbHV4LmRpbl9kYXRhLmRpbl9mbHV4c1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBkZXNjIFwifUBdQC5cIlxuXG5sZXQgcHJpbnRfaHRtbF9kaW4gZGVzYyBmbHV4ID1cbiAgUHBfaHRtbC5ncmFwaF9wYWdlXG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkR5bmFtaWMgaW5mbHVlbmNlIG1hcFwiKVxuICAgIH5zdWJ0aXRsZTooZnVuIGYgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICBcImJldHdlZW4gdCA9IDxzcGFuIGlkPVxcXCJiZWdpbl90aW1lXFxcIj48L3NwYW4+cyBhbmQgdCA9IDxzcGFuIFxcXG4gICAgICAgICBpZD1cXFwiZW5kX3RpbWVcXFwiPjwvc3Bhbj5zICg8c3BhbiBpZD1cXFwibmJfZXZlbnRzXFxcIj48L3NwYW4+IGV2ZW50cylcIilcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52NC5taW4uanNcIjtcbiAgICAgIFwiaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLm1pbi5qc1wiO1xuICAgIF1cbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHN0eWxlPkAsLmNob3JkIHBhdGgge0AgZmlsbC1vcGFjaXR5OiAuNjc7QCBcIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJzdHJva2U6ICMwMDA7QCBzdHJva2Utd2lkdGg6IC41cHg7QCB9QF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBpZD1cXFwiZmx1eF9jb250YWluZXJcXFwiPjwvZGl2PkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxmb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsYWJlbCBmb3I9XFxcImNvcnJlY3Rpb25cXFwiPkNvcnJlY3Rpb248L2xhYmVsPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8c2VsZWN0IGlkPVxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgXFxcbiAgICAgICAgICAgaWQ9XFxcImNvcnJlY3Rpb25cXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPG9wdGlvbiB2YWx1ZT1cXFwibm9uZVxcXCI+Tm9uZTwvb3B0aW9uPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJoaXRzXFxcIj5SdWxlIG9jY3VyZW5jZXM8L29wdGlvbj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPG9wdGlvbiB2YWx1ZT1cXFwidGltZVxcXCI+VGltZTwvb3B0aW9uPkBdQCw8L3NlbGVjdD5ALDwvZGl2PkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIiB2YWx1ZT1cXFwiVG9nZ2xlIFxcXG4gICAgICAgICAgIHNlbGVjdGVkIHJ1bGVzXFxcIj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94LWlubGluZVxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPGlucHV0IGlkPVxcXCJjaGVja2JveF9zZWxmX2luZmx1ZW5jZVxcXCIgdHlwZT1cXFwiY2hlY2tib3hcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZXMgc2VsZiBpbmZsdWVuY2VAXUAsPC9sYWJlbD5AXUAsPC9mb3JtPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGZvcm0gaWQ9XFxcIm1lbnVcXFwiPjwvZm9ybT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5jb21tb25fanNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5mbHV4X2pzXG4gICAgICBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWzx2IDI+PHNjcmlwdD5ALFxcXCJ1c2Ugc3RyaWN0XFxcIkAsQFt2YXIgZmx1eCA9QCAlcztAXUAsXCJcbiAgICAgICAgICAoc3RyaW5nX29mX2RpbiBmbHV4KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgaWRzID0ge0BbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJiZWdpblRpbWVJZFxcXCIgOiBcXFwiYmVnaW5fdGltZVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJlbmRUaW1lSWRcXFwiIDogXFxcImVuZF90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInNlbGVjdENvcnJlY3Rpb25JZFxcXCIgOiBcXFwic2VsZWN0X2NvcnJlY3Rpb25cXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIm5iRXZlbnRzSWRcXFwiIDogXFxcIm5iX2V2ZW50c1xcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJydWxlc0NoZWNrYm94ZXNJZFxcXCIgOiBcXFwibWVudVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcXCJ0b2dnbGVSdWxlc0lkXFxcIiA6IFxcXCJ0b2dnbGVfc2VsZWN0ZWRfcnVsZXNcXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJcXFwiY2hlY2tib3hTZWxmSW5mbHVlbmNlSWRcXFwiIDogXFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIn07QF1AIFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeyBAW0AsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgZmx1eF9tYXAgPSBuZXcgZmx1eE1hcChpZHMpO0AgXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJmbHV4X21hcC5zZXRGbHV4KGZsdXgpOyB9OyBAXUAsXCIgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zY3JpcHQ+XCIpXG4gICAgZGVzY1xuXG50eXBlIHBsb3QgPSB7IHBsb3RfbGVnZW5kOiBzdHJpbmcgYXJyYXk7IHBsb3Rfc2VyaWVzOiBmbG9hdCBvcHRpb24gYXJyYXkgbGlzdCB9XG5cbmxldCBhZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBwbG90ID1cbiAgbGV0IG5ld192YWx1ZXMgPSBBcnJheS5tYXAgKGZ1biBuYnIgLT4gTmJyLnRvX2Zsb2F0IG5icikgbmV3X29ic2VydmFibGVzIGluXG4gIHtcbiAgICBwbG90X2xlZ2VuZCA9IHBsb3QucGxvdF9sZWdlbmQ7XG4gICAgcGxvdF9zZXJpZXMgPSBuZXdfdmFsdWVzIDo6IHBsb3QucGxvdF9zZXJpZXM7XG4gIH1cblxubGV0IGluaXRfcGxvdCBlbnYgPVxuICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG4gIGxldCBwbG90X2xlZ2VuZCA9XG4gICAgTW9kZWwubWFwX29ic2VydmFibGVzXG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKEthcHBhX3ByaW50ZXIuYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbylcbiAgICAgIGVudlxuICBpblxuICB7IHBsb3RfbGVnZW5kOyBwbG90X3NlcmllcyA9IFtdIH1cblxubGV0IHdyaXRlX3Bsb3Qgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImxlZ2VuZFwiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZylcbiAgICAgIG9iIGYucGxvdF9sZWdlbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNlcmllc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSkpXG4gICAgICBvYiBmLnBsb3Rfc2VyaWVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfcGxvdCBwIGxiID1cbiAgbGV0IHBsb3RfbGVnZW5kLCBwbG90X3NlcmllcyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChsLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNlcmllc1wiIHRoZW5cbiAgICAgICAgICAoIGwsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyKSlcbiAgICAgICAgICAgICAgcCBsYiApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJsZWdlbmRcIikgaW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICApKVxuICAgICAgKFt8fF0sIFtdKSBwIGxiXG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzIH1cblxubGV0IHN0cmluZ19vZl9wbG90ID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX3Bsb3RcblxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X3Bsb3Rfc2VwIGlzX3RzdiBmID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgKGlmIGlzX3RzdiB0aGVuXG4gICAgICAgXCJcXHRcIlxuICAgICBlbHNlXG4gICAgICAgXCIsXCIpXG5cbmxldCBwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBhXG5cbmxldCBwcmludF9wbG90X2xpbmUgfmlzX3RzdiBwcCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYUBdQC5cIlxuICAgIChQcC5hcnJheSAocHJpbnRfcGxvdF9zZXAgaXNfdHN2KSAoZnVuIF8gLT4gcHApKVxuICAgIGxcblxubGV0IGV4cG9ydF9wbG90IH5pc190c3YgcGxvdCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhJWFcIlxuICAgIChwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2KVxuICAgIHBsb3QucGxvdF9sZWdlbmRcbiAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgIChwcmludF9wbG90X2xpbmUgfmlzX3RzdiAoUHAub3B0aW9uIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWVcIikpKSlcbiAgICAoTGlzdC5yZXYgcGxvdC5wbG90X3NlcmllcylcblxubGV0IHByaW50X3dhcm5pbmcgP3BvcyBmIG1zZyA9XG4gIGxldCBwciBmICgpID0gRm9ybWF0LmZwcmludGYgZiBcIldhcm5pbmc6IEBbJXRAXVwiIG1zZyBpblxuICBtYXRjaCBwb3Mgd2l0aFxuICB8IFNvbWUgcG9zIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChMb2MucHJpbnRfYW5ub3RlZCBwcikgKCgpLCBwb3MpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiBwciAoKVxuXG50eXBlIGZpbGVfbGluZSA9IHsgZmlsZV9saW5lX25hbWU6IHN0cmluZyBvcHRpb247IGZpbGVfbGluZV90ZXh0OiBzdHJpbmcgfVxuXG50eXBlIHQgPVxuICB8IERJTiBvZiBzdHJpbmcgKiBkaW5cbiAgfCBEZWx0YUFjdGl2aXRpZXMgb2YgaW50ICogKGludCAqIChmbG9hdCAqIGZsb2F0KSkgbGlzdFxuICB8IFBsb3Qgb2YgTmJyLnQgYXJyYXkgICgqKiBNdXN0IGhhdmUgbGVuZ3RoID49IDEgKGF0IGxlYXN0IFtUXSBvciBbRV0pICopXG4gIHwgUHJpbnQgb2YgZmlsZV9saW5lXG4gIHwgVHJhY2VTdGVwIG9mIFRyYWNlLnN0ZXBcbiAgfCBTbmFwc2hvdCBvZiBzdHJpbmcgKiBzbmFwc2hvdFxuICB8IExvZyBvZiBzdHJpbmdcbiAgfCBTcGVjaWVzIG9mIHN0cmluZyAqIGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG4gIHwgV2FybmluZyBvZiBMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIGRpbl9raW5kID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICB7XG4gICAgRGF0YS5kaW5fa2luZDtcbiAgICBEYXRhLmRpbl9zdGFydCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgRGF0YS5kaW5faGl0cyA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgIERhdGEuZGluX2ZsdXhzID0gQXJyYXkubWFrZV9tYXRyaXggc2l6ZSBzaXplIDAuO1xuICB9XG5cbmxldCBpbmNyX2ZsdXhfZmx1eCBvZl9ydWxlIG9uX3J1bGUgdiBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpIDwtXG4gICAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpICsuIHZcblxubGV0IGluY3JfZmx1eF9oaXQgb2ZfcnVsZSBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKSA8LSBzdWNjIGZsdXguRGF0YS5kaW5faGl0cy4ob2ZfcnVsZSlcblxubGV0IHN0b3BfZmx1eCBlbnYgY291bnRlciBkaW5fZGF0YSA9XG4gIGxldCBzaXplID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiArIDEgaW5cbiAgbGV0IGRpbl9ydWxlcyA9XG4gICAgQXJyYXkuaW5pdCBzaXplIChmdW4geCAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KSB4KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGRpbl9kYXRhLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiAoKVxuICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPlxuICAgICAgICAgIEFycmF5Lml0ZXJpIChmdW4gaiB4IC0+XG4gICAgICAgICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzLihpKS4oaikgPC1cbiAgICAgICAgICAgICAgICAoaWYgZGluX2RhdGEuRGF0YS5kaW5faGl0cy4oaSkgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICB4IC8uIGZsb2F0X29mX2ludCBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSkpKVxuICAgICAgICBkaW5fZGF0YS5EYXRhLmRpbl9mbHV4c1xuICBpblxuICB7IERhdGEuZGluX3J1bGVzOyBEYXRhLmRpbl9kYXRhOyBEYXRhLmRpbl9lbmQgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogcGF0IC0+IHNldCBvZiByb290cyAqKVxuICBvZl9wYXR0ZXJuczogSW50Q29sbGVjdGlvbi50IFBhdHRlcm4uT2JzTWFwLnQ7XG4gICgqIHBhdCAtPiBjYyAtPiBzZXQgb2Ygcm9vdHMgKilcbiAgb2ZfdW5hcnlfcGF0dGVybnM6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudCBQYXR0ZXJuLk9ic01hcC50O1xufVxuXG50eXBlIG1vZF9jY3NfY2FjaGUgPSAoaW50LCB1bml0KSBIYXNodGJsLnRcblxubGV0IGVtcHR5IGVudiA9XG4gIHtcbiAgICBvZl9wYXR0ZXJucyA9XG4gICAgICBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+XG4gICAgICAgICAgSW50Q29sbGVjdGlvbi5jcmVhdGUgNjQpO1xuICAgIG9mX3VuYXJ5X3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gTW9kcy5JbnRNYXAuZW1wdHkpO1xuICB9XG5cbmxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlIHBhdHRlcm4gbWF0Y2hpbmdzID1cbiAgaWYgSW50Q29sbGVjdGlvbi5pc19lbXB0eSAoUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdHRlcm4pIHRoZW5cbiAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGFkZF9pbnRzZXRfaW5faW50bWFwIGlkIHNldCBtYXAgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzZXQgdGhlblxuICAgIE1vZHMuSW50TWFwLnJlbW92ZSBpZCBtYXBcbiAgZWxzZVxuICAgIE1vZHMuSW50TWFwLmFkZCBpZCBzZXQgbWFwXG5cbigqIEJyZWFrIGFwYXJ0IGNvbm5lY3RlZCBjb21wb25lbnQ6XG4gICBVcGRhdGUgXCJyb290cyBvZiB1bmFyeSBwYXR0ZXJuc1wiXG4gICBFYXN5LCBJIHNob3VsZCBub3QgaGF2ZSB0byByZXdyaXRlIHRoaXMuXG4gICBTaG91bGQgY2FjaGVzIGJlIGhhbmRsZWQgYXQgdGhpcyBsZXZlbCA/IEkgZG8gbnQgdGhpbmsgc29cbiAgIGFuZCBJIHdpbGwgcHJvYmFibHkgY2xlYW4gdGhpcy5cbiopXG5sZXQgYnJlYWtfYXBhcnRfY2Mgc3RhdGUgZWRnZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBtb2RfY29ubiAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm4gbmV3X2NjICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBvcmlnaW5fY2MgKClcbiAgICBpblxuICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAoZnVuIGNjX2lkIGNjX21hcCAtPlxuICAgICAgICBsZXQgb3NldCA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IG9yaWdpbl9jYyBjY19tYXBcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IChNb2RzLkludFNldC5pc19lbXB0eSBvc2V0KSB0aGVuIChcbiAgICAgICAgICBsZXQgbnNldCwgb3NldCcgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQucGFydGl0aW9uXG4gICAgICAgICAgICAgIChmdW4geCAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGVkZ2VzID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgICAgIG9zZXRcbiAgICAgICAgICBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIG5ld19jYyBuc2V0XG4gICAgICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgb3JpZ2luX2NjIG9zZXQnIGNjX21hcCkpXG4gICAgICAgICkpXG4gICAgICBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBTYW1lOiBub3QgdmVyeSBzdWJ0bGUuIFlvdSBqdXN0IHByb3BhZ2F0ZS4gKilcbmxldCBtZXJnZV9jYyBzdGF0ZSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uZWN0aXZpdHkgLT5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MyICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubmVjdGl2aXR5IGNjMSAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NfbWFwIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgIHwgU29tZSBzZXQyLCBjY19tYXAnIC0+XG4gICAgICAgICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MxIGNjX21hcCBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIGNjMSAoTW9kcy5JbnRTZXQudW5pb24gc2V0MSBzZXQyKSBjY19tYXAnKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgdG8gZGVhbCB3aXRoIHVuYXJ5X2luc3RhbmNlcy5cbiAgIERvZXMgbm90aGluZyBmYW5jeS5cbiAgIEFsc28gdGFrZXMgdGhlIGNhY2hlIGFzIGFuIGFyZ3VtZW50ICopXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBsZXQgdmEgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBpblxuICBsZXQgKCkgPVxuICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgIEludENvbGxlY3Rpb24uYWRkXG4gICAgIGVsc2VcbiAgICAgICBJbnRDb2xsZWN0aW9uLnJlbW92ZSlcbiAgICAgIHJvb3QgdmFcbiAgaW5cbiAgaWYgUGF0dGVybi5TZXQubWVtIHBhdHRlcm4gdW5hcnlfY2NzIHRoZW4gKFxuICAgIGxldCBjY19tYXAgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgcGF0dGVybiBpblxuICAgIGxldCBjY19pZCA9XG4gICAgICAoKiBUaGUgb25seSBjYXNlIHdoZXJlIGdldF9jb25uZWN0ZWRfY29tcG9uZW50IGlzIE5vbmUgaXMgd2hlblxuICAgICAgICAgW25vdCBpc19hZGRdIGFuZCBbcm9vdF0gaGFzIGp1c3QgYmVlbiBlcmFzZWQhIEJ1dCwganVzdFxuICAgICAgICAgYmVmb3JlIGJlaW5nIGVyYXNlZCwgd2Uga25vdyB0aGF0IGFuIGFnZW50IGlzIGluIGl0cyBvd25cbiAgICAgICAgIGNvbm5lY3RlZCBjb21wb25lbnQuLi4gKilcbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSByb290IChFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCByb290IGVkZ2VzKVxuICAgIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2NfaWQgKCkgaW5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjX2lkIGNjX21hcCBpblxuICAgIGxldCBzZXQnID1cbiAgICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgZWxzZVxuICAgICAgICAgTW9kcy5JbnRTZXQucmVtb3ZlKVxuICAgICAgICByb290IHNldFxuICAgIGluXG4gICAgbGV0IGNjX21hcCcgPSBhZGRfaW50c2V0X2luX2ludG1hcCBjY19pZCBzZXQnIGNjX21hcCBpblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGNjX21hcCdcbiAgKVxuXG5sZXQgbnVtYmVyIHIgcGF0ID0gSW50Q29sbGVjdGlvbi5zaXplIChQYXR0ZXJuLk9ic01hcC5nZXQgci5vZl9wYXR0ZXJucyBwYXQpXG5cbmxldCBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChQYXR0ZXJuLk9ic01hcC5wcmludCBQcC5zcGFjZSAoZnVuIHBhdHRlcm4gZiByb290cyAtPlxuICAgICAgICAgaWYgSW50Q29sbGVjdGlvbi5zaXplIHJvb3RzID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyMgQFslYUBdID09PkAgQFslYUBdQF1cIlxuICAgICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgICBwYXR0ZXJuIEludENvbGxlY3Rpb24ucHJpbnQgcm9vdHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3Y+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RfbWFwcyAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgcGF0dGVyblxuICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlIChmdW4gZiAoX2NjX2lkLCByb290cykgLT5cbiAgICAgICAgICAgICAgICBNb2RzLkludFNldC5wcmludCBmIHJvb3RzKSlcbiAgICAgICAgICAgcm9vdF9tYXBzKSlcbiAgICByb290c19vZl9wYXR0ZXJuc1xuXG5sZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gIGxldCBub0NvdW50ZXJzID0gdHJ1ZSBpblxuICBsZXQgZG9tYWluID0gTm9uZSBpblxuICBsZXQgKCkgPSBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl9wYXR0ZXJucyBpblxuICBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBVc2VmdWwgc2hvcnRjdXRzICopXG5cbmxldCBvZl9wYXR0ZXJuIHBhdF9pZCBzdGF0ZSA9XG4gIHRyeSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0X2lkXG4gIHdpdGggTm90X2ZvdW5kIC0+IEludENvbGxlY3Rpb24uY3JlYXRlIDFcblxubGV0IG9mX3VuYXJ5X3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRNYXAuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogRm9yIGNvdW50ZXJmYWN0dWFsIHNpbXVsYXRpb24sIHRoZXJlIHdvdWxkIGJlIHR3byBvZiB0aGVzZS4gKilcbiAgcm9vdHM6IFJvb3RzLnQ7XG59XG5cbnR5cGUgbWVzc2FnZSA9IHVuaXRcblxubGV0IHJlY2VpdmVfbWVzc2FnZSBfIHN0ID0gc3RcbmxldCBlbXB0eSBlbnYgPSB7IHJvb3RzID0gUm9vdHMuZW1wdHkgZW52IH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBSb290cy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLnJvb3RzIHBhdHRlcm4gbWF0Y2hpbmdzXG5cbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3MgPVxuICBSb290cy5icmVha19hcGFydF9jYyBzdGF0ZS5yb290cyBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3NcblxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLm1lcmdlX2NjIHN0YXRlLnJvb3RzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBSb290cy51cGRhdGVfcm9vdHMgc3RhdGUucm9vdHMgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm5cbiAgICByb290XG5cbigqKiB7MiBDaGVja2luZyBpbnN0YW5jZXN9ICopXG5cbmxldCBpc192YWxpZCBzdGF0ZSBwYXQgcm9vdCA9XG4gIEludENvbGxlY3Rpb24ubWVtIHJvb3QgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0YXRlLnJvb3RzKVxuXG4oKiogezIgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyB9ICopXG5cbmxldCBudW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkOl8gc3QgcGF0cyA9XG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIHBhdHRlcm4gLT4gYWNjICogUm9vdHMubnVtYmVyIHN0LnJvb3RzIHBhdHRlcm4pXG4gICAgMSBwYXRzXG5cbmxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID9ydWxlX2lkOl8gc3QgKHBhdDEsIHBhdDIpID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgZnVuIGNjIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMSBpblxuICAgIGxldCBzZXQyID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIgaW5cbiAgICBNb2RzLkludFNldC5zaXplIHNldDEgKiBNb2RzLkludFNldC5zaXplIHNldDJcblxuKCogezYgUGljayBpbnN0YW5jZXMgfSAqKVxuXG5sZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgcm9vdDEgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lICgtMSlcbiAgICAgICAgKE1vZHMuSW50U2V0LnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxKSlcbiAgICBpblxuICAgIGxldCByb290MiA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIpKVxuICAgIGluXG4gICAgcm9vdDEsIHJvb3QyXG5cbigqIFdlIHByb3ZpZGUgYSBjdXN0b20gbW9uYWRpYyBmb2xkIGZ1bmN0aW9uIHRvIGJlXG4gICBsYXp5IGluIGRyYXdpbmcgcmFuZG9tIG51bWJlcnMgKilcbmxldCBmb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSBwYXRzIH5pbml0IGYgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBBcnJheS5sZW5ndGggcGF0cyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGFjYyAtPlxuICAgICAgICBsZXQgcGF0ID0gcGF0cy4oaSkgaW5cbiAgICAgICAgbGV0IHJvb3Rfb3B0ID1cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLnJhbmRvbSByYW5kb21fc3RhdGUgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0LnJvb3RzKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcm9vdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgcm9vdCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBmIGkgcGF0IHJvb3QgYWNjIGluXG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgIClcbiAgaW5cbiAgYXV4IDAgKFNvbWUgaW5pdClcblxuKCoqIHs2IEVudW1lcmF0ZSBpbnN0YW5jZXN9ICopXG5cbmxldCBwcm9jZXNzX2V4Y3AgPVxuICBsZXQgbm9fbm9fbm8gXyA9IGZhbHNlIGluXG4gIGZ1biBwYXRzIC0+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vX25vX25vLCAtMVxuICAgIHwgU29tZSAocGF0LCByb290KSAtPlxuICAgICAgbGV0IHNlbnRfdG9fZml4ZWRfcm9vdCBqID0gUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHBhdCBwYXRzLihqKSBpblxuICAgICAgc2VudF90b19maXhlZF9yb290LCByb290XG5cbigqIFRoaXMgaXMgdGhlIGxlZ2l0aW1hdGUgYW5kIGVmZmljaWVudCB2ZXJzaW9uLiAqKVxubGV0IGZvbGRfaW5zdGFuY2VzID9ydWxlX2lkOl8gP2V4Y3Agc3QgcGF0cyB+aW5pdCBmID1cbiAgbGV0IHNlbnRfdG9fZXhjcF9yb290LCBleGNwX3Jvb3QgPSBwcm9jZXNzX2V4Y3AgcGF0cyBleGNwIGluXG5cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggcGF0cyBpblxuICBsZXQgdGFiID0gQXJyYXkubWFrZSBuICgtMSkgaW5cbiAgbGV0IHJlYyBhdXggaSBhY2MgPVxuICAgIGlmIGkgPj0gbiB0aGVuXG4gICAgICBmIHRhYiBhY2NcbiAgICBlbHNlIGlmIHNlbnRfdG9fZXhjcF9yb290IGkgdGhlbiAoXG4gICAgICB0YWIuKGkpIDwtIGV4Y3Bfcm9vdDtcbiAgICAgIGF1eCAoaSArIDEpIGFjY1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgaXRoX3Jvb3RzID0gUm9vdHMub2ZfcGF0dGVybiBwYXRzLihpKSBzdC5yb290cyBpblxuICAgICAgSW50Q29sbGVjdGlvbi5mb2xkXG4gICAgICAgIChmdW4gciBhY2MgLT5cbiAgICAgICAgICB0YWIuKGkpIDwtIHI7XG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgICAgICBpdGhfcm9vdHMgYWNjXG4gICAgKVxuICBpblxuICBhdXggMCBpbml0XG5cbmxldCBtYXBfZm9sZDIgbWFwMSBtYXAyIH5pbml0IGYgPVxuICBNb2RzLkludE1hcC5tb25hZGljX2ZvbGQyX3NwYXJzZSAoKSAoKVxuICAgIChmdW4gKCkgKCkga2V5IHgxIHgyIGFjYyAtPiAoKSwgZiBrZXkgeDEgeDIgYWNjKVxuICAgIG1hcDEgbWFwMiBpbml0XG4gIHw+IHNuZFxuXG5sZXQgZm9sZF91bmFyeV9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgfmluaXQgZiA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgKGZ1biBfIHNldDEgc2V0MiBhY2MgLT5cbiAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgKGZ1biByb290MSBhY2MgLT5cbiAgICAgICAgICBNb2RzLkludFNldC5mb2xkIChmdW4gcm9vdDIgYWNjIC0+IGYgKHJvb3QxLCByb290MikgYWNjKSBzZXQyIGFjYylcbiAgICAgICAgc2V0MSBhY2MpXG5cbigqKiB7NiBEZWJ1ZyBmdW5jdGlvbnN9ICopXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID0gUm9vdHMuZGVidWdfcHJpbnQgZiBzdGF0ZS5yb290c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID8odGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5DUFVUSU1FIC0+IE5ici5GIChTeXMudGltZSAoKSlcbiAgfCBPcGVyYXRvci5USU1FX1ZBUiAtPiBOYnIuRiB0aW1lXG4gIHwgT3BlcmF0b3IuRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiAtPiBOYnIuSSAoQ291bnRlci5uYl9udWxsX2V2ZW50IGNvdW50ZXIpXG4gIHwgT3BlcmF0b3IuRU1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG4gIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfdGltZSBjb3VudGVyIHdpdGhcbiAgICB8IFNvbWUgdCAtPiBOYnIuRiB0XG4gICAgfCBOb25lIC0+IE5ici5GIGluZmluaXR5KVxuXG50eXBlIChfLCBfKSBzdGFjayA9XG4gIHwgUkVUVVJOIDogKCdhLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQ09NUCA6XG4gICAgICBPcGVyYXRvci5jb21wYXJlX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19JRiA6XG4gICAgICBQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19CT09MIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wXG4gICAgICAqIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbFxuICAgICAgKiAoYm9vbCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9BTEcgOlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcCAqIE5ici50ICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBOYnIudCAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9VTiA6IE9wZXJhdG9yLnVuX2FsZ19vcCAqIChOYnIudCwgJ2EpIHN0YWNrIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9CT09MIDogT3BlcmF0b3IudW5fYm9vbF9vcCAqIChib29sLCAnYSkgc3RhY2sgLT4gKGJvb2wsICdhKSBzdGFja1xuXG5sZXQgcmVjIGV4ZWNfYWxnIDpcbiAgICB0eXBlIGEuXG4gICAgQ291bnRlci50IC0+XG4gICAgP3RpbWU6ZmxvYXQgLT5cbiAgICBnZXRfYWxnOihpbnQgLT4gUHJpbWl0aXZlcy5hbGdfZXhwcikgLT5cbiAgICBnZXRfbWl4OihQYXR0ZXJuLmlkIGFycmF5IGxpc3QgLT4gTmJyLnQpIC0+XG4gICAgZ2V0X3RvazooaW50IC0+IE5ici50KSAtPlxuICAgIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZSAtPlxuICAgIChOYnIudCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgc2sgLT5cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19BTEcgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYSAoVE9fQ09NUFVURV9VTiAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgICh2YWx1ZV9zdGF0ZV9hbGdfb3AgY291bnRlciA/dGltZSBvcClcbiAgICAgIHNrXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X2FsZyBpKSBza1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGNjcyAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X21peCBjY3MpIHNrXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X3RvayBpKSBza1xuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gc2tcbiAgfCBBbGdfZXhwci5JRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBjb25kXG4gICAgICAoVE9fRVhFQ19JRiAoeWVzLCBubywgc2spKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ2Fubm90IGV2YWx1dGF0ZSBkZXJpdmF0aXZlcyBpbiBleHByZXNzaW9uXCIsIExvYy5kdW1teSkpXG5cbmFuZCBleGVjX2Jvb2wgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIC0+XG4gICAgKGJvb2wsIGEpIHN0YWNrIC0+XG4gICAgYSA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBzayAtPlxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIC0+IHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgQWxnX2V4cHIuRkFMU0UgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZmFsc2Ugc2tcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19DT01QVVRFX0JPT0wgKG9wLCBzaykpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19CT09MIChvcCwgYiwgc2spKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0NPTVAgKG9wLCBiLCBzaykpXG5cbmFuZCB3aXRoX3ZhbHVlIDpcbiAgICB0eXBlIGEgYi5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgYSAtPlxuICAgIChhLCBiKSBzdGFjayAtPlxuICAgIGIgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gLT4gZnVuY3Rpb25cbiAgfCBSRVRVUk4gLT4gblxuICB8IFRPX0VYRUNfQUxHIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQUxHIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQUxHIChvcCwgbjEsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKE5ici5vZl9iaW5fYWxnX29wIG9wIG4xIG4pXG4gICAgICBza1xuICB8IFRPX0NPTVBVVEVfVU4gKG9wLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKE5ici5vZl91bl9hbGdfb3Agb3AgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19DT01QIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQ09NUCAob3AsIG4sIHNrKSlcbiAgfCBUT19DT01QVVRFX0NPTVAgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2NvbXBhcmVfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19JRiAoeWVzLCBubywgc2spIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKGlmIG4gdGhlblxuICAgICAgICAgeWVzXG4gICAgICAgZWxzZVxuICAgICAgICAgbm8pXG4gICAgICBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuT1IsIF8sIHNrKSB3aGVuIG4gLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgdHJ1ZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuQU5ELCBfLCBzaykgd2hlbiBub3QgbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoKE9wZXJhdG9yLk9SIHwgT3BlcmF0b3IuQU5EKSwgZXhwciwgc2spIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBza1xuICB8IFRPX0NPTVBVVEVfQk9PTCAoT3BlcmF0b3IuTk9ULCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKG5vdCBuKSBza1xuXG5sZXQgdmFsdWVfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgPVxuICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIFJFVFVSTlxuXG5sZXQgdmFsdWVfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnID1cbiAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgUkVUVVJOXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHByZWNvbXB1dGVkID0ge1xuICB1bmFyeV9wYXR0ZXJuczogUGF0dGVybi5TZXQudDtcbiAgYWx3YXlzX291dGRhdGVkOiBPcGVyYXRvci5EZXBTZXQudDtcbn1cblxubW9kdWxlIE1ha2UgKEluc3RhbmNlcyA6IEluc3RhbmNlc19zaWcuUykgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudF9wcmVkaWNhdGUgPVxuICAgIGludCBvcHRpb24gLT5cbiAgICBNYXRjaGluZy50IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCAtPlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCAtPlxuICAgIGJvb2xcblxuICB0eXBlIGltcGVyYXRpdmVfZmllbGRzID0ge1xuICAgIHByZWNvbXB1dGVkOiBwcmVjb21wdXRlZDtcbiAgICBpbnN0YW5jZXM6IEluc3RhbmNlcy50O1xuICAgIHZhcmlhYmxlc19jYWNoZTogTmJyLnQgYXJyYXk7XG4gICAgdmFyaWFibGVzX292ZXJ3cml0ZTogUHJpbWl0aXZlcy5hbGdfZXhwciBvcHRpb24gYXJyYXk7XG4gICAgdG9rZW5zOiBOYnIudCBhcnJheTtcbiAgICBhY3Rpdml0aWVzOiBSYW5kb21fdHJlZS50cmVlO1xuICAgICAgICAoKiBwYWlyIG51bWJlcnMgYXJlIHJlZ3VsYXIgcnVsZSwgb2RkIHVuYXJ5IGluc3RhbmNlcyAqKVxuICAgIHJhbmRvbV9zdGF0ZTogUmFuZG9tLlN0YXRlLnQ7XG4gICAgc3RvcnlfbWFjaGluZXJ5OlxuICAgICAgKHN0cmluZyAoKm9icyBuYW1lKilcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50XG4gICAgICAoKmN1cnJlbnRseSB0cmFja2VkIGNjcyAqKVxuICAgICAgb3B0aW9uO1xuICAgIHNwZWNpZXM6XG4gICAgICAoc3RyaW5nICgqZmlsZW5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5ICgqd2l0aCBvbmx5IG9uZSBwYXR0ZXJuKilcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0KVxuICAgICAgbGlzdFxuICAgICAgUGF0dGVybi5PYnNNYXAudDtcbiAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eTogKGludCwgdW5pdCkgSGFzaHRibC50O1xuICAgICAgICAoKiBzZXQgb2YgY2NzIHRoYXQgaGF2ZSBjaGFuZ2VkICopXG4gIH1cblxuICB0eXBlIGluc3RhbmNlID1cbiAgICBib29sXG4gICAgKiBpbnRcbiAgICAqIChLYXBwYV90ZXJtcy5NYXRjaGluZy50ICogaW50IGxpc3QgKiBLYXBwYV9taXh0dXJlcy5FZGdlcy5wYXRoIG9wdGlvbilcbiAgICAgIG9wdGlvblxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIG91dGRhdGVkOiBib29sO1xuICAgICgqIFdpdGhvdXQgcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICAgIG1hdGNoaW5nc19vZl9ydWxlOiAoTWF0Y2hpbmcudCAqIGludCBsaXN0KSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgdW5hcnlfY2FuZGlkYXRlczpcbiAgICAgICgqIHJ1bGVfaWQgLT4gbGlzdCBvZiBtYXRjaGluZ3MgKilcbiAgICAgIChNYXRjaGluZy50ICogaW50IGxpc3QgKiBFZGdlcy5wYXRoIG9wdGlvbikgbGlzdCBNb2RzLkludE1hcC50O1xuICAgICgqIHJ1bGUgLT4gY2MgLT4gbnVtYmVyX2luc3RhbmNlcyAoYWN0aXZpdHkgcGVyIGNjKSAqKVxuICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYzogVmFsTWFwLnQgTW9kcy5JbnRNYXAudDtcbiAgICBlZGdlczogRWRnZXMudDtcbiAgICBpbXA6IGltcGVyYXRpdmVfZmllbGRzO1xuICAgIG91dGRhdGVkX2VsZW1lbnRzOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgICBldmVudHNfdG9fYmxvY2s6IGV2ZW50X3ByZWRpY2F0ZSBvcHRpb247XG4gIH1cblxuICBsZXQgZ2V0X2VkZ2VzIHN0ID0gc3QuZWRnZXNcblxuICBsZXQgc3VtX2luc3RhbmNlc19udW1iZXJzID9ydWxlX2lkIGluc3RzIGwgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjIHggLT4gYWMgKyBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyA/cnVsZV9pZCBpbnN0cyB4KVxuICAgICAgMCBsXG5cbiAgdHlwZSByZXN1bHQgPSBDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBTdWNjZXNzIG9mIHRcblxuICBsZXQgcmF3X2dldF9hbGcgZW52IG92ZXJ3ciBpID1cbiAgICBtYXRjaCBvdmVyd3IuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTW9kZWwuZ2V0X2FsZyBlbnYgaVxuICAgIHwgU29tZSBleHByIC0+IGV4cHJcblxuICBsZXQgdmFsdWVfYm9vbCBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIEV4cHJfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBleHByXG5cbiAgbGV0IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlclxuICAgICAgfmdldF9hbGc6KGZ1biBpIC0+IEFsZ19leHByLkNPTlNUIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpKVxuICAgICAgfmdldF9taXg6KGZ1biBwYXR0ZXJucyAtPlxuICAgICAgICBOYnIuSSAoc3VtX2luc3RhbmNlc19udW1iZXJzIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVybnMpKVxuICAgICAgfmdldF90b2s6KGZ1biBpIC0+IHN0YXRlLmltcC50b2tlbnMuKGkpKVxuICAgICAgYWxnXG5cbiAgbGV0IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBpID1cbiAgICBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSA8LVxuICAgICAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKHJhd19nZXRfYWxnIGVudiBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZSBpKVxuXG4gIGxldCBhY3Rpdml0eSBzdGF0ZSA9IFJhbmRvbV90cmVlLnRvdGFsIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBnZXRfYWN0aXZpdHkgcnVsZSBzdGF0ZSA9IFJhbmRvbV90cmVlLmZpbmQgcnVsZSBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgc2V0X2FjdGl2aXR5IHJ1bGUgdiBzdGF0ZSA9IFJhbmRvbV90cmVlLmFkZCBydWxlIHYgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IHBpY2tfcnVsZSBydCBzdGF0ZSA9IGZzdCAoUmFuZG9tX3RyZWUucmFuZG9tIHJ0IHN0YXRlLmltcC5hY3Rpdml0aWVzKVxuXG4gIGxldCBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlID1cbiAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAoZnVuIGkgKCkgcnVsZSAtPlxuICAgICAgICBpZiBBcnJheS5sZW5ndGggcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gMCB0aGVuIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IEBAIHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICggU29tZSAoc25kIHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSxcbiAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUHJvYmxlbWF0aWMgcnVsZSByYXRlIHJlcGxhY2VkIGJ5IDBcIjtcbiAgICAgICAgICAgICAgICAgICAgIEthcHBhX3ByaW50ZXIuZWxlbWVudGFyeV9ydWxlIH5lbnYgfm5vQ291bnRlcnMgZiBydWxlICkpXG4gICAgICAgICAgfCBTb21lIHJhdGUgLT4gc2V0X2FjdGl2aXR5ICgyICogaSkgcmF0ZSBzdGF0ZVxuICAgICAgICApKVxuICAgICAgKCkgZW52XG5cbiAgbGV0IGVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlciA9XG4gICAgbGV0IGFjdGl2aXR5X3RyZWUgPSBSYW5kb21fdHJlZS5jcmVhdGUgKDIgKiBNb2RlbC5uYl9ydWxlcyBlbnYpIGluXG4gICAgbGV0IHVuYXJ5X3BhdHRlcm5zID0gTW9kZWwudW5hcnlfcGF0dGVybnMgZW52IGluXG4gICAgbGV0IGFsd2F5c19vdXRkYXRlZCA9XG4gICAgICBsZXQgZGVwc19pbl90LCBkZXBzX2luX2UsIF8sIF8gPSBNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudiBpblxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlcHNfaW5fdCBkZXBzX2luX2VcbiAgICBpblxuICAgIGxldCB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID0gbm90IChQYXR0ZXJuLlNldC5pc19lbXB0eSB1bmFyeV9wYXR0ZXJucykgaW5cbiAgICBsZXQgdmFyaWFibGVzX292ZXJ3cml0ZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOb25lIGluXG4gICAgbGV0IHZhcmlhYmxlc19jYWNoZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOYnIuemVybyBpblxuICAgIGxldCBjYW5kID1cbiAgICAgIHtcbiAgICAgICAgaW1wID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzID0gYWN0aXZpdHlfdHJlZTtcbiAgICAgICAgICAgIHByZWNvbXB1dGVkID0geyB1bmFyeV9wYXR0ZXJuczsgYWx3YXlzX291dGRhdGVkIH07XG4gICAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMuZW1wdHkgZW52O1xuICAgICAgICAgICAgdmFyaWFibGVzX292ZXJ3cml0ZTtcbiAgICAgICAgICAgIHZhcmlhYmxlc19jYWNoZTtcbiAgICAgICAgICAgIHRva2VucyA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3Rva2VucyBlbnYpIE5ici56ZXJvO1xuICAgICAgICAgICAgcmFuZG9tX3N0YXRlO1xuICAgICAgICAgICAgc3RvcnlfbWFjaGluZXJ5ID1cbiAgICAgICAgICAgICAgKGlmIHdpdGhfdHJhY2UgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIChQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKSlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBzcGVjaWVzID0gUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBbXSk7XG4gICAgICAgICAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IEhhc2h0YmwuY3JlYXRlIDMyO1xuICAgICAgICAgIH07XG4gICAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIGVkZ2VzID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gYWx3YXlzX291dGRhdGVkO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBOb25lO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gVG9vbHMuaXRlcmkgKHJlY29tcHV0ZSBlbnYgY291bnRlciBjYW5kKSAoTW9kZWwubmJfYWxncyBlbnYpIGluXG4gICAgbGV0ICgpID0gaW5pdGlhbF9hY3Rpdml0eSB+b3V0cHV0cyBlbnYgY291bnRlciBjYW5kIGluXG4gICAgY2FuZFxuXG4gIGxldCBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nID1cbiAgICBsZXQgYWJzdHJhY3RfYWN0aW9ucyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgIChJbnN0YW50aWF0aW9uLnRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmopXG4gICAgICBhYnN0cmFjdF9hY3Rpb25zXG5cbiAgbGV0IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF90ZXN0cyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cyB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgbGV0IGluaiA9IG1hdGNoaW5nLCBNb2RzLkludE1hcC5lbXB0eSBpblxuICAgIExpc3QubWFwIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmopIGFic3RyYWN0X3Rlc3RzXG5cbiAgbGV0IGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBtYXRjaGluZyA9XG4gICAgbWF0Y2ggc3RhdGUuZXZlbnRzX3RvX2Jsb2NrIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgdG9fYmxvY2sgLT5cbiAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgY29uY3JldGVfYWN0aW9uc19mb3JfaW5jb21wbGV0ZV9pbmogfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZ1xuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0cyA9IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgaW5cbiAgICAgIHRvX2Jsb2NrIHJ1bGVfaWQgbWF0Y2hpbmcgdGVzdHMgYWN0aW9uc1xuXG4gIGxldCBzZXRfZXZlbnRzX3RvX2Jsb2NrIHByZWRpY2F0ZSBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gcHJlZGljYXRlO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IGluc3RhbmNlX3RvX21hdGNoaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZSBwYXR0ZXJucyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hdGNoaW5nIHJvb3QgLT5cbiAgICAgICAgbWF0Y2ggbWF0Y2hpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgbWF0Y2hpbmcgaSBwYXR0ZXJucy4oaSlcbiAgICAgICAgICAgIHJvb3QpXG4gICAgICAoU29tZSBNYXRjaGluZy5lbXB0eSkgaW5zdGFuY2VcblxuICBsZXQgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP2V4Y3AgP3VuYXJ5X3JhdGUgP3J1bGVfaWQgc3RhdGVfaW5zdHMgZG9tYWluXG4gICAgICBlZGdlcyBwYXR0ZXJuYSA9XG4gICAgbGV0IG91dCA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF9pbnN0YW5jZXMgP2V4Y3AgP3J1bGVfaWQgc3RhdGVfaW5zdHMgcGF0dGVybmEgfmluaXQ6W11cbiAgICAgICAgKGZ1biBpbnN0YW5jZSBhY2MgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5hXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICAgIGxldCByZXZfcm9vdHMgPSBBcnJheS5mb2xkX2xlZnQgKGZ1biB0IGggLT4gaCA6OiB0KSBbXSBpbnN0YW5jZSBpblxuICAgICAgICAgICAgKG1hdGNoaW5nLCByZXZfcm9vdHMpIDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHVuYXJ5X3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRcbiAgICB8IFNvbWUgKF8sIE5vbmUpIC0+XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IF8sIFsgcjE7IHIyIF0gLT4gbm90IChFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcjEgcjIgZWRnZXMpXG4gICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgICBvdXRcbiAgICB8IFNvbWUgKF8sIChTb21lIF8gYXMgbWF4X2Rpc3RhbmNlKSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gKGluaiwgXykgLT5cbiAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXR0ZXJuYSBpbmogaW5cbiAgICAgICAgICBOb25lID0gRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSkpXG4gICAgICAgIG91dFxuXG4gIGxldCBwb3BfZXhhY3RfbWF0Y2hpbmdzIG1hdGNoaW5nc19vZl9ydWxlIHJ1bGUgPVxuICAgIHNuZCAoTW9kcy5JbnRNYXAucG9wIHJ1bGUgbWF0Y2hpbmdzX29mX3J1bGUpXG5cbiAgbGV0IHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXMgP3J1bGVfaWRcbiAgICAgIHJ1bGUgPVxuICAgIGxldCBmcm9tX3BhdHRlcm5zICgpID1cbiAgICAgIGxldCBwYXRzID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gICAgICBJbnN0YW5jZXMuZm9sZF9waWNrZWRfaW5zdGFuY2UgP3J1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyByYW5kb21fc3RhdGVcbiAgICAgICAgcGF0cyB+aW5pdDooTWF0Y2hpbmcuZW1wdHksIFtdLCBOb25lKVxuICAgICAgICAoZnVuIGlkIHBhdHRlcm4gcm9vdCAoaW5qLCByZXZfcm9vdHMsIF8pIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbmogaWQgcGF0dGVybiByb290XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgcm9vdCA6OiByZXZfcm9vdHMsIE5vbmUpKVxuICAgIGluXG4gICAgbWF0Y2ggcnVsZV9pZCB3aXRoXG4gICAgfCBOb25lIC0+IGZyb21fcGF0dGVybnMgKClcbiAgICB8IFNvbWUgaWQgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSB3aXRoXG4gICAgICB8IFNvbWUgW10gLT4gTm9uZVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgbGV0IGEsIGIgPSBMaXN0X3V0aWwucmFuZG9tIHJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIFNvbWUgKGEsIGIsIE5vbmUpXG4gICAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlIGRvbWFpbiBlZGdlc1xuICAgICAgY2NzIHJ1bGUgPVxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID91bmFyeV9yYXRlIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXMgZG9tYWluXG4gICAgICAgIGVkZ2VzIGNjc1xuICAgIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgaWYgc3RhdGUuZXZlbnRzX3RvX2Jsb2NrID0gTm9uZSB0aGVuXG4gICAgICAgIG1hdGNoZXNcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2hlc1xuICAgICAgICB8PiBMaXN0LmZpbHRlciAoZnVuIChtYXRjaGluZywgXykgLT5cbiAgICAgICAgICAgICAgIG5vdCAoaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIG1hdGNoaW5nKSlcbiAgICBpblxuICAgICggTGlzdC5sZW5ndGggbWF0Y2hlcyxcbiAgICAgIHtcbiAgICAgICAgc3RhdGUgd2l0aFxuICAgICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbWF0Y2hlcyBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIH0gKVxuXG4gICgqIFdpdGggcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICBsZXQgY29tcHV0ZV91bmFyeV9udW1iZXIgaW5zdGFuY2VzXG4gICAgICAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzKSBtb2RpZmllZF9jY3MgcnVsZVxuICAgICAgcnVsZV9pZCA9XG4gICAgbGV0IHBhdDEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG5cbiAgICBsZXQgbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyA9XG4gICAgICBJbnN0YW5jZXMubnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyB+cnVsZV9pZCBpbnN0YW5jZXMgKHBhdDEsIHBhdDIpXG4gICAgaW5cblxuICAgIGxldCBvbGRfcGFjayA9XG4gICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgVmFsTWFwLmVtcHR5IHJ1bGVfaWRcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgbmV3X3BhY2sgPVxuICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgIChmdW4gY2MgKCkgaV9pbnN0IC0+XG4gICAgICAgICAgbGV0IG5ld192ID0gbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyBjYyBpblxuICAgICAgICAgIGlmIG5ld192ID0gMCB0aGVuXG4gICAgICAgICAgICBWYWxNYXAucmVtb3ZlIGNjIGlfaW5zdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFZhbE1hcC5hZGQgY2MgbmV3X3YgaV9pbnN0KVxuICAgICAgICBtb2RpZmllZF9jY3Mgb2xkX3BhY2tcbiAgICBpblxuICAgIGxldCB2YSA9IFZhbE1hcC50b3RhbCBuZXdfcGFjayBpblxuICAgIGxldCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MnID1cbiAgICAgIGlmIHZhID0gMEwgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbmV3X3BhY2sgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgXywgdW5hcnlfY2FuZGlkYXRlcycgPVxuICAgICAgKCogSW52YWxpZGF0ZXMgdGhlIGNhY2hlICopXG4gICAgICBNb2RzLkludE1hcC5wb3AgcnVsZV9pZCB1bmFyeV9jYW5kaWRhdGVzXG4gICAgaW5cbiAgICB2YSwgKG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycsIHVuYXJ5X2NhbmRpZGF0ZXMnKVxuXG4gIGxldCBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSByYW5kb21fc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICB+cnVsZV9pZCBydWxlID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMgd2l0aFxuICAgIHwgU29tZSBsIC0+XG4gICAgICBsZXQgaW5qLCByb290cywgcGF0aCA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgIFNvbWUgKGluaiwgcm9vdHMsIHBhdGgpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXQyID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBpblxuICAgICAgbGV0IHBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgPVxuICAgICAgICBJbnN0YW5jZXMucGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKVxuICAgICAgaW5cbiAgICAgIGxldCBjY19pZCA9XG4gICAgICAgIFZhbE1hcC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICAgICAgIHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYylcbiAgICAgIGluXG4gICAgICBsZXQgcm9vdDEsIHJvb3QyID0gcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyBjY19pZCBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCAlaUAgJWlAXUAuXCIgcm9vdDEgcm9vdDJcbiAgICAgIGluXG4gICAgICBsZXQgcGF0dGVybjEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgICBsZXQgcGF0dGVybjIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgaW5qMSA9XG4gICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBNYXRjaGluZy5lbXB0eSAwIHBhdHRlcm4xXG4gICAgICAgICAgcm9vdDFcbiAgICAgIGluXG4gICAgICAobWF0Y2ggaW5qMSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiAxIHBhdHRlcm4yIHJvb3QyXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmpfb3V0IC0+IFNvbWUgKGlual9vdXQsIFsgcm9vdDI7IHJvb3QxIF0sIE5vbmUpKSlcblxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgIGRvbWFpbiBncmFwaCBwYXRzIHJ1bGUgPVxuICAgIGxldCBwYXR0ZXJuMSA9IHBhdHMuKDApIGluXG4gICAgbGV0IHBhdHRlcm4yID0gcGF0cy4oMSkgaW5cbiAgICBsZXQgY2FuZHMsIGxlbiA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF91bmFyeV9pbnN0YW5jZXMgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAocGF0dGVybjEsIHBhdHRlcm4yKSB+aW5pdDooW10sIDApXG4gICAgICAgIChmdW4gKHJvb3QxLCByb290MikgKChsaXN0LCBsZW4pIGFzIG91dCkgLT5cbiAgICAgICAgICBsZXQgaW5qMSA9XG4gICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggTWF0Y2hpbmcuZW1wdHkgMFxuICAgICAgICAgICAgICBwYXR0ZXJuMSByb290MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggaW5qMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiAxIHBhdHRlcm4yXG4gICAgICAgICAgICAgICAgIHJvb3QyXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoaW5qJywgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkgOjogbGlzdCwgc3VjYyBsZW5cbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXRzIGluaicgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXMuKDApIG5vZGVzLigxKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIHAgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgfnJ1bGVfaWQgcnVsZSBpbmonIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgb3V0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChpbmonLCBbIHJvb3QyOyByb290MSBdLCBwKSA6OiBsaXN0LCBzdWNjIGxlbikpKSlcbiAgICBpblxuICAgIGxldCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIGxlbiA9IDAgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBydWxlX2lkIGNhbmRzIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIGxlbiwgeyBzdGF0ZSB3aXRoIHVuYXJ5X2NhbmRpZGF0ZXMgfVxuXG4gIGxldCBwcmludCBlbnYgZiBzdGF0ZSA9XG4gICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlaSBAWzxoPiVhQF1cIiBpIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICAgIChFZGdlcy5idWlsZF91c2VyX3NuYXBzaG90IH5kZWJ1Z19tb2RlOmZhbHNlIH5yYXc6ZmFsc2Ugc2lncyBzdGF0ZS5lZGdlcylcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlYSAlYVwiIE5ici5wcmludCBlbFxuICAgICAgICAgICAgIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnNcblxuICBsZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQCwlYUBdXCIgRWRnZXMuZGVidWdfcHJpbnQgc3RhdGUuZWRnZXNcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgdG9rZW5fJWlcIiBOYnIucHJpbnQgZWwgaSkpXG4gICAgICBzdGF0ZS5pbXAudG9rZW5zIEluc3RhbmNlcy5kZWJ1Z19wcmludCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG5cbiAgdHlwZSBzdGF0cyA9IHsgbWl4dHVyZV9zdGF0czogRWRnZXMuc3RhdHMgfVxuXG4gIGxldCBzdGF0cyBzdGF0ZSA9IHsgbWl4dHVyZV9zdGF0cyA9IEVkZ2VzLnN0YXRzIHN0YXRlLmVkZ2VzIH1cblxuICBsZXQgcHJpbnRfc3RhdHMgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVpIGFnZW50c1wiIChzdGF0cyBzdGF0ZSkubWl4dHVyZV9zdGF0cy5FZGdlcy5uYl9hZ2VudHNcblxuICBsZXQgbmV3X3BsYWNlIGZyZWVfaWQgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfIC0+IGZhaWx3aXRoIFwiUnVsZV9pbnRlcnByZXRlci5uZXdfcGxhY2VcIlxuICAgIHwgTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSAtPlxuICAgICAgaW5qX25vZGVzLCBNb2RzLkludE1hcC5hZGQgaWQgZnJlZV9pZCBpbmpfZnJlc2hcblxuICBsZXQgYXBwbHlfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb24gP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgaW5zdGFuY2VzXG4gICAgICAoc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIF8pIC0+XG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMucmVtb3ZlX2FnZW50IGlkIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoaWQsIF8pLCBzKSwgKChpZCcsIF8pLCBzJykpIC0+XG4gICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgIGNjX21vZGlmXG4gICAgICBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAoKChpZCwgXyksIHMpIGFzIG4pIC0+XG4gICAgICAobWF0Y2ggTGlzdC5wYXJ0aXRpb24gKGZ1biB4IC0+IHggPSBuKSBzaWRlX2VmZmVjdHMgd2l0aFxuICAgICAgfCBfIDo6IF8sIHNpZGVfZWZmZWN0cycgLT4gc2lkZV9lZmZlY3RzJywgZWRnZXNcbiAgICAgIHwgW10sIF8gLT5cbiAgICAgICAgKG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gaWQgcyBlZGdlcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzaWRlX2VmZmVjdHMsIEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXNcbiAgICAgICAgfCBTb21lICgoKGlkJywgXykgYXMgbmMnKSwgcycpIC0+XG4gICAgICAgICAgbGV0IGVkZ2VzJywgY2NfbW9kaWYgPSBFZGdlcy5yZW1vdmVfbGluayBpZCBzIGlkJyBzJyBlZGdlcyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgICBjY19tb2RpZlxuICAgICAgICAgIGluXG4gICAgICAgICAgKG5jJywgcycpIDo6IHNpZGVfZWZmZWN0cywgZWRnZXMnKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWQgaW4gbmVnYXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgIGxldCBfLCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcblxuICBsZXQgYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgc2lncyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgaW5zdGFuY2VzIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMpID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbiAtPlxuICAgICAgbGV0IG5jLCBpbmoyZ3JhcGgnLCBlZGdlcycgPVxuICAgICAgICBsZXQgdHkgPSBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBuIGluXG4gICAgICAgIGxldCBpZCwgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IHNpZ3MgdHkgZWRnZXMgaW5cbiAgICAgICAgKGlkLCB0eSksIG5ld19wbGFjZSBpZCBpbmoyZ3JhcGggbiwgZWRnZXMnXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCcsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobiwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCAoKGlkLCBfKSBhcyBuYykgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICAoKihBLDIzKSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyIChmdW4geCAtPiB4IDw+IChuYywgcykpIHNpZGVfZWZmZWN0c1xuICAgICAgaW5cbiAgICAgIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG5jLCBzKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBsZXQgbmMgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICBsZXQgbmMnID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbicgaW5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHMnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X2ZpbHRlclxuICAgICAgICAgIChmdW4geCAtPiB4IDw+IChuYywgcykgJiYgeCA8PiAobmMnLCBzJykpXG4gICAgICAgICAgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgKCAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMnLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSApXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuLCBzLCBpKSAtPlxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSxcbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgZWRnZXMgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIHR5KSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuYywgcyksIChuYycsIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9IEluc3RhbmNlcy5tZXJnZV9jYyBpbnN0YW5jZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgbW9kaWZfY2MgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlV2hhdEV2ZXIgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcywgaSkgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbmMgLT5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGVkZ2VzIGFjYyBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG5jLCBzLCBpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgbGV0IGkgPSBFZGdlcy5nZXRfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgICB8IFNvbWUgKG5jJywgcycpIC0+XG4gICAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgbmMnIHMnKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIHRyYW5zID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcylcbiAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgdHJhbnNcbiAgICB8PiBmc3RcblxuICBsZXQgcGF0aF90ZXN0cyBwYXRoIHRlc3RzID1cbiAgICBsZXQga25vd25fYWdlbnRzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoaWQsIF8pIC0+IE1vZHMuSW50U2V0LmFkZCBpZCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyAtPlxuICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIE1vZHMuSW50U2V0LmVtcHR5IHRlc3RzXG4gICAgaW5cbiAgICBsZXQgcHJldGVzdHMgPVxuICAgICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgICAgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgeCA8PiBhICYmIHggPD4gYiAmJiB5IDw+IGEgJiYgeSA8PiBiXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU29tZSAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoeCwgeSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgcGF0aFxuICAgIGluXG4gICAgbGV0IF8sIHBhdGhfdGVzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoYWcsIHRlKSAoKCgoaWQsIF8pIGFzIGEpLCBfKSwgKCgoaWQnLCBfKSBhcyBhJyksIF8pKSAtPlxuICAgICAgICAgIGxldCBhZycsIHRlJyA9XG4gICAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQgYWcgdGhlblxuICAgICAgICAgICAgICBhZywgdGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIGlkIGFnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSA6OiB0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkJyBhZycgdGhlblxuICAgICAgICAgICAgYWcnLCB0ZSdcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQnIGFnJywgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEnIDo6IHRlJylcbiAgICAgICAgKGtub3duX2FnZW50cywgcHJldGVzdHMpIHBhdGhcbiAgICBpblxuICAgIHBhdGhfdGVzdHNcblxuICBsZXQgc3RlcF9vZl9ldmVudCBjb3VudGVyID0gZnVuY3Rpb25cbiAgICB8IFRyYWNlLklOSVQgXywgZSAtPiBUcmFjZS5Jbml0IGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgfCBUcmFjZS5SVUxFIHIsIHggLT5cbiAgICAgIFRyYWNlLlJ1bGUgKHIsIHgsIENvdW50ZXIubmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjb3VudGVyKVxuICAgIHwgVHJhY2UuUEVSVCBwLCB4IC0+XG4gICAgICBUcmFjZS5QZXJ0IChwLCB4LCBDb3VudGVyLmN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG5cbiAgbGV0IHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgIGV2ZW50X2tpbmQgP3BhdGggZXh0cmFfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIGxldCBjZXZlbnQgPVxuICAgICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoXG4gICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0IGZ1bGxfY29uY3JldGVfZXZlbnQgPVxuICAgICAgICB7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGNldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIGV4dHJhX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgfCBTb21lIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgKFNvbWUgcGF0aCkgLT4gcGF0aF90ZXN0cyBwYXRoIGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzKTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXBcbiAgICAgICAgICAgICAoc3RlcF9vZl9ldmVudCBjb3VudGVyIChldmVudF9raW5kLCBmdWxsX2NvbmNyZXRlX2V2ZW50KSkpXG4gICAgICBpblxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGksIHgpIC0+XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuVHJhY2VTdGVwIChUcmFjZS5PYnMgKGksIHgsIENvdW50ZXIubmV4dF9zdG9yeSBjb3VudGVyKSkpKVxuICAgICAgICBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG5cbiAgbGV0IGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzIG9icyBhY2MgdHJhY2tlZCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChwYXR0ZXJuLCAocm9vdCwgXykpIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYyAoZm4sIHBhdHRlcm5zLCBfKSAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBvayBwaWQgLT5cbiAgICAgICAgICAgICAgICAgICAgUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgcGlkIHBhdHRlcm4gPSAwIHx8IG9rKVxuICAgICAgICAgICAgICAgICAgZmFsc2UgcGF0dGVybnNcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHNwZWMgPSBFZGdlcy5zcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBlZGdlcyBpblxuICAgICAgICAgICAgICAgIChmbiwgcGF0dGVybnMsIHNwZWMpIDo6IGFjY1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBhY2MpXG4gICAgICBhY2Mgb2JzXG5cbiAgbGV0IHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2VzIG9icyBhY2MgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgdHJhY2tlZCAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIChldiwgcGF0dGVybnMsIHRlc3RzKSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyAoaW5qLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmosIE1vZHMuSW50TWFwLmVtcHR5KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoZXYsIHRlc3RzJykgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAoYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgaW5zdGFuY2VzIH5leGNwOihwYXR0ZXJuLCByb290KVxuICAgICAgICAgICAgICAgICAgICAgZG9tYWluIGVkZ2VzIHBhdHRlcm5zKSlcbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgICAgYWNjIG9ic1xuXG4gIGxldCB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIGRvbWFpbiBpbmpfbm9kZXMgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgP3BhdGggcnVsZSBzaWdzID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uY29uY3JldGl6ZSB+ZGVidWdfbW9kZVxuICAgICAgICAgICAoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSkpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKGRlbF9vYnMsIGRlbF9kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCAoZmluYWxfaW5qMmdyYXBoLCByZW1haW5pbmdfc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICh4LCBwKSBoIC0+XG4gICAgICAgICAgbGV0IHgnLCBoJyA9XG4gICAgICAgICAgICBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICAgIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlIHN0YXRlLmltcC5pbnN0YW5jZXMgeCBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICB4JywgaCcgOjogcClcbiAgICAgICAgKCgoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSksIHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnKSwgW10pXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IGVkZ2VzJycsIGNvbmNyZXRlX2luc2VydGVkJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlLCBpKSAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgICAgIEVkZ2VzLmFkZF9mcmVlIGlkIHMgZSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIDo6IGkpXG4gICAgICAgIChlZGdlcycsIGNvbmNyZXRlX2luc2VydGVkKVxuICAgICAgICByZW1haW5pbmdfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZCdcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHRydWVcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlcycnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlN0b3JlIGV2ZW50KilcbiAgICBsZXQgbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlcyA9XG4gICAgICBzdG9yZV9vYnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycgc3RhdGUuaW1wLmluc3RhbmNlcyBuZXdfb2JzIFtdXG4gICAgICAgIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9ldmVudCB+ZGVidWdfbW9kZSBjb3VudGVyIGZpbmFsX2luajJncmFwaCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG4gICAgICAgIGV2ZW50X2tpbmQgP3BhdGggcmVtYWluaW5nX3NpZGVfZWZmZWN0cyBydWxlIG91dHB1dHNcbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycnIG5ld19vYnMgW10gc3RhdGUuaW1wLnNwZWNpZXNcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoZmlsZSwgXywgbWl4dHVyZSkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLlNwZWNpZXMgKGZpbGUsIENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIsIG1peHR1cmUpKSlcbiAgICAgICAgc3BlY2llc1xuICAgIGluXG4gICAgbGV0IHJldl9kZXBzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgICAgICAoT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlbF9kZXBzIG5ld19kZXBzKVxuICAgIGluXG4gICAge1xuICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgIGltcCA9IHN0YXRlLmltcDtcbiAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gc3RhdGUubWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICB1bmFyeV9jYW5kaWRhdGVzID0gc3RhdGUudW5hcnlfY2FuZGlkYXRlcztcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIGVkZ2VzID0gZWRnZXMnJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIHNpZ3MgY291bnRlciBkb21haW4gc3RhdGVcbiAgICAgIChhY3Rpb25zLCBzaWRlX2VmZmVjdF9kc3QpID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGxua19kc3QgKChhLCBfKSwgcykgPSBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBzdGF0ZS5lZGdlcyBpblxuICAgIGxldCBjb25jcmV0ZV9yZW1vdmVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ubmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0XG4gICAgICAgIGFjdGlvbnNcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgX3NpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3NcbiAgICAgICAgc2lkZV9lZmZlY3RfZHN0IGFjdGlvbnNcbiAgICBpblxuICAgIGxldCBlZGdlcycgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4IGggLT5cbiAgICAgICAgICBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LnNpZ25hdHVyZXMgZG9tYWluKVxuICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGgpXG4gICAgICAgIGVkZ2VzX2FmdGVyX25lZyBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IChuZXdfb2JzLCBuZXdfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJyBtb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICBwYXQgcm9vdClcbiAgICAgICAgbmV3X29ic1xuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgZWRnZXMgPSBlZGdlcyc7XG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IHJldl9kZXBzO1xuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gc3RhdGUuZXZlbnRzX3RvX2Jsb2NrO1xuICAgIH1cblxuICBsZXQgbWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZCA9IE5ici50b19pbnQgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGQpXG5cbiAgKCogY2NfdmEgaXMgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzLiBJdCBvbmx5IGhhc1xuICAgICB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSByYXRlIGNvbnN0YW50IG9mIHRoZSBydWxlICopXG4gIGxldCBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBpZCBzeW50YXhfaWQgcmF0ZSBjY192YVxuICAgICAgPVxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbJXN1bGUgJWEgaGFzIG5vdyAlaSBpbnN0YW5jZXMuQF1ALlwiXG4gICAgICAgICAgKGlmIGlkIG1vZCAyID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJVbmFyeSByXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiUlwiKVxuICAgICAgICAgIChNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmVudilcbiAgICAgICAgICAoaWQgLyAyKSBjY192YVxuICAgIGluXG4gICAgbGV0IGFjdCA9XG4gICAgICBtYXRjaCBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgY2NfdmEgPSAwIHRoZW5cbiAgICAgICAgICAwLlxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5maW5pdHlcbiAgICAgIHwgU29tZSByYXRlIC0+IHJhdGUgKi4gZmxvYXRfb2ZfaW50IGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWN0IDwgMC4gdGhlbiAoXG4gICAgICAgIGxldCB1bmFyeSA9IGlkIG1vZCAyID0gMSBpblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJBdCB0PSUuMmYgJXNjdGl2aXR5IG9mIHJ1bGUgJWEgaGFzIGJlY29tZSBuZWdhdGl2ZSAoJWYpXCJcbiAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgIChpZiB1bmFyeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFwiVW5hcnkgXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgXCJcIilcbiAgICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICAgICAgICAgICBpZCBhY3QsXG4gICAgICAgICAgICAgICBNb2RlbC5nZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBzeW50YXhfaWQgKSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBvbGRfYWN0ID0gZ2V0X2FjdGl2aXR5IGlkIHN0YXRlIGluXG4gICAgbGV0ICgpID0gc2V0X2FjdGl2aXR5IGlkIGFjdCBzdGF0ZSBpblxuICAgIHN0b3JlIHN5bnRheF9pZCBvbGRfYWN0IGFjdFxuXG4gIGxldCB1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBrbm93bl9wZXJ0c1xuICAgICAgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCB1bmFyeV9ydWxlX3VwZGF0ZSBtb2RpZmllZF9jYyBpbnN0YW5jZXMgaSBwYWNrIHJ1bGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgIHwgU29tZSAodW5yYXRlLCBfKSAtPlxuICAgICAgICBsZXQgdmEsIHBhY2snID1cbiAgICAgICAgICBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXMgcGFjayBtb2RpZmllZF9jYyBydWxlIGlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgKCgyICogaSkgKyAxKVxuICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgdW5yYXRlKSAoSW50NjQudG9faW50IHZhKVxuICAgICAgICBpblxuICAgICAgICBwYWNrJ1xuICAgIGluXG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCAoKGV4YWN0X21hdGNoaW5ncywgcGVydHMpIGFzIGFjYykgLT5cbiAgICAgICAgICBtYXRjaCBkZXAgd2l0aFxuICAgICAgICAgIHwgT3BlcmF0b3IuQUxHIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBqIGluXG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIGFjY1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPiBleGFjdF9tYXRjaGluZ3MsIHAgOjogcGVydHNcbiAgICAgICAgICB8IE9wZXJhdG9yLlJVTEUgaSAtPlxuICAgICAgICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgaSBpblxuICAgICAgICAgICAgbGV0IHBhdHRlcm5fdmEgPVxuICAgICAgICAgICAgICBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyB+cnVsZV9pZDppIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSAoMiAqIGkpXG4gICAgICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgICAgICAgcGF0dGVybl92YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBvcF9leGFjdF9tYXRjaGluZ3MgZXhhY3RfbWF0Y2hpbmdzIGksIHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hpbmdzX29mX3J1bGUsIHBlcnRzID1cbiAgICAgIGF1eCBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyAoc3RhdGUubWF0Y2hpbmdzX29mX3J1bGUsIGtub3duX3BlcnRzKVxuICAgIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgdW5hcnlfY2FuZGlkYXRlcyA9XG4gICAgICBpZiBIYXNodGJsLmxlbmd0aCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgPSAwIHRoZW5cbiAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAgICAgKHVuYXJ5X3J1bGVfdXBkYXRlIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eVxuICAgICAgICAgICAgICAgc3RhdGUuaW1wLmluc3RhbmNlcylcbiAgICAgICAgICAgIChzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMpXG4gICAgICAgICAgICBlbnZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXNldCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAgICAgb3V0XG4gICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgICBlZGdlcyA9IHN0YXRlLmVkZ2VzO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gc3RhdGUuaW1wLnByZWNvbXB1dGVkLmFsd2F5c19vdXRkYXRlZDtcbiAgICAgIH0sXG4gICAgICBwZXJ0cyApXG5cbiAgbGV0IG92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZS4oaSkgPC1cbiAgICAgICAgU29tZSAoQWxnX2V4cHIuQ09OU1QgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIpKVxuICAgIGluXG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5BTEcgaSkgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHM7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIGluamVjdGVkID1cbiAgICBsZXQgaW5qZWN0ZWQnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgoZXhwciwgXyksIGkpIC0+IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIsIGkpXG4gICAgICAgIGluamVjdGVkXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biByZGVwcyAodmEsIGkpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZS5pbXAudG9rZW5zLihpKSA8LSBOYnIuYWRkIHN0YXRlLmltcC50b2tlbnMuKGkpIHZhIGluXG4gICAgICAgICAgICBsZXQgZGVwcycgPSBNb2RlbC5nZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgaW5cbiAgICAgICAgICAgIGlmIE9wZXJhdG9yLkRlcFNldC5pc19lbXB0eSBkZXBzJyB0aGVuXG4gICAgICAgICAgICAgIHJkZXBzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzJylcbiAgICAgICAgICBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyBpbmplY3RlZCc7XG4gICAgfVxuXG4gIGxldCB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cGF0aFxuICAgICAgcnVsZSA/cnVsZV9pZCBpbmogPVxuICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBpbmogdGhlblxuICAgICAgQmxvY2tlZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX3Rva2VucyBlbnYgY291bnRlciBzdGF0ZSBydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgICBpblxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX2VkZ2VzIH5kZWJ1Z19tb2RlIG91dHB1dHMgY291bnRlciAoTW9kZWwuZG9tYWluIGVudikgaW5qIHN0YXRlXG4gICAgICAgICAgZXZlbnRfa2luZCA/cGF0aCBydWxlIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgIGluXG4gICAgICBTdWNjZXNzIHN0YXRlXG4gICAgKVxuXG4gIGxldCBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgX3Jldl9yb290cywgcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHN0YXRlJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LmFkZCAoT3BlcmF0b3IuUlVMRSBydWxlX2lkKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZScgZXZlbnRfa2luZFxuICAgICAgICAgIH5wYXRoIHJ1bGUgfnJ1bGVfaWQgaW5qXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIChfLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUnIGQpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBsZXQgbm9kZXMgPVxuICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgIGluXG4gICAgICAgIGlmIG1heF9kaXN0YW5jZSA9IE5vbmUgJiYgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSA9IE5vbmUgdGhlblxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnRcbiAgICAgICAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlcy4oMCkpKVxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigxKSkpXG4gICAgICAgICAgICAgIHN0YXRlLmVkZ2VzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJ1xuICAgICAgICAgICAgICBldmVudF9raW5kIH5wYXRoOk5vbmUgcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBzdGF0ZS5lZGdlcyBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBDb3JyZWN0ZWRcbiAgICAgICAgICB8IFNvbWUgXyBhcyBwYXRoIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IENsYXNoXG4gICAgfCBTb21lIChpbmosIHJldl9yb290cywgX3BhdGgpIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvb3RzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcmV2X3Jvb3RzIGluXG4gICAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gLT4gRm9ybWF0LnBwX3ByaW50X2ludCkpXG4gICAgICAgICAgICByb290c1xuICAgICAgICApXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgIHJ1bGUgP3J1bGVfaWQgaW5qXG4gICAgICB8IFNvbWUgKF8sIG1heF9kaXN0YW5jZSkgLT5cbiAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCByZXZfcm9vdHMgd2l0aFxuICAgICAgICAgIHwgWyByb290MTsgcm9vdDAgXSAtPlxuICAgICAgICAgICAgaWYgRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QwIHJvb3QxIHN0YXRlLmVkZ2VzIHRoZW5cbiAgICAgICAgICAgICAgQ29ycmVjdGVkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgICAgIGV2ZW50X2tpbmQgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJhcHBseV9naXZlbl9ydWxlIHVuYXJ5IHJ1bGUgd2l0aG91dCAyIHBhdHRlcm5zXCIpXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAgICAgICBsZXQgZGlzdCcgPSBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkaXN0KSBpblxuICAgICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgICBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpblxuICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2U6ZGlzdCcgc3RhdGUuZWRnZXMgbm9kZXMuKDApXG4gICAgICAgICAgICAgICBub2Rlcy4oMSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IFNvbWUgXyAtPiBDb3JyZWN0ZWQpKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID1cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgIGxldCBpbnN0ID1cbiAgICAgIHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzID9ydWxlX2lkIHJ1bGVcbiAgICBpblxuICAgIGFwcGx5X2dpdmVuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgaW5zdFxuXG4gIGxldCBmb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmQgP3J1bGVfaWQgcnVsZVxuICAgICAgPVxuICAgIG1hdGNoXG4gICAgICBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgIGV2ZW50X2tpbmQgcnVsZVxuICAgIHdpdGhcbiAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgfCBDb3JyZWN0ZWQgfCBCbG9ja2VkIHwgQ2xhc2ggLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTb21lIChsb2MsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgICBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgIChNb2RlbC5kb21haW4gZW52KSBzdGF0ZS5lZGdlcyBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJBdCB0PSVmLCAlYSBkb2VzIG5vdCBhcHBseSAoYW55bW9yZSlcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52KVxuICAgICAgICAgICAgICAgICAgICAgZXZlbnRfa2luZCApKVxuICAgICAgICBpblxuICAgICAgICBOb25lXG4gICAgICB8IGwgLT5cbiAgICAgICAgbGV0IGgsIF8gPSBMaXN0X3V0aWwucmFuZG9tIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgbCBpblxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBoXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXQgd2l0aFxuICAgICAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgICAgIHwgQmxvY2tlZCAtPiBOb25lXG4gICAgICAgIHwgQ2xhc2ggfCBDb3JyZWN0ZWQgLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgc3RhdGUgKDIgKiBydWxlX2lkKSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcbiAgICAgICAgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gICgqIFJlZGVmaW5lcyBgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzYCAqKVxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUpIGRpc3Rfb3B0KVxuICAgICAgICBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZVxuICAgIGluXG4gICAgbGV0IGFjdCwgc3RhdGUgPVxuICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlXG4gICAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgICBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICgoMiAqIHJ1bGVfaWQpICsgMSlcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIGFjdFxuICAgIGluXG4gICAgc3RhdGVcblxuICBsZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUgcGF0dGVybiA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEluc3RhbmNlcy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVyblxuICAgICAgICAoTWF0Y2hpbmcucm9vdHNfb2YgfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzIHBhdHRlcm4pXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IHNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIHtcbiAgICAgIERhdGEuc25hcHNob3RfZXZlbnQgPSBDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfdGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgICBEYXRhLnNuYXBzaG90X2FnZW50cyA9XG4gICAgICAgIEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gICAgICAgICAgc3RhdGUuZWRnZXM7XG4gICAgICBEYXRhLnNuYXBzaG90X3Rva2VucyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGkgeCAtPiBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpLCB4KVxuICAgICAgICAgIHN0YXRlLmltcC50b2tlbnM7XG4gICAgfVxuXG4gIGxldCBwaWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBzdGF0ZSA9XG4gICAgbGV0IGNob2ljZSA9IHBpY2tfcnVsZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIHN0YXRlIGluXG4gICAgbGV0IHJ1bGVfaWQgPSBjaG9pY2UgLyAyIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgKCBjaG9pY2UgbW9kIDIgPSAxLFxuICAgICAgcnVsZV9pZCxcbiAgICAgIGlmIGNob2ljZSBtb2QgMiA9IDEgdGhlblxuICAgICAgICBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG4gICAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGVcbiAgICAgIGVsc2VcbiAgICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgICBzdGF0ZS5lZGdlcyB+cnVsZV9pZCBydWxlIClcblxuICBsZXQgaXNfY29ycmVjdF9pbnN0YW5jZSBlbnYgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIG1hdGNoIGluc3RhbmNlIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSAoX2luaiwgaW52X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIGNjIHIgLT4gYiAmJiBJbnN0YW5jZXMuaXNfdmFsaWQgZ3JhcGguaW1wLmluc3RhbmNlcyBjYyByKVxuICAgICAgICB0cnVlIHBhdHNcbiAgICAgICAgKFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IGludl9yb290cylcbiAgICAgICYmICgobm90IGlzX3VuYXJ5KVxuICAgICAgICAgfHxcbiAgICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgfCBTb21lIHAgLT4gRWRnZXMuaXNfdmFsaWRfcGF0aCBwIGdyYXBoLmVkZ2VzXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIGludl9yb290cyB3aXRoXG4gICAgICAgICAgIHwgWyB4OyB5IF0gLT4gRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHggeSBncmFwaC5lZGdlc1xuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP21heENvbnNlY3V0aXZlQmxvY2tlZFxuICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIGxldCBjYXVzZSA9IFRyYWNlLlJVTEUgcnVsZV9pZCBpblxuICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IHJ1bGVfaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2PkBbQXBwbGllZEAgJXQlaTpAXUAgQFslYUBdQF1ALlwiXG4gICAgICAgICAgKGZ1biBmIC0+IGlmIGlzX3VuYXJ5IHRoZW4gRm9ybWF0LmZwcmludGYgZiBcInVuYXJ5QCBcIilcbiAgICAgICAgICBydWxlX2lkXG4gICAgICAgICAgKEthcHBhX3ByaW50ZXIuZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmZ1bGw6dHJ1ZSBlbnYpXG4gICAgICAgICAgcnVsZVxuICAgICAgKCpSdWxlX2ludGVycHJldGVyLnByaW50X2Rpc3QgZW52IGdyYXBoIHJ1bGVfaWQqKVxuICAgIGluXG4gICAgbGV0IGFwcGx5X2dpdmVuID1cbiAgICAgIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgYXBwbHlfZ2l2ZW5fdW5hcnlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICBpblxuICAgIG1hdGNoIGFwcGx5X2dpdmVuIGVudiBjb3VudGVyIGdyYXBoIGNhdXNlIHJ1bGUgaW5zdGFuY2Ugd2l0aFxuICAgIHwgU3VjY2VzcyBncmFwaCcgLT5cbiAgICAgIGxldCBmaW5hbF9zdGVwID0gbm90IChDb3VudGVyLm9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgY291bnRlcikgaW5cbiAgICAgIFNvbWUgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlLCBmaW5hbF9zdGVwLCBncmFwaCdcbiAgICB8IChDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQpIGFzIG91dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID1cbiAgICAgICAgaWYgb3V0ID0gQ2xhc2ggdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBvdXQgPSBCbG9ja2VkIHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ibG9ja2VkX2V2ZW50IGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICBpblxuICAgICAgaWZcbiAgICAgICAgQ291bnRlci5jb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXIgPCBtYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICYmXG4gICAgICAgIG1hdGNoIG1heENvbnNlY3V0aXZlQmxvY2tlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuIC0+IENvdW50ZXIuY29uc2VjdXRpdmVfYmxvY2tlZCBjb3VudGVyIDwgblxuICAgICAgdGhlblxuICAgICAgICBOb25lLCBub3QgY29udGludWUsIGdyYXBoXG4gICAgICBlbHNlXG4gICAgICAgICggTm9uZSxcbiAgICAgICAgICBub3QgY29udGludWUsXG4gICAgICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgIHJ1bGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGggcnVsZSApXG5cbiAgbGV0IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IFBhdHRlcm4uT2JzTWFwLmdldCB0cGF0dGVybiBwYXR0ZXJuIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKChuYW1lLCBwYXR0ZXJucywgdGVzdHMpIDo6IGFjYykpXG4gICAgICAgIHBhdHRlcm5zXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGFkZF90cmFja2VkIH5vdXRwdXRzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJPYnNlcnZhYmxlICVzIHNob3VsZCBiZSB0cmFja2VkIGJ1dCB0aGUgdHJhY2UgaXMgbm90IHN0b3JlZFwiXG4gICAgICAgICAgICAgICAgICAgbmFtZSApKVxuICAgICAgaW5cbiAgICAgIHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkIHBhdHRlcm5zIG5hbWUgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGF0ZVxuICAgIHwgU29tZSB0cGF0dGVybiAtPlxuICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICAgICAgbGV0IHRlc3RlciAoXywgZWwsIF8pID1cbiAgICAgICAgICBub3RcbiAgICAgICAgICBAQCBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgICAoZnVuIGkgYiB4IC0+IGIgJiYgUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHggZWwuKGkpKVxuICAgICAgICAgICAgICAgdHJ1ZSBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgICAgIChmdW4gcGF0dGVybiAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKExpc3QuZmlsdGVyIHRlc3RlciBhY2MpKVxuICAgICAgICAgICAgcGF0dGVybnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChuLCBfLCBfKSA9IG5vdCAoU3RyaW5nLmNvbXBhcmUgbmFtZSBuID0gMCkgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAgICAgKGZ1biBjY19pZCBwbGlzdCAtPlxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgICAgICB0cGF0dGVyblxuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9KVxuXG4gIGxldCBhZGRfdHJhY2tlZF9zcGVjaWVzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHN0YXRlLmltcC5zcGVjaWVzXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkX3NwZWNpZXMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLmltcC5zcGVjaWVzIGNjX2lkIChMaXN0LmZpbHRlciB0ZXN0ZXIgcGxpc3QpKVxuICAgICAgICBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuXG4gIGxldCBnZXRfcmFuZG9tX3N0YXRlIHN0YXRlID0gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZVxuXG4gIGxldCBzZW5kX2luc3RhbmNlc19tZXNzYWdlIG1zZyBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgaW1wID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlLmltcCB3aXRoXG4gICAgICAgICAgaW5zdGFuY2VzID0gSW5zdGFuY2VzLnJlY2VpdmVfbWVzc2FnZSBtc2cgc3RhdGUuaW1wLmluc3RhbmNlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IGFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMgbmV3X2RlcHMgc3RhdGUgPVxuICAgIGxldCBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gbmV3X2RlcHMgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZF9lbGVtZW50cyB9XG5cbiAgbGV0IGRlYnVnX3ByaW50X2luc3RhbmNlcyBmIHN0ID0gSW5zdGFuY2VzLmRlYnVnX3ByaW50IGYgc3QuaW1wLmluc3RhbmNlc1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGluaXRfc3RvcHBpbmdfdGltZXM6IChOYnIudCAqIGludCkgbGlzdDtcbiAgbXV0YWJsZSBzdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX2FsaXZlOiBib29sIGFycmF5O1xuICB0aW1lX2RlcGVuZGVudF9wZXJ0czogaW50IGxpc3Q7XG4gIG11dGFibGUgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zOiBpbnQgbGlzdDtcbiAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQ6IGJvb2wgYXJyYXk7XG4gICgqIGludGVybmFsIGFycmF5IGZvciBwZXJ0dXJiYXRlIGZ1bmN0aW9uIChnbG9iYWwgdG8gYXZvaWQgdXNlbGVzcyBhbGxvYykgKilcbiAgbXV0YWJsZSBmbHV4OiAoc3RyaW5nICogRGF0YS5kaW5fZGF0YSkgbGlzdDtcbiAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzOiBib29sO1xufVxuXG5sZXQgY29tcGFyZV9zdG9wcyAodDEsIHAxKSAodDIsIHAyKSA9XG4gIGxldCB0ID0gTmJyLmNvbXBhcmUgdDEgdDIgaW5cbiAgaWYgdCA9IDAgdGhlblxuICAgIGNvbXBhcmUgcDEgcDJcbiAgZWxzZVxuICAgIHRcblxubGV0IGVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgY291bnRlciBlbnYgPVxuICBsZXQgdDAgPSBDb3VudGVyLmluaXRfdGltZSBjb3VudGVyIGluXG4gIGxldCBzdG9wcGluZ190aW1lcyA9XG4gICAgbGV0IGFsZ3NfZGVwcyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgTW9kZWwuZm9sZF9wZXJ0dXJiYXRpb25zXG4gICAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgICAgbWF0Y2ggeC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBsZXQgayA9IDEuICsuIGZsb29yICh0MCAvLiBPcHRpb25fdXRpbC51bnNvbWUgMC4gKE5ici50b19mbG9hdCBuKSkgaW5cbiAgICAgICAgICAoTmJyLm11bHQgKE5ici5GIGspIG4sIGkpIDo6IGFjY1xuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwc1xuICAgICAgICAgICAgICAgIChmc3QgeC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbilcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwcyAoZnN0IHguUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIFwiRXF1YWxpdHkgdGVzdCBvbiB0aW1lIHJlcXVpcmVzIGFuIGFsYXJtXCIsXG4gICAgICAgICAgICAgICAgICAgICBzbmQgeC5QcmltaXRpdmVzLnJlcGVhdCApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWNjKVxuICAgICAgW10gZW52XG4gIGluXG4gIGxldCBzdG9wcyA9IExpc3Quc29ydCBjb21wYXJlX3N0b3BzIHN0b3BwaW5nX3RpbWVzIGluXG4gIGxldCB0aW1lX2RlcGVuZGVudF9wZXJ0cyA9XG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCBwZXJ0cyAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgYXV4IChNb2RlbC5nZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBqKSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPlxuICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBbIHAgXSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIC0+IHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBhdXhcbiAgICAgIChsZXQgeCwgXywgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICAgeClcbiAgICAgIFtdXG4gIGluXG4gIHtcbiAgICBpbml0X3N0b3BwaW5nX3RpbWVzID0gc3RvcHM7XG4gICAgc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBwZXJ0dXJiYXRpb25zX2FsaXZlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfcGVydHVyYmF0aW9ucyBlbnYpIHRydWU7XG4gICAgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zID0gW107XG4gICAgdGltZV9kZXBlbmRlbnRfcGVydHM7XG4gICAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmbHV4ID0gW107XG4gICAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzO1xuICB9XG5cbmxldCBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIGNvdW50ZXIgPVxuICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXMgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpIGVudlxuXG5sZXQgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgbW9kaWZpY2F0aW9uID1cbiAgbGV0IHByaW50X2V4cHJfdmFsID1cbiAgICBLYXBwYV9wcmludGVyLnByaW50X2V4cHJfdmFsIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoKVxuICBpblxuICBtYXRjaCBtb2RpZmljYXRpb24gd2l0aFxuICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFICgodiwgXyksIHIpIC0+XG4gICAgbGV0IHRleHQgPVxuICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCJcbiAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmVudilcbiAgICAgICAgbW9kaWZpY2F0aW9uXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnID1cbiAgICAgIE5ici5tYXliZV9pdGVyaVxuICAgICAgICAoZnVuIF8gZyAtPlxuICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZm9yY2VfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBnXG4gICAgICAgICAgICAoVHJhY2UuUEVSVCB0ZXh0KSByKVxuICAgICAgICBncmFwaFxuICAgICAgICAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCB2KVxuICAgIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhJyA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgIGVudiBjb3VudGVyIGdyYXBoJyBleHRyYVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoJycsIHN0YXRlLCBleHRyYSdcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaSwgKGV4cHIsIF8pKSAtPlxuICAgIGxldCBncmFwaCcgPSBSdWxlX2ludGVycHJldGVyLm92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIGdyYXBoIGV4cHIgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuU1RPUCBwZXhwciAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwZXhwciA8PiBbXSB0aGVuIChcbiAgICAgICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwciBpblxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgICAoIGZpbGUsXG4gICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgIClcbiAgICBpblxuICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBSSU5UIChwZV9maWxlLCBwZV9leHByKSAtPlxuICAgIGxldCBmaWxlX29wdCA9XG4gICAgICBtYXRjaCBwZV9maWxlIHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIC0+IFNvbWUgKEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgbGluZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2V4cHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5QcmludFxuICAgICAgICAgICB7IERhdGEuZmlsZV9saW5lX25hbWUgPSBmaWxlX29wdDsgRGF0YS5maWxlX2xpbmVfdGV4dCA9IGxpbmUgfSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRzIChEYXRhLlBsb3QgKG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlcikpIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIHBleHByKSAtPlxuICAgIGxldCBmaWxlID1cbiAgICAgIGlmIHBleHByID0gW10gdGhlblxuICAgICAgICBcInNuYXAua2FcIlxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwclxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG91dHB1dHNcbiAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgKGZpbGUsIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBncmFwaCkpXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKG5hbWUsIGNjLCB0ZXN0cykgLT5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgICAgICBjY1xuICAgIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWQgfm91dHB1dHMgY2MgbmFtZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKG5hbWUsIGNjKSAtPlxuICAgIGZhbHNlLCBSdWxlX2ludGVycHJldGVyLnJlbW92ZV90cmFja2VkIGNjIG5hbWUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgZm4gLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIGZuIGluXG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBmaWxlIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTiAocmVsLCBzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKG5hbWUsIHgpIC0+IGZpbGUgPSBuYW1lICYmIHguRGF0YS5kaW5fa2luZCA9IHJlbClcbiAgICAgICAgICBzdGF0ZS5mbHV4XG4gICAgICB0aGVuXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiQXQgdD0lZiwgZT0laTogdHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgYWxyZWFkeSBvblwiXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgIGZpbGUgKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5mbHV4IDwtIChmaWxlLCBGbHV4bWFwLmNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIHJlbCkgOjogc3RhdGUuZmx1eFxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBzIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0IHRoZXNlLCBvdGhlcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biAobmFtZSwgXykgLT4gbmFtZSA9IGZpbGUpIHN0YXRlLmZsdXhcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAobmFtZSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgeCkpKVxuICAgICAgICB0aGVzZVxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZmx1eCA8LSBvdGhlcnMgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFUyAocywgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgICggZmFsc2UsXG4gICAgICBSdWxlX2ludGVycHJldGVyLmFkZF90cmFja2VkX3NwZWNpZXMgY2MgZmlsZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuXG5sZXQgcmVjIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgbWl4X2NoYW5nZWQgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkXG4gIHwgaSA6OiB0YWlsIC0+XG4gICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBpIGluXG4gICAgbGV0IG1vZF9hbGFybSA9XG4gICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSBfIC0+IGlzX2FsYXJtXG4gICAgaW5cbiAgICBpZlxuICAgICAgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSlcbiAgICAgICYmIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKVxuICAgICAgJiYgUnVsZV9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgJiYgbW9kX2FsYXJtXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWl4X2NoYW5nZWQgPSBtaXhfY2hhbmdlZCAmJiBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCB0YWlsJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRvX21vZGlmaWNhdGlvbiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBleHRyYVxuICAgICAgICAgICAgICAgIGVmZmVjdClcbiAgICAgICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgdGFpbClcbiAgICAgICAgICBwZXJ0LlByaW1pdGl2ZXMuZWZmZWN0XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIGZhbHNlIGluXG4gICAgICBsZXQgYWxpdmUgPVxuICAgICAgICBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaCAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWxpdmUgJiYgcGVydC5QcmltaXRpdmVzLmFsYXJtID0gTm9uZSB0aGVuXG4gICAgICAgICAgc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIGkgOjogc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSkgPC0gYWxpdmUgaW5cbiAgICAgIGxldCBtaXhfY2hhbmdlZCcgPSBtaXhfY2hhbmdlZCB8fCBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBtaXhfY2hhbmdlZCdcbiAgICAgIGVsc2VcbiAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBtaXhfY2hhbmdlZCcgdGFpbCdcbiAgICApIGVsc2VcbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgIG1peF9jaGFuZ2VkIHRhaWxcblxubGV0IGRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgbGlzdCA9XG4gIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIGV4dHJhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIGFjY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICBlZmZlY3QpXG4gICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgW10pIGxpc3RcbiAgaW5cbiAgaWYgc3RvcCB0aGVuXG4gICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBmYWxzZVxuICBlbHNlXG4gICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgIGZhbHNlIGV4dHJhXG5cbmxldCBpbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgwIHN0YXRlMFxuICAgIGluaXRfbCA9XG4gIGxldCBtZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1zdGF0ZSAoYWxnLCBjb21waWxlZF9ydWxlKSAtPlxuICAgICAgICBiaW5kIG1zdGF0ZSAoZnVuIChzdG9wLCBzdGF0ZSwgc3RhdGUwKSAtPlxuICAgICAgICAgICAgbGV0IHZhbHVlID0gUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBhbGcgaW5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgICAgICAgY29tcGlsZWRfcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBjcmVhdGlvbnNfc29ydCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSB4IDo6IGxcbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIFtdIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgKCBzdG9wLFxuICAgICAgICAgICAgICAgIE5ici5pdGVyaVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyIHMgKFRyYWNlLklOSVQgY3JlYXRpb25zX3NvcnQpIGNvbXBpbGVkX3J1bGVcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuU3VjY2VzcyBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkNsYXNoIHwgUnVsZV9pbnRlcnByZXRlci5Db3JyZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkJsb2NrZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkJ1Z2dlZCBpbml0aWFsIHJ1bGVcIikpKVxuICAgICAgICAgICAgICAgICAgc3RhdGUgdmFsdWUsXG4gICAgICAgICAgICAgICAgc3RhdGUwICkpKVxuICAgICAgKHJldHVybiAoZmFsc2UsIGdyYXBoMCwgc3RhdGUwKSlcbiAgICAgIGluaXRfbFxuICBpblxuICBiaW5kIG1ncmFwaCAoZnVuIChfLCBncmFwaCwgc3RhdGUwKSAtPlxuICAgICAgbGV0IG1pZF9ncmFwaCwgXyA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIGdyYXBoIFtdXG4gICAgICBpblxuICAgICAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgXyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkKSBhcyBhY2MpIF8gLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06dHJ1ZSBlbnYgY291bnRlciBncmFwaFxuICAgICAgICAgICAgICAgIHN0YXRlIG1peF9jaGFuZ2VkIFsgaSBdKVxuICAgICAgICAgIChmYWxzZSwgbWlkX2dyYXBoLCBzdGF0ZTAsIGZhbHNlKVxuICAgICAgICAgIHN0YXRlMC5wZXJ0dXJiYXRpb25zX2FsaXZlXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgcmV0dXJuIChzdG9wLCBncmFwaCwgc3RhdGUpKVxuXG5sZXQgb25lX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBpbnN0YW5jZSA9XG4gIGxldCBwcmV2X2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICBsZXQgYWN0X3N0YWNrID0gcmVmIFtdIGluXG4gIGxldCBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gbXlfc3ludGF4X3JkX2lkID1cbiAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgIHwgW10sIGZhbHNlIC0+ICgpXG4gICAgfCBsLCBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgdGhlblxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRGVsdGFBY3Rpdml0aWVzIChteV9zeW50YXhfcmRfaWQsICFhY3Rfc3RhY2spKVxuICAgICAgaW5cbiAgICAgIGxldCBuX2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBGbHV4bWFwLmluY3JfZmx1eF9oaXQgbXlfc3ludGF4X3JkX2lkIGZsIGluXG4gICAgICAgICAgICBtYXRjaCBmbC5EYXRhLmRpbl9raW5kIHdpdGhcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoZnVuIChzeW50YXhfcmRfaWQsIChfLCBuZXdfYWN0KSkgLT5cbiAgICAgICAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggbXlfc3ludGF4X3JkX2lkIHN5bnRheF9yZF9pZFxuICAgICAgICAgICAgICAgICAgICAobGV0IGNhbmQgPSBuZXdfYWN0IC8uIG5fYWN0aXZpdHkgaW5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICAgICAgICBmbClcbiAgICAgICAgICAgICAgICAhYWN0X3N0YWNrKVxuICAgICAgICAgIGxcbiAgICAgIGluXG4gICAgICBhY3Rfc3RhY2sgOj0gW11cbiAgaW5cbiAgKCogbGV0ICgpID0gKilcbiAgKCogICBGb3JtYXQuZXByaW50ZiBcIiVhQC5cIiAoUnVsZV9pbnRlcnByZXRlci5wcmludF9pbmplY3Rpb25zIGVudikgZ3JhcGggaW4gKilcbiAgbGV0IGFwcGxpZWRfcmlkX3N5bnRheCwgZmluYWxfc3RlcCwgZ3JhcGgnID1cbiAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICBlbnYgY291bnRlciBncmFwaCBpbnN0YW5jZVxuICBpblxuICBtYXRjaCBhcHBsaWVkX3JpZF9zeW50YXggd2l0aFxuICB8IE5vbmUgLT4gZmluYWxfc3RlcCwgZ3JhcGgnLCBzdGF0ZVxuICB8IFNvbWUgc3ludGF4X3JpZCAtPlxuICAgIGxldCByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgc3ludGF4X3JkX2lkIG9sZF9hY3QgbmV3X2FjdCA9XG4gICAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICAgIHwgbCwgXyAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGFjdF9zdGFjayA6PSAoc3ludGF4X3JkX2lkLCAob2xkX2FjdCwgbmV3X2FjdCkpIDo6ICFhY3Rfc3RhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBGbHV4bWFwLmluY3JfZmx1eF9mbHV4IHN5bnRheF9yaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgIChsZXQgY2FuZCA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiAtLihvbGRfYWN0IC8uIHByZXZfYWN0aXZpdHkpXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPlxuICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBvbGRfYWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG5ld19hY3QgLS4gb2xkX2FjdCkgLy4gb2xkX2FjdFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIG5ld19hY3QgLS4gb2xkX2FjdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gaGFzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICBmbClcbiAgICAgICAgICBsXG4gICAgaW5cbiAgICBsZXQgZm9yY2VfdGVzdGVkID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIFtdIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhX3BlcnQgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgZW52IGNvdW50ZXIgZ3JhcGgnIGZvcmNlX3Rlc3RlZFxuICAgIGluXG4gICAgbGV0ICgpID0gZmluYWxpemVfcmVnaXN0cmF0aW9uIHN5bnRheF9yaWQgaW5cbiAgICBsZXQgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJywgX21peF9jaGFuZ2VkID1cbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoJycgc3RhdGVcbiAgICAgICAgZmFsc2UgZXh0cmFfcGVydFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSBfIC0+IHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSB0cnVlKVxuICAgICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFs8dj5PYnRhaW5lZEAgJWFAXUAuXCJcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5wcmludCBlbnYpXG4gICAgICAgICAgZ3JhcGgnJydcbiAgICBpblxuICAgIGZpbmFsX3N0ZXAgfHwgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJ1xuXG5sZXQgcmVjIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQpID1cbiAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICB8IFtdIC0+IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQsIGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGlmIE5ici5pc19zbWFsbGVyIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciArLiBkdCkpIHRoZW4gKFxuICAgICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBwZSBpblxuICAgICAgaWYgbm90IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgdGhlbiAoXG4gICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0JyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE5ici50b19mbG9hdCAoTmJyLnN1YiB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpKSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0XG4gICAgICAgICAgfCBTb21lIGR0aSAtPlxuICAgICAgICAgICAgbGV0IGR0JyA9IGR0IC0uIGR0aSBpblxuICAgICAgICAgICAgKCpzZXQgdGltZSBmb3IgcGVydHVyYmF0ZSAqKVxuICAgICAgICAgICAgaWYgQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHRpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBfID1cbiAgICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgICBzdGF0ZSBmYWxzZSBbIHBlIF1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRhaWwnID1cbiAgICAgICAgICAgICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICAgICAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAgICAgICAgIGlmIHN0YXRlLnBlcnR1cmJhdGlvbnNfYWxpdmUuKHBlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0YWlsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5zdG9wcGluZ190aW1lcyA8LSB0YWlsJyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKHBlKSA8LSB0cnVlIGluXG4gICAgICAgICAgICAgICgqIEFyZ3VtZW50IHRvIHJlc2V0IG9ubHkgcGUgYW5kIG5vdCBhbGwgcGVydHMgaXMgXCJpZlxuICAgICAgICAgICAgICAgICB5b3UncmUgbm90IGJhY2t0cmFja2luZywgbm90aGluZyBkZXBlbmRzIHVwb25cbiAgICAgICAgICAgICAgICAgeW91XCIuLi4gV2UnZCBiZXR0ZXIgZ2V0IHN1cmUgb2YgdGhhdCA6LSkgKilcbiAgICAgICAgICAgICAgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCdcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGUsIGR0J1xuICAgICAgICBpblxuXG4gICAgICAgIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgICAgICAgKHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnKVxuICAgICAgICAoKiBpZiBzb21lIHBlcnR1cmJhdGlvbiBuZWVkcyBiYWNrdHJhY2ssIHJldHVybiB0aGUgcGVydHVyYmF0aW9uICopXG4gICAgICApIGVsc2VcbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgdHJ1ZVxuICAgICkgZWxzZVxuICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcblxubGV0IHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBmdW5jdGlvblxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh0aSwgcGUpIDo6IHRhaWwgLT5cbiAgICBsZXQgdGFpbCcgPVxuICAgICAgbWF0Y2ggKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICB8IFNvbWUgbiAtPiBMaXN0X3V0aWwubWVyZ2VfdW5pcSBjb21wYXJlX3N0b3BzIFsgTmJyLmFkZCB0aSBuLCBwZSBdIHRhaWxcbiAgICBpblxuICAgIGxldCAoKSA9IHN0YXRlLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgaWYgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IH50aSBjb3VudGVyIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICAgICAgbGV0IGNhbmQgPVxuICAgICAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjYW5kID4gMSB0aGVuIG91dHB1dHMgKERhdGEuUGxvdCBjYW5kKVxuICAgICAgICBpblxuICAgICAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgZmFsc2UgWyBwZSBdXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUnLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICApIGVsc2VcbiAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZVxuXG5sZXQgcmVndWxhcl9sb29wX2JvZHkgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXJcbiAgICBncmFwaCBzdGF0ZSBkdCA9XG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHRcbiAgaW5cbiAgbGV0IGNvbnRpbnVlID0gQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHQgaW5cbiAgbGV0IHBpY2tlZF9pbnN0YW5jZSA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5waWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBncmFwaFxuICBpblxuICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIG1peF9jaGFuZ2VkID1cbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2Ugc3RhdGUudGltZV9kZXBlbmRlbnRfcGVydHNcbiAgaW5cbiAgaWYgKG5vdCBjb250aW51ZSkgfHwgc3RvcCB0aGVuXG4gICAgdHJ1ZSwgZ3JhcGgnLCBzdGF0ZSdcbiAgZWxzZSBpZlxuICAgIChub3QgbWl4X2NoYW5nZWQpXG4gICAgfHwgUnVsZV9pbnRlcnByZXRlci5pc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCcgcGlja2VkX2luc3RhbmNlXG4gIHRoZW5cbiAgICBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCcgc3RhdGUnXG4gICAgICBwaWNrZWRfaW5zdGFuY2VcbiAgZWxzZVxuICAgIENvdW50ZXIub25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCBjb3VudGVyLCBncmFwaCcsIHN0YXRlJ1xuXG5sZXQgYV9sb29wIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5kdW1wSWZEZWFkbG9ja2VkIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgIGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCByZCA9IFJhbmRvbS5TdGF0ZS5mbG9hdCAoUnVsZV9pbnRlcnByZXRlci5nZXRfcmFuZG9tX3N0YXRlIGdyYXBoKSAxLjAgaW5cbiAgbGV0IGR0ID0gYWJzX2Zsb2F0IChsb2cgcmQgLy4gYWN0aXZpdHkpIGluXG5cbiAgbGV0IG91dCA9XG4gICAgKCpBY3Rpdml0eSBpcyBudWxsIG9yIGR0IGlzIGluZmluaXRlKilcbiAgICBpZiAobm90IChhY3Rpdml0eSA+IDAuKSkgfHwgY2xhc3NpZnlfZmxvYXQgZHQgPSBGUF9pbmZpbml0ZSB0aGVuXG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKF8sIHBlKSAtPlxuICAgICAgICAgICAgKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaylcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgdGhlblxuICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgc3RhdGUuc3RvcHBpbmdfdGltZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGR1bXBJZkRlYWRsb2NrZWQgdGhlblxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICAgICAoIFwiZGVhZGxvY2sua2FcIixcbiAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgIGdyYXBoICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgIFwiQSBkZWFkbG9jayB3YXMgcmVhY2hlZCBhZnRlciAlZCBldmVudHMgYW5kICVFcyAoQWN0aXZpdHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICA9ICUuNWYpXCJcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHkgKSlcbiAgICAgICAgaW5cbiAgICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG4gICAgICApXG4gICAgZWxzZSAoXG4gICAgICAoKmFjdGl2aXR5IGlzIHBvc2l0aXZlKilcbiAgICAgIG1hdGNoIHN0YXRlLnN0b3BwaW5nX3RpbWVzIHdpdGhcbiAgICAgIHwgKHRpLCBfKSA6OiBfXG4gICAgICAgIHdoZW4gTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgLT5cbiAgICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnLCBkdCcsIG5lZWRzX2JhY2t0cmFjayA9XG4gICAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBkdClcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmVlZHNfYmFja3RyYWNrIHRoZW5cbiAgICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoJ1xuICAgICAgICAgICAgc3RhdGUnIHN0YXRlJy5zdG9wcGluZ190aW1lc1xuICAgICAgICBlbHNlIGlmIHN0b3AgdGhlblxuICAgICAgICAgIHN0b3AsIGdyYXBoJywgc3RhdGUnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnZcbiAgICAgICAgICAgIGNvdW50ZXIgZ3JhcGgnIHN0YXRlJyBkdCdcbiAgICAgIHwgXyAtPlxuICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgICAgICAgIGdyYXBoIHN0YXRlIGR0XG4gICAgKVxuICBpblxuICBvdXRcblxubGV0IGVuZF9vZl9zaW11bGF0aW9uIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlID1cbiAgbGV0IF8gPSBzdGF0ZS5pbml0X3N0b3BwaW5nX3RpbWVzIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAobmFtZSwgZSkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiVHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgbm90IHN0b3BwZWQgYmVmb3JlIGVuZCBvZiBcXFxuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgb3V0cHV0cyAoRGF0YS5ESU4gKG5hbWUsIEZsdXhtYXAuc3RvcF9mbHV4IGVudiBjb3VudGVyIGUpKSlcbiAgICBzdGF0ZS5mbHV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXRlID0ge1xuICBncmFwaDogRWRnZXMudDtcbiAgdGltZTogZmxvYXQ7XG4gIGV2ZW50OiBpbnQ7XG4gIGNvbm5lY3RlZF9jb21wb25lbnRzOiBBZ2VudC5TZXRNYXAuU2V0LnQgTW9kcy5JbnRNYXAudCBvcHRpb247XG59XG5cbnR5cGUgc3VtbWFyeSA9IHsgdW5hcnlfZGlzdGFuY2VzOiAoaW50ICogaW50KSBvcHRpb24gfVxuXG5sZXQgaW5pdF9zdGF0ZSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gIHtcbiAgICBncmFwaCA9IEVkZ2VzLmVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHRpbWUgPSAwLjtcbiAgICBldmVudCA9IDA7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgKGlmIHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgdGhlblxuICAgICAgICAgU29tZSBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpO1xuICB9XG5cbmxldCBjY19vZl9hZ2VudCBhZyBlIHdvcmsgPVxuICBsZXQgcmVjIGZvbGRfYXJpdHlfbGlzdCBmIHggYXJpdHkgYWNjID1cbiAgICBpZiB4ID0gYXJpdHkgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgZm9sZF9hcml0eV9saXN0IGYgKHN1Y2MgeCkgYXJpdHkgKGYgYWNjIHgpXG4gIGluXG5cbiAgbGV0IGFkZF9hZ2VudCBhIGUgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgPVxuICAgIGxldCBhaWQgPSBBZ2VudC5pZCBhIGluXG4gICAgbGV0IGF0eXBlID0gQWdlbnQuc29ydCBhIGluXG4gICAgbGV0IGFyaXR5ID0gRWRnZXMuZ2V0X3NpdGVzIGFpZCBlIGluXG4gICAgbGV0IHdfYWdlbnQsIHdvcmsnID0gUGF0dGVybi5uZXdfbm9kZSB3b3JrIGF0eXBlIGluXG4gICAgbGV0IHRvZG9zJyA9IGZvbGRfYXJpdHlfbGlzdCAoZnVuIGFjYyB4IC0+IChhaWQsIHgpIDo6IGFjYykgMCBhcml0eSB0b2RvcyBpblxuICAgIGxldCB3b3JrJycgPVxuICAgICAgZm9sZF9hcml0eV9saXN0XG4gICAgICAgIChmdW4gdyB4IC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWwgPSBFZGdlcy5nZXRfaW50ZXJuYWwgYWlkIHggZSBpblxuICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgdyAod19hZ2VudCwgeCkgaW50ZXJuYWxcbiAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiB3KVxuICAgICAgICAwIGFyaXR5IHdvcmsnXG4gICAgaW5cbiAgICB3X2FnZW50LCB3b3JrJycsIChhaWQsIHdfYWdlbnQpIDo6IG1vcnBoaXNtLCB0b2RvcydcbiAgaW5cblxuICBsZXQgYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpIChhaWQsIHgpIGUgPVxuICAgIGxldCBfLCB3X2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGFpZCkgbW9ycGhpc20gaW5cbiAgICBsZXQgbm90X2FnZW50IChpZCwgcykgPSBub3QgKGlkID0gYWlkICYmIHggPSBzKSBpblxuICAgIG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYWlkIHggZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgd29yaycgPSBQYXR0ZXJuLm5ld19mcmVlIHdvcmsgKHdfYWdlbnQsIHgpIGluXG4gICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50IHRvZG9zIGluXG4gICAgICB3b3JrJywgbW9ycGhpc20sIHRvZG9zJ1xuICAgIHwgU29tZSAoYiwgeSkgLT5cbiAgICAgIGxldCBiaWQgPSBBZ2VudC5pZCBiIGluXG4gICAgICBsZXQgbm90X2FnZW50cyAoaWQsIHMpID1cbiAgICAgICAgbm90X2FnZW50IChpZCwgcykgJiYgbm90IChpZCA9IEFnZW50LmlkIGIgJiYgcyA9IHkpXG4gICAgICBpblxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sIHdiX2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGJpZCkgbW9ycGhpc20gaW5cbiAgICAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yayAod19hZ2VudCwgeCkgKHdiX2FnZW50LCB5KSBpblxuICAgICAgICAgbGV0IHRvZG9zJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MgaW5cbiAgICAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIGxldCB3Yl9hZ2VudCwgd29yaycsIG1vcnBoaXNtJywgdG9kb3MnID1cbiAgICAgICAgICAgYWRkX2FnZW50IGIgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCB3b3JrJycgPSBQYXR0ZXJuLm5ld19saW5rIHdvcmsnICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MnIGluXG4gICAgICAgICB3b3JrJycsIG1vcnBoaXNtJywgdG9kb3MnJylcbiAgaW5cblxuICBsZXQgcmVjIHdvcmtpbmdfdG9kbyAod29yaywgbW9ycGhpc20sIHRvZG8pID1cbiAgICBtYXRjaCB0b2RvIHdpdGhcbiAgICB8IFtdIC0+IG1vcnBoaXNtLCB3b3JrXG4gICAgfCBwb3J0IDo6IF8gLT5cbiAgICAgIGxldCB3b3JrJywgbW9ycGhpc20nLCB0b2RvJyA9IGFkZF9saW5rcyAod29yaywgbW9ycGhpc20sIHRvZG8pIHBvcnQgZSBpblxuICAgICAgd29ya2luZ190b2RvICh3b3JrJywgbW9ycGhpc20nLCB0b2RvJylcbiAgaW5cblxuICBsZXQgXywgdywgbSwgdCA9IGFkZF9hZ2VudCBhZyBlICh3b3JrLCBbXSwgW10pIGluXG4gIHdvcmtpbmdfdG9kbyAodywgbSwgdClcblxubGV0IGNjX29mX3N0YXRlIH5kZWJ1Z19tb2RlIHMgZW52ID1cbiAgbGV0IGNjX29mX3Jvb3QgYWdlbnQgZScgPVxuICAgIGxldCB3b3JrID0gUGF0dGVybi5iZWdpbl9uZXcgZScgaW5cbiAgICBsZXQgbW9ycGhpc20sIHdvcmsnID0gY2Nfb2ZfYWdlbnQgYWdlbnQgcy5ncmFwaCB3b3JrIGluXG4gICAgbGV0IGVuLCBfLCBjLCBpID0gUGF0dGVybi5maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIHdvcmsnIGluXG4gICAgZW4sIExpc3QubWFwIChmdW4gKGNpZCwgKGFpZCwgXykpIC0+IGNpZCwgYWlkKSBtb3JwaGlzbSwgYywgaVxuICBpblxuICBtYXRjaCBzLmNvbm5lY3RlZF9jb21wb25lbnRzIHdpdGhcbiAgfCBTb21lIGNjX21hcHMgLT5cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHJvb3QgY2NfbWFwIChlLCBhY2MpIC0+XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQuZm9sZFxuICAgICAgICAgIChmdW4gYWdlbnQgKGUnLCBhY2MnKSAtPlxuICAgICAgICAgICAgaWYgQWdlbnQuaWQgYWdlbnQgPSByb290IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZW4sIHIsIGMsIGkgPSBjY19vZl9yb290IGFnZW50IGUnIGluXG4gICAgICAgICAgICAgIGVuLCAociwgYywgaSkgOjogYWNjJ1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGUnLCBhY2MnKVxuICAgICAgICAgIGNjX21hcCAoZSwgYWNjKSlcbiAgICAgIGNjX21hcHMgKGVudiwgW10pXG4gIHwgTm9uZSAtPiBlbnYsIFtdXG5cbmxldCBicmVha19hcGFydF9jYyBncmFwaCBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAob3JpZ2luX2NjLCBuZXdfY2MpIC0+XG4gICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBBZ2VudC5TZXRNYXAuU2V0LmVtcHR5IG9yaWdpbl9jYyBjY3MgaW5cbiAgICBpZiBBZ2VudC5TZXRNYXAuU2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgICBjY3NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQucGFydGl0aW9uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT4gRWRnZXMuZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgeCBncmFwaCA9IFNvbWUgbmV3X2NjKVxuICAgICAgICAgIHNldFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfY2MgbnNldCAoTW9kcy5JbnRNYXAuYWRkIG9yaWdpbl9jYyBvc2V0JyBjY3MpXG4gICAgKVxuXG5sZXQgbWVyZ2VfY2MgY2NzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGNjc1xuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCBzZXQxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgY2MxIGNjcyBpblxuICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgY2MyIGNjcyB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGNjc1xuICAgIHwgU29tZSBzZXQyLCBjY3MnIC0+XG4gICAgICBNb2RzLkludE1hcC5hZGQgY2MxIChBZ2VudC5TZXRNYXAuU2V0LnVuaW9uIHNldDEgc2V0MikgY2NzJylcblxubGV0IGRvX25lZ2F0aXZlX3BhcnQgKChhLCBfKSwgcykgKGdyYXBoLCBjY3MpID1cbiAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhIHMgZ3JhcGggd2l0aFxuICB8IE5vbmUgLT4gRWRnZXMucmVtb3ZlX2ZyZWUgYSBzIGdyYXBoLCBjY3NcbiAgfCBTb21lICgoYScsIF8pLCBzJykgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY19jaGFuZ2UgPSBFZGdlcy5yZW1vdmVfbGluayBhIHMgYScgcycgZ3JhcGggaW5cbiAgICAoIGdyYXBoJyxcbiAgICAgIChtYXRjaCBjY3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoYnJlYWtfYXBhcnRfY2MgZ3JhcGgnIGNjcyBjY19jaGFuZ2UpKSApXG5cbmxldCBkb19hY3Rpb24gc2lncyAoKGdyYXBoLCBjY3MpIGFzIHBhY2spID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChpZCwgdHkpIGFzIGFnKSwgX2dyYXBocykgLT5cbiAgICAoIHNuZCBAQCBFZGdlcy5hZGRfYWdlbnQgfmlkIHNpZ3MgdHkgZ3JhcGgsXG4gICAgICBPcHRpb25fdXRpbC5tYXAgKE1vZHMuSW50TWFwLmFkZCBpZCAoQWdlbnQuU2V0TWFwLlNldC5zaW5nbGV0b24gYWcpKSBjY3MgKVxuICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKGEsIF8pLCBzKSwgaSkgLT5cbiAgICBFZGdlcy5hZGRfaW50ZXJuYWwgYSBzIGkgZ3JhcGgsIGNjc1xuICB8IEluc3RhbnRpYXRpb24uQmluZCAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSlcbiAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKCgoYTEsIHMxKSBhcyB4MSksICgoYTIsIHMyKSBhcyB4MikpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9IGRvX25lZ2F0aXZlX3BhcnQgeDIgKGRvX25lZ2F0aXZlX3BhcnQgeDEgcGFjaykgaW5cbiAgICBsZXQgZ3JhcGgnJywgY2NfY2hhbmdlID0gRWRnZXMuYWRkX2xpbmsgYTEgczEgYTIgczIgZ3JhcGgnIGluXG4gICAgKCBncmFwaCcnLFxuICAgICAgKG1hdGNoIGNjcycgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MnIC0+IFNvbWUgKG1lcmdlX2NjIGNjcycgY2NfY2hhbmdlKSkgKVxuICB8IEluc3RhbnRpYXRpb24uRnJlZSAoKChhLCBfKSwgcykgYXMgeCkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4IHBhY2sgaW5cbiAgICBFZGdlcy5hZGRfZnJlZSBhIHMgZ3JhcGgnLCBjY3MnXG4gIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgKChpZCwgdHkpIGFzIGEpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9XG4gICAgICBUb29scy5yZWN0aVxuICAgICAgICAoZnVuIHN0IHMgLT4gZG9fbmVnYXRpdmVfcGFydCAoYSwgcykgc3QpXG4gICAgICAgIHBhY2sgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KVxuICAgIGluXG4gICAgKG1hdGNoIGNjcycgd2l0aFxuICAgIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBOb25lXG4gICAgfCBTb21lIGNjcycgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgY2NzJyB3aXRoXG4gICAgICB8IE5vbmUsIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgeCwgY2NzJycgLT5cbiAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChBZ2VudC5TZXRNYXAuU2V0LmlzX3NpbmdsZXRvbiB4KSBpblxuICAgICAgICBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBTb21lIGNjcycnKSlcblxubGV0IGludm9sdmVkX2FnZW50cyBsID1cbiAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEgLT4gU29tZSBhXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgTm9uZSlcbiAgICBsXG5cbmxldCBzdG9yZV9kaXN0YW5jZXMgciBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIF8gXSB8IF8gOjogXyA6OiBfIDo6IF8gLT4gTm9uZVxuICB8IFsgY2MxOyBjYzIgXSAtPlxuICAgIGxldCBjYzFfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMSBpblxuICAgIGxldCBjYzJfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMiBpblxuICAgIChtYXRjaCBFZGdlcy5hcmVfY29ubmVjdGVkIGdyYXBoIGNjMV9hZ3MgY2MyX2FncyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcGF0aCAtPiBTb21lIChyLCBMaXN0Lmxlbmd0aCBwYXRoKSlcblxubGV0IHRlc3RfcGFzc19vbiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+IEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChhZywgcyksIHN0KSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2ludGVybmFsIHN0IChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSAoYWcsIHMpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBub3QgKEVkZ2VzLmlzX2ZyZWUgKEFnZW50LmlkIGFnKSBzIGdyYXBoKVxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19hZ2VudCBhZycgZ3JhcGhcbiAgICAmJiBFZGdlcy5saW5rX2V4aXN0cyAoQWdlbnQuaWQgYWcpIHMgKEFnZW50LmlkIGFnJykgcycgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChhZywgcyksIChhZ190eSwgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gICAgJiZcbiAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiAoQWdlbnQuaWQgYWcpIHMgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSAoKF8sIGRzdF9hZ190eSksIGRzdF9zKSAtPiBkc3RfYWdfdHkgPSBhZ190eSAmJiBkc3RfcyA9IHMnKVxuXG5sZXQgdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0cyA9XG4gIExpc3QuZm9yX2FsbCAodGVzdF9wYXNzX29uIGdyYXBoKSAoTGlzdC5jb25jYXQgdGVzdHMpXG5cbmxldCBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5EdW1teSBfIC0+IHRydWVcbiAgfCBUcmFjZS5SdWxlIChfciwgZXZlbnQsIF9pbmZvKSAtPlxuICAgIHRlc3RzX3Bhc3Nfb24gZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+IHRlc3RzX3Bhc3Nfb24gZ3JhcGggdGVzdHNcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGUgc3RhdGUgPSBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIHN0YXRlLmdyYXBoXG5cbigqIFRoZXJlIGlzIGEgc3VidGVsdHkgd2hlbiBleGVjdXRpbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zLiBJbmRlZWQsXG4gICB3aGVuZXZlciBhIHJ1bGUgYm90aCBjcmVhdGVzIGFuZCByZW1vdmVzIGFnZW50cywgdGhlcmUgaXMgY3VycmVudGx5XG4gICBubyBndWFyYW50ZWUgdGhhdCB0aGUgY3JlYXRpb24gYWN0aW9ucyBhcmUgcGxhY2VkIGJlZm9yZSB0aGUgcmVtb3ZhbFxuICAgYWN0aW9ucyBpbiBbZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXS4gVGhpcyBjYW4gYmUgYW4gaXNzdWUgaW4gYVxuICAgY2FzZSB3aGVyZSBhbiBldmVudCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHR3byBhY3Rpb25zIGZvciBleGFtcGxlOlxuICAgW1wiY3JlYXRlIGFnZW50IHdpdGggaWQgOFwiLCBcInJlbW92ZSBhZ2VudCB3aXRoIGlkIDhcIl0uIEluIHRoaXMgY2FzZSxcbiAgIGFnZW50IGlkIDggaXMgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBjcmVhdGlvbiBhY3Rpb24gaXMgcGVyZm9ybWVkIGFuZFxuICAgc28gdGhlIFtFZGdlc10gbW9kdWxlIHRocm93cyBhbiBleGNlcHRpb24uXG5cbiAgIEFzIGEgdGVtcG9yYXJ5IGZpeCwgd2UgbWFrZSBzdXJlIHRoYXQgYWxsIGRlbGV0aW9uIGFjdGlvbnMgYXJlXG4gICBleGVjdXRlZCBmaXJzdC4gVGhpcyBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBhIHN0ZXAgZGVsZXRpbmcgYW4gYWdlbnRcbiAgIGNhbm5vdCBwZXJmb3JtIGFueSBvdGhlciBhY3Rpb24gaW52b2x2aW5nIHRoaXMgYWdlbnQuXG5cbiAgIFRPRE86IFNob3VsZG4ndCB3ZSByYXRoZXIgZW5zdXJlIHRoYXQgYWN0aW9ucyBhcmUgcHJvcGVybHkgc29ydGVkIGluXG4gICB0aGUgdHJhY2UgZmlsZSBpbiB0aGUgZmlyc3QgcGxhY2U/ICopXG5sZXQgZG9fYWN0aW9ucyBzaWdzIHN0IGFjdGlvbnMgPVxuICBsZXQgaXNfcmVtb3ZhbCA9XG4gICAgbGV0IG9wZW4gSW5zdGFudGlhdGlvbiBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBSZW1vdmUgXyAtPiB0cnVlXG4gICAgfCBDcmVhdGUgXyB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IGZhbHNlXG4gIGluXG4gIGxldCByZW1vdmFscywgb3RoZXJzID0gTGlzdC5wYXJ0aXRpb24gaXNfcmVtb3ZhbCBhY3Rpb25zIGluXG4gIGxldCBkb19pbl9vcmRlciBhY3Rpb25zIHN0ID0gTGlzdC5mb2xkX2xlZnQgKGRvX2FjdGlvbiBzaWdzKSBzdCBhY3Rpb25zIGluXG4gIHN0IHw+IGRvX2luX29yZGVyIHJlbW92YWxzIHw+IGRvX2luX29yZGVyIG90aGVyc1xuXG5sZXQgZG9fc3RlcCBzaWdzIHN0YXRlID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4gIHwgVHJhY2UuUnVsZSAoa2luZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHVuYXJ5X2Rpc3RhbmNlcyA9XG4gICAgICBpZiBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cyA9IE5vbmUgdGhlblxuICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIHN0b3JlX2Rpc3RhbmNlcyBraW5kIHN0YXRlLmdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICBpblxuICAgIGxldCBwcmVncmFwaCwgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgZG9fYWN0aW9ucyBzaWdzXG4gICAgICAgIChzdGF0ZS5ncmFwaCwgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGdyYXBoID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZ3JhcGggKChpZCwgXyksIHMpIC0+IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZ3JhcGgpXG4gICAgICAgIHByZWdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIGdyYXBoO1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgfSApXG4gIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfSApXG4gIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgbGV0IGdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3MgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cykgYWN0aW9uc1xuICAgIGluXG4gICAgKCB7IGdyYXBoOyBjb25uZWN0ZWRfY29tcG9uZW50czsgdGltZSA9IHN0YXRlLnRpbWU7IGV2ZW50ID0gc3RhdGUuZXZlbnQgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5PYnMgKF8sIF8sIGluZm8pIC0+XG4gICAgKCB7XG4gICAgICAgIGdyYXBoID0gc3RhdGUuZ3JhcGg7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9IHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5EdW1teSBfIC0+IHN0YXRlLCB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzeW50YXhfdmVyc2lvbiA9IFYzIHwgVjRcblxubGV0IG1lcmdlX3ZlcnNpb24gYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgVjQsIF8gfCBfLCBWNCAtPiBWNFxuICB8IFYzLCBWMyAtPiBWM1xuXG50eXBlIGludGVybmFsID0gc3RyaW5nIG9wdGlvbiBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgcG9ydCA9IHtcbiAgcG9ydF9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIHBvcnRfaW50OiBpbnRlcm5hbDtcbiAgcG9ydF9pbnRfbW9kOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBwb3J0X2xpbms6IChzdHJpbmcgTG9jLmFubm90ZWQsIHVuaXQpIExLYXBwYS5saW5rIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHBvcnRfbGlua19tb2Q6IGludCBMb2MuYW5ub3RlZCBvcHRpb24gb3B0aW9uO1xufVxuXG4oKiBUT0RPIGNoYW5nZSBuYW1lLCBDVkFSIGlzIG5vdCBhIHRlc3Q/ICopXG4oKiBUT0RPIGRpc2NyaW1pbmF0ZSBiZXR3ZWVuIGNvdW50ZXIgZGVmaW5pdGlvbiBhbmQgY291bnRlciB0ZXN0ID8gKilcbigqIFRPRE86IGNoYW5nZSB0aGlzIHRvIENUWVBFID0gQ1RFU1QgKENURVNUVFlQRSAqIGludCkgfCBDVkFSIHN0cmluZz8gKilcblxudHlwZSBjb3VudGVyX3Rlc3QgPSBDRVEgb2YgaW50IHwgQ0dURSBvZiBpbnQgfCBDTFRFIG9mIGludCB8IENWQVIgb2Ygc3RyaW5nXG5cbnR5cGUgY291bnRlciA9IHtcbiAgY291bnRlcl9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfdGVzdDogY291bnRlcl90ZXN0IExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IHdoYXQgdGVzdCBpcyBkb25lLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogdGhlIG1pbiB2YWx1ZSwgaW4gYW4gaW5pdCBkZWNsYXJhdGlvbjogdGhlIGluaXQgdmFsdWUsIE5vbmUgaWYgYWJzZW50ICopXG4gIGNvdW50ZXJfZGVsdGE6IGludCBMb2MuYW5ub3RlZDtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IGNoYW5nZSBpbiBjb3VudGVyIHZhbHVlLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogbWF4IHZhbHVlIG9mIHRoZSBjb3VudGVyLCAwIGlmIGFic2VudCAqKVxufVxuKCoqIENvdW50ZXIgc3ludGF4IGZyb20gQVNULCBwcmVzZW50IGluIDMgY29udGV4dHMgd2l0aCBkaWZmZXJlbnQgbWVhbmluZ3M6IGFnZW50IGRlZmluaXRpb24sIHNwZWNpZXMgaW5pdCBkZWNsYXJhdGlvbiwgcnVsZSAqKVxuXG50eXBlIHNpdGUgPSBQb3J0IG9mIHBvcnQgfCBDb3VudGVyIG9mIGNvdW50ZXJcbnR5cGUgYWdlbnRfbW9kID0gTm9Nb2QgfCBFcmFzZSB8IENyZWF0ZVxuXG50eXBlIGFnZW50ID1cbiAgfCBQcmVzZW50IG9mIHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGUgbGlzdCAqIGFnZW50X21vZFxuICB8IEFic2VudCBvZiBMb2MudFxuXG4oKiBUT0RPOiBkb2N1bWVudCB3aHkgbGlzdCBsaXN0ICopXG50eXBlIG1peHR1cmUgPSBhZ2VudCBsaXN0IGxpc3RcblxudHlwZSBlZGl0X25vdGF0aW9uID0ge1xuICBtaXg6IG1peHR1cmU7XG4gIGRlbHRhX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIGFycm93X25vdGF0aW9uID0ge1xuICBsaHM6IG1peHR1cmU7XG4gIHJtX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xuICByaHM6IG1peHR1cmU7XG4gIGFkZF90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbn1cblxudHlwZSBydWxlX2NvbnRlbnQgPSBFZGl0IG9mIGVkaXRfbm90YXRpb24gfCBBcnJvdyBvZiBhcnJvd19ub3RhdGlvblxuXG50eXBlIHJ1bGUgPSB7XG4gIHJld3JpdGU6IHJ1bGVfY29udGVudDtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDtcbiAga19kZWY6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIGtfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgKCprXzE6cmFkaXVzX29wdCopXG4gIGtfb3A6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBrX29wX3VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gICAgICAoKnJhdGUgZm9yIGJhY2t3YXJkIHJ1bGUqKVxufVxuXG5sZXQgZmxpcF9sYWJlbCBzdHIgPSBzdHIgXiBcIl9vcFwiXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciA9XG4gIHwgQVBQTFkgb2YgKCgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogJ3J1bGUgTG9jLmFubm90ZWQpXG4gIHwgVVBEQVRFIG9mICgnaWQgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZClcbiAgfCBTVE9QIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUFJJTlQgb2ZcbiAgICAgICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUExPVEVOVFJZXG4gIHwgQ0ZMT1dMQUJFTCBvZiAoYm9vbCAqIHN0cmluZyBMb2MuYW5ub3RlZClcbiAgfCBDRkxPV01JWCBvZiAoYm9vbCAqICdwYXR0ZXJuIExvYy5hbm5vdGVkKVxuICB8IERJTiBvZlxuICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVNfT0Ygb2ZcbiAgICAgIGJvb2xcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogJ3BhdHRlcm4gTG9jLmFubm90ZWRcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gPVxuICAoTmJyLnQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uKVxuICBMb2MuYW5ub3RlZFxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSBzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgPVxuICBzdHJpbmcgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuXG50eXBlICgnbWl4dHVyZSwgJ2lkKSBpbml0X3QgPVxuICB8IElOSVRfTUlYIG9mICdtaXh0dXJlIExvYy5hbm5vdGVkXG4gIHwgSU5JVF9UT0sgb2YgJ2lkIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50ID1cbiAgKCogIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAoKnZvbHVtZSopKilcbiAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAoJ21peHR1cmUsICdpZCkgaW5pdF90XG5cbnR5cGUgKCdhZ2VudCwgJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBpbnN0cnVjdGlvbiA9XG4gIHwgU0lHIG9mICdhZ2VudFxuICB8IFRPS0VOU0lHIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuICB8IFZPTFNJRyBvZiBzdHJpbmcgKiBmbG9hdCAqIHN0cmluZyAoKiB0eXBlLCB2b2x1bWUsIHBhcmFtZXRlciopXG4gIHwgSU5JVCBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50XG4gICgqdm9sdW1lLCBpbml0LCBwb3NpdGlvbiAqKVxuICB8IERFQ0xBUkUgb2YgKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZlxuICB8IE9CUyBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkqKVxuICB8IFBMT1Qgb2YgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgfCBQRVJUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIHBlcnR1cmJhdGlvblxuICB8IENPTkZJRyBvZiBjb25maWd1cmF0aW9uXG4gIHwgUlVMRSBvZiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqICdydWxlIExvYy5hbm5vdGVkKVxuXG50eXBlICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbW1hbmQgPVxuICB8IFJVTiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZFxuICB8IE1PRElGWSBvZiAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBtb2RpZl9leHByIGxpc3RcbiAgfCBRVUlUXG5cbnR5cGUgKCdhZ2VudCwgJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBjb21waWwgPSB7XG4gIGZpbGVuYW1lczogc3RyaW5nIGxpc3Q7XG4gIHZhcmlhYmxlczogKCdwYXR0ZXJuLCAnaWQpIHZhcmlhYmxlX2RlZiBsaXN0O1xuICAgICAgKCoqIHBhdHRlcm4gZGVjbGFyYXRpb24gZm9yIHJldXNpbmcgYXMgdmFyaWFibGUgaW4gcGVydHVyYmF0aW9uc1xuICAgIG9yIGtpbmV0aWMgcmF0ZSAqKVxuICBzaWduYXR1cmVzOiAnYWdlbnQgbGlzdDsgICgqKiBhZ2VudCBzaWduYXR1cmUgZGVjbGFyYXRpb24gKilcbiAgcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpIGxpc3Q7XG4gICAgICAoKiogcnVsZXMgKHBvc3NpYmx5IG5hbWVkKTogW25hbWVfb3B0aW9uICogcnVsZV9kZWZpbml0aW9uXSAqKVxuICBvYnNlcnZhYmxlczogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgbGlzdDtcbiAgICAgICgqKiBsaXN0IG9mIHBhdHRlcm5zIHRvIHBsb3QgKilcbiAgaW5pdDogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudCBsaXN0O1xuICAgICAgKCoqIGluaXRpYWwgZ3JhcGggZGVjbGFyYXRpb24gKilcbiAgcGVydHVyYmF0aW9uczogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uIGxpc3Q7XG4gIGNvbmZpZ3VyYXRpb25zOiBjb25maWd1cmF0aW9uIGxpc3Q7XG4gIHRva2Vuczogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHZvbHVtZXM6IChzdHJpbmcgKiBmbG9hdCAqIHN0cmluZykgbGlzdDtcbn1cblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IChhZ2VudCwgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBjb21waWxcbnR5cGUgcGFyc2luZ19pbnN0cnVjdGlvbiA9IChhZ2VudCwgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBpbnN0cnVjdGlvblxuXG5sZXQgbm9fbW9yZV9zaXRlX29uX3JpZ2h0IGVycm9yIGxlZnQgcmlnaHQgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bnRlciBfIC0+IHRydWVcbiAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IENvdW50ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBQb3J0IHAnIC0+IGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBwJy5wb3J0X25hbWUpXG4gICAgICAgICAgbGVmdFxuICAgICAgICB8fFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGVycm9yIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJTaXRlICdcIiBeIGZzdCBwLnBvcnRfbmFtZVxuICAgICAgICAgICAgICAgICAgIF4gXCInIHdhcyBub3QgbWVudGlvbm5lZCBpbiB0aGUgbGVmdC1oYW5kIHNpZGUuXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIHAucG9ydF9uYW1lICkpXG4gICAgICAgIGluXG4gICAgICAgIGZhbHNlKVxuICAgIHJpZ2h0XG5cbmxldCBlbXB0eV9jb21waWwgPVxuICB7XG4gICAgZmlsZW5hbWVzID0gW107XG4gICAgdmFyaWFibGVzID0gW107XG4gICAgc2lnbmF0dXJlcyA9IFtdO1xuICAgIHJ1bGVzID0gW107XG4gICAgaW5pdCA9IFtdO1xuICAgIG9ic2VydmFibGVzID0gW107XG4gICAgcGVydHVyYmF0aW9ucyA9IFtdO1xuICAgIGNvbmZpZ3VyYXRpb25zID0gW107XG4gICAgdG9rZW5zID0gW107XG4gICAgdm9sdW1lcyA9IFtdO1xuICB9XG5cbigqXG4gIGxldCByZXZlcnNlIHJlcyA9XG4gIGxldCBsX3BhdCA9IExpc3QucmV2ICFyZXMucGF0dGVybnNcbiAgYW5kIGxfc2lnID0gTGlzdC5yZXYgIXJlcy5zaWduYXR1cmVzXG4gIGFuZCBsX3J1bCA9IExpc3QucmV2ICFyZXMucnVsZXNcbiAgYW5kIGxfaW5pID0gTGlzdC5yZXYgIXJlcy5pbml0XG4gIGFuZCBsX29icyA9IExpc3QucmV2ICFyZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgcmVzOj17cGF0dGVybnM9bF9wYXQgOyBzaWduYXR1cmVzPWxfc2lnIDtcbiAgICAgICAgcnVsZXM9bF9ydWwgOyBpbml0ID0gbF9pbmkgOyBvYnNlcnZhYmxlcyA9IGxfb2JzfVxuKilcblxubGV0IHByaW50X2FzdF9saW5rIG1vZF9sIGYgbCA9XG4gIGlmIGwgPD4gW10gfHwgbW9kX2wgPD4gTm9uZSB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+XG4gICAgICAgICAgIExLYXBwYS5wcmludF9saW5rXG4gICAgICAgICAgICAgKGZ1biBfIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KVxuICAgICAgICAgICAgIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBfICgpIC0+ICgpKVxuICAgICAgICAgICAgIGYgeCkpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvJWFcIlxuICAgICAgICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgbFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIilcbiAgICAgICAgICAgICB4KSlcbiAgICAgIG1vZF9sXG5cbmxldCBwcmludF9hc3RfaW50ZXJuYWwgbW9kX2kgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfaSA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJWF9XCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgfCBTb21lIHgsIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICAgICAgIHwgTm9uZSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCIpKVxuICAgICAgbFxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKGksIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJXNcIiBpKSlcbiAgICAgIG1vZF9pXG5cbmxldCBwcmludF9hc3RfcG9ydCBmIHAgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhXCIgKGZzdCBwLnBvcnRfbmFtZSlcbiAgICAocHJpbnRfYXN0X2ludGVybmFsIHAucG9ydF9pbnRfbW9kKVxuICAgIHAucG9ydF9pbnRcbiAgICAocHJpbnRfYXN0X2xpbmsgcC5wb3J0X2xpbmtfbW9kKVxuICAgIHAucG9ydF9saW5rXG5cbmxldCBwcmludF9jb3VudGVyX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIHhcbiAgfCBDR1RFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiB4XG4gIHwgQ0xURSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI8PSVpXCIgeFxuICB8IENWQVIgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVzXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9kZWx0YSB0ZXN0IGYgKGRlbHRhLCBfKSA9XG4gIGlmIGRlbHRhIDw+IDAgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSs9JWRcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIvXCIpKVxuICAgICAgdGVzdCBkZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlciBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JWElYX1cIiAoZnN0IGMuY291bnRlcl9uYW1lKVxuICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgcHJpbnRfY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl90ZXN0XG4gICAgKHByaW50X2NvdW50ZXJfZGVsdGEgYy5jb3VudGVyX3Rlc3QpXG4gICAgYy5jb3VudGVyX2RlbHRhXG5cbmxldCBwcmludF9hc3Rfc2l0ZSBmID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcHJpbnRfYXN0X3BvcnQgZiBwXG4gIHwgQ291bnRlciBjIC0+IHByaW50X2NvdW50ZXIgZiBjXG5cbmxldCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmdcblxubGV0IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuXG5sZXQgY291bnRlcl90ZXN0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENFUSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDR1RFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDTFRFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDVkFSIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgU3RyaW5nIHggXVxuXG5sZXQgY291bnRlcl90ZXN0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDRVEgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENHVEUgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJnbGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImdsZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENMVEUgeFxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYFN0cmluZyB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBTdHJpbmcgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDVkFSIHhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjb3VudGVyIHRlc3RcIiwgeCkpXG5cbmxldCBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHAgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIFwiRlJFRVwiXG4gICAgICB8IFNvbWUgeCAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgeClcbiAgaW5cbiAgbGV0IG1vZF9pID1cbiAgICBKc29uVXRpbC5vZl9vcHRpb24gKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZylcbiAgaW5cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcInBvcnRfbmFtZVwiLCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgcC5wb3J0X25hbWU7XG4gICAgICAoIFwicG9ydF9pbnRcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIHAucG9ydF9pbnQgKTtcbiAgICAgICAgICAgIFwibW9kXCIsIG1vZF9pIHAucG9ydF9pbnRfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICAgICggXCJwb3J0X2xpbmtcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChMS2FwcGEubGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gW10pKSlcbiAgICAgICAgICAgICAgICBwLnBvcnRfbGluayApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2wgcC5wb3J0X2xpbmtfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsID1cbiAgbGV0IG1vZF9sID1cbiAgICBKc29uVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpIHgpKVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSlcbiAgaW5cbiAgbGV0IHBvcnRfaW50LCBwb3J0X2ludF9tb2QgPVxuICAgIG1hdGNoIGkgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpIF0gLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pIF0gLT4gW10sIG1vZF9pIG1cbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic3RhdGVcIiwgaSkgXVxuICAgICAgLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgbW9kX2kgbVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgaW50ZXJuYWwgc3RhdGVzXCIsIGkpKVxuICBpblxuICBsZXQgcG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBBc3NvYyBbXSB8IGBOdWxsIC0+IFtdLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKSBdIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgTm9uZSApXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2wgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgbCk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBsKSBdXG4gICAgICAtPlxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKExLYXBwYS5saW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSkpKVxuICAgICAgICAgIGwsXG4gICAgICAgIG1vZF9sIG0gKVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgbGluayBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIFBvcnRcbiAgICB7XG4gICAgICBwb3J0X25hbWUgPSBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyBuO1xuICAgICAgcG9ydF9pbnQ7XG4gICAgICBwb3J0X2ludF9tb2Q7XG4gICAgICBwb3J0X2xpbms7XG4gICAgICBwb3J0X2xpbmtfbW9kO1xuICAgIH1cblxubGV0IHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfdGVzdFwiLCB0KTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBZb2pzb24uQmFzaWMuVXRpbC50b19zdHJpbmcgbjtcbiAgICAgICAgY291bnRlcl90ZXN0ID1cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3Rlc3Rfb2ZfanNvbilcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkO1xuICAgICAgfVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBgTnVsbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPiBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgYE51bGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBBU1QgYWdlbnRcIiwgeCkpXG5cbmxldCBzaXRlX3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcG9ydF90b19qc29uIGZpbGVuYW1lcyBwXG4gIHwgQ291bnRlciBjIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJjb3VudGVyX25hbWVcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX25hbWUgKTtcbiAgICAgICAgKCBcImNvdW50ZXJfdGVzdFwiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF90b19qc29uKVxuICAgICAgICAgICAgYy5jb3VudGVyX3Rlc3QgKTtcbiAgICAgICAgKCBcImNvdW50ZXJfZGVsdGFcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX2RlbHRhICk7XG4gICAgICBdXG5cbmxldCBwcmludF9hZ2VudF9tb2QgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIlxuICB8IEVyYXNlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi1cIlxuICB8IE5vTW9kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlwiXG5cbmxldCBwcmludF9hc3RfYWdlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgUHJlc2VudCAoKGFnZW50X25hbWUsIF8pLCBsLCBtKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyglYSklYVwiIGFnZW50X25hbWVcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFwiKSBwcmludF9hc3Rfc2l0ZSlcbiAgICAgIGwgcHJpbnRfYWdlbnRfbW9kIG1cblxubGV0IGFnZW50X21vZF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IENyZWF0ZSAtPiBgU3RyaW5nIFwiY3JlYXRlZFwiXG4gIHwgRXJhc2UgLT4gYFN0cmluZyBcImVyYXNlXCJcbiAgfCBOb01vZCAtPiBgU3RyaW5nIFwibm9fbW9kXCJcblxubGV0IGFnZW50X21vZF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJjcmVhdGVkXCIgLT4gQ3JlYXRlXG4gIHwgYFN0cmluZyBcImVyYXNlXCIgLT4gRXJhc2VcbiAgfCBgU3RyaW5nIFwibm9fbW9kXCIgLT4gTm9Nb2RcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGFnZW50IG1vZGlmaWNhdGlvblwiLCB4KSlcblxubGV0IGFnZW50X3RvX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBBYnNlbnQgXyAtPiBgTnVsbFxuICB8IFByZXNlbnQgKG5hLCBsLCBtKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwibmFtZVwiLCBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgbmE7XG4gICAgICAgIFwic2lnXCIsIEpzb25VdGlsLm9mX2xpc3QgKHNpdGVfdG9fanNvbiBmaWxlbmFtZXMpIGw7XG4gICAgICAgIFwibW9kXCIsIGFnZW50X21vZF90b195b2pzb24gbTtcbiAgICAgIF1cblxubGV0IGFnZW50X29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBBYnNlbnQgTG9jLmR1bW15XG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKTsgKFwibW9kXCIsIG0pIF1cbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSk7IChcIm5hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgW10sXG4gICAgICAgIGFnZW50X21vZF9vZl95b2pzb24gbSApXG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF0gfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMpIHMsXG4gICAgICAgIE5vTW9kIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgTm9Nb2QgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IHByaW50X2FzdF9taXggPVxuICBQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpIChQcC5saXN0IFBwLmNvbW1hIHByaW50X2FzdF9hZ2VudClcblxubGV0IHRvX2VyYXNlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBFcmFzZSkpKVxuXG5sZXQgdG9fY3JlYXRlZF9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgICB8IEFic2VudCBwb3MgLT4gQWJzZW50IHBvc1xuICAgICAgfCBQcmVzZW50IChuLCBzLCBfKSAtPiBQcmVzZW50IChuLCBzLCBDcmVhdGUpKSlcblxubGV0IHRvX2R1bW15X3VzZXJfbGluayA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXSAtPiBVc2VyX2dyYXBoLldIQVRFVkVSXG4gIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIC0+IFVzZXJfZ3JhcGguTElOS1MgW11cbiAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFICh4LCBfKSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFsgKC0xLCAtMSksIHggXVxuICB8IFsgKExLYXBwYS5MTktfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+IFVzZXJfZ3JhcGguU09NRVxuICB8IFsgKExLYXBwYS5MTktfVFlQRSAoKHR5LCBfKSwgKHNpLCBfKSksIF8pIF0gLT4gVXNlcl9ncmFwaC5UWVBFICh0eSwgc2kpXG4gIHwgXyA6OiBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlICgqIFRPRE8gKilcblxubGV0IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgPSBmdW5jdGlvblxuICB8IFtdIC0+IFNvbWUgW11cbiAgfCBbIChOb25lLCBfKSBdIC0+IE5vbmVcbiAgfCBbIChTb21lIHN0LCBfKSBdIC0+IFNvbWUgWyBzdCBdXG4gIHwgXyA6OiBfIDo6IF8gYXMgbCAtPiBTb21lIChMaXN0X3V0aWwubWFwX29wdGlvbiBmc3QgbClcblxubGV0IHRvX2R1bW15X3VzZXJfc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgUG9ydCB7IHBvcnRfbmFtZTsgcG9ydF9pbnQ7IHBvcnRfaW50X21vZCA9IF87IHBvcnRfbGluazsgcG9ydF9saW5rX21vZCA9IF8gfVxuICAgIC0+XG4gICAge1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX25hbWUgPSBmc3QgcG9ydF9uYW1lO1xuICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSB0b19kdW1teV91c2VyX2xpbmsgcG9ydF9saW5rO1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyA9IHRvX2R1bW15X3VzZXJfaW50ZXJuYWwgcG9ydF9pbnQ7XG4gICAgICAgICAgfTtcbiAgICB9XG4gIHwgQ291bnRlciB7IGNvdW50ZXJfbmFtZTsgY291bnRlcl90ZXN0ID0gXzsgY291bnRlcl9kZWx0YSA9IF8gfSAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IGNvdW50ZXJfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyICgtMSk7XG4gICAgICAoKiBUT0RPICopXG4gICAgfVxuXG5sZXQgdG9fZHVtbXlfdXNlcl9hZ2VudCA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gTm9uZVxuICB8IFByZXNlbnQgKChuYSwgXyksIHMsIF9tb2RzKSAtPlxuICAgIFNvbWVcbiAgICAgIHtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3R5cGUgPSBuYTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX2lkID0gTm9uZTtcbiAgICAgICAgVXNlcl9ncmFwaC5ub2RlX3NpdGVzID0gVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9zaXRlIHM7XG4gICAgICB9XG5cbmxldCBzZXR1cF9saW5rIG0gKChsaW5lLCByb3cpLCBzaXRlKSB2YSA9XG4gIG1hdGNoIG0uKGxpbmUpLihyb3cpIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV9zaXRlczsgXyB9IC0+XG4gICAgbGV0IHMgPSBub2RlX3NpdGVzLihzaXRlKSBpblxuICAgIChtYXRjaCBzLlVzZXJfZ3JhcGguc2l0ZV90eXBlIHdpdGhcbiAgICB8IFVzZXJfZ3JhcGguQ291bnRlciBfIC0+ICgpXG4gICAgfCBVc2VyX2dyYXBoLlBvcnQgcCAtPlxuICAgICAgbm9kZV9zaXRlcy4oc2l0ZSkgPC1cbiAgICAgICAge1xuICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gcy5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgWyB2YSBdO1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSBwLlVzZXJfZ3JhcGgucG9ydF9zdGF0ZXM7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG5cbmxldCBtaXh0dXJlX3RvX3VzZXJfZ3JhcGggbSA9XG4gIGxldCBvdXQgPVxuICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChUb29scy5hcnJheV9tYXBfb2ZfbGlzdCB0b19kdW1teV91c2VyX2FnZW50KSBtXG4gIGluXG4gIGxldCBhY2MgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gbGluZSAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcm93IGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIHNpdGUgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTsgXyB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyAoXyA6OiBfIDo6IF8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBVc2VyX2dyYXBoLldIQVRFVkVSIHwgVXNlcl9ncmFwaC5TT01FXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKF8sIF8pICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgfCB7IFVzZXJfZ3JhcGguc2l0ZV90eXBlID0gVXNlcl9ncmFwaC5Db3VudGVyIF87IF8gfSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgKF8sIGlkKSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSwgYWNjJyAtPiBNb2RzLkludE1hcC5hZGQgaWQgKChsaW5lLCByb3cpLCBzaXRlKSBhY2MnXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdmEsIGFjYycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhJyA9IChsaW5lLCByb3cpLCBzaXRlIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHNldHVwX2xpbmsgb3V0IHZhIHZhJyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YScgdmEgaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjJykpXG4gICAgICAgICAgICAgIGFjYyBub2RlX3NpdGVzKSlcbiAgICAgIE1vZHMuSW50TWFwLmVtcHR5IG91dFxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50TWFwLmlzX2VtcHR5IGFjYykgaW5cbiAgb3V0XG5cbmxldCBpbml0X3RvX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgSU5JVF9NSVggbSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIm1peHR1cmVcIjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgSU5JVF9UT0sgdCAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJ0b2tlblwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0IChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhcikgdDtcbiAgICAgIF1cblxubGV0IGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IG0gXSAtPlxuICAgIElOSVRfTUlYIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcInRva2VuXCI7IHQgXSAtPlxuICAgIElOSVRfVE9LXG4gICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiSU5JVF9UT0tcIilcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX3ZhcilcbiAgICAgICAgIHQpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIEFzdCBpbml0IHN0YXRlbWVudFwiLCB4KSlcblxubGV0IHByaW50X3RvayBwcl9taXggcHJfdG9rIHByX3ZhciBmICgobmIsIF8pLCAobiwgXykpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBuYiBwcl90b2sgblxuXG5sZXQgcHJpbnRfb25lX3NpemUgdGsgZiBtaXggPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldCVhXCIgcHJpbnRfYXN0X21peCBtaXhcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHRrIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB8IFwiKVxuICAgIChQcC5saXN0XG4gICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiArIFwiKVxuICAgICAgIChwcmludF90b2tcbiAgICAgICAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByaW50X2FzdF9taXggbSlcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KSkpXG4gICAgdGtcblxubGV0IHByaW50X2Fycm93IGYgYmlkaXIgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgYmlkaXIgdGhlblxuICAgICAgIFwiPC0+XCJcbiAgICAgZWxzZVxuICAgICAgIFwiLT5cIilcblxubGV0IHByaW50X3Jhd19yYXRlIHByX21peCBwcl90b2sgcHJfdmFyIG9wIGYgKGRlZiwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggb3Agd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKGQsIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkKVxuXG5sZXQgcHJpbnRfYXN0X2FsZ19leHByID1cbiAgQWxnX2V4cHIucHJpbnRcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByaW50X2FzdF9taXggbSlcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuXG5sZXQgcHJpbnRfcmF0ZXNfb25lX2RpciB1biBmIGRlZiA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0XCJcbiAgICAocHJpbnRfcmF3X3JhdGVcbiAgICAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByaW50X2FzdF9taXggbSlcbiAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuICAgICAgIE5vbmUpXG4gICAgZGVmXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB1biB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoKGQsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWEldH1cIiBwcmludF9hc3RfYWxnX2V4cHIgZCAoZnVuIGYgLT5cbiAgICAgICAgICAgIFBwLm9wdGlvblxuICAgICAgICAgICAgICAoZnVuIGYgKG1kLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgcHJpbnRfYXN0X2FsZ19leHByIG1kKVxuICAgICAgICAgICAgICBmIG1heF9kaXN0KSlcblxubGV0IHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbCBmID0gZnVuY3Rpb25cbiAgfCBFZGl0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQF1cIiAocHJpbnRfb25lX3NpemUgci5kZWx0YV90b2tlbikgci5taXhcbiAgfCBBcnJvdyByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgJWFAICVhQF1cIlxuICAgICAgKHByaW50X29uZV9zaXplIHIucm1fdG9rZW4pXG4gICAgICByLmxocyBwcmludF9hcnJvdyBiaWRpcmVjdGlvbmFsXG4gICAgICAocHJpbnRfb25lX3NpemUgci5hZGRfdG9rZW4pXG4gICAgICByLnJoc1xuXG5sZXQgcHJpbnRfYXN0X3J1bGUgZiByID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+JWEgQEAgJWEldEBdXCJcbiAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOnIuYmlkaXJlY3Rpb25hbCkgci5yZXdyaXRlXG4gICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX3VuKSByLmtfZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5rX29wLCByLmtfb3BfdW4gd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+ICgpXG4gICAgICB8IE5vbmUsIF8gLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCJcbiAgICAgICAgICAocHJpbnRfcmF0ZXNfb25lX2RpciByLmtfb3BfdW4pXG4gICAgICAgICAgKEFsZ19leHByLmNvbnN0IE5ici56ZXJvKVxuICAgICAgfCBTb21lIGEsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAsICVhXCIgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKSBhKVxuXG5sZXQgcHJpbnRfY29uZmlndXJhdGlvbiBmICgobiwgXyksIGwpID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVkZWY6IFxcXCIlc1xcXCIgQFslYUBdQF1cIiBuXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmICh4LCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIiVzXFxcIlwiIHgpKVxuICAgIGxcblxubGV0IHByaW50X2luaXQgZiA9IGZ1bmN0aW9uXG4gIHwgKG4sIF8pLCBJTklUX01JWCAobSwgXykgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWluaXQ6IEBbJWFAXUAgQFslYUBdQF1cIiBwcmludF9hc3RfYWxnX2V4cHIgblxuICAgICAgcHJpbnRfYXN0X21peCBtXG4gIHwgKG4sIF8pLCBJTklUX1RPSyB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiAlYSAlYUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpKVxuICAgICAgdFxuXG5sZXQgcHJpbnRfYXN0X2Jvb2xfZXhwciA9XG4gIEFsZ19leHByLnByaW50X2Jvb2xcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByaW50X2FzdF9taXggbSlcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuXG5sZXQgcHJpbnRfcHJpbnRfZXhwciBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBwcmludF9hc3RfYWxnX2V4cHIgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIChAWyVhQF0pXCJcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLlwiKSBhdXgpXG4gICAgICBlXG5cbmxldCBwcmludF9tb2RpZiBmID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoKG4sIF8pLCAociwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRBUFBMWSBAWyVhQF0gQFslYUBdO1wiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOmZhbHNlKVxuICAgICAgci5yZXdyaXRlXG4gIHwgVVBEQVRFICgocywgXyksIChuLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAnJXNAJyBAWyVhQF07XCIgcyBwcmludF9hc3RfYWxnX2V4cHIgblxuICB8IFNUT1AgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFNUT1AlYTtcIiBwcmludF9wcmludF9leHByIHBcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QlYSV0O1wiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFBSSU5UIChbXSwgeCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYVwiIHByaW50X3ByaW50X2V4cHIgeFxuICB8IFBSSU5UIChmaWxlLCB4KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGJWEgPiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4IHByaW50X3ByaW50X2V4cHIgZmlsZVxuICB8IFBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVE5PVztcIlxuICB8IENGTE9XTEFCRUwgKG9uLCAocywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAnJXMnICVzO1wiIHNcbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gIHwgQ0ZMT1dNSVggKG9uLCAocCwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gJXM7XCIgcHJpbnRfYXN0X21peCBwXG4gICAgICAoaWYgb24gdGhlblxuICAgICAgICAgXCJbdHJ1ZV1cIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiW2ZhbHNlXVwiKVxuICB8IERJTiAoaywgcCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiVhICV0W3RydWVdXCIgcHJpbnRfcHJpbnRfZXhwciBwIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBrIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgRElOT0ZGIHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSBbZmFsc2VdXCIgcHJpbnRfcHJpbnRfZXhwciBwXG4gIHwgU1BFQ0lFU19PRiAob24sIHAsIChtLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNQRUNJRVNfT0YgQFslYUBdICVzID4lYTtcIiBwcmludF9hc3RfbWl4IG1cbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gICAgICBwcmludF9wcmludF9leHByIHBcblxubGV0IHByaW50X3BlcnR1cmJhdGlvbiBmICgoYWxhcm0sIGNvbmQsIG1vZGlmLCByZXApLCBfKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlbW9kOiVhJWEgZG9AIEBbJWFAXSVhQF1cIlxuICAgIChQcC5vcHRpb24gKGZ1biBmIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcImFsYXJtICVhXCIgTmJyLnByaW50IGkpKVxuICAgIGFsYXJtXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgKHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiBwcmludF9hc3RfYm9vbF9leHByIHIpKVxuICAgIGNvbmRcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9tb2RpZilcbiAgICBtb2RpZlxuICAgIChQcC5vcHRpb24gKGZ1biBmIChyLCBfKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInJlcGVhdCBAWyVhQF1cIiBwcmludF9hc3RfYm9vbF9leHByIHIpKVxuICAgIHJlcFxuXG5sZXQgcHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALEAsJWFALCVhQCxALCVhQCxALCVhQCwlYUAsQCwlYUAsQCwlYUBdQC5cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X2NvbmZpZ3VyYXRpb24pXG4gICAgYy5jb25maWd1cmF0aW9uc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBhIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJWFnZW50OkAgQFslYUBdQF1cIiBwcmludF9hc3RfYWdlbnQgYSkpXG4gICAgYy5zaWduYXR1cmVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBzKSlcbiAgICBjLnRva2Vuc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoKHMsIF8pLCAoYSwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXZhcjogJyVzJ0AgQFslYUBdQF1cIiBzIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLnZhcmlhYmxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoYSwgXykgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlcGxvdDpAIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIGEpKVxuICAgIGMub2JzZXJ2YWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHMsIChyLCBfKSkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW0BbJWElYUBdQF1cIlxuICAgICAgICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiAocywgXykgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ0AgXCIgcykpXG4gICAgICAgICAgIHMgcHJpbnRfYXN0X3J1bGUgcikpXG4gICAgYy5ydWxlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X3BlcnR1cmJhdGlvbilcbiAgICBjLnBlcnR1cmJhdGlvbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9pbml0KVxuICAgIGMuaW5pdFxuXG5sZXQgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcImxoc1wiLCBmX21peCByLmxocztcbiAgICAgICggXCJybV90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5ybV90b2tlbiApO1xuICAgICAgXCJyaHNcIiwgZl9taXggci5yaHM7XG4gICAgICAoIFwiYWRkX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmFkZF90b2tlbiApO1xuICAgIF1cblxubGV0IGFycm93X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDQgLT5cbiAgICB7XG4gICAgICBsaHMgPSBmX21peCAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibGhzXCIgeCk7XG4gICAgICBybV90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJybV90b2tlblwiIHgpO1xuICAgICAgcmhzID0gZl9taXggKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJoc1wiIHgpO1xuICAgICAgYWRkX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFkZF90b2tlblwiIHgpO1xuICAgIH1cbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSlcblxubGV0IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJtaXhcIiwgbWl4X3RvX2pzb24gci5taXg7XG4gICAgICAoIFwiZGVsdGFfdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gSnNvblV0aWwub2Zfc3RyaW5nKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICByLmRlbHRhX3Rva2VuICk7XG4gICAgXVxuXG5sZXQgZWRpdF9ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIHIgPVxuICBsZXQgbWl4X29mX2pzb24gPVxuICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCAzIC0+XG4gICAge1xuICAgICAgbWl4ID0gbWl4X29mX2pzb24gKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm1peFwiIHgpO1xuICAgICAgZGVsdGFfdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSkpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZGVsdGFfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIGVkaXRfbm90YXRpb25cIiwgeCkpXG5cbmxldCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgZWRpdF9ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIHIgXVxuICB8IEFycm93IHIgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyBhcnJvd19ub3RhdGlvbl90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgXVxuXG5sZXQgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcImVkaXRcIjsgciBdIC0+IEVkaXQgKGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcImFycm93XCI7IHIgXSAtPlxuICAgIEFycm93IChhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGUgY29udGVudFwiLCB4KSlcblxubGV0IHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJyZXdyaXRlXCIsIHJ1bGVfY29udGVudF90b195b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIucmV3cml0ZTtcbiAgICAgIFwiYmlkaXJlY3Rpb25hbFwiLCBgQm9vbCByLmJpZGlyZWN0aW9uYWw7XG4gICAgICAoIFwia19kZWZcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICByLmtfZGVmICk7XG4gICAgICAoIFwia191blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX3VuICk7XG4gICAgICAoIFwia19vcFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgci5rX29wICk7XG4gICAgICAoIFwia19vcF91blwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgci5rX29wX3VuICk7XG4gICAgXVxuXG5sZXQgcnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPD0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByZXdyaXRlID1cbiAgICAgICAgICAgcnVsZV9jb250ZW50X29mX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXJcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicmV3cml0ZVwiIHgpO1xuICAgICAgICAgYmlkaXJlY3Rpb25hbCA9XG4gICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2xcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYmlkaXJlY3Rpb25hbFwiIHgpO1xuICAgICAgICAga19kZWYgPVxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJrX2RlZlwiIHgpO1xuICAgICAgICAga191biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia191blwiIHgpO1xuICAgICAgICAga19vcCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcFwiIHgpO1xuICAgICAgICAga19vcF91biA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpKSlcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19vcF91blwiIHgpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUIHJ1bGVcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKVxuXG5sZXQgbW9kaWZfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEFQUExZIChhbGcsIHIpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkFQUExZXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAocnVsZV90b19qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcikgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKGlkLCBhbGcpIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlVQREFURVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX3ZhciBpZDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGc7XG4gICAgICBdXG4gIHwgU1RPUCBsIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nIFwiU1RPUFwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFNOQVBTSE9UIChyYXcsIGwpIC0+XG4gICAgYExpc3RcbiAgICAgIChgU3RyaW5nXG4gICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgIFwiUkFXX1NOQVBTSE9UXCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBcIlNOQVBTSE9UXCIpXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IFBSSU5UIChmaWxlLCBleHByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJQUklOVFwiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBleHByO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgU3RyaW5nIFwiUExPVEVOVFJZXCJcbiAgfCBDRkxPV0xBQkVMIChiLCBpZCkgLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcyBpZCBdXG4gIHwgQ0ZMT1dNSVggKGIsIG0pIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dcIjsgYEJvb2wgYjsgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbSBdXG4gIHwgRElOIChiLCBmaWxlKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZF90b195b2pzb24gYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgIF1cbiAgfCBESU5PRkYgZmlsZSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIkRJTk9GRlwiXG4gICAgICA6OiBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlXG4gICAgICApXG4gIHwgU1BFQ0lFU19PRiAoYiwgbCwgbSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiO1xuICAgICAgICBgQm9vbCBiO1xuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBsO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBmX21peCBtO1xuICAgICAgXVxuXG5sZXQgbW9kaWZfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFQUExZXCI7IGFsZzsgbWl4IF0gLT5cbiAgICBBUFBMWVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBtaXggKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlVQREFURVwiOyBpZDsgYWxnIF0gLT5cbiAgICBVUERBVEVcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIgaWQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlNUT1BcIiA6OiBsKSAtPlxuICAgIFNUT1AgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICggZmFsc2UsXG4gICAgICAgIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiUkFXX1NOQVBTSE9UXCIgOjogbCkgLT5cbiAgICBTTkFQU0hPVFxuICAgICAgKHRydWUsIExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGwpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUFJJTlRcIjsgZmlsZTsgZXhwciBdIC0+XG4gICAgUFJJTlRcbiAgICAgICggSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwciApXG4gIHwgYFN0cmluZyBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XTEFCRUxcIjsgYEJvb2wgYjsgaWQgXSAtPlxuICAgIENGTE9XTEFCRUwgKGIsIHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzIGlkKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IG0gXSAtPlxuICAgIENGTE9XTUlYIChiLCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkRJTlwiOyBiOyBmaWxlIF0gLT5cbiAgICBESU5cbiAgICAgICggUHJpbWl0aXZlcy5kaW5fa2luZF9vZl95b2pzb24gYixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZSApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJESU5PRkZcIiA6OiBmaWxlKSAtPlxuICAgIERJTk9GRlxuICAgICAgKExpc3QubWFwIChQcmltaXRpdmVzLnByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpIGZpbGUpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1BFQ0lFU19PRlwiOyBgQm9vbCBiOyBmaWxlOyBtIF0gLT5cbiAgICBTUEVDSUVTX09GXG4gICAgICAoIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IG0gKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbmxldCBtZXJnZV9pbnRlcm5hbF9tb2QgYWNjID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgKHgsIHBvcykgLT5cbiAgICBsZXQgeF9vcCA9IFNvbWUgeCBpblxuICAgIGlmIExpc3QuZXhpc3RzIChmdW4gKHgnLCBfKSAtPiB4X29wID0geCcpIGFjYyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlXG4gICAgICAoeF9vcCwgcG9zKSA6OiBhY2NcblxubGV0IG1lcmdlX2ludGVybmFscyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoeCwgXykgYXMgeSkgLT5cbiAgICAgIGlmXG4gICAgICAgIHggPSBOb25lXG4gICAgICAgIHx8IExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgKGZ1biAoeCcsIF8pIC0+XG4gICAgICAgICAgICAgICBPcHRpb25fdXRpbC5lcXVhbCAoZnVuIHggeCcgLT4gU3RyaW5nLmNvbXBhcmUgeCB4JyA9IDApIHggeCcpXG4gICAgICAgICAgICAgYWNjXG4gICAgICB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICB5IDo6IGFjYylcblxubGV0IHJlYyBtZXJnZV9zaXRlc19jb3VudGVyIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgQ291bnRlciBjIF1cbiAgfCBDb3VudGVyIGMnIDo6IF8gYXMgbCB3aGVuIGZzdCBjLmNvdW50ZXJfbmFtZSA9IGZzdCBjJy5jb3VudGVyX25hbWUgLT4gbFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfY291bnRlciBjIHRcblxubGV0IHJlYyBtZXJnZV9zaXRlc19wb3J0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IFsgUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9IF1cbiAgfCBQb3J0IGggOjogdCB3aGVuIGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBoLnBvcnRfbmFtZSAtPlxuICAgIFBvcnRcbiAgICAgIHtcbiAgICAgICAgaCB3aXRoXG4gICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICBtZXJnZV9pbnRlcm5hbF9tb2RcbiAgICAgICAgICAgIChtZXJnZV9pbnRlcm5hbHMgaC5wb3J0X2ludCBwLnBvcnRfaW50KVxuICAgICAgICAgICAgcC5wb3J0X2ludF9tb2Q7XG4gICAgICB9XG4gICAgOjogdFxuICB8ICgoUG9ydCBfIHwgQ291bnRlciBfKSBhcyBoKSA6OiB0IC0+IGggOjogbWVyZ2Vfc2l0ZXNfcG9ydCBwIHRcblxubGV0IG1lcmdlX3NpdGVzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICB8IFBvcnQgcCAtPiBtZXJnZV9zaXRlc19wb3J0IHAgYWNjXG4gICAgfCBDb3VudGVyIGMgLT4gbWVyZ2Vfc2l0ZXNfY291bnRlciBjIGFjYylcblxubGV0IG1lcmdlX2FnZW50cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IFByZXNlbnQgKCgobmEsIF8pIGFzIHgpLCBzLCBfKSAtPlxuICAgICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgUHJlc2VudFxuICAgICAgICAgICAgICAgICAoIHgsXG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPiBQb3J0IHsgcCB3aXRoIHBvcnRfbGluayA9IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIF8gYXMgeCAtPiB4KVxuICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICBOb01vZCApO1xuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgfCBQcmVzZW50ICgobmEnLCBfKSwgcycsIF8pIDo6IHQgd2hlbiBTdHJpbmcuY29tcGFyZSBuYSBuYScgPSAwIC0+XG4gICAgICAgICAgICAgUHJlc2VudCAoeCwgbWVyZ2Vfc2l0ZXMgcycgcywgTm9Nb2QpIDo6IHRcbiAgICAgICAgICAgfCAoKFByZXNlbnQgXyB8IEFic2VudCBfKSBhcyBoKSA6OiB0IC0+IGggOjogYXV4IHRcbiAgICAgICAgIGluXG4gICAgICAgICBhdXggYWNjKSlcblxubGV0IG1lcmdlX3Rva2VucyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChfLCAoKG5hLCBfKSBhcyB0b2spKSAtPlxuICAgICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFsgdG9rIF1cbiAgICAgICAgfCAobmEnLCBfKSA6OiBfIGFzIGwgd2hlbiBTdHJpbmcuY29tcGFyZSBuYSBuYScgPSAwIC0+IGxcbiAgICAgICAgfCBoIDo6IHQgYXMgbCAtPlxuICAgICAgICAgIGxldCBvID0gYXV4IHQgaW5cbiAgICAgICAgICBpZiB0ID09IG8gdGhlblxuICAgICAgICAgICAgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGggOjogb1xuICAgICAgaW5cbiAgICAgIGF1eCBhY2MpXG5cbmxldCBzaWdfZnJvbV9pbml0cyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gKGFncywgdG9rcykgLT4gZnVuY3Rpb25cbiAgICB8IF8sIElOSVRfTUlYIChtLCBfKSAtPiBtZXJnZV9hZ2VudHMgYWdzIG0sIHRva3NcbiAgICB8IG5hLCBJTklUX1RPSyBsIC0+IGFncywgbWVyZ2VfdG9rZW5zIHRva3MgKExpc3QubWFwIChmdW4geCAtPiBuYSwgeCkgbCkpXG5cbmxldCBzaWdfZnJvbV9ydWxlIChhZ3MsIHRva3MpIHIgPVxuICBtYXRjaCByLnJld3JpdGUgd2l0aFxuICB8IEVkaXQgZSAtPiBtZXJnZV9hZ2VudHMgYWdzIGUubWl4LCBtZXJnZV90b2tlbnMgdG9rcyBlLmRlbHRhX3Rva2VuXG4gIHwgQXJyb3cgYSAtPlxuICAgIGxldCBhZ3MnLCB0b2tzJyA9XG4gICAgICBpZiByLmJpZGlyZWN0aW9uYWwgdGhlblxuICAgICAgICBtZXJnZV9hZ2VudHMgYWdzIGEucmhzLCBtZXJnZV90b2tlbnMgdG9rcyBhLmFkZF90b2tlblxuICAgICAgZWxzZVxuICAgICAgICBhZ3MsIHRva3NcbiAgICBpblxuICAgIG1lcmdlX2FnZW50cyBhZ3MnIGEubGhzLCBtZXJnZV90b2tlbnMgdG9rcycgYS5ybV90b2tlblxuXG5sZXQgc2lnX2Zyb21fcnVsZXMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHAgKF8sIChyLCBfKSkgLT4gc2lnX2Zyb21fcnVsZSBwIHIpXG5cbmxldCBzaWdfZnJvbV9wZXJ0cyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjICgoXywgXywgcCwgXyksIF8pIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHAgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IEFQUExZIChfLCAociwgXykpIC0+IHNpZ19mcm9tX3J1bGUgcCByXG4gICAgICAgICAgfCBVUERBVEUgXyB8IFNUT1AgXyB8IFNOQVBTSE9UIF8gfCBQUklOVCBfIHwgUExPVEVOVFJZIHwgQ0ZMT1dMQUJFTCBfXG4gICAgICAgICAgfCBDRkxPV01JWCBfIHwgRElOIF8gfCBESU5PRkYgXyB8IFNQRUNJRVNfT0YgXyAtPlxuICAgICAgICAgICAgcClcbiAgICAgICAgYWNjIHApXG5cbmxldCBpbmZlcl9hZ2VudF9zaWduYXR1cmVzIHIgPVxuICBsZXQgYWNjID0gc2lnX2Zyb21faW5pdHMgKHIuc2lnbmF0dXJlcywgci50b2tlbnMpIHIuaW5pdCBpblxuICBsZXQgYWNjJyA9IHNpZ19mcm9tX3J1bGVzIGFjYyByLnJ1bGVzIGluXG4gIGxldCBhZ3MsIHRva3MgPSBzaWdfZnJvbV9wZXJ0cyBhY2MnIHIucGVydHVyYmF0aW9ucyBpblxuICB7IHIgd2l0aCBzaWduYXR1cmVzID0gYWdzOyB0b2tlbnMgPSB0b2tzIH1cblxubGV0IHNwbGl0X21peHR1cmUgbSA9XG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4gbCAobGhzLCByaHMpIC0+XG4gICAgICBsZXQgbGwsIHJyID1cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAgKGZ1biBhZyAoKGxocywgcmhzKSBhcyBwYWNrKSAtPlxuICAgICAgICAgICAgbWF0Y2ggYWcgd2l0aFxuICAgICAgICAgICAgfCBBYnNlbnQgXyAtPiBwYWNrXG4gICAgICAgICAgICB8IFByZXNlbnQgKCgoXywgcG9zKSBhcyBuYSksIGludGYsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgICAgICAgICB8IENyZWF0ZSAtPiBBYnNlbnQgcG9zIDo6IGxocywgUHJlc2VudCAobmEsIGludGYsIE5vTW9kKSA6OiByaHNcbiAgICAgICAgICAgICAgfCBFcmFzZSAtPiBQcmVzZW50IChuYSwgaW50ZiwgTm9Nb2QpIDo6IGxocywgQWJzZW50IHBvcyA6OiByaHNcbiAgICAgICAgICAgICAgfCBOb01vZCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbnRmbCwgaW50ZnIgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcikgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBQb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lID0gcC5wb3J0X25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludCA9IHAucG9ydF9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludF9tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rID0gcC5wb3J0X2xpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmtfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwLnBvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9pbnRfbW9kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHAucG9ydF9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lICh4LCBwb3MpIC0+IFsgU29tZSB4LCBwb3MgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2ludF9tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9saW5rID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHAucG9ydF9saW5rX21vZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBwLnBvcnRfbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChTb21lIChpLCBwb3MpKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmtfbW9kID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHIgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGMgd2l0aCBjb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gTm9uZSB9IDo6IHIgKSlcbiAgICAgICAgICAgICAgICAgICAgKFtdLCBbXSkgaW50ZlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBQcmVzZW50IChuYSwgaW50ZmwsIE5vTW9kKSA6OiBsaHMsXG4gICAgICAgICAgICAgICAgICBQcmVzZW50IChuYSwgaW50ZnIsIE5vTW9kKSA6OiByaHMgKSkpXG4gICAgICAgICAgbCAoW10sIFtdKVxuICAgICAgaW5cbiAgICAgIGxsIDo6IGxocywgcnIgOjogcmhzKVxuICAgIG0gKFtdLCBbXSlcblxubGV0IGNvbXBpbF90b19qc29uIGMgPVxuICBsZXQgZmlsZXMgPVxuICAgIEFycmF5Lm9mX2xpc3QgKExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZSA6OiBjLmZpbGVuYW1lcylcbiAgaW5cbiAgbGV0IGZpbGVuYW1lcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hcCB4IC0+IE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgZmlsZXNcbiAgaW5cbiAgbGV0IG1peF90b19qc29uID1cbiAgICBKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9saXN0IChhZ2VudF90b19qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIGxldCB2YXJfdG9fanNvbiA9IEpzb25VdGlsLm9mX3N0cmluZyBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcImZpbGVuYW1lc1wiLCBKc29uVXRpbC5vZl9hcnJheSBKc29uVXRpbC5vZl9zdHJpbmcgZmlsZXM7XG4gICAgICBcInNpZ25hdHVyZXNcIiwgSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpIGMuc2lnbmF0dXJlcztcbiAgICAgIFwidG9rZW5zXCIsIEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykgYy50b2tlbnM7XG4gICAgICAoIFwidmFyaWFibGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnZhcmlhYmxlcyApO1xuICAgICAgKCBcInJ1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnJ1bGVzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLm9ic2VydmFibGVzICk7XG4gICAgICAoIFwiaW5pdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgKGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLmluaXQgKTtcbiAgICAgICggXCJwZXJ0dXJiYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGZ1biAoYWxhcm0sIHByZSwgbW9kaWYsIHBvc3QpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIE5ici50b195b2pzb24gYWxhcm07XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmU7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWY7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0O1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBjLnBlcnR1cmJhdGlvbnMgKTtcbiAgICAgICggXCJjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKSlcbiAgICAgICAgICBjLmNvbmZpZ3VyYXRpb25zICk7XG4gICAgXVxuXG5sZXQgY29tcGlsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gOSAtPlxuICAgIGxldCB2YXJfb2ZfanNvbiA9IEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IG1peF9vZl9qc29uID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGVuYW1lcyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgZmlsZW5hbWVzKTtcbiAgICAgICAgIHNpZ25hdHVyZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHNpZ25hdHVyZVwiKVxuICAgICAgICAgICAgIChhZ2VudF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInNpZ25hdHVyZXNcIiBsKTtcbiAgICAgICAgIHRva2VucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgdG9rZW4gc2lnXCIpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidG9rZW5zXCIgbCk7XG4gICAgICAgICB2YXJpYWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHZhcmlhYmxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJ2YXJpYWJsZXNcIiBsKTtcbiAgICAgICAgIHJ1bGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBydWxlc1wiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChydWxlX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJydWxlc1wiIGwpO1xuICAgICAgICAgb2JzZXJ2YWJsZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIG9ic2VydmFibGVzXCIpXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwib2JzZXJ2YWJsZXNcIiBsKTtcbiAgICAgICAgIGluaXQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIGluaXRcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAgICAoaW5pdF9vZl9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb24gdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiaW5pdFwiIGwpO1xuICAgICAgICAgcGVydHVyYmF0aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgcGVydHVyYmF0aW9uc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgYExpc3QgWyBhbGFybTsgcHJlOyBtb2RpZjsgcG9zdCBdIC0+XG4gICAgICAgICAgICAgICAgICggSnNvblV0aWwudG9fb3B0aW9uIE5ici5vZl95b2pzb24gYWxhcm0sXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWYsXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0IClcbiAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwZXJ0dXJiYXRpb25cIiwgeCkpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInBlcnR1cmJhdGlvbnNcIiBsKTtcbiAgICAgICAgIGNvbmZpZ3VyYXRpb25zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBjb25maWd1cmF0aW9uXCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJjb25maWd1cmF0aW9uc1wiIGwpO1xuICAgICAgICAgdm9sdW1lcyA9IFtdO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1RcIiwgeCkpXG5cbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCA9IFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGIgKGNvbXBpbF90b19qc29uIGFzdClcbmxldCByZWFkX3BhcnNpbmdfY29tcGlsIHAgbGIgPSBjb21waWxfb2ZfanNvbiAoWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB3aXRoX2FnZW50X2NvdW50ZXJzID0ge1xuICBhZ2VudDogJ2E7XG4gIGNvdW50ZXJzOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXk7XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycyBsaXN0XG5cbigqKiBbY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCBsczEgbHMyXVxuICogRWFjaCBlbGVtZW50IG9mIFtsczFdIGRlc2NyaWJlcyBhIHNldHVwIG9mIGNvdW50ZXIgdmFyaWFibGVzLCB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSB0dXBsZSBiZWluZyB0aGUgbGlzdCBvZiBlbnRpdGllcyB0byBiZSB1c2VkIGluIHRoZSBtb2RlbCwgd2hlcmUgdmFyaWFibGVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gY291bnRlcnMsIGFuZCB0aGUgc2Vjb25kIG9uZSB0aGUgbWFwcGluZyBvZiB2YXJpYWJsZXMgdG8gdGhlaXIgdmFsdWVzLCB0aGF0IGFsbG93cyB0byBrbm93IHdoaWNoIGluc3RhbmNlIG9mIG1vZGVsIGVudGl0aWVzIHdvdWxkIGJlIGNob3NlbiBpbiB0aGlzIGdpdmVuIHNldHVwLlxuICogW2xzMl0gYWRkcyBhIG5ldyBlbnRpdHkgd2l0aCBkaWZmZXJlbnQga2luZHMgYWNjb3JkaW5nIHRvIHRoZSB2YXJpYWJsZSB2YWx1ZXMgZ2l2ZW4gaW4gdGhlIGxpc3QgYXMgc2Vjb25kIG1lbWJlciBvZiB0aGUgdHVwbGUsIHdoaWNoIGlzIHRoZW4gY29tYmluZWQgaW4gdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBvdGhlciBzZXR1cHMsIGNvbWJpbmluZyB0aGUgZGlmZmVyZW50IHZhcmlhYmxlIHZhbHVlcyB3aGljaCB0aG9zZSBhbHJlYWR5IGRlZmluZWQuXG4gKiBObyBjaGVjayBpcyBkb25lIG9uIHRoZSB1bmljaXR5IG9mIHRoZSBkZXNjcmliZWQgdmFyaWFibGVzIGFuZCB0aGVpciB2YWx1ZXMgKilcbmxldCBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIChsczEgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QpXG4gICAgKGxzMiA6ICgnYSAqICdiIGxpc3QpIGxpc3QpIDogKCdhIGxpc3QgKiAnYiBsaXN0KSBsaXN0ID1cbiAgaWYgbHMxID0gW10gdGhlblxuICAgIHJhaXNlIEV4aXQgKCpMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoYiwgZHMpIC0+IChbIGIgXSwgZHMpIDo6IGFjYykgW10gbHMyKilcbiAgZWxzZVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoYSwgY3MpIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjJyAoYiwgZHMpIC0+IChiIDo6IGEsIGRzIEAgY3MpIDo6IGFjYycpIGFjYyBsczIpXG4gICAgICBbXSBsczFcblxubGV0IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyAoaywgYSkgPVxuICBsZXQgdXBkYXRlX2lkIHMgayA9XG4gICAgbGV0IGNvdW50ZXJzX21hdGNoaW5nX3MsIF8gPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biAocycsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMgcycgPSAwKSBjb3VudGVyX3Zhcl92YWx1ZXNcbiAgICBpblxuICAgIG1hdGNoIGNvdW50ZXJzX21hdGNoaW5nX3Mgd2l0aFxuICAgIHwgWyAoXywgeCkgXSAtPiBBbGdfZXhwci5DT05TVCAoTmJyLkkgeClcbiAgICB8IFtdIC0+IGtcbiAgICB8IF8gOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiQ291bnRlciB2YXJpYWJsZSBcIiBeIHMgXiBcIiBhcHBlYXJzIHR3aWNlIGluIHJ1bGVcIiwgTG9jLmR1bW15KSlcbiAgaW5cbiAgbGV0IHJlYyB1cGRhdGVfYm9vbF9leHByIGsgPVxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFIC0+IGtcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2Jvb2xfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIChrLCBhKSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrLCBhKSlcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICBhbmQgdXBkYXRlX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsICh1cGRhdGVfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIChrMSwgYTEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSkpXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBhMSksIChrMiwgYTIpLCAoazMsIGEzKSkgLT5cbiAgICAgIEFsZ19leHByLklGXG4gICAgICAgICgodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSwgKHVwZGF0ZV9leHByIGszLCBhMykpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOICgoazEsIGExKSwgazIpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOICgodXBkYXRlX2V4cHIgazEsIGExKSwgazIpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoaywgYSksIG0pIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgodXBkYXRlX2V4cHIgaywgYSksIG0pXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gdXBkYXRlX2lkIGlkIGtcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGtcbiAgaW5cbiAgdXBkYXRlX2V4cHIgaywgYVxuXG5sZXQgY29sbGVjdF9pZHMgZXhwcl9saXN0IDogTW9kcy5TdHJpbmdTZXQudCA9XG4gIGxldCByZWMgYXV4X2V4cHIgZXhwciBhY2MgPVxuICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT4gYXV4X2V4cHIgazIgKGF1eF9leHByIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgKGsxLCBfKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgXyksIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoazEsIF8pLCBfKSAtPlxuICAgICAgYXV4X2V4cHIgazEgYWNjXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBfKSwgKGsyLCBfKSwgKGszLCBfKSkgLT5cbiAgICAgIGF1eF9leHByIGszIChhdXhfZXhwciBrMiAoYXV4X2Jvb2wgazEgYWNjKSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhdXhfaWQgaWQgYWNjXG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgICBhY2NcbiAgYW5kIGF1eF9pZCBpZCBhY2MgPSBNb2RzLlN0cmluZ1NldC5hZGQgaWQgYWNjXG4gIGFuZCBhdXhfYm9vbCBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gYWNjXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT5cbiAgICAgIGF1eF9ib29sIGsyIChhdXhfYm9vbCBrMSBhY2MpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCAoaywgXykpIC0+IGF1eF9ib29sIGsgYWNjXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGV4cHJfb3B0IC0+XG4gICAgICBtYXRjaCBleHByX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGF1eF9leHByIGV4cHIgYWNjKVxuICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5IGV4cHJfbGlzdFxuXG5sZXQgbmFtZV9tYXRjaCAocywgXykgKHMnLCBfKSA9IFN0cmluZy5jb21wYXJlIHMgcycgPSAwXG5cbmxldCBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgPVxuICBsZXQgcmVjIHByZXBhcmVfc2l0ZSBzaXRlcyBjID1cbiAgICBtYXRjaCBzaXRlcyB3aXRoXG4gICAgfCBbXSAtPiBbIEFzdC5Db3VudGVyIGMgXVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBoZCB3aXRoXG4gICAgICB8IEFzdC5Db3VudGVyIGMnIHdoZW4gbmFtZV9tYXRjaCBjLkFzdC5jb3VudGVyX25hbWUgYycuQXN0LmNvdW50ZXJfbmFtZSAtPlxuICAgICAgICBBc3QuQ291bnRlciB7IGMnIHdpdGggQXN0LmNvdW50ZXJfZGVsdGEgPSBjLkFzdC5jb3VudGVyX2RlbHRhIH0gOjogdGxcbiAgICAgIHwgQXN0LkNvdW50ZXIgXyB8IEFzdC5Qb3J0IF8gLT4gaGQgOjogcHJlcGFyZV9zaXRlIHRsIGMpXG4gIGluXG4gIGxldCBjb3VudGVycyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjJyByc2l0ZSAtPlxuICAgICAgICBtYXRjaCByc2l0ZSB3aXRoXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjYycpXG4gICAgICBbXSByc2l0ZXNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgcHJlcGFyZV9zaXRlIGxzaXRlcyBjb3VudGVyc1xuXG4oKiAtIGFkZCBpbiB0aGUgbGhzIDogKGkpIGNvdW50ZXJzIG9ubHkgbWVudGlvbmVkIGluIHRoZSByaHMgYW5kIChpaSkgdGhlIGRlbHRhc1xuICAgLSBzeW50YWN0aWMgY2hlY2tzIG9mIG5vIHRlc3QgaW4gcmhzOyBubyBtb2RpZiBpbiBsaHMgKilcbmxldCBwcmVwYXJlX2NvdW50ZXJzIHJ1bGVzID1cbiAgbGV0IGNoZWNrX3N5bnRheCBzaXRlcyBmIGVycm9yID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gKClcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgaWYgZiBjIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9uYW1lIF4gZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX25hbWUgKSkpXG4gICAgICBzaXRlc1xuICBpblxuXG4gIGxldCByZWMgcHJlcGFyZV9saHNfcnVsZSByaHMgbGhzID1cbiAgICBtYXRjaCByaHMsIGxocyB3aXRoXG4gICAgfCBBc3QuUHJlc2VudCAocm5hLCByc2l0ZXMsIF8pIDo6IHIsIEFzdC5QcmVzZW50IChsbmEsIGxzaXRlcywgYikgOjogbCAtPlxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLmNvdW50ZXJfZGVsdGEgPSAwKSlcbiAgICAgICAgXCIgaGFzIGEgbW9kaWYgaW4gdGhlIGxoc1wiO1xuICAgICAgY2hlY2tfc3ludGF4IHJzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChjLmNvdW50ZXJfdGVzdCA9IE5vbmUpKVxuICAgICAgICBcIiBoYXMgYSB0ZXN0IGluIHRoZSByaHNcIjtcbiAgICAgIGlmIFN0cmluZy5jb21wYXJlIChMb2MudiBybmEpIChMb2MudiBsbmEpID0gMCB0aGVuIChcbiAgICAgICAgbGV0IGxzaXRlcycgPSBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgaW5cbiAgICAgICAgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzJywgYikgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICAgICkgZWxzZVxuICAgICAgICBsaHNcbiAgICAgICgqVE9ETyB3ZSBzdG9wIG91ciBqb2IgaGVyZS4gTEthcHBhX2NvbXBpbGVyIHdpbGwgZGV0ZWN0XG4gICAgICAgIGxhdGVyIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtICopXG4gICAgfCBfIDo6IHIsIChBc3QuQWJzZW50IF8gYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmNyZWF0ZWQgYWdlbnQqKVxuICAgICAgKCogVE9ETyBNYXliZSBzb21lIHN5bnRheCBjaGVjayBvbiByaHMgYXJlIG5lY2Vzc2FyeSBoZXJlICopXG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiByLCAoQXN0LlByZXNlbnQgKF8sIGxzaXRlcywgXykgYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmRlbGV0ZWQgIGFnZW50KilcbiAgICAgIGNoZWNrX3N5bnRheCBsc2l0ZXNcbiAgICAgICAgKGZ1biBjIC0+IG5vdCAoTG9jLnYgYy5Bc3QuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IFtdLCB4IC0+XG4gICAgICB4XG4gICAgICAoKiBUT0RPIHggbXVzdCBiZSBbXSBidXQgaXQgaXMgZm9yIG5vdyBMS2FwcGFfY29tcGlsZXJcbiAgICAgICAgIGR1dHkgdG8gY29tcGxhaW4gKilcbiAgICB8IF94LCBbXSAtPiAoKlRPRE8gbGV0ICgpID0gYXNzZXJ0IChfeCA9IFtdKSBpbiopIFtdXG4gIGluXG5cbiAgbGV0IGF1eCAocnVsZSA6IEFzdC5ydWxlKSA6IEFzdC5ydWxlID1cbiAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgIHwgQXN0LkVkaXQgXyAtPiBydWxlXG4gICAgfCBBc3QuQXJyb3cgY29udGVudCAtPlxuICAgICAge1xuICAgICAgICBydWxlIHdpdGhcbiAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgQXN0LkFycm93XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICBBc3QubGhzID1cbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBwcmVwYXJlX2xoc19ydWxlIChMaXN0LmZsYXR0ZW4gY29udGVudC5yaHMpXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZsYXR0ZW4gY29udGVudC5saHMpO1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9O1xuICAgICAgfVxuICBpblxuICBMaXN0Lm1hcCAoZnVuIChzLCAociwgYSkpIC0+IHMsIChhdXggciwgYSkpIHJ1bGVzXG5cbmxldCBjb3VudGVyc19zaWduYXR1cmUgcyBhZ2VudHMgPVxuICBtYXRjaFxuICAgIExpc3QuZmluZFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGZhbHNlXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKHMnLCBfLCBfKSAtPiBuYW1lX21hdGNoIHMgcycpXG4gICAgICBhZ2VudHNcbiAgd2l0aFxuICB8IEFzdC5BYnNlbnQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMnLCBfKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBzIC0+XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gYyA6OiBhY2NcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYylcbiAgICAgIFtdIHNpdGVzJ1xuXG4oKiogW3NwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgdmFyX25hbWUgYW5ub3QgY291bnRlcl9kZWx0YSBjb3VudGVyX2RlZl0gdHJhbnNsYXRlcyBhIGNvdW50ZXIgQ1ZBUiB3aG9zZSB2YWx1ZSBhY3RzIHVwb24gdGhlIHJhdGUgZXhwcmVzc2lvbiBpbnRvIGEgcnVsZSBwZXIgcG9zc2libGUgdmFsdWUsIHRoYXQgYXJlIHNlbGVjdGVkIGJ5IGEgQ0VRwqBleHByZXNzaW9uLlxuICogKilcbmxldCBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlICh2YXJfbmFtZSA6IHN0cmluZykgKGFubm90IDogTG9jLnQpXG4gICAgKGNvdW50ZXJfZGVsdGEgOiBpbnQgTG9jLmFubm90ZWQpIChjb3VudGVyX2RlZiA6IEFzdC5jb3VudGVyKSA6XG4gICAgKEFzdC5zaXRlICogKHN0cmluZyAqIGludCkgbGlzdCkgbGlzdCA9XG4gIGxldCBtYXhfdmFsdWUgOiBpbnQgPSBMb2MudiBjb3VudGVyX2RlZi5jb3VudGVyX2RlbHRhIGluXG4gIGxldCBtaW5fdmFsdWUgOiBpbnQgPVxuICAgIG1hdGNoIGNvdW50ZXJfZGVmLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgfCBOb25lIHwgU29tZSAoQXN0LkNHVEUgXywgXykgfCBTb21lIChBc3QuQ0xURSBfLCBfKSB8IFNvbWUgKEFzdC5DVkFSIF8sIF8pXG4gICAgICAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKCBcIkludmFsaWQgY291bnRlciBzaWduYXR1cmUgLSBoYXZlIHRvIHNwZWNpZnkgbWluIGJvdW5kXCIsXG4gICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyX2RlZi5jb3VudGVyX25hbWUgKSlcbiAgICB8IFNvbWUgKEFzdC5DRVEgbWluX3ZhbHVlLCBfKSAtPiBtaW5fdmFsdWVcbiAgaW5cblxuICAoKiBNYWtlIENFUSBjb3VudGVycyB3aXRoIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgdmFyaWFibGUgKilcbiAgbGV0IHJlYyBtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWx1ZXMgKHZhbHVlIDogaW50KSA6XG4gICAgICAoQXN0LnNpdGUgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID1cbiAgICBpZiB2YWx1ZSA+IG1heF92YWx1ZSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2UgaWZcbiAgICAgIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA8PSBtYXhfdmFsdWVcbiAgICAgICYmIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA+PSAwXG4gICAgdGhlblxuICAgICAgKCBBc3QuQ291bnRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX2RlZi5jb3VudGVyX25hbWU7XG4gICAgICAgICAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChBc3QuQ0VRIHZhbHVlLCBhbm5vdCk7XG4gICAgICAgICAgICBjb3VudGVyX2RlbHRhO1xuICAgICAgICAgIH0sXG4gICAgICAgIFsgdmFyX25hbWUsIHZhbHVlIF0gKVxuICAgICAgOjogbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gICAgZWxzZVxuICAgICAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gIGluXG4gIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyBtaW5fdmFsdWVcblxubGV0IGhhc19jb3VudGVycyBjb21waWwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW5jdGlvblxuICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IHRydWVcbiAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBmYWxzZSlcbiAgICAgICAgICBzaXRlcylcbiAgICBjb21waWwuQXN0LnNpZ25hdHVyZXNcblxuKCoqIFtzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzXSB+d2FybmluZyBydWxlcyBzaWduYXR1cmVzXSByZXBsYWNlcyBjb3VudGVycyB3aXRoIENWQVIgY29udHJhaW50cyB3aXRoIGNvdW50ZXJzIHdpdGggQ0VRIGNvbnRyYWludHMgaW4gW3J1bGVzXSwgaW4gbGlzdHMgd2l0aCB0aGUgdmFyaWFibGUgdmFsdWVzIGFzc29jaWF0ZWQsIHNvIHRoYXQgaW4gc2ltdWxhdGlvbiwgY29ycmVjdCBjb3VudGVyIGNvbmRpdGlvbnMgYXJlIGJlaW5nIHNlbGVjdGVkLiBUaGUgbWFpbiBvcGVyYXRpb24gaGFwcGVucyBpbiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZV0gKilcbmxldCBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXMgPVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzID0gZnVuY3Rpb25cbiAgICB8IEFzdC5Qb3J0IHAgLT4gWyBBc3QuUG9ydCBwLCBbXSBdXG4gICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICBsZXQgZGVsdGEgPSBMb2MudiBjLmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgIChtYXRjaCBjLmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICB8IFNvbWUgKEFzdC5DRVEgdmFsdWUsIF8pIC0+XG4gICAgICAgIGlmIGRlbHRhID4gMCB8fCBhYnMgZGVsdGEgPD0gdmFsdWUgdGhlblxuICAgICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCIgYmVjb21lcyBuZWdhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpXG4gICAgICB8IFNvbWUgKEFzdC5DTFRFIF92YWx1ZSwgX2Fubm90KSAtPlxuICAgICAgICBmYWlsd2l0aCBcIm5vdCBpbXBsZW1lbnRlZFwiICgqIFRPRE/CoE5PVyAqKVxuICAgICAgfCBTb21lIChBc3QuQ0dURSB2YWx1ZSwgYW5ub3QpIC0+XG4gICAgICAgIGlmIHZhbHVlICsgZGVsdGEgPCAwIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIiBiZWNvbWVzIG5lZ2F0aXZlXCIsXG4gICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgYy5jb3VudGVyX25hbWUgKSk7XG4gICAgICAgIGlmIHZhbHVlID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IgPSBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiOj4wIGFsd2F5cyBob2xkc1wiIGluXG4gICAgICAgICAgd2FybmluZyB+cG9zOmFubm90IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgZXJyb3IpXG4gICAgICAgICk7XG4gICAgICAgIFsgQXN0LkNvdW50ZXIgYywgW10gXVxuICAgICAgfCBTb21lIChBc3QuQ1ZBUiB2YXJfbmFtZSwgYW5ub3QpIHdoZW4gTW9kcy5TdHJpbmdTZXQubWVtIHZhcl9uYW1lIGlkcyAtPlxuICAgICAgICAoKiBJZiB0aGUgdmFyaWFibGUgaXMgcHJlc2VudCBpbiBhbiByYXRlIGRlZmluaXRpb24gZXhwcmVzc2lvbiAqKVxuICAgICAgICBsZXQgY291bnRlcl9kZWYgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAoZnVuIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgbmFtZV9tYXRjaCBjLkFzdC5jb3VudGVyX25hbWUgY291bnRlci5Bc3QuY291bnRlcl9uYW1lKVxuICAgICAgICAgICAgY291bnRlcl9kZWZzXG4gICAgICAgIGluXG5cbiAgICAgICAgc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjLmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICBjb3VudGVyX2RlZlxuICAgICAgfCBOb25lIHwgU29tZSAoQXN0LkNWQVIgXywgXykgLT5cbiAgICAgICAgaWYgZGVsdGEgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBjb3VudGVyX2RlbHRhIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgKGFicyBkZWx0YSksIExvYy5kdW1teSkgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjb3VudGVyX2RlbHRhLCBbXSBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgICggQXN0LkNvdW50ZXIgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgMCwgTG9jLmR1bW15KSB9LFxuICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgIF0pXG4gIGluXG5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyAoaWRzIDogTW9kcy5TdHJpbmdTZXQudClcbiAgICAgIChjb3VudGVyX2RlZnMgOiBBc3QuY291bnRlciBsaXN0KSA6XG4gICAgICBBc3Quc2l0ZSBsaXN0IC0+IChBc3Quc2l0ZSBsaXN0ICogKHN0cmluZyAqIGludCkgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbW10sW11dXG4gICAgfCBzIDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgdClcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGUgaWRzIGNvdW50ZXJfZGVmcyBzKVxuICBpblxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgKGlkcyA6IE1vZHMuU3RyaW5nU2V0LnQpIDpcbiAgICAgIEFzdC5hZ2VudCAtPiAoQXN0LmFnZW50ICogKHN0cmluZyAqIGludCkgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBBc3QuQWJzZW50IGwgLT4gWyBBc3QuQWJzZW50IGwsIFtdIF1cbiAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICBsZXQgY291bnRlcl9kZWZzID0gY291bnRlcnNfc2lnbmF0dXJlIGFnZW50X25hbWUgc2lnbmF0dXJlcyBpblxuICAgICAgbGV0IHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlcyA9XG4gICAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzaXRlcycsIHZhcl92YWx1ZXMpIC0+XG4gICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzJywgbW9kaWYpLCB2YXJfdmFsdWVzKVxuICAgICAgICBzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZXNcbiAgaW5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KSA6XG4gICAgICBBc3QuYWdlbnQgbGlzdCAtPiAoQXN0LmFnZW50IGxpc3QgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtbXSxbXV1cbiAgICB8IGFzdF9hZ2VudCA6OiB0IC0+XG4gICAgICBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIGlkcyB0KVxuICAgICAgICAoc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfYWdlbnQgaWRzIGFzdF9hZ2VudClcbiAgaW5cblxuICBsZXQgdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgciAtPiBTb21lICh1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcilcbiAgaW5cbiAgbGV0IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAocjEsIHIyKSAtPlxuICAgICAgU29tZVxuICAgICAgICAoIHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByMSxcbiAgICAgICAgICB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIyIClcbiAgaW5cblxuICAoKiBUT0RPIFtzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9ydWxlXSBydWxlIGV2YWx1ZXMgdG8gYSBsaXN0IG9mIHJ1bGVzIHdpdGggdGhlaXIgbmFtZXMgKilcbiAgbGV0IHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGVcbiAgICAgIChydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgICAgKChydWxlLCBhbm5vdCkgOiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgOlxuICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgbGlzdCA9XG4gICAgbGV0IG1peF9saHMgPVxuICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgY29udGVudCAtPiBjb250ZW50Lm1peFxuICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBjb250ZW50Lmxoc1xuICAgIGluXG5cbiAgICAoKiBGZXRjaCBpZHMgZnJvbSBydWxlIHJhdGVzICopXG4gICAgbGV0IGV4cHJzX2Zyb21fcmF0ZXMgOlxuICAgICAgICAoQXN0Lm1peHR1cmUsIHN0cmluZykgS2FwcGFfdGVybXMuQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCBvcHRpb24gbGlzdCA9XG4gICAgICBbIFNvbWUgcnVsZS5rX2RlZjsgcnVsZS5rX29wIF1cbiAgICAgIEAgKG1hdGNoIHJ1bGUua191biB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgcl9rdW5fcmF0ZXMgLT4gWyBTb21lIChmc3Qgcl9rdW5fcmF0ZXMpOyBzbmQgcl9rdW5fcmF0ZXMgXSlcbiAgICAgIEBcbiAgICAgIG1hdGNoIHJ1bGUua19vcF91biB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSByX2tfb3BfdW5fcmF0ZXMgLT5cbiAgICAgICAgWyBTb21lIChmc3Qgcl9rX29wX3VuX3JhdGVzKTsgc25kIHJfa19vcF91bl9yYXRlcyBdXG4gICAgaW5cbiAgICBsZXQgaWRzID0gY29sbGVjdF9pZHMgZXhwcnNfZnJvbV9yYXRlcyBpblxuXG4gICAgbGV0IG1peHR1cmVfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWUgOlxuICAgICAgICAoQXN0LmFnZW50IGxpc3QgKiAoc3RyaW5nICogaW50KSBsaXN0KSBsaXN0ID1cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIChMaXN0LmZsYXR0ZW4gbWl4X2xocylcbiAgICBpblxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChsaHMsIGNvdW50ZXJfdmFyX3ZhbHVlcykgLT5cbiAgICAgICAgKCogQXBwbHkgY291bnRlciB2YXIgdmFsdWVzIHRvIHJhdGVzICopXG4gICAgICAgIGxldCBrX2RlZiA9IHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfZGVmIGluXG4gICAgICAgIGxldCBrX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX3VuIGluXG4gICAgICAgIGxldCBrX29wID0gdXBkYXRlX29wdF9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3AgaW5cbiAgICAgICAgbGV0IGtfb3BfdW4gPSB1cGRhdGVfcGFpcl9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyBydWxlLmtfb3BfdW4gaW5cbiAgICAgICAgbGV0IGxocyA9IFsgbGhzIF0gaW5cbiAgICAgICAgbGV0IG5ld19ydWxlX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uID1cbiAgICAgICAgICBpZiBjb3VudGVyX3Zhcl92YWx1ZXMgPSBbXSB0aGVuXG4gICAgICAgICAgICBydWxlX25hbWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIEJ1aWxkIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIG5ldyBydWxlIG5hbWVzICopXG4gICAgICAgICAgICBsZXQgY291bnRlcnNfaWRzX2FzX3N0cmluZyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKCogVE9ETyBzaG91bGQgd2UgYWRkIGEgc2VwYXJhdG9yLiBtYXliZSBhbHNvIGFkZCBuYW1lIG9mIHZhcmlhYmxlPyAqKVxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgKF8sIGkpIC0+IHN0cmluZ19vZl9pbnQgaSBeIGFjYylcbiAgICAgICAgICAgICAgICBcIlwiIGNvdW50ZXJfdmFyX3ZhbHVlc1xuICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgbWF0Y2ggcnVsZV9uYW1lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lICgqIE5vIHJ1bGUgbmFtZSwgbmV3IHJ1bGVzIHdpbGwgaGF2ZSBubyBuYW1lIHRvbyAqKVxuICAgICAgICAgICAgfCBTb21lIChydWxlX25hbWVfc3RyaW5nLCBsb2NhbGl0eSkgLT5cbiAgICAgICAgICAgICAgKCogTWFrZSBhIG5ldyBuYW1lIGZvciBuZXcgcnVsZSBpbmNsdWRpbmcgY291bnRlcl92YXJfdmFsdWVzIGluZm8gKilcbiAgICAgICAgICAgICAgU29tZSAocnVsZV9uYW1lX3N0cmluZyBeIFwiX19cIiBeIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIGxvY2FsaXR5KVxuICAgICAgICAgIClcbiAgICAgICAgaW5cblxuICAgICAgICAoIG5ld19ydWxlX25hbWUsXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIEFzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgICAobWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gQXN0LkVkaXQgeyBjb250ZW50IHdpdGggQXN0Lm1peCA9IGxocyB9XG4gICAgICAgICAgICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBBc3QuQXJyb3cgeyBjb250ZW50IHdpdGggQXN0LmxocyB9KTtcbiAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgICAgICAga19kZWY7XG4gICAgICAgICAgICAgIGtfdW47XG4gICAgICAgICAgICAgIGtfb3A7XG4gICAgICAgICAgICAgIGtfb3BfdW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW5ub3QgKSApKVxuICAgICAgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZVxuICBpblxuXG4gIGxldCBydWxlcyA9IHByZXBhcmVfY291bnRlcnMgcnVsZXMgaW5cblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIChydWxlX25hbWUsIHJ1bGVfYW5ub3RlZCkgLT5cbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGUgcnVsZV9uYW1lIHJ1bGVfYW5ub3RlZClcbiBAIGFjYylcbiAgICBbXSBydWxlc1xuICAoKiBUT0RPOiBpcyByZXYgcmVsZXZhbnQgaGVyZT8gKilcbiAgfD4gTGlzdC5yZXZcblxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICAoY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBydWxlcyA9XG4gICAgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyBjb21waWwucnVsZXNcbiAgICAgIGNvbXBpbC5zaWduYXR1cmVzXG4gIGluXG4gICgqIERlYnVnIHByaW50aW5nICopXG4gIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIkAuYXN0IHJ1bGVzQC5cIjtcbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKHMsIChyLCBfKSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobCwgXykgLT4gbFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQC4lcyA9ICVhXCIgbGFiZWwgQXN0LnByaW50X2FzdF9ydWxlIHIpXG4gICAgICBydWxlc1xuICApO1xuICB7IGNvbXBpbCB3aXRoIEFzdC5ydWxlcyB9XG5cbmxldCBtYWtlX2NvdW50ZXJfYWdlbnQgc2lncyAoaXNfZmlyc3QsIChkc3QsIHJhX2VyYXNlZCkpIChpc19sYXN0LCBlcXVhbCkgaSBqXG4gICAgbG9jIChjcmVhdGVkIDogYm9vbCkgOiBMS2FwcGEucnVsZV9hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZCBpblxuXG4gIGxldCByYV9wb3J0cyA9XG4gICAgQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHlcbiAgICAgICgoTEthcHBhLkxOS19GUkVFLCBsb2MpLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGJlZm9yZV9zd2l0Y2ggPVxuICAgIGlmIGlzX2ZpcnN0ICYmIGNyZWF0ZWQgdGhlblxuICAgICAgTEthcHBhLkxpbmtlZCBpXG4gICAgZWxzZVxuICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgZHN0KSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaSwgKHJhX3R5cGUsIHBvcnRfYSkpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID0gcmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBiZWZvcmVfc3dpdGNoIGluXG4gIGxldCBhZnRlciA9XG4gICAgaWYgaXNfbGFzdCAmJiBlcXVhbCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0ZSRUUsIGxvY1xuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBMS2FwcGEuTE5LX0FOWSwgbG9jXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxOS19WQUxVRSAoaiwgKHJhX3R5cGUsIHBvcnRfYikpLCBsb2NcbiAgaW5cbiAgbGV0ICgpID0gcmFfcG9ydHMuKHBvcnRfYSkgPC0gYWZ0ZXIsIExLYXBwYS5NYWludGFpbmVkIGluXG4gIGxldCByYV9pbnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZTtcbiAgICByYV9lcmFzZWQ7XG4gICAgcmFfcG9ydHM7XG4gICAgcmFfaW50cztcbiAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHJhX3BvcnRzLCBBcnJheS5jb3B5IHJhX2ludHMpO1xuICB9XG5cbmxldCByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspIGkgaiBzaWdzIGVxdWFsXG4gICAgOiBSYXdfbWl4dHVyZS5hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcG9ydHMgPSBBcnJheS5tYWtlIGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSBSYXdfbWl4dHVyZS5GUkVFIGluXG4gIGxldCBpbnRlcm5hbHMgPVxuICAgIEFycmF5LmluaXQgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IChmdW4gaSAtPlxuICAgICAgICBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBjb3VudGVyX2FnZW50X2luZm8uaWQgaSBzaWdzKVxuICBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpc19maXJzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgZmlyc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBpXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgUmF3X21peHR1cmUuRlJFRVxuICAgIGVsc2UgaWYgaXNfbGFzdCB0aGVuXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgbGFzdF9saW5rXG4gICAgZWxzZVxuICAgICAgUmF3X21peHR1cmUuVkFMIGpcbiAgaW5cbiAgbGV0ICgpID0gcG9ydHMuKHBvcnRfYSkgPC0gYWZ0ZXIgaW5cbiAge1xuICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZDtcbiAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICB9XG5cbmxldCByZWMgYWRkX2luY3IgKGkgOiBpbnQpIChmaXJzdF9saW5rIDogaW50KSAobGFzdF9saW5rIDogaW50KSAoZGVsdGEgOiBpbnQpXG4gICAgKGVxdWFsIDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ID1cbiAgaWYgaSA9IGRlbHRhIHRoZW5cbiAgICBbXVxuICBlbHNlIChcbiAgICBsZXQgaXNfZmlyc3QgPSBpID0gMCBpblxuICAgIGxldCBpc19sYXN0ID0gaSA9IGRlbHRhIC0gMSBpblxuICAgIGxldCByYXdfaW5jciA9XG4gICAgICByYXdfY291bnRlcl9hZ2VudCAoaXNfZmlyc3QsIGZpcnN0X2xpbmspIChpc19sYXN0LCBsYXN0X2xpbmspXG4gICAgICAgIChmaXJzdF9saW5rICsgaSlcbiAgICAgICAgKGZpcnN0X2xpbmsgKyBpICsgMSlcbiAgICAgICAgc2lncyBlcXVhbFxuICAgIGluXG4gICAgcmF3X2luY3IgOjogYWRkX2luY3IgKGkgKyAxKSBmaXJzdF9saW5rIGxhc3RfbGluayBkZWx0YSBlcXVhbCBzaWdzXG4gIClcblxubGV0IHJlYyBsaW5rX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChuYiA6IGludClcbiAgICAoYWdfaW5mbyA6IChpbnQgKiBpbnQpICogYm9vbCkgKGVxdWFsIDogYm9vbCkgKGxpbmsgOiBpbnQpIChsb2MgOiBMb2MudClcbiAgICAoZGVsdGEgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGlmIGkgPSBuYiB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBuYiAtIDEgaW5cbiAgICBsZXQgcmFfYWdlbnQgPVxuICAgICAgbWFrZV9jb3VudGVyX2FnZW50IHNpZ3MgKGlzX2ZpcnN0LCBhZ19pbmZvKSAoaXNfbGFzdCwgZXF1YWwpIChsaW5rICsgaSlcbiAgICAgICAgKGxpbmsgKyBpICsgMSlcbiAgICAgICAgbG9jIChkZWx0YSA+IDApXG4gICAgaW5cbiAgICByYV9hZ2VudCA6OiBsaW5rX2luY3Igc2lncyAoaSArIDEpIG5iIGFnX2luZm8gZXF1YWwgbGluayBsb2MgZGVsdGFcbiAgKVxuXG5sZXQgcmVjIGVyYXNlX2luY3IgKHNpZ3MgOiBTaWduYXR1cmUucykgKGkgOiBpbnQpIChpbmNycyA6IExLYXBwYS5ydWxlX21peHR1cmUpXG4gICAgKGRlbHRhIDogaW50KSAobGluayA6IGludCkgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbWF0Y2ggaW5jcnMgd2l0aFxuICB8IGluY3IgOjogaW5jcl9zIC0+XG4gICAgaWYgaSA9IGFicyBkZWx0YSB0aGVuIChcbiAgICAgIGxldCBiZWZvcmUsIF8gPSBpbmNyLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9iKSBpblxuICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgPC0gYmVmb3JlLCBMS2FwcGEuTGlua2VkIGxpbms7XG4gICAgICBpbmNyIDo6IGluY3Jfc1xuICAgICkgZWxzZSAoXG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgKGEsIF8pIC0+IGluY3IuTEthcHBhLnJhX3BvcnRzLihpKSA8LSBhLCBMS2FwcGEuRXJhc2VkKVxuICAgICAgICBpbmNyLkxLYXBwYS5yYV9wb3J0cztcbiAgICAgIGxldCBydWxlX2FnZW50ID0geyBpbmNyIHdpdGggTEthcHBhLnJhX2VyYXNlZCA9IHRydWUgfSBpblxuICAgICAgcnVsZV9hZ2VudCA6OiBlcmFzZV9pbmNyIHNpZ3MgKGkgKyAxKSBpbmNyX3MgZGVsdGEgbGlua1xuICAgIClcbiAgfCBbXSAtPiBbXVxuXG4oKiogUmV0dXJucyBtaXh0dXJlcyBmb3IgYWdlbnQgd2l0aCBzaXRlIGNoYW5nZWQgZnJvbSBjb3VudGVyIHRvIHBvcnQsIGFzIHdlbGwgYXMgbmV3IFtsaW5rX25iXSBhZnRlciBwcmV2aW91cyBhZGRpdGlvbnNcbiAqIFVzZWQgYnkgW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50XSopXG5sZXQgY291bnRlcl9iZWNvbWVzX3BvcnQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHJhIDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHBfaWQgOiBpbnQpIChjb3VudGVyIDogQXN0LmNvdW50ZXIpIChzdGFydF9saW5rX25iIDogaW50KSA6XG4gICAgKExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50KSAqIGludCA9XG4gICgqIFJldHVybnMgcG9zaXRpdmUgcGFydCBvZiB2YWx1ZSAqKVxuICBsZXQgcG9zaXRpdmVfcGFydCAoaSA6IGludCkgOiBpbnQgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIDBcbiAgICBlbHNlXG4gICAgICBpXG4gIGluXG5cbiAgbGV0IGxvYyA6IExvYy50ID0gTG9jLmdldF9hbm5vdCBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgbGV0IChkZWx0YSwgbG9jX2RlbHRhKSA6IGludCAqIExvYy50ID0gY291bnRlci5Bc3QuY291bnRlcl9kZWx0YSBpblxuICBsZXQgY291bnRlcl90ZXN0IDogQXN0LmNvdW50ZXJfdGVzdCBMb2MuYW5ub3RlZCA9XG4gICAgT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICB+ZXhjZXA6XG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICggXCJDb3VudGVyIFwiXG4gICAgICAgICAgICAgXiBMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICBeIFwiIHNob3VsZCBoYXZlIGEgdGVzdCBieSBub3dcIixcbiAgICAgICAgICAgICBsb2MgKSlcbiAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfdGVzdFxuICBpblxuICBsZXQgKHRlc3QsIGVxdWFsKSA6IGludCAqIGJvb2wgPVxuICAgIG1hdGNoIExvYy52IGNvdW50ZXJfdGVzdCB3aXRoXG4gICAgfCBBc3QuQ1ZBUiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBkZWZpbmVzIGEgdmFyaWFibGUsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgQ0VRIFxcXG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucyBhZnRlciBydWxlIHNwbGl0dGluZ1wiLFxuICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl90ZXN0ICkpXG4gICAgfCBBc3QuQ0VRIGogLT4gaiwgdHJ1ZVxuICAgIHwgQXN0LkNHVEUgaiAtPiBqLCBmYWxzZVxuICAgIHwgQXN0LkNMVEUgX2ogLT4gZmFpbHdpdGggXCJub3QgaW1wbGVtZW50ZWRcIiAoKiBUT0RPwqBub3cgKilcbiAgaW5cbiAgbGV0IHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgdGVzdCArIDEgaW5cbiAgbGV0IGxpbmtfZm9yX2VyYXNlZCA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyBhYnMgZGVsdGEgaW5cbiAgbGV0IGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wgPVxuICAgIChwX2lkLCByYS5MS2FwcGEucmFfdHlwZSksIHJhLkxLYXBwYS5yYV9lcmFzZWRcbiAgaW5cblxuICBsZXQgdGVzdF9pbmNyIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgbGlua19pbmNyIHNpZ3MgMCAodGVzdCArIDEpIGFnX2luZm8gZXF1YWwgc3RhcnRfbGlua19uYiBsb2MgZGVsdGFcbiAgaW5cbiAgbGV0IGFkanVzdF9kZWx0YSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGlmIGRlbHRhIDwgMCB0aGVuXG4gICAgICBlcmFzZV9pbmNyIHNpZ3MgMCB0ZXN0X2luY3IgZGVsdGEgbGlua19mb3JfZXJhc2VkXG4gICAgZWxzZVxuICAgICAgdGVzdF9pbmNyXG4gIGluXG4gIGxldCBjcmVhdGVkIDogUmF3X21peHR1cmUudCA9XG4gICAgaWYgZGVsdGEgPiAwIHRoZW5cbiAgICAgIGFkZF9pbmNyIDAgc3RhcnRfbGlua19mb3JfY3JlYXRlZCBzdGFydF9saW5rX25iIGRlbHRhIGZhbHNlIHNpZ3NcbiAgICBlbHNlXG4gICAgICBbXVxuICBpblxuXG4gIGlmIHRlc3QgKyBkZWx0YSA8IDAgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlciB0ZXN0IHNob3VsZCBiZSBncmVhdGVyIHRoZW4gYWJzKGRlbHRhKVwiLCBsb2NfZGVsdGEpKTtcblxuICBsZXQgc3dpdGNoIDogTEthcHBhLnN3aXRjaGluZyA9XG4gICAgaWYgZGVsdGEgPSAwIHRoZW5cbiAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gICAgZWxzZSBpZiBkZWx0YSA+IDAgdGhlblxuICAgICAgTEthcHBhLkxpbmtlZCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkXG4gICAgZWxzZVxuICAgICAgTEthcHBhLkxpbmtlZCBsaW5rX2Zvcl9lcmFzZWRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiA6IGludCA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgcmEuTEthcHBhLnJhX3BvcnRzLihwX2lkKSA8LVxuICAgICggKExLYXBwYS5MTktfVkFMVUUgKHN0YXJ0X2xpbmtfbmIsIChwb3J0X2IsIGNvdW50ZXJfYWdlbnRfaW5mby5pZCkpLCBsb2MpLFxuICAgICAgc3dpdGNoICk7XG4gIGxldCBuZXdfbGlua19uYiA6IGludCA9IHN0YXJ0X2xpbmtfbmIgKyAxICsgdGVzdCArIHBvc2l0aXZlX3BhcnQgZGVsdGEgaW5cblxuICAoYWRqdXN0X2RlbHRhLCBjcmVhdGVkKSwgbmV3X2xpbmtfbmJcblxuKCoqIENvbXBpbGVzIHRoZSBjb3VudGVyIHByZWNvbmRpdGlvbiBpbiBhIGxlZnQgaGFuZCBzaWRlIG1peHR1cmUgb2YgYSBydWxlIGludG8gYSBtaXh0dXJlIHdoaWNoIHRlc3RzIGR1bW15IHBvc2l0aW9uc1xuICogcnVsZV9hZ2VudF8gLSBhZ2VudCB3aXRoIGNvdW50ZXJzIGluIGEgcnVsZVxuICAgbG5rX25iIC0gdGhlIG1heCBsaW5rIG51bWJlciB1c2VkIGluIHRoZSBydWxlO1xuICAgc2lncy5jb3VudGVyX2FnZW50X2luZm8gLSBpbmZvIG9uIHRoZSBjb3VudGVyIGFnZW50XG4gICByZXR1cm5zOiBhZ2VudCB3aXRoIGV4cGxpY2l0IGNvdW50ZXJzOyBjcmVhdGVkIGluY3IgYWdlbnRzO1xuICAgICAgICAgICAgdGhlIG5leHQgbGluayBudW1iZXIgdG8gdXNlICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAocnVsZV9hZ2VudF8gOiBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzKSAobG5rX25iIDogaW50KSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICBsZXQgKGluY3JzLCBsbmtfbmInKSA6IChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgbGlzdCAqIGludCA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpZCAoYWNjX2luY3JzLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBhY2NfaW5jcnMsIGxua19uYlxuICAgICAgICB8IFNvbWUgKGNvdW50ZXIsIF8pIC0+XG4gICAgICAgICAgbGV0IG5ld19pbmNycywgbmV3X2xua19uYiA9XG4gICAgICAgICAgICBjb3VudGVyX2JlY29tZXNfcG9ydCBzaWdzIHJ1bGVfYWdlbnRfLmFnZW50IGlkIGNvdW50ZXIgbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfaW5jcnMgOjogYWNjX2luY3JzLCBuZXdfbG5rX25iXG4gICAgICAgICgqIEpGOiBsaW5rIGlkcyB3ZXJlIGNvbGxpZGluZyBhZnRlciBjb3VudGVyIGRlY3JlbWVudGF0aW9ucyAtPiBJIGRvIG5vdCB0aGluayB0aGF0IHdlIHNob3VsZCBhZGQgZGVsdGEgd2hlbiBuZWdhdGl2ZSAqKSlcbiAgICAgIChbXSwgbG5rX25iKSBydWxlX2FnZW50Xy5jb3VudGVyc1xuICBpblxuICBsZXQgKGFscywgYmxzKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIChhbHMsIGJscykgKGEsIGIpIC0+IGEgQCBhbHMsIGIgQCBibHMpIChbXSwgW10pIGluY3JzXG4gIGluXG4gIGFscywgYmxzLCBsbmtfbmInXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciB2YWx1ZSBjaGFuZ2UgaW4gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIHJ1bGUgaW50byBkdW1teSBjaGFpbiBjaGFuZ2VzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3Jhd19hZ2VudCAoc2lncyA6IFNpZ25hdHVyZS5zKVxuICAgIChyYXdfYWdlbnRfIDogUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IGxpc3QgKiBpbnQgPVxuICBsZXQgcmF3X2FnZW50IDogUmF3X21peHR1cmUuYWdlbnQgPSByYXdfYWdlbnRfLmFnZW50IGluXG4gIGxldCBwb3J0cyA6IFJhd19taXh0dXJlLmxpbmsgYXJyYXkgPSByYXdfYWdlbnQuUmF3X21peHR1cmUuYV9wb3J0cyBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBwX2lkIChhY2MsIGxua19uYikgLT4gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhY2MsIGxua19uYlxuICAgICAgfCBTb21lIChjLCBfKSAtPlxuICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImNvdW50ZXJcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lICh0ZXN0LCBfKSAtPlxuICAgICAgICAgIChtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBBc3QuQ0xURSBfIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgPVxuICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICByYXdfYWdlbnQuUmF3X21peHR1cmUuYV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgICAgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IEFzdC5DRVEgaiAtPlxuICAgICAgICAgICAgbGV0IHAgPSBSYXdfbWl4dHVyZS5WQUwgbG5rX25iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gcCBpblxuICAgICAgICAgICAgbGV0IGluY3JzID0gYWRkX2luY3IgMCBsbmtfbmIgKGxua19uYiArIGopIChqICsgMSkgdHJ1ZSBzaWdzIGluXG4gICAgICAgICAgICBhY2MgQCBpbmNycywgbG5rX25iICsgaiArIDEpKSlcbiAgICAoW10sIGxua19uYikgcmF3X2FnZW50Xy5jb3VudGVyc1xuXG5sZXQgcmF3X2FnZW50X2hhc19jb3VudGVycyAoYWdfIDogJ2Egd2l0aF9hZ2VudF9jb3VudGVycykgOiBib29sID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gb2sgeCAtPiB4IDw+IE5vbmUgfHwgb2spIGZhbHNlIGFnXy5jb3VudGVyc1xuXG5sZXQgcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgKHJ1bGVfYWdlbnQgOiBMS2FwcGEucnVsZV9hZ2VudClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSA6IGJvb2wgPVxuICBTaWduYXR1cmUuaGFzX2NvdW50ZXIgKFNpZ25hdHVyZS5nZXQgc2lncyBydWxlX2FnZW50LnJhX3R5cGUpXG5cbigqKiBbY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBtaXggY3JlYXRlZF0gdGFrZXMgdGhlIGludGlhbCBtaXh0dXJlIGZyb20gYSBydWxlIFttaXhdLFxuICogYW5kIHRoZSBtaXh0dXJlIG9idGFpbmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBydWxlIFtjcmVhdGVkXSxcbiAqIGJvdGggd2l0aCBjb3VudGVyIGluZm9ybWF0aW9uLCBhbmQgcmV0dXJucyB0d28gbWl4dHVyZXMgZm9yIGEgbmV3IHJ1bGUgd2l0aG91dCBjb3VudGVycywgaGF2aW5nIGNvbXBpbGVkIHRoZSBjb3VudGVyIGxvZ2ljIGluc2lkZSB0aGUgcnVsZS5cbiAqXG4gKiAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcnVsZV9hZ2VudCBtaXh0dXJlXG4gICAtIGFkZHMgaW5jcmVtZW50IGFnZW50cyB0byB0aGUgcmF3IG1peHR1cmVcbiAgIC0gbGlua3MgdGhlIGFnZW50cyBpbiB0aGUgbWl4dHVyZShsaHMscmhzLG1peCkgb3IgaW4gdGhlIHJhdyBtaXh0dXJlKGNyZWF0ZWQpXG4gICAgIHRvIHRoZSBpbmNyZW1lbnRzICopXG5sZXQgY29tcGlsZV9jb3VudGVyX2luX3J1bGUgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAobWl4IDogcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMpXG4gICAgKGNyZWF0ZWQgOiByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgPVxuICBsZXQgaGFzX2NvdW50ZXJzIDogYm9vbCA9XG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF9oYXNfY291bnRlcnMgcnVsZV9hZ2VudF8uYWdlbnQgc2lncylcbiAgICAgIG1peFxuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfaGFzX2NvdW50ZXJzIHJhd19hZ2VudF8pIGNyZWF0ZWRcbiAgaW5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW4gKFxuICAgIGxldCBsbmtfbmIgOiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobSA6IGludCkgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBtYXggbSAoTEthcHBhLm1heF9saW5rX2lkIFsgcnVsZV9hZ2VudF8uYWdlbnQgXSkpXG4gICAgICAgIDAgbWl4XG4gICAgaW5cblxuICAgIGxldCAoaW5jcnMsIGluY3JzX2NyZWF0ZWQsIGxua19uYicpIDpcbiAgICAgICAgTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQgKiBpbnQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAobWl4X2luY3IsIGNyZWF0ZWRfaW5jciwgbG5rX25iKSBydWxlX2FnZW50XyAtPlxuICAgICAgICAgIGxldCBtaXhfaW5jcl9uZXcsIGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicgPVxuICAgICAgICAgICAgY29tcGlsZV9jb3VudGVyX2luX3J1bGVfYWdlbnQgc2lncyBydWxlX2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1peF9pbmNyX25ldyBAIG1peF9pbmNyLCBjcmVhdGVkX2luY3JfbmV3IEAgY3JlYXRlZF9pbmNyLCBsbmtfbmInICsgMSlcbiAgICAgICAgKFtdLCBbXSwgbG5rX25iICsgMSlcbiAgICAgICAgbWl4XG4gICAgaW5cbiAgICBsZXQgaW5jcnNfY3JlYXRlZCcgOiBSYXdfbWl4dHVyZS50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGNyZWF0ZWRfaW5jciwgbG5rX25iKSByYXdfYWdlbnRfIC0+XG4gICAgICAgICAgbGV0IGNyZWF0ZWRfaW5jcl9uZXcsIGxua19uYicnID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9yYXdfYWdlbnQgc2lncyByYXdfYWdlbnRfIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJycpXG4gICAgICAgIChbXSwgbG5rX25iJyArIDEpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIHw+IGZzdFxuICAgICAgKCogV2UgZHJvcCB0aGUgbG5rX25iIGFzIHdlIGRvbid0IG5lZWQgaW4gdGhlIGZvbGxvd2luZyAqKVxuICAgIGluXG5cbiAgICAoKiBSZXR1cm4gaW5pdGlhbCBtaXh0dXJlcyB3aXRoIG5ldyBhZ2VudHMgaW4gcnVsZSBmcm9tIGNvdW50ZXIgY29tcGlsYXRpb24gKilcbiAgICBsZXQgcnVsZV9hZ2VudF9taXggOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICAgIExpc3RfdXRpbC5yZXZfbWFwX2FwcGVuZCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSBtaXggaW5jcnNcbiAgICBpblxuICAgIGxldCByYXdfbWl4IDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgKGZ1biByYXdfYWdlbnRfIC0+IHJhd19hZ2VudF8uYWdlbnQpXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgICAgKGluY3JzX2NyZWF0ZWQgQCBpbmNyc19jcmVhdGVkJylcbiAgICBpblxuICAgIHJ1bGVfYWdlbnRfbWl4LCByYXdfbWl4XG4gICkgZWxzZVxuICAgICggTGlzdC5yZXZfbWFwIChmdW4gcnVsZV9hZ2VudF8gLT4gcnVsZV9hZ2VudF8uYWdlbnQpIChMaXN0LnJldiBtaXgpLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgY3JlYXRlZCkgKVxuXG5sZXQgcnVsZV9hZ2VudF93aXRoX21heF9jb3VudGVyIHNpZ3MgYyAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSA6XG4gICAgTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCBjX25hID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gIGxldCBjX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIGNfbmEgc2lnbiBpblxuICBsZXQgbWF4X3ZhbCwgbG9jID0gYy5Bc3QuY291bnRlcl9kZWx0YSBpblxuICBsZXQgbWF4X3ZhbCcgPSBtYXhfdmFsICsgMSBpblxuICBsZXQgaW5jcnMgPVxuICAgIGxpbmtfaW5jciBzaWdzIDAgKG1heF92YWwnICsgMSkgKChjX2lkLCBhZ19pZCksIGZhbHNlKSBmYWxzZSAxIGxvYyAoLTEpXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCBwID0gTEthcHBhLkxOS19WQUxVRSAoMSwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyBpblxuICBwb3J0cy4oY19pZCkgPC0gcCwgTEthcHBhLk1haW50YWluZWQ7XG4gIGxldCByYSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gIHJhIDo6IGluY3JzXG5cbmxldCBjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdfdHkgPVxuICBsZXQgYW5ub3QgPSBMb2MuZ2V0X2Fubm90IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICBsZXQgZmlsZW5hbWUgPSBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChcImNvdW50ZXJfcGVydHVyYmF0aW9uLmthXCIsIGFubm90KSBdIGluXG4gIGxldCBzdG9wX21lc3NhZ2UgPVxuICAgIFwiQ291bnRlciBcIiBeIExvYy52IGMuQXN0LmNvdW50ZXJfbmFtZSBeIFwiIG9mIGFnZW50IFwiIF4gTG9jLnYgYWdfdHlcbiAgICBeIFwiIHJlYWNoZWQgbWF4aW11bVwiXG4gIGluXG4gIGxldCBtb2RzID1cbiAgICBbXG4gICAgICBBc3QuUFJJTlQgKFtdLCBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChcIlwiLCBhbm5vdCkgXSk7XG4gICAgICBBc3QuUFJJTlQgKFtdLCBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChzdG9wX21lc3NhZ2UsIGFubm90KSBdKTtcbiAgICAgIEFzdC5TVE9QIGZpbGVuYW1lO1xuICAgIF1cbiAgaW5cbiAgbGV0IHZhbF9vZl9jb3VudGVyID1cbiAgICBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocnVsZV9hZ2VudF93aXRoX21heF9jb3VudGVyIHNpZ3MgYyBhZ190eSlcbiAgaW5cbiAgbGV0IHByZSA9XG4gICAgQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgKCBPcGVyYXRvci5FUVVBTCxcbiAgICAgICAgKHZhbF9vZl9jb3VudGVyLCBhbm5vdCksXG4gICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLkkgMSksIGFubm90KSApXG4gIGluXG4gICggTm9uZSxcbiAgICBTb21lIChwcmUsIExvYy5nZXRfYW5ub3QgYWdfdHkpLFxuICAgIG1vZHMsXG4gICAgU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcblxubGV0IGNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgc2lncyBhc3Rfc2lncyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjXG4gICAgICAgfCBBc3QuUHJlc2VudCAoYWdfdHksIHNpdGVzLCBfKSAtPlxuICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgKGZ1biBhY2MnIHNpdGUgLT5cbiAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjJ1xuICAgICAgICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPlxuICAgICAgICAgICAgICAgKGNvdW50ZXJfcGVydHVyYmF0aW9uIHNpZ3MgYyBhZ190eSwgTG9jLmdldF9hbm5vdCBhZ190eSkgOjogYWNjJylcbiAgICAgICAgICAgYWNjIHNpdGVzKSlcbiAgICBbXSBhc3Rfc2lnc1xuXG5sZXQgbWFrZV9jb3VudGVyIGkgbmFtZSA9XG4gIHtcbiAgICBBc3QuY291bnRlcl9uYW1lID0gTG9jLmFubm90X3dpdGhfZHVtbXkgbmFtZTtcbiAgICBjb3VudGVyX3Rlc3QgPSBTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQXN0LkNFUSBpKSk7XG4gICAgY291bnRlcl9kZWx0YSA9IExvYy5hbm5vdF93aXRoX2R1bW15IDA7XG4gIH1cblxubGV0IGFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIHNpZ3MgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgYWRkX2xpbmtfY29udGFjdF9tYXAgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYSBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG5cbmxldCByYWlzZV9pZl9tb2RpZmljYXRpb24gKGRlbHRhLCBsb2MpID1cbiAgaWYgZGVsdGEgIT0gMCB0aGVuIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gbG9jIChTb21lIGRlbHRhKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9jb3VudGVycyBzaWduIGFzdF9jb3VudGVycyByYSBhcml0eSBhZ2VudF9uYW1lIGF1eCA9XG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gcHNldCBjIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBjLkFzdC5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSByYWlzZV9pZl9tb2RpZmljYXRpb24gYy5Bc3QuY291bnRlcl9kZWx0YSBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF1eCB3aXRoXG4gICAgICAgICAgfCBTb21lIGYgLT4gZiBwX2lkXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHJhX2NvdW50ZXJzLihwX2lkKSA8LSBTb21lIChjLCBMS2FwcGEuRXJhc2VkKTtcbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBhc3RfY291bnRlcnNcbiAgaW5cbiAgeyBhZ2VudCA9IHJhOyBjb3VudGVycyA9IHJhX2NvdW50ZXJzIH1cblxubGV0IGFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBjb3VudGVycyByYVxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCByYV9jb3VudGVycyA9IEFycmF5Lm1ha2UgYXJpdHkgTm9uZSBpblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjX2lkID1cbiAgICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICAgIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgYWdfaWQgY19pZCBjb3VudGVyX2FnZW50X2luZm8uaWQgcG9ydF9iXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBwc2V0IGMgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIFNpZ25hdHVyZS5jb3VudGVyX29mX3NpdGVfaWQgcF9pZCBzaWduIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwc2V0ID09IHBzZXQnIHRoZW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgcF9pZCBpblxuICAgICAgICBsZXQgKCkgPSByYV9jb3VudGVycy4ocF9pZCkgPC0gU29tZSAoYywgTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgY291bnRlcnNcbiAgaW5cbiAgeyBhZ2VudCA9IHJhOyBjb3VudGVycyA9IHJhX2NvdW50ZXJzIH1cblxubGV0IGFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiBzaWdzICgoYWdlbnRfbmFtZSwgbG9jKSBhcyBhZ190eSkgbGMgcmMgcmFcbiAgICBhZGRfbGlua19jb250YWN0X21hcCA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBsZXQgKCkgPSBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2IgaW5cbiAgICBjLCBMS2FwcGEuTWFpbnRhaW5lZFxuICBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJjX3IsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChyYywgY3NldCkgYyAtPlxuICAgICAgICBsZXQgKChuYSwgXykgYXMgY291bnRlcl9uYW1lKSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjb3VudGVyX25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgY3NldCcgPSBNb2RzLkludFNldC5hZGQgY19pZCBjc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgY3NldCA9PSBjc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYycsIHJjJyA9XG4gICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QuY291bnRlcl9uYW1lKSBuYSA9IDApXG4gICAgICAgICAgICByY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYycnID1cbiAgICAgICAgICBtYXRjaCBjJyB3aXRoXG4gICAgICAgICAgfCBfIDo6IFtdIHwgW10gLT4gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWRcbiAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKGNfaWQpIDwtIFNvbWUgYycnIGluXG4gICAgICAgIHJjJywgY3NldCcpXG4gICAgICAocmMsIE1vZHMuSW50U2V0LmVtcHR5KSBsY1xuICBpblxuICBsZXQgXyA9XG4gICAgKCogdGVzdCBpZiBjb3VudGVyIG9mIHJocyBpcyBpbiB0aGUgc2lnbmF0dXJlICopXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYyAtPiBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lIHNpZ24pXG4gICAgICByY19yXG4gIGluXG4gIGlmIChub3QgKHJjID0gW10pKSAmJiBub3QgKHJjX3IgPSBbXSkgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlcnMgaW4gXCIgXiBhZ2VudF9uYW1lIF4gXCIgc2hvdWxkIGhhdmUgdGVzdHMgYnkgbm93XCIsIGxvYykpO1xuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGNvdW50ZXJzXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgcmEgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG5cbiAgKCogcmVnaXN0ZXIgYWxsIGNvdW50ZXJzIChzcGVjaWZpZWQgb3Igbm90KSB3aXRoIG1pbiB2YWx1ZSAqKVxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gcF9pZCBfIC0+XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICB8IFNvbWUgKG1pbiwgXykgLT5cbiAgICAgICAgbGV0IGNfbmFtZSA9IFNpZ25hdHVyZS5zaXRlX29mX251bSBwX2lkIHNpZ24gaW5cbiAgICAgICAgKHRyeVxuICAgICAgICAgICBsZXQgYyA9XG4gICAgICAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgICAgICAoZnVuIGMnIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBjJy5Bc3QuY291bnRlcl9uYW1lKSBjX25hbWUgPSAwKVxuICAgICAgICAgICAgICAgY291bnRlcnNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcmFfY291bnRlcnMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9IGMuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID0gYy5Bc3QuY291bnRlcl90ZXN0O1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID0gMCwgTG9jLmR1bW15O1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICByYV9jb3VudGVycy4ocF9pZCkgPC1cbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID0gY19uYW1lLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9IFNvbWUgKEFzdC5DRVEgbWluLCBMb2MuZHVtbXkpO1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID0gMCwgTG9jLmR1bW15O1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApKVxuICAgICAgfCBOb25lIC0+ICgpKVxuICAgIHJhX2NvdW50ZXJzO1xuXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcbiAgaW5cbiAgbGV0IF8gOiBNb2RzLkludFNldC50ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBwc2V0IGMgLT5cbiAgICAgICAgbGV0IHBvcnRfbmFtZSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgKCk7XG4gICAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWU7XG4gICAgICAgICAgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBwX2lkO1xuICAgICAgICAgIHJhX2NvdW50ZXJzLihwX2lkKSA8LSBTb21lIChjLCBMS2FwcGEuTWFpbnRhaW5lZCk7XG4gICAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBjb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVE9ETyBvcmlnaW5hbGx5X2Zyb20gdGVybS9sS2FwcGEubWwsIHNlZSBpZiBpdCBtYWtlcyBzZW5zZSBoZXJlICopXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IChwb3MgOiBMb2MudCkgPSBmdW5jdGlvblxuICB8IEFzdC5Ob01vZCAtPiAoKVxuICB8IEFzdC5FcmFzZSB8IEFzdC5DcmVhdGUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIHN3aXRjaCA9XG4gIGxldCB0eV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgZHN0X3R5IHNpZ3MgaW5cbiAgbGV0IHBfaWQgPSBTaWduYXR1cmUuaWRfb2Zfc2l0ZSBkc3RfdHkgZHN0X3Agc2lncyBpblxuICAoTEthcHBhLkxOS19UWVBFIChwX2lkLCB0eV9pZCksIHBvcyksIHN3aXRjaFxuXG5sZXQgYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIHN0eSBzcCBkdHkgZHAgPVxuICBtYXRjaCBjb250YWN0X21hcCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgY29udGFjdF9tYXAgLT5cbiAgICBsZXQgc2ksIHNsID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSBpblxuICAgIGxldCBkaSwgZGwgPSBjb250YWN0X21hcC4oZHR5KS4oZHApIGluXG4gICAgbGV0ICgpID0gY29udGFjdF9tYXAuKHN0eSkuKHNwKSA8LSBzaSwgTW9kcy5JbnQyU2V0LmFkZCAoZHR5LCBkcCkgc2wgaW5cbiAgICBjb250YWN0X21hcC4oZHR5KS4oZHApIDwtIGRpLCBNb2RzLkludDJTZXQuYWRkIChzdHksIHNwKSBkbFxuXG5sZXQgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyA/ZHN0X3R5IHNpZ3Mgc29ydCBzaXRlID1cbiAgbGV0IHdhcm5pbmdfZm9yX2NvdW50ZXJzID1cbiAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIHNvcnQgdGhlblxuICAgICAgdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZHN0X3R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHMgLT4gU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzXG4gICAgKVxuICBpblxuXG4gIGlmIG5vdCB3YXJuaW5nX2Zvcl9jb3VudGVycyB0aGVuXG4gICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJydWxlIGluZHVjZXMgYSBsaW5rIHBlcm11dGF0aW9uIG9uIHNpdGUgJyVhJyBvZiBhZ2VudCAnJWEnXCJcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzb3J0KVxuICAgICAgICAgIHNpdGVcbiAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgc29ydClcblxubGV0IHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3MgPVxuICBMS2FwcGEucmFpc2VfbGlua19zaG91bGRfYmVfcmVtb3ZlZCBpXG4gICAgKGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICBhZ190eVxuICAgICBpblxuICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSlcbiAgICAoIChsZXQgKCkgPVxuICAgICAgICAgRm9ybWF0LmZwcmludGYgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgXCIlYVwiXG4gICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICBwX2lkXG4gICAgICAgaW5cbiAgICAgICBGb3JtYXQuZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSksXG4gICAgICBwb3MgKVxuXG5sZXQgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX3R5IHBfaWQgc3dpdGNoXG4gICAgKGxpbmtzX29uZSwgbGlua3NfdHdvKSA9XG4gIGlmIE1vZHMuSW50TWFwLm1lbSBpIGxpbmtzX3R3byB0aGVuXG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAoIFwiVGhpcyBpcyB0aGUgdGhpcmQgb2NjdXJlbmNlIG9mIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIF4gXCInIGluIHRoZSBzYW1lIG1peHR1cmUuXCIsXG4gICAgICAgICAgIHBvcyApKVxuICBlbHNlIChcbiAgICBtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsaW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSwgb25lJyAtPlxuICAgICAgbGV0IG5ld19saW5rID1cbiAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgfCBMS2FwcGEuTGlua2VkIGogLT4gU29tZSBqXG4gICAgICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+IE5vbmVcbiAgICAgIGluXG4gICAgICAoICgoTEthcHBhLkxOS19WQUxVRSAoaSwgKC0xLCAtMSkpLCBwb3MpLCBzd2l0Y2gpLFxuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBuZXdfbGluaywgcG9zLCBzd2l0Y2gpIG9uZScsIGxpbmtzX3R3bylcbiAgICAgIClcbiAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIGRzdF9pZCwgcG9zJywgc3dpdGNoJyksIG9uZScgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5hbGxvd2VkX2xpbmsgYWdfdHkgcF9pZCBkc3RfdHkgZHN0X3Agc2lncyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIGluXG4gICAgICAgIGxldCBtYWludGFpbmVkID1cbiAgICAgICAgICBtYXRjaCBzd2l0Y2ggd2l0aFxuICAgICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+XG4gICAgICAgICAgICBsZXQgbGlua19zd2FwID0gU29tZSBqIDw+IGRzdF9pZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgbGlua19zd2FwIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIHdhcm5fb25fc3dhcCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIHdhcm5pbmcgLT5cbiAgICAgICAgICAgICAgICAgIHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgfmRzdF90eSBzaWdzIGFnX3R5XG4gICAgICAgICAgICAgICAgICAgIHBfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG5vdCBsaW5rX3N3YXBcbiAgICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgX2NoZWNrX2NvbXBhdGliaWx0eSA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoLCBzd2l0Y2gnIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCBMS2FwcGEuTWFpbnRhaW5lZCAtPiAoKVxuICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQsIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgIHNpdGVfc2hvdWxkX21hZGVfYmVfZnJlZSBpIHNpZ3MgYWdfdHkgcF9pZCBwb3NcbiAgICAgICAgICB8IChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGRzdF90eSBkc3RfcCBwb3MnXG4gICAgICAgICAgfCAoIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSxcbiAgICAgICAgICAgICAgKExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pICkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIGluXG4gICAgICAgICggKCAoTEthcHBhLkxOS19WQUxVRSAoaSwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSxcbiAgICAgICAgICAgIGlmIG1haW50YWluZWQgdGhlblxuICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBzd2l0Y2ggKSxcbiAgICAgICAgICAob25lJywgTW9kcy5JbnRNYXAuYWRkIGkgKGFnX3R5LCBwX2lkLCBtYWludGFpbmVkKSBsaW5rc190d28pIClcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJGb3JiaWRkZW4gbGluayB0byBhICVhLiVhIGZyb20gc2lnbmF0dXJlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgZHN0X3R5KVxuICAgICAgICAgICAgICAgICBkc3RfcFxuICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgIGRzdF90eSxcbiAgICAgICAgICAgICAgIHBvcyApKVxuICApXG5cbmxldCBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlIHNpZ3NcbiAgICBsaW5rc19hbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBpbnRmIGNvdW50cyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuRXJhc2VkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPlxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTEthcHBhLklfQU5ZXG4gICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5JX0FOWV9FUkFTRUQpXG4gIGluXG4gIGxldCBsYW5ub3QsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChsYW5ub3QsIHBzZXQpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGlua19tb2QsIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgICAgfCBTb21lIE5vbmUsIFsgKExLYXBwYS5MTktfVkFMVUUgKF8sICgpKSwgXykgXVxuICAgICAgICAgICgqIFtpLy5dIGlzIGFsbG93ZWQgaW4gZGVncmFkZWQgYWdlbnQuXG4gICAgICAgICAgICAgSXQgd2lsbCBiZSBjaGVja2VkIGxhdGVyIHRoYXQgdGhlIG90aGVyIHNpdGUgd2l0aCBsaW5rIGlkIGkgaXMgYWxzbyBmcmVlZCBpbiB0aGUgcnVsZSAqKVxuICAgICAgICAgICgqIFBsZWFzZSBub3RlIHRoYXQgYSBydWxlIHdyaXR0ZW4gYXMgQSh4WzFdKS0sQih4WzEvLl0pLSBpcyBhbGxvd2VkICopXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8ICggU29tZSAoTm9uZSB8IFNvbWUgXyksXG4gICAgICAgICAgICAgICggW11cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoXywgXyksIF8pIF1cbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyApICkgLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfaW50X21vZCBpblxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQgd2l0aFxuICAgICAgICAgIHwgW10gfCBbIChOb25lLCBfKSBdIC0+ICgpXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgTEthcHBhLklfVkFMX0VSQVNFRFxuICAgICAgICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24pXG4gICAgICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLkVyYXNlZCBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IG5hLCBwb3MgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgbmEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRXJhc2VkIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IG5hLCBwb3MgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIlxuICAgICAgICAgICAgICAgICAgbmEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgKFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdKSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gfCBbXSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkFOWV9GUkVFLCBMS2FwcGEuRXJhc2VkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICAgIGxldCB2YSwgbGFubm90JyA9XG4gICAgICAgICAgICBsZXQgd2Fybl9vbl9zd2FwID1cbiAgICAgICAgICAgICAgaWYgcl9lZGl0X3N0eWxlIHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHdhcm5pbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBidWlsZF9saW5rID93YXJuX29uX3N3YXAgc2lncyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5FcmFzZWQgbGFubm90XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgICAgICBsYW5ub3QnLCBwc2V0J1xuICAgICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpKVxuICAgICAgKGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSlcbiAgICAgIGludGZcbiAgaW5cbiAgbGV0IHJhID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSB0cnVlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgKCBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9kcm9wcGVkX2NvdW50ZXJzIHNpZ24gY291bnRzIHJhIGFyaXR5IGFnZW50X25hbWVcbiAgICAgIE5vbmUsXG4gICAgbGFubm90IClcblxubGV0IGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGUgc2lnc1xuICAgID9jb250YWN0X21hcCByYW5ub3QgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgaW50ZiA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPSBBcnJheS5tYWtlIGFyaXR5IFJhd19taXh0dXJlLkZSRUUgaW5cbiAgbGV0IGludGVybmFscyA9XG4gICAgQXJyYXkuaW5pdCBhcml0eSAoZnVuIGkgLT4gU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdfaWQgaSBzaWdzKVxuICBpblxuICBsZXQgXywgcmFubm90ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAocHNldCwgcmFubm90KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2xpbmtfbW9kIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9pbnRfbW9kIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IFsgKE5vbmUsIF8pIF0gLT5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdIC0+XG4gICAgICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgIFNvbWUgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbilcbiAgICAgICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPiBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgXywgXykgXVxuICAgICAgICB8IF8gOjogXyA6OiBfIC0+XG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjQgLT5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBSYXdfbWl4dHVyZS5WQUwgaSBpblxuICAgICAgICAgIGxldCBfLCByYW5ub3QnID1cbiAgICAgICAgICAgIGxldCB3YXJuX29uX3N3YXAgPVxuICAgICAgICAgICAgICBpZiByX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgd2FybmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgICAgIExLYXBwYS5GcmVlZCByYW5ub3RcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzZXQnLCByYW5ub3QnXG4gICAgICAgIHwgWyAoKExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfRlJFRSksIF8pIF0gfCBbXSAtPiBwc2V0JywgcmFubm90KVxuICAgICAgKE1vZHMuSW50U2V0LmVtcHR5LCByYW5ub3QpXG4gICAgICBpbnRmXG4gIGluXG4gICggcmFubm90LFxuICAgIHtcbiAgICAgIFJhd19taXh0dXJlLmFfdHlwZSA9IGFnX2lkO1xuICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgIH0gKVxuXG5sZXQgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBhZ19pZCBwX2lkID93YXJuXG4gICAgKChsaHNfbGlua3MsIHJoc19saW5rcykgYXMgbGlua3NfYW5ub3QpID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IExLYXBwYS5NYWludGFpbmVkLCBsaW5rc19hbm5vdFxuICB8IFNvbWUgeCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCB3YXJuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChuYSwgcG9zKSAtPlxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICBpblxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gTEthcHBhLkZyZWVkLCBsaW5rc19hbm5vdFxuICAgIHwgU29tZSAoaiwgcG9zX2opIC0+XG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcDpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwIHBvc19qIGogYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBMS2FwcGEuTGlua2VkIGosIChsaHNfbGlua3MsIHJoc19saW5rcycpKVxuXG5sZXQgYW5ub3RhdGVfZWRpdF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGUgc2lncyA/Y29udGFjdF9tYXBcbiAgICAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBsaW5rc19hbm5vdCBpbnRmIGNvdW50cyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCBzY2FuX3BvcnQgKGxpbmtzX2Fubm90LCBwc2V0KSBwID1cbiAgICBsZXQgcG9ydF9uYW1lLCBfID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lIHNpZ24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgIGluXG4gICAgbGV0IGxpbmtzX2Fubm90JyA9XG4gICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgfCBbICgoTEthcHBhLkxOS19TT01FLCBwb3MpIGFzIHgpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgfndhcm46KHBvcnRfbmFtZSwgcG9zKSBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB4LCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2FybjoocG9ydF9uYW1lLCBwb3MpIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcCBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCAoW10gfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm46Tm9uZSBzaWdzID9jb250YWN0X21hcCBhZ19pZFxuICAgICAgICAgICAgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCBbXSB3aGVuIHAuQXN0LnBvcnRfbGlua19tb2QgPSBOb25lIC0+IGxpbmtzX2Fubm90XG4gICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdIC0+XG4gICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nID93YXJuOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgYWdfaWRcbiAgICAgICAgICAgIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zKSBdIC0+XG4gICAgICAgIGxldCBtb2RpZiwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIH53YXJuOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCAobGhzX2xpbmtzLCByaHNfbGlua3MpID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nID93YXJuOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgYWdfaWRcbiAgICAgICAgICAgIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICAgIGJ1aWxkX2xpbmsgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwOlxuICAgICAgICAgICAgICAoaWYgaXNfcnVsZSB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY29udGFjdF9tYXApXG4gICAgICAgICAgICA/d2Fybl9vbl9zd2FwOk5vbmUgcG9zIGkgYWdfaWQgcF9pZCBtb2RpZiBsaHNfbGlua3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICAgIGxoc19saW5rcycsIHJoc19saW5rc1xuICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50LCBwLkFzdC5wb3J0X2ludF9tb2Qgd2l0aFxuICAgICAgfCAoWyAoTm9uZSwgXykgXSB8IFtdKSwgTm9uZSAtPiAoKVxuICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0sIFNvbWUgdmEnIC0+XG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9WQUxfQ0hBTkdFRFxuICAgICAgICAgICAgKCBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24sXG4gICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YScgc2lnbiApXG4gICAgICB8IFtdLCBTb21lICgoXywgcG9zKSBhcyB2YSkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyB0aGVuXG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJpbnRlcm5hbCBzdGF0ZSBvZiBzaXRlICclcycgb2YgYWdlbnQgJyVzJyBpcyBtb2RpZmllZCBcXFxuICAgICAgICAgICAgICAgICAgIGFsdGhvdWdoIGl0IGlzIGxlZnQgdW5wZWNpZmllZCBpbiB0aGUgbGVmdCBoYW5kIHNpZGVcIlxuICAgICAgICAgICAgICAgICAgcG9ydF9uYW1lIGFnZW50X25hbWUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKFwiTW9kaWZpZWQgaW50ZXJuYWwgc3RhdGUgbXVzdCBhcHBlYXIgb24gdGhlIGxlZnRcIiwgcG9zKSlcbiAgICAgICAgaW5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgdmEgc2lnbilcbiAgICAgIHwgWyAoTm9uZSwgXykgXSwgU29tZSB2YSAtPlxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRUQgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YSBzaWduKVxuICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0sIE5vbmUgLT5cbiAgICAgICAgbGV0IGlfaWQgPSBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24gaW5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaV9pZCwgaV9pZClcbiAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfLCBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICBpblxuICAgIGxpbmtzX2Fubm90JywgcHNldCdcbiAgaW5cbiAgbGV0IGFubm90ZWQnLCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdCBzY2FuX3BvcnQgKGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSkgaW50ZlxuICBpblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgKCBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIHNpZ3MgYWdfdHkgY291bnRzIHJhXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKSxcbiAgICBhbm5vdGVkJyApXG5cbmxldCBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgbGlua3NfYW5ub3QgbHAgcnAgbGMgcmMgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkIGxuazEgcCcgKChsaHNfbGlua3MsIHJoc19saW5rcykgYXMgbGlua3NfYW5ub3QpID1cbiAgICBsZXQgKCkgPVxuICAgICAgTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvblxuICAgICAgICAoTG9jLmdldF9hbm5vdCBwJy5Bc3QucG9ydF9uYW1lKVxuICAgICAgICBwJy5Bc3QucG9ydF9saW5rX21vZFxuICAgIGluXG4gICAgbWF0Y2ggbG5rMSwgcCcuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIExLYXBwYS5NYWludGFpbmVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3MpIF0sIFsgKExLYXBwYS5MTktfU09NRSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvcyksIExLYXBwYS5NYWludGFpbmVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbXG4gICAgICAgICAgKCBMS2FwcGEuTE5LX1RZUEUgKCgoZHN0X3AnJywgXykgYXMgZHN0X3ApLCAoKGRzdF90eScnLCBfKSBhcyBkc3RfdHkpKSxcbiAgICAgICAgICAgIHBvcyApO1xuICAgICAgICBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1RZUEUgKChkc3RfcCcsIF8pLCAoZHN0X3R5JywgXykpLCBfKSBdIClcbiAgICAgIHdoZW4gZHN0X3AnJyA9IGRzdF9wJyAmJiBkc3RfdHknJyA9IGRzdF90eScgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3MgZHN0X3R5IGRzdF9wIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggXyxcbiAgICAgICAgKCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSBfLCBfKSBdICkgKSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvcykgXSwgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gLT5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19BTlksIHBvcyksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgTEthcHBhLkZyZWVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0sIFtdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sIFtdXG4gICAgICB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgTEthcHBhLkZyZWVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggKFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdIHwgW10pLFxuICAgICAgICAoWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gfCBbXSkgKVxuICAgICAgd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgW10sIFtdIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkXG4gICAgICBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zIGkgYWdfaWQgcF9pZCBMS2FwcGEuRnJlZWRcbiAgICAgICAgICBsaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgIGxoc19saW5rcycsIHJoc19saW5rc1xuICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0sIFtdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zIGkgYWdfaWQgcF9pZCBMS2FwcGEuRnJlZWRcbiAgICAgICAgICBsaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgIGxoc19saW5rcycsIHJoc19saW5rc1xuICAgIHwgWyAoTEthcHBhLkxOS19BTlksIHBvc19saW5rKSBdLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zX2xpbmspLCBMS2FwcGEuTGlua2VkIGkgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspIF0sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zJykgXSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuTGlua2VkIGkgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zJyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcycpIF0gKSAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC1cbiAgICAgICAgICBidWlsZF9sX3R5cGUgc2lncyBwb3NfbGluayBkc3RfdHkgZHN0X3AgKExLYXBwYS5MaW5rZWQgaSlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcycgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkxpbmtlZCBpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgW10sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUsIExLYXBwYS5MaW5rZWQgaVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3NfaSkgXSxcbiAgICAgICAgWyAoTEthcHBhLkxOS19WQUxVRSAoaiwgKCkpLCBwb3NfaikgXSApIC0+XG4gICAgICBsZXQgdmEsIGxoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nIHBvc19pIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIChMS2FwcGEuTGlua2VkIGopIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zX2ogaiBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbXG4gICAgICAgICAgKCAoIExLYXBwYS5MTktfVkFMVUUgKF8sICgpKVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUVcbiAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChfLCBfKVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX0FOWSApLFxuICAgICAgICAgICAgXyApO1xuICAgICAgICBdLFxuICAgICAgICBbXSApIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbXSwgWyAoKExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5MTktfVkFMVUUgKF8sIF8pKSwgXykgXVxuICAgICAgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfLCBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgICB8IF8sIF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gIGluXG4gIGxldCByZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiBwX2lkIGludDEgcCcgPVxuICAgIGxldCAoKSA9XG4gICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uXG4gICAgICAgIChMb2MuZ2V0X2Fubm90IHAnLkFzdC5wb3J0X25hbWUpXG4gICAgICAgIHAnLkFzdC5wb3J0X2ludF9tb2RcbiAgICBpblxuICAgIG1hdGNoIGludDEsIHAnLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgfCBbXSwgW10gfCBbIChOb25lLCBfKSBdLCBbIChOb25lLCBfKSBdIC0+ICgpXG4gICAgfCBbIChTb21lIHZhLCBwb3MpIF0sIFsgKFNvbWUgdmEnLCBwb3MnKSBdIC0+XG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX1ZBTF9DSEFOR0VEXG4gICAgICAgICAgKCBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCBwb3MpIHNpZ24sXG4gICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhJywgcG9zJykgc2lnbiApXG4gICAgfCBbXSwgWyAoU29tZSB2YSwgdmFwb3MpIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiaW50ZXJuYWwgc3RhdGUgb2Ygc2l0ZSAnJXMnIG9mIGFnZW50ICclcycgaXMgbW9kaWZpZWQgYWx0aG91Z2ggXFxcbiAgICAgICAgICAgICAgIGl0IGlzIGxlZnQgdW5wZWNpZmllZCBpbiB0aGUgbGVmdCBoYW5kIHNpZGVcIlxuICAgICAgICAgICAgICBuYSBhZ2VudF9uYW1lKVxuICAgICAgaW5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRURcbiAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgdmFwb3MpIHNpZ24pXG4gICAgfCBbIChOb25lLCBfKSBdLCBbIChTb21lIHZhLCB2YXBvcykgXSAtPlxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRFxuICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCB2YXBvcykgc2lnbilcbiAgICB8IFtdLCBbIF8gXSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgWyBfIF0sIChbIChOb25lLCBfKSBdIHwgW10pIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgcCcuQXN0LnBvcnRfbmFtZVxuICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfLCBfIHwgXywgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMgcG9zXG4gIGluXG4gIGxldCBmaW5kX2luX3IgKG5hLCBwb3MpIHJwID1cbiAgICBsZXQgcCcsIHIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biBwIC0+IFN0cmluZy5jb21wYXJlIChMb2MudiBwLkFzdC5wb3J0X25hbWUpIG5hID0gMCkgcnBcbiAgICBpblxuICAgIG1hdGNoIHAnIHdpdGhcbiAgICB8IFsgcCcgXSAtPiBwJywgclxuICAgIHwgW10gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIChuYSwgcG9zKVxuICAgIHwgXyA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgKG5hLCBwb3MpXG4gIGluXG4gIGxldCBycF9yLCBhbm5vdGVkLCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAocnAsIGFubm90ZWQsIHBzZXQpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2xpbmtfbW9kIGluXG4gICAgICAgIGxldCAoKSA9IExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb24gcF9wb3MgcC5Bc3QucG9ydF9pbnRfbW9kIGluXG5cbiAgICAgICAgbGV0IHAnLCBycCcgPSBmaW5kX2luX3IgcG9ydF9uYW1lIHJwIGluXG4gICAgICAgIGxldCBhbm5vdGVkJyA9IHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZCBwLkFzdC5wb3J0X2xpbmsgcCcgYW5ub3RlZCBpblxuICAgICAgICBsZXQgKCkgPSByZWdpc3Rlcl9pbnRlcm5hbF9tb2RpZiBwX2lkIHAuQXN0LnBvcnRfaW50IHAnIGluXG4gICAgICAgIHJwJywgYW5ub3RlZCcsIHBzZXQnKVxuICAgICAgKHJwLCBsaW5rc19hbm5vdCwgTW9kcy5JbnRTZXQuZW1wdHkpXG4gICAgICBscFxuICBpblxuICBsZXQgYW5ub3RlZCcgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFubm90ZWQgcCAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgW10gcCBpblxuICAgICAgICByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWRcbiAgICAgICAgICBbIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZIF1cbiAgICAgICAgICBwIGFubm90ZWQpXG4gICAgICBhbm5vdGVkIHJwX3JcbiAgaW5cblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IGZhbHNlO1xuICAgICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSBwb3J0cywgQXJyYXkuY29weSBpbnRlcm5hbHMpO1xuICAgIH1cbiAgaW5cbiAgKCBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jb3VudGVyc193aXRoX2RpZmYgc2lncyBhZ190eSBsYyByYyByYVxuICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCksXG4gICAgYW5ub3RlZCcgKVxuXG5sZXQgcmVmZXJfbGlua3NfYW5ub3QgP3dhcm5pbmcgc2lncyBsaW5rc19hbm5vdCBtaXggPVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChyYV8gOiBMS2FwcGEucnVsZV9hZ2VudCBDb3VudGVyc19jb21waWxlci53aXRoX2FnZW50X2NvdW50ZXJzKSAtPlxuICAgICAgbGV0IHJhID0gcmFfLmFnZW50IGluXG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoLTEsIC0xKSksIHBvcyksIG1vZHMgLT5cbiAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBqIGxpbmtzX2Fubm90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIChkc3RfdHksIGRzdF9wLCBtYWludGFpbmVkKSAtPlxuICAgICAgICAgICAgICBsZXQgbW9kcycgPVxuICAgICAgICAgICAgICAgIGlmIG1haW50YWluZWQgdGhlblxuICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtb2RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggbW9kcycgd2l0aFxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5NYWludGFpbmVkIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuTGlua2VkIF8gLT5cbiAgICAgICAgICAgICAgICAgIChtYXRjaCB3YXJuaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHdhcm5pbmcgLT5cbiAgICAgICAgICAgICAgICAgICAgcnVsZV9pbmR1Y2VzX2xpbmtfcGVybXV0YXRpb24gfndhcm5pbmcgfnBvcyB+ZHN0X3R5IHNpZ3NcbiAgICAgICAgICAgICAgICAgICAgICByYS5MS2FwcGEucmFfdHlwZSBpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYS5MS2FwcGEucmFfcG9ydHMuKGkpIDwtXG4gICAgICAgICAgICAgICAgKExLYXBwYS5MTktfVkFMVUUgKGosIChkc3RfcCwgZHN0X3R5KSksIHBvcyksIG1vZHMnKVxuICAgICAgICAgIHwgKCAoICggTEthcHBhLkxOS19WQUxVRSBfIHwgTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuTE5LX1NPTUVcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5MTktfVFlQRSBfIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgICAgICAgICAgXyApLFxuICAgICAgICAgICAgICBfICkgLT5cbiAgICAgICAgICAgICgpKVxuICAgICAgICByYS5MS2FwcGEucmFfcG9ydHMpXG4gICAgbWl4XG5cbmxldCBzZXBhcmF0ZV9zaXRlcyBscyA9XG4gIGxldCBhLCBiID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAocHMsIGNzKSAtPiBmdW5jdGlvblxuICAgICAgICB8IEFzdC5Qb3J0IHAgLT4gcCA6OiBwcywgY3NcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+IHBzLCBjIDo6IGNzKVxuICAgICAgKFtdLCBbXSkgbHNcbiAgaW5cbiAgTGlzdC5yZXYgYSwgYlxuXG5sZXQgZmluYWxfcnVsZV9zYW5pdHkgP3dhcm5pbmcgc2lnc1xuICAgICgobGhzX2xpbmtzX29uZSwgbGhzX2xpbmtzX3R3byksIChyaHNfbGlua3Nfb25lLCBfKSkgbWl4ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5yb290IGxoc19saW5rc19vbmUgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuICBpblxuICBsZXQgKCkgPSByZWZlcl9saW5rc19hbm5vdCA/d2FybmluZyBzaWdzIGxoc19saW5rc190d28gbWl4IGluXG4gIG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgcmhzX2xpbmtzX29uZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcblxuKCpcbklzIHJlc3BvbnNpYmxlIGZvciB0aGUgY2hlY2sgdGhhdDpcbi0gYWdlbnQgZXhpc3RzXG4tIHNpdGVzIGV4aXN0XG4tIHVuaXF1ZSBzaXRlIG9jY3VyZW5jZSAvIGFnZW50XG4tIGludGVybmFsX3N0YXRlcyBleGlzdFxuLSB1bmlxdWUgaW50ZXJuYWxfc3RhdGUgLyBzaXRlXG4tIGxpbmtzIGFwcGVhciBleGFjdGx5IHR3aWNlXG4qKVxubGV0IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjMgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyBpblxuICBsZXQgcmVjIGF1eCBsaW5rc19hbm5vdCBhY2MgbGhzIHJocyA9XG4gICAgbWF0Y2ggbGhzLCByaHMgd2l0aFxuICAgIHwgQXN0LkFic2VudCBwb3MgOjogXywgXyB8IChBc3QuUHJlc2VudCBfIDo6IF8gfCBbXSksIEFzdC5BYnNlbnQgcG9zIDo6IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkFic2VudCBhZ2VudCBhcmUgS2FTaW0gPiAzIHN5bnRheFwiLCBwb3MpKVxuICAgIHwgKCBBc3QuUHJlc2VudCAoKChsYWdlbnRfbmFtZSwgbHBvcykgYXMgYWdfdHkpLCBsYWdfcywgbG1vZCkgOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgocmFnZW50X25hbWUsIHJwb3MpLCByYWdfcywgcm1vZCkgOjogcnQgKVxuICAgICAgd2hlbiBTdHJpbmcuY29tcGFyZSBsYWdlbnRfbmFtZSByYWdlbnRfbmFtZSA9IDBcbiAgICAgICAgICAgJiYgQXN0Lm5vX21vcmVfc2l0ZV9vbl9yaWdodCB0cnVlIGxhZ19zIHJhZ19zIC0+XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgbHBvcyBsbW9kO1xuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHJwb3Mgcm1vZDtcbiAgICAgIGxldCBsYWdfcCwgbGFnX2MgPSBzZXBhcmF0ZV9zaXRlcyBsYWdfcyBpblxuICAgICAgbGV0IHJhZ19wLCByYWdfYyA9IHNlcGFyYXRlX3NpdGVzIHJhZ19zIGluXG4gICAgICBsZXQgcmEsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgIGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAgICAgICBhZ190eSBsaW5rc19hbm5vdCBsYWdfcCByYWdfcCBsYWdfYyByYWdfY1xuICAgICAgaW5cbiAgICAgIGF1eCBsaW5rc19hbm5vdCcgKHJhIDo6IGFjYykgbHQgcnRcbiAgICB8ICgoQXN0LlByZXNlbnQgXyA6OiBfIHwgW10pIGFzIGVyYXNlZCksIGFkZGVkIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBhZGRlZCA8PiBbXSB0aGVuXG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gKClcbiAgICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoKGxhZywgcG9zKSwgbGFnX3AsIF8pIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoKHJhZywgXyksIHJhZ19wLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbGFnIHJhZyA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEFzdC5ub19tb3JlX3NpdGVfb25fcmlnaHQgZmFsc2UgbGFnX3AgcmFnX3ApXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUnVsZSBpbmR1Y2VkIGRlbGV0aW9uIEFORCBjcmVhdGlvbiBvZiB0aGUgYWdlbnQgJXNcIiBsYWcpKVxuICAgICAgICAgICAgZXJhc2VkXG4gICAgICBpblxuICAgICAgbGV0IG1peCwgbGxpbmtzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChhY2MsIGxhbm5vdCkgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBwb3MgLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIkFic2VudCBhZ2VudCBhcmUgS2FTaW0gPiAzIHN5bnRheFwiLCBwb3MpKVxuICAgICAgICAgICAgfCBBc3QuUHJlc2VudCAoKChfLCBwb3MpIGFzIG5hKSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIG1vZGlmO1xuICAgICAgICAgICAgICBsZXQgaW50ZiwgY291bnRzID0gc2VwYXJhdGVfc2l0ZXMgc2l0ZXMgaW5cbiAgICAgICAgICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzIGxhbm5vdCBuYSBpbnRmIGNvdW50c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYSA6OiBhY2MsIGxhbm5vdCcpXG4gICAgICAgICAgKGFjYywgZnN0IGxpbmtzX2Fubm90KVxuICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBjbWl4LCBybGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgcmFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgbmEpLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICAgICAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3MgbW9kaWY7XG4gICAgICAgICAgICAgIGxldCBpbnRmLCBjb3VudHMgPSBzZXBhcmF0ZV9zaXRlcyBzaXRlcyBpblxuICAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBuYSBpbnRmXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBuYSBjb3VudHNcbiAgICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgICB4J1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB4JycgOjogYWNjLCByYW5ub3QnKVxuICAgICAgICAgIChbXSwgc25kIGxpbmtzX2Fubm90KVxuICAgICAgICAgIGFkZGVkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gZmluYWxfcnVsZV9zYW5pdHkgfndhcm5pbmcgc2lncyAobGxpbmtzLCBybGlua3MpIG1peCBpblxuICAgICAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG4gIGluXG4gIGF1eFxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gKExpc3QuZmxhdHRlbiBsaHMpIChMaXN0LmZsYXR0ZW4gcmhzKVxuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92NCB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlY0IGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGxocyByaHMgPVxuICAgIG1hdGNoIGxocywgcmhzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBsaW5rc19hbm5vdCwgbWl4LCBjbWl4XG4gICAgfCBBc3QuQWJzZW50IF8gOjogbHQsIEFzdC5BYnNlbnQgXyA6OiBydCAtPiBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggbHQgcnRcbiAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgdHkpLCBzaXRlcywgbG1vZCkgOjogbHQsIEFzdC5BYnNlbnQgXyA6OiBydCAtPlxuICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBsbW9kO1xuICAgICAgbGV0IGludGYsIGNvdW50cyA9IHNlcGFyYXRlX3NpdGVzIHNpdGVzIGluXG4gICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3NcbiAgICAgICAgICAoZnN0IGxpbmtzX2Fubm90KSB0eSBpbnRmIGNvdW50c1xuICAgICAgaW5cbiAgICAgIGF1eCAobGFubm90Jywgc25kIGxpbmtzX2Fubm90KSAocmEgOjogbWl4KSBjbWl4IGx0IHJ0XG4gICAgfCBBc3QuQWJzZW50IF8gOjogbHQsIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgdHkpLCBzaXRlcywgcm1vZCkgOjogcnQgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3Mgcm1vZDtcbiAgICAgIGxldCBpbnRmLCBjb3VudHMgPSBzZXBhcmF0ZV9zaXRlcyBzaXRlcyBpblxuICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzXG4gICAgICAgICAgP2NvbnRhY3RfbWFwIChzbmQgbGlua3NfYW5ub3QpIHR5IGludGZcbiAgICAgIGluXG4gICAgICBsZXQgeCcnID1cbiAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIHR5IGNvdW50c1xuICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgeCdcbiAgICAgIGluXG4gICAgICBhdXggKGZzdCBsaW5rc19hbm5vdCwgcmFubm90JykgbWl4ICh4JycgOjogY21peCkgbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIGlmXG4gICAgICAgIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3NcbiAgICAgIHRoZW4gKFxuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgbHBvcyBsbW9kO1xuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2l0ZXMgbGFnX3MgaW5cbiAgICAgICAgbGV0IHJhZ19wLCByYWdfYyA9IHNlcGFyYXRlX3NpdGVzIHJhZ19zIGluXG4gICAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ190eSBsaW5rc19hbm5vdCBsYWdfcCByYWdfcCBsYWdfYyByYWdfY1xuICAgICAgICBpblxuICAgICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBtaXgpIGNtaXggbHQgcnRcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHJwb3MpKVxuICAgIHwgKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXywgW11cbiAgICB8IFtdLCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlYyBhdXhfbGluZSBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4IGluXG4gICAgICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcbiAgICB8IGhsIDo6IHRsLCBociA6OiB0ciAtPlxuICAgICAgbGV0IGxpbmtzX2Fubm90JywgbWl4JywgY21peCcgPSBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggaGwgaHIgaW5cbiAgICAgIGF1eF9saW5lIGxpbmtzX2Fubm90JyBtaXgnIGNtaXgnIHRsIHRyXG4gICAgfCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXywgW11cbiAgICB8IFtdLCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHBvcykpXG4gICAgfCBbXSA6OiBfLCBbXSB8IFtdLCBbXSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJJbnZhcmlhbnQgdmlvbGF0aW9uIGluIGFubm90YXRlX2xoc193aXRoLi4uXCIpKVxuICBpblxuICBhdXhfbGluZVxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gW10gbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgfCBBc3QuVjMgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG4gIHwgQXN0LlY0IC0+IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgIChtIDogQXN0Lm1peHR1cmUpIDpcbiAgICBDb3VudGVyc19jb21waWxlci5ydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVyc1xuICAgICogQ291bnRlcnNfY29tcGlsZXIucmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gICgqIG1peCBpcyB0aGUgbWl4dHVyZSBmcm9tIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJ1bGUsIGNtaXggaXMgdGhlIG1peHR1cmUgYWZ0ZXIgdGhlIHJ1bGUgd2FzIGFwcGxpZWQgKilcbiAgbGV0IGxpbmtzX2Fubm90LCBtaXgsIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAobGFubm90LCBhY2MsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBsYW5ub3QsIGFjYywgbmV3c1xuICAgICAgICAgfCBBc3QuUHJlc2VudCAodHksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgbGV0IGludGYsIGNvdW50cyA9IHNlcGFyYXRlX3NpdGVzIHNpdGVzIGluXG4gICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgIHwgQXN0Lk5vTW9kIC0+XG4gICAgICAgICAgICAgbGV0IGEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZWRpdF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGUgc2lnc1xuICAgICAgICAgICAgICAgICA/Y29udGFjdF9tYXAgdHkgbGFubm90IGludGYgY291bnRzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsYW5ub3QnLCBhIDo6IGFjYywgbmV3c1xuICAgICAgICAgICB8IEFzdC5DcmVhdGUgLT5cbiAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgP2NvbnRhY3RfbWFwIChzbmQgbGFubm90KSB0eSBpbnRmXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyB0eSBjb3VudHNcbiAgICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChmc3QgbGFubm90LCByYW5ub3QnKSwgYWNjLCB4JycgOjogbmV3c1xuICAgICAgICAgICB8IEFzdC5FcmFzZSAtPlxuICAgICAgICAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICB+cl9lZGl0X3N0eWxlOnRydWUgc2lncyAoZnN0IGxhbm5vdCkgdHkgaW50ZiBjb3VudHNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChsYW5ub3QnLCBzbmQgbGFubm90KSwgcmEgOjogYWNjLCBuZXdzKSkpXG4gICAgICAoICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKSxcbiAgICAgICAgW10sXG4gICAgICAgIFtdIClcbiAgICAgIG1cbiAgaW5cbiAgZmluYWxfcnVsZV9zYW5pdHkgP3dhcm5pbmc6Tm9uZSBzaWdzIGxpbmtzX2Fubm90IG1peDtcbiAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdCA9XG4gIGxldCAocmhzX2xpbmtzX29uZSwgXyksIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAocmFubm90LCBuZXdzKSAtPiBmdW5jdGlvblxuICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGNhbm5vdCBvY2N1cnMgaW4gY3JlYXRlZCBtaXh0dXJlc1wiLCBwb3MpKVxuICAgICAgICAgfCBBc3QuUHJlc2VudCAodHksIHNpdGVzLCBfbW9kaWYpIC0+XG4gICAgICAgICAgIGxldCBpbnRmLCBjb3VudHMgPSBzZXBhcmF0ZV9zaXRlcyBzaXRlcyBpblxuICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgIGFubm90YXRlX2NyZWF0ZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6dHJ1ZVxuICAgICAgICAgICAgICAgc2lncyA/Y29udGFjdF9tYXAgcmFubm90IHR5IGludGZcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIHR5IGNvdW50c1xuICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhbm5vdCcsIHgnJyA6OiBuZXdzKSlcbiAgICAgICgoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSwgW10pXG4gICAgICBtXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgTGlzdC5yZXYgY21peFxuXG5sZXQgZ2l2ZV9ydWxlX2xhYmVsIGJpZGlyZWN0aW9uYWwgKGlkLCBzZXQpIHByaW50ZXIgciA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoc3VjYyBpZCwgc2V0KSwgRm9ybWF0LmFzcHJpbnRmIFwiciVpOiAlYVwiIGlkIHByaW50ZXIgclxuICB8IFNvbWUgKGxhYiwgcG9zKSAtPlxuICAgIGxldCBzZXQnID0gTW9kcy5TdHJpbmdTZXQuYWRkIGxhYiBzZXQgaW5cbiAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJBIHJ1bGUgbmFtZWQgJ1wiIF4gbGFiIF4gXCInIGFscmVhZHkgZXhpc3RzLlwiLCBwb3MpKVxuICAgIGVsc2UgaWYgYmlkaXJlY3Rpb25hbCB0aGVuIChcbiAgICAgIGxldCBzZXQnJyA9IE1vZHMuU3RyaW5nU2V0LmFkZCAoQXN0LmZsaXBfbGFiZWwgbGFiKSBzZXQnIGluXG4gICAgICBpZiBzZXQnID09IHNldCcnIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBBc3QuZmxpcF9sYWJlbCBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgICBlbHNlXG4gICAgICAgIChpZCwgc2V0JycpLCBsYWJcbiAgICApIGVsc2VcbiAgICAgIChpZCwgc2V0JyksIGxhYlxuXG5sZXQgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwIChwb3MgOiBMb2MudClcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbWF0Y2hcbiAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlOmZhbHNlIHNpZ3NcbiAgICAgID9jb250YWN0X21hcCBtaXhcbiAgd2l0aFxuICB8IHIsIFtdIC0+IGZzdCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyByIFtdKVxuICB8IF8sIF8gLT5cbiAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoXCJBIG1peHR1cmUgY2Fubm90IGNyZWF0ZSBhZ2VudHNcIiwgcG9zKSlcblxubGV0IHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbGV0IGIgPVxuICAgIGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbWl4XG4gIGluXG4gIHNuZCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBbXSBiKVxuXG5sZXQgY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zID1cbiAgbGV0IGkgPVxuICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdmFyaWFibGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBtYXhfYWxsb3dlZF92YXIgd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJlZmVyZW5jZSB0byBub3QgeWV0IGRlZmluZWQgJ1wiIF4gbGFiIF4gXCInIGlzIGZvcmJpZGRlbi5cIiwgcG9zKSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgaVxuXG5sZXQgY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcyA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHRrX25hbWUgdG9rIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKHRrX25hbWUgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB0b2tlblwiLCBwb3MpKVxuXG5sZXQgcmVjIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyXG4gICAgKGFsZywgcG9zKSA9XG4gICggKG1hdGNoIGFsZyB3aXRoXG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFXG4gICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgYXN0KVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBsYWIgLT5cbiAgICAgIEFsZ19leHByLkFMR19WQVIgKGNvbnZlcnRfYWxnX3ZhciA/bWF4X2FsbG93ZWRfdmFyIGFsZ3MgbGFiIHBvcylcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIHRrX25hbWUgLT5cbiAgICAgIEFsZ19leHByLlRPS0VOX0lEIChjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgYXN0KSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QgKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdGtfbmFtZSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU5cbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgZXhwcixcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zIClcbiAgICB8IChBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8pIGFzIHggLT4geFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGIgKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBhIClcbiAgICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGNvbmQsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHllcyxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgbm8gKSksXG4gICAgcG9zIClcblxuYW5kIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgP21heF9hbGxvd2VkX3ZhciA9XG4gIGZ1bmN0aW9uXG4gIHwgKChBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UpLCBfKSBhcyB4IC0+IHhcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIHgsIHkpLCBwb3MgLT5cbiAgICAoIEFsZ19leHByLkJJTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeSApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgeCksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuVU5fQk9PTF9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeCApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuXG5sZXQgcHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgPSBmdW5jdGlvblxuICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgeCAtPlxuICAgIFByaW1pdGl2ZXMuQWxnX3BleHByXG4gICAgICAoYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIHgpXG5cbnR5cGUgcnVsZV9pbnRlcl9yZXAgPSB7XG4gIGxhYmVsX29wdDogKHN0cmluZyAqIExvYy50KSBvcHRpb247XG4gIGJpZGlyZWN0aW9uYWw6IGJvb2w7ICgqIFRPRE8gY2hlY2sgKilcbiAgbWl4dHVyZTogTEthcHBhLnJ1bGVfYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBjcmVhdGVkX21peDogUmF3X21peHR1cmUuYWdlbnQgQ291bnRlcnNfY29tcGlsZXIud2l0aF9hZ2VudF9jb3VudGVycyBsaXN0O1xuICBybV90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAgYWRkX3Rva2VuOlxuICAgICgoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0O1xuICBrX2RlZjogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudDtcbiAga191bjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpXG4gICAgKiAoKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgKiBMb2MudCkgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcG9zOiBMb2MudDtcbn1cbigqKiBJbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24gZm9yIHJ1bGUgdHlwZSAqKVxuXG4oKiogW2Fzc2VtYmxlX3J1bGVdIHRyYW5zbGF0ZXMgYSBydWxlX2ludGVyX3JlcCBpbnRvIGEgTEthcHBhLnJ1bGUgKilcbmxldCBhc3NlbWJsZV9ydWxlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiAocnVsZSA6IHJ1bGVfaW50ZXJfcmVwKVxuICAgIChzaWdzIDogU2lnbmF0dXJlLnMpICh0b2sgOiBpbnQgTW9kcy5TdHJpbmdNYXAudClcbiAgICAoYWxncyA6IGludCBNb2RzLlN0cmluZ01hcC50KSA6IExLYXBwYS5ydWxlID1cbiAgbGV0IChyX21peCwgcl9jcmVhdGVkKSA6IExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgICBDb3VudGVyc19jb21waWxlci5jb21waWxlX2NvdW50ZXJfaW5fcnVsZSBzaWdzIHJ1bGUubWl4dHVyZSBydWxlLmNyZWF0ZWRfbWl4XG4gIGluXG4gIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9BTEdfT1AgKE9wZXJhdG9yLlVNSU5VUywgYWwpKSksXG4gICAgICAgICAgY29udmVydF90b2tlbl9uYW1lIHRrIHRvayBwb3MgKSlcbiAgICAgIHJ1bGUucm1fdG9rZW5cbiAgICB8PiBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gKGFsLCAodGssIHBvcykpIC0+XG4gICAgICAgICAgICggYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGFsLFxuICAgICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICAgICBydWxlLmFkZF90b2tlblxuICAgIHw+IExpc3QucmV2XG4gIGluXG4gIGxldCByX3JhdGUgPVxuICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBydWxlLmtfZGVmXG4gIGluXG4gIGxldCByX3VuX3JhdGUgPVxuICAgIGxldCByX2Rpc3QgZCA9XG4gICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIGRcbiAgICBpblxuICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgKGZ1biAodW5fcmF0ZScsIGRpc3QpIC0+XG4gICAgICAgIGxldCB1bl9yYXRlJycgPVxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcjpOb25lIHVuX3JhdGUnXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgZCAtPiB1bl9yYXRlJycsIFNvbWUgKHJfZGlzdCBkKVxuICAgICAgICB8IE5vbmUgLT4gdW5fcmF0ZScnLCBOb25lKVxuICAgICAgcnVsZS5rX3VuXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucl9taXg7XG4gICAgcl9jcmVhdGVkO1xuICAgIHJfZWRpdF9zdHlsZSA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICByX2RlbHRhX3Rva2VucztcbiAgICByX3JhdGU7XG4gICAgcl91bl9yYXRlO1xuICB9XG5cbmxldCBtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcCBtb2RpZlxuICAgIGFjYyA9XG4gIG1hdGNoIG1vZGlmIHdpdGhcbiAgfCBBc3QuQVBQTFkgKG5iLCAoYXN0X3J1bGUsIHBvcykpIC0+XG4gICAgbGV0IHJ1bGUgOiBydWxlX2ludGVyX3JlcCA9XG4gICAgICBtYXRjaCBhc3RfcnVsZS5Bc3QucmV3cml0ZSB3aXRoXG4gICAgICB8IEFzdC5FZGl0IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0IH5pc19ydWxlOnRydWVcbiAgICAgICAgICAgIHNpZ3MgfmNvbnRhY3RfbWFwIHJ1bGVfY29udGVudC5taXhcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IHJ1bGVfY29udGVudC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgICAgfCBBc3QuQXJyb3cgcnVsZV9jb250ZW50IC0+XG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIHJ1bGVfY29udGVudC5saHMgcnVsZV9jb250ZW50LnJoc1xuICAgICAgICBpblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0ID0gTm9uZTtcbiAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IHJ1bGVfY29udGVudC5ybV90b2tlbjtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuYWRkX3Rva2VuO1xuICAgICAgICAgIGtfZGVmID0gYXN0X3J1bGUua19kZWY7XG4gICAgICAgICAga191biA9IGFzdF9ydWxlLmtfdW47XG4gICAgICAgICAgcG9zO1xuICAgICAgICB9XG4gICAgaW5cbiAgICAoIEFzdC5BUFBMWVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBuYixcbiAgICAgICAgICAoYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gcnVsZSBzaWdzIHRvayBhbGdzLCBwb3MpICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5VUERBVEUgKChsYWIsIHBvcyksIGhvdykgLT5cbiAgICBsZXQgaSA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2VcbiAgICAgICAgfmV4Y2VwOlxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiVmFyaWFibGUgXCIgXiBsYWIgXiBcIiBpcyBub3QgZGVmaW5lZFwiLCBwb3MpKVxuICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbGFiIGFsZ3MpXG4gICAgaW5cbiAgICAoIEFzdC5VUERBVEVcbiAgICAgICAgKChpLCBwb3MpLCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgaG93KSxcbiAgICAgIGkgOjogYWNjIClcbiAgfCBBc3QuU1RPUCBwIC0+XG4gICAgKCBBc3QuU1RPUFxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgQXN0LlNOQVBTSE9UIChyYXcsIHApIC0+XG4gICAgKCBBc3QuU05BUFNIT1RcbiAgICAgICAgKCByYXcsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU4gKHJlbCwgcCkgLT5cbiAgICAoIEFzdC5ESU5cbiAgICAgICAgKCByZWwsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5ESU5PRkYgcCAtPlxuICAgICggQXN0LkRJTk9GRlxuICAgICAgICAoTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwKSxcbiAgICAgIGFjYyApXG4gIHwgKEFzdC5QTE9URU5UUlkgfCBBc3QuQ0ZMT1dMQUJFTCAoXywgXykpIGFzIHggLT4geCwgYWNjXG4gIHwgQXN0LlBSSU5UIChwLCBwJykgLT5cbiAgICAoIEFzdC5QUklOVFxuICAgICAgICAoIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCxcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAnXG4gICAgICAgICksXG4gICAgICBhY2MgKVxuICB8IEFzdC5DRkxPV01JWCAoYiwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuQ0ZMT1dNSVggKGIsIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgbSwgcG9zKSksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TUEVDSUVTX09GIChiLCBwLCAobSwgcG9zKSkgLT5cbiAgICAoIEFzdC5TUEVDSUVTX09GXG4gICAgICAgICggYixcbiAgICAgICAgICBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAsXG4gICAgICAgICAgKG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBtLCBwb3MpICksXG4gICAgICBhY2MgKVxuXG5sZXQgcGVydHVyYmF0aW9uX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcFxuICAgICgoYWxhcm0sIHByZSwgbW9kcywgcG9zdCksIHBvcykgdXBfdmFycyA6XG4gICAgKF8sIF8sIF8sIF8pIEFzdC5wZXJ0dXJiYXRpb24gKiBpbnQgbGlzdCA9XG4gIGxldCBtb2RzJywgdXBfdmFycycgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKG1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGNvbnRhY3RfbWFwKVxuICAgICAgbW9kcyB1cF92YXJzXG4gIGluXG4gIGxldCBtYXhfYWxsb3dlZF92YXIgPSBOb25lIGluXG4gICggKCAoIGFsYXJtLFxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIpXG4gICAgICAgICAgcHJlLFxuICAgICAgICBtb2RzJyxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyKVxuICAgICAgICAgIHBvc3QgKSxcbiAgICAgIHBvcyApLFxuICAgIHVwX3ZhcnMnIClcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBjb250YWN0X21hcCA9IGZ1bmN0aW9uXG4gIHwgQXN0LklOSVRfTUlYICh3aG8sIHBvcykgLT5cbiAgICBBc3QuSU5JVF9NSVhcbiAgICAgIChyYXdfbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwIHdobywgcG9zKVxuICB8IEFzdC5JTklUX1RPSyBsYWIgLT5cbiAgICBBc3QuSU5JVF9UT0tcbiAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgKGZ1biAobGFiLCBwb3MpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiB0b2sgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeCAtPiB4LCBwb3NcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdG9rZW5cIiwgcG9zKSkpXG4gICAgICAgICBsYWIpXG5cbmxldCBhZGRfdW5fdmFyaWFibGUga191biBhY2MgcmF0ZV92YXIgPVxuICBtYXRjaCBrX3VuIHdpdGhcbiAgfCBOb25lIC0+IGFjYywgTm9uZVxuICB8IFNvbWUgKGssIGRpc3QpIC0+XG4gICAgbGV0IGFjY191biwgaycgPVxuICAgICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgaykgdGhlblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjLFxuICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKSApXG4gICAgICBlbHNlXG4gICAgICAgIGFjYywga1xuICAgIGluXG4gICAgYWNjX3VuLCBTb21lIChrJywgZGlzdClcblxudHlwZSBhY2NfZnVuY3Rpb25fcnVsZXMgPSB7XG4gIHJ1bGVfbmFtZXM6IGludCAqIE1vZHMuU3RyaW5nU2V0LnQ7XG4gIGV4dHJhX3ZhcnM6XG4gICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkKSBsaXN0O1xuICBjbGVhbmVkX3J1bGVzOiBydWxlX2ludGVyX3JlcCBsaXN0O1xufVxuXG4oKiogW25hbWVfYW5kX3B1cmlmeV0gaXMgY2FsbGVkIGluIGEgZm9sZCB3aGlsZSBjb21waWxpbmcgdGhlIHJ1bGVzIGZyb20gQXN0LnJ1bGVzIGludG8gcnVsZV9pbnRlcl9yZXAgKilcbmxldCBuYW1lX2FuZF9wdXJpZnlfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAoYWNjIDogYWNjX2Z1bmN0aW9uX3J1bGVzKVxuICAgICgobGFiZWxfb3B0LCAoYXN0X3J1bGUsIHJfcG9zKSkgOlxuICAgICAgc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6IGFjY19mdW5jdGlvbl9ydWxlcyA9XG4gIGxldCBydWxlX25hbWVzJywgcnVsZV9sYWJlbCA9XG4gICAgZ2l2ZV9ydWxlX2xhYmVsIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgYWNjLnJ1bGVfbmFtZXMgQXN0LnByaW50X2FzdF9ydWxlXG4gICAgICBhc3RfcnVsZSBsYWJlbF9vcHRcbiAgaW5cbiAgbGV0IGFjYycsIGtfZGVmID1cbiAgICBpZiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBhc3RfcnVsZS5rX2RlZikgdGhlbiAoXG4gICAgICBsZXQgcmF0ZV92YXIgPSBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgYXN0X3J1bGUua19kZWYpIDo6IGFjYy5leHRyYV92YXJzLFxuICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICkgZWxzZVxuICAgICAgYWNjLmV4dHJhX3ZhcnMsIGFzdF9ydWxlLkFzdC5rX2RlZlxuICBpblxuICBsZXQgYWNjJycsIGtfdW4gPVxuICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX3VuIGFjYycgKHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIpXG4gIGluXG4gIG1hdGNoIGFzdF9ydWxlLnJld3JpdGUgd2l0aFxuICB8IEFzdC5FZGl0IGUgLT5cbiAgICBpZlxuICAgICAgYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCB8fCBhc3RfcnVsZS5rX29wIDw+IE5vbmVcbiAgICAgIHx8IGFzdF9ydWxlLmtfb3BfdW4gPD4gTm9uZVxuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJ1bGVzIGluIGVkaXQgbm90YXRpb24gY2Fubm90IGJlIGJpZGlyZWN0aW9uYWxcIiwgcl9wb3MpKTtcbiAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZTp0cnVlIHNpZ3NcbiAgICAgICAgfmNvbnRhY3RfbWFwIGUuQXN0Lm1peFxuICAgIGluXG4gICAge1xuICAgICAgcnVsZV9uYW1lcyA9IHJ1bGVfbmFtZXMnO1xuICAgICAgZXh0cmFfdmFycyA9IGFjYycnO1xuICAgICAgY2xlYW5lZF9ydWxlcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHRydWU7XG4gICAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICBybV90b2tlbiA9IFtdO1xuICAgICAgICAgIGFkZF90b2tlbiA9IGUuQXN0LmRlbHRhX3Rva2VuO1xuICAgICAgICAgIGtfZGVmO1xuICAgICAgICAgIGtfdW47XG4gICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgIH1cbiAgICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXM7XG4gICAgfVxuICB8IEFzdC5BcnJvdyBhIC0+XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgIGEuQXN0LmxocyBhLkFzdC5yaHNcbiAgICBpblxuICAgIGxldCBydWxlcycgPVxuICAgICAge1xuICAgICAgICBsYWJlbF9vcHQ7XG4gICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgbWl4dHVyZTtcbiAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgIHJtX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAga19kZWY7XG4gICAgICAgIGtfdW47XG4gICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgfVxuICAgICAgOjogYWNjLmNsZWFuZWRfcnVsZXNcbiAgICBpblxuICAgIGxldCBhY2MnJycsIHJ1bGVzJycgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuYmlkaXJlY3Rpb25hbCwgYXN0X3J1bGUua19vcCB3aXRoXG4gICAgICB8IHRydWUsIFNvbWUgayB3aGVuIEFsZ19leHByLmhhc19taXggKExvYy52IGspIC0+XG4gICAgICAgIGxldCByYXRlX3ZhciA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggKExvYy5hbm5vdF93aXRoX2R1bW15IHJhdGVfdmFyLCBrKSA6OiBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5BTEdfVkFSIHJhdGVfdmFyKTtcbiAgICAgICAgICAgIGtfdW4gPSBrX29wX3VuO1xuICAgICAgICAgICAgcG9zID0gcl9wb3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIDo6IHJ1bGVzJyApXG4gICAgICB8IHRydWUsIFNvbWUgcmF0ZSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXJfdW4gPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiIGluXG4gICAgICAgIGxldCBhY2NfdW4sIGtfb3BfdW4gPVxuICAgICAgICAgIGFkZF91bl92YXJpYWJsZSBhc3RfcnVsZS5rX29wX3VuIGFjYycnIHJhdGVfdmFyX3VuXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICAgICAgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB+Y29udGFjdF9tYXBcbiAgICAgICAgICAgIGEuQXN0LnJocyBhLkFzdC5saHNcbiAgICAgICAgaW5cbiAgICAgICAgKCBhY2NfdW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWxfb3B0ID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gKGwsIHApIC0+IEFzdC5mbGlwX2xhYmVsIGwsIHApIGxhYmVsX29wdDtcbiAgICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgICBjcmVhdGVkX21peDtcbiAgICAgICAgICAgIHJtX3Rva2VuID0gYS5Bc3QuYWRkX3Rva2VuO1xuICAgICAgICAgICAgYWRkX3Rva2VuID0gYS5Bc3Qucm1fdG9rZW47XG4gICAgICAgICAgICBrX2RlZiA9IHJhdGU7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCBmYWxzZSwgTm9uZSAtPiBhY2MnJywgcnVsZXMnXG4gICAgICB8IGZhbHNlLCBTb21lIF8gfCB0cnVlLCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoIFwiSW5jb21wYXRpYmxlIGFycm93IGFuZCBraW5lY3RpYyByYXRlIGZvciBpbnZlcnNlIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgIHJfcG9zICkpXG4gICAgaW5cbiAgICB7IHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJzsgZXh0cmFfdmFycyA9IGFjYycnJzsgY2xlYW5lZF9ydWxlcyA9IHJ1bGVzJycgfVxuXG50eXBlIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgPVxuICAoc3RyaW5nIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZ1xuKCoqIFRlbXBvcmFyeSB0eXBlIHRvIHN0b3JlIHNpdGUgc2lnbmF0dXJlIHdpdGggbGlzdCBsaW5rcyBpbnN0ZWFkIG9mIGFycmF5IGFycmF5IGxpbmtzICopXG5cbigqKiBbcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGV2YWx1YXRlcyB0byAoc2l0ZV9zaWdzLCBjb3VudGVyX2xpc3QpIHdoaWNoIGRlc2NyaWJlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBTaWduYXR1cmUudCBmb3IgYSBzaW5nbGUgYWdlbnQqKVxubGV0IHByZXBhcmVfYWdlbnRfc2lnIH4oc2l0ZXMgOiBBc3Quc2l0ZSBsaXN0KSA6XG4gICAgc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCA9XG4gIGxldCAoIChzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzKSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJfbmFtZXMgOiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCkgKSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIHNpdGUgKGFjY19zaXRlX3NpZ3MsIGFjY19jb3VudGVyX25hbWVzKSAtPlxuICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgKCogVE9ETyBzZWUgaWYgY2FuIHJlbW92ZSBBc3QgaGVyZSAqKVxuICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAoICggcC5wb3J0X25hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgTmFtZWREZWNscy5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgKFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB4LCBwb3MgLT4gKHgsIHBvcyksICgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gaW50ZXJuYWwgc3RhdGUgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnRfaW50KTtcbiAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjY19saW5rcycgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICggKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyApIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NfbGlua3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBzaWduYXR1cmUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyApKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChhLCBiKSwgXyAtPiAoYSwgYikgOjogYWNjX2xpbmtzJylcbiAgICAgICAgICAgICAgICAgICAgICAgW10gcC5wb3J0X2xpbmspO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJzX2luZm8gPSBOb25lO1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBhY2NfY291bnRlcl9uYW1lcyApXG4gICAgICAgIHwgQ291bnRlciBjIC0+XG4gICAgICAgICAgKCogV2UgYXJlIHJlYWRpbmcgaGVyZSBhIHNpZ25hdHVyZSwgb25seSBDRVEgdGVzdHMgYXJlIGFjY2VwdGVkICopXG4gICAgICAgICAgKG1hdGNoIGMuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBuLCBwb3MgPSBjLmNvdW50ZXJfbmFtZSBpblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgKFwiQ291bnRlciBcIiBeIG4gXiBcIiBzaG91bGQgaGF2ZSBhIHRlc3QgaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgICAgfCBTb21lICh0ZXN0LCBwb3MpIC0+XG4gICAgICAgICAgICAobWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgICB8IENWQVIgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKFwiQ291bnRlciBzaG91bGQgbm90IGhhdmUgYSB2YXIgaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgICAgICB8IENHVEUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKFwiQ291bnRlciBzaG91bGQgbm90IGhhdmUgPj0gaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgICAgICB8IENMVEUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKFwiQ291bnRlciBzaG91bGQgbm90IGhhdmUgPD0gaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgICAgICB8IENFUSBqIC0+XG4gICAgICAgICAgICAgICggKCBjLmNvdW50ZXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgICAgICAgICAgICAgICAoKiBBZ2VudCB3aXRoIGNvdW50ZXIgY2FuIGxpbmsgdG8gcG9ydCBbYl0gb24gY291bnRlciBhZ2VudCBbX19jb3VudGVyX2FnZW50XSAqKVxuICAgICAgICAgICAgICAgICAgICBsaW5rcyA9XG4gICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IFwiYlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IFwiX19jb3VudGVyX2FnZW50XCIgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX2luZm8gPSBTb21lIChqLCBMb2MudiBjLmNvdW50ZXJfZGVsdGEpO1xuICAgICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgOjogYWNjX3NpdGVfc2lncyxcbiAgICAgICAgICAgICAgICBjLmNvdW50ZXJfbmFtZSA6OiBhY2NfY291bnRlcl9uYW1lcyApKSkpXG4gICAgICBzaXRlcyAoW10sIFtdKVxuICBpblxuICBOYW1lZERlY2xzLmNyZWF0ZV9mcm9tX2xpc3Qgc2l0ZV9zaWdzX3ByZV9uYW1lZGRlY2xzLCBjb3VudGVyX25hbWVzXG5cbigqKiBbbWFrZV9jb3VudGVyX2FnZW50X3NpdGVfc2lncyBjb3VudGVyc19wZXJfYWdlbnRdIGV2YWx1YXRlcyB0b1xuICAoY291bnRlcl9hZ2VudF9uYW1lLCBzaXRlX3NpZ3NfY291bnRlcl9hZ2VudCkgd2hpY2ggZGVzY3JpYmUgdGhlIGNvdW50ZXJcbiAgICAgIGFnZW50IGFuZCBpdHMgc2l0ZSBzaWduYXR1cmVzIHdpdGggcG9zc2libGUgbGlua3MgdG8gb3RoZXIgYWdlbnRzLlxuICAgICAgW2NvdW50ZXJfaW5mb10gYXNzb2NpYXRlcyBlYWNoIGFnZW50IHRvIGEgbGlzdCBvZiBjb3VudGVyIHBvcnRzLCBvbmUgZm9yIGVhY2ggZGVmaW5lZCBjb3VudGVyICopXG5sZXQgbWFrZV9jb3VudGVyX2FnZW50X3NpdGVfc2lnc1xuICAgIChjb3VudGVyc19wZXJfYWdlbnQgOiAoKHN0cmluZyAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkgbGlzdCkgbGlzdCkgOlxuICAgIChzdHJpbmcgKiBMb2MudClcbiAgICAqICgoc3RyaW5nICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdCBTaWduYXR1cmUuc2l0ZV9zaWcgTmFtZWREZWNscy50XG4gICAgPVxuICBsZXQgY291bnRlcl9hZ2VudF9uYW1lID0gXCJfX2NvdW50ZXJfYWdlbnRcIiwgTG9jLmR1bW15IGluXG4gIGxldCBhX3BvcnRfbmFtZSA9IFwiYVwiLCBMb2MuZHVtbXkgaW5cbiAgKCogYWZ0ZXIgcG9ydCAqKVxuICBsZXQgYl9wb3J0X25hbWUgPSBcImJcIiwgTG9jLmR1bW15IGluXG5cbiAgKCogYmVmb3JlIHBvcnQgKilcblxuICAoKiBQb3J0IFthXSBjYW4gbGluayB0byBwb3J0IGIgb2YgYWdlbnQgb2YgdHlwZSBjb3VudGVyIGFnZW50ICopXG4gIGxldCBhX3BvcnRfc2lnID1cbiAgICB7XG4gICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgbGlua3MgPSBTb21lIFsgYl9wb3J0X25hbWUsIGNvdW50ZXJfYWdlbnRfbmFtZSBdO1xuICAgICAgY291bnRlcnNfaW5mbyA9IE5vbmU7XG4gICAgfVxuICBpblxuICAoKiBQb3J0IFtiXSBjYW4gbGluayB0byBwb3J0IGEgb2YgYWdlbnQgb2YgdHlwZSBjb3VudGVyIGFnZW50XG4gICAqIE9SIGZvciBlYWNoIGFnZW50IFthZ2VudF9uYW1lXSB3aXRoIGNvdW50ZXJzLCB0byB0aGVpciBwb3J0c1xuICAgKiBbYWdlbnRfY291bnRlcl9wb3J0X25hbWVdICopXG4gIGxldCBiX2xpbmtzID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKGFnZW50X25hbWUsIGNvdW50ZXJzX2Zyb21fYWdlbnQpIGFjYyAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUgLT4gYWdlbnRfY291bnRlcl9wb3J0X25hbWUsIGFnZW50X25hbWUpXG4gICAgICAgICAgY291bnRlcnNfZnJvbV9hZ2VudFxuICAgICAgICBAIGFjYylcbiAgICAgIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgWyBhX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF1cbiAgaW5cbiAgbGV0IGJfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgYl9saW5rcztcbiAgICAgIGNvdW50ZXJzX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgbGV0IHNpdGVfc2lnc19jb3VudGVyX2FnZW50ID1cbiAgICBOYW1lZERlY2xzLmNyZWF0ZSBbfCBhX3BvcnRfbmFtZSwgYV9wb3J0X3NpZzsgYl9wb3J0X25hbWUsIGJfcG9ydF9zaWcgfF1cbiAgaW5cbiAgY291bnRlcl9hZ2VudF9uYW1lLCBzaXRlX3NpZ3NfY291bnRlcl9hZ2VudFxuXG5sZXQgYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfihidWlsZF9jb250YWN0X21hcCA6IGJvb2wpXG4gICAgKGFnZW50X3NpZ3NfcHJlIDogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50KSA6XG4gICAgU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgbGV0IHNpemVfc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBhZ2VudF9zaWdzX3ByZSBpblxuICBOYW1lZERlY2xzLm1hcGlcbiAgICAoZnVuIGFnX2lkIGFnX25hbWUgLT5cbiAgICAgIE5hbWVkRGVjbHMubWFwIChmdW4gc2l0ZV9uYW1lX2FnMSBzaXRlX3NpZyAtPlxuICAgICAgICAgIGlmIG5vdCBidWlsZF9jb250YWN0X21hcCB0aGVuXG4gICAgICAgICAgICB7IHNpdGVfc2lnIHdpdGggU2lnbmF0dXJlLmxpbmtzID0gTm9uZSB9XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBVcGRhdGUgbGlua3MgKilcbiAgICAgICAgICAgICgqIFRPRE8gaW1wcm92ZSBjb21tZW50IGFib3ZlICopXG4gICAgICAgICAgICBsZXQgc2l0ZV9saW5rcyA9XG4gICAgICAgICAgICAgIEFycmF5LmluaXQgKHNpemVfc2lncyAtIGFnX2lkKSAoZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIEFycmF5Lm1ha2VcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIChpICsgYWdfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKCgoc2l0ZV9uYW1lX2FnMiwgcG9zKSBhcyBzaXRlX25hbWUpLCAoKGFnMl9uYW1lLCBfKSBhcyBhZykpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFnMl9pZCA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdcIiBhZ2VudF9zaWdzX3ByZSBhZyBpblxuICAgICAgICAgICAgICAgIGxldCBzaXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwic2l0ZSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgYWcyX2lkID49IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHNpdGVfbGlua3MuKGFnMl9pZCAtIGFnX2lkKS4oc2l0ZV9pZCkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgbm90XG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgoeCwgXyksICh5LCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc2l0ZV9uYW1lX2FnMSAmJiB5ID0gYWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChOYW1lZERlY2xzLmVsdF92YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgYWcyX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmtzIHw+IE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayB0aGVuXG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcIk5vIGxpbmsgdG8gJXMuJXMgZnJvbSAlcy4lcy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lX2FnMSBhZ19uYW1lIHNpdGVfbmFtZV9hZzIgYWcyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlIHNpdGVfc2lnLmxpbmtzKTtcbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBTb21lIHNpdGVfbGlua3MgfVxuICAgICAgICAgICkpKVxuICAgIGFnZW50X3NpZ3NfcHJlXG5cbmxldCBjcmVhdGVfc2lncyAobCA6IEFzdC5hZ2VudCBsaXN0KSA6IFNpZ25hdHVyZS5zID1cbiAgKCogQ29udGFjdCBtYXAgc2hvdWxkIGJlIGJ1aWx0IG9ubHkgaWYgYSBzcGVjaWZpYyBsaW5rIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZiBzaWduYXR1cmUgKilcbiAgbGV0IGJ1aWxkX2NvbnRhY3RfbWFwIDogYm9vbCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjMCAtPiBmdW5jdGlvblxuICAgICAgICB8IEFzdC5BYnNlbnQgcG9zIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJBYnNlbnQgYWdlbnQgYXJlIGZvcmJpZGRlbiBpbiBzaWduYXR1cmVcIiwgcG9zKSlcbiAgICAgICAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMsIF8pIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjMSBzaXRlIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICB8IEFzdC5Db3VudGVyIF8gLT4gYWNjMVxuICAgICAgICAgICAgICB8IEFzdC5Qb3J0IHAgLT5cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2MyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSB8IExLYXBwYS5MTktfQU5ZKSwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGFjYzJcbiAgICAgICAgICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19WQUxVRSBfKSwgcG9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiRm9yYmlkZGVuIGxpbmsgc3RhdHVzIGluc2lkZSBhIGRlZmluaXRpb24gb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSlcbiAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfIC0+IHRydWUpXG4gICAgICAgICAgICAgICAgICBhY2MxIHAuQXN0LnBvcnRfbGluaylcbiAgICAgICAgICAgIGFjYzAgc2l0ZXMpXG4gICAgICBmYWxzZSBsXG4gIGluXG5cbiAgbGV0ICggKHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMgTmFtZWREZWNscy50KSBsaXN0KSxcbiAgICAgICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gYWdlbnQgKGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50KSAtPlxuICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjY19zaWdzLCBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlX3NpZ3NfbmQsIGNvdW50ZXJzX2FnZW50ID0gcHJlcGFyZV9hZ2VudF9zaWcgfnNpdGVzIGluXG4gICAgICAgICAgbGV0IGNvdW50ZXJzJyA9XG4gICAgICAgICAgICBpZiBjb3VudGVyc19hZ2VudCA9IFtdIHRoZW5cbiAgICAgICAgICAgICAgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoYWdlbnRfbmFtZSwgY291bnRlcnNfYWdlbnQpIDo6IGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICBpblxuICAgICAgICAgIChhZ2VudF9uYW1lLCBzaXRlX3NpZ3NfbmQpIDo6IGFjY19zaWdzLCBjb3VudGVycycpXG4gICAgICBsIChbXSwgW10pXG4gIGluXG5cbiAgbGV0IGFnZW50X3NpZ3MgOiBTaWduYXR1cmUudCBOYW1lZERlY2xzLnQgPVxuICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgc2lnc193aXRoX2xpbmtzX2FzX2xpc3RzXG4gICAgIGVsc2VcbiAgICAgICBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgIDo6IHNpZ3Nfd2l0aF9saW5rc19hc19saXN0cylcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZV9mcm9tX2xpc3RcbiAgICB8PiBhZ2VudF9zaWdzX29mX2FnZW50X3NpZ3Nfd2l0aF9saW5rc19hc19saXN0cyB+YnVpbGRfY29udGFjdF9tYXBcbiAgaW5cblxuICAoKiBUT0RPIHNlZSBhZ2VudF9zaWdzIG5hbWluZ3MgKilcbiAgU2lnbmF0dXJlLmNyZWF0ZSB+Y291bnRlcnNfcGVyX2FnZW50IGFnZW50X3NpZ3NcblxubGV0IGluaXRfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIGNvbnRhY3RfbWFwIHRvayBhbGdzIGluaXRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChleHByLCBpbmkpIC0+XG4gICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBleHByLFxuICAgICAgICBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgY29udGFjdF9tYXAgaW5pICkpXG4gICAgaW5pdHNcblxudHlwZSBhc3RfY29tcGlsZWRfZGF0YSA9IHtcbiAgYWdlbnRzX3NpZzogU2lnbmF0dXJlLnM7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICB0b2tlbl9uYW1lczogdW5pdCBOYW1lZERlY2xzLnQ7XG4gIGFsZ192YXJzX2ZpbmRlcjogaW50IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICByZXN1bHQ6XG4gICAgKEFzdC5hZ2VudCwgTEthcHBhLnJ1bGVfbWl4dHVyZSwgUmF3X21peHR1cmUudCwgaW50LCBMS2FwcGEucnVsZSkgQXN0LmNvbXBpbDtcbiAgICAgICgqKiBDb21waWxlZCBkYXRhIHdoZXJlIGlkZW50aWZpZXJzIGFyZSBpIEFzdC5jb21waWwgd2hlcmUgaWRlbnRpZmllcnNcbiAgICAgKiBhcmUgaW50ZWdlcnMgYW5kIG5vdCBzdHJpbmcsIHN5bnRhY3RpYyBzdWdhciBvbiBydWxlcyBhcmUgZXhwYW5zZWRcbiAgICAgKiAoc3ludGFjdGljIHN1Z2FyIG9uIG1peHR1cmUgYXJlIG5vdCkgKilcbn1cblxuKCoqIEV2YWx1YXRlcyB0byBhIGFzdF9jb21waWwgd2hlcmUgY2x0ZSB0ZXN0cyBoYXZlIGJlZW4gY2hhbmdlZCB0byBjZ3RlIHRlc3RzLlxuICogRm9yIHRoaXMsIGZvciBlYWNoIGNvdW50ZXIgd2hlcmUgYSBDTFRFIHRlc3QgaXMgcHJlc2VudCwgd2hvc2UgdmFsdWVzIGFyZSBpbiBbXFxbYSwgYlxcXV0sIGluaXRpYWxpemVkIGF0IFtpXSBhbmQgYWRkIGEgbmV3IGNvdW50ZXIgYmVsb25naW5nIGluIFthLCBiXSBpbml0aWFsaXplZCBhdCBbYStiLWldLlxuICogRWFjaCB0ZXN0IFs+IHZhbHVlXSBpcyB0aGVuIHRyYW5zbGF0ZWQgaW50byBhIHRlc3QgdG8gdGhlIFwiaW52ZXJ0ZWRcIiBjb3VudGVyIGFzIFs8IGErYi12YWx1ZV0uXG4gKiBFYWNoIGRlbHRhIFsrIGRlbHRhXSBpcyB0cmFuc2xhdGVkIGludG8gYSBbLSBkZWx0YV0gKilcbmxldCB0cmFuc2xhdGVfY2x0ZV9pbnRvX2NndGUgKGFzdF9jb21waWwgOiBBc3QucGFyc2luZ19jb21waWwpID1cbiAgbGV0IGNvdW50ZXJfZm9sZCAoZiA6ICdhIGxpc3QgLT4gc3RyaW5nIC0+IEFzdC5jb3VudGVyIC0+ICdhIGxpc3QpIDogJ2EgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjMSBydWxlX2RlZiAtPlxuICAgICAgICBsZXQgcnVsZSA6IEFzdC5ydWxlID0gcnVsZV9kZWYgfD4gc25kIHw+IExvYy52IGluXG4gICAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICAgIHwgQXN0LkVkaXQgXyAtPiBhY2MxICgqIG5vIGNvdW50ZXIgdGVzdCBhbGxvd2VkIGluIGVkaXQgcnVsZSAqKVxuICAgICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gYWNjMiBhZ2VudF9saXN0IC0+XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBhY2MzIGFnZW50IC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2MzXG4gICAgICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlX2xpc3QsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2M0IHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYzRcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+IGYgYWNjNCAoTG9jLnYgYWdlbnRfbmFtZSkgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgICBhY2MzIHNpdGVfbGlzdClcbiAgICAgICAgICAgICAgICBhY2MyIGFnZW50X2xpc3QpXG4gICAgICAgICAgICBhY2MxIGNvbnRlbnQubGhzKVxuICAgICAgW10gYXN0X2NvbXBpbC5ydWxlc1xuICBpblxuXG4gIGxldCBpbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCA9IFwiX19pbnZlcnRlZFwiIGluXG4gIGxldCBpbnZlcnRlZF9jb3VudGVyX25hbWUgKG5hbWUgOiBzdHJpbmcpIDogc3RyaW5nID1cbiAgICBuYW1lIF4gaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXhcbiAgaW5cblxuICAoKiBGaW5kIGNvdW50ZXJzIHRoYXQgaGF2ZSBDTFRFIHRlc3RzLCBhbmQgYnVpbGQgbGlzdDogYWdlbnRfbmFtZSwgY291bnRlcl9uYW1lLCBzdW1fYm91bmRzX3JlZiBsaXN0LlxuICAgKiBzdW1fYm91bmRzX3JlZiBpcyB0aGVuIGZpbGxlZCB3aGVuIHJlYWRpbmcgdGhlIHNpZ25hdHVyZSBhbmQgdXNlZCB0byBzcGVjaWZ5IGZvciBpbnZlcnRlZCBjb3VudGVyIGluaXQgdmFsdWUgb3IgdGVzdCB2YWx1ZSBhcyBbc3VtX2JvdW5kc19yZWYgLSB2YWx1ZV0gKilcbiAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0cyA6IChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICBjb3VudGVyX2ZvbGQgKGZ1biBhY2MgYWdlbnRfbmFtZSBjb3VudGVyIC0+XG4gICAgICAgIGxldCBjb3VudGVyX25hbWUgPSBMb2MudiBjb3VudGVyLmNvdW50ZXJfbmFtZSBpblxuICAgICAgICAoKiBGb3JiaWQgcHJlZml4IHRvIGF2b2lkIG5vbnNlbnNlIGluIGNvdW50ZXIgZGVmaW5pdGlvbiAqKVxuICAgICAgICBpZiBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6aW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggY291bnRlcl9uYW1lIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJjYW5ub3QgZW5kIGNvdW50ZXIgbmFtZSBieSBcXFwiXCIgXiBpbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBeIFwiXFxcIlwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpO1xuICAgICAgICAoKiBSZXR1cm4gY291bnRlciBuYW1lIGFsb25nIHdpdGggbWF0Y2hpbmcgYWdlbnRfbmFtZSAqKVxuICAgICAgICBtYXRjaCBPcHRpb25fdXRpbC5tYXAgTG9jLnYgY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgKEFzdC5DTFRFIF8pIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWUyLCBjb3VudGVyX25hbWUyLCBfKSAtPlxuICAgICAgICAgICAgICAgIFN0cmluZy5lcXVhbCBhZ2VudF9uYW1lIGFnZW50X25hbWUyXG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLmVxdWFsIGNvdW50ZXJfbmFtZSBjb3VudGVyX25hbWUyKVxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYWdlbnRfbmFtZSwgY291bnRlcl9uYW1lLCByZWYgMCkgOjogYWNjXG4gICAgICAgIHwgU29tZSAoQXN0LkNFUSBfKSB8IFNvbWUgKEFzdC5DR1RFIF8pIHwgU29tZSAoQXN0LkNWQVIgXykgfCBOb25lIC0+IGFjYylcbiAgaW5cblxuICAoKiBDcmVhdGUgb3Bwb3NpdGUgY291bnRlcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHRlc3RzICopXG4gIGxldCBzaWduYXR1cmVzIDogQXN0LmFnZW50IGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWdlbnRcbiAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgIChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWVfY291bnRlciwgXywgXykgLT5cbiAgICAgICAgICAgICAgICBhZ2VudF9uYW1lID0gYWdlbnRfbmFtZV9jb3VudGVyKVxuICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfY291bnRlcl9zaXRlcyA6IEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBhY2MgKF8sIGNvdW50ZXJfbmFtZSwgc3VtX2JvdW5kc19yZWYpIC0+XG4gICAgICAgICAgICAgICAgKCogRmluZCBjb3VudGVyIHRvIGludmVydCAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX29yaWcgOiBBc3QuY291bnRlciA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9uYW1lID0gY291bnRlcl9uYW1lIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBjb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgICAgICgqIE1ha2UgaW52ZXJ0ZWQgY291bnRlciBkZWNsYXJhdGlvbiAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX25hbWUgOiBzdHJpbmcgTG9jLmFubm90ZWQgPVxuICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIG5hbWUgLT4gaW52ZXJ0ZWRfY291bnRlcl9uYW1lIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfb3JpZy5jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3Rlc3QgPSBjb3VudGVyX29yaWcuY291bnRlcl90ZXN0IGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfZGVsdGEgPSBjb3VudGVyX29yaWcuY291bnRlcl9kZWx0YSBpblxuXG4gICAgICAgICAgICAgICAgKCogV3JpdGUgaW4gc3VtX2JvdW5kc19yZWYgdGhlIHN1bSBvZiB0aGUgY291bnRlciBib3VuZHMgYWJvdmUgKilcbiAgICAgICAgICAgICAgICBsZXQgaW5mX2JvdW5kID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfdGVzdCB8PiBPcHRpb25fdXRpbC51bnNvbWVfb3JfcmFpc2UgfD4gTG9jLnZcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ0dURSBfIHwgQ0xURSBfIHwgQ1ZBUiBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBzaWduYXR1cmUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgY291bnRlcl9uYW1lICkpXG4gICAgICAgICAgICAgICAgICB8IENFUSB2YWx1ZSAtPiB2YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHN1cF9ib3VuZCA9IExvYy52IGNvdW50ZXJfZGVsdGEgaW5cbiAgICAgICAgICAgICAgICBzdW1fYm91bmRzX3JlZiA6PSBpbmZfYm91bmQgKyBzdXBfYm91bmQ7XG5cbiAgICAgICAgICAgICAgICBBc3QuQ291bnRlciB7IGNvdW50ZXJfbmFtZTsgY291bnRlcl90ZXN0OyBjb3VudGVyX2RlbHRhIH0gOjogYWNjKVxuICAgICAgICAgICAgICBbXSBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgIGluXG5cbiAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCBAIG5ld19jb3VudGVyX3NpdGVzLCBhZ2VudF9tb2QpKVxuICAgICAgYXN0X2NvbXBpbC5zaWduYXR1cmVzXG4gIGluXG5cbiAgKCogSW4gcnVsZXMsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgY291bnRlciB0ZXN0cyBhbmQgdGhlIGNvdW50ZXIgbW9kaWZpY2F0aW9ucyAqKVxuICBsZXQgcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCAobWl4IDogQXN0Lm1peHR1cmUpIDogQXN0Lm1peHR1cmUgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lIDogc3RyaW5nID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICAgICAgbGV0IGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50IDpcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgKiBzdHJpbmcgKiBpbnQgcmVmKSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlclxuICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZV9jb3VudGVyLCBfLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZ2VudF9uYW1lID0gYWdlbnRfbmFtZV9jb3VudGVyKVxuICAgICAgICAgICAgICAgICAgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCAoYWRkZWRfc2l0ZXMsIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcykgOlxuICAgICAgICAgICAgICAgICAgQXN0LnNpdGUgbGlzdCAqIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0X21hcFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF8sIG5hbWUsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5lcXVhbCAoTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUpIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoXywgXywgc3VtX2JvdW5kc19yZWYpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBBcyB3ZSBrbm93IHRoYXQgdGhpcyBjb3VudGVyIHVzZXMgYSBDTFRFIHRlc3QsIFdlIGludHJvZHVjZSB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogW2NsdGVfdmFsdWVfb3Jfbm9uZV0gZGlzY3JpbWluYXRlcyB0aGUgY2FzZSB3aGVyZSB0aGlzIHNpdGUgaW4gdGhpcyBleHByZXNzaW9uIGhhcyBhIENMVEUgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsdGVfdmFsdWVfb3Jfbm9uZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0VRIF8gfCBDR1RFIF8gfCBDVkFSIF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNMVEUgdmFsdWUgLT4gU29tZSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY2x0ZV92YWx1ZV9vcl9ub25lIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBhIHRlc3QsIGl0IGRvZXNuJ3QgbmVlZCBpbnZlcnNpb246IHdlIGFkZCBpbnZlcnRlZCBjb3VudGVyIHdpdGhvdXQgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPT0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZSBjb3VudGVyIHZhbHVlIGlzIGNoYW5naW5nLCB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnZlcnRlZF9jb3VudGVyX3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90IGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3Rlc3QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGRlbHRhIC0+IC1kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX2RlbHRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnRlZF9jb3VudGVyX3NpdGUgOjogYWNjLCBzaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUaGUgdGVzdCBpcyBDTFRFLCB3ZSBpbnZlcnQgaXQgKilcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTaXRlIHdpdGggaW52ZXJ0ZWQgY291bnRlciB3aXRoIENHVEUgdGVzdCBpbnN0ZWFkIG9mIENMVEUgdGVzdCAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X3NpdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3Rlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0dURSAoIXN1bV9ib3VuZHNfcmVmIC0gdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuY29weV9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl90ZXN0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZGVsdGEgLT4gLWRlbHRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlci5jb3VudGVyX2RlbHRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPT0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLCBuZXdfc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZiB0aGUgY291bnRlciB2YWx1ZSBpcyBjaGFuZ2luZywgd2UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIG9yaWdpbmFsIGNvdW50ZXIgdG9vICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlciB7IGNvdW50ZXIgd2l0aCBjb3VudGVyX3Rlc3QgPSBOb25lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIG5ld19zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKSlcbiAgICAgICAgICAgICAgICAgIFtdIHNpdGVfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbmV3X3NpdGVfbGlzdCA6IEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIHNpdGVfbGlzdF93aXRoX29wcG9zaXRlX2RlbHRhcyBAIGFkZGVkX3NpdGVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG4gIGxldCBydWxlcyA6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogQXN0LnJ1bGUgTG9jLmFubm90ZWQpIGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHJ1bGVfZGVmIC0+XG4gICAgICAgICggZnN0IHJ1bGVfZGVmLFxuICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgIChmdW4gKHJ1bGUgOiBBc3QucnVsZSkgLT5cbiAgICAgICAgICAgICAgbGV0IHJld3JpdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJ1bGUucmV3cml0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBFZGl0IGNvbnRlbnQgLT5cbiAgICAgICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICAgIHsgY29udGVudCB3aXRoIG1peCA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5taXggfVxuICAgICAgICAgICAgICAgIHwgQXJyb3cgY29udGVudCAtPlxuICAgICAgICAgICAgICAgICAgQXJyb3dcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxocyA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5saHM7XG4gICAgICAgICAgICAgICAgICAgICAgcmhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LnJocztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB7IHJ1bGUgd2l0aCByZXdyaXRlIH0pXG4gICAgICAgICAgICAoc25kIHJ1bGVfZGVmKSApKVxuICAgICAgYXN0X2NvbXBpbC5ydWxlc1xuICBpblxuXG4gIGxldCBhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X21peHR1cmUgKG1peCA6IEFzdC5taXh0dXJlKSA6IEFzdC5taXh0dXJlID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBhZ2VudF9saXN0IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBhZ2VudCAtPlxuICAgICAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWdlbnRcbiAgICAgICAgICAgIHwgUHJlc2VudCAoYWdlbnRfbmFtZV8sIHNpdGVfbGlzdCwgYWdlbnRfbW9kKSAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA6IHN0cmluZyA9IExvYy52IGFnZW50X25hbWVfIGluXG4gICAgICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgICAoc3RyaW5nICogc3RyaW5nICogaW50IHJlZikgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWVfY291bnRlciwgXywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRfbmFtZSA9IGFnZW50X25hbWVfY291bnRlcilcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBBZGQgZGVsdGEgdG8gY291bnRlciBhcyBvcHBvc2l0ZSBkZWx0YXMgdG8gY291bnRlcl9kZWx0YSAqKVxuICAgICAgICAgICAgICBsZXQgYWRkZWRfc2l0ZXMgOiBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBhY2Mgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IENvdW50ZXIgY291bnRlciAtPlxuICAgICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKF8sIG5hbWUsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5lcXVhbCAoTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUpIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoXywgXywgc3VtX2JvdW5kc19yZWYpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBBcyB3ZSBrbm93IHRoYXQgdGhpcyBjb3VudGVyIHVzZXMgYSBDTFRFIHRlc3QsIFdlIGludHJvZHVjZSB0aGUgaW52ZXJ0ZWQgY291bnRlciAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyLmNvdW50ZXJfbmFtZSApKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIExvYy52IHRlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DR1RFIF8gfCBDTFRFIF8gfCBDVkFSIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJDb3VudGVyIHNob3VsZCBoYXZlIENFUSB0ZXN0IHZhbHVlIGluIGluaXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IHRlc3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0VRIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTG9jLnYgY291bnRlci5jb3VudGVyX2RlbHRhIDw+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgZGVsdGEgc2hvdWxkIGJlIDAgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IHRlc3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MuY29weV9hbm5vdCB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0VRICghc3VtX2JvdW5kc19yZWYgLSB2YWx1ZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9kZWx0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogMCB3aXRoIGFubm90IGFzIHRlc3RlZCBhYm92ZSAqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKSkpKVxuICAgICAgICAgICAgICAgICAgW10gc2l0ZV9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZXdfc2l0ZV9saXN0IDogQXN0LnNpdGUgbGlzdCA9IHNpdGVfbGlzdCBAIGFkZGVkX3NpdGVzIGluXG4gICAgICAgICAgICAgIEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgbmV3X3NpdGVfbGlzdCwgYWdlbnRfbW9kKSlcbiAgICAgICAgICBhZ2VudF9saXN0KVxuICAgICAgbWl4XG4gIGluXG4gIGxldCBpbml0IDogKEFzdC5taXh0dXJlLCBBc3QubWl4dHVyZSwgc3RyaW5nKSBBc3QuaW5pdF9zdGF0ZW1lbnQgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKHF1YW50aXR5X2FsZ19leHByLCBpbml0X2tpbmQpIC0+XG4gICAgICAgICggcXVhbnRpdHlfYWxnX2V4cHIsXG4gICAgICAgICAgbWF0Y2ggaW5pdF9raW5kIHdpdGhcbiAgICAgICAgICB8IEFzdC5JTklUX1RPSyBfIC0+IGluaXRfa2luZFxuICAgICAgICAgIHwgSU5JVF9NSVggbWl4XyAtPlxuICAgICAgICAgICAgSU5JVF9NSVggKExvYy5tYXBfYW5ub3QgYWRkX2ludmVydGVkX2NvdW50ZXJfdG9faW5pdF9taXh0dXJlIG1peF8pICkpXG4gICAgICBhc3RfY29tcGlsLmluaXRcbiAgaW5cblxuICB7IGFzdF9jb21waWwgd2l0aCBzaWduYXR1cmVzOyBydWxlczsgaW5pdCB9XG5cbmxldCBjb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvbiB+dmFyX292ZXJ3cml0ZSBhc3RfY29tcGlsXG4gICAgPVxuICAoKiBUT0RPIHRlc3QgdGhpcyAqKVxuICAoKiBUcmFuc2xhdGUgQ0xURSB0ZXN0cyBpbiBhc3RfY29tcGlsIGludG8gQ0dURSB0ZXN0cyAqKVxuICBsZXQgYXN0X2NvbXBpbCA9IHRyYW5zbGF0ZV9jbHRlX2ludG9fY2d0ZSBhc3RfY29tcGlsIGluXG5cbiAgbGV0IGhhc19jb3VudGVycyA9IENvdW50ZXJzX2NvbXBpbGVyLmhhc19jb3VudGVycyBhc3RfY29tcGlsIGluXG4gIGxldCBhZ2VudF9zaWdfaXNfaW1wbGljaXQgPVxuICAgIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgPSBbXSAmJiBhc3RfY29tcGlsLkFzdC50b2tlbnMgPSBbXVxuICBpblxuICAoKiBJbmZlciBhZ2VudCBzaWduYXR1cmVzIGlmIHRoZSBzaWduYXR1cmUgaXMgaW1wbGljaXQgKilcbiAgbGV0IGFzdF9jb21waWwgPVxuICAgIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCAmJiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiaW1wbGljaXQgc2lnbmF0dXJlIGlzIGluY29tcGF0aWJsZSB3aXRoIGNvdW50ZXJzXCIsIExvYy5kdW1teSkpXG4gICAgZWxzZSBpZiBhZ2VudF9zaWdfaXNfaW1wbGljaXQgdGhlblxuICAgICAgQXN0LmluZmVyX2FnZW50X3NpZ25hdHVyZXMgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cbiAgKCogUmVtb3ZlIGNvdW50ZXIgdmFyaWFibGUgZGVmaW5pdGlvbiBieSBzcGxpdHRpbmcgaW4gc2V2ZXJhbCBydWxlcyAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLnNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmdcbiAgICAgICAgfmRlYnVnX21vZGUgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cblxuICBsZXQgYWdlbnRzX3NpZyA6IFNpZ25hdHVyZS5zID0gY3JlYXRlX3NpZ3MgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBpblxuICAoKiBTZXQgYW4gZW1wdHkgY29udGFjdCBtYXAgKilcbiAgbGV0IGNvbnRhY3RfbWFwIDogKE1vZHMuSW50U2V0LnQgKiBNb2RzLkludDJTZXQudCkgYXJyYXkgYXJyYXkgPVxuICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5zaXplIGFnZW50c19zaWcpIChmdW4gaSAtPlxuICAgICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuYXJpdHkgYWdlbnRzX3NpZyBpKSAoZnVuIHMgLT5cbiAgICAgICAgICAgICggVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgICAoZnVuIGEgayAtPiBNb2RzLkludFNldC5hZGQgayBhKVxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIGkgcyBhZ2VudHNfc2lnKSxcbiAgICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5ICkpKVxuICBpblxuICBsZXQgcnVsZV9uYW1lcywgZXh0cmFfdmFycywgY2xlYW5lZF9ydWxlcyA9XG4gICAgbGV0IGFjYyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAobmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgfmNvbnRhY3RfbWFwKVxuICAgICAgICB7XG4gICAgICAgICAgcnVsZV9uYW1lcyA9IDAsIE1vZHMuU3RyaW5nU2V0LmVtcHR5O1xuICAgICAgICAgIGV4dHJhX3ZhcnMgPSBbXTtcbiAgICAgICAgICBjbGVhbmVkX3J1bGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXN0X2NvbXBpbC5Bc3QucnVsZXNcbiAgICBpblxuICAgIHNuZCBhY2MucnVsZV9uYW1lcywgYWNjLmV4dHJhX3ZhcnMsIGFjYy5jbGVhbmVkX3J1bGVzXG4gIGluXG4gIGxldCBvdmVyd3JpdGVfdmFycyAodmFyX292ZXJ3cml0ZSA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICh2YXJzIDogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCkgOlxuICAgICAgKHN0cmluZyAqIE5ici50KSBsaXN0ICogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZywgYWNjX3ZhcnMpICgoKHgsIF8pLCBfKSBhcyB2YXIpIC0+XG4gICAgICAgIGxldCBtYXRjaHMsIG90aGVyX292ZXJ3cml0ZV92YXJzID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuICh4JywgXykgLT4geCA9IHgnKSBvdmVyd3JpdGVfdmFyc19yZW1haW5pbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudCA9XG4gICAgICAgICAgbWF0Y2ggbWF0Y2hzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHZhciA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgWyAoeCwgdikgXSAtPiAoTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdikgOjogYWNjX3ZhcnNcbiAgICAgICAgICB8ICh4LCBfKSA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJ2YXJpYWJsZSAnXCIgXiB4IF4gXCInIGlzIG92ZXJ3cml0dGVuIG1vcmUgdGhhbiBvbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gICAgICAgIGluXG5cbiAgICAgICAgb3RoZXJfb3ZlcndyaXRlX3ZhcnMsIGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudClcbiAgICAgICh2YXJfb3ZlcndyaXRlLCBbXSkgdmFyc1xuICAgIHw+IGZ1biAodmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgcmV2X2FsZ192YXJzKSAtPlxuICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIExpc3QucmV2IHJldl9hbGdfdmFyc1xuICBpblxuICBsZXQgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyA9XG4gICAgb3ZlcndyaXRlX3ZhcnMgdmFyX292ZXJ3cml0ZSAoYXN0X2NvbXBpbC5Bc3QudmFyaWFibGVzIEAgZXh0cmFfdmFycylcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2FycmF5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4gKHgsIHYpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIEFsZ19leHByLmNvbnN0IHYpXG4gICAgICB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIGFsZ192YXJzX3dpdGhfcmV3cml0dGVuX3ZhcnNcbiAgICB8PiBBcnJheS5vZl9saXN0XG4gIGluXG4gIGxldCBhbGdfdmFyc19maW5kZXIgPVxuICAgIGFsZ192YXJzX2FycmF5IHw+IE5hbWVkRGVjbHMuY3JlYXRlIH5mb3JiaWRkZW46cnVsZV9uYW1lcyB8PiBmdW4gbmQgLT5cbiAgICBuZC5OYW1lZERlY2xzLmZpbmRlclxuICBpblxuICBsZXQgdG9rZW5fbmFtZXMgPVxuICAgIGFzdF9jb21waWwuQXN0LnRva2Vuc1xuICAgIHw+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChmdW4geCAtPiB4LCAoKSlcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZVxuICBpblxuICBsZXQgdG9rZW5zX2ZpbmRlciA9IHRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyIGluXG5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICBDb3VudGVyc19jb21waWxlci5hZGRfY291bnRlcl90b19jb250YWN0X21hcCBhZ2VudHNfc2lnXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgfmNvbnRhY3RfbWFwKTtcblxuICBsZXQgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnMsIHVwZGF0ZWRfYWxnX3ZhcnMgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgYWxnX3ZhcnNfZmluZGVyIGNvbnRhY3RfbWFwKVxuICAgICAgYXN0X2NvbXBpbC5Bc3QucGVydHVyYmF0aW9ucyBbXVxuICBpblxuICBsZXQgcGVydHVyYmF0aW9ucyA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgYWdlbnRzX3NpZ1xuICAgICAgICBbIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgXVxuICAgICAgQCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVyc1xuICAgIGVsc2VcbiAgICAgIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gIGluXG5cbiAgbGV0IHJ1bGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKHJ1bGUgOiBydWxlX2ludGVyX3JlcCkgLT5cbiAgICAgICAgKCBydWxlLmxhYmVsX29wdCxcbiAgICAgICAgICAoIGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICAgICAgIGFsZ192YXJzX2ZpbmRlcixcbiAgICAgICAgICAgIHJ1bGUucG9zICkgKSlcbiAgICAgIGNsZWFuZWRfcnVsZXNcbiAgaW5cblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgKGZ1biBpIChsYWIsIGV4cHIpIGFjYyAtPlxuICAgICAgICAoIGxhYixcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5tYXhfYWxsb3dlZF92YXI6KHByZWQgaSlcbiAgICAgICAgICAgIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgZXhwciApXG4gICAgICAgIDo6IGFjYylcbiAgICAgIGFsZ192YXJzX2FycmF5IFtdXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIGV4cHIgLT5cbiAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICBhbGdfdmFyc19maW5kZXIgZXhwcilcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY29udGFjdF9tYXAgdG9rZW5zX2ZpbmRlclxuICAgICAgYWxnX3ZhcnNfZmluZGVyIGFzdF9jb21waWwuaW5pdFxuICBpblxuXG4gIHtcbiAgICBhZ2VudHNfc2lnO1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIHRva2VuX25hbWVzO1xuICAgIGFsZ192YXJzX2ZpbmRlcjtcbiAgICB1cGRhdGVkX2FsZ192YXJzO1xuICAgIHJlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGZpbGVuYW1lcyA9IGFzdF9jb21waWwuZmlsZW5hbWVzO1xuICAgICAgICB2YXJpYWJsZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBvYnNlcnZhYmxlcztcbiAgICAgICAgaW5pdDtcbiAgICAgICAgcGVydHVyYmF0aW9ucztcbiAgICAgICAgdm9sdW1lcyA9IGFzdF9jb21waWwudm9sdW1lcztcbiAgICAgICAgdG9rZW5zID0gYXN0X2NvbXBpbC50b2tlbnM7XG4gICAgICAgIHNpZ25hdHVyZXMgPSBhc3RfY29tcGlsLnNpZ25hdHVyZXM7XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gYXN0X2NvbXBpbC5jb25maWd1cmF0aW9ucztcbiAgICAgIH07XG4gIH1cbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IENPTU1BXG4gIHwgRE9UXG4gIHwgT1BfUEFSXG4gIHwgQ0xfUEFSXG4gIHwgT1BfQ1VSXG4gIHwgQ0xfQ1VSXG4gIHwgT1BfQlJBXG4gIHwgQ0xfQlJBXG4gIHwgQVRcbiAgfCBTRU1JQ09MT05cbiAgfCBQTFVTXG4gIHwgTUlOVVNcbiAgfCBNVUxUXG4gIHwgRElWXG4gIHwgTU9EXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgTE9HXG4gIHwgT1JcbiAgfCBBTkRcbiAgfCBOT1RcbiAgfCBUSEVOXG4gIHwgRUxTRVxuICB8IERJRkZcbiAgfCBFUVVBTFxuICB8IFNNQUxMRVJcbiAgfCBHUkVBVEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgSU5GSU5JVFlcbiAgfCBTSEFSUFxuICB8IFVOREVSU0NPUkVcbiAgfCBQSVBFXG4gIHwgUkFSXG4gIHwgTFJBUlxuICB8IExBUlxuICB8IEVNQVhcbiAgfCBUTUFYXG4gIHwgQ1BVVElNRVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBDT0xPTlxuICB8IE5FV0xJTkVcbiAgfCBCQUNLU0xBU0hcbiAgfCBTSUdOQVRVUkVcbiAgfCBUT0tFTlxuICB8IElOSVRcbiAgfCBPQlNcbiAgfCBQTE9UXG4gIHwgUEVSVFxuICB8IENPTkZJR1xuICB8IEFQUExZXG4gIHwgREVMRVRFXG4gIHwgSU5UUk9cbiAgfCBTTkFQU0hPVFxuICB8IFNUT1BcbiAgfCBGTFVYXG4gIHwgVFJBQ0tcbiAgfCBBU1NJR05cbiAgfCBQUklOVEZcbiAgfCBQTE9URU5UUllcbiAgfCBTUEVDSUVTX09GXG4gIHwgRE9cbiAgfCBSRVBFQVRcbiAgfCBBTEFSTVxuICB8IFJVTlxuICB8IExFVFxuICB8IElOVCBvZiAoaW50KVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBJRCBvZiAoc3RyaW5nKVxuICB8IExBQkVMIG9mIChzdHJpbmcpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgU1BBQ0Ugb2YgKHN0cmluZylcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogQ09NTUEgKik7XG4gIDI1OCAoKiBET1QgKik7XG4gIDI1OSAoKiBPUF9QQVIgKik7XG4gIDI2MCAoKiBDTF9QQVIgKik7XG4gIDI2MSAoKiBPUF9DVVIgKik7XG4gIDI2MiAoKiBDTF9DVVIgKik7XG4gIDI2MyAoKiBPUF9CUkEgKik7XG4gIDI2NCAoKiBDTF9CUkEgKik7XG4gIDI2NSAoKiBBVCAqKTtcbiAgMjY2ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjY3ICgqIFBMVVMgKik7XG4gIDI2OCAoKiBNSU5VUyAqKTtcbiAgMjY5ICgqIE1VTFQgKik7XG4gIDI3MCAoKiBESVYgKik7XG4gIDI3MSAoKiBNT0QgKik7XG4gIDI3MiAoKiBNQVggKik7XG4gIDI3MyAoKiBNSU4gKik7XG4gIDI3NCAoKiBTSU5VUyAqKTtcbiAgMjc1ICgqIENPU0lOVVMgKik7XG4gIDI3NiAoKiBUQU4gKik7XG4gIDI3NyAoKiBQT1cgKik7XG4gIDI3OCAoKiBBQlMgKik7XG4gIDI3OSAoKiBTUVJUICopO1xuICAyODAgKCogRVhQT05FTlQgKik7XG4gIDI4MSAoKiBMT0cgKik7XG4gIDI4MiAoKiBPUiAqKTtcbiAgMjgzICgqIEFORCAqKTtcbiAgMjg0ICgqIE5PVCAqKTtcbiAgMjg1ICgqIFRIRU4gKik7XG4gIDI4NiAoKiBFTFNFICopO1xuICAyODcgKCogRElGRiAqKTtcbiAgMjg4ICgqIEVRVUFMICopO1xuICAyODkgKCogU01BTExFUiAqKTtcbiAgMjkwICgqIEdSRUFURVIgKik7XG4gIDI5MSAoKiBUUlVFICopO1xuICAyOTIgKCogRkFMU0UgKik7XG4gIDI5MyAoKiBJTkZJTklUWSAqKTtcbiAgMjk0ICgqIFNIQVJQICopO1xuICAyOTUgKCogVU5ERVJTQ09SRSAqKTtcbiAgMjk2ICgqIFBJUEUgKik7XG4gIDI5NyAoKiBSQVIgKik7XG4gIDI5OCAoKiBMUkFSICopO1xuICAyOTkgKCogTEFSICopO1xuICAzMDAgKCogRU1BWCAqKTtcbiAgMzAxICgqIFRNQVggKik7XG4gIDMwMiAoKiBDUFVUSU1FICopO1xuICAzMDMgKCogVElNRSAqKTtcbiAgMzA0ICgqIEVWRU5UICopO1xuICAzMDUgKCogTlVMTF9FVkVOVCAqKTtcbiAgMzA2ICgqIENPTE9OICopO1xuICAzMDcgKCogTkVXTElORSAqKTtcbiAgMzA4ICgqIEJBQ0tTTEFTSCAqKTtcbiAgMzA5ICgqIFNJR05BVFVSRSAqKTtcbiAgMzEwICgqIFRPS0VOICopO1xuICAzMTEgKCogSU5JVCAqKTtcbiAgMzEyICgqIE9CUyAqKTtcbiAgMzEzICgqIFBMT1QgKik7XG4gIDMxNCAoKiBQRVJUICopO1xuICAzMTUgKCogQ09ORklHICopO1xuICAzMTYgKCogQVBQTFkgKik7XG4gIDMxNyAoKiBERUxFVEUgKik7XG4gIDMxOCAoKiBJTlRSTyAqKTtcbiAgMzE5ICgqIFNOQVBTSE9UICopO1xuICAzMjAgKCogU1RPUCAqKTtcbiAgMzIxICgqIEZMVVggKik7XG4gIDMyMiAoKiBUUkFDSyAqKTtcbiAgMzIzICgqIEFTU0lHTiAqKTtcbiAgMzI0ICgqIFBSSU5URiAqKTtcbiAgMzI1ICgqIFBMT1RFTlRSWSAqKTtcbiAgMzI2ICgqIFNQRUNJRVNfT0YgKik7XG4gIDMyNyAoKiBETyAqKTtcbiAgMzI4ICgqIFJFUEVBVCAqKTtcbiAgMzI5ICgqIEFMQVJNICopO1xuICAzMzAgKCogUlVOICopO1xuICAzMzEgKCogTEVUICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogRkxPQVQgKik7XG4gIDMzNCAoKiBJRCAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogU1RSSU5HICopO1xuICAzMzcgKCogU1BBQ0UgKik7XG4gIDMzOCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzFcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMzZcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDM4XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXFxuXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXFxuXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXFxuXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXFxuXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMFxcMjI3XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMTk1XFwwMDBcXDIzMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjIwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDIyMVxcMDAwXFwyMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAyXFwwMDBcXDEwM1xcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA2M1xcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMjE5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwwMDBcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExNFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTIyXFwwMDBcXDIxMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxNlxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwMFxcMjEzXFwwMDBcXDIxMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3MFxcMDAwXFwwMDBcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTU5XFwwMDBcXDE1NFxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDc5XFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTk4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYwXFwwMDBcXDA2MVxcMDAwXFwxMjNcXDAwMFxcMTIxXFwwMDBcXDEyNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDE2OVxcMDAwXFwxNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzRcXDAwMFxcMDAwXFwwMDBcXDIyNFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3OVxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDBcXDA3NFxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEwOVxcMDAwXFwxMDhcXDAwMFxcMTA3XFwwMDBcXDEwNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAwXFwxMzlcXDAwMFxcMTQwXFwwMDBcXDEzOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjE4XFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY0XFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwMFxcMTYwXFwwMDBcXDE2MVxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE3OFxcMDAwXFxcblxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMTQ4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNVxcMDAwXFxcblxcMjAxXFwwMDBcXDIwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1N1xcMDAwXFwwMDBcXDAwMFxcMTYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMjAyXFwwMDBcXDE1MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzNVxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE2NVxcMDAwXFwxNzdcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFxcblxcMDAwXFwwMDBcXDE0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcMTk5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDMwXFwwMDBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAwXFxcblxcMTMxXFwwMDBcXDEzMlxcMDAwXFwwOThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM2XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyOVxcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFxcblxcMDM4XFwwMDBcXDAzN1xcMDAwXFwwMjVcXDAwMFxcMDI3XFwwMDBcXDA0NFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxNlxcMDAwXFxcblxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDA0MlxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDEzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMTMxXFwwMDBcXDA5M1xcMDAwXFwyMThcXDAwMVxcMjE5XFwwMDFcXFxuXFwyNDNcXDAwMVxcMjA2XFwwMDFcXDIwN1xcMDAxXFwyMzZcXDAwMVxcMTg2XFwwMDFcXDIwOFxcMDAxXFwyMDlcXDAwMVxcMjEwXFwwMDFcXFxuXFwyMTFcXDAwMVxcMDkyXFwwMDFcXDA5M1xcMDAxXFwxNjVcXDAwMVxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwOTRcXDAwMFxcMDk1XFwwMDBcXFxuXFwwOTZcXDAwMFxcMjM0XFwwMDBcXDA5N1xcMDAwXFwwOThcXDAwMFxcMDk5XFwwMDBcXDE4NFxcMDAwXFwxODVcXDAwMFxcMjIxXFwwMDBcXFxuXFwxMDJcXDAwMFxcMTAzXFwwMDBcXDEwNFxcMDAwXFwwNDBcXDAwMFxcMTc3XFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMTQwXFwwMDFcXFxuXFwwMzJcXDAwMVxcMTI2XFwwMDBcXDA0M1xcMDAwXFwxOTBcXDAwMFxcMDEzXFwwMDFcXDE4NlxcMDAwXFwwODlcXDAwMVxcMjE3XFwwMDBcXFxuXFwyMThcXDAwMFxcMTMyXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwODVcXDAwMVxcMDg2XFwwMDFcXFxuXFwxMTNcXDAwMFxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMTRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDE3N1xcMDAyXFxcblxcMDQ1XFwyNTVcXDA1NFxcMjU1XFwwODhcXDI1NVxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwxNjNcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjIxXFwwMDhcXDAwMFxcMDAwXFwxNjJcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMzlcXDI1NVxcMDYzXFwyNTVcXDIwOVxcMDAwXFxcblxcMDQ3XFwwMDBcXDA0OVxcMjU1XFwwMDBcXDAwMFxcMTYzXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwNTFcXDI1NVxcMjA5XFwwMDBcXDEwMlxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMjU1XFxcblxcMTMwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDExOFxcMjU1XFwxMjdcXDAwMFxcMTQzXFwwMDFcXDE0MVxcMDAwXFwyMDlcXDAwMFxcMTMxXFwyNTVcXDIwOVxcMjU1XFxcblxcMDAwXFwwMDBcXDE3NlxcMDEwXFwxNDhcXDI1NVxcMTc4XFwyNTVcXDIzMFxcMDA4XFwwMTVcXDI1NVxcMDQyXFwwMDlcXDE5NFxcMjU1XFxcblxcMDY4XFwwMTJcXDAwMFxcMDAwXFwxOTNcXDI1NVxcMDE1XFwyNTVcXDEyOFxcMDAwXFwyMzhcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDAyNlxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDEzXFxcblxcMTEwXFwwMDlcXDE3OFxcMDA5XFwxNjFcXDAxMVxcMTM5XFwwMDBcXDAwMFxcMDAwXFwxNjFcXDAxMVxcMTc1XFwyNTVcXDExNlxcMDAxXFxcblxcMDE2XFwwMDBcXDAwMFxcMDAwXFwxODRcXDI1NVxcMTM4XFwwMTJcXDAwMFxcMDAwXFwyMjFcXDAwOFxcMDAwXFwwMDBcXDI0N1xcMjU1XFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAxM1xcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFxcblxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwxMTRcXDAwMVxcMDI5XFwwMDBcXDA1N1xcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDY3XFwwMDBcXDE0M1xcMDAxXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTI1XFwyNTVcXDIwOVxcMDAwXFwwNTJcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwxODRcXDI1NVxcMTg0XFwyNTVcXDIyNlxcMDEwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXDE4NVxcMDEyXFxcblxcMDczXFwwMDFcXDAwMFxcMDAwXFwxODRcXDI1NVxcMDAwXFwwMDBcXDE4NFxcMjU1XFwyMDlcXDAwMFxcMjA5XFwwMDBcXDA0N1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMjVcXDI1NVxcMjA5XFwwMDBcXDEzOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFwxMjBcXDAwMFxcMDU4XFwwMDBcXDEyOVxcMjU1XFxcblxcMjIxXFwwMDhcXDE0M1xcMDAwXFwxMTdcXDI1NVxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMTEzXFwwMDBcXDIwOVxcMDAwXFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFwwNDZcXDAxNFxcMDQ2XFwwMTRcXDIwOFxcMDEzXFxcblxcMjA4XFwwMTNcXDIwOFxcMDEzXFwyMDhcXDAxM1xcMjA4XFwwMTNcXDIwOFxcMDEzXFwyMDhcXDAxM1xcMDgwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjQ2XFwwMDlcXDA1OFxcMDEwXFxcblxcMDAwXFwwMDBcXDE0NFxcMDAwXFwwMzNcXDAwOVxcMjA5XFwwMDBcXDExNlxcMDAwXFwxMDBcXDI1NVxcMTMzXFwwMDBcXDIwOFxcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjIxXFwwMDBcXDAxNVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMTFcXDAyOVxcMDAxXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDEzOVxcMDAwXFwyMDlcXDAwMFxcMjA4XFwwMTNcXDIwOFxcMDEzXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMTRcXDA0NlxcMDE0XFxcblxcMjA4XFwwMTNcXDA3OVxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMTRcXDAwMFxcMDAwXFwxMThcXDI1NVxcMTE4XFwyNTVcXDEyN1xcMDAwXFxcblxcMTI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMjA4XFwwMTNcXDE4NFxcMjU1XFwyMDJcXDI1NVxcMjA4XFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMTFcXDAwMVxcMDI2XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMDMzXFwwMDlcXDIwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDY0XFwyNTVcXDA1MVxcMDAxXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDEzXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDk3XFwwMDJcXDA2NFxcMDAxXFwyMDlcXDAwMFxcMTYxXFwwMTFcXDEzOVxcMDAwXFxcblxcMDAwXFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMVxcMDAwXFwwMDBcXDEwN1xcMDAxXFxcblxcMjA5XFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMjIxXFwwMDhcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDExNlxcMDAwXFwwMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDEyNVxcMDAxXFwwODVcXDAwMVxcMTM1XFwwMDFcXDIwOFxcMDEzXFwxODVcXDAxMlxcMDI5XFwwMDFcXDIwOVxcMDAwXFxcblxcMTYxXFwwMTFcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDA3OFxcMDAxXFxcblxcMjA5XFwwMDBcXDE2OVxcMDAxXFwxMTNcXDAwM1xcMjIxXFwwMDhcXDIwOFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwxMDBcXDI1NVxcMDQwXFwwMDFcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMTc2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMTRcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAxNFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NVxcMjU1XFxcblxcMjM5XFwyNTVcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwxMDBcXDI1NVxcMjA4XFwwMTNcXDIwOFxcMDEzXFxcblxcMjA5XFwwMDBcXDAwMFxcMDAwXFwxODRcXDAwMVxcMjA5XFwwMDBcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjEwXFwwMDFcXDIwOVxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMTNcXDAwMVxcMjMzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIxNFxcMDAxXFwyMTVcXDAwMVxcMTc3XFwwMDBcXDIxNlxcMDAxXFxcblxcMjE3XFwwMDFcXDI0M1xcMjU1XFwyMDlcXDAwMFxcMjQ0XFwwMDFcXDA0MlxcMDAyXFwwNzRcXDAwMlxcMjM0XFwyNTVcXDIzNVxcMDAwXFxcblxcMTM0XFwwMDJcXDIwOVxcMDAwXFwwNzNcXDAwMlxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwwMDBcXDAwMFxcMTIzXFwyNTVcXDAwMFxcMDAwXFxcblxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFxcblxcMTEzXFwyNTVcXDAwMFxcMDAwXFwwNzlcXDI1NVxcMDAwXFwwMDBcXDAxNFxcMjU1XFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcblxcMDM2XFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAxM1xcMDAyXFxcblxcMTkwXFwwMDJcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMjA5XFwwMDBcXDIwOVxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDJcXDA4N1xcMDAyXFwwMDBcXDAwMFxcMjA5XFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMTkwXFwwMDdcXDA2OVxcMDA4XFwxMDFcXDAwOVxcMTI2XFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU0XFwwMDFcXDI1NFxcMDAxXFxcblxcMjU0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDA1XFxcblxcMDIwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ5XFwyNTVcXDAyMlxcMDAyXFwxMjZcXDAxMFxcMDIwXFwyNTVcXDEyNlxcMDEwXFxcblxcMjU1XFwwMTFcXDAyMVxcMDAyXFwwMjBcXDI1NVxcMDQxXFwwMDFcXDE0N1xcMDAyXFwwNzFcXDAwNlxcMTczXFwwMDBcXDA5M1xcMDAwXFxcblxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwwMTNcXDEyNlxcMDEwXFxcblxcMTI2XFwwMTBcXDA1N1xcMDA0XFwxOTlcXDAwNFxcMjA4XFwwMTFcXDEyNVxcMDAwXFwxMzBcXDAwMVxcMTI4XFwwMDRcXDExMlxcMDAwXFxcblxcMDMzXFwwMDBcXDIzMlxcMDEyXFwwMDBcXDAwMFxcMTAxXFwwMDlcXDA1OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFxcblxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwxMTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcblxcMDAwXFwwMDBcXDA4NFxcMDAyXFwwNzlcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwNlxcMTcxXFwwMDZcXDIyOVxcMDA2XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyM1xcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFxcblxcMDIwXFwwMTFcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwM1xcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE4XFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFxcblxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwyNTVcXDAxM1xcMjU1XFwwMTNcXDI1NVxcMDEzXFxcblxcMjU1XFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwwMTNcXDI1NVxcMDEzXFwwMDBcXDAwMFxcMjU1XFwwMTNcXDAyMlxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDdcXDAwMFxcMDAwXFwxMzhcXDAwOFxcMDAwXFwwMDBcXDI1NFxcMDA0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMTBcXDEyNlxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUzXFwwMDFcXDEwMVxcMDA5XFwwMDBcXDAwMFxcMDIxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQzXFwyNTVcXDAyMlxcMDAyXFxcblxcMjU1XFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTRcXDAxMVxcMDIyXFwwMDBcXDA0MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDAwMFxcMDAwXFxcblxcMjU1XFwwMTNcXDI1NVxcMDEzXFwxOTlcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMDEzXFxcblxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMDAwXFwwMDBcXDAxN1xcMDAxXFxcblxcMDAwXFwwMDBcXDA5M1xcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjU1XFwwMTNcXDAzM1xcMDAwXFwwMDVcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDlcXDAwMFxcMDAwXFwwOTlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxM1xcMTY0XFwwMDFcXDIyMlxcMDA3XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDAwXFwyMDhcXDAxMVxcMDAwXFwwMDBcXDE5MFxcMDAxXFxcblxcMTEyXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDJcXDAwMFxcMDAwXFxcblxcMDM3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjRcXDAwMlxcMjQ0XFwwMDJcXDE2MFxcMDAzXFxcblxcMjQwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM5XFwwMTNcXDEwMVxcMDA5XFwwMDBcXDAwMFxcMDMzXFwwMDJcXDAwMFxcMDAwXFwwMjRcXDAwOFxcMDAwXFwwMDBcXDI1MVxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMFxcMDk5XFwwMDJcXDAwMFxcMDAwXFwxMDNcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjU1XFwwMTNcXDA5MlxcMDEzXFwxMDVcXDAwMlxcMTA4XFwwMDJcXDAwMFxcMDAwXFwyMDhcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDIyXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDA1XFwwNzZcXDAwNVxcMjU1XFwwMTNcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDhcXDAzNFxcMDA4XFwxOTBcXDI1NVxcMTQzXFwyNTVcXDAwMFxcMDAwXFxcblxcMjEwXFwwMDVcXDAwMFxcMDAwXFwxMTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDA0XFwwOTNcXDAxNFxcMTkwXFwwMDdcXDAwMFxcMDAwXFxcblxcMDkzXFwwMTRcXDAwMFxcMDAwXFwxNjJcXDAwNlxcMDUwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU0XFwwMDFcXDIxMFxcMDAwXFwwOTlcXDAwMlxcMDQyXFwwMDZcXDAwMFxcMDAwXFwxNDNcXDI1NVxcMjU1XFwwMTNcXDI1NVxcMDEzXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMjM4XFwwMDVcXDIzOFxcMDA1XFwwOTlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDdcXDAwMFxcMDAwXFwyMzJcXDAwN1xcMTIzXFwwMDVcXDEwNVxcMDA3XFwwMDBcXDAwMFxcMDkxXFwwMDJcXDA5MVxcMDAyXFxcblxcMDU1XFwwMDFcXDA5MVxcMDAyXFwwOTFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwM1xcMTIxXFwwMDJcXDIwOFxcMjU1XFxcblxcMTI2XFwwMDJcXDIyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM2XFwwMDFcXDExNlxcMDA0XFwxMjVcXDAwMlxcMjQyXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE1XFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxOVxcMDAxXFwxNTZcXDI1NVxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM2XFwyNTVcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMjM4XFwyNTVcXDIxMFxcMDA1XFwwMDBcXDAwMFxcMTI4XFwyNTVcXDA2OVxcMDAyXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMlxcMDY5XFwwMDJcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjEwXFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjE5XFwwMDFcXDAwMFxcMDAwXFwwMjJcXDAwMlxcMDIzXFwwMDNcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMlxcMjI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzhcXDAwMlxcMTM4XFwwMDJcXDIyOFxcMDAwXFwwNjlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwxMjlcXDAwMlxcMDAwXFwwMDBcXDEwN1xcMjU0XFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjFcXDI1NVxcMDAwXFwwMDBcXDE0OVxcMDAxXFwxNDBcXDAwMVxcMTI5XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDI1NFxcMTY4XFwwMDFcXDA1MVxcMDAzXFwxNTlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjQ4XFwwMDNcXDA2MVxcMDAxXFwwMjNcXDI1NVxcMjM3XFwwMDFcXDI0MlxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDExMlxcMjU1XFxcblxcMDAzXFwwMDNcXDAwMFxcMDAwXFwxNjdcXDAwMlxcMTM5XFwwMDNcXDA1NVxcMjU1XFwxNDZcXDI1NVxcMjI4XFwwMDJcXDA0MVxcMDAyXFxcblxcMDYwXFwwMDJcXDAwMFxcMDAwXFwwNjVcXDAwM1xcMDY4XFwwMDNcXDA0OVxcMDAyXFwwMDBcXDAwMFxcMDc1XFwwMDJcXDE0N1xcMjU1XFxcblxcMTcxXFwwMDJcXDIxMFxcMjU1XFwyNTJcXDI1NVxcMDAyXFwyNTVcXDAwMFxcMDAwXFwxMjdcXDI1NVxcMTE2XFwwMDJcXDAwMFxcMjU1XFxcblxcMDAwXFwwMDBcXDA5N1xcMjU1XFwwNzdcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjdcXDAwM1wiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDQwMTJcbmxldCB5eXRhYmxlID0gXCJcXDAxMVxcMDAwXFxcblxcMDE0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDI4XFwwMDFcXDEzM1xcMDAwXFwwMjBcXDAwMFxcMDIxXFwwMDBcXDAyMlxcMDAwXFxcblxcMTM3XFwwMDBcXDA1OVxcMDAwXFwxMzZcXDAwMVxcMjA2XFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMTg3XFwwMDBcXDEwMFxcMDAwXFxcblxcMTAxXFwwMDBcXDA2MVxcMDAxXFwxODRcXDAwMFxcMDAxXFwwMDBcXDA4NFxcMDAxXFwwMDFcXDAwMFxcMTA1XFwwMDBcXDEwNlxcMDAwXFxcblxcMjIyXFwwMDBcXDAzMFxcMDAyXFwxMDdcXDAwMFxcMTA4XFwwMDBcXDEwOVxcMDAwXFwxMTBcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFxcblxcMTE1XFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDAwMVxcMDAwXFwyMjRcXDAwMFxcMTIyXFwwMDBcXDExOVxcMDAwXFxcblxcMTUzXFwwMDBcXDIyOFxcMDAwXFwwMDFcXDAwMFxcMDE0XFwwMDBcXDAwNlxcMDAwXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFxcblxcMTI0XFwwMDBcXDAxNFxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEzNlxcMDAwXFwwMTJcXDAwMFxcMTM4XFwwMDBcXDEzOVxcMDAwXFxcblxcMTQwXFwwMDBcXDEyNVxcMDAwXFwxNDJcXDAwMFxcMTQ0XFwwMDBcXDE0MVxcMDAwXFwyNDlcXDAwMFxcMTI4XFwwMDBcXDA5MFxcMDAxXFxcblxcMTM1XFwwMDFcXDE0N1xcMDAwXFwxNDhcXDAwMFxcMTQ5XFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFxcblxcMTU0XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU3XFwwMDBcXDE1OFxcMDAwXFwwNDFcXDAwMVxcMTk4XFwwMDFcXDA0M1xcMDAxXFxcblxcMTU5XFwwMDBcXDE4N1xcMDAxXFwxMTdcXDAwMVxcMDQ3XFwwMDFcXDE0NVxcMDAwXFwwMTJcXDAwMVxcMTMyXFwwMDFcXDAxNVxcMDAwXFxcblxcMDg0XFwwMDFcXDAzMVxcMDAyXFwxMjBcXDAwMFxcMDA4XFwwMDJcXDE4OFxcMDAwXFwxODlcXDAwMFxcMTYwXFwwMDBcXDAwN1xcMDAwXFxcblxcMDI5XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDkwXFwwMDFcXDE3MVxcMDAwXFwxNDNcXDAwMFxcMTIxXFwwMDBcXDA1MlxcMDAxXFxcblxcMDA3XFwwMDBcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDAxXFwwMDBcXDIyM1xcMDAxXFwxMDBcXDAwMFxcMTk1XFwwMDBcXDAwMVxcMDAwXFxcblxcMDI2XFwwMDJcXDAzNFxcMDAxXFwwMjdcXDAwMlxcMDM1XFwwMDFcXDIwNFxcMDAxXFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNVxcMDAwXFxcblxcMDU0XFwwMDFcXDIwN1xcMDAwXFwwMThcXDAwMlxcMjA4XFwwMDBcXDAxN1xcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDIxNlxcMDAwXFxcblxcMDUwXFwwMDFcXDE0NlxcMDAwXFwyMTZcXDAwMFxcMDQwXFwwMDJcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcblxcMTAwXFwwMDBcXDIzMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDE3MFxcMDAwXFwwOTFcXDAwMVxcMDAxXFwwMDBcXDIzM1xcMDAwXFxcblxcMjM1XFwwMDBcXDAxNFxcMDAxXFwwMDFcXDAwMFxcMTc4XFwwMDBcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDE3NVxcMDAwXFxcblxcMDA3XFwwMDBcXDEwNlxcMDAxXFwxODFcXDAwMVxcMDAxXFwwMDBcXDIwNVxcMDAxXFwxNzJcXDAwMFxcMTI2XFwwMDBcXDI1MVxcMDAwXFxcblxcMjUyXFwwMDBcXDI1M1xcMDAwXFwyNTRcXDAwMFxcMjU1XFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDEyMFxcMDAwXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwN1xcMDAwXFxcblxcMDI0XFwwMDBcXDA5MVxcMDAxXFwwMDhcXDAwMVxcMDA3XFwwMDBcXDA0NlxcMDAxXFwxMjhcXDAwMVxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcblxcMTk4XFwwMDFcXDAyNFxcMDAwXFwwMTVcXDAwMVxcMDE2XFwwMDFcXDAyOFxcMDAyXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxOFxcMDAxXFxcblxcMDE5XFwwMDFcXDA0OFxcMDAwXFwwMjFcXDAwMVxcMTk5XFwwMDFcXDIwMFxcMDAxXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDE5XFwwMDJcXDE5OFxcMDAwXFwxMjFcXDAwMVxcMDAxXFwwMDBcXDE5OVxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDAxXFwwMDBcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDAxXFwwMDBcXDE0N1xcMDAxXFxcblxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMDM5XFwwMDFcXDAwMVxcMDAwXFwwNDJcXDAwMVxcMjA0XFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDAzNlxcMDAwXFwwMDFcXDAwMFxcMTU4XFwwMDFcXDE1MlxcMDAwXFwxOTRcXDAwMVxcMDUxXFwwMDFcXDAwMVxcMDAwXFxcblxcMTIwXFwwMDFcXDAwMVxcMDAwXFwxNzNcXDAwMFxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwMDFcXDAwMFxcMjEyXFwwMDFcXDAwM1xcMDAyXFxcblxcMjEzXFwwMDFcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMjUzXFwwMDFcXDA1N1xcMDAxXFwwNDVcXDAwMFxcMDU4XFwwMDFcXDAwNFxcMDAyXFxcblxcMDYwXFwwMDFcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMjAwXFwwMDBcXDAzNlxcMDAwXFwyMjNcXDAwMFxcMjU0XFwwMDFcXDE4MFxcMDAwXFxcblxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwNzFcXDAwMVxcMjE5XFwwMDBcXDIyMFxcMDAwXFwwMzZcXDAwMFxcMjA1XFwwMDFcXDA3M1xcMDAxXFxcblxcMDc0XFwwMDFcXDA3NVxcMDAxXFwxOTNcXDAwMFxcMDQ4XFwwMDBcXDA3NlxcMDAxXFwxNjFcXDAwMVxcMDgzXFwwMDFcXDE2MlxcMDAxXFxcblxcMTk2XFwwMDBcXDE4NVxcMDAwXFwwODdcXDAwMVxcMDAxXFwwMDBcXDIxNFxcMDAxXFwyMTVcXDAwMVxcMTg0XFwwMDBcXDAwMVxcMDAwXFxcblxcMjA0XFwwMDFcXDAwMVxcMDAwXFwxODJcXDAwMVxcMDI0XFwwMDBcXDA5NlxcMDAxXFwwMDFcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFxcblxcMTAwXFwwMDFcXDIzMlxcMDAwXFwwMDFcXDAwMFxcMTcyXFwwMDFcXDEwM1xcMDAxXFwwMzVcXDAwMlxcMTA0XFwwMDFcXDEwNVxcMDAxXFxcblxcMDAxXFwwMDBcXDEwN1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE1M1xcMDAwXFwxMTBcXDAwMVxcMDAxXFwwMDBcXDExMVxcMDAxXFxcblxcMDQwXFwwMDFcXDIyN1xcMDAwXFwxNTNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDBcXDAwMFxcMTE1XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMVxcMDAxXFwwMDBcXDIxN1xcMDAxXFwwNDlcXDAwMVxcMTI4XFwwMDBcXDA0NVxcMDAwXFxcblxcMjA1XFwwMDFcXDAyNVxcMDAwXFwxMjhcXDAwMFxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwMTBcXDAwMVxcMTE4XFwwMDFcXDEyOFxcMDAwXFxcblxcMTI4XFwwMDBcXDIwNFxcMDAxXFwxNTNcXDAwMFxcMTUzXFwwMDBcXDE1M1xcMDAwXFwyNTBcXDAwMFxcMTk4XFwwMDBcXDEyM1xcMDAxXFxcblxcMTI0XFwwMDFcXDE5OVxcMDAwXFwwODNcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxODVcXDAwMFxcMTMzXFwwMDFcXDAyNlxcMDAwXFxcblxcMDI3XFwwMDBcXDEzNFxcMDAxXFwxODRcXDAwMFxcMDAxXFwwMDBcXDEzOFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0MVxcMDAxXFxcblxcMTQyXFwwMDFcXDE0M1xcMDAxXFwwMDlcXDAwMVxcMjE2XFwwMDBcXDE0NVxcMDAxXFwwMDFcXDAwMFxcMTc0XFwwMDFcXDAzNlxcMDAwXFxcblxcMTQ4XFwwMDFcXDAxNFxcMDAxXFwyNDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTUzXFwwMDBcXDIwNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTE2XFwwMDFcXDE1MlxcMDAxXFxcblxcMTUzXFwwMDBcXDAwMVxcMDAwXFwwMjBcXDAwMVxcMTU1XFwwMDFcXDE1NlxcMDAxXFwxNTdcXDAwMVxcMDAxXFwwMDBcXDE5OFxcMDAwXFxcblxcMjAwXFwwMDBcXDA0OFxcMDAxXFwxOTlcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNjNcXDAwMVxcMTI4XFwwMDBcXDE2NFxcMDAxXFxcblxcMDAxXFwwMDBcXDE3MVxcMDAwXFwwMDFcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwyMTZcXDAwMFxcMTcxXFwwMDFcXDE3MVxcMDAwXFxcblxcMDExXFwwMDFcXDE3M1xcMDAxXFwwNTNcXDAwMVxcMDAxXFwwMDBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMDgzXFwwMDFcXDE3OVxcMDAxXFxcblxcMDU5XFwwMDFcXDEwMFxcMDAwXFwxODNcXDAwMVxcMTc1XFwwMDBcXDA4N1xcMDAwXFwwNzJcXDAwMVxcMTI2XFwwMDBcXDE4NFxcMDAxXFxcblxcMTg1XFwwMDFcXDE3NVxcMDAwXFwxMjZcXDAwMFxcMTMzXFwwMDBcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkyXFwwMDFcXDEyNlxcMDAwXFxcblxcMTI2XFwwMDBcXDE4M1xcMDAwXFwwMDFcXDAwMFxcMTkyXFwwMDBcXDEyMFxcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDE5NVxcMDAxXFxcblxcMTIwXFwwMDBcXDIwMFxcMDAwXFwxOTdcXDAwMVxcMDAxXFwwMDBcXDA4MVxcMDAwXFwxMjBcXDAwMFxcMTIwXFwwMDBcXDAwMVxcMDAwXFxcblxcMjIwXFwwMDFcXDAwMVxcMDAwXFwyMjFcXDAwMVxcMjIyXFwwMDFcXDIwOVxcMDAwXFwyMTFcXDAwMFxcMjEzXFwwMDBcXDIyNlxcMDAxXFxcblxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwyMjdcXDAwMVxcMDg4XFwwMDFcXDA0NlxcMDAwXFwyMjlcXDAwMVxcMjMwXFwwMDFcXDIzMVxcMDAxXFxcblxcMjMyXFwwMDFcXDIzM1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIzNFxcMDAxXFwxNzFcXDAwMFxcMjM3XFwwMDFcXDIzOFxcMDAxXFxcblxcMjM5XFwwMDFcXDAwMVxcMDAwXFwwOTRcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMjBcXDAwMFxcMTIwXFwwMDBcXDI0MFxcMDAxXFxcblxcMjQxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE3NVxcMDAwXFxcblxcMDAxXFwwMDBcXDA5N1xcMDAxXFwyNDZcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI2XFwwMDBcXDAwMVxcMDAwXFxcblxcMTUyXFwwMDBcXDI1NVxcMDAxXFwwMDVcXDAwMlxcMDAxXFwwMDBcXDAwNlxcMDAyXFwwMDFcXDAwMFxcMTUyXFwwMDBcXDAyNFxcMDAwXFxcblxcMDA5XFwwMDJcXDAwMVxcMDAwXFwwMTFcXDAwMlxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAxNVxcMDAyXFwwMTZcXDAwMlxcMDE3XFwwMDJcXDI0OVxcMDAxXFwwMDFcXDAwMFxcMjUwXFwwMDFcXDE4NVxcMDAxXFxcblxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDA3XFwwMDBcXDAyNFxcMDAyXFwwMjVcXDAwMlxcMTUyXFwwMDBcXDE1MlxcMDAwXFxcblxcMTUyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAzMVxcMDAxXFwyMDFcXDAwMFxcMDQ2XFwwMDBcXDA5OFxcMDAxXFxcblxcMDAxXFwwMDBcXDAzNlxcMDAyXFwwMzdcXDAwMlxcMDAxXFwwMDBcXDEyNVxcMDAxXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFxcblxcMDIzXFwwMDBcXDA0MVxcMDAyXFwwNDJcXDAwMlxcMDQzXFwwMDJcXDA0NFxcMDAyXFwwMDFcXDAwMFxcMTAyXFwwMDFcXDAwMVxcMDAwXFxcblxcMDIzXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMTI2XFwwMDFcXDA0NVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE1MlxcMDAwXFwwNDhcXDAwMlxcMTI3XFwwMDFcXDAwMVxcMDAwXFxcblxcMDM4XFwwMDFcXDAwMVxcMDAwXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE1MlxcMDAwXFwwMDFcXDAwMFxcMTM3XFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMDM2XFwwMDBcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTQ0XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMDc4XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDkxXFwwMDBcXDA5NVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0OVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA1NFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxNTBcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTUxXFwwMDFcXDExMlxcMDAxXFxcblxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDAxXFwwMDBcXDI0NlxcMDAwXFwwMDFcXDAwMFxcMTUzXFwwMDFcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2NlxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMTlcXDAwMVxcMTY3XFwwMDFcXDAwMVxcMDAwXFxcblxcMTIyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2OFxcMDAxXFwwNzhcXDAwMFxcMDAxXFwwMDBcXDExOFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDM2XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMTc3XFwwMDFcXDEzOVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDkyXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDE4MFxcMDAxXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFxcblxcMTY5XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwxOTNcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMTIxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg3XFwwMDBcXDIyNVxcMDAwXFwyMjZcXDAwMFxcMjI4XFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDE5OVxcMDAxXFxcblxcMjAwXFwwMDFcXDEzOVxcMDAxXFwwMzFcXDAwMVxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMDg3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcblxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDIzNVxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNDJcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA4N1xcMDAwXFxcblxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNDRcXDAwMVxcMTMzXFwwMDBcXDA2NFxcMDAxXFxcblxcMDY1XFwwMDFcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMDkzXFwwMDBcXDI0NVxcMDAxXFwyNDdcXDAwMVxcMjQ4XFwwMDFcXDI1MVxcMDAxXFxcblxcMjUyXFwwMDFcXDAwMFxcMDAyXFwwMDFcXDAwMFxcMjI0XFwwMDFcXDIyNVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDk0XFwwMDBcXDAwMlxcMDAyXFxcblxcMDEwXFwwMDJcXDAzMlxcMDAyXFwwMzNcXDAwMlxcMDM0XFwwMDJcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwMzlcXDAwMlxcMDQ2XFwwMDJcXDA0N1xcMDAyXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwMzhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDQ5XFwwMDBcXDAwMVxcMDAwXFxcblxcMTg4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5N1xcMDAwXFxcblxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFxcblxcMTI5XFwwMDBcXDE4N1xcMDAwXFwwMDFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDI2XFwwMDBcXDE2NlxcMDAwXFxcblxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDAxXFwwMDBcXDAxN1xcMDAwXFwwOTFcXDAwMFxcMDA3XFwwMDJcXDIxM1xcMDAxXFxcblxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDExOFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDBcXDAwMVxcMDAwXFwwMjBcXDAwMlxcMDI5XFwwMDJcXDAzOFxcMDAyXFxcblxcMTE4XFwwMDBcXDExOFxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDAxMlxcMDAyXFwxNzlcXDAwMFxcMDkxXFwwMDBcXDA5NVxcMDAwXFxcblxcMjQ3XFwwMDBcXDA5MVxcMDAwXFwwOTFcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFxcblxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwNzBcXDAwMVxcMjE0XFwwMDFcXDIxNVxcMDAxXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFxcblxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwMDFcXDAwMFxcMTIzXFwwMDBcXDAzM1xcMDAxXFwxNjlcXDAwMVxcMjAyXFwwMDBcXDE5N1xcMDAwXFxcblxcMTE4XFwwMDBcXDExOFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDIxM1xcMDAxXFxcblxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFxcblxcMTc4XFwwMDFcXDE3MFxcMDAxXFwxMzFcXDAwMVxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMTAxXFwwMDFcXDE2MFxcMDAxXFxcblxcMTU5XFwwMDFcXDIxNlxcMDAxXFwxMjdcXDAwMFxcMjE3XFwwMDFcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDExOFxcMDAwXFxcblxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE0XFwwMDFcXDIxNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFxcblxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXDAwMVxcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFxcblxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxNlxcMDAxXFwwMDBcXDAwMFxcMjE3XFwwMDFcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDkzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3NlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFxcblxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDA5NFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMjM2XFwwMDBcXDIzN1xcMDAwXFwyMzhcXDAwMFxcMjM5XFwwMDBcXDI0MFxcMDAwXFxcblxcMjQxXFwwMDBcXDI0MlxcMDAwXFwyNDNcXDAwMFxcMjQ0XFwwMDBcXDI0NVxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwOTRcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFxcblxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFxcblxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA5NVxcMDAwXFxcblxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFxcblxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NVxcMDAwXFxcblxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcblxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFxcblxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMFxcMTU4XFwwMDBcXDE1OFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcblxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDFcXDExNFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMTU4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTc2XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcblxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5N1xcMDAwXFxcblxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcblxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA5N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcblxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDYyXFwwMDBcXDAwMVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFxcblxcMDYyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcblxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTkwXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcblxcMDYyXFwwMDBcXDA1M1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFxcblxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcblxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjNcXDAwMFxcMTkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFxcblxcMDAxXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcblxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDExMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEyXFwwMDBcXDE0M1xcMDAwXFxcblxcMTEyXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDE5MlxcMDAwXFxcblxcMTkyXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDExMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcblxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAwXFxcblxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDE0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXDEzNFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFxcblxcMTQzXFwwMDBcXDE0M1xcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXDEzNFxcMDAwXFwxMzRcXDAwMFxcMTM0XFwwMDBcXDEzNFxcMDAwXFxcblxcMTM0XFwwMDBcXDIwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFwxNDNcXDAwMFxcMTQzXFwwMDBcXDE0M1xcMDAwXFxcblxcMTQzXFwwMDBcXDE0M1xcMDAwXFwxNDNcXDAwMFxcMTUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMFxcMTQzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMjAwXFwwMDBcXDIwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDIwMFxcMDAwXFwyMDBcXDAwMFxcMjAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMjAwXFwwMDBcXDIwMFxcMDAwXFwyMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFxcblxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcMjAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFxcblxcMTUwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFxcblxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDA2OVxcMDAwXFxcblxcMDY5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY5XFwwMDBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFxcblxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMTgyXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFxcblxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE3NFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAyN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFxcblxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFxcblxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcblxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwOTlcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFxcblxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFxcblxcMjE1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDY3XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFxcblxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcblxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFxcblxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFxcblxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFxcblxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFxcblxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFxcblxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFxcblxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFxcblxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcMTk2XFwwMDBcXDE5NlxcMDAwXFwxOTZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFxcblxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFxcblxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDIwNVxcMDAwXFwwNTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMTRcXDAwMFxcMDkyXFwwMDFcXDEyMlxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMTlcXDAwMFxcXG5cXDAxOVxcMDAwXFwyNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMTlcXDAwMVxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcXG5cXDEzNFxcMDAwXFwwMTJcXDAwMVxcMDI4XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDA0MFxcMDAwXFwwMDFcXDAwMVxcXG5cXDAwMFxcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMTRcXDAwMVxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDFcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDA1OFxcMDAwXFwwMDlcXDAwMVxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwMTBcXDAwMVxcMTU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMjIyXFwwMDBcXDAwMFxcMDAxXFwyMjRcXDAwMFxcXG5cXDA4MlxcMDAwXFwxNjNcXDAwMVxcMDYwXFwwMDFcXDIyOFxcMDAwXFwwMTBcXDAwMVxcMTgzXFwwMDBcXDA4N1xcMDAxXFwwMDBcXDAwMVxcXG5cXDA4N1xcMDAxXFwwNzZcXDAwMVxcMDUyXFwwMDFcXDI0MVxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA5NlxcMDAwXFwwNTFcXDAwMVxcXG5cXDIwN1xcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAxXFwxMDJcXDAwMFxcMDAwXFwwMDFcXDA0MFxcMDAxXFwyMzNcXDAwMFxcXG5cXDA1MVxcMDAxXFwyMDNcXDAwMFxcMjA0XFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAxXFwyMTFcXDAwMFxcMDAyXFwwMDFcXDIxM1xcMDAwXFwwMzhcXDAwMVxcMTE5XFwwMDBcXDEyMFxcMDAwXFwxMjFcXDAwMFxcXG5cXDAwNFxcMDAxXFwxMjNcXDAwMFxcMDAwXFwwMDFcXDEyNVxcMDAwXFwwMDBcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwxMzFcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAyNVxcMDAyXFwwMTVcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwwODJcXDAwMVxcXG5cXDE0MFxcMDAwXFwxNDBcXDAwMFxcMDUxXFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAxXFwxNDVcXDAwMFxcXG5cXDE0N1xcMDAwXFwwMjlcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA1MVxcMDAxXFwwNDJcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMDI3XFwwMDFcXDAwMFxcMDAwXFwxNjFcXDAwMFxcXG5cXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY0XFwwMDBcXDE2NVxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcXG5cXDA4MVxcMDAxXFwwODJcXDAwMVxcMTcyXFwwMDBcXDE3M1xcMDAwXFwwMDBcXDAwMFxcMTc1XFwwMDBcXDE3NlxcMDAwXFwwNTFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwNzhcXDAwMVxcMTgwXFwwMDBcXDA1MVxcMDAxXFwyMjdcXDAwMFxcMDg1XFwwMDFcXDA4MVxcMDAxXFwwODJcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDJcXDAwMVxcMTg4XFwwMDBcXDE4OVxcMDAwXFwwNzZcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwxOTNcXDAwMFxcXG5cXDE5NFxcMDAwXFwwMDRcXDAwMVxcMTk2XFwwMDBcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMTk5XFwwMDBcXDIwMFxcMDAwXFwyMDFcXDAwMFxcXG5cXDA3OFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA3NlxcMDAxXFwwMDNcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwNFxcMDAxXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDAwN1xcMDAxXFwxMDRcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDIyMVxcMDAwXFwwNzhcXDAwMVxcMjIzXFwwMDBcXDAzOFxcMDAxXFwyMjVcXDAwMFxcXG5cXDIyNlxcMDAwXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMTc1XFwwMDFcXDIzMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAxXFwwNzhcXDAwMVxcMDI2XFwwMDFcXDIzN1xcMDAwXFwyMzhcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDZcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwyNDZcXDAwMFxcMDA0XFwwMDFcXDI0OFxcMDAwXFwwMTRcXDAwMVxcXG5cXDI1MFxcMDAwXFwxMDNcXDAwMVxcMTI0XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDIzNFxcMDAxXFwwNzhcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA1XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc4XFwwMDFcXDA3OFxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDczXFwwMDFcXDA3OFxcMDAxXFwwMTRcXDAwMVxcMDA1XFwwMDFcXDAxOVxcMDAxXFwwMDdcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMDRcXDAwMVxcMDIwXFwwMDFcXDAzOFxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcXG5cXDAzOFxcMDAxXFwwMDRcXDAwMVxcMTU2XFwwMDFcXDAwMlxcMDAxXFwwMzBcXDAwMVxcMDc4XFwwMDFcXDAwMlxcMDAxXFwwMTBcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNDNcXDAwMVxcMDAyXFwwMDFcXDE0NVxcMDAxXFwwMzhcXDAwMVxcMDE3XFwwMDJcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNDNcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDRcXDAwMVxcMDQ3XFwwMDFcXDAwNFxcMDAxXFwwNDlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMzRcXDAwMVxcMDEwXFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDU3XFwwMDFcXDA1N1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNDBcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDA3MlxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMzhcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDIxXFwwMDFcXDAwMFxcMDAxXFwwODFcXDAwMVxcXG5cXDA4MlxcMDAxXFwwMDNcXDAwMVxcMDg3XFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDcyXFwwMDFcXDA4OFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwOTFcXDAwMVxcMDcyXFwwMDFcXDAzOFxcMDAxXFwwOTRcXDAwMVxcMDcyXFwwMDFcXDAwMlxcMDAxXFwwOTdcXDAwMVxcXG5cXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQzXFwwMDFcXDEwM1xcMDAxXFwxMDJcXDAwMVxcMDgwXFwwMDFcXDE0OVxcMDAxXFwwNzhcXDAwMVxcXG5cXDEwNlxcMDAxXFwwMjlcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwNzJcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwMDRcXDAwMVxcXG5cXDA3MlxcMDAxXFwwNzhcXDAwMVxcMDcyXFwwMDFcXDAwNFxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA0MFxcMDAxXFwxMjFcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDEyNVxcMDAxXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcXG5cXDA1MFxcMDAxXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDA3OFxcMDAxXFwwNDBcXDAwMVxcMTM1XFwwMDFcXDA3MlxcMDAxXFwxMzdcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMTQ1XFwwMDFcXDE0NFxcMDAxXFwwMTBcXDAwMVxcXG5cXDA3OFxcMDAxXFwxNDdcXDAwMVxcMDA0XFwwMDFcXDA0MFxcMDAxXFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NVxcMDAxXFwxNTNcXDAwMVxcXG5cXDA0MFxcMDAxXFwxNTdcXDAwMVxcMTU3XFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAxXFwxNjFcXDAwMVxcXG5cXDE2MlxcMDAxXFwwMTBcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwxMDlcXDAwMFxcMDc4XFwwMDFcXDExMVxcMDAwXFwwMDBcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwxNzdcXDAwMVxcXG5cXDAwNFxcMDAxXFwwNTBcXDAwMVxcMTgwXFwwMDFcXDA3MlxcMDAxXFwwMzdcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwNzJcXDAwMVxcXG5cXDE4NlxcMDAxXFwwNzhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxMjhcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwxOTNcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMTk2XFwwMDFcXDA4MFxcMDAxXFwwMDRcXDAwMVxcMTk5XFwwMDFcXDIwMFxcMDAxXFwyMDFcXDAwMVxcXG5cXDIwMlxcMDAxXFwyMDNcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyMDZcXDAwMVxcMDcyXFwwMDFcXDIwOFxcMDAxXFwyMDlcXDAwMVxcXG5cXDIxMFxcMDAxXFwwMDBcXDAwMVxcMDc4XFwwMDFcXDAwMlxcMDAxXFwwNzZcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyMTdcXDAwMVxcXG5cXDIxOFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwNzJcXDAwMVxcXG5cXDAwN1xcMDAxXFwwMDVcXDAwMVxcMjI4XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNFxcMDAxXFwyMzVcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDE0XFwwMDFcXDAxMFxcMDAxXFwwMDJcXDAwMVxcXG5cXDI0MlxcMDAxXFwwMTBcXDAwMVxcMjQ0XFwwMDFcXDI0NVxcMDAxXFwwNzJcXDAwMVxcMjQ3XFwwMDFcXDI0OFxcMDAxXFwwMzhcXDAwMVxcXG5cXDAzOVxcMDAxXFwyNTFcXDAwMVxcMjUyXFwwMDFcXDI1M1xcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDFcXDAwMlxcXG5cXDAwMlxcMDAyXFwwMDNcXDAwMlxcMDA0XFwwMDJcXDA1MVxcMDAxXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyMDhcXDAwMFxcMDMyXFwwMDFcXDA3OFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDAwM1xcMDAxXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDc2XFwwMDFcXDAwMlxcMDAxXFwwNzhcXDAwMVxcXG5cXDAxNFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAxMFxcMDAxXFwwMzhcXDAwMlxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwNzhcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwM1xcMDAxXFwwNzJcXDAwMVxcMDQ3XFwwMDJcXDA3MlxcMDAxXFwwNzJcXDAwMVxcXG5cXDAwMlxcMDAxXFwwNzhcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwODBcXDAwMVxcMDAwXFwwMDFcXDAwNFxcMDAxXFwwODBcXDAwMVxcXG5cXDA0MFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDUwXFwwMDFcXDAwNFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDAyXFwwMDFcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDE1XFwwMDFcXDAwMFxcMDAwXFwwMjRcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAyMVxcMDAxXFwwMzdcXDAwMVxcMDUwXFwwMDFcXDAzOFxcMDAxXFwwMzRcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDAxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwNFxcMDAxXFwwNTFcXDAwMVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA3OFxcMDAxXFwwMDNcXDAwMVxcMDUwXFwwMDFcXDAzMFxcMDAxXFwwMDNcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc2XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDczXFwwMDFcXDA1MFxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3NlxcMDAxXFwwMDJcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDZcXDAwMVxcMDI4XFwwMDFcXDA3NVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyOFxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA3OFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA3OFxcMDAxXFwwOTZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMDRcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcXG5cXDAzNlxcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMTFcXDAwMVxcXG5cXDAxMlxcMDAxXFwxNDFcXDAwMVxcMTQyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMTRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDE0XFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNzVcXDAwMVxcXG5cXDI1MlxcMDAwXFwyNTNcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDA1XFwwMDFcXDA3NVxcMDAxXFwyNTRcXDAwMFxcXG5cXDI1NVxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMDMyXFwwMDFcXDAzMlxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAxXFwxOTJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcXG5cXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMTVcXDAwMVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcXG5cXDAwN1xcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNzRcXDAwMVxcXG5cXDA3NVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcXG5cXDAwOFxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDc4XFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwODBcXDAwMVxcMDQzXFwwMDFcXDAwNFxcMDAxXFwwMzRcXDAwMVxcXG5cXDA3MlxcMDAxXFwwMDNcXDAwMVxcMDAyXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDMyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwNlxcMDAxXFwwMzFcXDAwMVxcXG5cXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAwNlxcMDAxXFwwMDhcXDAwMVxcMDUwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcXG5cXDA3NlxcMDAxXFwwMDhcXDAwMVxcMDE4XFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDAxXFwwMDJcXDAxMVxcMDAyXFwwMjNcXDAwMlxcXG5cXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNDVcXDAwMVxcMTA3XFwwMDBcXDA3NVxcMDAxXFwwMDBcXDAwMFxcXG5cXDE1OFxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA0XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDMyXFwwMDFcXDA0MVxcMDAwXFwyMDlcXDAwMFxcMTQxXFwwMDFcXDExOFxcMDAwXFwxMTZcXDAwMFxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMDJcXDAwMVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDE1MlxcMDAxXFwxNDJcXDAwMVxcMDg3XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAzNlxcMDAxXFwxMzNcXDAwMVxcXG5cXDEzMlxcMDAxXFwwNzZcXDAwMVxcMDQ0XFwwMDBcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcXG5cXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcXG5cXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwMTRcXDAwMVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA3NVxcMDAxXFwwMzhcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwxMDZcXDAwMFxcMDc2XFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcXG5cXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDA1MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDE0OFxcMDAwXFwxNDlcXDAwMFxcMTUwXFwwMDBcXDE1MVxcMDAwXFwxNTJcXDAwMFxcXG5cXDE1M1xcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcXG5cXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcXG5cXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDA3MlxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDBcXDAwOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwwMTRcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDE3NVxcMDAxXFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTc5XFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDA0XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDAxMFxcMDAxXFwwMDBcXDAwMFxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwNTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDAwNlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMVxcXG5cXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcXG5cXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwMlxcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDI1NVxcMjU1XFwwMDlcXDAwMVxcXG5cXDAxMFxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjlcXDAwMVxcXG5cXDA3MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwNFxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwNzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNzVcXDAwMVxcXG5cXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAxMFxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcXG5cXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcXG5cXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcXG5cXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcXG5cXDA1OVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcXG5cXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcXG5cXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcXG5cXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDA3NFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcXG5cXDAxNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwwNTFcXDAwMVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcXG5cXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDA3OFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcXG5cXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwwNzNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcXG5cXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcXG5cXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcXG5cXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcXG5cXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcXG5cXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcXG5cXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcXG5cXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcXG5cXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcXG5cXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcXG5cXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcXG5cXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcXG5cXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcXG5cXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcXG5cXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcXG5cXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcXG5cXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIEVPRlxcMDAwXFxcbiAgQ09NTUFcXDAwMFxcXG4gIERPVFxcMDAwXFxcbiAgT1BfUEFSXFwwMDBcXFxuICBDTF9QQVJcXDAwMFxcXG4gIE9QX0NVUlxcMDAwXFxcbiAgQ0xfQ1VSXFwwMDBcXFxuICBPUF9CUkFcXDAwMFxcXG4gIENMX0JSQVxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFNFTUlDT0xPTlxcMDAwXFxcbiAgUExVU1xcMDAwXFxcbiAgTUlOVVNcXDAwMFxcXG4gIE1VTFRcXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgTU9EXFwwMDBcXFxuICBNQVhcXDAwMFxcXG4gIE1JTlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIFNRUlRcXDAwMFxcXG4gIEVYUE9ORU5UXFwwMDBcXFxuICBMT0dcXDAwMFxcXG4gIE9SXFwwMDBcXFxuICBBTkRcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgVEhFTlxcMDAwXFxcbiAgRUxTRVxcMDAwXFxcbiAgRElGRlxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIFNNQUxMRVJcXDAwMFxcXG4gIEdSRUFURVJcXDAwMFxcXG4gIFRSVUVcXDAwMFxcXG4gIEZBTFNFXFwwMDBcXFxuICBJTkZJTklUWVxcMDAwXFxcbiAgU0hBUlBcXDAwMFxcXG4gIFVOREVSU0NPUkVcXDAwMFxcXG4gIFBJUEVcXDAwMFxcXG4gIFJBUlxcMDAwXFxcbiAgTFJBUlxcMDAwXFxcbiAgTEFSXFwwMDBcXFxuICBFTUFYXFwwMDBcXFxuICBUTUFYXFwwMDBcXFxuICBDUFVUSU1FXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgQ09MT05cXDAwMFxcXG4gIE5FV0xJTkVcXDAwMFxcXG4gIEJBQ0tTTEFTSFxcMDAwXFxcbiAgU0lHTkFUVVJFXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgSU5JVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBQTE9UXFwwMDBcXFxuICBQRVJUXFwwMDBcXFxuICBDT05GSUdcXDAwMFxcXG4gIEFQUExZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgU1RPUFxcMDAwXFxcbiAgRkxVWFxcMDAwXFxcbiAgVFJBQ0tcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBQTE9URU5UUllcXDAwMFxcXG4gIFNQRUNJRVNfT0ZcXDAwMFxcXG4gIERPXFwwMDBcXFxuICBSRVBFQVRcXDAwMFxcXG4gIEFMQVJNXFwwMDBcXFxuICBSVU5cXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIElOVFxcMDAwXFxcbiAgRkxPQVRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBMQUJFTFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBTUEFDRVxcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIFtdIClcbiMgMTU5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBcIlxcblwiOjpfMiApXG4jIDE2MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggXzE6Ol8yIClcbiMgMTYwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIE5ici5GIGluZmluaXR5IClcbiMgMTYyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGZsb2F0KSBpblxuICAgIE9iai5yZXByKFxuIyA2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggTmJyLkYgXzEgKVxuIyAxNjMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIE5ici5JIF8xIClcbiMgMTYzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSApXG4jIDE2NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSAoTEthcHBhLkxOS19WQUxVRSAoXzEsKCkpKSApXG4jIDE2NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSApXG4jIDE2NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgNSAoTEthcHBhLkxOS19UWVBFICgoXzEscmhzX3BvcyAxKSwoXzUscmhzX3BvcyA1KSkpIClcbiMgMTY2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIClcbiMgMTY3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgc3RhdGVcIikpIClcbiMgMTY4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDE2ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxNzA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggTm9uZSApXG4jIDE3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBOb25lIClcbiMgMTcyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogaW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKFNvbWUgKF8zLCByaHNfcG9zIDMpKSApXG4jIDE3MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgbW9kaWZpY2F0aW9uXCIpKSApXG4jIDE3MzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChTb21lIF8xKSApXG4jIDE3NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgTm9uZSApXG4jIDE3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxNzU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF8zIClcbiMgMTc2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGVzKSBpblxuICAgIE9iai5yZXByKFxuIyA5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfNSApXG4jIDE3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxNzg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKF8zLCByaHNfcG9zIDMpIClcbiMgMTc5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxODAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2xpbmtfc3RhdGVzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTEwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMiwgXzMpIClcbiMgMTgxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgKVxuIyAxODE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfbGluaykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLCBfMikgKVxuIyAxODI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgKVxuIyAxODMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfaW50ZXJuYWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzUsIHJoc19wb3MgNSkgKVxuIyAxODQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNywgcmhzX3BvcyA3KSApXG4jIDE4NTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoLSBfNSwgcmhzX3BvcyA1KSApXG4jIDE4NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNFUSBfMyxyaHNfcG9zIDMpIClcbiMgMTg2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNHVEUgXzUscmhzX3BvcyA1KSApXG4jIDE4NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DTFRFIF81LHJoc19wb3MgNSkgKVxuIyAxODg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ1ZBUiBfMyxyaHNfcG9zIDMpIClcbiMgMTg5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChOb25lLCBfMSkgKVxuIyAxOTA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChTb21lIF8xLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwKSApXG4jIDE5MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKFNvbWUgXzEsXzUpIClcbiMgMTkyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMTk0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF84IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDE5NTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAxOTcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAxOTg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2l0ZV9jb3VudGVyKSBpblxuICAgIE9iai5yZXByKFxuIyAxNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gXzUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSApXG4jIDE5OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIwMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDIwMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxNzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMDIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggXzEgOjogXzIgKVxuIyAyMDI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NpdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlKSBpblxuICAgIE9iai5yZXByKFxuIyAxODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzQgKVxuIyAyMDM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBBc3QuTm9Nb2Qsc3RhcnRfcG9zIDEsXzEgKVxuIyAyMDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LkNyZWF0ZSxlbmRfcG9zIDIsXzMgKVxuIyAyMDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5FcmFzZSxlbmRfcG9zIDIsXzMgKVxuIyAyMDYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjA2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF83IGluXG4gICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjA4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxMCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA5IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiBzdHJpbmcpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVyZmFjZSkgaW5cbiAgICBsZXQgXzExID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgbW9kaWYscGVuZCxhbiA9IF8xMSBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIwOTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkgKVxuIyAyMTA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgbWF0Y2ggXzQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSApXG4jIDIxMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FnZW50KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuKCBsZXQgKHgsXyxfKSA9IF8xIGluIGxldCAoeSxwZW5kLHApID0gXzQgaW4gKFt4XTo6eSxwZW5kLHApIClcbiMgMjEyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0ICh4LHBlbmQscCkgPSBfMSBpbiAoW1t4XV0scGVuZCxwKSApXG4jIDIxMzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMjE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5DT05TVCBfMSkgKVxuIyAyMTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgKVxuIyAyMTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkgKVxuIyAyMTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSApXG4jIDIxNTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5UT0tFTl9JRCAoXzMpKSApXG4jIDIxNjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgKVxuIyAyMTc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjE4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSApXG4jIDIxOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSApXG4jIDIxOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpIClcbiMgMjIwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSApXG4jIDIyMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDIyMTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb25zdGFudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDIyMjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDIyMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCxfMyxfNSkpIClcbiMgMjI0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLF8zLF81KSkgKVxuIyAyMjUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMykpIClcbiMgMjI1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUyxfMykpIClcbiMgMjI2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8zKSkgKVxuIyAyMjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMykpIClcbiMgMjI4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzMpKSApXG4jIDIyOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCxfMykpIClcbiMgMjI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csXzMpKSApXG4jIDIzMDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLF8zKSkgKVxuIyAyMzE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSxfMikgKVxuIyAyMzIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LHkseikgPSBfNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEseCkpLHkseikgKVxuIyAyMzMzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyMzQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjM1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19wcm9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjM2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQseCx5KSxcbiAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyMzczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAyODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDIzODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDIzOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjQwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI0MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgMzExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI0MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxfLF8pID0gXzQgaW5cbiAgKChBbGdfZXhwci5JRihpLHQsXzcpLFxuICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSAoZW5kX3BvcyA3KSksZW5kX3BvcyA3LF84KSApXG4jIDI0NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCB0cnVlIClcbiMgMjQ0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGZhbHNlIClcbiMgMjQ1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDI0NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIEFsZ19leHByLlRSVUUgKVxuIyAyNDY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuRkFMU0UgKVxuIyAyNDczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCxfMykpIClcbiMgMjQ4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxlbmRfcG9zIDEsIF8yKSApXG4jIDI0ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjUwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNTE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNTI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI1NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI1NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX2NvbXApIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNTYxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9ub19vcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNTY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjU4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8yIGluIHggKVxuIyAyNTg5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiUHJvYmxlbWF0aWMgYm9vbGVhbiBleHByZXNzaW9uXCIpKSApXG4jIDI1OTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKGZhbHNlKVxuIyAyNjAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICh0cnVlKVxuIyAyNjA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbKF8xLChfMyxyaHNfcG9zIDMpKV0sZW5kX3BvcyAzLF80IClcbiMgMjYxOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLGFuKSA9IF83IGluIChfMSwoXzMscmhzX3BvcyAzKSkgOjogbCxwZW5kLGFuIClcbiMgMjYzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggbGV0IChwLHBlbmQsYW4pID0gXzEgaW4gKHAsW10scGVuZCxhbikgKVxuIyAyNjM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxwZW5kLGFuKSA9IF80IGluIChwLCB0LCBwZW5kLCBhbikgKVxuIyAyNjQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHQscGVuZCxhbikgPSBfMyBpbiAoW10sIHQsIHBlbmQsIGFuKSApXG4jIDI2NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSApXG4jIDI2NjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjY3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfNCBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMixwZW5kLGFuKSApXG4jIDI2ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncnVsZV9zaWRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSBfMSBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuPVtdfSxfMixlbmRfcG9zIDIsXzMpIClcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gXzMgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbj1bXTsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sXzEscGVuZCxhbikgKVxuIyAyNzA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9IF8xIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgKVxuIyAyNzE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsTm9uZSkgKVxuIyAyNzIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LF8sXykgPSBfNCBpbiAoeCwgU29tZSB5KSApXG4jIDI3MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGIscGVuZCxhbikgPSBfNiBpbiAoYixTb21lIF8zLHBlbmQsYW4pIClcbiMgMjc0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgsXyxfKSA9IF8xIGluICh4LFNvbWUgXzQsZW5kX3BvcyA1LF82KSApXG4jIDI3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoYSxwZW5kLGFuKSA9IF8xIGluIChhLE5vbmUscGVuZCxhbikgKVxuIyAyNzU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChrMixrMSxwZW5kLGFuKSA9IF8zIGluIChrMixrMSxOb25lLE5vbmUscGVuZCxhbikgKVxuIyAyNzY2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdyYXRlKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrMixrMSxfLF8pID0gXzMgaW5cbiAgICAgIGxldCAoa2JhY2ssa2JhY2sxLHBlbmQsYW4pID0gXzYgaW5cbiAgICAgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSxwZW5kLGFuKSApXG4jIDI3NzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gXzIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSBfMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIClcbiMgMjc5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSApXG4jIDI3OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LHBlbmQsYW4pID0gXzMgaW4gKChfMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgKVxuIyAyODA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDI4MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAyODI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjgzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSAoXCJsYWJlbCBleHBlY3RlZFwiKSkpIClcbiMgMjg0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIFsgXzEscmhzX3BvcyAxIF0gKVxuIyAyODQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEscmhzX3BvcyAxKSA6OiBfNSApXG4jIDI4NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9IF8yIGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDIpIHBlbmQpKSApXG4jIDI4NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIClcbiMgMjg4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA0OTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW4gKHYsQXN0LklOSVRfVE9LIF8yKSApXG4jIDI4ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzQgaW4gKHYsQXN0LklOSVRfVE9LIFtfMSxyaHNfcG9zIDFdKSlcbiMgMjg5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkgKVxuIyAyOTA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChbXzEsIHJoc19wb3MgMV0pXG4jIDI5MTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxyaHNfcG9zIDEpOjpfMylcbiMgMjkyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSBfMSldLGVuZF9wb3MgMSxfMikgKVxuIyAyOTI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgNTEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF8xIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSApXG4jIDI5MzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHJfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyOTQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxhbikgPSBfMyBpbiAodixlbmRfcG9zIDQsYW4gQCBfNSkgKVxuIyAyOTUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTIxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF81IGluIChQcmltaXRpdmVzLlN0cl9wZXhwciAoXzEsIHJoc19wb3MgMSk6OmwscGVuZCxwKSApXG4jIDI5NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcl9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgdjo6bCxwZW5kLHApIClcbiMgMjk3MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggKFtdLHN0YXJ0X3BvcyAxLF8xKSApXG4jIDI5ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDI5ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMjk5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhLHBlbmQscCkgPSBfNSBpbiAoQXN0LlVQREFURSAoKF8zLHJoc19wb3MgMyksYSkscGVuZCxwKSApXG4jIDMwMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChBc3QuQ0ZMT1dMQUJFTCAoXzUsKF8zLHJoc19wb3MgMykpLGVuZF9wb3MgNSxfNikgKVxuIyAzMDE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwYXQsZXBhdCxfKSA9IF8zIGluXG4gICAgICAoQXN0LkNGTE9XTUlYIChfNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCBfNSkgKVxuIyAzMDMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgKChpZiBfNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCxfNSkgKVxuIyAzMDQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgaWYgXzYgJiYgXzQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSBpZiBfNiAmJiBfNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIClcbiMgMzA2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgKVxuIyAzMDc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nIFxcXG4nJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgKVxuIyAzMTA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDU4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19lcmFzZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMTI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMxMzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxwZW5kLHApID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoZmFsc2UscykscGVuZCxwKSApXG4jIDMxNDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxfLF8pID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoXzMscyksZW5kX3BvcyAzLF80KSApXG4jIDMxNTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNUT1AgcyxwZW5kLHApIClcbiMgMzE1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGYscGVuZCxwKSA9IF80IGluIGxldCAoYyxfLF8pID0gXzIgaW4gKEFzdC5QUklOVCAoZixjKSxwZW5kLHApIClcbiMgMzE2NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYyxwZW5kLHApID0gXzIgaW4gKEFzdC5QUklOVCAoW10sYykscGVuZCxwKSApXG4jIDMxNzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjA1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LlBMT1RFTlRSWSxlbmRfcG9zIDEsXzIpIClcbiMgMzE4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKFxuICAgICAgbGV0IChmaWxlLHBlbmQscCkgPSBfNyBpblxuICAgICAgbGV0IChwYXQscGVuZHAsXykgPSBfMyBpblxuICAgICAgKEFzdC5TUEVDSUVTX09GIChfNCxmaWxlLChwYXQsIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kcCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMTk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgbGV0ICh2LHBlbmQscCkgPSBfNSBpblxuICAgbGV0IHRrID0gKF8xLHJoc19wb3MgMSkgaW5cbiAgICAoQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICh7QXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgICAgICAgICAge0FzdC5taXg9W107XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuID1cbiAgICAgICAgICAgICAgICAgICAgICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsdiwoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgIDQpIHBlbmQpKSxwZW5kLHApXG4gICApXG4jIDMyMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzMjI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNjM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG4gICBleHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzMjM3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoXzEpXG4jIDMyNDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X29yX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA2NDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgIChfMSlcbiMgMzI1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQ0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8zIClcbiMgMzI2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gKFtlXSxlbmRfcG9zIDIsXzMpIClcbiMgMzI2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzMjc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA2NDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzI4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzMjkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoZSxwLGEpID0gXzEgaW4gKFtlXSxwLGEpIClcbiMgMzI5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA2NTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzMwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzMzE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IChlLF8sXykgPSAgXzMgaW4gZSxlbmRfcG9zIDYsXzcgKVxuIyAzMzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzMzM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA2NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzM0NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA2NjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMiBpbiBlIClcbiMgMzM1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJQcm9ibGVtYXRpYyBlZmZlY3QgbGlzdFwiKSkgKVxuIyAzMzU4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBOb25lIClcbiMgMzM2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25icikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzQgKVxuIyAzMzc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJhbGFybSB0YWtlcyBhIG51bWJlciBhcyBhcmd1bWVudFwiKSkgKVxuIyAzMzgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY3OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYixwZW5kLHApID0gXzMgaW4gKFNvbWUgYixwZW5kLHApIClcbiMgMzM5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKE5vbmUsIFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSxbXSkgKVxuIyAzMzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA2ODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAzNDAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY4NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM0MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfNCBpbiBsZXQgKHBvc3QsXyxfKSA9IF81IGluIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNDI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA2OTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocHJlLF8sXykgPSBfMiBpblxuICAgICAgbGV0IChlLF8sXykgPSBfNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSBfNiBpblxuICAgICAgKF8xLFNvbWUgcHJlLGUscG9zdCkgKVxuIyAzNDQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF80IGluXG4gICAgICAgICAgbGV0IChwb3N0LF8sXykgPSBfNSBpblxuICAgICAgICAgIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuUlVMRShTb21lIChfMSwgcmhzX3BvcyAxKSxfMykpIClcbiMgMzQ2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF81IGluIGFkZCAoQXN0LkRFQ0xBUkUgKChfMSxyaHNfcG9zIDEpLHYpKSApXG4jIDM0NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkIChBc3QuUlVMRSAoTm9uZSxfMSkpIClcbiMgMzQ3OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKGEsXyxfKSA9IF8zIGluIGFkZCAoQXN0LlNJRyBhKSApXG4jIDM0ODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZVwiKSkgKVxuIyAzNDk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkIChBc3QuVE9LRU5TSUcgKF8zLHJoc19wb3MgMykpIClcbiMgMzUwNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5QTE9UIHYpIClcbiMgMzUxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzXG4gICAgICAgICAgICAgICAgICBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBcXFxuYW4gYWxnZWJyYWljIGV4cHJlc3Npb24gaXMgZXhwZWN0ZWRcIikpIClcbiMgMzUyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGksdixfLF8pID0gXzMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgKVxuIyAzNTMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoaSx2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5PQlMgKGksdikpIClcbiMgMzUzOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbml0X2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoYWxnLGluaXQpID0gXzMgaW4gYWRkIChBc3QuSU5JVCAoYWxnLGluaXQpKSApXG4jIDM1NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkIChBc3QuUEVSVCAoXzIsIHJoc19wb3MgMikpIClcbiMgMzU1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZCAoQXN0LkNPTkZJRyAoKF8zLHJoc19wb3MgMyksXzUpKSApXG4jIDM1NjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZW50ZW5jZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21vZGVsX2JvZHkpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDM1NzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kZWxfYm9keSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggb3V0cHV0ICgpIClcbiMgMzU3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RlbF9ib2R5KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21vZGVsX2JvZHkpIGluXG4gICAgT2JqLnJlcHIoXG4jIDczOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzU4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIClcbiMgMzU5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkgKVxuIyAzNjAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChwYXVzZSxfLF8pID0gXzQgaW4gQXN0LlJVTiBwYXVzZSApXG4jIDM2MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZWZmLF8sXykgPSBfMiBpbiBBc3QuTU9ESUZZIFtlZmZdIClcbiMgMzYxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUVVJVCApXG4jIDM2MjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzUwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSApXG4jIDM2MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG4oKiBFbnRyeSBtb2RlbCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBpbnRlcmFjdGl2ZV9jb21tYW5kICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9ib29sX2V4cHIgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgbW9kZWwgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3QpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKi9cbi8qIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKi9cbi8qIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiV7XG4gIGxldCBhZGRfcG9zIGUgeCA9XG4gICAgKHgsXG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBlKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gICAgTG9jLm9mX3BvcyAoUGFyc2luZy5yaHNfc3RhcnRfcG9zIGkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGkpXG4gIGxldCBlbmRfcG9zID0gUGFyc2luZy5yaHNfZW5kX3Bvc1xuICBsZXQgc3RhcnRfcG9zID0gUGFyc2luZy5yaHNfc3RhcnRfcG9zXG5cbiAgbGV0IGludGVybmFsX21lbW9yeSA9IHJlZiBbXVxuICBsZXQgYWRkIHggPSBpbnRlcm5hbF9tZW1vcnkgOj0geCA6OiAhaW50ZXJuYWxfbWVtb3J5XG4gIGxldCBvdXRwdXQgKCkgPVxuICAgIGxldCBvID0gTGlzdC5yZXYgIWludGVybmFsX21lbW9yeSBpbiBsZXQgKCkgPSBpbnRlcm5hbF9tZW1vcnkgOj0gW10gaW4gb1xuJX1cblxuJXRva2VuIEVPRiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIE9QX0JSQSBDTF9CUkEgQVQgU0VNSUNPTE9OXG4ldG9rZW4gUExVUyBNSU5VUyBNVUxUIERJViBNT0QgTUFYIE1JTiBTSU5VUyBDT1NJTlVTIFRBTiBQT1cgQUJTIFNRUlQgRVhQT05FTlRcbiV0b2tlbiBMT0cgT1IgQU5EIE5PVCBUSEVOIEVMU0UgRElGRiBFUVVBTCBTTUFMTEVSIEdSRUFURVIgVFJVRSBGQUxTRSBJTkZJTklUWVxuJXRva2VuIFNIQVJQIFVOREVSU0NPUkUgUElQRSBSQVIgTFJBUiBMQVIgRU1BWCBUTUFYIENQVVRJTUUgVElNRSBFVkVOVCBOVUxMX0VWRU5UXG4ldG9rZW4gQ09MT04gTkVXTElORSBCQUNLU0xBU0ggU0lHTkFUVVJFIFRPS0VOIElOSVQgT0JTIFBMT1QgUEVSVCBDT05GSUcgQVBQTFlcbiV0b2tlbiBERUxFVEUgSU5UUk8gU05BUFNIT1QgU1RPUCBGTFVYIFRSQUNLIEFTU0lHTiBQUklOVEYgUExPVEVOVFJZIFNQRUNJRVNfT0ZcbiV0b2tlbiBETyBSRVBFQVQgQUxBUk0gUlVOIExFVFxuJXRva2VuIDxpbnQ+IElOVFxuJXRva2VuIDxmbG9hdD4gRkxPQVRcbiV0b2tlbiA8c3RyaW5nPiBJRCBMQUJFTCBTVFJJTkdcbiV0b2tlbiA8c3RyaW5nPiBTUEFDRSBDT01NRU5UXG5cbiVzdGFydCBtb2RlbFxuJXR5cGUgPEFzdC5wYXJzaW5nX2luc3RydWN0aW9uIGxpc3Q+IG1vZGVsXG5cbiVzdGFydCBpbnRlcmFjdGl2ZV9jb21tYW5kXG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQ+IGludGVyYWN0aXZlX2NvbW1hbmRcblxuJXN0YXJ0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcbiV0eXBlXG4gIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0PiBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG5cbiVzdGFydCBzdGFuZGFsb25lX2Jvb2xfZXhwclxuJXR5cGUgPChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ+IHN0YW5kYWxvbmVfYm9vbF9leHByXG5cbiUlXG5cbmFubm90ZWQ6XG4gIHwgeyBbXSB9XG4gIHwgTkVXTElORSBhbm5vdGVkIHsgXCJcXG5cIjo6JDIgfVxuICB8IFNQQUNFIGFubm90ZWQgeyAkMTo6JDIgfVxuICB8IENPTU1FTlQgYW5ub3RlZCB7ICQxOjokMiB9XG4gIDtcblxubmJyOlxuICB8IElORklOSVRZIHsgTmJyLkYgaW5maW5pdHkgfVxuICB8IEZMT0FUIHsgTmJyLkYgJDEgfVxuICB8IElOVCB7IE5ici5JICQxIH1cbiAgO1xuXG5saW5rX3N0YXRlOlxuICB8IERPVCB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX0ZSRUUgfVxuICB8IElOVCB7IGFkZF9wb3MgMSAoTEthcHBhLkxOS19WQUxVRSAoJDEsKCkpKSB9XG4gIHwgVU5ERVJTQ09SRSB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX1NPTUUgfVxuICB8IElEIGFubm90ZWQgRE9UIGFubm90ZWQgSURcbiAgICB7IGFkZF9wb3MgNSAoTEthcHBhLkxOS19UWVBFICgoJDEscmhzX3BvcyAxKSwoJDUscmhzX3BvcyA1KSkpIH1cbiAgfCBTSEFSUCB7IGFkZF9wb3MgMSBMS2FwcGEuTE5LX0FOWSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJpbmNvbXBsZXRlIGxpbmsgc3RhdGVcIikpIH1cbiAgO1xuXG5saW5rX3N0YXRlczpcbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgeyBbJDFdIH1cbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgbGlua19zdGF0ZXMgeyAkMSA6OiAkMyB9XG4gIHwgbGlua19zdGF0ZSBhbm5vdGVkIENPTU1BIGFubm90ZWQgbGlua19zdGF0ZXMgeyAkMSA6OiAkNSB9XG4gIDtcblxubGlua19tb2RpZjpcbiAgfCB7IE5vbmUgfVxuICB8IERJViBhbm5vdGVkIERPVCBhbm5vdGVkIHsgU29tZSBOb25lIH1cbiAgfCBESVYgYW5ub3RlZCBJTlQgYW5ub3RlZCB7IFNvbWUgKFNvbWUgKCQzLCByaHNfcG9zIDMpKSB9XG4gIHwgRElWIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIH1cbiAgO1xuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgfCBJRCB7IGFkZF9wb3MgMSAoU29tZSAkMSkgfVxuICB8IFNIQVJQIHsgYWRkX3BvcyAxIE5vbmUgfVxuICA7XG5cbmludGVybmFsX3N0YXRlczpcbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIHsgWyQxXSB9XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCBpbnRlcm5hbF9zdGF0ZXMgeyAkMSA6OiAkMyB9XG4gIHwgaW50ZXJuYWxfc3RhdGUgYW5ub3RlZCBDT01NQSBhbm5vdGVkIGludGVybmFsX3N0YXRlcyB7ICQxIDo6ICQ1IH1cbiAgO1xuXG5pbnRlcm5hbF9tb2RpZjpcbiAgfCB7IE5vbmUgfVxuICB8IERJViBhbm5vdGVkIElEIGFubm90ZWQgeyBTb21lICgkMywgcmhzX3BvcyAzKSB9XG4gIHwgRElWIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIH1cbiAgO1xuXG5zaXRlX2xpbms6XG4gIHwgYW5ub3RlZCBsaW5rX3N0YXRlcyBsaW5rX21vZGlmIENMX0JSQSB7ICgkMiwgJDMpIH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgbGlua2luZyBzdGF0ZSBvciBtaXNzaW5nICddJ1wiLHJoc19wb3MgMikpIH1cbiAgO1xuXG5zaXRlX2ludGVybmFsOlxuICB8IGludGVybmFsX3N0YXRlcyBpbnRlcm5hbF9tb2RpZiBDTF9DVVIgeyAoJDEsICQyKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBpbnRlcm5hbCBzdGF0ZSBvciBtaXNzaW5nICd9J1wiLHJoc19wb3MgMykpIH1cbiAgO1xuXG5jb3VudGVyX21vZGlmOlxuICB8IFBMVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7ICgkNSwgcmhzX3BvcyA1KSB9XG4gIHwgUExVUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgTUlOVVMgYW5ub3RlZCBJTlQgeyAoLSAkNywgcmhzX3BvcyA3KSB9XG4gIHwgTUlOVVMgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7ICgtICQ1LCByaHNfcG9zIDUpIH1cbiAgO1xuXG5jb3VudGVyX3Rlc3Q6XG4gIHwgRVFVQUwgYW5ub3RlZCBJTlQgeyAoQXN0LkNFUSAkMyxyaHNfcG9zIDMpIH1cbiAgfCBHUkVBVEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoQXN0LkNHVEUgJDUscmhzX3BvcyA1KSB9XG4gIHwgU01BTExFUiBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKEFzdC5DTFRFICQ1LHJoc19wb3MgNSkgfVxuICB8IEVRVUFMIGFubm90ZWQgSUQgeyAoQXN0LkNWQVIgJDMscmhzX3BvcyAzKSB9XG4gIDtcblxuc2l0ZV9jb3VudGVyOlxuICB8IGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZCB7IChOb25lLCAkMSkgfVxuICB8IGNvdW50ZXJfdGVzdCBhbm5vdGVkIENMX0NVUiBhbm5vdGVkIHsgKFNvbWUgJDEsIExvYy5hbm5vdF93aXRoX2R1bW15IDApIH1cbiAgfCBjb3VudGVyX3Rlc3QgYW5ub3RlZCBESVYgYW5ub3RlZCBjb3VudGVyX21vZGlmIGFubm90ZWQgQ0xfQ1VSIGFubm90ZWRcbiAgICB7IChTb21lICQxLCQ1KSB9XG4gIDtcblxuc2l0ZTpcbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0JSQSBzaXRlX2xpbmsgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJcbiAgICB7IGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gJDUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSB9XG4gIHwgSUQgYW5ub3RlZFxuICAgIHsgQXN0LlBvcnRcbiAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICA7XG5cbmludGVyZmFjZTpcbiAgfCB7IFtdIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIChcIk1hbGZvcm1lZCBzaXRlIGV4cHJlc3Npb25cIikpKSB9XG4gIHwgc2l0ZSBpbnRlcmZhY2UgeyAkMSA6OiAkMiB9XG4gIHwgc2l0ZSBDT01NQSBhbm5vdGVkIGludGVyZmFjZSB7ICQxIDo6ICQ0IH1cbiAgO1xuXG5hZ2VudF9tb2RpZjpcbiAgfCBhbm5vdGVkIHsgQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLCQxIH1cbiAgfCBhbm5vdGVkIFBMVVMgYW5ub3RlZCB7IEFzdC5DcmVhdGUsZW5kX3BvcyAyLCQzIH1cbiAgfCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgeyBBc3QuRXJhc2UsZW5kX3BvcyAyLCQzIH1cbiAgO1xuXG5hZ2VudDpcbiAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICB8IElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKCQ1LHJoc19wb3MgNSksICQ5LCBtb2RpZikscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgO1xuXG5wYXR0ZXJuOlxuICB8IGFnZW50IENPTU1BIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluXG4gIG1hdGNoICQ0IHdpdGhcbiAgfCAoeTo6eixwZW5kLHApIC0+ICgoeDo6eSk6OnoscGVuZCxwKVxuICB8IChbXSxfLF8pIC0+XG4gICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgIChhZGRfcG9zIDQgKFwiYXNzZXJ0aW9uIGZhaWx1cmUgaW4gcGF0dGVybiBwYXJzaW5nXCIpKSkgfVxuICB8IGFnZW50IEJBQ0tTTEFTSCBhbm5vdGVkIHBhdHRlcm5cbnsgbGV0ICh4LF8sXykgPSAkMSBpbiBsZXQgKHkscGVuZCxwKSA9ICQ0IGluIChbeF06OnkscGVuZCxwKSB9XG4gIHwgYWdlbnQgeyBsZXQgKHgscGVuZCxwKSA9ICQxIGluIChbW3hdXSxwZW5kLHApIH1cbiAgO1xuXG5jb25zdGFudDpcbiAgfCBuYnIgeyBhZGRfcG9zIDEgKEFsZ19leHByLkNPTlNUICQxKSB9XG4gIHwgRU1BWCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpIH1cbiAgfCBUTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkgfVxuICB8IENQVVRJTUUgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpIH1cbiAgO1xuXG52YXJpYWJsZTpcbiAgfCBQSVBFIGFubm90ZWQgSUQgYW5ub3RlZCBQSVBFIHsgYWRkX3BvcyA1IChBbGdfZXhwci5UT0tFTl9JRCAoJDMpKSB9XG4gIHwgUElQRSBhbm5vdGVkIHBhdHRlcm4gUElQRVxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpbiBhZGRfcG9zIDQgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIHApIH1cbiAgfCBJRCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgTEFCRUwgeyBhZGRfcG9zIDEgKEFsZ19leHByLkFMR19WQVIgKCQxKSkgfVxuICB8IFRJTUUgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSB9XG4gIHwgRVZFTlQgeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkgfVxuICB8IE5VTExfRVZFTlRcbiAgICB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpIH1cbiAgO1xuXG5zbWFsbF9hbGdfZXhwcjpcbiAgfCBPUF9QQVIgYW5ub3RlZCBhbGdfZXhwciBDTF9QQVIgeyBsZXQgKHgsXyxfKSA9ICQzIGluIHggfVxuICB8IGNvbnN0YW50IHsgJDEgfVxuICB8IHZhcmlhYmxlIHsgJDEgfVxuICB8IE1BWCBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgNSAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDMsJDUpKSB9XG4gIHwgTUlOIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMywkNSkpIH1cbiAgfCBFWFBPTkVOVCBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsJDMpKSB9XG4gIHwgU0lOVVMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU0lOVVMsJDMpKSB9XG4gIHwgQ09TSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQzKSkgfVxuICB8IFRBTiBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sJDMpKSB9XG4gIHwgQUJTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLklOVCwkMykpIH1cbiAgfCBTUVJUIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDMpKSB9XG4gIHwgTE9HIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRywkMykpIH1cbiAgfCBNSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDMpKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fbW9kOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgeyAoJDEsZW5kX3BvcyAxLCQyKSB9XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBQT1cgYW5ub3RlZCBhbGdfZXhwcl91cF90b19tb2RcbiAgICB7IGxldCAoeCx5LHopID0gJDUgaW5cbiAgICAgIChhZGRfcG9zIDQgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLCQxLHgpKSx5LHopIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19wcm9kOlxuICB8IGFsZ19leHByX3VwX3RvX21vZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19wcm9kIE1PRCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTU9EVUxPLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9fc3VtOlxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgeyAkMSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIE1VTFQgYW5ub3RlZCBhbGdfZXhwcl91cF90b19wcm9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQseCx5KSxcbiAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX3N1bSBESVYgYW5ub3RlZCBhbGdfZXhwcl91cF90b19wcm9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLkRJVix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX2lmOlxuICB8IGFsZ19leHByX3VwX3RvX3N1bSB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBQTFVTIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fc3VtXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIE1JTlVTIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fc3VtXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG5cbmFsZ19leHByOlxuICB8IGFsZ19leHByX3VwX3RvX2lmIHsgJDEgfVxuICB8IGJvb2xfZXhwciBUSEVOIGFubm90ZWQgYWxnX2V4cHIgRUxTRSBhbm5vdGVkIHNtYWxsX2FsZ19leHByIGFubm90ZWRcbiAgICB7IGxldCAoaSxfLF8pID0gJDEgaW5cbiAgICAgIGxldCAodCxfLF8pID0gJDQgaW5cbiAgKChBbGdfZXhwci5JRihpLHQsJDcpLFxuICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSAoZW5kX3BvcyA3KSksZW5kX3BvcyA3LCQ4KSB9XG4gIDtcblxuYm9vbGVhbjpcbiAgfCBUUlVFIHsgdHJ1ZSB9XG4gIHwgRkFMU0UgeyBmYWxzZSB9XG4gIDtcblxuc21hbGxfYm9vbF9leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGJvb2xfZXhwciBDTF9QQVIgeyBsZXQgKHgsXyxfKSA9ICQzIGluIHggfVxuICB8IFRSVUUgeyBhZGRfcG9zIDEgQWxnX2V4cHIuVFJVRSB9XG4gIHwgRkFMU0UgeyBhZGRfcG9zIDEgQWxnX2V4cHIuRkFMU0UgfVxuICB8IE5PVCBhbm5vdGVkIHNtYWxsX2Jvb2xfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCwkMykpIH1cbiAgO1xuXG5ib29sX2V4cHJfY29tcDpcbiAgfCBzbWFsbF9ib29sX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsICQyKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgR1JFQVRFUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBTTUFMTEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIEVRVUFMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBESUZGIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmJvb2xfZXhwcl9ub19vcjpcbiAgfCBib29sX2V4cHJfY29tcCB7ICQxIH1cbiAgfCBib29sX2V4cHJfY29tcCBBTkQgYW5ub3RlZCBib29sX2V4cHJfbm9fb3JcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbmJvb2xfZXhwcjpcbiAgfCBib29sX2V4cHJfbm9fb3IgeyAkMSB9XG4gIHwgYm9vbF9leHByX25vX29yIE9SIGFubm90ZWQgYm9vbF9leHByXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5PUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOlxuICB8IGFubm90ZWQgYm9vbF9leHByIEVPRiB7IGxldCAoeCxfLF8pID0gJDIgaW4geCB9XG4gIHwgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiUHJvYmxlbWF0aWMgYm9vbGVhbiBleHByZXNzaW9uXCIpKSB9XG4gIDtcblxuYXJyb3c6XG4gIHwgUkFSIHtmYWxzZX1cbiAgfCBMUkFSIHt0cnVlfVxuICA7XG5cbnN1bV90b2tlbjpcbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIElEIGFubm90ZWQgeyBbKCQxLCgkMyxyaHNfcG9zIDMpKV0sZW5kX3BvcyAzLCQ0IH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBzdW1fdG9rZW5cbiAgICB7IGxldCAobCxwZW5kLGFuKSA9ICQ3IGluICgkMSwoJDMscmhzX3BvcyAzKSkgOjogbCxwZW5kLGFuIH1cbiAgO1xuXG5ydWxlX3NpZGU6XG4gIHwgcGF0dGVybiB7IGxldCAocCxwZW5kLGFuKSA9ICQxIGluIChwLFtdLHBlbmQsYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBzdW1fdG9rZW5cbiAgICB7IGxldCAocCxfLF8pID0gJDEgaW5cbiAgICAgIGxldCAodCxwZW5kLGFuKSA9ICQ0IGluIChwLCB0LCBwZW5kLCBhbikgfVxuICB8IFBJUEUgYW5ub3RlZCBzdW1fdG9rZW4geyBsZXQgKHQscGVuZCxhbikgPSAkMyBpbiAoW10sIHQsIHBlbmQsIGFuKSB9XG4gIHwgcGF0dGVybiBQSVBFIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQoYWRkX3BvcyA0IFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wLCAuLi4gXFxcbiwgYV9uIHRfbiB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkgfVxuICB8IFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIDtcblxucnVsZV9jb250ZW50OlxuICB8IHJ1bGVfc2lkZSBhcnJvdyBhbm5vdGVkIHJ1bGVfc2lkZVxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkNCBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMixwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWRcbiAgICB7IGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSAkMSBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuPVtdfSwkMixlbmRfcG9zIDIsJDMpIH1cbiAgfCBhcnJvdyBhbm5vdGVkIHJ1bGVfc2lkZVxuICAgIHsgbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gJDMgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbj1bXTsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sJDEscGVuZCxhbikgfVxuICB8IHJ1bGVfc2lkZVxuICAgIHsgbGV0IChtaXgsZGVsdGFfdG9rZW4scGVuZCxhbikgPSAkMSBpblxuICAgICAgKEFzdC5FZGl0IHtBc3QubWl4OyBBc3QuZGVsdGFfdG9rZW59LGZhbHNlLHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfd2l0aF9yYWRpdXM6XG4gIHwgYWxnX2V4cHIgeyBsZXQgKHgsXyxfKSA9ICQxIGluICh4LE5vbmUpIH1cbiAgfCBhbGdfZXhwciBDT0xPTiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxfLF8pID0gJDQgaW4gKHgsIFNvbWUgeSkgfVxuICA7XG5cbnJhdGU6XG4gIHwgT1BfQ1VSIGFubm90ZWQgYWxnX3dpdGhfcmFkaXVzIENMX0NVUiBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKGIscGVuZCxhbikgPSAkNiBpbiAoYixTb21lICQzLHBlbmQsYW4pIH1cbiAgfCBhbGdfZXhwciBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsU29tZSAkNCxlbmRfcG9zIDUsJDYpIH1cbiAgfCBhbGdfZXhwciB7IGxldCAoYSxwZW5kLGFuKSA9ICQxIGluIChhLE5vbmUscGVuZCxhbikgfVxuICA7XG5cbmJpcmF0ZTpcbiAgfCBBVCBhbm5vdGVkIHJhdGUgeyBsZXQgKGsyLGsxLHBlbmQsYW4pID0gJDMgaW4gKGsyLGsxLE5vbmUsTm9uZSxwZW5kLGFuKSB9XG4gIHwgQVQgYW5ub3RlZCByYXRlIENPTU1BIGFubm90ZWQgcmF0ZVxuICAgIHsgbGV0IChrMixrMSxfLF8pID0gJDMgaW5cbiAgICAgIGxldCAoa2JhY2ssa2JhY2sxLHBlbmQsYW4pID0gJDYgaW5cbiAgICAgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSxwZW5kLGFuKSB9XG4gIDtcblxucnVsZTpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuLHBvc19lbmQsX2Fubm90KSA9ICQyIGluXG4gICAgICBsZXQgKHJld3JpdGUsYmlkaXJlY3Rpb25hbCxfLF8pID0gJDEgaW5cbiAgICAgICh7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwb3NfZW5kKSB9XG4gIHwgcnVsZV9jb250ZW50IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMiBcInJ1bGUgcmF0ZSBleHBlY3RlZFwiKSkgfVxuICA7XG5cbnZhcmlhYmxlX2RlY2xhcmF0aW9uOlxuICB8IExBQkVMIGFubm90ZWQgYWxnX2V4cHIgeyBsZXQgKHYscGVuZCxhbikgPSAkMyBpbiAoKCQxLHJoc19wb3MgMSksdixwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBMQUJFTCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgSUQgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeJDFeXCInXCIpKSkgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSAoXCJsYWJlbCBleHBlY3RlZFwiKSkpIH1cbiAgO1xuXG5pZF9saXN0OlxuICB8IElEIGFubm90ZWQgeyBbICQxLHJoc19wb3MgMSBdIH1cbiAgfCBJRCBhbm5vdGVkIENPTU1BIGFubm90ZWQgaWRfbGlzdCB7ICgkMSxyaHNfcG9zIDEpIDo6ICQ1IH1cbiAgO1xuXG5pbml0X2RlY2xhcmF0aW9uOlxuICB8IGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDIgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMikgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBPUF9QQVIgYW5ub3RlZCBwYXR0ZXJuIENMX1BBUiBhbm5vdGVkXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9ICQ0IGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSB9XG4gIHwgYWxnX2V4cHIgaWRfbGlzdFxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpbiAodixBc3QuSU5JVF9UT0sgJDIpIH1cbi8qXG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uIENMX0NVUiBhbm5vdGVkXG4gICAgeyBsZXQgKF8sYWxnLGluaXQpID0gJDUgaW4gKFNvbWUgKCQxLHJoc19wb3MgMSksYWxnLGluaXQpIH1cbiovXG4gIHwgSUQgTEFSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAodixfLF8pID0gJDQgaW4gKHYsQXN0LklOSVRfVE9LIFskMSxyaHNfcG9zIDFdKX1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSB9XG4gIDtcblxudmFsdWVfbGlzdDpcbiAgfCBTVFJJTkcgYW5ub3RlZCB7WyQxLCByaHNfcG9zIDFdfVxuICB8IFNUUklORyBhbm5vdGVkIHZhbHVlX2xpc3QgeygkMSxyaHNfcG9zIDEpOjokM31cbiAgO1xuXG5ub25lbXB0eV9wcmludF9leHByOlxuICB8IFNUUklORyBhbm5vdGVkXG4gICAgeyAoW1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zIDEgJDEpXSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZlxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkMSBpbiAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIGFdLHBlbmQscCkgfVxuICB8IHByaW50X2V4cHJfbGlzdCB7ICQxIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwcmludF9leHByX2xpc3QgQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLGFuKSA9ICQzIGluICh2LGVuZF9wb3MgNCxhbiBAICQ1KSB9XG4gIDtcblxucHJpbnRfZXhwcl9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDUgaW4gKFByaW1pdGl2ZXMuU3RyX3BleHByICgkMSwgcmhzX3BvcyAxKTo6bCxwZW5kLHApIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBET1QgYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByXG4gICAgeyBsZXQgKGwscGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQxIGluXG4gICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgdjo6bCxwZW5kLHApIH1cbiAgO1xuXG5wcmludF9leHByOlxuICB8IGFubm90ZWQgeyAoW10sc3RhcnRfcG9zIDEsJDEpIH1cbiAgfCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHIgeyAkMiB9XG4gIDtcblxuZWZmZWN0OlxuICB8IEFTU0lHTiBhbm5vdGVkIElEIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDUgaW4gKEFzdC5VUERBVEUgKCgkMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgfVxuICB8IEFTU0lHTiBhbm5vdGVkIExBQkVMIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYSxwZW5kLHApID0gJDUgaW4gKEFzdC5VUERBVEUgKCgkMyxyaHNfcG9zIDMpLGEpLHBlbmQscCkgfVxuICB8IFRSQUNLIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBib29sZWFuIGFubm90ZWRcbiAgICB7IChBc3QuQ0ZMT1dMQUJFTCAoJDUsKCQzLHJoc19wb3MgMykpLGVuZF9wb3MgNSwkNikgfVxuICB8IFRSQUNLIGFubm90ZWQgcGF0dGVybiBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocGF0LGVwYXQsXykgPSAkMyBpblxuICAgICAgKEFzdC5DRkxPV01JWCAoJDQsKHBhdCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgZXBhdCkpLGVuZF9wb3MgNCwgJDUpIH1cbiAgfCBGTFVYIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW5cbiAgICAgICgoaWYgJDQgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApIGVsc2UgQXN0LkRJTk9GRiBwKSxcbiAgICAgICBlbmRfcG9zIDQsJDUpIH1cbiAgfCBGTFVYIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYW5ub3RlZCBib29sZWFuIGFubm90ZWRcbiAgICB7IGxldCAocCxfLF8pID0gJDMgaW5cbiAgICAgIGlmICQ2ICYmICQ0ID0gXCJhYnNvbHV0ZVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicHJvYmFiaWxpdHlcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgaWYgJDYgJiYgJDQgPSBcInJlbGF0aXZlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDQpKSB9XG4gIHwgQVBQTFkgYW5ub3RlZCBhbGdfZXhwciBydWxlX2NvbnRlbnRcbiAgICB7IGxldCAocmV3cml0ZSxfLHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICh7IEFzdC5yZXdyaXRlOyBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZCkpLFxuICAgICAgcGVuZCxhblxuICAgIH1cbiAgfCBJTlRSTyBhbm5vdGVkIGFsZ19leHByIHBhdHRlcm5cbiAgICB7IGxldCAobSxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDMgaW5cbiAgICAgIChBc3QuQVBQTFkodixcbiAgICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICAgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2NyZWF0ZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0ICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDQpIHBlbmQpKSxcbiAgICAgICBwZW5kLHApIH1cbiAgfCBJTlRSTyBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgXFxcbickQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19lcmFzZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IERFTEVURSBhbm5vdGVkIGVycm9yXG4gICAgICAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBTTkFQU0hPVCBwcmludF9leHByIHsgbGV0IChzLHBlbmQscCkgPSAkMiBpbiAoQXN0LlNOQVBTSE9UIChmYWxzZSxzKSxwZW5kLHApIH1cbiAgfCBTTkFQU0hPVCBwcmludF9leHByIGJvb2xlYW4gYW5ub3RlZCB7IGxldCAocyxfLF8pID0gJDIgaW4gKEFzdC5TTkFQU0hPVCAoJDMscyksZW5kX3BvcyAzLCQ0KSB9XG4gIHwgU1RPUCBwcmludF9leHByIHsgbGV0IChzLHBlbmQscCkgPSAkMiBpbiAoQXN0LlNUT1AgcyxwZW5kLHApIH1cbiAgfCBQUklOVEYgcHJpbnRfZXhwciBHUkVBVEVSIHByaW50X2V4cHJcbiAgICB7IGxldCAoZixwZW5kLHApID0gJDQgaW4gbGV0IChjLF8sXykgPSAkMiBpbiAoQXN0LlBSSU5UIChmLGMpLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIHsgbGV0IChjLHBlbmQscCkgPSAkMiBpbiAoQXN0LlBSSU5UIChbXSxjKSxwZW5kLHApIH1cbiAgfCBQTE9URU5UUlkgYW5ub3RlZCB7IChBc3QuUExPVEVOVFJZLGVuZF9wb3MgMSwkMikgfVxuICB8IFNQRUNJRVNfT0YgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZCBHUkVBVEVSIHByaW50X2V4cHJcbiAgICB7XG4gICAgICBsZXQgKGZpbGUscGVuZCxwKSA9ICQ3IGluXG4gICAgICBsZXQgKHBhdCxwZW5kcCxfKSA9ICQzIGluXG4gICAgICAoQXN0LlNQRUNJRVNfT0YgKCQ0LGZpbGUsKHBhdCwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDMpIHBlbmRwKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIDtcblxuaWRpbjpcbnwgSUQgYW5ub3RlZCBMQVIgYW5ub3RlZCBhbGdfZXhwciB7XG4gICBsZXQgKHYscGVuZCxwKSA9ICQ1IGluXG4gICBsZXQgdGsgPSAoJDEscmhzX3BvcyAxKSBpblxuICAgIChBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgKHtBc3QucmV3cml0ZSA9XG4gICAgICAgICAgICAgIEFzdC5FZGl0XG4gICAgICAgICAgICAgICAgICB7QXN0Lm1peD1bXTtcbiAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW4gPVxuICAgICAgICAgICAgICAgICAgICAgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyx2LChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAgNCkgcGVuZCkpLHBlbmQscClcbiAgIH1cbnwgSUQgYW5ub3RlZCBMQVIgZXJyb3JcbiAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9XG58IElEIGVycm9yXG4gICAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG4gICBleHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgfTtcbjtcblxuZWZmZWN0X29yX2lkaW46XG4gIHwgZWZmZWN0IHskMX1cbiAgfCBpZGluIHskMX1cblxucGFydGlhbF9lZmZlY3RfbGlzdDpcbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIHsgJDMgfVxuICB8IGVmZmVjdF9vcl9pZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdF9vcl9pZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICB8IGVmZmVjdF9vcl9pZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxucGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbjpcbiAgICAgIHwgaWRpbiBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgICAgIHwgaWRpbiB7IGxldCAoZSxwLGEpID0gJDEgaW4gKFtlXSxwLGEpIH1cbiAgICAgIHwgaWRpbiBTRU1JQ09MT04gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0XG4gICAgICAgICAgeyBsZXQgKGUsXyxfKSA9ICQxIGluIGxldCAobCxwZW5kLGEpID0gJDQgaW4gKGU6OmwscGVuZCxhKSB9XG5cbmVmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCBTRU1JQ09MT04gYW5ub3RlZCB7bGV0IChlLF8sXykgPSAgJDMgaW4gZSxlbmRfcG9zIDYsJDcgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCB7IGxldCAoZSxfLF8pID0gJDEgaW4gKFtlXSxlbmRfcG9zIDIsJDMpIH1cbiAgfCBlZmZlY3QgU0VNSUNPTE9OIGFubm90ZWQgZWZmZWN0X2xpc3RcbiAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cbiAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OlxuICB8IGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBFT0YgeyBsZXQgKGUsXyxfKSA9ICQyIGluIGUgfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSBcIlByb2JsZW1hdGljIGVmZmVjdCBsaXN0XCIpKSB9XG4gIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB8IGFubm90ZWQgeyBOb25lIH1cbiAgfCBhbm5vdGVkIEFMQVJNIGFubm90ZWQgbmJyIGFubm90ZWQgeyBTb21lICQ0IH1cbiAgfCBhbm5vdGVkIEFMQVJNIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImFsYXJtIHRha2VzIGEgbnVtYmVyIGFzIGFyZ3VtZW50XCIpKSB9XG4gIDtcblxucGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkOlxuICB8IFJFUEVBVCBhbm5vdGVkIGJvb2xfZXhwciB7IGxldCAoYixwZW5kLHApID0gJDMgaW4gKFNvbWUgYixwZW5kLHApIH1cblxucGVydHVyYmF0aW9uX3Bvc3Q6XG4gIHwgeyAoTm9uZSwgUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpLFtdKSB9XG4gIHwgcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkIHskMX1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fZGVjbGFyYXRpb246XG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKHByZSxfLF8pID0gJDIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gJDUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gJDYgaW5cbiAgICAgICgkMSxTb21lIHByZSxlLHBvc3QpIH1cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gRE8gYW5ub3RlZCBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgbGV0IChlLF8sXykgPSAkNCBpbiBsZXQgKHBvc3QsXyxfKSA9ICQ1IGluICgkMSxOb25lLGUscG9zdCkgfVxuXG4gIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgeyBsZXQgKHByZSxfLF8pID0gJDIgaW5cbiAgICAgIGxldCAoZSxfLF8pID0gJDUgaW5cbiAgICAgIGxldCAocG9zdCxfLF8pID0gJDYgaW5cbiAgICAgICgkMSxTb21lIHByZSxlLHBvc3QpIH1cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gRE8gYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluIHBlcnR1cmJhdGlvbl9wb3N0X2Nsb3NlZFxuICAgICAgICB7IGxldCAoZSxfLF8pID0gJDQgaW5cbiAgICAgICAgICBsZXQgKHBvc3QsXyxfKSA9ICQ1IGluXG4gICAgICAgICAgKCQxLE5vbmUsZSxwb3N0KSB9XG4gIDtcblxuc2VudGVuY2U6XG4gIHwgTEFCRUwgYW5ub3RlZCBydWxlXG4gICAgeyBhZGQgKEFzdC5SVUxFKFNvbWUgKCQxLCByaHNfcG9zIDEpLCQzKSkgfVxuICB8IExBQkVMIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNSBpbiBhZGQgKEFzdC5ERUNMQVJFICgoJDEscmhzX3BvcyAxKSx2KSkgfVxuICB8IHJ1bGUgeyBhZGQgKEFzdC5SVUxFIChOb25lLCQxKSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGFnZW50IHsgbGV0IChhLF8sXykgPSAkMyBpbiBhZGQgKEFzdC5TSUcgYSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIH1cbiAgfCBUT0tFTiBhbm5vdGVkIElEIGFubm90ZWQgeyBhZGQgKEFzdC5UT0tFTlNJRyAoJDMscmhzX3BvcyAzKSkgfVxuICB8IFBMT1QgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixfLF8pID0gJDMgaW4gYWRkIChBc3QuUExPVCB2KSB9XG4gIHwgUExPVCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgfVxuICB8IExFVCBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgfVxuICB8IE9CUyBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHsgbGV0IChpLHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgfVxuICB8IElOSVQgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGFsZyxpbml0KSA9ICQzIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgfVxuICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHsgYWRkIChBc3QuUEVSVCAoJDIsIHJoc19wb3MgMikpIH1cbiAgfCBDT05GSUcgYW5ub3RlZCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0XG4gICAgeyBhZGQgKEFzdC5DT05GSUcgKCgkMyxyaHNfcG9zIDMpLCQ1KSkgfVxuICA7XG5cbm1vZGVsX2JvZHk6XG4gIHwgc2VudGVuY2UgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBFT0YgeyBvdXRwdXQgKCkgfVxuICA7XG5cbm1vZGVsOlxuICB8IGFubm90ZWQgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIH1cbiAgO1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgU0VNSUNPTE9OIHsgQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIH1cbiAgfCBhbm5vdGVkIFJVTiBhbm5vdGVkIGJvb2xfZXhwciBTRU1JQ09MT04geyBsZXQgKHBhdXNlLF8sXykgPSAkNCBpbiBBc3QuUlVOIHBhdXNlIH1cbiAgfCBhbm5vdGVkIGVmZmVjdCBTRU1JQ09MT04geyBsZXQgKGVmZixfLF8pID0gJDIgaW4gQXN0Lk1PRElGWSBbZWZmXSB9XG4gIHwgYW5ub3RlZCBFT0YgeyBBc3QuUVVJVCB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIH1cbiAgO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGFwcGVuZF90b19hc3RfY29tcGlsIHJldl9pbnN0ciBjb21waWwgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gciAtPiBmdW5jdGlvblxuICAgICAgfCBBc3QuUlVMRSBydSAtPiB7IHIgd2l0aCBBc3QucnVsZXMgPSBydSA6OiByLkFzdC5ydWxlcyB9XG4gICAgICB8IEFzdC5TSUcgYWcgLT4geyByIHdpdGggQXN0LnNpZ25hdHVyZXMgPSBhZyA6OiByLkFzdC5zaWduYXR1cmVzIH1cbiAgICAgIHwgQXN0LlRPS0VOU0lHIHN0cl9wb3MgLT4geyByIHdpdGggQXN0LnRva2VucyA9IHN0cl9wb3MgOjogci5Bc3QudG9rZW5zIH1cbiAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsIHZvbCwgdm9sX3BhcmFtKSAtPlxuICAgICAgICB7IHIgd2l0aCBBc3Qudm9sdW1lcyA9ICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIDo6IHIuQXN0LnZvbHVtZXMgfVxuICAgICAgfCBBc3QuSU5JVCAoYWxnLCBpbml0X3QpIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC5pbml0ID0gKGFsZywgaW5pdF90KSA6OiByLkFzdC5pbml0IH1cbiAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+IHsgciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzIH1cbiAgICAgIHwgQXN0Lk9CUyAoKChsYmwsIHBvcyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QudmFyaWFibGVzID0gdmFyIDo6IHIuQXN0LnZhcmlhYmxlcztcbiAgICAgICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwsIHBvcykgOjogci5Bc3Qub2JzZXJ2YWJsZXM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LlBMT1QgZXhwciAtPiB7IHIgd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByIDo6IHIuQXN0Lm9ic2VydmFibGVzIH1cbiAgICAgIHwgQXN0LlBFUlQgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5wZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgICgoYWxhcm0sIHByZSwgZWZmZWN0LCBvcHQpLCBwb3MpIDo6IHIuQXN0LnBlcnR1cmJhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSA6OiByLkFzdC5jb25maWd1cmF0aW9ucztcbiAgICAgICAgfSlcbiAgICBjb21waWwgKExpc3QucmV2IHJldl9pbnN0cilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gWycwJy0nOSddK1xubGV0IHJlYWwgPVxuICAoWycwJy0nOSddKyBbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKSB8XG4gICgoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSopIHwgKCcuJyBbJzAnLSc5J10rKSlcbiAgICAoWydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKyk/KVxubGV0IGlkID0gWydfJyAnfiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKyB8XG4gICAgICAgICBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICd+JyAnLScgJysnXSpcblxucnVsZSB0b2tlbiA9IHBhcnNlXG4gIHwgJy8nICcvJyAoW14nXFxyJydcXG4nXSogYXMgcykgKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWY7IENPTU1FTlQgc31cbiAgfCAnLycgJyonIHtDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpfVxuICB8IGVvbCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgfVxuICB8IGJsYW5rICsgYXMgeCB7IFNQQUNFIHggfVxuICB8ICcjJyB7IFNIQVJQIH1cbiAgfCBcIiYmXCIgeyBBTkQgfVxuICB8IFwifHxcIiB7IE9SIH1cbiAgfCBcIjwtPlwiIHsgTFJBUiB9XG4gIHwgXCI8LVwiIHtMQVJ9XG4gIHwgXCItPlwiIHsgUkFSIH1cbiAgfCBcIjw+XCIgeyBESUZGIH1cbiAgfCAnOicgeyBDT0xPTiB9XG4gIHwgJzsnIHsgU0VNSUNPTE9OIH1cbiAgfCAnQCcgeyBBVCB9XG4gIHwgJywnIHsgQ09NTUEgfVxuICB8ICdcXFxcJyB7QkFDS1NMQVNIfVxuICB8ICcoJyB7IE9QX1BBUiB9XG4gIHwgJyknIHsgQ0xfUEFSIH1cbiAgfCAnWycgeyBPUF9CUkEgfVxuICB8ICddJyB7IENMX0JSQSB9XG4gIHwgJ3snIHsgT1BfQ1VSIH1cbiAgfCAnfScgeyBDTF9DVVIgfVxuICB8ICd8JyB7IFBJUEUgfVxuICB8ICcuJyB7IERPVCB9XG4gIHwgJ18nIHsgVU5ERVJTQ09SRSB9XG4gIHwgJysnIHsgUExVUyB9XG4gIHwgJyonIHsgTVVMVCB9XG4gIHwgJy0nIHsgTUlOVVMgfVxuICB8ICdeJyB7IFBPVyB9XG4gIHwgJy8nIHsgRElWIH1cbiAgfCAnPCcgeyBTTUFMTEVSIH1cbiAgfCAnPicgeyBHUkVBVEVSIH1cbiAgfCAnPScgeyBFUVVBTCB9XG4gIHwgaW50ZWdlciBhcyBuIHsgSU5UIChpbnRfb2Zfc3RyaW5nIG4pIH1cbiAgfCByZWFsIGFzIGYgeyBGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHgpICdcXCcneyBMQUJFTCh4KSB9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10qIGFzIHgpICdcXFwiJ3sgU1RSSU5HKHgpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZzogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8IGlkIGFzIHN0ciB7IGtleXdvcmRfb3JfaWQgc3RyIH1cbiAgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgJ1snIGJsYW5rKiAnPycgYmxhbmsqICddJyB7IFRIRU4gfVxuICB8ICdbJyBibGFuayogJzonIGJsYW5rKiAnXScgeyBFTFNFIH1cbiAgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnJCcgKGlkIGFzIHMpIHtcbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFwiQVBQTFlcIiAtPiBBUFBMWVxuICAgIHwgXCJERUxcIiAtPiBERUxFVEVcbiAgICB8IFwiQUREXCIgLT4gSU5UUk9cbiAgICB8IFwiU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuICAgIHwgXCJTVE9QXCIgLT4gU1RPUFxuICAgIHwgXCJESU5cIiAtPiBGTFVYXG4gICAgfCBcIlRSQUNLXCIgLT4gVFJBQ0tcbiAgICB8IFwiVVBEQVRFXCIgLT4gQVNTSUdOXG4gICAgfCBcIlBSSU5UXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBSSU5URlwiIC0+IFBSSU5URlxuICAgIHwgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgICB8IFwiUlVOXCIgLT4gUlVOXG4gICAgfCBcIlNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG4gICAgfCBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBpbnRlcnZlbnRpb246IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCBlb2YgeyBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgfVxuICB8IF8gYXMgYyB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIH1cblxuYW5kIGlubGluZV9jb21tZW50IGFjYyA9IHBhcnNlXG4gIHwgKFteJ1xcbicgJyonICdcXFwiJyAnLyddICopIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgJy8nIFteJ1xccicnXFxuJ10qIGFzIHgpIGVvbFxuICAgIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCBlb2wgYXMgeCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcqJyBbXicvJyAnXFxuJyAnXFxcIiddKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJy8nIFteJyonICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICcqJyAnLycgeyBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgfVxuICB8IGVvZiB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgJyonICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAnXFxcIicpIGFzIHhcbiAgICB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAoZW9mIHwgJ1xcbicpKSBhcyB4XG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8ICcvJyAnKidcbiAgICB7IGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgfVxuICB8ICcvJyAnXFxuJyB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgfVxuXG5hbmQgcmVjb3ZlcnkgPSBwYXJzZVxuICB8IFteJ1xccicnXFxuJ10qIChlb2wgfCBlb2YpIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmfVxuXG57XG4gIGxldCByZWMgYXV4X21vZGVsIGVyciBsZXggPVxuICB0cnkgbGV0IG91dCA9IEtwYXJzZXI0Lm1vZGVsIHRva2VuIGxleCBpbiAob3V0LCBMaXN0LnJldiBlcnIpXG4gIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgZSAtPlxuICAgIGxldCAoKSA9IHJlY292ZXJ5IGxleCBpblxuICAgIGF1eF9tb2RlbCAoZTo6ZXJyKSBsZXhcblxuICBsZXQgbW9kZWwgbGV4ID0gYXV4X21vZGVsIFtdIGxleFxuXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmljID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmljIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAge2xleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSBmaWN9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpYyA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmljIGluXG4gICAgbGV0IChvdXQsZXJyKSA9IG1vZGVsIGxleGJ1ZiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgbGV0ICgpID0gbWF0Y2ggZXJyIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgKG1zZyxwb3MpOjpfIC0+XG4gICAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICAgIGV4aXQgMyBpblxuICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICBDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgb3V0IGNvbXBpbFxufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cblxuIyAxNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIwOVxcMjU1XFwyMTBcXDI1NVxcMDYyXFwwMDBcXDEyNFxcMDAwXFwyMDlcXDAwMFxcMDMzXFwwMDFcXDIzN1xcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxMTJcXDAwMVxcMjIzXFwyNTVcXDIyNFxcMjU1XFwyMjdcXDI1NVxcMjI5XFwyNTVcXDIzMFxcMjU1XFwxNzNcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMDMxXFwwMDJcXDIzOFxcMjU1XFwyMzlcXDI1NVxcMjQwXFwyNTVcXFxuICAgIFxcMjQxXFwyNTVcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDI5XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDI1MVxcMjU1XFwyNDBcXDAwMFxcMjUzXFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMjU0XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMjUwXFwyNTVcXDI0OVxcMjU1XFwyNDVcXDI1NVxcMDkyXFwwMDBcXDI0OFxcMjU1XFwyNDZcXDI1NVxcMTQ1XFwwMDJcXFxuICAgIFxcMjI1XFwwMDJcXDE3MVxcMDAxXFwwMzJcXDAwMlxcMDgzXFwwMDNcXDIxNFxcMjU1XFwyMTNcXDI1NVxcMTk3XFwwMDNcXDIxMlxcMjU1XFxcbiAgICBcXDA2M1xcMDAyXFwwNzNcXDAwM1xcMjU1XFwwMDFcXDE0NFxcMDAxXFwwMjVcXDAwMlxcMDIxXFwwMDRcXDEwMFxcMDA0XFwxMTVcXDAwMlxcXG4gICAgXFwxMzBcXDAwMlxcMDQ4XFwwMDNcXDE3N1xcMDAwXFwyMThcXDI1NVxcMjIwXFwyNTVcXDIxOVxcMjU1XFwwODNcXDAwM1xcMjE3XFwyNTVcXFxuICAgIFxcMTM3XFwwMDRcXDIxN1xcMDA0XFwwNDFcXDAwNVxcMjE1XFwyNTVcXDEyMVxcMDA1XFwyMDFcXDAwNVxcMDI1XFwwMDZcXDE5N1xcMDAzXFxcbiAgICBcXDA4NFxcMDAzXFwyNDlcXDI1NVxcMTM0XFwwMDRcXDI1M1xcMjU1XFwxMzhcXDAwNlxcMTM5XFwwMDZcXDE0MFxcMDA2XFwyNDRcXDI1NVxcXG4gICAgXFwyNDVcXDI1NVxcMjUxXFwyNTVcXDAxM1xcMDAwXFwyNTRcXDI1NVxcMDA0XFwwMDBcXDAxN1xcMDAwXFwyNDhcXDI1NVxcMjUwXFwyNTVcXFxuICAgIFxcMjUyXFwyNTVcXDE5OFxcMDAzXFwyNDZcXDI1NVxcMjQ3XFwyNTVcXDIwN1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAzOVxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMjJcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzlcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODVcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM5XFwwMDBcXDAzNVxcMDAwXFwwOTFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMjhcXDAwMFxcMDE2XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAyN1xcMDAwXFwwMjZcXDAwMFxcMDI5XFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMTlcXDAwMFxcMDEyXFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAxOFxcMDAwXFwwMzBcXDAwMFxcMDE3XFwwMDBcXDAwNlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDQyXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY3XFwwMDBcXDA3N1xcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2OFxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxMDJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzdcXDAwMFxcMDMzXFwwMDBcXDA3M1xcMDAwXFwwNDRcXDAwMFxcMDA1XFwwMDBcXDAzOFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAzOVxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDYzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNDhcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1MVxcMDAwXFwwNzFcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMDk4XFwwMDBcXDA0OFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDk1XFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDk4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMzBcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwNjZcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDEwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAzNlxcMDAwXFwwMzNcXDAwMFxcMDA0XFwwMDBcXDAyOVxcMDAwXFwwMDVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAyOVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwOTNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwMDlcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDA1MFxcMDAwXFwwNThcXDAwMFxcMDE1XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA1NlxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG4gICAgXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDAyMFxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA3MFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDUxXFwwMDBcXDA3OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwODJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAyXFwwMDFcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDM4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA4NFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDQ4XFwwMDBcXDA2NlxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDA2XFwyNTVcXDI1NVxcMDA1XFwyNTVcXDI1NVxcMDA0XFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwM1xcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDRcXDI1NVxcMDAwXFwwMDVcXDI1NVxcMDAwXFwwMDZcXDI1NVxcMDAxXFwyNTVcXFxuICAgIFxcMjU1XFwwMDBcXDAwMVxcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNyAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgNzU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgMzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzKVxuIyA3NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgIChDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpKVxuIyA3NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBORVdMSU5FIClcbiMgNzczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHhcbiMgNzc5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBTUEFDRSB4IClcbiMgNzgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxuIyAzOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0hBUlAgKVxuIyA3ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggQU5EIClcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyA0MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIE9SIClcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyA0MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgKCBMUkFSIClcbiMgODAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOCAtPlxuIyA0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA4MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG4jIDQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggUkFSIClcbiMgODEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNDUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBESUZGIClcbiMgODE4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNDYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTE9OIClcbiMgODIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTIgLT5cbiMgNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNFTUlDT0xPTiApXG4jIDgyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEzIC0+XG4jIDQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBBVCApXG4jIDgzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE0IC0+XG4jIDQ5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDT01NQSApXG4jIDgzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE1IC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChCQUNLU0xBU0gpXG4jIDg0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE2IC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9QQVIgKVxuIyA4NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfUEFSIClcbiMgODUzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTggLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX0JSQSApXG4jIDg1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE5IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9CUkEgKVxuIyA4NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMCAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQ1VSIClcbiMgODY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjEgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0NVUiApXG4jIDg3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIyIC0+XG4jIDU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQSVBFIClcbiMgODc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjMgLT5cbiMgNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIERPVCApXG4jIDg4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI0IC0+XG4jIDU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBVTkRFUlNDT1JFIClcbiMgODg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjUgLT5cbiMgNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBMVVMgKVxuIyA4OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNiAtPlxuIyA2MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTVVMVCApXG4jIDg5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI3IC0+XG4jIDYyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNSU5VUyApXG4jIDkwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI4IC0+XG4jIDYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQT1cgKVxuIyA5MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyOSAtPlxuIyA2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRElWIClcbiMgOTEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzAgLT5cbiMgNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNNQUxMRVIgKVxuIyA5MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMSAtPlxuIyA2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggR1JFQVRFUiApXG4jIDkyMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMyIC0+XG4jIDY3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBFUVVBTCApXG4jIDkyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMzIC0+XG5sZXRcbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA5MzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIElOVCAoaW50X29mX3N0cmluZyBuKSApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM0IC0+XG5sZXRcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgZlxuIyA5NDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgOTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA3MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMQUJFTCh4KSApXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM2IC0+XG5sZXRcbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNUUklORyh4KSApXG4jIDk2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5NzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBsYWJlbDogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA5ODEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzOCAtPlxubGV0XG4jIDc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTg3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk5NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM5IC0+XG5sZXRcbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgIHN0clxuIyAxMDAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDgyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgKCBrZXl3b3JkX29yX2lkIHN0ciApXG4jIDEwMDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MCAtPlxubGV0XG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyAxMDEwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcbiAgICB8IFwiaW5pdFwiIC0+IElOSVRcbiAgICB8IFwidmFyXCIgLT4gTEVUXG4gICAgfCBcInBsb3RcIiAtPiBQTE9UXG4gICAgfCBcIm1vZFwiIC0+IFBFUlRcbiAgICB8IFwib2JzXCIgLT4gT0JTXG4gICAgfCBcImRlZlwiIC0+IENPTkZJR1xuICAgIHwgXCJ0b2tlblwiIC0+IFRPS0VOXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGRpcmVjdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDEgLT5cbiMgOTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUSEVOIClcbiMgMTAzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQyIC0+XG4jIDk5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRUxTRSApXG4jIDEwMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MyAtPlxubGV0XG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDEwNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTA3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ0IC0+XG5sZXRcbiMgMTI3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHNcbiMgMTA4MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDUgLT5cbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgKVxuIyAxMTA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDYgLT5cbmxldFxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgY1xuIyAxMTE0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gY2hhcmFjdGVyOiBcIl5TdHJpbmcubWFrZSAxIGMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSApXG4jIDExMjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGFjYyBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSAyICgtMSk7IF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIDc5XG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTEzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTEzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyAxNTUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAxNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICB4XG4jIDExNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGluXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgMTYwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICggU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIClcbiMgMTE4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDYgLT5cbiMgMTYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiApXG4jIDExOTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgMTYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDEyMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG5sZXRcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTIwOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGluIGNvbW1lbnQ6IFwiXngsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgMTIxNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEwIC0+XG4jIDE3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBpbmxpbmVfY29tbWVudCAoXCIqL1wiOjooaW5saW5lX2NvbW1lbnQgW1wiLypcIl0gbGV4YnVmKTo6IGFjYykgbGV4YnVmIClcbiMgMTIyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDExIC0+XG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIvXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTIyNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlY292ZXJ5IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIDEwMFxuYW5kIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmKVxuIyAxMjM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG5cbiMgMTI3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgaXRlbSA9IHsgcmFuazogaW50OyBjb250ZW50OiBzdHJpbmcgfVxuXG50eXBlIGNhdGFsb2cgPSB7XG4gIGVsZW1lbnRzOiAoc3RyaW5nLCBpdGVtKSBIYXNodGJsLnQ7XG4gIGluZGV4OiBzdHJpbmcgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWwgb3B0aW9uIHJlZjtcbn1cblxudHlwZSBjYXRhbG9nX2l0ZW0gPSB7IHBvc2l0aW9uOiBpbnQ7IGlkOiBzdHJpbmcgfVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtIG9iIHsgcG9zaXRpb247IGlkIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiaWRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIGlkIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9zaXRpb25cIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIHBvc2l0aW9uIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfY2F0YWxvZ19pdGVtIHAgbGIgPVxuICBsZXQgcG9zaXRpb24sIGlkLCBjb3VudCA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChwb3MsIGksIGMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9zaXRpb25cIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGksIHN1Y2MgY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwiaWRcIikgaW5cbiAgICAgICAgICBwb3MsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzdWNjIGNcbiAgICAgICAgKSlcbiAgICAgICgtMSwgXCJcIiwgMCkgcCBsYlxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKGNvdW50ID0gMikgaW5cbiAgeyBwb3NpdGlvbjsgaWQgfVxuXG5sZXQgY3JlYXRlICgpID1cbiAge1xuICAgIGVsZW1lbnRzID0gSGFzaHRibC5jcmVhdGUgMTtcbiAgICBpbmRleCA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDEgTm9uZTtcbiAgICBhc3QgPSByZWYgTm9uZTtcbiAgfVxuXG5sZXQgcHV0IH5wb3NpdGlvbjpyYW5rIH5pZCB+Y29udGVudCBjYXRhbG9nID1cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGNhdGFsb2cuZWxlbWVudHMgaWQgeyByYW5rOyBjb250ZW50IH0gaW5cbiAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2F0YWxvZy5pbmRleCByYW5rIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIChTb21lIGlkKSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcbiAgfCBTb21lIGFpZSAtPlxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiU2xvdCBcIiBeIHN0cmluZ19vZl9pbnQgcmFuayBeIFwiIGlzIG5vdCBhdmFpbGFibGUuIFRoZXJlIGlzIGFscmVhZHkgXCJcbiAgICAgXiBhaWUpXG5cbmxldCBmaWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBpZiBIYXNodGJsLm1lbSBjYXRhbG9nLmVsZW1lbnRzIGlkIHRoZW5cbiAgICBSZXN1bHQuRXJyb3JcbiAgICAgIChcIkEgZmlsZSBjYWxsZWQgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBjYXRhbG9nXCIpXG4gIGVsc2VcbiAgICBwdXQgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG5cbmxldCBmaWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTWlzc2luZyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGluIHRoZSBjYXRhbG9nXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiRmlsZSBjYXRhbG9nIGhhcyBzZXJpb3VzIHByb2JsZW1zXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIlVua25vd24gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIlNlcmlvdXMgcHJvYmxlbXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcblxubGV0IGZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTm8gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IGZhaWx3aXRoIFwiQmlnIHRyb3VibGVzIGluIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IF8gfSBdIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBjYXRhbG9nLmVsZW1lbnRzIGlkIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9nZXQgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJGaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGRvZXMgbm90IGV4aXN0XCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiQ29ycnVwdGVkIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IGNvbnRlbnQgfSBdIC0+IFJlc3VsdC5PayAoY29udGVudCwgcmFuaylcblxubGV0IGNhdGFsb2cgY2F0YWxvZyA9XG4gIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAoZnVuIHBvc2l0aW9uIHggYWNjIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBpZCAtPiB7IHBvc2l0aW9uOyBpZCB9IDo6IGFjYylcbiAgICBjYXRhbG9nLmluZGV4IFtdXG5cbmxldCBwYXJzZSB5aWVsZCBjYXRhbG9nID1cbiAgbWF0Y2ggIShjYXRhbG9nLmFzdCkgd2l0aFxuICB8IFNvbWUgY29tcGlsZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBjb21waWxlKVxuICB8IE5vbmUgLT5cbiAgICBNb2RzLkR5bkFycmF5LmZvbGRfcmlnaHRpXG4gICAgICAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZmlsZSA9IEhhc2h0YmwuZmluZCBjYXRhbG9nLmVsZW1lbnRzIHggaW5cbiAgICAgICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGZpbGUuY29udGVudCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAgICAgICAgeyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0geCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MgPj49IGZ1biAoY29tcGlsZSwgZXJyKSAtPlxuICAgICAgICAgIGxldCBjb21waWxlID1cbiAgICAgICAgICAgIHsgY29tcGlsZSB3aXRoIEFzdC5maWxlbmFtZXMgPSB4IDo6IGNvbXBpbGUuQXN0LmZpbGVuYW1lcyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QuY2F0Y2hcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LndyYXAxIEtsZXhlcjQubW9kZWwgbGV4YnVmID4+PSBmdW4gKGluc3RzLCBlcnInKSAtPlxuICAgICAgICAgICAgICB5aWVsZCAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBpbnN0cyBjb21waWxlLCBlcnInIEAgZXJyKSlcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCAobWVzc2FnZSwgcmFuZ2UpIDo6IGVycilcbiAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKCBjb21waWxlLFxuICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpIDo6IGVyciApXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBQcmludGV4Yy50b19zdHJpbmcgZXhuIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoY29tcGlsZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgbWVzc2FnZSA6OiBlcnIpKSlcbiAgICAgIGNhdGFsb2cuaW5kZXhcbiAgICAgIChMd3QucmV0dXJuIChBc3QuZW1wdHlfY29tcGlsLCBbXSkpXG4gICAgPj49ICggZnVuY3Rpb25cbiAgICB8IGNvbXBpbGUsIFtdIC0+XG4gICAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBTb21lIGNvbXBpbGUgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gICAgfCBfLCBlcnIgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gKCh0ZXh0LCBwKSBhcyB4KSAtPlxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgaWYgTG9jLmlzX2Fubm90ZWRfd2l0aF9kdW1teSB4IHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjsgcmFuZ2U7IHRleHQgfSlcbiAgICAgICAgICBlcnJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlcnIpIClcblxubGV0IG92ZXJ3cml0ZSBmaWxlbmFtZSBhc3QgY2F0YWxvZyA9XG4gIGxldCBjb250ZW50ID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBBc3QucHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEgYXN0IGluXG4gIGxldCBpdCA9IHsgcmFuayA9IDA7IGNvbnRlbnQgfSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IGNhdGFsb2cuZWxlbWVudHMgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5hZGQgY2F0YWxvZy5lbGVtZW50cyBmaWxlbmFtZSBpdCBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSBfIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggaSBOb25lKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICBpblxuICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IDAgKFNvbWUgZmlsZW5hbWUpIGluXG4gIGNhdGFsb2cuYXN0IDo9IFNvbWUgYXN0XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBFT0ZcbiAgfCBORVdMSU5FXG4gIHwgU0VNSUNPTE9OXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBBVFxuICB8IFRZUEVcbiAgfCBMQVJcbiAgfCBDUFVUSU1FXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBQTE9URU5UUllcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFRSQUNLXG4gIHwgRE9cbiAgfCBTRVRcbiAgfCBSRVBFQVRcbiAgfCBTUEVDSUVTX09GXG4gIHwgVU5USUxcbiAgfCBMT0dcbiAgfCBQTFVTXG4gIHwgTVVMVFxuICB8IE1JTlVTXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgRElWXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgTU9EVUxPXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgSU5GSU5JVFlcbiAgfCBUSU1FXG4gIHwgRVZFTlRcbiAgfCBOVUxMX0VWRU5UXG4gIHwgUElQRVxuICB8IEVRVUFMXG4gIHwgQU5EXG4gIHwgT1JcbiAgfCBOT1RcbiAgfCBHUkVBVEVSXG4gIHwgU01BTExFUlxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IERJRkZcbiAgfCBLQVBQQV9SQVJcbiAgfCBLQVBQQV9MUkFSXG4gIHwgS0FQUEFfTE5LXG4gIHwgU0lHTkFUVVJFXG4gIHwgSU5JVFxuICB8IExFVFxuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgT0JTXG4gIHwgVE9LRU5cbiAgfCBDT05GSUdcbiAgfCBLQVBQQV9XTERcbiAgfCBLQVBQQV9TRU1JXG4gIHwgRkxVWFxuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFNUT1BcbiAgfCBTTkFQU0hPVFxuICB8IFJVTlxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgQUxBUk1cbiAgfCBBUFBMWVxuICB8IElOVCBvZiAoaW50KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgS0FQUEFfTVJLIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBGTE9BVCBvZiAoZmxvYXQpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiMgOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgICAwICgqIEVPRiAqKTtcbiAgMjU3ICgqIE5FV0xJTkUgKik7XG4gIDI1OCAoKiBTRU1JQ09MT04gKik7XG4gIDI1OSAoKiBDT01NQSAqKTtcbiAgMjYwICgqIERPVCAqKTtcbiAgMjYxICgqIE9QX1BBUiAqKTtcbiAgMjYyICgqIENMX1BBUiAqKTtcbiAgMjYzICgqIE9QX0NVUiAqKTtcbiAgMjY0ICgqIENMX0NVUiAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogVFlQRSAqKTtcbiAgMjY3ICgqIExBUiAqKTtcbiAgMjY4ICgqIENQVVRJTUUgKik7XG4gIDI2OSAoKiBFTUFYICopO1xuICAyNzAgKCogVE1BWCAqKTtcbiAgMjcxICgqIFBMT1RFTlRSWSAqKTtcbiAgMjcyICgqIERFTEVURSAqKTtcbiAgMjczICgqIElOVFJPICopO1xuICAyNzQgKCogVFJBQ0sgKik7XG4gIDI3NSAoKiBETyAqKTtcbiAgMjc2ICgqIFNFVCAqKTtcbiAgMjc3ICgqIFJFUEVBVCAqKTtcbiAgMjc4ICgqIFNQRUNJRVNfT0YgKik7XG4gIDI3OSAoKiBVTlRJTCAqKTtcbiAgMjgwICgqIExPRyAqKTtcbiAgMjgxICgqIFBMVVMgKik7XG4gIDI4MiAoKiBNVUxUICopO1xuICAyODMgKCogTUlOVVMgKik7XG4gIDI4NCAoKiBNQVggKik7XG4gIDI4NSAoKiBNSU4gKik7XG4gIDI4NiAoKiBESVYgKik7XG4gIDI4NyAoKiBTSU5VUyAqKTtcbiAgMjg4ICgqIENPU0lOVVMgKik7XG4gIDI4OSAoKiBUQU4gKik7XG4gIDI5MCAoKiBQT1cgKik7XG4gIDI5MSAoKiBBQlMgKik7XG4gIDI5MiAoKiBNT0RVTE8gKik7XG4gIDI5MyAoKiBTUVJUICopO1xuICAyOTQgKCogRVhQT05FTlQgKik7XG4gIDI5NSAoKiBJTkZJTklUWSAqKTtcbiAgMjk2ICgqIFRJTUUgKik7XG4gIDI5NyAoKiBFVkVOVCAqKTtcbiAgMjk4ICgqIE5VTExfRVZFTlQgKik7XG4gIDI5OSAoKiBQSVBFICopO1xuICAzMDAgKCogRVFVQUwgKik7XG4gIDMwMSAoKiBBTkQgKik7XG4gIDMwMiAoKiBPUiAqKTtcbiAgMzAzICgqIE5PVCAqKTtcbiAgMzA0ICgqIEdSRUFURVIgKik7XG4gIDMwNSAoKiBTTUFMTEVSICopO1xuICAzMDYgKCogVFJVRSAqKTtcbiAgMzA3ICgqIEZBTFNFICopO1xuICAzMDggKCogRElGRiAqKTtcbiAgMzA5ICgqIEtBUFBBX1JBUiAqKTtcbiAgMzEwICgqIEtBUFBBX0xSQVIgKik7XG4gIDMxMSAoKiBLQVBQQV9MTksgKik7XG4gIDMxMiAoKiBTSUdOQVRVUkUgKik7XG4gIDMxMyAoKiBJTklUICopO1xuICAzMTQgKCogTEVUICopO1xuICAzMTUgKCogUExPVCAqKTtcbiAgMzE2ICgqIFBFUlQgKik7XG4gIDMxNyAoKiBPQlMgKik7XG4gIDMxOCAoKiBUT0tFTiAqKTtcbiAgMzE5ICgqIENPTkZJRyAqKTtcbiAgMzIwICgqIEtBUFBBX1dMRCAqKTtcbiAgMzIxICgqIEtBUFBBX1NFTUkgKik7XG4gIDMyMiAoKiBGTFVYICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogU1RPUCAqKTtcbiAgMzI2ICgqIFNOQVBTSE9UICopO1xuICAzMjcgKCogUlVOICopO1xuICAzMjggKCogVEhFTiAqKTtcbiAgMzI5ICgqIEVMU0UgKik7XG4gIDMzMCAoKiBBTEFSTSAqKTtcbiAgMzMxICgqIEFQUExZICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogSUQgKik7XG4gIDMzNCAoKiBLQVBQQV9NUksgKik7XG4gIDMzNSAoKiBMQUJFTCAqKTtcbiAgMzM2ICgqIEZMT0FUICopO1xuICAzMzcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEzXFwwMDBcXFxuXFwwMTNcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuXFwwMzlcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDBcXDE4OFxcMDAwXFxcblxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwM1xcMDAwXFwxMDFcXDAwMFxcMTAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5N1xcMDAwXFwxMDhcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA5OVxcMDAwXFwxMDZcXDAwMFxcMTA3XFwwMDBcXDA5OFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDExMlxcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA5XFwwMDBcXDAxM1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcMDE3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUxXFwwMDBcXDE4NVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwxMThcXDAwMFxcMTE5XFwwMDBcXDEyMFxcMDAwXFxcblxcMTIxXFwwMDBcXDExNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwxNDVcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MVxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDA0NlxcMDAwXFxcblxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFxcblxcMTExXFwwMDBcXDA2OFxcMDAwXFwxMTRcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDg5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDU1XFwwMDBcXDA1OVxcMDAwXFwwNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM0XFwwMDBcXDE3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDMxXFwwMDBcXDAwMFxcMDAwXFwxMzdcXDAwMFxcMTM2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDE2MFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMTYxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDE2NVxcMDAwXFxcblxcMDAwXFwwMDBcXDE3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MlxcMDAwXFwxNzdcXDAwMFxcMTc5XFwwMDBcXDE3OFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMTgzXFwwMDBcXDE0OFxcMDAwXFwxNjZcXDAwMFxcMDAwXFwwMDBcXDE2N1xcMDAwXFxcblxcMTc0XFwwMDBcXDE3NVxcMDAwXFwxNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjhcXDAwMFxcMTY0XFwwMDBcXDE4MFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMjJcXDAwMFxcMDQ3XFwwMDBcXDA1MFxcMDAwXFwwNzhcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwNzlcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDk5XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMjAwXFwwMDBcXDE2NFxcMDAwXFwxMDhcXDAwMFxcMDgwXFwwMDBcXFxuXFwwMzJcXDAwMVxcMDkyXFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMjE5XFwwMDBcXDAyN1xcMDAwXFwxNDBcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMjhcXDAwMFxcMTQxXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDI5XFwwMDBcXDA5M1xcMDAwXFwxMjRcXDAwMFxcMTIxXFwwMDBcXFxuXFwwODVcXDAwMFxcMDg2XFwwMDBcXDIwOFxcMDAwXFwwMTFcXDAwMVxcMDE3XFwwMDFcXDAzMFxcMDAwXFwwMThcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNDdcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwxMzZcXDAwMVxcXG5cXDA4NFxcMDAyXFwxNTlcXDAwMlxcMjIyXFwwMDNcXDEzMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMlxcXG5cXDAyN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMjU1XFwxOTlcXDAwMFxcMDczXFwwMDRcXDA2MFxcMjU1XFwxNTZcXDAwNFxcXG5cXDAyMFxcMjU1XFwwNjBcXDI1NVxcMjE2XFwyNTRcXDIxOFxcMjU0XFwxMTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMFxcXG5cXDAxN1xcMDAwXFwwNTBcXDI1NVxcMDQ1XFwyNTVcXDEzNFxcMjU1XFwyMDdcXDAwMFxcMjQyXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIyMlxcMDAzXFwwMDBcXDAwMFxcMjEwXFwwMDRcXDAwOFxcMDA1XFwwMDZcXDI1NVxcMTkxXFwwMDNcXDE5MVxcMDAzXFwxNThcXDI1NVxcXG5cXDE5MVxcMDAzXFwxOTFcXDAwM1xcMTkxXFwwMDNcXDExNlxcMDA1XFwwMzZcXDAwN1xcMTEzXFwyNTVcXDAwMFxcMDAwXFwxMzBcXDI1NVxcXG5cXDE1NFxcMjU1XFwwMDBcXDAwMFxcMTM2XFwwMDBcXDEzMFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzhcXDAwNlxcXG5cXDIzOFxcMDA2XFwwMzZcXDAwN1xcMDM2XFwwMDdcXDIzOFxcMDA2XFwyMzhcXDAwNlxcMjM4XFwwMDZcXDIzOFxcMDA2XFwyMzhcXDAwNlxcXG5cXDIzOFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAxXFwyNTVcXDE0OFxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMjU1XFwwMDBcXDAwMFxcXG5cXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzlcXDI1NVxcXG5cXDAwMFxcMDAwXFwxODRcXDAwNlxcMDI4XFwyNTVcXDI1NVxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE5MVxcMjU1XFwwNzRcXDI1NVxcMDAwXFwwMDBcXDEzMFxcMDA2XFwwNjJcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDI1NVxcXG5cXDEzMFxcMDA2XFwxNTNcXDI1NVxcMDAwXFwwMDBcXDE3MFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMjU1XFwxMzBcXDAwNlxcXG5cXDAxN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyN1xcMjU1XFwxMzNcXDI1NVxcMjA3XFwwMDBcXDAwMFxcMDAwXFwyMjRcXDAwNVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMjU1XFwwNTFcXDI1NVxcMjA5XFwyNTVcXDAwMFxcMDAwXFwxMDRcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDRcXDAwMFxcMjUzXFwwMDBcXDI1M1xcMDAwXFwxMzBcXDAwNlxcMjMyXFwyNTVcXDE2OVxcMjU1XFwxOTNcXDAwMFxcXG5cXDA5M1xcMDAwXFwxMzBcXDAwNlxcMTMwXFwwMDZcXDAwMFxcMDAwXFwxNzZcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0N1xcMjU1XFwyMTNcXDI1NVxcMTMwXFwwMDZcXDAwMFxcMDAwXFwyMjJcXDAwM1xcMDAwXFwwMDBcXDE3NVxcMjU1XFwwNjNcXDI1NVxcXG5cXDAwMFxcMDAwXFwwOTlcXDAwMVxcMDM2XFwwMDdcXDAzNlxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwyNTVcXDIxNFxcMjU1XFwxMzBcXDAwNlxcMDAwXFwwMDBcXDEzMFxcMDA2XFwxMzBcXDAwNlxcXG5cXDEzMFxcMDA2XFwxMzBcXDAwNlxcMDAwXFwwMDBcXDEzMFxcMDA2XFwxMzBcXDAwNlxcMTMwXFwwMDZcXDIzOFxcMDA2XFwyMzhcXDAwNlxcXG5cXDIzOFxcMDA2XFwyMzhcXDAwNlxcMjM4XFwwMDZcXDIzOFxcMDA2XFwwMDBcXDAwMFxcMTAwXFwyNTVcXDExMFxcMDAwXFwwMjdcXDAwMFxcXG5cXDExN1xcMDAwXFwxMzBcXDAwNlxcMTY5XFwyNTVcXDE1NVxcMDAwXFwwMDBcXDAwMFxcMjAzXFwyNTVcXDAwMFxcMDAwXFwxNTVcXDAwMFxcXG5cXDIwM1xcMjU1XFwwMDBcXDAwMFxcMDgzXFwyNTVcXDAwMFxcMDAwXFwyMjJcXDAwM1xcMTcxXFwyNTVcXDEyNVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDI1NVxcMTMwXFwwMDZcXDE4MlxcMjU1XFwxNzZcXDAwMFxcXG5cXDA0NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTFcXDAwM1xcMjUzXFwwMDBcXDE5MVxcMDAzXFwyNTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDNcXDI1NVxcMjAzXFwyNTVcXDE5MVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDI1NVxcXG5cXDIwM1xcMjU1XFwyMDNcXDI1NVxcMjAzXFwyNTVcXDEzOFxcMDAwXFwyNDFcXDI1NFxcMDg4XFwwMDFcXDA5OVxcMDAxXFwxMTVcXDAwMFxcXG5cXDA5OVxcMDAxXFwxMTVcXDAwMFxcMTg3XFwwMDBcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDE4NFxcMDA2XFwyMDNcXDI1NVxcXG5cXDAwNFxcMDAxXFwyMjJcXDAwM1xcMTU3XFwwMDBcXDIyMlxcMDAzXFwyMjJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDI1NVxcXG5cXDAwMFxcMDAwXFwxNTlcXDI1NVxcMDI3XFwwMDFcXDEzMFxcMDA2XFwwMjJcXDAwNlxcMjI0XFwwMDVcXDAwMFxcMDAwXFwwMjVcXDI1NVxcXG5cXDA0NlxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAxXFwwNTZcXDAwMVxcXG5cXDAzNlxcMDA3XFwxODRcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMTMwXFwwMDZcXDEzMFxcMDA2XFwwMDBcXDAwMFxcXG5cXDE1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDA2XFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTczXFwyNTVcXDA0N1xcMDAxXFwwMDVcXDI1NVxcMDYyXFwwMDFcXDE4NFxcMjU1XFwwMDBcXDAwMFxcXG5cXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDZcXDI1NVxcMjU0XFwyNTVcXDI1NFxcXG5cXDAwMFxcMDAwXFwyMDNcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMVxcMDQ4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxNVxcMjU1XFwwMDBcXDAwMFxcMDU5XFwwMDFcXDAwM1xcMjU1XFwwMTBcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMVxcXG5cXDA4NlxcMjU1XFwwMDBcXDAwMFxcMDI3XFwyNTVcXDI1NVxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAzOFxcMjU1XFwwMDBcXDAwMFxcMDE0XFwyNTVcXDE5MFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyNFxcMDAxXFwwNDlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAxXFwwNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDA5MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMVxcXG5cXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NlxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNDdcXDAwMlxcMDU5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MlxcMDAxXFwwOTVcXDAwMlxcMDk1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1OFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDJcXDAwMFxcMDAwXFwwNTZcXDAwMlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwOTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2N1xcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwM1xcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwNjRcXDAwMFxcXG5cXDEzNFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxODRcXDAwMlxcMDM3XFwwMDNcXDA5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3MlxcMDAzXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTZcXDAwMlxcXG5cXDE5N1xcMDAyXFwyMTJcXDAwMlxcMjQwXFwwMDJcXDEzMVxcMDAzXFwwNzNcXDAwM1xcMDAwXFwwMDBcXDE1MFxcMDAxXFwxNjNcXDAwMFxcXG5cXDIzMVxcMDAxXFwyNDRcXDAwMFxcMDAxXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDk1XFwwMDNcXDAwMFxcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwM1xcXG5cXDAwMFxcMDAwXFwyMjJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk2XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDI1NVxcXG5cXDAwMFxcMDAwXFwxNTlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjRcXDI1NVxcMjE5XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcXG5cXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTIxXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOThcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDE5OFxcMjU1XFwwMDBcXDAwMFxcMDg5XFwwMDFcXDA5OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDE2MFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMTUxXFwwMDJcXDE0NlxcMDA0XFwwMDBcXDAwMFxcXG5cXDE2M1xcMDAyXFwwMDBcXDAwMFxcMTYyXFwwMDJcXDAwMFxcMDAwXFwyNDNcXDAwMVxcMTk0XFwyNTVcXDAwMFxcMDAwXFwwOTlcXDAwMlxcXG5cXDE3M1xcMDAxXFwyMjlcXDAwM1xcMDU2XFwwMDBcXDAwMFxcMDAwXFwxNDVcXDI1NVxcMjQ3XFwyNTVcXDIzMFxcMjU1XFwyMTdcXDI1NVxcXG5cXDA2MVxcMDAyXFwyMjFcXDI1NVxcMTI3XFwwMDRcXDEzN1xcMDAyXFwyMzNcXDI1NVxcMTY4XFwyNTVcXDA5MVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAzOFxcMDAxXFwwNDZcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAxXFwwNTdcXDAwMFxcMDQ4XFwyNTVcXDAwMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjE4M1xubGV0IHl5dGFibGUgPSBcIlxcMDg4XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTgzXFwwMDBcXDA4MlxcMDAxXFwxMThcXDAwMFxcMDQyXFwwMDFcXDE0NlxcMDAwXFwxNDJcXDAwMFxcMTQzXFwwMDBcXFxuXFwxNDFcXDAwMFxcMDg1XFwwMDFcXDAwOVxcMDAwXFwxMzVcXDAwMFxcMTM3XFwwMDBcXDA4NlxcMDAxXFwwMDdcXDAwMFxcMTM4XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDk3XFwwMDFcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMjIwXFwwMDBcXDAxNlxcMDAwXFwxMTRcXDAwMFxcMTE1XFwwMDBcXFxuXFwwNDJcXDAwMVxcMjI1XFwwMDBcXDAyNFxcMDAxXFwxMzJcXDAwMFxcMjA0XFwwMDBcXDE3MlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMTFcXDAwMFxcMDIzXFwwMDBcXDA0M1xcMDAxXFwxODlcXDAwMFxcMTEwXFwwMDBcXDE4NFxcMDAwXFwxOTRcXDAwMFxcMDA5XFwwMDBcXFxuXFwxMDVcXDAwMFxcMDc5XFwwMDFcXDExMVxcMDAwXFwxNzJcXDAwMFxcMTczXFwwMDBcXDIzN1xcMDAwXFwwNjZcXDAwMFxcMjI5XFwwMDBcXFxuXFwwODJcXDAwMVxcMDQ0XFwwMDFcXDIxMVxcMDAwXFwwMTBcXDAwMFxcMTE2XFwwMDBcXDAxMVxcMDAwXFwwNjVcXDAwMFxcMjEyXFwwMDBcXFxuXFwxNzRcXDAwMFxcMDgzXFwwMDFcXDA1MVxcMDAwXFwwMTBcXDAwMFxcMDI0XFwwMDBcXDAxMVxcMDAwXFwxMjVcXDAwMFxcMTMzXFwwMDBcXFxuXFwwOTVcXDAwMVxcMjE1XFwwMDBcXDAyMlxcMDAwXFwyMTZcXDAwMFxcMjM0XFwwMDBcXDA4MFxcMDAwXFwxNzRcXDAwMFxcMTY3XFwwMDBcXFxuXFwyMjJcXDAwMFxcMDI4XFwwMDBcXDA4N1xcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDExN1xcMDAwXFwxODdcXDAwMFxcMTcwXFwwMDBcXFxuXFwwODRcXDAwMVxcMTMwXFwwMDBcXDA0NVxcMDAxXFwyMzhcXDAwMFxcMTMxXFwwMDBcXDA4OFxcMDAxXFwwODlcXDAwMVxcMTE3XFwwMDBcXFxuXFwxMjZcXDAwMFxcMDk4XFwwMDFcXDA4MFxcMDAxXFwxNzJcXDAwMFxcMTczXFwwMDBcXDEwNlxcMDAwXFwwNzRcXDAwMVxcMTQxXFwwMDBcXFxuXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzM1xcMDAwXFwxNzFcXDAwMFxcMjEwXFwwMDBcXDAwMlxcMDAxXFwwNDVcXDAwMVxcMDgzXFwwMDFcXFxuXFwxODVcXDAwMFxcMjMzXFwwMDBcXDIwM1xcMDAwXFwxNzJcXDAwMFxcMTczXFwwMDBcXDE4NFxcMDAwXFwwMjBcXDAwMVxcMjAyXFwwMDBcXFxuXFwwMjJcXDAwMVxcMDk2XFwwMDFcXDIwOVxcMDAwXFwyMzVcXDAwMFxcMjM2XFwwMDBcXDE2N1xcMDAwXFwxNzRcXDAwMFxcMDA5XFwwMDBcXFxuXFwwOTJcXDAwMVxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNDdcXDAwMFxcMDAxXFwwMDFcXDE3MFxcMDAwXFwxNzBcXDAwMFxcMTcyXFwwMDBcXFxuXFwxNzNcXDAwMFxcMTcwXFwwMDBcXDE0OFxcMDAwXFwxMDBcXDAwMVxcMDg5XFwwMDBcXDExOVxcMDAwXFwxNzRcXDAwMFxcMTUwXFwwMDBcXFxuXFwxMDBcXDAwMFxcMDkwXFwwMDBcXDEwMVxcMDAwXFwwMTBcXDAwMFxcMDY5XFwwMDFcXDAxMVxcMDAwXFwxMjBcXDAwMFxcMTY3XFwwMDBcXFxuXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDA3MFxcMDAxXFwxODhcXDAwMFxcMTcwXFwwMDBcXFxuXFwxNjVcXDAwMFxcMTcwXFwwMDBcXDE3NFxcMDAwXFwxNDlcXDAwMFxcMDU2XFwwMDBcXDAxMlxcMDAwXFwxMTJcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU5XFwwMDBcXDEyNVxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMjdcXDAwMVxcMDYzXFwwMDBcXFxuXFwwMzZcXDAwMVxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXFxuXFwxODVcXDAwMFxcMTYzXFwwMDBcXDE3MFxcMDAwXFwwNzFcXDAwMFxcMjMzXFwwMDBcXDAwOVxcMDAxXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwxODFcXDAwMFxcMDE1XFwwMDFcXDAxMlxcMDAxXFwxNzBcXDAwMFxcMDEzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDY2XFwwMDBcXFxuXFwwMjNcXDAwMVxcMDUzXFwwMDFcXDAxOVxcMDAxXFwwMDhcXDAwMVxcMDIxXFwwMDFcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDA3XFwwMDFcXFxuXFwxODRcXDAwMFxcMTg2XFwwMDBcXDE2N1xcMDAwXFwxODRcXDAwMFxcMjMyXFwwMDBcXDE5OVxcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDE3MFxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA2OFxcMDAxXFwyMTNcXDAwMFxcMTcyXFwwMDBcXFxuXFwxNzNcXDAwMFxcMDA5XFwwMDBcXDE2N1xcMDAwXFwwOTBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXFxuXFwyMjhcXDAwMFxcMTY3XFwwMDBcXDE3MFxcMDAwXFwxODRcXDAwMFxcMDc0XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDkyXFwwMDBcXFxuXFwwNzdcXDAwMFxcMTcwXFwwMDBcXDEzOFxcMDAwXFwyMjFcXDAwMFxcMTM5XFwwMDBcXDAxMFxcMDAwXFwwNjlcXDAwMVxcMDExXFwwMDBcXFxuXFwwMzVcXDAwMVxcMDUyXFwwMDFcXDE3NFxcMDAwXFwxMjdcXDAwMFxcMDY5XFwwMDFcXDIxNFxcMDAwXFwxNjdcXDAwMFxcMDcwXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDAzXFwwMDFcXDA3MFxcMDAxXFwxNzBcXDAwMFxcMDEyXFwwMDBcXFxuXFwyMzlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTQxXFwwMDBcXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDA4XFwwMDBcXFxuXFwxMzhcXDAwMFxcMDA4XFwwMDBcXDEzOFxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwMTZcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAyM1xcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDY2XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDY1XFwwMDBcXFxuXFwwMzdcXDAwMFxcMDI5XFwwMDFcXDE2N1xcMDAwXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAyNFxcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXFxuXFwxMzNcXDAwMFxcMDkzXFwwMDFcXDE3MFxcMDAwXFwwMjJcXDAwMFxcMTIzXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAyOFxcMDAwXFwwODBcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwwODBcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDA4MFxcMDAwXFwxMzBcXDAwMFxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxNDFcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzNcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMjU0XFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwyNTNcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwOTFcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDk5XFwwMDFcXDI1NVxcMDAwXFwyMTdcXDAwMFxcMjE4XFwwMDBcXFxuXFwxNzJcXDAwMFxcMTczXFwwMDBcXDE0OVxcMDAwXFwxNjdcXDAwMFxcMTc5XFwwMDBcXDEyNlxcMDAwXFwxODBcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNjlcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxNzBcXDAwMFxcMTAzXFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMjM3XFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxNzRcXDAwMFxcMTI1XFwwMDBcXDIyNFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDMwXFwwMDFcXDAxNFxcMDAxXFwwMzFcXDAwMVxcMjE0XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwwMTZcXDAwMVxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMjIzXFwwMDBcXDEyNVxcMDAwXFwwOTRcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTc0XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTc1XFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc5XFwwMDBcXDE2OVxcMDAwXFwxNzhcXDAwMFxcMDEwXFwwMDBcXFxuXFwxNjlcXDAwMFxcMDExXFwwMDBcXDE3OVxcMDAwXFwxNDJcXDAwMFxcMTgwXFwwMDBcXDE0MlxcMDAwXFwxMjhcXDAwMFxcMDkyXFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDI2XFwwMDFcXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwwOTJcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXDEyN1xcMDAwXFwwOTJcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3M1xcMDAwXFwxMjJcXDAwMFxcMTIzXFwwMDBcXDE3M1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMDI4XFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE0M1xcMDAwXFwxMjdcXDAwMFxcMTQzXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDAzN1xcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA1NlxcMDAwXFwxNzVcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFwyMTdcXDAwMFxcMjE4XFwwMDBcXFxuXFwxNzhcXDAwMFxcMDM4XFwwMDFcXDA0MFxcMDAxXFwwNDhcXDAwMVxcMTc5XFwwMDBcXDA0OVxcMDAxXFwxODBcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNTBcXDAwMVxcMDM3XFwwMDBcXDA4MFxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA1MVxcMDAxXFwwMzdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMDU0XFwwMDFcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDAzN1xcMDAwXFwxMjNcXDAwMFxcMDM3XFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwMDdcXDAwMFxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNjdcXDAwMVxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA2NVxcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDA3NVxcMDAxXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwODFcXDAwMVxcMTIzXFwwMDBcXFxuXFwwNzdcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzhcXDAwMVxcMTc2XFwwMDBcXDA5NFxcMDAxXFwwOTBcXDAwMVxcMTAxXFwwMDFcXFxuXFwxNzhcXDAwMFxcMTAyXFwwMDFcXDA2MFxcMDAwXFwxNjdcXDAwMFxcMTc5XFwwMDBcXDE1NFxcMDAwXFwxODBcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNjlcXDAwMFxcMTA0XFwwMDFcXDA2MFxcMDAwXFwxNzBcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEzMVxcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMzJcXDAwMFxcMTI2XFwwMDBcXFxuXFwwMjVcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTU2XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMDg3XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMTNcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDk1XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMDlcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDM5XFwwMDBcXFxuXFwxMjZcXDAwMFxcMDA2XFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDc1XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTk2XFwwMDBcXDA1N1xcMDAxXFwyMzBcXDAwMFxcMTY2XFwwMDBcXFxuXFwyMDVcXDAwMFxcMDQxXFwwMDFcXDA2NlxcMDAxXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDc4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXFxuXFwwODBcXDAwMFxcMDU2XFwwMDBcXDA4NFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDgwXFwwMDBcXFxuXFwxMDZcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwODZcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDgwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDc3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXFxuXFwxNDdcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA4MFxcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDAyMVxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc1XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwODFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMFxcMDc1XFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMFxcMDc1XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTNcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDkzXFwwMDBcXFxuXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDA0MFxcMDAwXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwxOThcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMTA2XFwwMDBcXDA4NlxcMDAwXFwwNzRcXDAwMFxcMDg0XFwwMDBcXFxuXFwwODRcXDAwMFxcMTQ3XFwwMDBcXDE0N1xcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMTA2XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMTUyXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDE0N1xcMDAwXFwwODBcXDAwMFxcMTQ3XFwwMDBcXFxuXFwyNDRcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDk4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA0XFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMTM2XFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMTM2XFwwMDBcXFxuXFwxMzZcXDAwMFxcMTM2XFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDczXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEzMFxcMDAwXFwxNTNcXDAwMFxcMTU0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAwXFwxNThcXDAwMFxcMTU5XFwwMDBcXDE2MFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXFxuXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwxMzNcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAzM1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwxODJcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjAxXFwwMDBcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAxXFwyMjZcXDAwMFxcMjI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDA0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0N1xcMDAwXFwyNDhcXDAwMFxcMjQ5XFwwMDBcXFxuXFwyNTBcXDAwMFxcMjUxXFwwMDBcXDI1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwyNDBcXDAwMFxcMjQxXFwwMDBcXDI0MlxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDFcXFxuXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDEzNlxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDNcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwMTBcXDAwMVxcMjA3XFwwMDBcXFxuXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAxXFwwNTdcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDE5MlxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMjZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDU2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwxMDZcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMVxcMDI3XFwwMDBcXDAwMFxcMDAxXFwwNDVcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDVcXDAwMVxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwNThcXDAwMFxcMDU5XFwwMDBcXDEzMlxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDFcXDEzN1xcMDAwXFwyMzdcXDAwMFxcMDM3XFwwMDBcXDExN1xcMDAwXFwwNDVcXDAwMVxcMDI1XFwwMDFcXDAwNVxcMDAxXFxcblxcMDI3XFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDk4XFwwMDBcXDA3N1xcMDAxXFwwMTBcXDAwMVxcMTAxXFwwMDBcXDAwNVxcMDAxXFxcblxcMDIxXFwwMDFcXDAyN1xcMDAxXFwwODFcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDVcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFxcblxcMDAwXFwwMDFcXDAyNVxcMDAxXFwwMDBcXDAwMVxcMDI1XFwwMDFcXDAwM1xcMDAxXFwwMjdcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFxcblxcMDcyXFwwMDFcXDA1NVxcMDAxXFwwMDNcXDAwMFxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMjdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI3XFwwMDFcXDEyOFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwNlxcMDAxXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDA0NFxcMDAxXFxcblxcMTM1XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNDNcXDAwMVxcMDA1XFwwMDFcXDA1MlxcMDAxXFxcblxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDQzXFwwMDFcXDA3OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA0M1xcMDAxXFxcblxcMDMzXFwwMDBcXDA3NlxcMDAxXFwwNzZcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNzRcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMTlcXDAwMVxcMDc4XFwwMDFcXDA1NVxcMDAxXFxcblxcMDc3XFwwMDFcXDAwNlxcMDAxXFwxMTZcXDAwMFxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMTBcXDAwMVxcMjIyXFwwMDBcXDExM1xcMDAwXFxcblxcMjI0XFwwMDBcXDA3NlxcMDAxXFwxMjRcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwwNDRcXDAwMVxcMDcyXFwwMDFcXDAwNVxcMDAxXFxcblxcMDczXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDExXFwwMDFcXDE4N1xcMDAwXFwwNTJcXDAwMVxcMDAzXFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDg0XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAwXFxcblxcMDc3XFwwMDFcXDAwNVxcMDAxXFwwNzlcXDAwMVxcMDI1XFwwMDFcXDA1NVxcMDAxXFwwMjdcXDAwMVxcMDA5XFwwMDFcXDA0NFxcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNjRcXDAwMVxcMDc3XFwwMDFcXDA1MlxcMDAxXFxcblxcMDA1XFwwMDFcXDAzMFxcMDAxXFwwNzJcXDAwMVxcMDAyXFwwMDFcXDAyNFxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDBcXDAwMFxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwwMDBcXDAzNVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNTVcXDAwMVxcMDQ3XFwwMDFcXDAwNlxcMDAxXFwyMDVcXDAwMFxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDA2XFwwMDFcXDIwOVxcMDAwXFwwMDVcXDAwMVxcMDY0XFwwMDFcXDAwN1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAzOVxcMDAxXFxcblxcMjI4XFwwMDBcXDAyNlxcMDAxXFwyMjFcXDAwMFxcMjA1XFwwMDBcXDIyM1xcMDAwXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDIwMVxcMDAwXFxcblxcMDAzXFwwMDFcXDAxMVxcMDAxXFwwNDRcXDAwMVxcMDA2XFwwMDFcXDE0OVxcMDAwXFwwODFcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMzBcXDAwMVxcMDA2XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwNVxcMDAxXFwwNDRcXDAwMVxcMDMwXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDQ5XFwwMDFcXDA0NFxcMDAxXFwwNTJcXDAwMVxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwMFxcMDAwXFxcblxcMDgwXFwwMDFcXDA1MlxcMDAxXFwwNzdcXDAwMVxcMDA0XFwwMDFcXDA3OVxcMDAxXFwwMjVcXDAwMVxcMDU1XFwwMDFcXDAyN1xcMDAxXFxcblxcMDA4XFwwMDFcXDAyNVxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDA1NVxcMDAxXFwwNzdcXDAwMVxcMDQ0XFwwMDFcXDA2NFxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDE5N1xcMDAwXFwwNjRcXDAwMVxcMDUyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDQzXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFxcblxcMDA4XFwwMDFcXDAwMVxcMDAxXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMVxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDNcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDAxXFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDFcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFxcblxcMDAwXFwwMDBcXDAwMlxcMDAxXFwwNDRcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDAxXFwwMDFcXDA3NVxcMDAxXFwwNTJcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwMDFcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA5XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFxcblxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDA3N1xcMDAxXFxcblxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAzMFxcMDAxXFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDA2XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDcyXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDA4NFxcMDAxXFwwMjVcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNzdcXDAwMVxcMDQ0XFwwMDFcXDAzNFxcMDAxXFwwMDBcXDAwMFxcMDM2XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDUyXFwwMDFcXDEwMFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwNVxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDcyXFwwMDFcXDAxMFxcMDAxXFwwODFcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDAyMVxcMDAxXFwwMDNcXDAwMVxcMDIzXFwwMDFcXDA3N1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFxcblxcMDc3XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwNFxcMDAxXFwwMzVcXDAwMVxcMDAwXFwwMDFcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA3MlxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAzNFxcMDAxXFwwMDNcXDAwMVxcMDMwXFwwMDFcXDAyNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAyN1xcMDAxXFwwMzRcXDAwMVxcMDA2XFwwMDFcXDAzNlxcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDAyNVxcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDZcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDAwNlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDZcXDAwMVxcMDM1XFwwMDFcXDAwOFxcMDAxXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDhcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDBcXDAwMFxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDMwXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDA2XFwwMDFcXDAzNFxcMDAxXFwwMDNcXDAwMVxcMDM2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDQ4XFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyM1xcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMDhcXDAwMVxcMDI1XFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwNDRcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDAwXFwwMDBcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDNcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDQ0XFwwMDFcXDAzNVxcMDAxXFxcblxcMDc2XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDBcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDc2XFwwMDFcXDAyNlxcMDAxXFwwNzZcXDAwMVxcMDMwXFwwMDFcXDAwNFxcMDAxXFxcblxcMDMwXFwwMDFcXDA3NlxcMDAxXFwwNDlcXDAwMVxcMDQ0XFwwMDFcXDAzNFxcMDAxXFwwMDZcXDAwMVxcMDM2XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA3N1xcMDAxXFwwNDhcXDAwMVxcMDUyXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAxXFxcblxcMDczXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwNlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwOFxcMDAwXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDIxXFwwMDBcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAxM1xcMDAwXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDE4XFwwMDBcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwMFxcMDAwXFxcblxcMDM1XFwwMDFcXDE5OVxcMDAwXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDEwNlxcMDAwXFwwMzNcXDAwMVxcMTQ2XFwwMDBcXDA3MVxcMDAwXFxcblxcMTE4XFwwMDBcXDAxNFxcMDAxXFwwNDVcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDEwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFxcblxcMDA2XFwwMDFcXDAyM1xcMDAxXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDAyMVxcMDAxXFxcblxcMDAwXFwwMDBcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDBcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMDI3XFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDAwMVxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcblxcMDAwXFwwMDBcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDgxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFxcblxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNzlcXDAwMVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMVxcMDE2XFwwMDFcXDAxN1xcMDAxXFxcblxcMDE4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDUyXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDAwNlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcblxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwNzFcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDA0XFwwMDBcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAxXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDA3MlxcMDAxXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcyXFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwOVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwMDZcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMjU1XFwyNTVcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDFcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDI1NVxcMjU1XFwxMDVcXDAwMFxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMTA4XFwwMDBcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMDIxXFwwMDFcXDAzNlxcMDAxXFwwMjNcXDAwMVxcMDQ2XFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDA2XFwwMDFcXDE2NVxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMDA5XFwwMDFcXDAyM1xcMDAxXFxcblxcMTcyXFwwMDBcXDE3M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxNFxcMDAwXFxcblxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDQzXFwwMDFcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMjU1XFwyNTVcXDA0MVxcMDAwXFxcblxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwwNTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMDVcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMDkwXFwwMDBcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDExMlxcMDAwXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE3XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDEyMFxcMDAwXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMzXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMVxcMTM4XFwwMDBcXDEzOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcblxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDE0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc1XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNzVcXDAwMFxcMTc2XFwwMDBcXDE3N1xcMDAwXFxcblxcMTc4XFwwMDBcXDE3OVxcMDAwXFwxODBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE3NFxcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg2XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjIxXFwwMDBcXDI1NVxcMjU1XFwyMjNcXDAwMFxcMjU1XFwyNTVcXDIwNlxcMDAwXFxcblxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwwMzZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDA3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDA1XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTJcXDAwMVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFRZUEVcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFNFVFxcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBVTlRJTFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIE1PRFVMT1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEtBUFBBX1JBUlxcMDAwXFxcbiAgS0FQUEFfTFJBUlxcMDAwXFxcbiAgS0FQUEFfTE5LXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBLQVBQQV9XTERcXDAwMFxcXG4gIEtBUFBBX1NFTUlcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBLQVBQQV9NUktcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTAzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduZXdsaW5lKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChmdW4gYyAtPiBjKVxuIyAxMDQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoXzEpXG4jIDEwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9IChTb21lIChfMSwgcmhzX3BvcyAxKSxfMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc30pXG4jIDEwNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGZ1biBjIC0+IGxldCByID0gXzIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLF8xKTo6ci5Bc3QucnVsZXN9KVxuIyAxMDcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9ICgoXzEscmhzX3BvcyAxKSxfMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfSlcbiMgMTA4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnN0cnVjdGlvbikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBmdW4gYyAtPiBsZXQgciA9IF8yIGMgaW5cblx0XHQgICAgICBtYXRjaCBfMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIClcbiMgMTExNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpKVxuIyAxMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5TSUcgXzIpXG4jIDExMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoQXN0LlRPS0VOU0lHIChfMixyaHNfcG9zIDIpKVxuIyAxMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHRcdChhZGRfcG9zIFwiTWFsZm9ybWVkIGFnZW50IHNpZ25hdHVyZSwgSSB3YXMgZXhwZWN0aW5nIHNvbWV0aGluZyBvZiB0aGUgZm9ybSAnJWFnZW50OiBBKHgseX51fnYseiknXCIpKSlcbiMgMTE0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2luaXRfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuSU5JVCBfMilcbiMgMTE1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkpXG4jIDExNTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5ERUNMQVJFIF8yKVxuIyAxMTY1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuT0JTIF8yKVxuIyAxMTcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoQXN0LlBMT1QgXzIpXG4jIDExNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkpXG4jIDExODYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDExOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5QRVJUIChhZGRfcG9zIF8yKSlcbiMgMTE5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoQXN0LkNPTkZJRyAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMjAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMixyaHNfcG9zIDIpKSApXG4jIDEyMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLEFzdC5JTklUX01JWCAoXzMsIHJoc19wb3MgMykpIClcbiMgMTIxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKChfMyxBc3QuSU5JVF9UT0sgW18xLHJoc19wb3MgMV0pKVxuIyAxMjI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICgoXzEsQXN0LklOSVRfVE9LIFtfMixyaHNfcG9zIDJdKSlcbiMgMTIzMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbXzEsIHJoc19wb3MgMV0pXG4jIDEyNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFsdWVfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoKF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAxMjQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhbHVlX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoTm9uZSlcbiMgMTI1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduYnIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoU29tZSBfMilcbiMgMTI2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDE0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoTm9uZSlcbiMgMTI2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSBfMilcbiMgMTI3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULF8yKSkpKVxuIyAxMjgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsU29tZSBfMixfNCxfNSkgKVxuIyAxMjkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKF8xLE5vbmUsXzMsXzQpIClcbiMgMTMwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIChOb25lLFNvbWUgXzIsXzQsU29tZSAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUCAoT3BlcmF0b3IuTk9ULF82KSkpKSlcbiMgMTMwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggKF8xLFNvbWUgXzIsXzQsTm9uZSkpXG4jIDEzMTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTMyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTMzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMV0pXG4jIDEzMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdlZmZlY3QpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDEzNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoQXN0LlVQREFURSAoKF8yLHJoc19wb3MgMiksXzMpKVxuIyAxMzYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChBc3QuQ0ZMT1dMQUJFTCAoXzMsKF8yLHJoc19wb3MgMikpKVxuIyAxMzcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV01JWCAoXzMsKFtfMl0scmhzX3BvcyAyKSkpXG4jIDEzNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsXzIpIGVsc2UgQXN0LkRJTk9GRiBfMilcbiMgMTM4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoaWYgXzQgJiYgXzMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLF8yKVxuXHQgICBlbHNlIGlmIF80ICYmIF8zID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLF8yKVxuXHQgICBlbHNlIGlmIF80ICYmIF8zID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSkpXG4jIDE0MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCBBc3QuQVBQTFkoXG5cdFx0ICAgXzIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgXzM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCApXG4jIDE0MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCAgQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgIEFzdC5yaHM9XzM7IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgICApXG4jIDE0MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSlcbiMgMTQzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoIEFzdC5BUFBMWShfMixcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuQXJyb3cge0FzdC5saHM9XzM7IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICApXG4jIDE0NTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSlcbiMgMTQ1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoXG4gICAgICAgbGV0IHRrID0gKF8xLHJoc19wb3MgMSkgaW5cbiAgICAgICAgQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICAgIGFkZF9wb3NcbiAgICAgICAgICAgICAgICh7QXN0LnJld3JpdGUgPVxuXHRcdCBBc3QuRWRpdFxuXHRcdCB7QXN0Lm1peD1bXTtcblx0XHQgIEFzdC5kZWx0YV90b2tlbiA9XG5cdFx0ICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsXzMsKEFsZ19leHByLlRPS0VOX0lEIF8xLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgQXN0LmJpZGlyZWN0aW9uYWw9ZmFsc2U7XG4gICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0pKVxuICAgICAgIClcbiMgMTQ4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5TTkFQU0hPVCAoZmFsc2UsXzIpKVxuIyAxNDg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChBc3QuU1RPUCBfMilcbiMgMTQ5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5QUklOVCAoXzIsXzQpIClcbiMgMTUwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICggQXN0LlBMT1RFTlRSWSApXG4jIDE1MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5TUEVDSUVTX09GIChfNCxfMiwoXzMsIHJoc19wb3MgMykpKVxuIyAxNTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuU3RyX3BleHByIChhZGRfcG9zIF8xKV0pXG4jIDE1MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKFtQcmltaXRpdmVzLkFsZ19wZXhwciBfMV0pXG4jIDE1MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuU3RyX3BleHByIChfMSwgcmhzX3BvcyAxKTo6XzMpXG4jIDE1MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciBfMTo6XzMpXG4jIDE1NDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChbXSlcbiMgMTU1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTU2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKHRydWUpXG4jIDE1NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoZmFsc2UpXG4jIDE1NzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbGVhbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggKChfMSxyaHNfcG9zIDEpLChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfMixyaHNfcG9zIDIpKSlcbiMgMTU4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE1ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICgoKF8xLHJoc19wb3MgMSksXzIpKVxuIyAxNTk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAocmFpc2Vcblx0ICAgICAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl5fMV5cIidcIikpKVxuXHQgICAgKVxuIyAxNjA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTYxMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyBBbGdfZXhwci5UUlVFKVxuIyAxNjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyBBbGdfZXhwci5GQUxTRSlcbiMgMTYyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAxNjMyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCxfMikpKVxuIyAxNjM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELF8xLF8zKSkpXG4jIDE2NDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLF8xLF8zKSkpXG4jIDE2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLF8xLF8zKSkpXG4jIDE2NjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLF8xLF8zKSkpXG4jIDE2NzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCxfMSxfMykpKVxuIyAxNjc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRElGRixfMSxfMykpKVxuIyAxNjg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDE2OTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChbXSlcbiMgMTcwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTcwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAgKyAuLi4gKyBhX24gdF9uLCB3aGVyZSB0X2kgYXJlIHRva2VucyBhbmQgYV9pIGFueSBhbGdlYnJhaWMgZm9ybXVsYVwiKSkpXG4jIDE3MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndG9rZW5fZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE3MjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoWyhfMSwoXzIscmhzX3BvcyAyKSldKVxuIyAxNzI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsID0gXzQgaW4gKF8xLChfMixyaHNfcG9zIDIpKTo6bClcbiMgMTczOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKFsoXzEsKF8zLHJoc19wb3MgMykpXSlcbiMgMTc0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsID0gXzUgaW4gKF8xLChfMyxyaHNfcG9zIDMpKTo6bClcbiMgMTc1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W18xXTsgQXN0LnJtX3Rva2VuID0gXzI7IEFzdC5yaHM9W180XTsgQXN0LmFkZF90b2tlbiA9IF81fSxcbiAgICAgXzMpXG4jIDE3NjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W18xXTsgQXN0LnJtX3Rva2VuID0gXzI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8zKVxuIyAxNzc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBfMTsgQXN0LnJocz1bXzNdOyBBc3QuYWRkX3Rva2VuID0gXzR9LFxuICAgICBfMilcbiMgMTc4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd0b2tlbl9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoQXN0LkFycm93IHtBc3QubGhzPVtdOyBBc3Qucm1fdG9rZW4gPSBfMTsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF8zfSxcbiAgICAgXzIpXG4jIDE3OTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICggQXN0LkVkaXQge0FzdC5taXggPSBbXzFdOyBBc3QuZGVsdGFfdG9rZW4gPSBfMn0sZmFsc2UgKVxuIyAxODA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtdOyBBc3QuZGVsdGFfdG9rZW4gPSBfMn0sZmFsc2UgKVxuIyAxODE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2JpcmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9IF8yIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gXzEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSApXG4jIDE4MjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoZmFsc2UpXG4jIDE4MzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYXJyb3cpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAodHJ1ZSlcbiMgMTgzOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoIE5ici5GIGluZmluaXR5IClcbiMgMTg0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGZsb2F0KSBpblxuICAgIE9iai5yZXByKFxuIyAzNDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICggTmJyLkYgXzEgKVxuIyAxODUyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAoIE5ici5JIF8xIClcbiMgMTg1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduYnIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT05TVCBfMSkpXG4jIDE4NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FTUFYX1ZBUikpKVxuIyAxODcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSlcbiMgMTg3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSlcbiMgMTg4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVE9LRU5fSUQgKF8yKSkpXG4jIDE4OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGRfcG9zIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfMikgKVxuIyAxODk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKF8xKSkpXG4jIDE5MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTkxMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSkpXG4jIDE5MTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRVZFTlRfVkFSKSkpXG4jIDE5MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM1OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUikpKVxuIyAxOTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDE5MzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb25zdGFudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzYzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoXzEpXG4jIDE5NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoXzEpXG4jIDE5NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCxfMixfMykpKVxuIyAxOTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU4sXzIsXzMpKSlcbiMgMTk2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5FWFAsXzIpKSlcbiMgMTk3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzcwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUyxfMikpKVxuIyAxOTgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuQ09TSU5VUyxfMikpKVxuIyAxOTg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5UQU4sXzIpKSlcbiMgMTk5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULF8yKSkpXG4jIDIwMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TUVJULF8yKSkpXG4jIDIwMDkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkxPRyxfMikpKVxuIyAyMDE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsXzIpKSApXG4jIDIwMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDIwMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULF8xLF8zKSkpXG4jIDIwMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0sXzEsXzMpKSlcbiMgMjA0NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLF8xLF8zKSkpXG4jIDIwNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsXzEsXzMpKSlcbiMgMjA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuUE9XLF8xLF8zKSkpXG4jIDIwNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1PRFVMTyxfMSxfMykpKVxuIyAyMDc4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgKF8xKVxuIyAyMDg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5JRihfMSxfMyxfNSkpKVxuIyAyMDk0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluIChrMixrMSxOb25lLE5vbmUpKVxuIyAyMTAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3JhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IChrMixrMSkgPSBfMiBpblxuXHRcdFx0ICBsZXQgKGtiYWNrLGtiYWNrMSkgPSBfNCBpblxuXHRcdFx0ICAoazIsazEsU29tZSBrYmFjayxrYmFjazEpKVxuIyAyMTExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSlcbiMgMjExNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdiaXJhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDAxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLFNvbWUgXzMpKVxuIyAyMTI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxTb21lIF8zKSApXG4jIDIxMzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBPYmoucmVwcihcbiMgNDA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoKExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCBOYnIuemVybyksU29tZSBfMikpXG4jIDIxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoXzEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSkpXG4jIDIxNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDA4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpKVxuIyAyMTYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAoKF8xLE5vbmUpKVxuIyAyMTY3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8xLCBTb21lIF8zKSlcbiMgMjE3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfd2l0aF9yYWRpdXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzIpXG4jIDIxODIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FnZW50X2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzEgOjogXzMpXG4jIDIxOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjE5NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDI0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBbW0FzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzMsIEFzdC5Ob01vZCldXSApXG4jIDIyMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uX2VtcHR5X21peHR1cmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNDI2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKSA6OiBfNl0pXG4jIDIyMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uX2VtcHR5X21peHR1cmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKCBBc3QuTm9Nb2QgKVxuIyAyMjIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICggQXN0LkNyZWF0ZSApXG4jIDIyMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkVyYXNlIClcbiMgMjIzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKEFzdC5QcmVzZW50ICgoXzIscmhzX3BvcyAyKSwgXzQsIF8xKSlcbiMgMjI0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbW9kX2FnZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8yXlwiJ1wiKSkpKVxuIyAyMjUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyMjU2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIyNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMjcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DRVEgXzIscmhzX3BvcyAyKSlcbiMgMjI3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDUwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0dURSBfMyxyaHNfcG9zIDMpKVxuIyAyMjg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DTFRFIF8zLHJoc19wb3MgMykpXG4jIDIyOTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggU29tZSAoQXN0LkNWQVIgXzIscmhzX3BvcyAyKSlcbiMgMjI5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDIzMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF80OyB9IClcbiMgMjMyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyMzM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyMzQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF80LHJoc19wb3MgNCl9IClcbiMgMjM1OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtXzUscmhzX3BvcyA1KX0gKVxuIyAyMzY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IChfNSxyaHNfcG9zIDUpfSApXG4jIDIzODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gXzYscmhzX3BvcyA2KX0gKVxuIyAyMzkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA0OTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSApXG4jIDI0MDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0OTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChbXSlcbiMgMjQxMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU29tZSBfMSxyaHNfcG9zIDEpOjpfMilcbiMgMjQxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIFwiSXNzdWUgYWZ0ZXIgaW50ZXJuYWwgc3RhdGVcIikpKVxuIyAyNDI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChOb25lKVxuIyAyNDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVfbW9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIE5vbmUpXG4jIDI0MzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoU29tZSAoU29tZSAoXzMscmhzX3BvcyAzKSkpXG4jIDI0NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0ICAoYWRkX3BvcyBcIkluY29ycmVjdCBsaW5rIG1vZGlmaWNhdGlvblwiKSkpXG4jIDI0NTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfRlJFRSxyaHNfcG9zIDIpKVxuIyAyNDU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX1ZBTFVFIChfMiwoKSkscmhzX3BvcyAyKSlcbiMgMjQ2NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMS2FwcGEuTE5LX1NPTUUscmhzX3BvcyAyKSlcbiMgMjQ3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKExLYXBwYS5MTktfVFlQRVxuXHRcdFx0XHQgICAgICAoKF8yLHJoc19wb3MgMiksKF80LHJoc19wb3MgNCkpKSlcbiMgMjQ3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhX2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChhZGRfcG9zIExLYXBwYS5MTktfQU5ZKVxuIyAyNDg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgXCJJbnZhbGlkIGxpbmsgc3RhdGVcIikpKVxuIyAyNDkyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FfbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMilcbiMgMjUwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjUwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSkpXG4jIDI1MTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5SVU4gXzIpXG4jIDI1MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5NT0RJRlkgXzEpXG4jIDI1MjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTM1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgKEFzdC5RVUlUKVxuIyAyNTMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSkpXG4jIDI1MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG4oKiBFbnRyeSBzdGFydF9ydWxlICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IGludGVyYWN0aXZlX2NvbW1hbmQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2Jvb2xfZXhwciAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzdGFydF9ydWxlIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKVxubGV0IGludGVyYWN0aXZlX2NvbW1hbmQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKVxubGV0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpXG5sZXQgc3RhbmRhbG9uZV9ib29sX2V4cHIgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpXG47O1xuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqL1xuLyogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqL1xuLyogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJXtcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiV9XG5cbiV0b2tlbiBFT0YgTkVXTElORSBTRU1JQ09MT04gQ09NTUEgRE9UIE9QX1BBUiBDTF9QQVIgT1BfQ1VSIENMX0NVUiBBVCBUWVBFIExBUlxuJXRva2VuIENQVVRJTUUgRU1BWCBUTUFYIFBMT1RFTlRSWSBERUxFVEUgSU5UUk8gVFJBQ0sgRE8gU0VUIFJFUEVBVCBTUEVDSUVTX09GXG4ldG9rZW4gVU5USUwgTE9HIFBMVVMgTVVMVCBNSU5VUyBNQVggTUlOIERJViBTSU5VUyBDT1NJTlVTIFRBTiBQT1cgQUJTIE1PRFVMT1xuJXRva2VuIFNRUlQgRVhQT05FTlQgSU5GSU5JVFkgVElNRSBFVkVOVCBOVUxMX0VWRU5UIFBJUEUgRVFVQUwgQU5EIE9SIE5PVFxuJXRva2VuIEdSRUFURVIgU01BTExFUiBUUlVFIEZBTFNFIERJRkYgS0FQUEFfUkFSIEtBUFBBX0xSQVIgS0FQUEFfTE5LXG4ldG9rZW4gU0lHTkFUVVJFIElOSVQgTEVUIFBMT1QgUEVSVCBPQlMgVE9LRU4gQ09ORklHIEtBUFBBX1dMRCBLQVBQQV9TRU1JXG4ldG9rZW4gRkxVWCBBU1NJR04gUFJJTlRGIFNUT1AgU05BUFNIT1QgUlVOIFRIRU4gRUxTRSBBTEFSTSBBUFBMWVxuJXRva2VuIDxpbnQ+IElOVFxuJXRva2VuIDxzdHJpbmc+IElEXG4ldG9rZW4gPHN0cmluZz4gS0FQUEFfTVJLIExBQkVMXG4ldG9rZW4gPGZsb2F0PiBGTE9BVFxuJXRva2VuIDxzdHJpbmc+IFNUUklOR1xuXG4lbGVmdCBNSU5VUyBQTFVTXG4lbGVmdCBNVUxUIERJVlxuJWxlZnQgTU9EVUxPXG4lcmlnaHQgUE9XXG4lbm9uYXNzb2MgTE9HIFNRUlQgRVhQT05FTlQgU0lOVVMgQ09TSU5VUyBBQlMgVEFOXG5cbiVsZWZ0IE9SXG4lbGVmdCBBTkRcblxuJW5vbmFzc29jIFRIRU5cblxuJXN0YXJ0IHN0YXJ0X3J1bGVcbiV0eXBlIDxBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsPiBzdGFydF9ydWxlXG5cbiVzdGFydCBpbnRlcmFjdGl2ZV9jb21tYW5kXG4ldHlwZSA8KEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQ+IGludGVyYWN0aXZlX2NvbW1hbmRcblxuJXN0YXJ0IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0PiBzdGFuZGFsb25lX2VmZmVjdF9saXN0XG5cbiVzdGFydCBzdGFuZGFsb25lX2Jvb2xfZXhwclxuJXR5cGUgPChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ+IHN0YW5kYWxvbmVfYm9vbF9leHByXG5cbiUlIC8qR3JhbW1hciBydWxlcyovXG5cbm5ld2xpbmU6XG4gICAgfCBORVdMSU5FIHN0YXJ0X3J1bGUgeyQyfVxuICAgIHwgRU9GIHtmdW4gYyAtPiBjfTtcblxuc3RhcnRfcnVsZTpcbiAgICB8IG5ld2xpbmUgeyQxfVxuICAgIHwgTEFCRUwgcnVsZV9leHByZXNzaW9uIG5ld2xpbmVcbiAgICAgICAge2xldCBvdXQgPSAoU29tZSAoJDEsIHJoc19wb3MgMSksJDIpIGluXG5cdGZ1biBjIC0+IGxldCByID0gJDMgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IG91dDo6ci5Bc3QucnVsZXN9fVxuICAgIHwgcnVsZV9leHByZXNzaW9uIG5ld2xpbmVcbiAgICAgICAge2Z1biBjIC0+IGxldCByID0gJDIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLCQxKTo6ci5Bc3QucnVsZXN9fVxuICAgIHwgTEFCRUwgRVFVQUwgYWxnX2V4cHIgbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9ICgoJDEscmhzX3BvcyAxKSwkMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfX1cbiAgICB8IGluc3RydWN0aW9uIG5ld2xpbmVcblx0XHQgIHsgZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluXG5cdFx0ICAgICAgbWF0Y2ggJDEgd2l0aFxuXHRcdCAgICAgIHwgQXN0LlJVTEUgcnUgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5ydWxlcyA9IHJ1OjpyLkFzdC5ydWxlc31cblx0XHQgICAgICB8IEFzdC5TSUcgYWcgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5zaWduYXR1cmVzPWFnOjpyLkFzdC5zaWduYXR1cmVzfVxuXHRcdCAgICAgIHwgQXN0LlRPS0VOU0lHIChzdHJfcG9zKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnRva2Vucz1zdHJfcG9zOjpyLkFzdC50b2tlbnN9XG5cdFx0ICAgICAgfCBBc3QuVk9MU0lHICh2b2xfdHlwZSx2b2wsdm9sX3BhcmFtKSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZvbHVtZXM9KHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pOjpyLkFzdC52b2x1bWVzfVxuXHRcdCAgICAgIHwgQXN0LklOSVQgKGFsZyxpbml0X3QpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QuaW5pdD0oYWxnLGluaXRfdCk6OnIuQXN0LmluaXR9XG5cdFx0ICAgICAgfCBBc3QuREVDTEFSRSB2YXIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXI6OnIuQXN0LnZhcmlhYmxlc31cblx0XHQgICAgICB8IEFzdC5PQlMgKChsYmwscG9zKSxfIGFzIHZhcikgLT5cblx0XHRcdCAoKmZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBzaG9ydGN1dCBmb3IgJXZhciArICVwbG90Kilcblx0XHRcdCAgIHtyIHdpdGhcblx0XHRcdCAgICAgQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzO1xuXHRcdFx0ICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwscG9zKVxuXHRcdFx0XHRcdFx0IDo6ci5Bc3Qub2JzZXJ2YWJsZXN9XG5cdFx0ICAgICAgfCBBc3QuUExPVCBleHByIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QRVJUICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcykgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5wZXJ0dXJiYXRpb25zID1cblx0XHRcdCAgICgoYWxhcm0scHJlLGVmZmVjdCxvcHQpLHBvcyk6OnIuQXN0LnBlcnR1cmJhdGlvbnN9XG5cdFx0ICAgICAgfCBBc3QuQ09ORklHIChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpIC0+XG5cdFx0XHQge3Igd2l0aFxuXHRcdFx0ICBBc3QuY29uZmlndXJhdGlvbnMgPSAocGFyYW1fbmFtZSx2YWx1ZV9saXN0KTo6ci5Bc3QuY29uZmlndXJhdGlvbnN9XG5cdFx0ICB9XG4gICAgfCBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiU3ludGF4IGVycm9yXCIpKX1cbiAgICA7XG5cbmluc3RydWN0aW9uOlxuICAgIHwgU0lHTkFUVVJFIGFnZW50X2V4cHJlc3Npb24ge0FzdC5TSUcgJDJ9XG4gICAgfCBUT0tFTiBJRCB7QXN0LlRPS0VOU0lHICgkMixyaHNfcG9zIDIpfVxuICAgIHwgU0lHTkFUVVJFIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpfVxuXG4gICAgfCBJTklUIGluaXRfZGVjbGFyYXRpb24ge0FzdC5JTklUICQyfVxuICAgIHwgSU5JVCBlcnJvclxuXHR7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKX1cblxuICAgIHwgTEVUIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuREVDTEFSRSAkMn1cbiAgICB8IE9CUyB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7QXN0Lk9CUyAkMn1cbiAgICB8IFBMT1QgYWxnX2V4cHIge0FzdC5QTE9UICQyfVxuICAgIHwgUExPVCBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSl9XG4gICAgfCBQRVJUIHBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbiB7QXN0LlBFUlQgKGFkZF9wb3MgJDIpfVxuICAgIHwgQ09ORklHIFNUUklORyB2YWx1ZV9saXN0XG5cdCAgICAge0FzdC5DT05GSUcgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gICAgfCBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDIscmhzX3BvcyAyKSkgfVxuICAgIHwgYWxnX2V4cHIgT1BfUEFSIG5vbl9lbXB0eV9taXh0dXJlIENMX1BBUlxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDMsIHJoc19wb3MgMykpIH1cbiAgICB8IElEIExBUiBhbGdfZXhwciB7KCQzLEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gICAgfCBhbGdfZXhwciBJRCB7KCQxLEFzdC5JTklUX1RPSyBbJDIscmhzX3BvcyAyXSl9XG4gICAgO1xuXG52YWx1ZV9saXN0OlxuICAgIHwgU1RSSU5HIHtbJDEsIHJoc19wb3MgMV19XG4gICAgfCBTVFJJTkcgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQyfVxuICAgIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB7Tm9uZX1cbiAgfCBBTEFSTSBuYnIge1NvbWUgJDJ9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB7Tm9uZX1cbiAgfCBSRVBFQVQgYm9vbF9leHByIHtTb21lICQyfVxuICB8IFVOVElMIGJvb2xfZXhwclxuICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgeyBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDIpKSl9XG5cblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLFNvbWUgJDIsJDQsJDUpIH1cbiAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLE5vbmUsJDMsJDQpIH1cbiAgICB8IFJFUEVBVCBib29sX2V4cHIgRE8gZWZmZWN0X2xpc3QgVU5USUwgYm9vbF9leHByXG4gICAgICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgIHsgKE5vbmUsU29tZSAkMiwkNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDYpKSkpfVxuICAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgU0VUIGVmZmVjdF9saXN0XG5cdFx0eyAoJDEsU29tZSAkMiwkNCxOb25lKX0gLypGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSovXG4gICAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OiBlZmZlY3RfbGlzdCBFT0YgeyQxfVxuXG5lZmZlY3RfbGlzdDpcbiAgICB8IE9QX1BBUiBlZmZlY3RfbGlzdCBDTF9QQVIgeyQyfVxuICAgIHwgZWZmZWN0IHtbJDFdfVxuICAgIHwgZWZmZWN0IFNFTUlDT0xPTiBlZmZlY3RfbGlzdCB7JDE6OiQzfVxuICAgIDtcblxuZWZmZWN0OlxuICAgIHwgQVNTSUdOIElEIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHJhdGUgb2YgYSBydWxlKi9cblx0XHRcdFx0XHRcdCAgICAgIHtBc3QuVVBEQVRFICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgfCBBU1NJR04gTEFCRUwgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IFRSQUNLIExBQkVMIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dMQUJFTCAoJDMsKCQyLHJoc19wb3MgMikpfVxuICAgIHwgVFJBQ0sgcGF0dGVybiBib29sZWFuXG5cdCAgICB7QXN0LkNGTE9XTUlYICgkMywoWyQyXSxyaHNfcG9zIDIpKX1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuXG5cdCAgIHtpZiAkMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsJDIpIGVsc2UgQXN0LkRJTk9GRiAkMn1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYm9vbGVhblxuXHQgICB7aWYgJDQgJiYgJDMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSl9XG4gICAgfCBBUFBMWSBzbWFsbF9hbGdfZXhwciBydWxlX2NvbnRlbnRcblx0XHQgeyBBc3QuQVBQTFkoXG5cdFx0ICAgJDIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgJDM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCB9XG4gICAgfCBJTlRSTyBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgICB7IEFzdC5BUFBMWSgkMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPSQzOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgfVxuICAgIHwgSU5UUk8gZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IERFTEVURSBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz0kMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIH1cblxuICAgIHwgREVMRVRFIGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSl9XG4gICAgfCBJRCBMQVIgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgdmFsdWUgb2YgYSB0b2tlbiovXG4gICAgICAge1xuICAgICAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLCQzLChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICB9XG4gICAgfCBTTkFQU0hPVCBwcmludF9leHByIHtBc3QuU05BUFNIT1QgKGZhbHNlLCQyKX1cbiAgICB8IFNUT1AgcHJpbnRfZXhwciB7QXN0LlNUT1AgJDJ9XG4gICAgfCBQUklOVEYgcHJpbnRfZXhwciBTTUFMTEVSIHByaW50X2V4cHIgR1JFQVRFUiB7IEFzdC5QUklOVCAoJDIsJDQpIH1cbiAgICB8IFBMT1RFTlRSWSB7IEFzdC5QTE9URU5UUlkgfVxuICAgIHwgU1BFQ0lFU19PRiBub25lbXB0eV9wcmludF9leHByIG5vbl9lbXB0eV9taXh0dXJlIGJvb2xlYW4geyBBc3QuU1BFQ0lFU19PRiAoJDQsJDIsKCQzLCByaHNfcG9zIDMpKX1cbiAgICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gICAgfCBTVFJJTkcge1tQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAkMSldfVxuICAgIHwgbWlkX2FsZ19leHByIHtbUHJpbWl0aXZlcy5BbGdfcGV4cHIgJDFdfVxuICAgIHwgU1RSSU5HIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OiQzfVxuICAgIHwgbWlkX2FsZ19leHByIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLkFsZ19wZXhwciAkMTo6JDN9XG4gICAgO1xucHJpbnRfZXhwcjpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgbm9uZW1wdHlfcHJpbnRfZXhwciB7JDF9XG5cbmJvb2xlYW46XG4gICAgfCBUUlVFIHt0cnVlfVxuICAgIHwgRkFMU0Uge2ZhbHNlfVxuICAgIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gICAgfCBMQUJFTCBub25fZW1wdHlfbWl4dHVyZVxuXHQgICB7ICgoJDEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIscmhzX3BvcyAyKSl9XG4gICAgfCBMQUJFTCBhbGdfZXhwciB7KCgkMSxyaHNfcG9zIDEpLCQyKX1cbiAgICB8IElEIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgTEFCRUwgZXJyb3Jcblx0ICAgIHtyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpXG5cdCAgICB9XG4gICAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gICAgfCBPUF9QQVIgYm9vbF9leHByIENMX1BBUiB7JDJ9XG4gICAgfCBUUlVFIHthZGRfcG9zIEFsZ19leHByLlRSVUV9XG4gICAgfCBGQUxTRSB7YWRkX3BvcyBBbGdfZXhwci5GQUxTRX1cblxuYm9vbF9leHByOlxuICAgIHwgc21hbGxfYm9vbF9leHByIHsgJDEgfVxuICAgIHwgTk9UIHNtYWxsX2Jvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDIpKX1cbiAgICB8IGJvb2xfZXhwciBBTkQgYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsJDEsJDMpKX1cbiAgICB8IGJvb2xfZXhwciBPUiBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBHUkVBVEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBTTUFMTEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBFUVVBTCBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIERJRkYgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsJDEsJDMpKX1cbiAgICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOiBib29sX2V4cHIgRU9GIHskMX1cblxudG9rZW5fZXhwcjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IFBJUEUgc3VtX3Rva2VuIHskMn1cbiAgICB8IFBJUEUgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpfVxuICAgIDtcblxuc3VtX3Rva2VuOlxuICAgIHwgT1BfUEFSIHN1bV90b2tlbiBDTF9QQVIgeyQyfVxuICAgIHwgYWxnX2V4cHIgSUQge1soJDEsKCQyLHJoc19wb3MgMikpXX1cbiAgICB8IGFsZ19leHByIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ0IGluICgkMSwoJDIscmhzX3BvcyAyKSk6Omx9XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIHtbKCQxLCgkMyxyaHNfcG9zIDMpKV19XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ1IGluICgkMSwoJDMscmhzX3BvcyAzKSk6Omx9XG5cbnJ1bGVfY29udGVudDpcbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bJDRdOyBBc3QuYWRkX3Rva2VuID0gJDV9LFxuICAgICAkM31cbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9WyQxXTsgQXN0LnJtX3Rva2VuID0gJDI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkNH0sXG4gICAgICQzfVxuICB8IHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9WyQzXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDJ9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkM30sXG4gICAgICQyfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbJDFdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcbiAgfCBQSVBFIHN1bV90b2tlblxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gJDJ9LGZhbHNlIH07XG5cbnJ1bGVfZXhwcmVzc2lvbjpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9ICQyIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gJDEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSB9O1xuXG5hcnJvdzpcbiAgICB8IEtBUFBBX1JBUiB7ZmFsc2V9XG4gICAgfCBLQVBQQV9MUkFSIHt0cnVlfVxuICAgIDtcblxubmJyOlxuICAgIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gICAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgICB8IElOVCB7IE5ici5JICQxIH1cblxuY29uc3RhbnQ6XG4gICAgfCBuYnIge2FkZF9wb3MgKEFsZ19leHByLkNPTlNUICQxKX1cbiAgICB8IEVNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKX1cbiAgICB8IFRNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKX1cbiAgICB8IENQVVRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpfVxuICAgIDtcblxudmFyaWFibGU6XG4gICAgfCBQSVBFIElEIFBJUEUge2FkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEICgkMikpfVxuICAgIHwgUElQRSBub25fZW1wdHlfbWl4dHVyZSBQSVBFIHsgYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIpIH1cbiAgICB8IElEIHthZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSICgkMSkpfVxuICAgIHwgTEFCRUwge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBUSU1FIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSl9XG4gICAgfCBFVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKX1cbiAgICB8IE5VTExfRVZFTlQge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKX1cbiAgICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICAgIHwgT1BfUEFSIGFsZ19leHByIENMX1BBUiB7JDJ9XG4gICAgfCBjb25zdGFudCB7JDF9XG4gICAgfCB2YXJpYWJsZSB7JDF9XG4gICAgfCBNQVggc21hbGxfYWxnX2V4cHIgc21hbGxfYWxnX2V4cHJcblx0ICB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDIsJDMpKX1cbiAgICB8IE1JTiBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMiwkMykpfVxuICAgIHwgRVhQT05FTlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQyKSl9XG4gICAgfCBTSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMikpfVxuICAgIHwgQ09TSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQyKSl9XG4gICAgfCBUQU4gbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQyKSl9XG4gICAgfCBBQlMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQyKSl9XG4gICAgfCBTUVJUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDIpKX1cbiAgICB8IExPRyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDIpKX1cbiAgICA7XG5cbm1pZF9hbGdfZXhwcjpcbiAgICB8IE1JTlVTIG1pZF9hbGdfZXhwciB7IGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDIpKSB9XG4gICAgfCBzbWFsbF9hbGdfZXhwciB7ICQxIH1cbiAgICB8IG1pZF9hbGdfZXhwciBNVUxUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgUExVUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgRElWIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBNSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQT1cgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1PRFVMTyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLCQxLCQzKSl9XG5cbmFsZ19leHByOlxuICAgIHwgbWlkX2FsZ19leHByIHskMX1cbiAgICB8IGJvb2xfZXhwciBUSEVOIGFsZ19leHByIEVMU0Ugc21hbGxfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLklGKCQxLCQzLCQ1KSl9XG5cbmJpcmF0ZTpcbiAgICB8IEFUIHJhdGUge2xldCAoazIsazEpID0gJDIgaW4gKGsyLGsxLE5vbmUsTm9uZSl9XG4gICAgfCBBVCByYXRlIENPTU1BIHJhdGUge2xldCAoazIsazEpID0gJDIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gJDQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKX1cbiAgICB8IGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpfVxuICAgIDtcblxucmF0ZTpcbiAgICB8IGFsZ19leHByIE9QX0NVUiBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIHsoJDEsU29tZSAkMyl9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgYWxnX3dpdGhfcmFkaXVzIENMX1BBUiB7ICgkMSxTb21lICQzKSB9XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVJcbiAgICAgIHsoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lICQyKX1cbiAgICB8IGFsZ19leHByIE9QX0NVUiBDTF9DVVJcbiAgICAgIHsoJDEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSl9XG4gICAgfCB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpfVxuICAgIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICAgIHwgYWxnX2V4cHIgeygkMSxOb25lKX1cbiAgICB8IGFsZ19leHByIFRZUEUgYWxnX2V4cHIgeygkMSwgU29tZSAkMyl9XG4gICAgO1xuXG5wYXR0ZXJuOlxuICAgIHwgT1BfUEFSIHBhdHRlcm4gQ0xfUEFSIHskMn1cbiAgICB8IGFnZW50X2V4cHJlc3Npb24gQ09NTUEgcGF0dGVybiB7JDEgOjogJDN9XG4gICAgfCBhZ2VudF9leHByZXNzaW9uIHtbJDFdfVxuO1xuXG5ub25fZW1wdHlfbWl4dHVyZTpcbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcbiAgICB7IFtbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKV1dIH1cbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVIgQ09NTUEgcGF0dGVyblxuICAgIHsgW0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCkgOjogJDZdfVxuICAgIDtcblxubW9kX2FnZW50OlxuXHR8IHsgQXN0Lk5vTW9kIH1cblx0fCBQTFVTIHsgQXN0LkNyZWF0ZSB9XG5cdHwgTUlOVVMgeyBBc3QuRXJhc2UgfTtcblxuYWdlbnRfZXhwcmVzc2lvbjpcbiAgICB8IG1vZF9hZ2VudCBJRCBPUF9QQVIgaW50ZXJmYWNlX2V4cHJlc3Npb24gQ0xfUEFSXG5cdCB7QXN0LlByZXNlbnQgKCgkMixyaHNfcG9zIDIpLCAkNCwgJDEpfVxuICAgIHwgbW9kX2FnZW50IElEIGVycm9yXG5cdCB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQyXlwiJ1wiKSkpfVxuICAgIDtcblxuaW50ZXJmYWNlX2V4cHJlc3Npb246XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBwb3J0X2V4cHJlc3Npb24gQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb24geyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiB7WyQxXX1cbiAgICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgIHwgVFlQRSBJTlQgeyBTb21lIChBc3QuQ0VRICQyLHJoc19wb3MgMil9XG4gICB8IFRZUEUgR1JFQVRFUiBJTlQgeyBTb21lIChBc3QuQ0dURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIFNNQUxMRVIgSU5UIHsgU29tZSAoQXN0LkNMVEUgJDMscmhzX3BvcyAzKX1cbiAgIHwgVFlQRSBJRCB7IFNvbWUgKEFzdC5DVkFSICQyLHJoc19wb3MgMil9XG5cbnBvcnRfZXhwcmVzc2lvbjpcbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkMzsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDM7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNjsgfSB9XG4gICAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ0LHJoc19wb3MgNCl9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSQ1LHJoc19wb3MgNSl9IH1cbiAgICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgkNSxyaHNfcG9zIDUpfSB9XG4gICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtICQ2LHJoc19wb3MgNil9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0XG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMH0gfVxuICAgIDtcblxuaW50ZXJuYWxfc3RhdGU6XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBLQVBQQV9NUksgaW50ZXJuYWxfc3RhdGUgeyhTb21lICQxLHJoc19wb3MgMSk6OiQyfVxuICAgIHwgZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSl9XG4gICAgO1xuXG5saW5rX3N0YXRlX21vZDpcblx0fCB7Tm9uZX1cblx0fCBESVYgS0FQUEFfTE5LIERPVCB7U29tZSBOb25lfVxuXHR8IERJViBLQVBQQV9MTksgSU5UIHtTb21lIChTb21lICgkMyxyaHNfcG9zIDMpKX1cblx0fCBESVYgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKX07XG5cblxuYV9saW5rX3N0YXRlOlxuICAgIHwgS0FQUEFfTE5LIERPVCB7KExLYXBwYS5MTktfRlJFRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElOVCB7KExLYXBwYS5MTktfVkFMVUUgKCQyLCgpKSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIEtBUFBBX1NFTUkgeyhMS2FwcGEuTE5LX1NPTUUscmhzX3BvcyAyKX1cbiAgICB8IEtBUFBBX0xOSyBJRCBET1QgSUQge2FkZF9wb3MgKExLYXBwYS5MTktfVFlQRVxuXHRcdFx0XHQgICAgICAoKCQyLHJoc19wb3MgMiksKCQ0LHJoc19wb3MgNCkpKX1cbiAgICB8IEtBUFBBX1dMRCB7YWRkX3BvcyBMS2FwcGEuTE5LX0FOWX1cbiAgICB8IEtBUFBBX0xOSyBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSl9XG47XG5cbmxpbmtfc3RhdGU6XG5cdHwgYV9saW5rX3N0YXRlIGxpbmtfc3RhdGUgeyQxOjokMn1cblx0fCBhX2xpbmtfc3RhdGUge1skMV19O1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuXHR8IFJVTiBORVdMSU5FIHtBc3QuUlVOIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRSl9XG5cdHwgUlVOIGJvb2xfZXhwciBORVdMSU5FIHtBc3QuUlVOICQyfVxuXHR8IGVmZmVjdF9saXN0IE5FV0xJTkUge0FzdC5NT0RJRlkgJDF9XG5cdHwgRU9GIHtBc3QuUVVJVH1cblx0fCBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpfVxuJSVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbiAgb3BlbiBMZXhpbmdcbiAgb3BlbiBLYXBwYVBhcnNlclxuXG4gIGxldCByZWFjaF9lb2YgbGV4YnVmID1cbiAgICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWVcblxuIGxldCByZXNldF9lb2YgbGV4YnVmID1cbiAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gZmFsc2VcblxuIGxldCBwb3NpdGlvbiBsZXhidWYgPVxuICAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAocG9zLnBvc19mbmFtZSwgcG9zLnBvc19sbnVtLCBwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwic2V0XCIgU0VUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInVudGlsXCIgVU5USUwgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxubGV0IHNwYWNlX2NoYXJzID0gWycgJzsnXFxuJzsnXFx0J11cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gKFsnMCctJzknXSspXG5sZXQgcmVhbCA9XG4gICAgICgoKChbJzAnLSc5J10rICgnLicgWycwJy0nOSddKik/KSB8ICgnLicgWycwJy0nOSddKykpXG5cdFsnZScgJ0UnXSBbJysnICctJ10/IFsnMCctJzknXSspXG4gIHwgKChbJzAnLSc5J10rICcuJyBbJzAnLSc5J10qICkgfCAoWycwJy0nOSddKiAnLicgWycwJy0nOSddKykpKVxubGV0IGlkID0gKCdfJyogWydhJy0neicgJ0EnLSdaJ10gWydhJy0neicgJ0EnLSdaJyAnMCctJzknICdfJyAnLScgJysnXSogKVxubGV0IGludGVybmFsX3N0YXRlID0gJ34nIChbJzAnLSc5JyAnYSctJ3onICdBJy0nWicgJ18nICctJyAnKyddKylcbmxldCBwZXJ0ID0gJyQnIGlkXG5cbnJ1bGUgdG9rZW4gPSBwYXJzZVxuXHQgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHRva2VuIGxleGJ1Zn1cblx0IHwgXCImJlwiIHtBTkR9XG5cdCB8IFwifHxcIiB7T1J9XG5cdCB8IFwiPC0+XCIge0tBUFBBX0xSQVJ9XG5cdCB8IFwiLT5cIiB7S0FQUEFfUkFSfVxuXHQgfCBcIjwtXCIge0xBUn1cblx0IHwgXCI8PlwiIHtESUZGfVxuXHQgfCBwZXJ0IGFzIHMge21hdGNoIHMgd2l0aFxuXHRcdCAgICAgIHwgXCIkREVMXCIgLT4gREVMRVRFXG5cdFx0ICAgICAgfCBcIiRBRERcIiAtPiBJTlRST1xuXHRcdCAgICAgIHwgXCIkQVBQTFlcIiAtPiBBUFBMWVxuXHRcdCAgICAgIHwgXCIkU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuXHRcdCAgICAgIHwgXCIkU1RPUFwiIC0+IFNUT1Bcblx0XHQgICAgICB8IFwiJEZMVVhcIiAtPiBGTFVYXG5cdFx0ICAgICAgfCBcIiRUUkFDS1wiIC0+IFRSQUNLXG5cdFx0ICAgICAgfCBcIiRVUERBVEVcIiAtPiBBU1NJR05cblx0XHQgICAgICB8IFwiJFBSSU5UXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQUklOVEZcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuXHRcdCAgICAgIHwgXCIkUlVOXCIgLT4gUlVOXG5cdFx0ICAgICAgfCBcIiRTUEVDSUVTX09GXCIgLT4gU1BFQ0lFU19PRlxuXHRcdCAgICAgIHwgcyAtPlxuXHRcdFx0IHJhaXNlXG5cdFx0XHQgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAgIChcIlBlcnR1cmJhdGlvbiBlZmZlY3QgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0KExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICAgICB9XG5cdCB8ICdbJyBibGFuayogKGlkIGFzIGxhYikgYmxhbmsqICddJyB7XG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIH1cblx0IHwgJzonIHtUWVBFfVxuXHQgfCAnOycge1NFTUlDT0xPTn1cblx0IHwgJ1xcXCInIHtsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cn1cblx0IHwgZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORX1cblx0IHwgJyMnIHtjb21tZW50IGxleGJ1Zn1cblx0IHwgJy8nICcqJyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCB8IGludGVnZXIgYXMgbiB7dHJ5IElOVCAoaW50X29mX3N0cmluZyBuKVxuXHQgd2l0aCBGYWlsdXJlIF8gLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAobl5cIiBpcyBhIGluY29ycmVjdCBpbnRlZ2VyXCIsXG5cdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG5cblx0IHwgcmVhbCBhcyBmIHtGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpfVxuXHQgfCAnXFwnJyAoW14nXFxuJydcXCcnXSsgYXMgeCkgJ1xcJyd7TEFCRUwoeCl9XG5cdCB8IGlkIGFzIHN0ciB7a2V5d29yZF9vcl9pZCBzdHJ9XG5cdCB8ICdAJyB7QVR9XG5cdCB8ICcsJyB7Q09NTUF9XG5cdCB8ICcoJyB7T1BfUEFSfVxuXHQgfCAnKScge0NMX1BBUn1cblx0IHwgJ3snIHtPUF9DVVJ9XG5cdCB8ICd9JyB7Q0xfQ1VSfVxuXHQgfCAnfCcge1BJUEV9XG5cdCB8ICcuJyB7RE9UfVxuXHQgfCAnKycge1BMVVN9XG5cdCB8ICcqJyB7TVVMVH1cblx0IHwgJy0nIHtNSU5VU31cblx0IHwgJ14nIHtQT1d9XG5cdCB8ICcvJyB7RElWfVxuXHQgfCAnPCcge1NNQUxMRVJ9XG5cdCB8ICc+JyB7R1JFQVRFUn1cblx0IHwgJz0nIHtFUVVBTH1cblx0IHwgJyUnIChpZCBhcyBsYWIpICc6JyB7XG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnIScge0tBUFBBX0xOS31cblx0IHwgaW50ZXJuYWxfc3RhdGUgYXMgcyB7bGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnficgaW5cblx0XHRcdFx0bGV0IHIgPSBTdHJpbmcuc3ViIHMgKGkrMSkgKFN0cmluZy5sZW5ndGggcy1pLTEpIGluXG5cdFx0XHRcdEtBUFBBX01SSyByXG5cdFx0XHQgICAgICAgfVxuXHQgfCAnPycge0tBUFBBX1dMRH1cblx0IHwgJ18nIHtLQVBQQV9TRU1JfVxuXHQgfCBibGFuayAge3Rva2VuIGxleGJ1Zn1cblx0IHwgZW9mIHtyZWFjaF9lb2YgbGV4YnVmOyBFT0Z9XG5cdCB8IF8gYXMgYyB7XG5cdFx0ICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAoXCJpbnZhbGlkIHVzZSBvZiBjaGFyYWN0ZXIgXCJeIFN0cmluZy5tYWtlIDEgYyxcblx0XHRcdCAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICB9XG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgPVxuICBwYXJzZVxuICB8IGVvZiB7U3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKX1cbiAgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWZ9XG4gIHwgXyBhcyBjIHtpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1Zn1cblxuYW5kIGNvbW1lbnQgPSBwYXJzZVxuXHQgICAgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgICAgfCAnXFxcXCcgYmxhbmsqIGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmfVxuXHQgICAgfCBlb2Yge0VPRn1cblx0ICAgIHwgXyB7Y29tbWVudCBsZXhidWZ9XG5cbmFuZCBpbmxpbmVfY29tbWVudCA9IHBhcnNlXG5cdFx0ICAgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8ICcqJyAnLycgeyAoKSB9XG5cdFx0ICAgfCAnXFxcIidcblx0XHQgICAgICAge2lnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJy8nICcqJyB7aW5saW5lX2NvbW1lbnQgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCBfIHtpbmxpbmVfY29tbWVudCBsZXhidWZ9XG57XG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiBcbiAgb3BlbiBMZXhpbmdcbiAgb3BlbiBLYXBwYVBhcnNlclxuXG4gIGxldCByZWFjaF9lb2YgbGV4YnVmID1cbiAgICBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWVcblxuIGxldCByZXNldF9lb2YgbGV4YnVmID1cbiAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gZmFsc2VcblxuIGxldCBwb3NpdGlvbiBsZXhidWYgPVxuICAgbGV0IHBvcyA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gICAocG9zLnBvc19mbmFtZSwgcG9zLnBvc19sbnVtLCBwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwic2V0XCIgU0VUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJyZXBlYXRcIiBSRVBFQVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInVudGlsXCIgVU5USUwgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcIklORlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJpbmZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiYWxhcm1cIiBBTEFSTSBpblxuIGZ1biB4IC0+XG4gdHJ5IEhhc2h0YmwuZmluZCBrZXl3b3JkcyB4IHdpdGggTm90X2ZvdW5kIC0+IElEIHhcblxubGV0IHNwYWNlX2NoYXJzID0gWycgJzsnXFxuJzsnXFx0J11cblxuIyAzMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIxM1xcMjU1XFwyMTRcXDI1NVxcMjE1XFwyNTVcXDIxN1xcMjU1XFwwODRcXDAwMFxcMjE5XFwyNTVcXDE2MFxcMDAwXFxcbiAgICBcXDIyMVxcMjU1XFwyMjJcXDI1NVxcMjI1XFwyNTVcXDIyN1xcMjU1XFwyMjhcXDI1NVxcMjMxXFwyNTVcXDIzMlxcMjU1XFwyMzNcXDI1NVxcXG4gICAgXFwyMzRcXDI1NVxcMjM1XFwyNTVcXDIzNlxcMjU1XFwyNDBcXDAwMFxcMDQyXFwwMDFcXDEzNlxcMDAwXFwxNTlcXDAwMFxcMTE5XFwwMDFcXFxuICAgIFxcMDUxXFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMDAxXFwwMDBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDE1N1xcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwwMzRcXDAwMFxcMDgzXFwwMDBcXDAwNlxcMDAwXFwwOTNcXDAwMFxcMTY4XFwwMDFcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwxNzBcXDAwMVxcMjU0XFwyNTVcXDI1M1xcMjU1XFwyNDlcXDI1NVxcMDgwXFwwMDBcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMDM5XFwwMDJcXFxuICAgIFxcMDk3XFwwMDJcXDIxMVxcMDAyXFwwMTNcXDAwM1xcMTI3XFwwMDNcXDI0N1xcMjU1XFwyMTJcXDAwMlxcMjQxXFwyNTVcXDE0MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAzXFwxNTVcXDAwMVxcMTc0XFwwMDJcXDExN1xcMDAzXFwxMzhcXDAwMFxcMjM4XFwyNTVcXDE4NVxcMDAzXFwwMDlcXDAwNFxcXG4gICAgXFwwNjdcXDAwNFxcMjIwXFwyNTVcXDE0N1xcMDA0XFwyNDdcXDAwMVxcMjUzXFwyNTVcXDIyM1xcMDAyXFwyNTVcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMDA0XFwwMDBcXDIyNVxcMDAyXFwxNzhcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzlcXDAwMlxcMjU1XFwyNTVcXDAwNVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwwMDZcXDAwMFxcMTQzXFwwMDNcXDAwNFxcMDA1XFwyNTFcXDI1NVxcMTAxXFwwMDBcXDI1M1xcMjU1XFwwOTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDI1NFxcMjU1XFwyNTJcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAzOVxcMDAwXFwwNDJcXDAwMFxcMDI2XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNDJcXDAwMFxcMDI5XFwwMDBcXDAzMlxcMDAwXFwwMjVcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDM4XFwwMDBcXDAyN1xcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDA2XFwwMDBcXDAyOFxcMDAwXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAwN1xcMDAwXFwwMzZcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMzNcXDAwMFxcMDIyXFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAzMFxcMDAwXFwwMjlcXDAwMFxcMDM0XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDMxXFwwMDBcXDAzN1xcMDAwXFwwNTRcXDAwMFxcMDEwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxNFxcMDAwXFwwMzVcXDAwMFxcMDEzXFwwMDBcXDAwNVxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDY2XFwwMDBcXDA0MlxcMDAwXFwwNDFcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDQ1XFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDA1NlxcMDAwXFwwNTFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwNDBcXDAwMFxcMDM4XFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDU1XFwwMDBcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDY5XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzFcXDAwMFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNzdcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDM0XFwwMDBcXDAwNVxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA0NFxcMDAwXFwwODVcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDM0XFwwMDBcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDIxXFwwMDBcXDAyMFxcMDAwXFwwNjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDMxXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwMzdcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDQ3XFwwMDBcXDA2N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc0XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNjlcXDAwMFxcMDY5XFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDY5XFwwMDBcXDI1NVxcMjU1XFwwNzNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDczXFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDc0XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDUzXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDgyXFwwMDBcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4MlxcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjRcXDAwMFxcMjU1XFwyNTVcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMTM4XFwwMDBcXDI1MlxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXFwyNTVcXDAwMlxcMjU1XFwyNTVcXDAwM1xcMjU1XFwyNTVcXDAwMFxcMDAyXFwwMDFcXDAwM1xcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNCAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHRva2VuIGxleGJ1ZilcbiMgNjQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA1MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoQU5EKVxuIyA2NDUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChPUilcbiMgNjUwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA1MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgKEtBUFBBX0xSQVIpXG4jIDY1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgNTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKEtBUFBBX1JBUilcbiMgNjYwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA2NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDU2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChESUZGKVxuIyA2NzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA3IC0+XG5sZXRcbiMgNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgc1xuIyA2NzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAobWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIClcbiMgNzAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxubGV0XG4jIDc4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJcbiMgNzA2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDEpIGluXG4jIDc4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcIkVcIiAtPiBFVkVOVFxuXHRcdHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcblx0XHR8IFwiVFwiIC0+IFRJTUVcblx0XHR8IFwiVHNpbVwiIC0+IENQVVRJTUVcblx0XHR8IFwibG9nXCIgLT4gTE9HXG5cdFx0fCBcInNpblwiIC0+IFNJTlVTXG5cdFx0fCBcImNvc1wiIC0+IENPU0lOVVNcblx0XHR8IFwidGFuXCIgLT4gVEFOXG5cdFx0fCBcImV4cFwiIC0+IEVYUE9ORU5UXG5cdFx0fCBcImludFwiIC0+IEFCU1xuXHRcdHwgXCJtb2RcIiAtPiBNT0RVTE9cblx0XHR8IFwic3FydFwiIC0+IFNRUlRcblx0XHR8IFwidHJ1ZVwiIC0+IFRSVUVcblx0XHR8IFwiZmFsc2VcIiAtPiBGQUxTRVxuXHRcdHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuXHRcdHwgXCJtYXhcIiAtPiBNQVhcblx0XHR8IFwibWluXCIgLT4gTUlOXG5cdFx0fCBcIkVtYXhcIiAtPiBFTUFYXG5cdFx0fCBcIlRtYXhcIiAtPiBUTUFYXG5cdFx0fCBcIj9cIiAtPiBUSEVOXG5cdFx0fCBcIjpcIiAtPiBFTFNFXG5cdFx0fCBcIm5vdFwiIC0+IE5PVFxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgKFwiU3ltYm9sIFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0ICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICApXG4jIDczOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTA4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFRZUEUpXG4jIDc0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEwIC0+XG4jIDEwOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTRU1JQ09MT04pXG4jIDc0OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDExMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAobGV0IHN0ciA9IHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmIGluXG5cdFx0IFNUUklORyBzdHIpXG4jIDc1NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEyIC0+XG4jIDExMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORSlcbiMgNzYwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTMgLT5cbiMgMTEzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyA3NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNCAtPlxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyA3NzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNSAtPlxubGV0XG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBuXG4jIDc3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAodHJ5IElOVCAoaW50X29mX3N0cmluZyBuKVxuXHQgd2l0aCBGYWlsdXJlIF8gLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAobl5cIiBpcyBhIGluY29ycmVjdCBpbnRlZ2VyXCIsXG5cdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDc4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE2IC0+XG5sZXRcbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgIGZcbiMgNzkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpKVxuIyA3OTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxNyAtPlxubGV0XG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgODAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyAxMjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExBQkVMKHgpKVxuIyA4MDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxOCAtPlxubGV0XG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgc3RyXG4jIDgxMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAoa2V5d29yZF9vcl9pZCBzdHIpXG4jIDgxNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE5IC0+XG4jIDEyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChBVClcbiMgODE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjAgLT5cbiMgMTI1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKENPTU1BKVxuIyA4MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMSAtPlxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoT1BfUEFSKVxuIyA4MjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMiAtPlxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ0xfUEFSKVxuIyA4MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMyAtPlxuIyAxMjggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoT1BfQ1VSKVxuIyA4MzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNCAtPlxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ0xfQ1VSKVxuIyA4NDQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNSAtPlxuIyAxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUElQRSlcbiMgODQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjYgLT5cbiMgMTMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERPVClcbiMgODU0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjcgLT5cbiMgMTMyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBMVVMpXG4jIDg1OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI4IC0+XG4jIDEzMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNVUxUKVxuIyA4NjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyOSAtPlxuIyAxMzQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoTUlOVVMpXG4jIDg2OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMwIC0+XG4jIDEzNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQT1cpXG4jIDg3NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMxIC0+XG4jIDEzNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChESVYpXG4jIDg3OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMyIC0+XG4jIDEzNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTTUFMTEVSKVxuIyA4ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzMyAtPlxuIyAxMzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoR1JFQVRFUilcbiMgODg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzQgLT5cbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEVRVUFMKVxuIyA4OTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBsYWJcbiMgOTAwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKFxuXHRcdG1hdGNoIGxhYiB3aXRoXG5cdFx0fCBcImFnZW50XCIgLT4gU0lHTkFUVVJFXG5cdFx0fCBcImluaXRcIiAtPiBJTklUXG5cdFx0fCBcInZhclwiIC0+IExFVFxuXHRcdHwgXCJwbG90XCIgLT4gUExPVFxuXHRcdHwgXCJtb2RcIiAtPiBQRVJUXG5cdFx0fCBcIm9ic1wiIC0+IE9CU1xuXHRcdHwgXCJkZWZcIiAtPiBDT05GSUdcblx0XHR8IFwidG9rZW5cIiAtPiBUT0tFTlxuXHRcdHwgXyBhcyBzIC0+XG5cdFx0ICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgKFwiSW5zdHJ1Y3Rpb24gXFxcIlwiXnNeXCJcXFwiIG5vdCByZWNvZ25pemVkXCIsXG5cdFx0XHRcdFx0TG9jLm9mX3Bvc1xuXHRcdFx0XHRcdChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHRcdCAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgOTIwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzYgLT5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEtBUFBBX0xOSylcbiMgOTI1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzcgLT5cbmxldFxuIyAxNTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnficgaW5cblx0XHRcdFx0bGV0IHIgPSBTdHJpbmcuc3ViIHMgKGkrMSkgKFN0cmluZy5sZW5ndGggcy1pLTEpIGluXG5cdFx0XHRcdEtBUFBBX01SSyByXG5cdFx0XHQgICAgICAgKVxuIyA5MzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzOCAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfV0xEKVxuIyA5NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzOSAtPlxuIyAxNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfU0VNSSlcbiMgOTQ4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDAgLT5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKHRva2VuIGxleGJ1ZilcbiMgOTUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDEgLT5cbiMgMTY1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKHJlYWNoX2VvZiBsZXhidWY7IEVPRilcbiMgOTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNDIgLT5cbmxldFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgY1xuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoXG5cdFx0ICAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAoXCJpbnZhbGlkIHVzZSBvZiBjaGFyYWN0ZXIgXCJeIFN0cmluZy5tYWtlIDEgYyxcblx0XHRcdCAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdFx0ICApXG4jIDk3MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfdG9rZW5fcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xhYmVsX3JlYyBhY2MgY2hhcl9saXN0IGxleGJ1ZiA2N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKSlcbiMgOTg1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCBsZXhidWYpXG4jIDk5MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgY1xuIyA5OTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAxNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoaWYgTGlzdC5tZW0gYyBjaGFyX2xpc3Rcblx0ICAgIHRoZW4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKGZ1biB4IC0+IFN0cmluZy5tYWtlIDEgeCkgYWNjKVxuXHQgICAgZWxzZSByZWFkX2xhYmVsIChjOjphY2MpIGNoYXJfbGlzdCBsZXhidWYpXG4jIDEwMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBjb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgNzRcbmFuZCBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgTkVXTElORSlcbiMgMTAxNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTgzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IHRva2VuIGxleGJ1ZilcbiMgMTAxOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKEVPRilcbiMgMTAyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMTg1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChjb21tZW50IGxleGJ1ZilcbiMgMTAyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfY29tbWVudF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBpbmxpbmVfY29tbWVudCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiA4M1xuYW5kIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE4OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNDEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE4OSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAoICgpIClcbiMgMTA0NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTkxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChpZ25vcmUgKHJlYWRfbGFiZWwgW10gWydcXFwiJ10gbGV4YnVmKTtcblx0XHRcdGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA1MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMTkzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMTk0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChpbmxpbmVfY29tbWVudCBsZXhidWYpXG4jIDEwNjIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxOTUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBsZXQgY29tcGlsZSBsb2dnZXIgY29tcGlsIGZpbGUgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZpbGV9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpbGUgOjogY29tcGlsLkFzdC5maWxlbmFtZXMgfSBpblxuICAgIHRyeVxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmlsZSBpblxuICAgICAgbGV0IG91dCA9IEthcHBhUGFyc2VyLnN0YXJ0X3J1bGUgdG9rZW4gbGV4YnVmIGNvbXBpbCBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW4gb3V0XG4gICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobXNnLHBvcykgLT5cbiAgICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICBleGl0IDNcblxuIyAxMDg2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNhdGFsb2cgPSBLZmlsZXMuY3JlYXRlICgpXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IENhdGFsb2cgOiBLZmlsZXMuY2F0YWxvZ19pdGVtIGxpc3QgaGFuZGxlXG4gIHwgSW5mbyA6IChzdHJpbmcgKiBpbnQpIGhhbmRsZVxuICB8IEFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCBoYW5kbGVcblxudHlwZSBib3ggPVxuICB8IEIgOiAnYSBoYW5kbGUgKiBpbnQgKiAoJ2EsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCAtPiBib3hcblxubGV0IHJlcGx5IHBvc3Qgd3JpdGVfdiBpZCB2ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIEpzb25VdGlsLnN0cmluZ19vZl93cml0ZVxuICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTtcbiAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICBSZXN1bHRfdXRpbC53cml0ZV90IHdyaXRlX3ZcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfbGlzdCBSZXN1bHRfdXRpbC53cml0ZV9tZXNzYWdlKVxuICAgICAgICAgICAgICAgIGIgdik7XG4gICAgICAgICAgXSlcbiAgICAgICgpXG4gIGluXG4gIHBvc3QgbWVzc2FnZVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtcyA9IEpzb25VdGlsLndyaXRlX2xpc3QgS2ZpbGVzLndyaXRlX2NhdGFsb2dfaXRlbVxuXG5sZXQgbGlmdF9hbnN3ZXIgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgdGV4dCAtPlxuICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICBbIHsgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lOyBzZXZlcml0eSA9IExvZ3MuRXJyb3I7IHRleHQgfSBdXG5cbmxldCBvbl9tZXNzYWdlIHlpZWxkIHBvc3QgPVxuICBsZXQgY3VycmVudF9pZCA9IHJlZiBOb25lIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBMd3QuYmluZFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnQgKGZ1biBzdCBiIG1zZ19pZCAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IGN1cnJlbnRfaWQgOj0gU29tZSBtc2dfaWQgaW5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgKGZ1biBzdCBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUNhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmNhdGFsb2cgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChDYXRhbG9nLCBtc2dfaWQsIFJlc3VsdF91dGlsLm9rIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUNyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgS2ZpbGVzLmZpbGVfY3JlYXRlIH5wb3NpdGlvbiB+aWQgfmNvbnRlbnQgY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZUdldFwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2dldCB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChJbmZvLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZU1vdmVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlVXBkYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX3BhdGNoIH5pZCBjb250ZW50IGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVEZWxldGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuZmlsZV9kZWxldGUgfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RQYXJzZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5iaW5kIChLZmlsZXMucGFyc2UgeWllbGQgY2F0YWxvZykgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEFzdCwgbXNnX2lkLCBvdXQpKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJQcm9qZWN0T3ZlcndyaXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gQXN0LnJlYWRfcGFyc2luZ19jb21waWwgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBLZmlsZXMub3ZlcndyaXRlIGlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vdGhpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwiSW52YWxpZCBkaXJlY3RpdmU6IFwiIF4geDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkpKSlcbiAgICAgICAgICAgICAgICAgIHN0IGIpKVxuICAgICAgICAgICB0ZXh0KVxuICAgICAgICAoZnVuIGFuc3dlciAtPlxuICAgICAgICAgIGxldCAoKSA9IGN1cnJlbnRfaWQgOj0gTm9uZSBpblxuICAgICAgICAgIG1hdGNoIGFuc3dlciB3aXRoXG4gICAgICAgICAgfCBCIChDYXRhbG9nLCBtc2dfaWQsIHgpIC0+IHJlcGx5IHBvc3Qgd3JpdGVfY2F0YWxvZ19pdGVtcyBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoTm90aGluZywgbXNnX2lkLCB4KSAtPlxuICAgICAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWQgeFxuICAgICAgICAgIHwgQiAoQXN0LCBtc2dfaWQsIHgpIC0+IHJlcGx5IHBvc3QgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChJbmZvLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0XG4gICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZ1xuICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgICAgICAgICBtc2dfaWQgeClcbiAgICB3aXRoIGUgLT5cbiAgICAgIChtYXRjaCAhY3VycmVudF9pZCB3aXRoXG4gICAgICB8IFNvbWUgbXNnX2lkIC0+XG4gICAgICAgIHJlcGx5IHBvc3QgWW9qc29uLkJhc2ljLndyaXRlX251bGwgbXNnX2lkXG4gICAgICAgICAgKFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgIHJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgdGV4dCA9IFwiRXhjZXB0aW9uIHJhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgXSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgWW9qc29uLkpzb25fZXJyb3IgeCAtPlxuICAgICAgICAgIHBvc3RcbiAgICAgICAgICAgIChZb2pzb24udG9fc3RyaW5nXG4gICAgICAgICAgICAgICAoYFN0cmluZ1xuICAgICAgICAgICAgICAgICAoeCBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSlcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgIChcInVuZXhwZWN0ZWQgZXhjZXB0aW9uOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlXG4gICAgICAgICAgICAgICAgXiBcIlxcbk1lc3NhZ2UgZm9ybWF0IG11c3QgYmUgWyBpZCwgW1xcXCJSZXF1ZXN0XFxcIiwgLi4uIF0gXVwiKSkpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQXN0XG5cbmxldCByZWMgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gKGFsZywgcG9zKSA9XG4gIG1hdGNoIGFsZyB3aXRoXG4gIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgYXN0IC0+XG4gICAgKG1hdGNoIGRvbWFpbiB3aXRoXG4gICAgfCBTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pIC0+XG4gICAgICBsZXQgZG9tYWluJywgY2NzID1cbiAgICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmVcbiAgICAgICAgICB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiA/b3JpZ2luIGFzdFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRfY2NzID0gTGlzdC5tYXAgKGZ1biAoeCwgXykgLT4gQXJyYXkubWFwIGZzdCB4KSBjY3MgaW5cbiAgICAgIFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbicpLCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0Ugb3V0X2NjcywgcG9zKVxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKFwiVGhlb3JpdGljYWxseSBwdXJlIGFsZ19leHByIGhhcyBhIG1peHR1cmVcIiwgcG9zKSkpXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBpIC0+IGRvbWFpbiwgKEFsZ19leHByLkFMR19WQVIgaSwgcG9zKVxuICB8IEFsZ19leHByLlRPS0VOX0lEIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuVE9LRU5fSUQgaSwgcG9zKVxuICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCAtPiBkb21haW4sIChBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AsIHBvcylcbiAgfCBBbGdfZXhwci5DT05TVCBuIC0+IGRvbWFpbiwgKEFsZ19leHByLkNPTlNUIG4sIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgbGV0IGRvbWFpbicnLCBiJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGRvbWFpbicsIChBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBsZXQgZG9tYWluJywgY29uZCcgPVxuICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGNvbmRcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgeWVzJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyB5ZXMgaW5cbiAgICBsZXQgZG9tYWluJycnLCBubycgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicnIG5vIGluXG4gICAgZG9tYWluJycnLCAoQWxnX2V4cHIuSUYgKGNvbmQnLCB5ZXMnLCBubycpLCBwb3MpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoXCJDYW5ub3QgZGVhbCB3aXRoIGRlcml2YXRpdmUgaW4gZXhwcmVzc2lvbnNcIiwgcG9zKSlcblxuYW5kIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiA9IGZ1bmN0aW9uXG4gIHwgQWxnX2V4cHIuVFJVRSwgcG9zIC0+IGRvbWFpbiwgKEFsZ19leHByLlRSVUUsIHBvcylcbiAgfCBBbGdfZXhwci5GQUxTRSwgcG9zIC0+IGRvbWFpbiwgKEFsZ19leHByLkZBTFNFLCBwb3MpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJyBiIGluXG4gICAgZG9tYWluJycsIChBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgYSksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhJyksIHBvcylcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgYSwgYiksIHBvcyAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhJywgYicpLCBwb3MpXG5cbmxldCBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gKGFsZywgcG9zKSA9XG4gIHNuZCBAQCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIE5vbmUgKGFsZywgcG9zKVxuXG5sZXQgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIChTb21lIChvcmlnaW4sIGNvbnRhY3RfbWFwLCBkb21haW4pKVxuICAgICAgKGFsZywgcG9zKVxuICB3aXRoXG4gIHwgU29tZSAoXywgXywgZG9tYWluKSwgYWxnIC0+IGRvbWFpbiwgYWxnXG4gIHwgTm9uZSwgXyAtPiBmYWlsd2l0aCBcImRvbWFpbiBoYXMgYmVlbiBsb3N0IGluIEV4cHIuY29tcGlsZV9hbGdcIlxuXG5sZXQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gP29yaWdpbiBjb250YWN0X21hcCBkb21haW5cbiAgICAoYWxnLCBwb3MpID1cbiAgbWF0Y2hcbiAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCB0b2tlbmlmeSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biAoYWxnX2V4cHIsIGlkKSAoZG9tYWluLCBvdXQpIC0+XG4gICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAoYWxnLCBpZCkgOjogb3V0KVxuICAgIGwgKGRvbWFpbiwgW10pXG5cbigqIHRyYW5zZm9ybSBhbiBMS2FwcGEgcnVsZSBpbnRvIGEgUHJpbWl0aXZlcyBydWxlICopXG5sZXQgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZG9tYWluIH5zeW50YXhfcmVmIChydWxlLCBfKSA9XG4gIGxldCBkb21haW4nLCBkZWx0YV90b2tzID1cbiAgICB0b2tlbmlmeSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgcnVsZS5MS2FwcGEucl9kZWx0YV90b2tlbnNcbiAgaW5cbiAgKCogbGV0IG9uZV9zaWRlIHN5bnRheF9yZWYgbGFiZWwgKGRvbWFpbixkZXBzX21hY2hpbmVyeSx1bmFyeV9jY3MsYWNjKVxuICAgICAgIHJhdGUgdW5hcnlfcmF0ZSBsaHMgcmhzIHJtIGFkZCA9KilcbiAgbGV0IG9yaWdpbiwgZGVwcyA9XG4gICAgbWF0Y2ggZGVwc19tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBOb25lXG4gICAgfCBTb21lIChvLCBkKSAtPiBTb21lIG8sIFNvbWUgZFxuICBpblxuICBsZXQgdW5hcnlfaW5mb3MgPVxuICAgIGxldCBjcnAgPVxuICAgICAgY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIHJ1bGUuTEthcHBhLnJfcmF0ZVxuICAgIGluXG4gICAgbWF0Y2ggcnVsZS5MS2FwcGEucl91bl9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZnVuIF8gLT4gY3JwLCBOb25lXG4gICAgfCBTb21lICgoKF8sIHBvcykgYXMgcmF0ZSksIGRpc3QpIC0+XG4gICAgICBsZXQgZGlzdCcgPVxuICAgICAgICBtYXRjaCBkaXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGQgLT5cbiAgICAgICAgICBsZXQgZCcsIF8gPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZCBpblxuICAgICAgICAgIFNvbWUgZCdcbiAgICAgIGluXG4gICAgICBsZXQgdW5yYXRlID0gY29tcGlsZV9wdXJlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIHJhdGUgaW5cbiAgICAgIGZ1biBjY3MgLT5cbiAgICAgICAgKG1hdGNoIEFycmF5Lmxlbmd0aCBjY3Mgd2l0aFxuICAgICAgICB8IDAgfCAxIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfdGV4dCBmXG4gICAgICAgICAgICAgICAgICBcIlVzZWxlc3MgbW9sZWN1bGFyIGFtYmlndWl0eSwgdGhlIHJ1bGVzIGlzIGFsd2F5cyBjb25zaWRlcmVkIFxcXG4gICAgICAgICAgICAgICAgICAgYXMgdW5hcnkuXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB1bnJhdGUsIE5vbmVcbiAgICAgICAgfCAyIC0+IGNycCwgU29tZSAodW5yYXRlLCBkaXN0JylcbiAgICAgICAgfCBuIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiVW5hcnkgcnVsZSBkb2VzIG5vdCBkZWFsIHdpdGggXCIgXiBzdHJpbmdfb2ZfaW50IG5cbiAgICAgICAgICAgICAgICAgXiBcIiBjb25uZWN0ZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgYnVpbGQgZGVwcyAob3JpZ2luLCBjY3MsIHN5bnRheCwgKG5lZywgcG9zKSkgPVxuICAgIGxldCBjY3MnID0gQXJyYXkubWFwIGZzdCBjY3MgaW5cbiAgICBsZXQgcmF0ZSwgdW5yYXRlID0gdW5hcnlfaW5mb3MgY2NzJyBpblxuICAgICggT3B0aW9uX3V0aWwubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgbWF0Y2ggb3JpZ2luIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBvIC0+IG9cbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcInVnbHkgRXZhbC5ydWxlX29mX2FzdFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeCcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5yYXRlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiB4XG4gICAgICAgICAgICB8IFNvbWUgKHVyLCBfKSAtPiBBbGdfZXhwci5hZGRfZGVwIHggb3JpZ2luIHVyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBBbGdfZXhwci5hZGRfZGVwIHgnIG9yaWdpbiByYXRlKVxuICAgICAgICBkZXBzLFxuICAgICAge1xuICAgICAgICBQcmltaXRpdmVzLnVuYXJ5X3JhdGUgPSB1bnJhdGU7XG4gICAgICAgIFByaW1pdGl2ZXMucmF0ZTtcbiAgICAgICAgUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyA9IGNjcyc7XG4gICAgICAgIFByaW1pdGl2ZXMucmVtb3ZlZCA9IG5lZztcbiAgICAgICAgUHJpbWl0aXZlcy5pbnNlcnRlZCA9IHBvcztcbiAgICAgICAgUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMgPSBkZWx0YV90b2tzO1xuICAgICAgICBQcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlID0gc3ludGF4X3JlZjtcbiAgICAgICAgUHJpbWl0aXZlcy5pbnN0YW50aWF0aW9ucyA9IHN5bnRheDtcbiAgICAgIH0gKVxuICBpblxuICBsZXQgcnVsZV9taXh0dXJlcywgKGRvbWFpbicsIG9yaWdpbicpID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZVxuICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nID9vcmlnaW4gcnVsZS5MS2FwcGEucl9taXhcbiAgICAgIHJ1bGUuTEthcHBhLnJfY3JlYXRlZFxuICBpblxuICBsZXQgZGVwc19hbGdzJywgcnVsZXNfbCA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIHIgKGRlcHNfYWxncywgb3V0KSAtPlxuICAgICAgICBsZXQgZGVwc19hbGdzJywgcicnID0gYnVpbGQgZGVwc19hbGdzIHIgaW5cbiAgICAgICAgZGVwc19hbGdzJywgcicnIDo6IG91dClcbiAgICAgIHJ1bGVfbWl4dHVyZXMgKGRlcHMsIFtdKVxuICBpblxuICAoIGRvbWFpbicsXG4gICAgKG1hdGNoIG9yaWdpbicgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG8gLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKCBvLFxuICAgICAgICAgIG1hdGNoIGRlcHNfYWxncycgd2l0aFxuICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJ1Z2x5IEV2YWwucnVsZV9vZl9hc3RcIiApKSxcbiAgICBydWxlc19sIClcblxubGV0IG9ic19vZl9yZXN1bHQgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2RlcHMgcmVzID1cbiAgbGV0IGRvbWFpbiwgb3V0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBjb250KSBhbGdfZXhwciAtPlxuICAgICAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICAgICAgaW5cbiAgICAgICAgZG9tYWluJywgYWxnX3BvcyA6OiBjb250KVxuICAgICAgKGRvbWFpbiwgW10pIHJlcy5vYnNlcnZhYmxlc1xuICBpblxuICBpZiBMaXN0LmV4aXN0cyAoQWxnX2V4cHIuaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lOmZhbHNlIGFsZ19kZXBzKSBvdXQgdGhlblxuICAgIGRvbWFpbiwgTGlzdC5yZXYgb3V0XG4gIGVsc2VcbiAgICAoIGRvbWFpbixcbiAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIpXG4gICAgICA6OiBMaXN0LnJldiBvdXQgKVxuXG5sZXQgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGV4ID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biBlbCAoZG9tYWluLCBvdXQpIC0+XG4gICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIHMgLT4gZG9tYWluLCBQcmltaXRpdmVzLlN0cl9wZXhwciBzIDo6IG91dFxuICAgICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciBhc3RfYWxnIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFzdF9hbGdcbiAgICAgICAgaW5cbiAgICAgICAgZG9tYWluJywgUHJpbWl0aXZlcy5BbGdfcGV4cHIgYWxnIDo6IG91dClcbiAgICBleCAoZG9tYWluLCBbXSlcblxubGV0IGNmbG93c19vZl9sYWJlbCB+ZGVidWdfbW9kZSBvcmlnaW4gfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gb25cbiAgICBhbGdzIHJ1bGVzIChsYWJlbCwgcG9zKSByZXZfZWZmZWN0cyA9XG4gIGxldCBhZGRzIHRlc3RzIGwgeCA9XG4gICAgaWYgb24gdGhlblxuICAgICAgUHJpbWl0aXZlcy5DRkxPVyAoU29tZSBsYWJlbCwgeCwgdGVzdHMpIDo6IGxcbiAgICBlbHNlXG4gICAgICBQcmltaXRpdmVzLkNGTE9XT0ZGIChTb21lIGxhYmVsLCB4KSA6OiBsXG4gIGluXG4gIGxldCBtaXggPVxuICAgIHRyeVxuICAgICAgbGV0IF8sIChydWxlLCBfKSA9XG4gICAgICAgIExpc3QuZmluZFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lLCBfIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgKGwsIF8pLCBfIC0+IGwgPSBsYWJlbClcbiAgICAgICAgICBydWxlc1xuICAgICAgaW5cbiAgICAgIExLYXBwYS50b19tYWludGFpbmVkIHJ1bGUuTEthcHBhLnJfbWl4XG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBfLCAodmFyLCBfKSA9IExpc3QuZmluZCAoZnVuICgobCwgXyksIF8pIC0+IGwgPSBsYWJlbCkgYWxncyBpblxuICAgICAgICAgbWF0Y2ggdmFyIHdpdGhcbiAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IG1peFxuICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIF8gfCBBbGdfZXhwci5VTl9BTEdfT1AgX1xuICAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLlRPS0VOX0lEIF9cbiAgICAgICAgIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF9cbiAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICByYWlzZVxuICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAoIFwiTGFiZWwgJ1wiIF4gbGFiZWxcbiAgICAgICAgICAgICAgICBeIFwiJyBkb2VzIG5vdCByZWZlciB0byBhIG5vbiBhbWJpZ3VvdXMgS2FwcGEgZXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgaW5cbiAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGVcbiAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIH5vcmlnaW4gbWl4XG4gIGluXG4gICggZG9tYWluJyxcbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHggKHksIHQpIC0+IGFkZHMgdCB4IChBcnJheS5tYXAgZnN0IHkpKSByZXZfZWZmZWN0cyBjY3NcbiAgKVxuXG5sZXQgZWZmZWN0c19vZl9tb2RpZiB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCAoZG9tYWluLCByZXZfZWZmZWN0cykgPSBmdW5jdGlvblxuICB8IEFQUExZIChhbGdfZXhwciwgKChfLCBwb3MpIGFzIHBhY2spKSAtPlxuICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGFsZ19leHByXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJycsIF8sIGVsZW1fcnVsZXMgPVxuICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJ1xuICAgICAgICB+c3ludGF4X3JlZjowIHBhY2tcbiAgICBpblxuICAgIGxldCBlbGVtX3J1bGUgPVxuICAgICAgbWF0Y2ggZWxlbV9ydWxlcyB3aXRoXG4gICAgICB8IFsgciBdIC0+IHJcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiQW1iaWd1b3VzIHJ1bGUgaW4gbW9kaWZpdGlvbiBpcyBpbXBvc3NpYmxlXCIsIHBvcykpXG4gICAgaW5cbiAgICBkb21haW4nJywgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKGFsZ19wb3MsIGVsZW1fcnVsZSkgOjogcmV2X2VmZmVjdHNcbiAgfCBVUERBVEUgKChpLCBfKSwgYWxnX2V4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuVVBEQVRFIChpLCBhbGdfcG9zKSA6OiByZXZfZWZmZWN0c1xuICB8IFNOQVBTSE9UIChyYXcsIHBleHByKSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICAoKndoZW4gc3BlY2lhbGl6aW5nIHNuYXBzaG90cyB0byBwYXJ0aWN1bGFyIG1peHR1cmVzLCBhZGQgdmFyaWFibGVzIGJlbG93KilcbiAgICBkb21haW4nLCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIHBleHByJykgOjogcmV2X2VmZmVjdHNcbiAgfCBTVE9QIHBleHByIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuU1RPUCBwZXhwcicgOjogcmV2X2VmZmVjdHNcbiAgfCBDRkxPV0xBQkVMIChvbiwgbGFiKSAtPlxuICAgIGNmbG93c19vZl9sYWJlbCB+ZGVidWdfbW9kZSBvcmlnaW4gfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gb25cbiAgICAgIGFzdF9hbGdzIGFzdF9ydWxlcyBsYWIgcmV2X2VmZmVjdHNcbiAgfCBDRkxPV01JWCAob24sIChhc3QsIF8pKSAtPlxuICAgIGxldCBhZGRzIHRlc3RzIGwgeCA9XG4gICAgICBpZiBvbiB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuQ0ZMT1cgKE5vbmUsIHgsIHRlc3RzKSA6OiBsXG4gICAgICBlbHNlXG4gICAgICAgIFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKE5vbmUsIHgpIDo6IGxcbiAgICBpblxuICAgIGxldCBkb21haW4nLCBjY3MgPVxuICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmUgfmRlYnVnX21vZGVcbiAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gfm9yaWdpbiBhc3RcbiAgICBpblxuICAgICggZG9tYWluJyxcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpXG4gICAgICAgIHJldl9lZmZlY3RzIGNjcyApXG4gIHwgRElOIChyZWwsIHBleHByKSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBkb21haW4nLCBQcmltaXRpdmVzLkRJTiAocmVsLCBwZXhwcicpIDo6IHJldl9lZmZlY3RzXG4gIHwgRElOT0ZGIHBleHByIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuRElOT0ZGIHBleHByJyA6OiByZXZfZWZmZWN0c1xuICB8IEFzdC5QUklOVCAocGV4cHIsIHByaW50KSAtPlxuICAgIGxldCBkb21haW4nLCBwZXhwcicgPVxuICAgICAgY29tcGlsZV9wcmludF9leHByIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHBleHByXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJycsIHByaW50JyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nIHByaW50XG4gICAgaW5cbiAgICBkb21haW4nJywgUHJpbWl0aXZlcy5QUklOVCAocGV4cHInLCBwcmludCcpIDo6IHJldl9lZmZlY3RzXG4gIHwgUExPVEVOVFJZIC0+IGRvbWFpbiwgUHJpbWl0aXZlcy5QTE9URU5UUlkgOjogcmV2X2VmZmVjdHNcbiAgfCBTUEVDSUVTX09GIChvbiwgcGV4cHIsIChhc3QsIHBvcykpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGxldCBhZGRzIHRlc3RzIGwgeCA9XG4gICAgICBpZiBvbiB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuU1BFQ0lFUyAocGV4cHInLCB4LCB0ZXN0cykgOjogbFxuICAgICAgZWxzZVxuICAgICAgICBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIHBleHByJyA6OiBsXG4gICAgaW5cbiAgICBsZXQgZG9tYWluJycsIGNjcyA9XG4gICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgfm9yaWdpbiBhc3RcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoYXJyLCBfKSAtPlxuICAgICAgICAgIGlmIEFycmF5Lmxlbmd0aCBhcnIgPiAxIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJTUEVDSUVTX09GIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gb25lIGNvbm5lY3RlZCBjb21wb25lbnRcIixcbiAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgIGNjc1xuICAgIGluXG4gICAgKCBkb21haW4nJyxcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpXG4gICAgICAgIHJldl9lZmZlY3RzIGNjcyApXG5cbmxldCBlZmZlY3RzX29mX21vZGlmcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gbCA9XG4gIGxldCBkb21haW4nLCByZXZfZWZmZWN0cyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChlZmZlY3RzX29mX21vZGlmIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXApXG4gICAgICAoZG9tYWluLCBbXSkgbFxuICBpblxuICBkb21haW4nLCBMaXN0LnJldiByZXZfZWZmZWN0c1xuXG5sZXQgY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrID1cbiAgZWZmZWN0c19vZl9tb2RpZnMgW10gW10gKE9wZXJhdG9yLk1PRElGICgtMSkpXG5cbigqIGludGVydmVudGlvbnMgd2l0aG91dCBwcmUgYW5kIHBvc3QsIGJ1dCB3aXRoIGFsYXJtIGFyZSBub3QgYXBwbGllZFxuICAgYXQgaW5pdGlhbGlzYXRpb24gKilcbmxldCBwZXJ0X25vdF9pbml0IG92ZXJ3cml0ZV90MCB4IHkgeiA9XG4gIG1hdGNoIHgsIHksIHogd2l0aFxuICB8IF8sIFNvbWUgcCwgXyAtPiBwXG4gIHwgU29tZSBfLCBOb25lLCBOb25lIC0+XG4gICAgbGV0IHRfdmFyID1cbiAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIpXG4gICAgaW5cbiAgICBsZXQgdDAgPSBPcHRpb25fdXRpbC5mb2xkIChmdW4gXyB4IC0+IE5ici5GIHgpIE5ici56ZXJvIG92ZXJ3cml0ZV90MCBpblxuICAgIGxldCBpbml0X3QgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgdDApIGluXG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTVBBUkVfT1AgKE9wZXJhdG9yLkdSRUFURVIsIHRfdmFyLCBpbml0X3QpKVxuICB8IE5vbmUsIE5vbmUsIE5vbmUgfCBTb21lIF8sIE5vbmUsIFNvbWUgXyB8IE5vbmUsIE5vbmUsIFNvbWUgXyAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLlRSVUVcblxubGV0IHBlcnRfb2ZfcmVzdWx0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9vdmVyd3JpdGVfdDAgYXN0X2FsZ3MgYXN0X3J1bGVzXG4gICAgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcmVzID1cbiAgbGV0IGRvbWFpbiwgb3V0X2FsZ19kZXBzLCBfLCBscGVydCwgdHJhY2tpbmdfZW5hYmxlZCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgYWxnX2RlcHMsIHBfaWQsIGxwZXJ0LCB0cmFja2luZ19lbmFibGVkKVxuICAgICAgICAgICAoKGFsYXJtLCBwcmVfZXhwciwgbW9kaWZfZXhwcl9saXN0LCBvcHRfcG9zdCksIHBvcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhbGFybSB3aXRoXG4gICAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAgIGlmIE5ici5jb21wYXJlIG4gTmJyLnplcm8gPD0gMCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJhbGFybSBoYXMgdG8gYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuMFwiLCBwb3MpKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgb3JpZ2luID0gT3BlcmF0b3IuTU9ESUYgcF9pZCBpblxuICAgICAgICBsZXQgcHJlX2V4cHInID0gcGVydF9ub3RfaW5pdCBvdmVyd3JpdGVfdDAgYWxhcm0gcHJlX2V4cHIgb3B0X3Bvc3QgaW5cbiAgICAgICAgbGV0IGRvbWFpbicsIHByZSA9XG4gICAgICAgICAgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gfm9yaWdpbiBjb250YWN0X21hcCBkb21haW5cbiAgICAgICAgICAgIHByZV9leHByJ1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWxnX2RlcHMnID1cbiAgICAgICAgICBtYXRjaCBhbGFybSB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gYWxnX2RlcHNcbiAgICAgICAgICB8IE5vbmUgLT4gQWxnX2V4cHIuYWRkX2RlcF9ib29sIGFsZ19kZXBzIG9yaWdpbiBwcmVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRvbWFpbiwgZWZmZWN0cyA9XG4gICAgICAgICAgZWZmZWN0c19vZl9tb2RpZnMgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgICAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nIG1vZGlmX2V4cHJfbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluLCBvcHQgPVxuICAgICAgICAgIG1hdGNoIG9wdF9wb3N0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZG9tYWluLCBOb25lXG4gICAgICAgICAgfCBTb21lIHBvc3RfZXhwciAtPlxuICAgICAgICAgICAgbGV0IGRvbWFpbicsIChwb3N0LCBwb3N0X3BvcykgPVxuICAgICAgICAgICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW5cbiAgICAgICAgICAgICAgICBwb3N0X2V4cHJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkb21haW4nLCBTb21lIChwb3N0LCBwb3N0X3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhc190cmFja2luZyA9XG4gICAgICAgICAgdHJhY2tpbmdfZW5hYmxlZFxuICAgICAgICAgIHx8IExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QUklOVCBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5VUERBVEUgXyB8IFByaW1pdGl2ZXMuU05BUFNIT1QgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuRElOIF8gfCBQcmltaXRpdmVzLkRJTk9GRiBfIHwgUHJpbWl0aXZlcy5QTE9URU5UUllcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlNUT1AgXyB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIF8gLT5cbiAgICAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgICAgIGVmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5lZWRzX2JhY2t0cmFjayA9XG4gICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuVVBEQVRFIF8gfCBQcmltaXRpdmVzLlNUT1AgXyB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFIF9cbiAgICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgX1xuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgXyB8IFByaW1pdGl2ZXMuUFJJTlQgX1xuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgXyB8IFByaW1pdGl2ZXMuRElOIF8gfCBQcmltaXRpdmVzLkRJTk9GRiBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgfCBQcmltaXRpdmVzLlNQRUNJRVNfT0ZGIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZSlcbiAgICAgICAgICAgIGVmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlcGVhdCA9XG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0VcbiAgICAgICAgICB8IFNvbWUgcCAtPiBwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwZXJ0ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBQcmltaXRpdmVzLmFsYXJtO1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5wcmVjb25kaXRpb24gPSBwcmU7XG4gICAgICAgICAgICBQcmltaXRpdmVzLmVmZmVjdCA9IGVmZmVjdHM7XG4gICAgICAgICAgICBQcmltaXRpdmVzLnJlcGVhdDtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgZG9tYWluLCBhbGdfZGVwcycsIHN1Y2MgcF9pZCwgcGVydCA6OiBscGVydCwgaGFzX3RyYWNraW5nKVxuICAgICAgKGRvbWFpbiwgYWxnX2RlcHMsIDAsIFtdLCBmYWxzZSlcbiAgICAgIHJlcy5wZXJ0dXJiYXRpb25zXG4gIGluXG4gIGRvbWFpbiwgb3V0X2FsZ19kZXBzLCBMaXN0LnJldiBscGVydCwgdHJhY2tpbmdfZW5hYmxlZFxuXG5sZXQgY29tcGlsZV9pbml0cyB+ZGVidWdfbW9kZSB+d2FybmluZyA/cmVzY2FsZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGVudlxuICAgIGluaXRzID1cbiAgbGV0IGluaXRfbCwgXyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAoZnVuIChhbGcsIGluaXRfdCkgcHJlZW52IC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgQWxnX2V4cHIuaGFzX21peCB+dmFyX2RlY2xzOihNb2RlbC5nZXRfYWxnIGVudikgKGZzdCBhbGcpIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJJbml0aWFsIHF1YW50aXRpZXMgY2Fubm90IGRlcGVuZCBvbiBhIG51bWJlciBvZiBvY2N1cmVuY2VcIixcbiAgICAgICAgICAgICAgICAgICBzbmQgYWxnICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhbGcgPVxuICAgICAgICAgIG1hdGNoIHJlc2NhbGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhbGdcbiAgICAgICAgICB8IFNvbWUgciAtPiBBbGdfZXhwci5tdWx0IGFsZyAoQWxnX2V4cHIuZmxvYXQgcilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggaW5pdF90IHdpdGhcbiAgICAgICAgfCBJTklUX01JWCAocmF3X21peCwgbWl4X3BvcykgLT5cbiAgICAgICAgICBsZXQgc2lncyA9IE1vZGVsLnNpZ25hdHVyZXMgZW52IGluXG4gICAgICAgICAgbGV0IHByZWVudicsIGFsZycgPVxuICAgICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYgYWxnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmFrZV9ydWxlID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTEthcHBhLnJfbWl4ID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2NyZWF0ZWQgPSByYXdfbWl4O1xuICAgICAgICAgICAgICBMS2FwcGEucl9kZWx0YV90b2tlbnMgPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JycsIHN0YXRlJyA9XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgICAgICAgICAgIHByZWVudicgfnN5bnRheF9yZWY6MCAoZmFrZV9ydWxlLCBtaXhfcG9zKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgICAgKGZzdCBhbGcnLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICAgIHwgXywgXywgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGYgXCJpbml0aWFsIG1peHR1cmUgJWEgaXMgcGFydGlhbGx5IGRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAoUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pbml0aWFsX2NvbW1hOmZhbHNlIH5zaWdzKVxuICAgICAgICAgICAgICAgICAgICAgICByYXdfbWl4LFxuICAgICAgICAgICAgICAgICAgICAgbWl4X3BvcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJlZW52JycsIHN0YXRlJ1xuICAgICAgICB8IElOSVRfVE9LIHRrX2wgLT5cbiAgICAgICAgICBsZXQgcl9kZWx0YV90b2tlbnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGZ1biAodGtfaWQsIF9wb3NfdGspIC0+IGFsZywgdGtfaWQpIHRrX2xcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9kZWx0YV90b2tlbnM7XG4gICAgICAgICAgICAgIExLYXBwYS5yX3JhdGUgPSBBbGdfZXhwci5jb25zdCBOYnIuemVybztcbiAgICAgICAgICAgICAgTEthcHBhLnJfdW5fcmF0ZSA9IE5vbmU7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2VkaXRfc3R5bGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICBwcmVlbnYgfnN5bnRheF9yZWY6MFxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IGZha2VfcnVsZSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZG9tYWluJycsIF8sIFsgY29tcGlsZWRfcnVsZSBdIC0+XG4gICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgTmJyLm9uZSwgY29tcGlsZWRfcnVsZSksIGRvbWFpbicnXG4gICAgICAgICAgfCBfLCBfLCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICBpbml0c1xuICAgICAgKFBhdHRlcm4uUHJlRW52LmVtcHR5IChNb2RlbC5zaWduYXR1cmVzIGVudikpXG4gIGluXG4gIGluaXRfbFxuXG5sZXQgY29tcGlsZV9hbGdfdmFycyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB2YXJzID1cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0X21hcGlcbiAgICAoZnVuIGkgZG9tYWluIChsYmxfcG9zLCBhc3QpIC0+XG4gICAgICBsZXQgZG9tYWluJywgYWxnID1cbiAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiB+b3JpZ2luOihPcGVyYXRvci5BTEcgaSlcbiAgICAgICAgICBjb250YWN0X21hcCBkb21haW4gYXN0XG4gICAgICBpblxuICAgICAgZG9tYWluJywgKGxibF9wb3MsIGFsZykpXG4gICAgZG9tYWluIChBcnJheS5vZl9saXN0IHZhcnMpXG5cbmxldCBjb21waWxlX3J1bGVzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICBkb21haW4gcnVsZXMgPVxuICBtYXRjaFxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIHN5bnRheF9yZWYsIGRlcHNfbWFjaGluZXJ5LCBhY2MpIChfLCBydWxlKSAtPlxuICAgICAgICBsZXQgZG9tYWluJywgb3JpZ2luJywgY3IgPVxuICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/ZGVwc19tYWNoaW5lcnkgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgICAgICAgY29udGFjdF9tYXAgZG9tYWluIH5zeW50YXhfcmVmIHJ1bGVcbiAgICAgICAgaW5cbiAgICAgICAgZG9tYWluJywgc3VjYyBzeW50YXhfcmVmLCBvcmlnaW4nLCBMaXN0LmFwcGVuZCBjciBhY2MpXG4gICAgICAoZG9tYWluLCAxLCBTb21lIChPcGVyYXRvci5SVUxFIDAsIGFsZ19kZXBzKSwgW10pXG4gICAgICBydWxlc1xuICB3aXRoXG4gIHwgZmRvbWFpbiwgXywgU29tZSAoXywgZmFsZ19kZXBzKSwgZnJ1bGVzIC0+XG4gICAgZmRvbWFpbiwgZmFsZ19kZXBzLCBMaXN0LnJldiBmcnVsZXNcbiAgfCBfLCBfLCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiVGhlIG9yaWdpbiBvZiBFdmFsLmNvbXBpbGVfcnVsZXMgaGFzIGJlZW4gbG9zdFwiXG5cbigqbGV0IHRyYW5zbGF0ZV9jb250YWN0X21hcCBzaWdzIGthc2FfY29udGFjdF9tYXAgPVxuICAgIGxldCB3ZGwgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBpblxuICAgIGxldCBzb2wgPSBBcnJheS5pbml0XG4gICAgICAgIChTaWduYXR1cmUuc2l6ZSBzaWdzKVxuICAgICAgICAoZnVuIGkgLT4gQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgaSkgKFtdLFtdKSkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5TdHJpbmdNYXAuaXRlclxuICAgICAgICAoZnVuIGFnZW50X25hbWUgc2l0ZXMgLT5cbiAgICAgICAgICAgbGV0IGlkX2EgPSBTaWduYXR1cmUubnVtX29mX2FnZW50ICh3ZGwgYWdlbnRfbmFtZSkgc2lncyBpblxuICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgKGZ1biBzaXRlX25hbWUgKHN0YXRlcyxsaW5rcykgLT5cbiAgICAgICAgICAgICAgICBsZXQgaWRfcyA9XG4gICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGVcbiAgICAgICAgICAgICAgICAgICAgfmFnZW50X25hbWUgKHdkbCBzaXRlX25hbWUpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkgaW5cbiAgICAgICAgICAgICAgICBzb2wuKGlkX2EpLihpZF9zKSA8LVxuICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIHN0YXRlIC0+IFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZF9zICh3ZGwgc3RhdGUpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkpXG4gICAgICAgICAgICAgICAgICAgICBzdGF0ZXMsXG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWUsYikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZF9hID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9hZ2VudCAod2RsIGFnZW50X25hbWUpIHNpZ3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZF9iID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmFnZW50X25hbWUgKHdkbCBiKSAoU2lnbmF0dXJlLmdldCBzaWdzIGlkX2EpIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoaWRfYSxpZF9iKSlcbiAgICAgICAgICAgICAgICAgICAgIGxpbmtzKSkgc2l0ZXMpIGthc2FfY29udGFjdF9tYXAgaW5cbiAgICBzb2xcblxuICBsZXQgaW5pdF9rYXNhIGNhbGxlZF9mcm9tIHNpZ3MgcmVzdWx0ID1cbiAgICBsZXQgcHJlX2thc2Ffc3RhdGUgPSBFeHBvcnRfdG9fS2FTaW0uaW5pdCB+Y29tcGlsOnJlc3VsdCB+Y2FsbGVkX2Zyb20gKCkgaW5cbiAgICBsZXQga2FzYV9zdGF0ZSxjb250YWN0X21hcCA9IEV4cG9ydF90b19LYVNpbS5nZXRfY29udGFjdF9tYXAgcHJlX2thc2Ffc3RhdGUgaW5cbiAgICBsZXQgKCkgPSBFeHBvcnRfdG9fS2FTaW0uZHVtcF9lcnJvcnNfbGlnaHQga2FzYV9zdGF0ZSBpblxuICAgIHRyYW5zbGF0ZV9jb250YWN0X21hcCBzaWdzIGNvbnRhY3RfbWFwLFxuICAgIEV4cG9ydF90b19LYVNpbS5mbHVzaF9lcnJvcnMga2FzYV9zdGF0ZVxuKilcbmxldCBjb21waWxlIH5vdXRwdXRzIH5wYXVzZSB+cmV0dXJuIH5zaGFyaW5nIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICA/b3ZlcndyaXRlX2luaXQgP292ZXJ3cml0ZV90MCA/cmVzY2FsZV9pbml0IHNpZ3NfbmQgdGtfbmQgY29udGFjdF9tYXAgcmVzdWx0XG4gICAgPVxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IG91dHB1dHMgKERhdGEuV2FybmluZyAoU29tZSBwb3MsIG1zZykpIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiKyBCdWlsZGluZyBpbml0aWFsIHNpbXVsYXRpb24gY29uZGl0aW9ucy4uLlwiKTtcbiAgbGV0IHByZWVudiA9IFBhdHRlcm4uUHJlRW52LmVtcHR5IHNpZ3NfbmQgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLXZhcmlhYmxlIGRlY2xhcmF0aW9uc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19hID1cbiAgICBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52XG4gICAgICByZXN1bHQuQXN0LnZhcmlhYmxlc1xuICBpblxuICBsZXQgYWxnX25kID0gTmFtZWREZWNscy5jcmVhdGUgYWxnX2EgaW5cbiAgbGV0IGFsZ19kZXBzID0gQWxnX2V4cHIuc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0a19uZCBhbGdfYSBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtcnVsZXNcIik7XG4gIGxldCBwcmVlbnYnLCBhbGdfZGVwcycsIGNvbXBpbGVkX3J1bGVzID1cbiAgICBjb21waWxlX3J1bGVzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFsZ19kZXBzIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgIHByZWVudicgcmVzdWx0LkFzdC5ydWxlc1xuICBpblxuICBsZXQgcnVsZV9uZCA9IEFycmF5Lm9mX2xpc3QgY29tcGlsZWRfcnVsZXMgaW5cblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLWludGVydmVudGlvbnNcIik7XG4gIGxldCBwcmVlbnYsIGFsZ19kZXBzJycsIHBlcnQsIGhhc190cmFja2luZyA9XG4gICAgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCByZXN1bHQudmFyaWFibGVzXG4gICAgICByZXN1bHQucnVsZXMgYWxnX2RlcHMnIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgcHJlZW52JyByZXN1bHRcbiAgaW5cblxuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCJcXHQgLW9ic2VydmFibGVzXCIpO1xuICBsZXQgcHJlZW52LCBvYnMgPVxuICAgIG9ic19vZl9yZXN1bHQgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYgYWxnX2RlcHNcbiAgICAgIHJlc3VsdFxuICBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdXBkYXRlX2RvbWFpbiBjb25zdHJ1Y3Rpb25cIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgZG9tYWluLCBkb21fc3RhdHMgPVxuICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgcHJlZW52IGNvbnRhY3RfbWFwXG4gIGluXG4gIG91dHB1dHNcbiAgICAoRGF0YS5Mb2dcbiAgICAgICAoXCJcXHQgXCJcbiAgICAgICBeIHN0cmluZ19vZl9pbnQgZG9tX3N0YXRzLlBhdHRlcm4uUHJlRW52LnN0YXRfbm9kZXNcbiAgICAgICBeIFwiIChzdWIpb2JzZXJ2YWJsZXMgXCJcbiAgICAgICBeIHN0cmluZ19vZl9pbnQgZG9tX3N0YXRzLlBhdHRlcm4uUHJlRW52LnN0YXRfbmF2X3N0ZXBzXG4gICAgICAgXiBcIiBuYXZpZ2F0aW9uIHN0ZXBzXCIpKTtcblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5pbml0IH5maWxlbmFtZXM6cmVzdWx0LmZpbGVuYW1lcyBkb21haW4gdGtfbmQgYWxnX25kIGFsZ19kZXBzJydcbiAgICAgIChBcnJheS5vZl9saXN0IHJlc3VsdC5ydWxlcywgcnVsZV9uZClcbiAgICAgIChBcnJheS5vZl9saXN0IG9icykgKEFycmF5Lm9mX2xpc3QgcGVydCkgY29udGFjdF9tYXBcbiAgaW5cblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtaW5pdGlhbCBjb25kaXRpb25zXCIpO1xuICBwYXVzZSBAQCBmdW4gKCkgLT5cbiAgbGV0IGluaXRfbCA9XG4gICAgY29tcGlsZV9pbml0cyB+ZGVidWdfbW9kZSB+d2FybmluZyA/cmVzY2FsZTpyZXNjYWxlX2luaXQgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgY29udGFjdF9tYXAgZW52XG4gICAgICAoT3B0aW9uX3V0aWwudW5zb21lIHJlc3VsdC5Bc3QuaW5pdCBvdmVyd3JpdGVfaW5pdClcbiAgaW5cbiAgcmV0dXJuIChlbnYsIGhhc190cmFja2luZywgaW5pdF9sKVxuXG5sZXQgYnVpbGRfaW5pdGlhbF9zdGF0ZSB+YmluZCB+cmV0dXJuIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGNvdW50ZXIgZW52XG4gICAgfndpdGhfdHJhY2UgfndpdGhfZGVsdGFfYWN0aXZpdGllcyByYW5kb21fc3RhdGUgaW5pdF9sID1cbiAgbGV0IGdyYXBoMCA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5lbXB0eSB+b3V0cHV0cyB+d2l0aF90cmFjZSByYW5kb21fc3RhdGUgZW52IGNvdW50ZXJcbiAgaW5cbiAgbGV0IHN0YXRlMCA9IFN0YXRlX2ludGVycHJldGVyLmVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgY291bnRlciBlbnYgaW5cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuaW5pdGlhbGl6ZSB+YmluZCB+cmV0dXJuIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyXG4gICAgZ3JhcGgwIHN0YXRlMCBpbml0X2xcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5zaGFyaW5nIH5zeW50YXhfdmVyc2lvblxuICAgIGNvbnRhY3RfbWFwIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGUgPVxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IG91dHB1dHMgKERhdGEuV2FybmluZyAoU29tZSBwb3MsIG1zZykpIGluXG4gIGxldCBjY19wcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5vZl9lbnYgKE1vZGVsLmRvbWFpbiBlbnYpIGluXG4gIGxldCBjb250YWN0X21hcCcgPSBBcnJheS5tYXAgQXJyYXkuY29weSBjb250YWN0X21hcCBpblxuICBsZXQgZScsIF8gPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKExLYXBwYV9jb21waWxlci5tb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLnRva2Vuc19maW5kZXIgZW52KVxuICAgICAgICAgKE1vZGVsLmFsZ3NfZmluZGVyIGVudikgY29udGFjdF9tYXAnKVxuICAgICAgZSBbXVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmXG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgIChmdW4gbiAtPlxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBzIGIgeCAtPiBiIHx8IHggIT0gY29udGFjdF9tYXAuKG4pLihzKSkpXG4gICAgICAgIGZhbHNlIGNvbnRhY3RfbWFwJ1xuICAgIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkNyZWF0aW5nIG5ldyBsaW5rIHR5cGUgaXMgZm9yYmlkZGVuXCIpKVxuICBpblxuICBsZXQgY2NfcHJlZW52JywgZScnID1cbiAgICBFdmFsLmNvbXBpbGVfbW9kaWZpY2F0aW9uc19ub190cmFjayB+ZGVidWdfbW9kZSB+d2FybmluZ1xuICAgICAgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19wcmVlbnYgZSdcbiAgaW5cbiAgbGV0IGVudicsIGdyYXBoJyA9XG4gICAgaWYgY2NfcHJlZW52ID09IGNjX3ByZWVudicgdGhlblxuICAgICAgZW52LCBncmFwaFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGZlbnYsIF8gPVxuICAgICAgICBQYXR0ZXJuLmZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGNjX3ByZWVudicgY29udGFjdF9tYXBcbiAgICAgIGluXG4gICAgICAoIE1vZGVsLm5ld19kb21haW4gZmVudiBlbnYsXG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBmZW52KVxuICAgICAgICAgIGdyYXBoXG4gICAgICAgICAgKFByaW1pdGl2ZXMuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tb2RpZmljYXRpb25zIGUnJykgKVxuICAgIClcbiAgaW5cbiAgbGV0IG9zdG9wLCBvZ3JhcGgsIG9zdGF0ZSwgXyA9XG4gICAgU3RhdGVfaW50ZXJwcmV0ZXIuZG9fbW9kaWZpY2F0aW9ucyB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYnIGNvdW50ZXIgZ3JhcGgnXG4gICAgICBzdGF0ZSBlJydcbiAgaW5cbiAgZScnLCAoZW52JywgKG9zdG9wLCBvZ3JhcGgsIG9zdGF0ZSkpXG5cbmxldCBnZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGUgfm91dHB1dHMgfnNoYXJpbmcgfnN5bnRheF92ZXJzaW9uIGNvbnRhY3RfbWFwXG4gICAgZW52IGdyYXBoIGIgPVxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IG91dHB1dHMgKERhdGEuV2FybmluZyAoU29tZSBwb3MsIG1zZykpIGluXG4gIGxldCBjY19wcmVlbnYgPSBQYXR0ZXJuLlByZUVudi5vZl9lbnYgKE1vZGVsLmRvbWFpbiBlbnYpIGluXG4gIGxldCBiJyA9XG4gICAgTEthcHBhX2NvbXBpbGVyLmJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpIChNb2RlbC50b2tlbnNfZmluZGVyIGVudikgKE1vZGVsLmFsZ3NfZmluZGVyIGVudikgYlxuICBpblxuICBsZXQgY2NfcHJlZW52JywgKChiJycsIHBvc19iJycpIGFzIGJwb3MnJykgPVxuICAgIEV2YWwuY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfcHJlZW52XG4gICAgICBiJ1xuICBpblxuICBsZXQgZW52JywgZ3JhcGgnID1cbiAgICBpZiBjY19wcmVlbnYgPT0gY2NfcHJlZW52JyB0aGVuXG4gICAgICBlbnYsIGdyYXBoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZmVudiwgXyA9XG4gICAgICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgY2NfcHJlZW52JyBjb250YWN0X21hcFxuICAgICAgaW5cbiAgICAgICggTW9kZWwubmV3X2RvbWFpbiBmZW52IGVudixcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGZlbnYpXG4gICAgICAgICAgZ3JhcGhcbiAgICAgICAgICAoUHJpbWl0aXZlcy5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgYnBvcycnKSApXG4gICAgKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIEFsZ19leHByLmlzX2VxdWFsaXR5X3Rlc3RfdGltZSAoTW9kZWwuYWxsX2RlcGVuZGVuY2llcyBlbnYpIGInJyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJbVF0gY2FuIG9ubHkgYmUgdXNlZCBpbiBpbmVxdWFsaXRpZXNcIiwgcG9zX2InJykpXG4gIGluXG4gIGVudicsIGdyYXBoJywgYicnXG5cbmxldCBmaW5kX2FsbF9lbWJlZGRpbmdzIH5kZWJ1Z19tb2RlIGVudiB0ciA9XG4gIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gIGxldCBkdW1teV9pbnN0YW5jZXMgPSBJbnN0YW5jZXMuZW1wdHkgZW52IGluXG4gIGxldCBncmFwaCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChSdWxlX2ludGVycHJldGVyLmFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlOk5vbmUgZHVtbXlfaW5zdGFuY2VzKVxuICAgICAgKEVkZ2VzLmVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzOmZhbHNlKVxuICAgICAgdHJcbiAgaW5cbiAgbGV0IG91dCwgXyA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5vYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIHRyXG4gIGluXG4gIExpc3QubWFwXG4gICAgKGZ1biAocCwgKHJvb3QsIF8pKSAtPlxuICAgICAgcCwgTWF0Y2hpbmcucmVjb25zdHJ1Y3RfcmVuYW1pbmcgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIHAgcm9vdClcbiAgICBvdXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKilcbigqIEpTb24gbGFiZWxzKilcbigqKioqKioqKioqKioqKilcblxubGV0IGFnZW50ID0gXCJhZ2VudCBuYW1lXCJcbmxldCBjb250YWN0bWFwID0gXCJjb250YWN0IG1hcFwiXG5sZXQgYWNjdXJhY3lfc3RyaW5nID0gXCJhY2N1cmFjeVwiXG5sZXQgZGVhZF9ydWxlcyA9IFwiZGVhZCBydWxlc1wiXG5sZXQgZGVhZF9hZ2VudHMgPSBcImRlYWQgYWdlbnRzXCJcbmxldCBtYXAgPSBcIm1hcFwiXG5sZXQgaW50ZXJmYWNlID0gXCJpbnRlcmZhY2VcIlxubGV0IHNpdGUgPSBcInNpdGUgbmFtZVwiXG5sZXQgc3RhdGVzbGlzdCA9IFwic3RhdGVzIGxpc3RcIlxubGV0IHNpdGVuYW1lID0gXCJzaXRlX25hbWVcIlxubGV0IHNpdGV0eXBlID0gXCJzaXRlX3R5cGVcIlxubGV0IHNpdGVsaW5rcyA9IFwicG9ydF9saW5rc1wiXG5sZXQgc2l0ZXN0YXRlcyA9IFwicG9ydF9zdGF0ZXNcIlxubGV0IHNpdGVub2RlbmFtZSA9IFwibm9kZV90eXBlXCJcbmxldCBzaXRlbm9kZWlkID0gXCJub2RlX2lkXCJcbmxldCBzaXRlbm9kZXNpdGVzID0gXCJub2RlX3NpdGVzXCJcbmxldCBoeXAgPSBcInNpdGUgZ3JhcGhcIlxubGV0IHJlZmluZW1lbnQgPSBcInNpdGUgZ3JhcGggbGlzdFwiXG5sZXQgZG9tYWluX25hbWUgPSBcImRvbWFpbiBuYW1lXCJcbmxldCByZWZpbmVtZW50c19saXN0ID0gXCJyZWZpbmVtZW50cyBsaXN0XCJcbmxldCByZWZpbmVtZW50X2xlbW1hcyA9IFwicmVmaW5lbWVudCBsZW1tYXNcIlxubGV0IHJ1bGVfaWQgPSBcImlkXCJcbmxldCBhZ2VudF9pZCA9IFwiaWRcIlxubGV0IGxhYmVsID0gXCJsYWJlbFwiXG5sZXQgYXN0ID0gXCJhc3RcIlxubGV0IHBvc2l0aW9uID0gXCJsb2NhdGlvblwiXG5sZXQgcG9zaXRpb25fbGlzdCA9IFwibG9jYXRpb24gbGlzdFwiXG5sZXQgdmFyaWFibGUgPSBcInZhcmlhYmxlXCJcbmxldCBydWxlID0gXCJydWxlXCJcbmxldCBkaXJlY3QgPSBcImRpcmVjdFwiXG5sZXQgc2lkZV9lZmZlY3QgPSBcInNpZGUgZWZmZWN0XCJcbmxldCBzb3VyY2UgPSBcInNvdXJjZVwiXG5sZXQgdGFyZ2V0X21hcCA9IFwidGFyZ2V0IG1hcFwiXG5sZXQgdGFyZ2V0ID0gXCJ0YXJnZXRcIlxubGV0IGxvY2F0aW9uX3BhaXJfbGlzdCA9IFwibG9jYXRpb24gcGFpciBsaXN0XCJcbmxldCByaHMgPSBcIlJIU1wiXG5sZXQgbGhzID0gXCJMSFNcIlxubGV0IGluZmx1ZW5jZW1hcCA9IFwiaW5mbHVlbmNlIG1hcFwiXG5sZXQgbm9kZXNvZmluZmx1ZW5jZW1hcCA9IFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiXG5sZXQgd2FrZXVwID0gXCJ3YWtlLXVwIG1hcFwiXG5sZXQgaW5oaWJpdGlvbiA9IFwiaW5oaWJpdGlvbiBtYXBcIlxubGV0IG5vZGVzID0gXCJub2Rlc1wiXG5sZXQgdG90YWxfc3RyaW5nID0gXCJ0b3RhbFwiXG5sZXQgZndkX3N0cmluZyA9IFwiZndkXCJcbmxldCBid2Rfc3RyaW5nID0gXCJid2RcIlxubGV0IG9yaWdpbiA9IFwib3JpZ2luXCJcbmxldCBkaXJlY3Rpb24gPSBcImRpcmVjdGlvblwiXG5sZXQgcnVsZV9oaWRkZW4gPSBcImhpZGRlblwiXG5sZXQgc2NjID0gXCJzY2NcIlxubGV0IGFjY3VyYWN5X2NtID0gXCJhY2N1cmFjeV9jbVwiXG5sZXQgYWNjdXJhY3lfc2NjID0gXCJhY2N1cmFjeV9zY2NcIlxubGV0IGNvbnRhY3RtYXBzY2MgPSBcImNvbnRhY3QgbWFwIHNjY1wiXG5sZXQgY291bnRlciA9IFwiY291bnRlclwiXG5sZXQgaW5mID0gXCJtaW5cIlxubGV0IHN1cCA9IFwibWF4XCJcbmxldCBrZXkgPSBcImtleVwiXG5sZXQgbG9jYWxpdHkgPSBcImxvY2FsaXR5XCJcblxuKCoqKioqKioqKioqKioqKioqKiopXG4oKiBBY2N1cmFjeSBsZXZlbHMgKilcbigqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGFjY3VyYWN5X2xldmVsID0gTG93IHwgTWVkaXVtIHwgSGlnaCB8IEZ1bGxcblxubGV0IGFjY3VyYWN5X2xldmVscyA9IFsgTG93OyBNZWRpdW07IEhpZ2g7IEZ1bGwgXVxubGV0IGNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBIaWdoIF1cbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBNZWRpdW07IEhpZ2ggXVxubGV0IHJlZHVjdGlvbl9hY2N1cmFjeV9sZXZlbHMgPSBbIExvdzsgSGlnaCBdXG5cbmxldCBhY2N1cmFjeV90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTWVkaXVtIC0+IFwibWVkaXVtXCJcbiAgfCBIaWdoIC0+IFwiaGlnaFwiXG4gIHwgRnVsbCAtPiBcImZ1bGxcIlxuXG5sZXQgYWNjdXJhY3lfdG9fanNvbiB4ID0gSnNvblV0aWwub2Zfc3RyaW5nIChhY2N1cmFjeV90b19zdHJpbmcgeClcblxubGV0IGFjY3VyYWN5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJsb3dcIiAtPiBTb21lIExvd1xuICB8IFwibWVkaXVtXCIgLT4gU29tZSBNZWRpdW1cbiAgfCBcImhpZ2hcIiAtPiBTb21lIEhpZ2hcbiAgfCBcImZ1bGxcIiAtPiBTb21lIEZ1bGxcbiAgfCBfIC0+IE5vbmVcblxubGV0IGFjY3VyYWN5X29mX2pzb24ganNvbiA9XG4gIG1hdGNoIGFjY3VyYWN5X29mX3N0cmluZyAoSnNvblV0aWwudG9fc3RyaW5nIGpzb24pIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImFjY3VyYWN5IGxldmVsXCIsIGpzb24pKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQWNjdXJhY3lTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGFjY3VyYWN5X2xldmVsXG5cbiAgbGV0IGNvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IExvdywgTG93IC0+IDBcbiAgICB8IExvdywgXyAtPiAtMVxuICAgIHwgXywgTG93IC0+IDFcbiAgICB8IE1lZGl1bSwgTWVkaXVtIC0+IDBcbiAgICB8IE1lZGl1bSwgXyAtPiAtMVxuICAgIHwgXywgTWVkaXVtIC0+IDFcbiAgICB8IEhpZ2gsIEhpZ2ggLT4gMFxuICAgIHwgSGlnaCwgXyAtPiAtMVxuICAgIHwgXywgSGlnaCAtPiAxXG4gICAgfCBGdWxsLCBGdWxsIC0+IDBcblxuICBsZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgfCBGdWxsIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGdWxsXCJcbiAgICB8IEhpZ2ggLT4gRm9ybWF0LmZwcmludGYgZiBcIkhpZ2hcIlxuICAgIHwgTWVkaXVtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJNZWRpdW1cIlxuICAgIHwgTG93IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJMb3dcIlxuZW5kKVxuXG5tb2R1bGUgQWNjdXJhY3lNYXAgPSBBY2N1cmFjeVNldE1hcC5NYXBcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKilcbigqIENvbnRhY3QgbWFwICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvbnRhY3RfbWFwID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbmxldCBzaXRlX3R5cGVfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgVXNlcl9ncmFwaC5Db3VudGVyIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiY291bnRlclwiOyBgSW50IGkgXVxuICB8IFVzZXJfZ3JhcGguUG9ydCBwIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcInBvcnRcIjtcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKCBzaXRlbGlua3MsXG4gICAgICAgICAgICAgIG1hdGNoIHAuVXNlcl9ncmFwaC5wb3J0X2xpbmtzIHdpdGhcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLkxJTktTIGwgLT5cbiAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAgICAgICAoZnVuICgoeGwsIHhyKSwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICAgYExpc3QgWyBgTGlzdCBbIGBJbnQgeGw7IGBJbnQgeHIgXTsgYEludCB5IF0pXG4gICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5XSEFURVZFUiAtPiBgTnVsbFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguU09NRSAtPiBgQm9vbCB0cnVlXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5UWVBFIChzaSwgdHkpIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jIFsgXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaTsgXCJwb3J0X25hbWVcIiwgYFN0cmluZyB0eSBdICk7XG4gICAgICAgICAgICAoIHNpdGVzdGF0ZXMsXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAgICAgICAgICAgICBwLlVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgKTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuXG5sZXQgc2l0ZV90b19qc29uIHNpdGUgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBzaXRlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIHNpdGUuVXNlcl9ncmFwaC5zaXRlX25hbWU7XG4gICAgICBzaXRldHlwZSwgc2l0ZV90eXBlX3RvX2pzb24gc2l0ZS5Vc2VyX2dyYXBoLnNpdGVfdHlwZTtcbiAgICBdXG5cbmxldCBzaXRlX3R5cGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiY291bnRlclwiOyBgSW50IGkgXSAtPiBVc2VyX2dyYXBoLkNvdW50ZXIgaVxuICB8IGBMaXN0IFsgYFN0cmluZyBcInBvcnRcIjsgYEFzc29jIGwgXSBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBwb3J0X2xpbmtzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbGlua3MgbCBpblxuICAgICAgICAgVXNlcl9ncmFwaC5saW5rc19vZl95b2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IHBvcnRfc3RhdGVzID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlc3RhdGVzIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic3RhdGUgbGlzdFwiXG4gICAgICAgICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInN0YXRlXCIpKVxuICAgICAgICAgICBqc29uXG4gICAgICAgaW5cbiAgICAgICBVc2VyX2dyYXBoLlBvcnQgeyBVc2VyX2dyYXBoLnBvcnRfbGlua3M7IFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZSB0eXBlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGUgdHlwZVwiLCB4KSlcblxubGV0IHNpdGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgc2l0ZV9uYW1lID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRlbmFtZSBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19zdHJpbmcganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IHNpdGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZXR5cGUgbCBpblxuICAgICAgICAgc2l0ZV90eXBlX29mX2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgeyBVc2VyX2dyYXBoLnNpdGVfbmFtZTsgVXNlcl9ncmFwaC5zaXRlX3R5cGUgfVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSlcblxubGV0IHNpdGVfbm9kZV9zaXRlc190b19qc29uIGxpc3QgPSBKc29uVXRpbC5vZl9hcnJheSBzaXRlX3RvX2pzb24gbGlzdFxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19hcnJheSB+ZXJyb3JfbXNnOlwic2l0ZSBub2RlIHNpdGVzXCIgc2l0ZV9vZl9qc29uXG5cbmxldCBzaXRlX25vZGVfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBgTnVsbFxuICB8IFNvbWUgbm9kZSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBzaXRlbm9kZW5hbWUsIEpzb25VdGlsLm9mX3N0cmluZyBub2RlLlVzZXJfZ3JhcGgubm9kZV90eXBlO1xuICAgICAgICBzaXRlbm9kZXNpdGVzLCBzaXRlX25vZGVfc2l0ZXNfdG9fanNvbiBub2RlLlVzZXJfZ3JhcGgubm9kZV9zaXRlcztcbiAgICAgIF1cblxubGV0IHNpdGVfbm9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBub2RlX2lkID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvY19vcHQgc2l0ZW5vZGVpZCBsIGluXG4gICAgICAgICBPcHRpb25fdXRpbC5tYXAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpIGpzb25cbiAgICAgICBpblxuICAgICAgIGxldCBub2RlX3R5cGUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVub2RlbmFtZSBsIGluXG4gICAgICAgICBKc29uVXRpbC50b19zdHJpbmcganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfc2l0ZXMgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVub2Rlc2l0ZXMgbCBpblxuICAgICAgICAgc2l0ZV9ub2RlX3NpdGVzX29mX2pzb24ganNvblxuICAgICAgIGluXG4gICAgICAgU29tZSB7IFVzZXJfZ3JhcGgubm9kZV90eXBlOyBVc2VyX2dyYXBoLm5vZGVfaWQ7IFVzZXJfZ3JhcGgubm9kZV9zaXRlcyB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKVxuXG5sZXQgY29udGFjdF9tYXBfdG9fanNvbiBjb250YWN0X21hcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggY29udGFjdG1hcCxcbiAgICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwIGFjY3VyYWN5X3RvX2pzb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfYXJyYXkgKEpzb25VdGlsLm9mX2FycmF5IHNpdGVfbm9kZV90b19qc29uKSlcbiAgICAgICAgICBjb250YWN0X21hcCApO1xuICAgIF1cblxubGV0IGNvbnRhY3RfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGNvbnRhY3RtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlcyBsaXN0XCIpXG4gICAgICAgICAgICAoSnNvblV0aWwudG9fYXJyYXlcbiAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZXMgbGlzdFwiKVxuICAgICAgICAgICAgICAgc2l0ZV9ub2RlX29mX2pzb24pKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImNvbnRhY3QgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImNvbnRhY3QgbWFwXCIsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudCopXG5cbnR5cGUgc2NjID0gKChzdHJpbmcgKiBzdHJpbmcpICogKHN0cmluZyAqIHN0cmluZykpIGxpc3QgbGlzdFxuXG5sZXQgc3RyaW5nX3BhaXJfdG9fanNvbiAoYSwgYikgPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFnZW50IH5sYWIyOnNpdGVuYW1lIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgIEpzb25VdGlsLm9mX3N0cmluZyAoYSwgYilcblxubGV0IHN0cmluZ19wYWlyX29mX2pzb24gKGpzb24gOiBZb2pzb24uQmFzaWMudCkgOiBzdHJpbmcgKiBzdHJpbmcgPVxuICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFnZW50IH5sYWIyOnNpdGVuYW1lIH5lcnJvcl9tc2c6XCJzaXRlXCJcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic2l0ZV9uYW1lXCIpXG4gICAganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl90b19qc29uIChhLCBiKSA9XG4gIEpzb25VdGlsLm9mX3BhaXIgc3RyaW5nX3BhaXJfdG9fanNvbiBzdHJpbmdfcGFpcl90b19qc29uIChhLCBiKVxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIGpzb24gOiAoc3RyaW5nICogc3RyaW5nKSAqIChzdHJpbmcgKiBzdHJpbmcpID1cbiAgSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiYm9uZFwiIHN0cmluZ19wYWlyX29mX2pzb24gc3RyaW5nX3BhaXJfb2ZfanNvblxuICAgIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF90b19qc29uIGwgPVxuICBKc29uVXRpbC5vZl9saXN0IHN0cmluZ19wYWlyX3BhaXJfdG9fanNvbiBsXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdF9vZl9ib25kc1wiIHN0cmluZ19wYWlyX3BhaXJfb2ZfanNvbiBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX2xpc3RfbGlzdF90b19qc29uIGwgPVxuICBKc29uVXRpbC5vZl9saXN0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF90b19qc29uIGxcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Rfb2ZfbGlzdHNfb2ZfYm9uZHNcIlxuICAgIHN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIGpzb25cblxubGV0IHNjY190b19qc29uIChjbV9hY2MsIHNjY19hY2MsIHNjYykgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGNvbnRhY3RtYXBzY2MsXG4gICAgICAgIEpzb25VdGlsLm9mX3RyaXBsZSB+bGFiMTphY2N1cmFjeV9jbSB+bGFiMjphY2N1cmFjeV9zY2MgfmxhYjM6bWFwXG4gICAgICAgICAgYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeV90b19qc29uIHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvX2pzb25cbiAgICAgICAgICAoY21fYWNjLCBzY2NfYWNjLCBzY2MpICk7XG4gICAgXVxuXG5sZXQgc2NjX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIGNvbnRhY3RtYXBzY2MgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3RyaXBsZSB+bGFiMTphY2N1cmFjeV9jbSB+bGFiMjphY2N1cmFjeV9zY2MgfmxhYjM6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOlwic2NjIGRlY29tcG9zaXRpb25cIiBhY2N1cmFjeV9vZl9qc29uIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mX2pzb24ganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJzY2MgZGVjb21wb3NpdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2NjIGRlY29tcG9zaXRpb25cIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgKilcbigqKioqKioqKioqKioqKilcblxudHlwZSBydWxlX2RpcmVjdGlvbiA9XG4gIHwgRGlyZWN0X3J1bGVcbiAgfCBSZXZlcnNlX3J1bGVcbiAgfCBCb3RoX2RpcmVjdGlvbnNcbiAgfCBEdW1teV9ydWxlX2RpcmVjdGlvblxuICB8IFZhcmlhYmxlXG5cbnR5cGUgcnVsZSA9IHtcbiAgcnVsZV9pZDogaW50O1xuICBydWxlX2xhYmVsOiBzdHJpbmc7XG4gIHJ1bGVfYXN0OiBzdHJpbmc7XG4gIHJ1bGVfcG9zaXRpb246IExvYy50O1xuICBydWxlX2RpcmVjdGlvbjogcnVsZV9kaXJlY3Rpb247XG4gIHJ1bGVfaGlkZGVuOiBib29sO1xufVxuXG5sZXQgZGlyZWN0aW9uX3RvX2pzb24gZCA9XG4gIG1hdGNoIGQgd2l0aFxuICB8IERpcmVjdF9ydWxlIC0+IGBTdHJpbmcgXCJkaXJlY3RcIlxuICB8IFJldmVyc2VfcnVsZSAtPiBgU3RyaW5nIFwicmV2ZXJzZVwiXG4gIHwgQm90aF9kaXJlY3Rpb25zIC0+IGBTdHJpbmcgXCJib3RoXCJcbiAgfCBEdW1teV9ydWxlX2RpcmVjdGlvbiAtPiBgU3RyaW5nIFwiZHVtbXlcIlxuICB8IFZhcmlhYmxlIC0+IGBTdHJpbmcgXCJ2YXJpYWJsZVwiXG5cbmxldCBqc29uX3RvX2RpcmVjdGlvbiBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgYFN0cmluZyBcImRpcmVjdFwiIC0+IERpcmVjdF9ydWxlXG4gIHwgYFN0cmluZyBcInJldmVyc2VcIiAtPiBSZXZlcnNlX3J1bGVcbiAgfCBgU3RyaW5nIFwiYm90aFwiIC0+IEJvdGhfZGlyZWN0aW9uc1xuICB8IGBTdHJpbmcgXCJkdW1teVwiIC0+IER1bW15X3J1bGVfZGlyZWN0aW9uXG4gIHwgYFN0cmluZyBcInZhcmlhYmxlXCIgLT4gVmFyaWFibGVcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGUgZGlyZWN0aW9uXCIsIHgpKVxuXG5sZXQgcnVsZV90b19qc29uIHJ1bGUgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBydWxlX2lkLCBKc29uVXRpbC5vZl9pbnQgcnVsZS5ydWxlX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyBydWxlLnJ1bGVfbGFiZWw7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBydWxlLnJ1bGVfYXN0O1xuICAgICAgcG9zaXRpb24sIExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgcnVsZS5ydWxlX3Bvc2l0aW9uKTtcbiAgICAgIGRpcmVjdGlvbiwgZGlyZWN0aW9uX3RvX2pzb24gcnVsZS5ydWxlX2RpcmVjdGlvbjtcbiAgICAgIHJ1bGVfaGlkZGVuLCBKc29uVXRpbC5vZl9ib29sIHJ1bGUucnVsZV9oaWRkZW47XG4gICAgXVxuXG5sZXQganNvbl90b19ydWxlID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcnVsZV9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgcnVsZV9sYWJlbCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBsYWJlbCBsKTtcbiAgICAgICAgIHJ1bGVfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIHJ1bGVfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgICAgcnVsZV9kaXJlY3Rpb24gPSBqc29uX3RvX2RpcmVjdGlvbiAoTGlzdC5hc3NvYyBkaXJlY3Rpb24gbCk7XG4gICAgICAgICBydWxlX2hpZGRlbiA9IEpzb25VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgcnVsZV9oaWRkZW4gbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCIgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJydWxlXCIsIHgpKVxuXG50eXBlIHZhciA9IHtcbiAgdmFyX2lkOiBpbnQ7XG4gIHZhcl9sYWJlbDogc3RyaW5nO1xuICB2YXJfYXN0OiBzdHJpbmc7XG4gIHZhcl9wb3NpdGlvbjogTG9jLnQ7XG59XG5cbmxldCB2YXJfdG9fanNvbiB2YXIgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBydWxlX2lkLCBKc29uVXRpbC5vZl9pbnQgdmFyLnZhcl9pZDtcbiAgICAgIGxhYmVsLCBKc29uVXRpbC5vZl9zdHJpbmcgdmFyLnZhcl9sYWJlbDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIHZhci52YXJfYXN0O1xuICAgICAgcG9zaXRpb24sIExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgdmFyLnZhcl9wb3NpdGlvbik7XG4gICAgXVxuXG5sZXQganNvbl90b192YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICB2YXJfaWQgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgcnVsZV9pZCBsKTtcbiAgICAgICAgIHZhcl9sYWJlbCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBsYWJlbCBsKTtcbiAgICAgICAgIHZhcl9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgdmFyX3Bvc2l0aW9uID1cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIHBvc2l0aW9uIGwpKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcIiB2YXJcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwidmFyXCIsIHgpKVxuXG50eXBlICgncnVsZSwgJ3ZhcikgaW5mbHVlbmNlX25vZGUgPSBSdWxlIG9mICdydWxlIHwgVmFyIG9mICd2YXJcbnR5cGUgcG9zX29mX3J1bGVzX2FuZF92YXJzID0gKChpbnQsIGludCkgaW5mbHVlbmNlX25vZGUgKiBMb2MudCkgbGlzdFxuXG5sZXQgaW5mbHVlbmNlX25vZGVfdG9fanNvbiBydWxlX3RvX2pzb24gdmFyX3RvX2pzb24gYSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFZhciBpIC0+IGBBc3NvYyBbIHZhcmlhYmxlLCB2YXJfdG9fanNvbiBpIF1cbiAgfCBSdWxlIGkgLT4gYEFzc29jIFsgcnVsZSwgcnVsZV90b19qc29uIGkgXVxuXG5sZXQgaW5mbHVlbmNlX25vZGVfb2ZfanNvbiBqc29uX3RvX3J1bGUganNvbl90b192YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHZhcmlhYmxlIC0+IFZhciAoanNvbl90b192YXIganNvbilcbiAgfCBgQXNzb2MgWyAocywganNvbikgXSB3aGVuIHMgPSBydWxlIC0+IFJ1bGUgKGpzb25fdG9fcnVsZSBqc29uKVxuICB8IHggLT5cbiAgICBsZXQgZXJyb3JfbXNnID0gXCJOb3QgYSBjb3JyZWN0IGluZmx1ZW5jZSBub2RlXCIgaW5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV90b19qc29uIEpzb25VdGlsLm9mX2ludCBKc29uVXRpbC5vZl9pbnRcblxubGV0IHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJydWxlIGlkXCIpKVxuICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwidmFyIGlkXCIpKVxuXG5sZXQgcG9zX29mX3J1bGVzX2FuZF92YXJzX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9saXN0XG4gICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6a2V5IH5sYWIyOmxvY2FsaXR5IHNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAoZnVuIGxvYyAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGxvYykpKVxuXG5sZXQgcG9zX29mX3J1bGVzX2FuZF92YXJzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0XG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6a2V5IH5sYWIyOmxvY2FsaXR5IHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIHNuZFxuICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICB4KSkpXG5cbmxldCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV90b19qc29uIHJ1bGVfdG9fanNvbiB2YXJfdG9fanNvblxuXG5sZXQgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uID1cbiAgaW5mbHVlbmNlX25vZGVfb2ZfanNvbiBqc29uX3RvX3J1bGUganNvbl90b192YXJcblxubGV0IHNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlID0gZnVuY3Rpb25cbiAgfCBSdWxlIHJ1bGUgLT4gUnVsZSBydWxlLnJ1bGVfaWRcbiAgfCBWYXIgdmFyIC0+IFZhciB2YXIudmFyX2lkXG5cbmxldCBwb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV9ub2RlID0gZnVuY3Rpb25cbiAgfCBSdWxlIHIgLT4gci5ydWxlX3Bvc2l0aW9uXG4gIHwgVmFyIHYgLT4gdi52YXJfcG9zaXRpb25cblxubW9kdWxlIEluZmx1ZW5jZU5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IChpbnQsIGludCkgaW5mbHVlbmNlX25vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICBsZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgfCBSdWxlIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIlJ1bGUgJWlcIiByXG4gICAgfCBWYXIgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiVmFyICVpXCIgclxuZW5kKVxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZU1hcCA9IEluZmx1ZW5jZU5vZGVTZXRNYXAuTWFwXG5cbigqIFJlbGF0aW9ucyAqKVxuXG50eXBlICdhIHBhaXIgPSAnYSAqICdhXG50eXBlIGxvY2F0aW9uID0gRGlyZWN0IG9mIGludCB8IFNpZGVfZWZmZWN0IG9mIGludFxuXG5sZXQgZHVtcF9sb2NhdGlvbiBmbXQgPSBmdW5jdGlvblxuICB8IERpcmVjdCBpbnQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWlcIiBpbnRcbiAgfCBTaWRlX2VmZmVjdCBpbnQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJWkqXCIgaW50XG5cbmxldCBkdW1wX2xvY2F0aW9uX3BhaXIgZm10IChhLCBiKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiglYSwlYSlcIiBkdW1wX2xvY2F0aW9uIGEgZHVtcF9sb2NhdGlvbiBiXG5cbmxldCBkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCBmbXQgbCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIlslYV1cIlxuICAgIChQcC5saXN0IChmdW4gZm10IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiO1wiKSBkdW1wX2xvY2F0aW9uX3BhaXIpXG4gICAgbFxuXG5sZXQgc3RyaW5nX29mX2xhYmVsX2xpc3QgbCA9IEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgZHVtcF9sb2NhdGlvbl9wYWlyX2xpc3QgbFxuXG50eXBlIGhhbGZfaW5mbHVlbmNlX21hcCA9XG4gIGxvY2F0aW9uIHBhaXIgbGlzdCBJbmZsdWVuY2VOb2RlTWFwLnQgSW5mbHVlbmNlTm9kZU1hcC50XG5cbnR5cGUgaW5mbHVlbmNlX21hcCA9IHtcbiAgbm9kZXM6IChydWxlLCB2YXIpIGluZmx1ZW5jZV9ub2RlIGxpc3Q7XG4gIHBvc2l0aXZlOiBoYWxmX2luZmx1ZW5jZV9tYXA7XG4gIG5lZ2F0aXZlOiBoYWxmX2luZmx1ZW5jZV9tYXA7XG59XG5cbigqIExvY2F0aW9uIGxhYmVscyAqKVxubGV0IGxvY2F0aW9uX3RvX2pzb24gYSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IERpcmVjdCBpIC0+IGBBc3NvYyBbIGRpcmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuICB8IFNpZGVfZWZmZWN0IGkgLT4gYEFzc29jIFsgc2lkZV9lZmZlY3QsIEpzb25VdGlsLm9mX2ludCBpIF1cblxubGV0IGxvY2F0aW9uX29mX2pzb24gPyhlcnJvcl9tc2cgPSBcIk5vdCBhIGNvcnJlY3QgbG9jYXRpb25cIikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IGRpcmVjdCAtPiBEaXJlY3QgKEpzb25VdGlsLnRvX2ludCBqc29uKVxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHNpZGVfZWZmZWN0IC0+XG4gICAgU2lkZV9lZmZlY3QgKEpzb25VdGlsLnRvX2ludCBqc29uKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTpzb3VyY2UgfmxhYl92YWx1ZTp0YXJnZXRfbWFwXG4gICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgIChJbmZsdWVuY2VOb2RlTWFwLnRvX2pzb24gfmxhYl9rZXk6dGFyZ2V0IH5sYWJfdmFsdWU6bG9jYXRpb25fcGFpcl9saXN0XG4gICAgICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6cmhzIH5sYWIyOmxocyBsb2NhdGlvbl90b19qc29uXG4gICAgICAgICAgICAgbG9jYXRpb25fdG9fanNvbikpKVxuXG5sZXQgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPVxuICBJbmZsdWVuY2VOb2RlTWFwLm9mX2pzb25cbiAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJhY3RpdmF0aW9uIG9yIGluaGliaXRpb24gbWFwXCIpXG4gICAgfmxhYl9rZXk6c291cmNlIH5sYWJfdmFsdWU6dGFyZ2V0X21hcCBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICB+ZXJyb3JfbXNnOlwibWFwIG9mIGxpc3RzIG9mIHBhaXJzIG9mIGxvY2F0aW9uc1wiXG4gICAgICAgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0IG9mIHBhaXIgb2YgbG9jYXRpb25zXCJcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwiXCIgfmxhYjE6cmhzIH5sYWIyOmxoc1xuICAgICAgICAgICAgIChsb2NhdGlvbl9vZl9qc29uIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2F0aW9uXCIpKVxuICAgICAgICAgICAgIChsb2NhdGlvbl9vZl9qc29uIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2F0aW9uXCIpKSkpKVxuXG4oKiBJbmZsdWVuY2UgbWFwICopXG5cbmxldCBub2Rlc19saXN0X3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxubGV0IG5vZGVzX2xpc3Rfb2ZfanNvbiA9IEpzb25VdGlsLnRvX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG5cbmxldCBpbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggaW5mbHVlbmNlbWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChmdW4gaW5mbHVlbmNlX21hcCAtPlxuICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIGluZmx1ZW5jZV9tYXAubm9kZXM7XG4gICAgICAgICAgICAgICAgd2FrZXVwLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLnBvc2l0aXZlO1xuICAgICAgICAgICAgICAgIGluaGliaXRpb24sIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAubmVnYXRpdmU7XG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgaW5mbHVlbmNlX21hcCApO1xuICAgIF1cblxubGV0IG5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBub2Rlc19saXN0ID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBub2Rlc29maW5mbHVlbmNlbWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChmdW4gbm9kZXNfbGlzdCAtPiBgQXNzb2MgWyBub2Rlcywgbm9kZXNfbGlzdF90b19qc29uIG5vZGVzX2xpc3QgXSlcbiAgICAgICAgICBub2Rlc19saXN0ICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBub2Rlc29maW5mbHVlbmNlbWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXAxXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAgICAgICAgICAodHJ5IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKVxuICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgIGpzb25cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbmxldCBsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcCA9XG4gIGxldCBhY2N1cmFjeSwgdG90YWwsIGJ3ZCwgZndkLCBvcmlnaW5fb3B0LCBpbmZsdWVuY2VfbWFwID0gaW5mbHVlbmNlX21hcCBpblxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIGluZmx1ZW5jZW1hcCxcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYWNjdXJhY3lfc3RyaW5nLCBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5O1xuICAgICAgICAgICAgdG90YWxfc3RyaW5nLCBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICBmd2Rfc3RyaW5nLCBKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2ZfaW50IGZ3ZDtcbiAgICAgICAgICAgIGJ3ZF9zdHJpbmcsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgb3JpZ2luLCBKc29uVXRpbC5vZl9vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIG9yaWdpbl9vcHQ7XG4gICAgICAgICAgICAoIG1hcCxcbiAgICAgICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICAgICAgd2FrZXVwLCBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLnBvc2l0aXZlO1xuICAgICAgICAgICAgICAgICAgICAoIGluaGliaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZSApO1xuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IGluZmx1ZW5jZV9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgaW5mbHVlbmNlbWFwIGwgaW5cbiAgICAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXAxXCIpXG4gICAgICAgICBhY2N1cmFjeV9vZl9qc29uXG4gICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICBwb3NpdGl2ZSA9IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIHdha2V1cCBsKTtcbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxubGV0IGxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgaW5mbHVlbmNlbWFwIGwgaW5cbiAgICAgICBtYXRjaCBqc29uIHdpdGhcbiAgICAgICB8IGBBc3NvYyBsJyAtPlxuICAgICAgICAgbGV0IGFjY3VyYWN5ID0gYWNjdXJhY3lfb2ZfanNvbiAoTGlzdC5hc3NvYyBhY2N1cmFjeV9zdHJpbmcgbCcpIGluXG4gICAgICAgICBsZXQgdG90YWwgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgdG90YWxfc3RyaW5nIGwnKSBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcImZ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGZ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBmd2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJid2QgcmFkaXVzXCIgaW5cbiAgICAgICAgIGxldCBid2QgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2cpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgYndkX3N0cmluZyBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIHJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG9yaWdpbiBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgaW5mbHVlbmNlX21hcCA9XG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzID0gbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZSA9IGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIHdha2V1cCBsKTtcbiAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICAgIGhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIChMaXN0LmFzc29jIGluaGliaXRpb24gbCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbCBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbCBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBtYXAgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgYWNjdXJhY3ksIHRvdGFsLCBmd2QsIGJ3ZCwgb3JpZ2luLCBpbmZsdWVuY2VfbWFwXG4gICAgICAgfCBfIC0+XG4gICAgICAgICByYWlzZVxuICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpXG5cbigqKioqKioqKioqKioqKiopXG4oKiBkZWFkIHJ1bGVzICAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBkZWFkX3J1bGVzID0gcnVsZSBsaXN0XG5cbmxldCBkZWFkX3J1bGVzX3RvX2pzb24ganNvbiA9XG4gIGBBc3NvYyBbIGRlYWRfcnVsZXMsIEpzb25VdGlsLm9mX2xpc3QgcnVsZV90b19qc29uIGpzb24gXVxuXG5sZXQgZGVhZF9ydWxlc19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSBhcyB4IHdoZW4gcyA9IGRlYWRfcnVsZXMgLT5cbiAgICAodHJ5IEpzb25VdGlsLnRvX2xpc3QganNvbl90b19ydWxlIGpzb25cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfcnVsZXMsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9ydWxlcywgeCkpXG5cbigqKioqKioqKioqKioqKiopXG4oKiBkZWFkIGFnZW50cyAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBhZ2VudF9raW5kID0ge1xuICBhZ2VudF9pZDogaW50O1xuICBhZ2VudF9hc3Q6IHN0cmluZztcbiAgYWdlbnRfcG9zaXRpb246IExvYy50IGxpc3Q7XG59XG5cbmxldCBqc29uX3RvX2FnZW50X2tpbmQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBhZ2VudF9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBhZ2VudF9pZCBsKTtcbiAgICAgICAgIGFnZW50X2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICBhZ2VudF9wb3NpdGlvbiA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eSBsaXN0XCIpXG4gICAgICAgICAgICAgKGZ1biBqc29uIC0+XG4gICAgICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAgICAganNvbikpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb25fbGlzdCBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImFnZW50IGtpbmRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYWdlbnQga2luZFwiLCB4KSlcblxubGV0IGFnZW50X2tpbmRfdG9fanNvbiBhZ2VudF9raW5kID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgYWdlbnRfaWQsIEpzb25VdGlsLm9mX2ludCBhZ2VudF9raW5kLmFnZW50X2lkO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgYWdlbnRfa2luZC5hZ2VudF9hc3Q7XG4gICAgICAoIHBvc2l0aW9uX2xpc3QsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoZnVuIGEgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBhKSlcbiAgICAgICAgICBhZ2VudF9raW5kLmFnZW50X3Bvc2l0aW9uICk7XG4gICAgXVxuXG50eXBlIGRlYWRfYWdlbnRzID0gYWdlbnRfa2luZCBsaXN0XG5cbmxldCBqc29uX29mX2RlYWRfYWdlbnRzIGpzb24gPVxuICBgQXNzb2MgWyBkZWFkX2FnZW50cywgSnNvblV0aWwub2ZfbGlzdCBhZ2VudF9raW5kX3RvX2pzb24ganNvbiBdXG5cbmxldCBqc29uX3RvX2RlYWRfYWdlbnRzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywganNvbikgXSBhcyB4IHdoZW4gcyA9IGRlYWRfYWdlbnRzIC0+XG4gICAgKHRyeSBKc29uVXRpbC50b19saXN0IGpzb25fdG9fYWdlbnRfa2luZCBqc29uXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX2FnZW50cywgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfYWdlbnRzLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnMgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSAocnVsZSAqIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QpIGxpc3RcblxubGV0IHNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInJ1bGVcIiB+bGFiMjpcInBvdGVudGlhbC1jb250ZXh0c1wiIHJ1bGVfdG9fanNvblxuICAgICAgIChKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJzMVwiIH5sYWIyOlwiczJcIiBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9zdHJpbmcpKSlcblxubGV0IHNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvbnMgbGlzdFwiXG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcInNlcGFyYXRpbmcgdHJhbnNpdGlvblwiIH5sYWIxOlwicnVsZVwiXG4gICAgICAgfmxhYjI6XCJwb3RlbnRpYWwtY29udGV4dHNcIiBqc29uX3RvX3J1bGVcbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9uc1wiXG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcInRyYW5zaXRpb25cIiB+bGFiMTpcInMxXCIgfmxhYjI6XCJzMlwiXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKSkpXG5cbigqKioqKioqKioqKioqKiopXG4oKiBDb25zdHJhaW50cyAqKVxuKCoqKioqKioqKioqKioqKilcblxudHlwZSBiaW5kaW5nX3N0YXRlID1cbiAgfCBGcmVlXG4gIHwgV2lsZGNhcmRcbiAgfCBCb3VuZF90b191bmtub3duXG4gIHwgQm91bmRfdG8gb2YgaW50XG4gIHwgQmluZGluZ190eXBlIG9mIHN0cmluZyAqIHN0cmluZ1xuXG50eXBlIGFnZW50ID1cbiAgc3RyaW5nXG4gICogKHN0cmluZ1xuICAgICogc3RyaW5nIG9wdGlvblxuICAgICogYmluZGluZ19zdGF0ZSBvcHRpb25cbiAgICAqIChpbnQgb3B0aW9uICogaW50IG9wdGlvbikgb3B0aW9uKVxuICAgIGxpc3RcblxudHlwZSAnc2l0ZV9ncmFwaCBsZW1tYSA9IHsgaHlwOiAnc2l0ZV9ncmFwaDsgcmVmaW5lbWVudDogJ3NpdGVfZ3JhcGggbGlzdCB9XG50eXBlICdzaXRlX2dyYXBoIHBvbHlfY29uc3RyYWludHNfbGlzdCA9IChzdHJpbmcgKiAnc2l0ZV9ncmFwaCBsZW1tYSBsaXN0KSBsaXN0XG5cbmxldCBsZW1tYV90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbiBqc29uID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpoeXAgfmxhYjI6cmVmaW5lbWVudCBzaXRlX2dyYXBoX3RvX2pzb25cbiAgICAoSnNvblV0aWwub2ZfbGlzdCBzaXRlX2dyYXBoX3RvX2pzb24pXG4gICAgKGpzb24uaHlwLCBqc29uLnJlZmluZW1lbnQpXG5cbmxldCBsZW1tYV9vZl9qc29uIHNpdGVfZ3JhcGhfb2ZfanNvbiBqc29uID1cbiAgbGV0IGEsIGIgPVxuICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6aHlwIH5sYWIyOnJlZmluZW1lbnQgfmVycm9yX21zZzpcImxlbW1hXCJcbiAgICAgIHNpdGVfZ3JhcGhfb2ZfanNvblxuICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcInJlZmluZW1lbnRzIGxpc3RcIiBzaXRlX2dyYXBoX29mX2pzb24pXG4gICAgICBqc29uXG4gIGluXG4gIHsgaHlwID0gYTsgcmVmaW5lbWVudCA9IGIgfVxuXG5sZXQgZ2V0X2h5cCBoID0gaC5oeXBcbmxldCBnZXRfcmVmaW5lbWVudCByID0gci5yZWZpbmVtZW50XG5sZXQgZnJlZSA9IFwiXCJcbmxldCB3aWxkY2FyZCA9IFwiP1wiXG5sZXQgYm91bmQgPSBcIiFfXCJcbmxldCBib25kX2lkID0gXCJib25kIGlkXCJcbmxldCBib3VuZF90byA9IFwiYm91bmQgdG9cIlxubGV0IGJpbmRpbmdfdHlwZSA9IFwiYmluZGluZyB0eXBlXCJcbmxldCBwcm9wID0gXCJwcm9wZXJ0eSBzdGF0ZVwiXG5sZXQgYmluZCA9IFwiYmluZGluZyBzdGF0ZVwiXG5sZXQgYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sID0gXCIuXCJcbmxldCBmcmVlX2JhY2tlbmRfc3ltYm9sID0gXCIuXCJcbmxldCBtaXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3N5bWJvbCA9IFwiXCJcbmxldCB3aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCA9IFwiI1wiXG5sZXQgYm91bmRfdG9fdW5rbm93bl9iYWNrZW5kX3N5bWJvbCA9IFwiX1wiXG5sZXQgaW50ZXJuYWxfc3RhdGVfaW50cm9kdWN0aW9uX2JhY2tlbmRfc3ltYm9sID0gXCJ+XCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuZF9zeW1ib2wgPSBcIixcIlxubGV0IGJpbmRpbmdfc3RhdGVfZGVsaW1pdGVyX2JhY2tlbmRfc3ltYm9sID0gXCIsXCJcbmxldCBiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIltcIlxubGV0IGJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwiXVwiXG5sZXQgaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwie1wiXG5sZXQgaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwifVwiXG5sZXQgY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ7XCJcbmxldCBjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgPSBcIn1cIlxubGV0IGNvdW50ZXJfc3RhdGVfcmFuZ2VfYmFja2VuZF9zeW1ib2wgPSBcIiAuLiBcIlxubGV0IG9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9IFwiW1wiXG5sZXQgY2xvc2VfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9IFwiXVwiXG5sZXQgb3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID0gXCJdXCJcbmxldCBjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sID0gXCJbXCJcbmxldCBwbHVzX2luZmluaXR5X3N5bWJvbCA9IFwiK29vXCJcbmxldCBtaW51c19pbmZpbml0eV9zeW1ib2wgPSBcIi1vb1wiXG5cbmxldCBzdHJpbmdfb2ZfYmluZGluZ190eXBlID8oYmluZGluZ190eXBlX3N5bWJvbCA9IFwiLlwiKSB+YWdlbnRfbmFtZSB+c2l0ZV9uYW1lXG4gICAgKCkgPVxuICBGb3JtYXQuc3ByaW50ZiBcIiVzJXMlc1wiIHNpdGVfbmFtZSBiaW5kaW5nX3R5cGVfc3ltYm9sIGFnZW50X25hbWVcblxubGV0IGJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IGZyZWUgLT4gRnJlZVxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSB3aWxkY2FyZCAtPiBXaWxkY2FyZFxuICB8IGBBc3NvYyBbIChzLCBgTnVsbCkgXSB3aGVuIHMgPSBib3VuZF90byAtPiBCb3VuZF90b191bmtub3duXG4gIHwgYEFzc29jIFsgKHMsIGopIF0gd2hlbiBzID0gYm9uZF9pZCAtPlxuICAgIGxldCBpID0gSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6XCJ3cm9uZyBiaW5kaW5nIGlkXCIgaiBpblxuICAgIGxldCBib25kX2luZGV4ID0gaSBpblxuICAgIEJvdW5kX3RvIGJvbmRfaW5kZXhcbiAgfCBgQXNzb2MgWyAocywgaikgXSB3aGVuIHMgPSBiaW5kaW5nX3R5cGUgLT5cbiAgICBsZXQgYWdlbnRfbmFtZSwgc2l0ZV9uYW1lID1cbiAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJhZ2VudFwiIH5sYWIyOlwic2l0ZVwiIH5lcnJvcl9tc2c6XCJiaW5kaW5nIHR5cGVcIlxuICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhZ2VudCBuYW1lXCIpXG4gICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcInNpdGUgbmFtZVwiKVxuICAgICAgICBqXG4gICAgaW5cbiAgICBCaW5kaW5nX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIndyb25nIGJpbmRpbmcgc3RhdGVcIiwgeCkpXG5cbmxldCBiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEZyZWUgLT4gYEFzc29jIFsgZnJlZSwgYE51bGwgXVxuICB8IFdpbGRjYXJkIC0+IGBBc3NvYyBbIHdpbGRjYXJkLCBgTnVsbCBdXG4gIHwgQm91bmRfdG9fdW5rbm93biAtPiBgQXNzb2MgWyBib3VuZF90bywgYE51bGwgXVxuICB8IEJvdW5kX3RvIGJvbmRfaW5kZXggLT4gYEFzc29jIFsgYm9uZF9pZCwgSnNvblV0aWwub2ZfaW50IGJvbmRfaW5kZXggXVxuICB8IEJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSAtPlxuICAgIGxldCBqID1cbiAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJhZ2VudFwiIH5sYWIyOlwic2l0ZVwiIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICBKc29uVXRpbC5vZl9zdHJpbmcgKGFnZW50X25hbWUsIHNpdGVfbmFtZSlcbiAgICBpblxuICAgIGBBc3NvYyBbIGJpbmRpbmdfdHlwZSwgaiBdXG5cbmxldCBjb3VudGVyX3N0YXRlX2xpZ2h0X29mX2pzb24gPVxuICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmluZiB+bGFiMjpzdXAgfmVycm9yX21zZzpcIndyb25nIGNvdW50ZXIgc3RhdGVcIlxuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOmNvdW50ZXIpKVxuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOmNvdW50ZXIpKVxuXG5sZXQgY291bnRlcl9zdGF0ZV9saWdodF90b19qc29uID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTppbmYgfmxhYjI6c3VwXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpXG4gICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpXG5cbmxldCBpbnRlcmZhY2VfbGlnaHRfdG9fanNvbiBpbnRmID1cbiAgSnNvblV0aWwub2ZfbWFwIH5sYWJfa2V5OnNpdGUgfmxhYl92YWx1ZTpzdGF0ZXNsaXN0XG4gICAgfmZvbGQ6KGZ1biBmIGEgeCAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IChrLCBhLCBiLCBjKSAtPiBmIGsgKGEsIGIsIGMpIGxpc3QpIHggYSlcbiAgICAoKmpzb24gLT4gZWx0KilcbiAgICAgIChmdW4gc2l0ZSAtPiBKc29uVXRpbC5vZl9zdHJpbmcgc2l0ZSlcbiAgICAoKmpzb24gLT4gJ3ZhbHVlKilcbiAgICAoSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOnByb3AgfmxhYjI6YmluZCB+bGFiMzpjb3VudGVyXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBiaW5kaW5nX3N0YXRlX2xpZ2h0X3RvX2pzb24pXG4gICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24pKVxuICAgIGludGZcblxubGV0IGludGVyZmFjZV9saWdodF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19tYXAgfmxhYl9rZXk6c2l0ZSB+bGFiX3ZhbHVlOnN0YXRlc2xpc3QgfmVycm9yX21zZzppbnRlcmZhY2VcbiAgICB+ZW1wdHk6W11cbiAgICB+YWRkOihmdW4gayAoYSwgYiwgYykgbGlzdCAtPiAoaywgYSwgYiwgYykgOjogbGlzdClcbiAgICAoKmpzb24gLT4gZWx0KilcbiAgICAgIChmdW4ganNvbiAtPiBKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpzaXRlIGpzb24pXG4gICAgKCpqc29uIC0+ICd2YWx1ZSopXG4gICAgKEpzb25VdGlsLnRvX3RyaXBsZSB+bGFiMTpwcm9wIH5sYWIyOmJpbmQgfmxhYjM6Y291bnRlclxuICAgICAgIH5lcnJvcl9tc2c6XCJ3cm9uZyBiaW5kaW5nIHN0YXRlXCJcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpwcm9wKSlcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIGJpbmRpbmdfc3RhdGVfbGlnaHRfb2ZfanNvbilcbiAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uIGNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbikpXG4gICAganNvblxuXG5sZXQgYWdlbnRfZ2VuX29mX2pzb24gaW50ZXJmYWNlX29mX2pzb24gPVxuICBKc29uVXRpbC50b19wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSB+ZXJyb3JfbXNnOlwiYWdlbnRcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICBpbnRlcmZhY2Vfb2ZfanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdFxuICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJjb25zdHJhaW50cyBsaXN0XCIgfmxhYjE6ZG9tYWluX25hbWVcbiAgICAgICB+bGFiMjpyZWZpbmVtZW50c19saXN0XG4gICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWJzdHJhY3QgZG9tYWluXCIpXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgKGxlbW1hX29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uKSkpXG5cbmxldCBsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiBpbnRlcmZhY2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgcmVmaW5lbWVudF9sZW1tYXMgbCBpblxuICAgICAgIHBvbHlfY29uc3RyYWludHNfbGlzdF9vZl9qc29uXG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2l0ZSBncmFwaFwiXG4gICAgICAgICAgICAoYWdlbnRfZ2VuX29mX2pzb24gaW50ZXJmYWNlX29mX2pzb24pKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwicmVmaW5lbWVudCBsZW1tYXMgbGlzdFwiLCB4KSlcblxubGV0IGxlbW1hc19saXN0X29mX2pzb24ganNvbiA9XG4gIGxlbW1hc19saXN0X29mX2pzb25fZ2VuIGludGVyZmFjZV9saWdodF9vZl9qc29uIGpzb25cblxubGV0IGFnZW50X2dlbl90b19qc29uIGludGVyZmFjZV90b19qc29uID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTphZ2VudCB+bGFiMjppbnRlcmZhY2UgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgaW50ZXJmYWNlX3RvX2pzb25cblxubGV0IHBvbHlfY29uc3RyYWludHNfbGlzdF90b19qc29uIHNpdGVfZ3JhcGhfdG9fanNvbiBjb25zdHJhaW50cyA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpkb21haW5fbmFtZSB+bGFiMjpyZWZpbmVtZW50c19saXN0XG4gICAgICAgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3QgKGxlbW1hX3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uKSkpXG4gICAgY29uc3RyYWludHNcblxubGV0IGxlbW1hc19saXN0X3RvX2pzb25fZ2VuIGludGVyZmFjZV90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCByZWZpbmVtZW50X2xlbW1hcyxcbiAgICAgICAgcG9seV9jb25zdHJhaW50c19saXN0X3RvX2pzb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfZ2VuX3RvX2pzb24gaW50ZXJmYWNlX3RvX2pzb24pKVxuICAgICAgICAgIGNvbnN0cmFpbnRzICk7XG4gICAgXVxuXG5sZXQgbGVtbWFzX2xpc3RfdG9fanNvbiBjb25zdHJhaW50cyA9XG4gIGxlbW1hc19saXN0X3RvX2pzb25fZ2VuIGludGVyZmFjZV9saWdodF90b19qc29uIGNvbnN0cmFpbnRzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcmF3X3ZlcnNpb25fc3RyaW5nID0gXCIkRm9ybWF0OiVEJFwiXG5cbmxldCBleHRyYWN0X3RhZ19yZSA9XG4gIFJlLmNvbXBpbGVcbiAgICAoUmUuc2VxIFsgUmUuc3RyIFwidGFnOiBcIjsgUmUuZ3JvdXAgKFJlLnJlcCAoUmUuY29tcGwgWyBSZS5jaGFyICcsJyBdKSkgXSlcblxubGV0IHZlcnNpb25fc3RyaW5nID1cbiAgbWF0Y2ggUmUuZXhlY19vcHQgZXh0cmFjdF90YWdfcmUgcmF3X3ZlcnNpb25fc3RyaW5nIHdpdGhcbiAgfCBTb21lIGdyIC0+IFJlLkdyb3VwLmdldCBnciAxXG4gIHwgTm9uZSAtPiBHaXRfdmVyc2lvbi50XG5cbmxldCB2ZXJzaW9uX21zZyA9IFwiS2FwcGEgU2ltdWxhdG9yOiBcIiBeIHZlcnNpb25fc3RyaW5nXG5sZXQgdmVyc2lvbl9rYXNhX2Z1bGxfbmFtZSA9IFwiS2FwcGEgU3RhdGljIEFuYWx5emVyIChcIiBeIHZlcnNpb25fc3RyaW5nIF4gXCIpXCJcbmxldCB2ZXJzaW9uX2thZGVfZnVsbF9uYW1lID0gXCJLYURFIChcIiBeIHZlcnNpb25fc3RyaW5nIF4gXCIpXCJcbmxldCB0a19pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuIiwiKCogU2ltaWxhciB0byBPQ2FtbCdzIHN0YW5kYXJkIEFyZyBtb2R1bGUgYnV0IHdpdGggc29tZSBpbXByb3ZlbWVudHM6XG4gICAtIG9wdGlvbnMgYXJlIGNsYXNzaWZpZWQgd2l0aCByZXNwZWN0IHRvIGNhdGVnb3JpZXNcbiAgIC0gbmVvcGh5dGUgLyBleHBlcnQgbW9kZXNcbiAgIC0gaGlkZGVuIG9wdGlvbnNcblxuICAgTm90ZSB0aGF0IHRoZSBzcGVjIHR5cGUgaXMgcmVhbGx5IGRpZmZlcmVudC5cblxuICAgQ29weXJpZ2h0IChDKSBBbnRvaW5lIE1pbmUnIDIwMDZcbiopXG5cbmxldCBleHBlcnRfbW9kZSA9IHJlZiBmYWxzZSAoKiBzaG93cyBleHBlcnQgb3B0aW9ucyAqKVxubGV0IGRldl9tb2RlID0gcmVmIGZhbHNlICgqIGFjY2VwdCBfQUxMXyBvcHRpb25zICopXG5cbigqIFR5cGVzICopXG4oKiAqKioqKiAqKVxuXG50eXBlIGtleSA9IHN0cmluZyAoKiBjb21tYW5kLWxpbmUgYXJndW1lbnQgKilcbnR5cGUgbXNnID0gc3RyaW5nICgqIGhlbHAgbWVzc2FnZSAqKVxuXG4oKiB0eXBlIG9mIG9wdGlvbiAqKVxudHlwZSBsZXZlbCA9XG4gIHwgTm9ybWFsICgqIGFsd2F5cyBzaG93biAmIGFjY2VwdGVkICopXG4gIHwgRXhwZXJ0ICgqIHNob3duIGluIGV4cGVydCBvciBkZXZlbG9wcGVyIG1vZGUsIGFsd2F5cyBhY2NlcHRlZCAqKVxuICB8IERldmVsb3BwZXIgKCogb25seSBzaG93biAmIGFjY2VwdGVkIGluIGRldmVsb3BwZXIgbW9kZSAqKVxuICB8IEhpZGRlbiAoKiBuZXZlciBzaG93biAqKVxuXG5tb2R1bGUgU3RyaW5nSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIGxldmVsIG9wdGlvblxuXG4gIGxldCBjb21wYXJlIChhLCBiLCBfKSAoYywgZCwgXykgPVxuICAgIGxldCBjbXAgPSBjb21wYXJlIGIgZCBpblxuICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgY29tcGFyZSBhIGNcbiAgICBlbHNlXG4gICAgICBjbXBcblxuICBsZXQgcHJpbnQgZm10IChhLCBiLCBfKSA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzOiVpXCIgYSBiXG5lbmRcblxubW9kdWxlIFN0cmluZ0ludFNldE1hcCA9IFNldE1hcC5NYWtlIChTdHJpbmdJbnQpXG5tb2R1bGUgU3RyaW5nSW50TWFwID0gU3RyaW5nSW50U2V0TWFwLk1hcFxubW9kdWxlIFN0cmluZ0ludFNldCA9IFN0cmluZ0ludFNldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdTZXRNYXAgPSBNb2RzLlN0cmluZ1NldE1hcFxubW9kdWxlIFN0cmluZ1NldCA9IFN0cmluZ1NldE1hcC5TZXRcbm1vZHVsZSBTdHJpbmdNYXAgPSBTdHJpbmdTZXRNYXAuTWFwXG5cbmxldCBtaW5fbGV2ZWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9ybWFsLCBfIHwgXywgTm9ybWFsIC0+IE5vcm1hbFxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBEZXZlbG9wcGVyLCBfIHwgXywgRGV2ZWxvcHBlciAtPiBEZXZlbG9wcGVyXG4gIHwgSGlkZGVuLCBIaWRkZW4gLT4gSGlkZGVuXG5cbmxldCBtYXhfbGV2ZWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgSGlkZGVuLCBfIHwgXywgSGlkZGVuIC0+IEhpZGRlblxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBFeHBlcnQsIF8gfCBfLCBFeHBlcnQgLT4gRXhwZXJ0XG4gIHwgTm9ybWFsLCBOb3JtYWwgLT4gTm9ybWFsXG5cbmxldCBtYXhfbGV2ZWxfb3B0IGEgYiA9XG4gIG1hdGNoIGIgd2l0aFxuICB8IE5vbmUgLT4gYVxuICB8IFNvbWUgYiAtPiBtYXhfbGV2ZWwgYSBiXG5cbnR5cGUgcG9zaXRpb24gPSBpbnRcbnR5cGUgY2F0ZWdvcnkgPSBzdHJpbmcgKiBwb3NpdGlvbiAqIGxldmVsIG9wdGlvblxuXG50eXBlIHNwZWMgPVxuICB8IFZvaWQgKCogVG8gc2tpcCBhIGxpbmUgKilcbiAgfCBCb29sIG9mIGJvb2wgcmVmICgqIFNldHMgYSBib29sZWFuIHZhbHVlICopXG4gIHwgSW50IG9mIGludCByZWYgKCogU2V0cyBhbiBpbnRlZ2VyIHZhbHVlICopXG4gIHwgSW50X29wdCBvZiBpbnQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsIGludGVnZXIgdmFsdWUgKilcbiAgfCBTdHJpbmcgb2Ygc3RyaW5nIHJlZiAoKiBTZXRzIGEgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX29wdCBvZiBzdHJpbmcgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsIHN0cmluZyB2YWx1ZSAqKVxuICB8IFN0cmluZ19saXN0IG9mIHN0cmluZyBsaXN0IHJlZiAoKiBTZXRzIGEgbGlzdCBvZiBzdHJpbmdzICopXG4gIHwgU3RyaW5nTmJyX2xpc3Qgb2ZcbiAgICAgIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHBhaXJzIG9mIHN0cmluZ3MgKilcbiAgfCBGbG9hdCBvZiBmbG9hdCByZWYgKCogU2V0cyBhIGZsb2F0IHZhbHVlICopXG4gIHwgRmxvYXRfb3B0IG9mIGZsb2F0IG9wdGlvbiByZWYgKCogU2V0cyBhbiBvcHRpb25hbCAgZmxvYXQgdmFsdWUgKilcbiAgKCogb25lIG9yIHNldmVyYWwgb3B0aW9ucyBhbW9uZyBhIGxpc3QgKilcbiAgfCBDaG9pY2Ugb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0ICoga2V5IHJlZlxuICB8IENob2ljZV9saXN0IG9mIChrZXkgKiBtc2cpIGxpc3QgKiBrZXkgbGlzdCByZWZcbiAgKCogbWV0YS1vcHRpb25zIHRvIHNldCBzZXZlcmFsIG9wdGlvbnMgYXQgb25jZTpcbiAgICAgLSAxc3Qgb3B0aW9uIGxpc3QgaXMgYXBwZW5kZWQgYXMtaXMgd2hlbiB0aGUgb3B0aW9uIGlzIHVzZWRcbiAgICAgLSB3aGVuIDItc3QgbGlzdCBpcyBub3QgZW1wdHksIHRoZSBtZXRhIG9wdGlvbiB0YWtlcyBhbiBhcmd1bWVudCB0aGF0XG4gICAgIGlzIHBhc3NlZCB0byBlYWNoIG9wdGlvbiBpbiB0aGUgbGlzdFxuICAgICAtIHRoZSBrZXlzIGluIGJvdGggbGlzdHMgbXVzdCBhcHBlYXIgYXMgcmVndWxhciBvcHRpb25zIGFzIHdlbGwhXG4gICopXG4gIHwgTXVsdGkgb2Yga2V5IGxpc3QgKiBrZXkgbGlzdFxuICAgICgqIG1ldGEtb3B0aW9ucywgdGFrZSBhIGxpc3Qgb2YgKGssZXh0KTprZXkqc3RyaW5nIGFuZCBnaXZlIHRvIHRoZSBvcHRpb24gayB0aGUgcGFyYW1ldGVyIHNeZXh0ICopXG4gIHwgTXVsdGlFeHQgb2YgKGtleSAqIHN0cmluZykgbGlzdFxuXG50eXBlIHQgPSAoa2V5ICogc3BlYyAqIG1zZyAqIChjYXRlZ29yeSAqIHBvc2l0aW9uKSBsaXN0ICogbGV2ZWwpIGxpc3RcblxuKCogVXRpbGl0aWVzICopXG4oKiAqKioqKioqKiogKilcblxubGV0IHNob3dfbGV2ZWwgKGx2bCA6IGxldmVsKSA6IGJvb2wgPVxuICBtYXRjaCBsdmwgd2l0aFxuICB8IE5vcm1hbCAtPiB0cnVlXG4gIHwgRXhwZXJ0IC0+ICFleHBlcnRfbW9kZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlICYmICFleHBlcnRfbW9kZVxuICB8IEhpZGRlbiAtPiBmYWxzZVxuXG5sZXQgc2hvd19sZXZlbF9vcHQgKGx2bF9vcHQgOiBsZXZlbCBvcHRpb24pIDogYm9vbCA9XG4gIG1hdGNoIGx2bF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgbHZsIC0+IHNob3dfbGV2ZWwgbHZsXG5cbmxldCBhY2NlcHRfbGV2ZWxfZGlzcGxheSAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIHwgRXhwZXJ0IC0+IHRydWVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZVxuICB8IEhpZGRlbiAtPiBmYWxzZVxuXG5sZXQgYWNjZXB0X2xldmVsX3VzZSAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIHwgRXhwZXJ0IHwgSGlkZGVuIC0+IHRydWVcbiAgfCBEZXZlbG9wcGVyIC0+ICFkZXZfbW9kZVxuXG5sZXQgaXNrZXkgKGsgOiBrZXkpID0gU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJ1xuXG4oKiAtLVhYWCA9PiAtLW5vLVhYWCAqKVxubGV0IG5va2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS1uby1cIiBeIFN0cmluZy5zdWIgayAyIChTdHJpbmcubGVuZ3RoIGsgLSAyKVxuICBlbHNlIGlmIFN0cmluZy5sZW5ndGggayA+IDEgJiYgay5bMF0gPSAnLScgdGhlblxuICAgIFwiLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDEgKFN0cmluZy5sZW5ndGggayAtIDEpXG4gIGVsc2VcbiAgICBmYWlsd2l0aCAoayBeIFwiIG9wdGlvbiAobm8pIGRvZXMgbm90IGJlZ2luIHdpdGggLS0gbm9yIC1cIilcblxuKCogLS1YWFggPT4gLS0obm8tKVhYWCAqKVxubGV0IGFsdGtleSAoayA6IGtleSkgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nIHRoZW5cbiAgICBcIi0tKG5vLSlcIiBeIFN0cmluZy5zdWIgayAyIChTdHJpbmcubGVuZ3RoIGsgLSAyKVxuICBlbHNlIGlmIFN0cmluZy5sZW5ndGggayA+IDEgJiYgay5bMF0gPSAnLScgdGhlblxuICAgIFwiLShuby0pXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChhbHQpIGRvZXMgbm90IGJlZ2luIHdpdGggLS0gbm90IC0gXCIpXG5cbigqIGN1dHMgYSBzdHJpbmcgaW50byBzcGFjZS1zZXBhcmF0ZWQgc3ViLXN0cmluZ3MgKilcbmxldCBjdXRfbGlzdCAocyA6IHN0cmluZykgOiBzdHJpbmcgbGlzdCA9XG4gIGxldCByZWMgZG9pdCBhY2N1bSBwb3MgPVxuICAgIHRyeVxuICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXhfZnJvbSBzIHBvcyAnICcgaW5cbiAgICAgIGlmIGkgPSBwb3MgdGhlblxuICAgICAgICBkb2l0IGFjY3VtIChpICsgMSlcbiAgICAgIGVsc2VcbiAgICAgICAgZG9pdCAoU3RyaW5nLnN1YiBzIHBvcyAoaSAtIHBvcykgOjogYWNjdW0pIChpICsgMSlcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgaWYgcG9zIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgU3RyaW5nLnN1YiBzIHBvcyAoU3RyaW5nLmxlbmd0aCBzIC0gcG9zKSA6OiBhY2N1bVxuICAgICAgZWxzZVxuICAgICAgICBhY2N1bVxuICBpblxuICBMaXN0LnJldiAoZG9pdCBbXSAwKVxuXG4oKiBvcmRlciBieSBjYXRlZ29yeSAqKVxubGV0IHAgKF8sIF8sIF8sIGwsIF8pIChfLCBfLCBfLCBsJywgXykgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gIHwgWyAoXywgaSkgXSwgWyAoXywgaScpIF0gLT4gY29tcGFyZSBpIGknXG4gIHwgKFtdIHwgXyA6OiBfIDo6IF8pLCBfIHwgXywgKFtdIHwgXyA6OiBfIDo6IF8pIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgb3JkZXIgKGEgOiB0KSA9XG4gIGxldCBvcmRlcmVkID0gcmVmIFN0cmluZ0ludE1hcC5lbXB0eSBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChhLCBiLCBjLCBjYXQsIGx2bCkgLT5cbiAgICAgIGlmIGFjY2VwdF9sZXZlbF91c2UgbHZsIHRoZW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoY2F0LCBpKSAtPlxuICAgICAgICAgICAgbGV0IGFzc28sIG9sZF9sdmwgPVxuICAgICAgICAgICAgICBTdHJpbmdJbnRNYXAuZmluZF9kZWZhdWx0IChbXSwgSGlkZGVuKSBjYXQgIW9yZGVyZWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvcmRlcmVkIDo9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5hZGQgY2F0XG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBbIGNhdCwgaSBdLCBsdmwpIDo6IGFzc28sIG1pbl9sZXZlbCBsdmwgb2xkX2x2bClcbiAgICAgICAgICAgICAgICAhb3JkZXJlZClcbiAgICAgICAgICBjYXQpXG4gICAgYTtcbiAgb3JkZXJlZCA6PSBTdHJpbmdJbnRNYXAubWFwIChmdW4gKGEsIGIpIC0+IExpc3Quc29ydCBwIGEsIGIpICFvcmRlcmVkO1xuICAhb3JkZXJlZFxuXG4oKiBzYW5pdHkgY2hlY2tpbmcgKilcbmxldCBjaGVjayAoYSA6IHQpID1cbiAgKCogY2hlY2sgZHVwbGljYXRlcyAmIGNvbXB1dGUgb3B0aW9uIGxpc3QgKilcbiAgbGV0IG9wdHMgPSByZWYgU3RyaW5nU2V0LmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGtleSwgYiwgXywgXywgXykgLT5cbiAgICAgIGlmIGIgPSBWb2lkIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgaWYgU3RyaW5nU2V0Lm1lbSBrZXkgIW9wdHMgfHwgU3RyaW5nU2V0Lm1lbSAobm9rZXkga2V5KSAhb3B0cyB0aGVuXG4gICAgICAgIGZhaWx3aXRoIChcIkR1cGxpY2F0ZSBvcHRpb24gXCIgXiBrZXkpO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIGtleSAhb3B0cztcbiAgICAgIG9wdHMgOj0gU3RyaW5nU2V0LmFkZCAobm9rZXkga2V5KSAhb3B0cylcbiAgICBhO1xuICAoKiBjaGVjayBzdWItb3B0aW9ucyBpbiBNdWxpLW9wdGlvbnMgKilcbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCB0LCBfLCBfLCBfKSAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE11bHRpIChhLCBiKSAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4gcyAtPlxuICAgICAgICAgICAgICBpZiBpc2tleSBzICYmIG5vdCAoU3RyaW5nU2V0Lm1lbSBzICFvcHRzKSB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggKFwiVW5rbm93biBvcHRpb24gXCIgXiBzIF4gXCIgaW4gbXVsdGktb3B0aW9uIFwiIF4ga2V5KSlcbiAgICAgICAgaW5cbiAgICAgICAgZiBhO1xuICAgICAgICBmIGJcbiAgICAgIHwgVm9pZCB8IEludCBfIHwgRmxvYXQgXyB8IENob2ljZSBfIHwgQm9vbCBfIHwgSW50X29wdCBfIHwgU3RyaW5nIF9cbiAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXyB8IFN0cmluZ19vcHQgXyB8IFN0cmluZ19saXN0IF8gfCBGbG9hdF9vcHQgX1xuICAgICAgfCBDaG9pY2VfbGlzdCAoXywgXylcbiAgICAgIHwgTXVsdGlFeHQgXyAtPlxuICAgICAgICAoKSlcbiAgICBhXG5cbigqIENvbW1hbmQtbGluZSBpbnRlcmZhY2UgKilcbigqICoqKioqKioqKioqKioqKioqKioqKiogKilcblxuKCogcHJpbnRzIGEgc3RyaW5nIHdpdGggYnJlYWtzIGluc3RlYWQgb2Ygc3BhY2UgKilcbmxldCBwcmludF9tc2cgZiAocyA6IHN0cmluZykgPVxuICBQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoY3V0X2xpc3QgcylcblxuKCogZG9jdW1lbnQgdGhlIG9wdGlvbnMgb24gdGhlIHN0YW5kYXJkIG91dHB1dCEgKilcbmxldCBwcmludF9vcHRpb24gdmVyYm9zZSBmIChrZXksIHNwZWMsIG1zZywgX2NhdCwgX2x2bCkgPVxuICBsZXQga2V5MiA9IGFsdGtleSBrZXkgaW5cbiAgKG1hdGNoIHNwZWMgd2l0aFxuICB8IEJvb2wgciAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzICAgIChkZWZhdWx0OiAlcylALlwiIGtleTJcbiAgICAgIChpZiAhciB0aGVuXG4gICAgICAgICBcImVuYWJsZWRcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwiZGlzYWJsZWRcIilcbiAgfCBWb2lkIC0+ICgpXG4gIHwgSW50IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGludD4gICAoZGVmYXVsdDogJWkpQC5cIiBrZXkgIXJcbiAgfCBJbnRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleTIgaSlcbiAgfCBTdHJpbmcgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBcIlwiIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleVxuICAgIHwgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogJXMpQC5cIiBrZXkgcylcbiAgfCBTdHJpbmdfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0ICVzKUAuXCIga2V5MiBzKVxuICB8IFN0cmluZ19saXN0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiAuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0ICVhKUAuXCIga2V5MlxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKVxuICAgICAgICBsKVxuICB8IFN0cmluZ05icl9saXN0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiA8Li4uICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgbCAtPlxuICAgICAgbGV0IHJlYyBhdXggbGlzdCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChoMSwgaDIpIDo6IHRhaWwgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWVzPiA8dmFsdWU+IChkZWZhdWx0ICVzICVzKVwiIGtleTIgaDEgaDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eCB0YWlsXG4gICAgICAgIHwgW10gLT4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCJcbiAgICAgIGluXG4gICAgICBhdXggbClcbiAgfCBGbG9hdCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdCAlZilALlwiIGtleSAhclxuICB8IEZsb2F0X29wdCByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IFNvbWUgdiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6ICVmKUAuXCIga2V5MiB2KVxuICB8IENob2ljZSAobCwgXywgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF0gQCAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5XG4gICAgICAoUHAubGlzdFxuICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgfEAgXCIpXG4gICAgICAgICAoZnVuIGYgKGtleSwgX21zZykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIGtleSkpXG4gICAgICBsICFyXG4gIHwgQ2hvaWNlX2xpc3QgKGwsIHIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgQFslYUBdQC5cIiBrZXkyXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGtleSwgX21zZykgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslcyVzXVwiIGtleVxuICAgICAgICAgICAgIChpZiBMaXN0Lm1lbSBrZXkgIXIgdGhlblxuICAgICAgICAgICAgICAgIFwiIChkZWZhdWx0KVwiXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBcIlwiKSkpXG4gICAgICBsXG4gIHwgTXVsdGkgKF8sIFtdKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlc0AuXCIga2V5XG4gIHwgTXVsdGkgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8dmFsdWU+QC5cIiBrZXlcbiAgfCBNdWx0aUV4dCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleSk7XG5cbiAgKCogc2hvd3MgZGVzY3JpcHRpb24gaWYgaW4gdmVyYm9zZSBtb2RlICopXG4gIGlmIHZlcmJvc2UgJiYgbXNnIDw+IFwiXCIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiICAgICAgQFslYUBdQC5cIiBwcmludF9tc2cgbXNnXG5cbmxldCBwcmludF9oZWxwIChoZWFkZXIgOiBib29sKSAodmVyYm9zZSA6IGJvb2wpIGYgKGEgOiB0KSA9XG4gIGxldCBuYiA9IHJlZiAwIGluXG5cbiAgKCogZ2VuZXJhbCBvcHRpb25zICopXG4gIGlmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALkdlbmVyYWwgb3B0aW9uc0AuXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0taGVscCAgICAgICAgICAgIFZlcmJvc2UgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAtaCAgICAgICAgICAgICAgIFNob3J0IGhlbHBALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLXZlcnNpb24gICAgICAgICBTaG93IHZlcnNpb24gbnVtYmVyQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1ndWkgICAgICAgICAgICAgR1VJIHRvIHNlbGVjdEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tKG5vLSlleHBlcnQgICAgIEV4cGVydCBtb2RlIChtb3JlIG9wdGlvbnMpQC5cIjtcbiAgaW5jciBuYjtcbiAgaWYgdmVyYm9zZSAmJiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIjtcblxuICAoKiBkdW1wICopXG4gIFN0cmluZ0ludE1hcC5pdGVyXG4gICAgKGZ1biAoY2F0LCBfLCBsdmxfb3B0KSAobCwgbHZsKSAtPlxuICAgICAgaWYgc2hvd19sZXZlbF9vcHQgbHZsX29wdCAmJiBzaG93X2xldmVsIGx2bCB0aGVuIChcbiAgICAgICAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIiVzQC5cIiBjYXQ7XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKChfLCBfLCBfLCBfLCBsdmwpIGFzIHgpIC0+XG4gICAgICAgICAgICBpZiBzaG93X2xldmVsIGx2bCB0aGVuIChcbiAgICAgICAgICAgICAgaW5jciBuYjtcbiAgICAgICAgICAgICAgcHJpbnRfb3B0aW9uIHZlcmJvc2UgZiB4XG4gICAgICAgICAgICApKVxuICAgICAgICAgIGw7XG4gICAgICAgIGlmIGhlYWRlciAmJiB2ZXJib3NlIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuXCJcbiAgICAgICkpXG4gICAgKG9yZGVyIGEpO1xuXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWkgb3B0aW9ucylALlwiICFuYlxuXG4oKiBwYXJzZSB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgZ2l2ZW4gYXMgYSBsaXN0IG9mIHN0cmluZ3MsXG4gICByZXR1cm5zIHRoZSBsaXN0IG9mIG5vbi1vcHRpb25zIChmaWxlbmFtZXMpIGluIHJldmVyc2Ugb3JkZXIpXG4qKVxubGV0IHBhcnNlX2xpc3QgfndpdGhfdGsgP3RpdGxlIChhIDogdCkgKGwgOiBzdHJpbmcgbGlzdCkgOiBzdHJpbmcgbGlzdCA9XG4gIGxldCBsb25nX2hlbHAgPSByZWYgZmFsc2VcbiAgYW5kIHNob3J0X2hlbHAgPSByZWYgZmFsc2VcbiAgYW5kIHNob3dfdmVyc2lvbiA9IHJlZiBmYWxzZSBpblxuXG4gIGxldCByZWMgZG9pdCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgb3B0IDo6IHJlbSAtPlxuICAgICAgKCogLSBtZWFucyBubyBtb3JlIG9wdGlvbnM6IHRoZSByZXN0IGFyZSBmaWxlbmFtZXMgKilcbiAgICAgIGlmIG9wdCA9IFwiLVwiIHRoZW5cbiAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHJlbSBhY2N1bVxuICAgICAgKCogaGVscCBvcHRpb25zICopXG4gICAgICBlbHNlIGlmIG9wdCA9IFwiLWhlbHBcIiB8fCBvcHQgPSBcIi0taGVscFwiIHRoZW4gKFxuICAgICAgICBsb25nX2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi1oXCIgdGhlbiAoXG4gICAgICAgICgqIHNob3J0ZXIgbGlzdCAqKVxuICAgICAgICBzaG9ydF9oZWxwIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHZlcnNpb24gbnVtYmVyICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLXZlcnNpb25cIiB0aGVuIChcbiAgICAgICAgc2hvd192ZXJzaW9uIDo9IHRydWU7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIGV4cGVydCAqKVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tbm8tZXhwZXJ0XCIgdGhlbiAoXG4gICAgICAgIGV4cGVydF9tb2RlIDo9IGZhbHNlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbSAoKiByZWd1bGFyIG9wdGlvbiwgc3RhcnRpbmcgd2l0aCBcIi1cIiAqKVxuICAgICAgKSBlbHNlIGlmIFN0cmluZy5sZW5ndGggb3B0ID4gMSAmJiBvcHQuWzBdID0gJy0nIHRoZW4gKFxuICAgICAgICBsZXQgKChrZXksIHNwZWMsIF8sIF8sIF8pIGFzIGFhKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgICAgKGZ1biAoa2V5LCBfc3BlYywgX21zZywgX2NhdCwgbHZsKSAtPlxuICAgICAgICAgICAgICAgIGFjY2VwdF9sZXZlbF91c2UgbHZsICYmIChvcHQgPSBrZXkgfHwgb3B0ID0gbm9rZXkga2V5KSlcbiAgICAgICAgICAgICAgYVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmXG4gICAgICAgICAgICAgIFwiSGVyZSBpcyB0aGUgbGlzdCBvZiByZWNvZ25pemVkIG9wdGlvbnNALiVhQC5VbnJlY29nbml6ZWQgXFxcbiAgICAgICAgICAgICAgIG9wdGlvbjogJXNALkAuXCJcbiAgICAgICAgICAgICAgKHByaW50X2hlbHAgdHJ1ZSBmYWxzZSkgYSBvcHQ7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNwZWMsIHJlbSB3aXRoXG4gICAgICAgICAgICB8IEJvb2wgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gb3B0ID0ga2V5O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gMDtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IGludF9vZl9zdHJpbmcgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgKGludF9vZl9zdHJpbmcgdik7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nIHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFwiXCI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBTb21lIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCBfLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPiByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgciwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSB2IDo6ICFyO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX2xpc3QgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gW107XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPiByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nTmJyX2xpc3QgXywgWyBfIF0gd2hlbiBvcHQgPSBrZXkgLT4gZmFpbHdpdGggXCJpbnZhbGlkIHBhaXJcIlxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCByLCB2JyA6OiB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9ICh2LCB2JykgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gMC47XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IGZsb2F0X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgKGZsb2F0X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0X29wdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlIChsLCBsJywgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgKG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpKVxuICAgICAgICAgICAgICAgICYmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biBrIC0+IHYgPSBrKSBsJylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBjaG9pY2VcIjtcbiAgICAgICAgICAgICAgciA6PSB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgQ2hvaWNlX2xpc3QgKGwsIHIpLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIChmdW4gKGssIF8pIC0+IHYgPSBrKSBsKSB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAoX2wsIHIpLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCBbXSksIHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmUgKGRvaXQgW10geCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSAoeCwgeSksIHYgOjogcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdCAoZnVuIF8gbCAtPiBkb2l0IFtdIFsgbDsgdiBdKSBhY2N1bSB5KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpRXh0IGwsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIF8gKGwsIHMpIC0+IGRvaXQgW10gWyBsOyB2IF4gcyBdKSBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpRXh0IGwsIHJlbSAtPlxuICAgICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gKGwsIHMpIC0+IGRvaXQgW10gWyBub2tleSBsOyBzIF0pXG4gICAgICAgICAgICAgICAgICAgYWNjdW0gbCk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBNdWx0aSBfLCBbXSB8IChWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8pLCBfIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW52YWxpZCBvcHRpb24gb3IgYXJndW1lbnRcIlxuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgRm9ybWF0LnByaW50ZiBcIldyb25nIG9wdGlvbiBvciBhcmd1bWVudCBmb3IgJXNALiVhXCIgb3B0XG4gICAgICAgICAgICAgIChwcmludF9vcHRpb24gZmFsc2UpIGFhO1xuICAgICAgICAgICAgZmFpbHdpdGggXCJiYWQgb3B0aW9uXCJcbiAgICAgICAgaW5cbiAgICAgICAgZG9pdCBhY2N1bSByZW1cbiAgICAgICAgKCogZG9lcyBub3Qgc3RhcnQgd2l0aCAtID0+IHRoaXMgaXMgZmlsZW5hbWUgKilcbiAgICAgICkgZWxzZVxuICAgICAgICBkb2l0IChvcHQgOjogYWNjdW0pIHJlbVxuICBpblxuXG4gIGxldCBmaWxlbmFtZXMgPSBkb2l0IFtdIGwgaW5cbiAgaWYgIXNob3dfdmVyc2lvbiB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJXMgQC4od2l0aCVzIFRrIGludGVyZmFjZSlALlwiXG4gICAgICAobWF0Y2ggdGl0bGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb24udmVyc2lvbl9rYXNhX2Z1bGxfbmFtZVxuICAgICAgfCBTb21lIHggLT4geClcbiAgICAgIChpZiB3aXRoX3RrIHRoZW5cbiAgICAgICAgIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIm91dFwiKTtcbiAgICBleGl0IDBcbiAgKSBlbHNlIGlmICFsb25nX2hlbHAgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVhXCIgKHByaW50X2hlbHAgdHJ1ZSB0cnVlKSBhO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIXNob3J0X2hlbHAgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIiVhXCIgKHByaW50X2hlbHAgdHJ1ZSBmYWxzZSkgYTtcbiAgICBleGl0IDBcbiAgKTtcbiAgKCogTGlzdC5jb25jYXQqKSBmaWxlbmFtZXMgKCooTGlzdC5tYXAgV29yZGV4cC53b3JkZXhwIGZpbGVuYW1lcykqKVxuIiwiKCogTGFibFRLIEdVSSBmb3Igb3B0aW9uIHNlbGVjdGlvbiBTdXBlcmFyZy5cblxuICAgQ29weXJpZ2h0IChDKSBBbnRvaW5lIE1pbmUnIDIwMDZcbiAgIExpZ2h0IFZlcnNpb24gKEplcm9tZSBGZXJldClcbiAgIFRoaXMgTElHSFQgdmVyc2lvbiBkb2VzIG5vdCByZXF1aXJlIGxhYmx0a1xuKilcblxuZXhjZXB0aW9uIEV4aXQgb2Ygc3RyaW5nIGxpc3RcblxuKCogTUFJTiAqKVxuKCogKioqKiAqKVxuXG5sZXQgcGFyc2UgP3RpdGxlIChhIDogU3VwZXJhcmcudCkgKGRlZiA6IHN0cmluZyBsaXN0IHJlZikgPVxuICBTdXBlcmFyZy5jaGVjayBhO1xuICAoKiBkcm9wIHRoZSBmaXJzdCBjb21tYW5kLWxpbmUgYXJndW1lbnQ6IGl0IGlzIHRoZSBleGVjdXRhYmxlIG5hbWUgKilcbiAgbGV0IGFyZ3MgPSBMaXN0LnRsIChBcnJheS50b19saXN0IFN5cy5hcmd2KSBpblxuICAoKiBpZiBubyBhcmd1bWVudCBvciBcIi0tZ3VpXCIgZ2l2ZW4sIGxhdW5jaCB0aGUgZ3VpLCBvdGhlcndpc2UsIHBhcnNlIGFyZ3MgKilcbiAgbGV0IHJlbSA9XG4gICAgaWZcbiAgICAgIGFyZ3MgPSBbXSB8fCBhcmdzID0gWyBcIi0tZXhwZXJ0XCIgXSB8fCBhcmdzID0gWyBcIi0tbm8tZXhwZXJ0XCIgXVxuICAgICAgfHwgTGlzdC5leGlzdHMgKCggPSApIFwiLS1ndWlcIikgYXJnc1xuICAgIHRoZW5cbiAgICAgIFN1cGVyYXJnLnBhcnNlX2xpc3QgfndpdGhfdGs6ZmFsc2UgP3RpdGxlIGFcbiAgICAgICAgKGlmIExpc3QuZXhpc3RzICgoID0gKSBcIi0tZXhwZXJ0XCIpIGFyZ3MgdGhlblxuICAgICAgICAgICBbIFwiLS1oZWxwXCI7IFwiLS1leHBlcnRcIiBdXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFsgXCItLWhlbHBcIiBdKVxuICAgIGVsc2VcbiAgICAgIFN1cGVyYXJnLnBhcnNlX2xpc3QgfndpdGhfdGs6ZmFsc2UgP3RpdGxlIGEgYXJnc1xuICBpblxuICBpZiByZW0gPD4gW10gdGhlbiBkZWYgOj0gcmVtXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZGF0YV9zZXQgPSBcIkRhdGEgc2V0XCIsIDAsIE5vbmVcbmxldCBvdXRwdXQgPSBcIk91dHB1dFwiLCAxLCBOb25lXG5sZXQgc2VtYW50aWNzID0gXCJTZW1hbnRpY3NcIiwgMiwgTm9uZVxubGV0IGludGVncmF0aW9uX3NldHRpbmdzID0gXCJJbnRlZ3JhdGlvbiBzZXR0aW5nc1wiLCAzLCBOb25lXG5sZXQgbW9kZWxfcmVkdWN0aW9uID0gXCJNb2RlbCByZWR1Y3Rpb25cIiwgNCwgTm9uZVxubGV0IHN0YXRpY19hbmFseXNpcyA9IFwiU3RhdGljIGFuYWx5c2lzXCIsIDUsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5sZXQgZGVidWdfbW9kZSA9IFwiRGVidWcgbW9kZVwiLCA2LCBTb21lIFN1cGVyYXJnLkV4cGVydFxuXG50eXBlIHQgPSB7IG11dGFibGUgYmFja3RyYWNlOiBib29sOyBtdXRhYmxlIGRlYnVnOiBib29sIH1cblxudHlwZSB0X2d1aSA9IHtcbiAgYmFja3RyYWNlX2d1aTogYm9vbCByZWY7XG4gIGRlYnVnX2d1aTogYm9vbCByZWY7XG4gIHZlcnNpb25fZ3VpOiBib29sIHJlZjtcbiAgZ2x1dHRvbnlfZ3VpOiBib29sIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID0geyBiYWNrdHJhY2UgPSBmYWxzZTsgZGVidWcgPSBmYWxzZSB9XG5cbmxldCBkZWZhdWx0X2d1aSA9XG4gIHtcbiAgICBiYWNrdHJhY2VfZ3VpID0gcmVmIGZhbHNlO1xuICAgIGRlYnVnX2d1aSA9IHJlZiBmYWxzZTtcbiAgICB2ZXJzaW9uX2d1aSA9IHJlZiBmYWxzZTtcbiAgICBnbHV0dG9ueV9ndWkgPSByZWYgZmFsc2U7XG4gIH1cblxubGV0IGRvX3ZlcnNpb24gKCkgPVxuICBGb3JtYXQucHJpbnRfc3RyaW5nIFZlcnNpb24udmVyc2lvbl9tc2c7XG4gIEZvcm1hdC5wcmludF9uZXdsaW5lICgpO1xuICBleGl0IDBcblxubGV0IGRvX2dsdXR0b255ICgpID1cbiAgR2Muc2V0IHsgKEdjLmdldCAoKSkgd2l0aCBHYy5zcGFjZV9vdmVyaGVhZCA9IDUwMCAoKmRlZmF1bHQgODAqKSB9XG5cbmxldCBnZXRfZnJvbV9ndWkgdF9ndWkgPVxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLnZlcnNpb25fZ3VpKSB0aGVuIGRvX3ZlcnNpb24gKCkgaW5cbiAgbGV0ICgpID0gaWYgISh0X2d1aS5nbHV0dG9ueV9ndWkpIHRoZW4gZG9fZ2x1dHRvbnkgKCkgaW5cbiAgeyBiYWNrdHJhY2UgPSAhKHRfZ3VpLmJhY2t0cmFjZV9ndWkpOyBkZWJ1ZyA9ICEodF9ndWkuZGVidWdfZ3VpKSB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5iYWNrdHJhY2UgPC0gdF90bXAuYmFja3RyYWNlO1xuICB0LmRlYnVnIDwtIHRfdG1wLmRlYnVnXG5cbmxldCBvcHRpb25zX2dlbiB0IHRfZ3VpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12ZXJzaW9uXCIsXG4gICAgICBBcmcuVW5pdCBkb192ZXJzaW9uLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS52ZXJzaW9uX2d1aSxcbiAgICAgIFwiZGlzcGxheSB2ZXJzaW9uIG51bWJlclwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLS1kZWJ1Z1wiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmRlYnVnIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5kZWJ1Z19ndWksXG4gICAgICBcIkVuYWJsZSBkZWJ1ZyBtb2RlXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDEgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWJhY2t0cmFjZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LmJhY2t0cmFjZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuYmFja3RyYWNlX2d1aSxcbiAgICAgIFwiQmFja3RyYWNpbmcgZXhjZXB0aW9uc1wiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAyIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLS1nbHV0dG9ueVwiLFxuICAgICAgQXJnLlVuaXQgZG9fZ2x1dHRvbnksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmdsdXR0b255X2d1aSxcbiAgICAgIFwiTG93ZXIgZ2MgYWN0aXZpdHkgZm9yIGEgZmFzdGVyIGJ1dCBtZW1vcnkgaW50ZW5zaXZlIHNpbXVsYXRpb25cIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMyBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gIF1cblxubGV0IG9wdGlvbnMgdCA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIGIsIF8sIGMsIF8sIF8pIC0+IGEsIGIsIGMpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiB0IGRlZmF1bHRfZ3VpKSlcblxubGV0IG9wdGlvbnNfZ3VpIHRfZ3VpID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgXywgYiwgYywgZCwgZSkgLT4gYSwgYiwgYywgZCwgZSlcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIGRlZmF1bHQgdF9ndWkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGlucHV0S2FwcGFGaWxlTmFtZXM6IHN0cmluZyBsaXN0O1xuICBtdXRhYmxlIG1pblZhbHVlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgbWF4VmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBwbG90UGVyaW9kOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgb3V0cHV0RGF0YUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG4gIG11dGFibGUgYmF0Y2htb2RlOiBib29sO1xuICBtdXRhYmxlIGludGVyYWN0aXZlOiBib29sO1xuICBtdXRhYmxlIHN5bnRheFZlcnNpb246IEFzdC5zeW50YXhfdmVyc2lvbjtcbn1cblxudHlwZSB0X2d1aSA9IHtcbiAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWk6IHN0cmluZyBsaXN0IHJlZjtcbiAgbWluVmFsdWVfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBtYXhWYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIHBsb3RQZXJpb2RfZ3VpOiBmbG9hdCBvcHRpb24gcmVmO1xuICBvdXRwdXREYXRhRmlsZV9ndWk6IHN0cmluZyBvcHRpb24gcmVmO1xuICBvdXRwdXREaXJlY3RvcnlfZ3VpOiBzdHJpbmcgcmVmO1xuICBzeW50YXhWZXJzaW9uX2d1aTogc3RyaW5nIHJlZjtcbiAgYmF0Y2htb2RlX2d1aTogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXMgPSBbXTtcbiAgICBtaW5WYWx1ZSA9IE5vbmU7XG4gICAgbWF4VmFsdWUgPSBOb25lO1xuICAgIHBsb3RQZXJpb2QgPSBOb25lO1xuICAgIG91dHB1dERhdGFGaWxlID0gTm9uZTtcbiAgICBvdXRwdXREaXJlY3RvcnkgPSBcIi5cIjtcbiAgICBzeW50YXhWZXJzaW9uID0gQXN0LlY0O1xuICAgIGJhdGNobW9kZSA9IGZhbHNlO1xuICAgIGludGVyYWN0aXZlID0gZmFsc2U7XG4gIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpID0gcmVmIFtdO1xuICAgIG1pblZhbHVlX2d1aSA9IHJlZiAoU29tZSAwLik7XG4gICAgbWF4VmFsdWVfZ3VpID0gcmVmIChTb21lIDEuKTtcbiAgICBwbG90UGVyaW9kX2d1aSA9IHJlZiAoU29tZSAwLjAxKTtcbiAgICBvdXRwdXREYXRhRmlsZV9ndWkgPSByZWYgKFNvbWUgXCJkYXRhLmNzdlwiKTtcbiAgICBvdXRwdXREaXJlY3RvcnlfZ3VpID0gcmVmIFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb25fZ3VpID0gcmVmIFwiNFwiO1xuICAgIGJhdGNobW9kZV9ndWkgPSByZWYgXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCByZWMgYXV4IGwgYWNjdSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8ICh2LCB2YXJfdmFsKSA6OiB0YWlsIC0+XG4gICAgYXV4IHRhaWxcbiAgICAgICgoIHYsXG4gICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiB2YXJfdmFsIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlXCIpKSApXG4gICAgICA6OiBhY2N1KVxuICB8IFtdIC0+IGFjY3VcblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIHtcbiAgICBtaW5WYWx1ZSA9ICEodF9ndWkubWluVmFsdWVfZ3VpKTtcbiAgICBtYXhWYWx1ZSA9ICEodF9ndWkubWF4VmFsdWVfZ3VpKTtcbiAgICBwbG90UGVyaW9kID0gISh0X2d1aS5wbG90UGVyaW9kX2d1aSk7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9ICEodF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkpO1xuICAgIG91dHB1dERhdGFGaWxlID0gISh0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWkpO1xuICAgIG91dHB1dERpcmVjdG9yeSA9ICEodF9ndWkub3V0cHV0RGlyZWN0b3J5X2d1aSk7XG4gICAgc3ludGF4VmVyc2lvbiA9XG4gICAgICAobWF0Y2ggISh0X2d1aS5zeW50YXhWZXJzaW9uX2d1aSkgd2l0aFxuICAgICAgfCBcIjNcIiB8IFwidjNcIiB8IFwiVjNcIiAtPiBBc3QuVjNcbiAgICAgIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gQXN0LlY0XG4gICAgICB8IF9zIC0+IEFzdC5WNCk7XG4gICAgYmF0Y2htb2RlID0gVG9vbHMubG93ZXJjYXNlICEodF9ndWkuYmF0Y2htb2RlX2d1aSkgPSBcImJhdGNoXCI7XG4gICAgaW50ZXJhY3RpdmUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiaW50ZXJhY3RpdmVcIjtcbiAgfVxuXG5sZXQgY29weV9mcm9tX2d1aSB0X2d1aSB0ID1cbiAgbGV0IHRfdG1wID0gZ2V0X2Zyb21fZ3VpIHRfZ3VpIGluXG4gIHQubWluVmFsdWUgPC0gdF90bXAubWluVmFsdWU7XG4gIHQubWF4VmFsdWUgPC0gdF90bXAubWF4VmFsdWU7XG4gIHQucGxvdFBlcmlvZCA8LSB0X3RtcC5wbG90UGVyaW9kO1xuICB0LmlucHV0S2FwcGFGaWxlTmFtZXMgPC0gdF90bXAuaW5wdXRLYXBwYUZpbGVOYW1lcztcbiAgdC5vdXRwdXREYXRhRmlsZSA8LSB0X3RtcC5vdXRwdXREYXRhRmlsZTtcbiAgdC5vdXRwdXREaXJlY3RvcnkgPC0gdF90bXAub3V0cHV0RGlyZWN0b3J5O1xuICB0LnN5bnRheFZlcnNpb24gPC0gdF90bXAuc3ludGF4VmVyc2lvbjtcbiAgdC5iYXRjaG1vZGUgPC0gdF90bXAuYmF0Y2htb2RlO1xuICB0LmludGVyYWN0aXZlIDwtIHRfdG1wLmludGVyYWN0aXZlXG5cbmxldCBvcHRpb25zX2dlbiAodCA6IHQpICh0X2d1aSA6IHRfZ3VpKSA6XG4gICAgKHN0cmluZ1xuICAgICogQXJnLnNwZWNcbiAgICAqIFN1cGVyYXJnLnNwZWNcbiAgICAqIHN0cmluZ1xuICAgICogKFN1cGVyYXJnLmNhdGVnb3J5ICogU3VwZXJhcmcucG9zaXRpb24pIGxpc3RcbiAgICAqIFN1cGVyYXJnLmxldmVsKVxuICAgIGxpc3QgPVxuICBbXG4gICAgKCBcIi1pXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZmljIC0+IHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSBmaWMgOjogdC5pbnB1dEthcHBhRmlsZU5hbWVzKSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19saXN0IHRfZ3VpLmlucHV0S2FwcGFGaWxlTmFtZXNfZ3VpLFxuICAgICAgXCJuYW1lIG9mIGEga2FwcGEgZmlsZSB0byB1c2UgYXMgaW5wdXQgKGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGZvciBcXFxuICAgICAgIG11bHRpcGxlIGlucHV0IGZpbGVzKVwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWluaXRpYWxcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHRpbWUgLT4gdC5taW5WYWx1ZSA8LSBTb21lIHRpbWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1pblZhbHVlX2d1aSxcbiAgICAgIFwiTWluIHRpbWUgb2Ygc2ltdWxhdGlvbiAoYXJiaXRyYXJ5IHRpbWUgdW5pdClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDA7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAwIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLWxcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHRpbWUgLT4gdC5tYXhWYWx1ZSA8LSBTb21lIHRpbWUpLFxuICAgICAgU3VwZXJhcmcuRmxvYXRfb3B0IHRfZ3VpLm1heFZhbHVlX2d1aSxcbiAgICAgIFwiTGltaXQgb2YgdGhlIHNpbXVsYXRpb25cIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDE7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLXRcIixcbiAgICAgIEFyZy5GbG9hdFxuICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgICAgIChcIk9wdGlvbiAnLXQnIGhhcyBiZWVuIHJlcGxhY2UgYnkgJ1stdSB0aW1lXSAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9mbG9hdCBmIF4gXCInXCIpKSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiLFxuICAgICAgW10sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLXBcIixcbiAgICAgIEFyZy5GbG9hdCAoZnVuIHBvaW50TnVtYmVyVmFsdWUgLT4gdC5wbG90UGVyaW9kIDwtIFNvbWUgcG9pbnROdW1iZXJWYWx1ZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkucGxvdFBlcmlvZF9ndWksXG4gICAgICBcInBsb3QgcGVyaW9kOiB0aW1lIGludGVydmFsIGJldHdlZW4gcG9pbnRzIGluIHBsb3QgKGRlZmF1bHQ6IDEuMClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDI7IENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAyIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREYXRhRmlsZSAtPiB0Lm91dHB1dERhdGFGaWxlIDwtIFNvbWUgb3V0cHV0RGF0YUZpbGUpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgIFtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDM7XG4gICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDM7XG4gICAgICBdLFxuICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgKCBcIi1kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gb3V0cHV0RGlyZWN0b3J5IC0+IHQub3V0cHV0RGlyZWN0b3J5IDwtIG91dHB1dERpcmVjdG9yeSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmcgdF9ndWkub3V0cHV0RGlyZWN0b3J5X2d1aSxcbiAgICAgIFwiU3BlY2lmaWVzIGRpcmVjdG9yeSBuYW1lIHdoZXJlIG91dHB1dCBmaWxlKHMpIHNob3VsZCBiZSBzdG9yZWRcIixcbiAgICAgIFtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGF0YV9zZXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5tb2RlbF9yZWR1Y3Rpb24sIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc3RhdGljX2FuYWx5c2lzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDEwMDtcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgICAoIFwiLW1vZGVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgaWYgbSA9IFwiYmF0Y2hcIiB0aGVuXG4gICAgICAgICAgICB0LmJhdGNobW9kZSA8LSB0cnVlXG4gICAgICAgICAgZWxzZSBpZiBtID0gXCJpbnRlcmFjdGl2ZVwiIHRoZW5cbiAgICAgICAgICAgIHQuaW50ZXJhY3RpdmUgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbIFwiYmF0Y2hcIiwgXCJiYXRjaCBtb2RlXCI7IFwiaW50ZXJhY3RpdmVcIiwgXCJpbnRlcmFjdGl2ZSBtb2RlXCIgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0X2d1aS5iYXRjaG1vZGVfZ3VpICksXG4gICAgICBcImVpdGhlciBcXFwiYmF0Y2hcXFwiIHRvIG5ldmVyIGFzayBhbnl0aGluZyB0byB0aGUgdXNlciBvciBcXFwiaW50ZXJhY3RpdmVcXFwiIFxcXG4gICAgICAgdG8gYXNrIHNvbWV0aGluZyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3OyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCA3IF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcIjNcIiB8IFwidjNcIiB8IFwiVjNcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlYzXG4gICAgICAgIHwgXCI0XCIgfCBcInY0XCIgfCBcIlY0XCIgLT4gdC5zeW50YXhWZXJzaW9uIDwtIEFzdC5WNFxuICAgICAgICB8IHMgLT4gcmFpc2UgKEFyZy5CYWQgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBzeW50YXggdmVyc2lvblwiKSkpLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCIzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcInYzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcIlYzXCIsIFwib2xkXCI7XG4gICAgICAgICAgICBcIjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICAgIFwidjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICAgIFwiVjRcIiwgXCJuZXdcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpICksXG4gICAgICBcIlVzZSBleHBsaWNpdCBub3RhdGlvbiBmb3IgZnJlZSBzaXRlXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgOCBdLFxuICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gIF1cblxubGV0IG9wdGlvbnMgdCA9XG4gIExpc3QucmV2X21hcFxuICAgIChmdW4gKGEsIGIsIF8sIGMsIF8sIF8pIC0+IGEsIGIsIGMpXG4gICAgKExpc3QucmV2IChvcHRpb25zX2dlbiB0IGRlZmF1bHRfZ3VpKSlcblxubGV0IG9wdGlvbnNfZ3VpIHRfZ3VpID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgXywgYiwgYywgZCwgZSkgLT4gYSwgYiwgYywgZCwgZSlcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIGRlZmF1bHQgdF9ndWkpKVxuICBAIFtcbiAgICAgICggXCItLW91dHB1dC1wbG90XCIsXG4gICAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDE7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDE7XG4gICAgICAgIF0sXG4gICAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICAgKCBcIi0tZGF0YS1maWxlXCIsXG4gICAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdF9ndWkub3V0cHV0RGF0YUZpbGVfZ3VpLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgZGF0YSBvdXRwdXRcIixcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dCwgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3MsIDI7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDM7XG4gICAgICAgIF0sXG4gICAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYmFyID0geyBtdXRhYmxlIHRpY2tzOiBpbnQ7IGJhcl9zaXplOiBpbnQ7IGJhcl9jaGFyOiBjaGFyIH1cblxudHlwZSB0ZXh0ID0ge1xuICBtdXRhYmxlIGxhc3RfbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgbGFzdF9ldmVudF9uYjogaW50O1xuICBtdXRhYmxlIGxhc3RfdGltZTogZmxvYXQ7XG59XG5cbnR5cGUgdCA9IEJhciBvZiBiYXIgfCBUZXh0IG9mIHRleHRcblxubGV0IGluY190aWNrIGMgPSBjLnRpY2tzIDwtIGMudGlja3MgKyAxXG5cbmxldCBjcmVhdGUgYmFyX3NpemUgYmFyX2NoYXIgPVxuICBpZiBVbml4LmlzYXR0eSBVbml4LnN0ZG91dCB0aGVuXG4gICAgVGV4dCB7IGxhc3RfbGVuZ3RoID0gMDsgbGFzdF90aW1lID0gLTUuOyBsYXN0X2V2ZW50X25iID0gMCB9XG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBmb3IgXyA9IGJhcl9zaXplIGRvd250byAxIGRvXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgXCJfXCJcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpIGluXG4gICAgQmFyIHsgdGlja3MgPSAwOyBiYXJfc2l6ZTsgYmFyX2NoYXIgfVxuICApXG5cbmxldCBwcF9ub3RfbnVsbCBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiAoJS4yZiUlKVwiICh4ICouIDEwMC4pXG4gIHwgTm9uZSAtPiAoKVxuXG5sZXQgcHBfdGV4dCBkZWx0YV90IHRpbWUgdF9yIGV2ZW50IGVfciBmIHMgPVxuICBsZXQgc3RyaW5nID1cbiAgICBGb3JtYXQuYXNwcmludGYgXCIlLjJmIHRpbWUgdW5pdHMlYSBpbiAlaSBldmVudHMlYSV0XCIgdGltZSBwcF9ub3RfbnVsbCB0X3JcbiAgICAgIGV2ZW50IHBwX25vdF9udWxsIGVfciAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggZGVsdGFfdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgZHQgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIChqdXN0IGRpZCAlLjFmIGV2ZW50cy9zKVwiXG4gICAgICAgICAgICAoZmxvYXRfb2ZfaW50IChldmVudCAtIHMubGFzdF9ldmVudF9uYikgLy4gZHQpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyVzJXNAP1wiXG4gICAgICAoU3RyaW5nLm1ha2Ugcy5sYXN0X2xlbmd0aCAnXFxiJylcbiAgICAgIHN0cmluZ1xuICAgICAgKFN0cmluZy5tYWtlIChtYXggMCAocy5sYXN0X2xlbmd0aCAtIFN0cmluZy5sZW5ndGggc3RyaW5nKSkgJyAnKVxuICBpblxuICBzLmxhc3RfbGVuZ3RoIDwtIFN0cmluZy5sZW5ndGggc3RyaW5nXG5cbmxldCByZWMgYXV4X3RpY2sgc29tZXRoaW5nIHMgbiA9XG4gIGlmIG4gPD0gMCB0aGVuXG4gICAgaWYgc29tZXRoaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKVxuICAgIGVsc2VcbiAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9jaGFyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHMuYmFyX2NoYXIgaW5cbiAgICBsZXQgKCkgPSBpbmNfdGljayBzIGluXG4gICAgYXV4X3RpY2sgdHJ1ZSBzIChwcmVkIG4pXG4gIClcblxubGV0IHRpY2sgfmVmZmljaWVuY3kgdGltZSB0X3IgZXZlbnQgZV9yID0gZnVuY3Rpb25cbiAgfCBCYXIgcyAtPlxuICAgIGxldCBuX3QgPSBPcHRpb25fdXRpbC51bnNvbWUgMC4gdF9yICouIGZsb2F0X29mX2ludCBzLmJhcl9zaXplIGluXG4gICAgbGV0IG5fZSA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiBlX3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBhdXhfdGljayBmYWxzZSBzIChpbnRfb2ZfZmxvYXQgKG1heCBuX3Qgbl9lKSAtIHMudGlja3MpXG4gIHwgVGV4dCBzIC0+XG4gICAgbGV0IHJ1biA9IFN5cy50aW1lICgpIGluXG4gICAgbGV0IGR0ID0gcnVuIC0uIHMubGFzdF90aW1lIGluXG4gICAgaWYgZHQgPiAwLjUgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwcF90ZXh0XG4gICAgICAgICAgKGlmIGVmZmljaWVuY3kgdGhlblxuICAgICAgICAgICAgIFNvbWUgZHRcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgdGltZSB0X3IgZXZlbnQgZV9yIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzLmxhc3RfZXZlbnRfbmIgPC0gZXZlbnQgaW5cbiAgICAgIHMubGFzdF90aW1lIDwtIFN5cy50aW1lICgpXG4gICAgKVxuXG5sZXQgY29tcGxldGVfcHJvZ3Jlc3NfYmFyIHRpbWUgZXZlbnQgdCA9XG4gIChtYXRjaCB0IHdpdGhcbiAgfCBCYXIgdCAtPiBhdXhfdGljayBmYWxzZSB0ICh0LmJhcl9zaXplIC0gdC50aWNrcylcbiAgfCBUZXh0IHMgLT4gcHBfdGV4dCBOb25lIHRpbWUgTm9uZSBldmVudCBOb25lIEZvcm1hdC5zdGRfZm9ybWF0dGVyIHMpO1xuICBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG91dHB1dERpck5hbWUgPSByZWYgXCJcIlxubGV0IG1hcnNoYWxpemVkT3V0RmlsZSA9IHJlZiBcIlwiXG5sZXQgY2Zsb3dGaWxlTmFtZSA9IHJlZiBcImNmbG93LmRvdFwiXG5sZXQgYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJjb21wcmVzc2lvbl9zdGF0dXMudHh0XCJcbmxldCB0YXNrc19wcm9maWxpbmdOYW1lID0gcmVmIFwicHJvZmlsaW5nLmh0bWxcIlxubGV0IGZsdXhGaWxlTmFtZSA9IHJlZiBcIlwiXG5cbmxldCBta19kaXJfciBkID1cbiAgbGV0IHJlYyBhdXggZCA9XG4gICAgaWYgbm90IChTeXMuZmlsZV9leGlzdHMgZCkgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhdXggKEZpbGVuYW1lLmRpcm5hbWUgZCkgaW5cbiAgICAgIFVuaXgubWtkaXIgZCAwbzc3NVxuICAgIClcbiAgaW5cbiAgVW5peC5oYW5kbGVfdW5peF9lcnJvciBhdXggZFxuXG5sZXQgb3ZlcndyaXRlX3Blcm1pc3Npb24gPSByZWYgZmFsc2VcblxubGV0IHBhdGggZiA9XG4gIGlmIEZpbGVuYW1lLmlzX2ltcGxpY2l0IGYgdGhlblxuICAgIEZpbGVuYW1lLmNvbmNhdCAhb3V0cHV0RGlyTmFtZSBmXG4gIGVsc2VcbiAgICBmXG5cbmxldCBvcGVuX291dCBmID1cbiAgbGV0IHggPSBwYXRoIGYgaW5cbiAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgb3Blbl9vdXQgeFxuXG5sZXQgcmVjIGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIHYgZXh0ID1cbiAgdHJ5XG4gICAgb3Blbl9vdXRfZ2VuXG4gICAgICBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdXG4gICAgICAwbzY2NlxuICAgICAgKGJhc2UgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgdiBeIGV4dClcbiAgd2l0aCBTeXNfZXJyb3IgXyAtPiBhdXhfb3Blbl9vdXRfZnJlc2ggYmFzZSAoc3VjYyB2KSBleHRcblxubGV0IG9wZW5fb3V0X2ZyZXNoIG5hbWUgY29uY2F0X2xpc3QgZmFjdWx0YXRpdmUgZXh0ID1cbiAgbGV0IG5hbWUgPSBwYXRoIG5hbWUgaW5cbiAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgbmFtZSkgaW5cbiAgbGV0IHRtcF9uYW1lID0gVG9vbHMuY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0IGluXG4gIGxldCBiYXNlID0gU3RyaW5nLmNvbmNhdCBcIl9cIiAodG1wX25hbWUgOjogY29uY2F0X2xpc3QpIGluXG4gIGxldCBvdmVyX2ZsYWcgPVxuICAgIGlmICFvdmVyd3JpdGVfcGVybWlzc2lvbiB0aGVuXG4gICAgICBPcGVuX3RydW5jXG4gICAgZWxzZVxuICAgICAgT3Blbl9leGNsXG4gIGluXG4gIGxldCBmbGFncyA9IFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IG92ZXJfZmxhZzsgT3Blbl90ZXh0IF0gaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZSBeIGV4dClcbiAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgIGxldCBiYXNlJyA9XG4gICAgICBpZiBmYWN1bHRhdGl2ZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgYmFzZSBeIFwiX1wiIF4gZmFjdWx0YXRpdmVcbiAgICAgIGVsc2VcbiAgICAgICAgYmFzZVxuICAgIGluXG4gICAgKHRyeSBvcGVuX291dF9nZW4gZmxhZ3MgMG82NjYgKGJhc2UnIF4gZXh0KVxuICAgICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlJyAwIGV4dClcblxubGV0IHNldCBuYW1lIGV4dF9vcHQgPVxuICBpZiAhbmFtZSA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBleHRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAhbmFtZVxuICAgICAgfCBTb21lIGV4dCAtPlxuICAgICAgICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggIW5hbWUgZXh0IHRoZW5cbiAgICAgICAgICAhbmFtZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgIW5hbWUgXiBcIi5cIiBeIGV4dFxuICAgIGluXG4gICAgbmFtZSA6PSBmbmFtZVxuICApXG5cbmxldCBzZXRPdXRwdXROYW1lICgpID1cbiAgc2V0IGZsdXhGaWxlTmFtZSAoU29tZSBcImRvdFwiKTtcbiAgc2V0IG1hcnNoYWxpemVkT3V0RmlsZSBOb25lXG5cbmxldCBjaGVja19ub3RfZXhpc3RzID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCBmaWxlID0gcGF0aCBmaWxlIGluXG4gICAgaWYgU3lzLmZpbGVfZXhpc3RzIGZpbGUgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIkZpbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyBkbyB5b3Ugd2FudCB0byBlcmFzZSAoeS9OKT9ALlwiXG4gICAgICAgICAgZmlsZVxuICAgICAgaW5cbiAgICAgIGxldCBhbnN3ZXIgPSBUb29scy5yZWFkX2lucHV0ICgpIGluXG4gICAgICBpZlxuICAgICAgICBhbnN3ZXIgPD4gXCJ5XCIgJiYgYW5zd2VyIDw+IFwiWVwiICYmIGFuc3dlciA8PiBcInllc1wiICYmIGFuc3dlciA8PiBcIllFU1wiXG4gICAgICAgICYmIGFuc3dlciA8PiBcIlllc1wiXG4gICAgICB0aGVuXG4gICAgICAgIGV4aXQgMVxuICAgICAgZWxzZVxuICAgICAgICBvdmVyd3JpdGVfcGVybWlzc2lvbiA6PSB0cnVlXG4gICAgKVxuXG5sZXQgc2V0Q2hlY2tGaWxlRXhpc3RzIH5iYXRjaG1vZGUgb3V0cHV0RmlsZSA9XG4gIGxldCAoKSA9IHNldE91dHB1dE5hbWUgKCkgaW5cbiAgaWYgYmF0Y2htb2RlIHRoZW5cbiAgICBvdmVyd3JpdGVfcGVybWlzc2lvbiA6PSB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9IGNoZWNrX25vdF9leGlzdHMgIWZsdXhGaWxlTmFtZSBpblxuICAgIGxldCAoKSA9IGNoZWNrX25vdF9leGlzdHMgIW1hcnNoYWxpemVkT3V0RmlsZSBpblxuICAgIGNoZWNrX25vdF9leGlzdHMgb3V0cHV0RmlsZVxuICApXG5cbmxldCB3aXRoX2NoYW5uZWwgc3RyIGYgPVxuICBpZiBzdHIgPD4gXCJcIiB0aGVuIChcbiAgICBsZXQgZGVzYyA9IG9wZW5fb3V0IHN0ciBpblxuICAgIGxldCAoKSA9IGYgZGVzYyBpblxuICAgIGNsb3NlX291dCBkZXNjXG4gIClcblxubGV0IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyA9XG4gIGxldCBmciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICBsZXQgKCkgPSBmIGZyIGluXG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBmciAoKVxuXG5sZXQgc2V0X2RpciBzID1cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBzKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgcztcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBta19kaXJfciBzXG4gIGluXG4gIG91dHB1dERpck5hbWUgOj0gc1xuXG5sZXQgZ2V0X2RpciAoKSA9ICFvdXRwdXREaXJOYW1lXG5sZXQgc2V0X21hcnNoYWxpemVkIGYgPSBtYXJzaGFsaXplZE91dEZpbGUgOj0gZlxuXG5sZXQgd2l0aF9tYXJzaGFsaXplZCBmID1cbiAgbWF0Y2ggIW1hcnNoYWxpemVkT3V0RmlsZSB3aXRoXG4gIHwgXCJcIiAtPiAoKVxuICB8IGZpbGUgLT5cbiAgICBsZXQgeCA9IHBhdGggZmlsZSBpblxuICAgIGxldCAoKSA9IG1rX2Rpcl9yIChGaWxlbmFtZS5kaXJuYW1lIHgpIGluXG4gICAgbGV0IGQgPSBvcGVuX291dF9iaW4geCBpblxuICAgIGxldCAoKSA9IGYgZCBpblxuICAgIGNsb3NlX291dCBkXG5cbmxldCBzZXRfY2Zsb3cgcyA9IGNmbG93RmlsZU5hbWUgOj0gc1xuXG5sZXQgd2l0aF9jZmxvd19maWxlIGwgZSBmID1cbiAgbGV0IGRlc2MgPSBvcGVuX291dF9mcmVzaCAhY2Zsb3dGaWxlTmFtZSBsIFwiXCIgZSBpblxuICBsZXQgKCkgPSB3cmFwX2Zvcm1hdHRlciBmIGRlc2MgaW5cbiAgY2xvc2Vfb3V0IGRlc2NcblxubGV0IG9wZW5fdGFza3NfcHJvZmlsaW5nICgpID0gb3Blbl9vdXQgIXRhc2tzX3Byb2ZpbGluZ05hbWVcblxubGV0IG9wZW5fYnJhbmNoX2FuZF9jdXRfZW5naW5lX3Byb2ZpbGluZyAoKSA9XG4gIG9wZW5fb3V0ICFicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZVxuXG5sZXQgc2V0X2ZsdXggbm1lIGV2ZW50ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBubWUgd2l0aFxuICAgIHwgXCJcIiAtPiBmbHV4RmlsZU5hbWUgOj0gXCJmbHV4XCIgXiBcIl9cIiBeIHN0cmluZ19vZl9pbnQgZXZlbnRcbiAgICB8IF8gLT4gZmx1eEZpbGVOYW1lIDo9IG5tZVxuICBpblxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpXG5cbmxldCB3aXRoX2ZsdXggc3RyIGYgPVxuICB3aXRoX2NoYW5uZWxcbiAgICAobWF0Y2ggc3RyIHdpdGhcbiAgICB8IFwiXCIgLT4gIWZsdXhGaWxlTmFtZVxuICAgIHwgXyAtPiBzdHIpXG4gICAgZlxuXG5sZXQgd2l0aF9zbmFwc2hvdCBzdHIgZXh0IGV2ZW50IGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoIHN0ciBbXSAoc3RyaW5nX29mX2ludCBldmVudCkgZXh0IGluXG4gIGxldCAoKSA9IGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdG9yZSA9IHtcbiAgZmlsZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcjogc3RyaW5nO1xuICBsZWdlbmQ6IHN0cmluZyBhcnJheTtcbiAgbXV0YWJsZSBwb2ludHM6IE5ici50IGFycmF5IGxpc3Q7XG59XG5cbmxldCBuZXdfZmlsZSBuYW1lID1cbiAgbGV0IGNoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBuYW1lIGluXG4gIGxldCBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2Pjw/eG1sIHZlcnNpb249XFxcIjEuMFxcXCI/PkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjwhRE9DVFlQRUAgc3ZnQCBQVUJMSUNAIFxcXCItLy9XM0MvL0RURCBTVkcgMS4xLy9FTlxcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkXFxcIj5AXUAsQCxcIlxuICBpblxuICBmLCBjaGFuXG5cbmxldCBjbG9zZV9maWxlIGZvcm0gY2hhbiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAXUAuXCIgaW5cbiAgY2xvc2Vfb3V0IGNoYW5cblxubGV0IHN0eWxlIGYgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN0eWxlIHR5cGU9XFxcInRleHQvY3NzXFxcIiA+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPCFbQ0RBVEFbQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jbGVnZW5kIHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOmVuZDtAIGJhc2VsaW5lLXNoaWZ0Oi0uNGVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4aXNfdCB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjptaWRkbGU7QCBiYXNlbGluZS1zaGlmdDotMWVtO0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn1AXUAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4aXNfdmEgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNheGVzIHtALGNvbG9yOmJsYWNrO0Asc3Ryb2tlOmN1cnJlbnRDb2xvcjtcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxzdHJva2Utc2l6ZToxcHg7QCx9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJAWzxodiAyPiNheGVzIHRleHQge0Asc3Ryb2tlOm5vbmU7QCxmaWxsOmN1cnJlbnRDb2xvcjtALH1AXUAsXCJcbiAgaW5cbiAgKCogbGV0ICgpID1cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2RhdGEgdXNlOmhvdmVyIHtALGZpbGw6Z3JlZW47QCx9QF1ALFwiIGluKilcbiAgRm9ybWF0LmZwcmludGYgZiBcIl1dPkAsPC9zdHlsZT5ALEAsXCJcblxubGV0IGNvbG9ycyA9IFt8IFwicGVydVwiOyBcImJsdWVcIjsgXCJwdXJwbGVcIjsgXCJncmVlblwiIHxdXG5sZXQgc3R5bGVzID0gW3wgXCJwb2ludFwiOyBcInBsdXNcIjsgXCJjcm9zc1wiIHxdXG5cbmxldCBkZWZzIGYgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRlZnM+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8cGF0aCBpZD1cXFwicGx1c1xcXCIgY2xhc3M9XFxcInBvaW50XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCJcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiIGQ9XFxcIk0tMy41LDAgaDcgTTAsLTMuNSB2N1xcXCIvPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIjxwYXRoIGlkPVxcXCJjcm9zc1xcXCIgY2xhc3M9XFxcInBvaW50XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCJcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsLTMuNSBMMy41LDMuNSBNMy41LC0zLjUgTC0zLjUsMy41XFxcIi8+QCxcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGNpcmNsZSBpZD1cXFwicG9pbnRcXFwiIGNsYXNzPVxcXCJwb2ludFxcXCIgcj1cXFwiMi41XFxcIlwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgc3Ryb2tlPVxcXCJub25lXFxcIiBmaWxsPVxcXCJjdXJyZW50Q29sb3JcXFwiLz5ALFwiIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L2RlZnM+QCxALFwiXG5cbmxldCBsZWdlbmQgdyBmIGEgPVxuICBsZXQgcHBfbGluZSBpJyBmIHMgPVxuICAgIGlmIGknID4gMCB0aGVuIChcbiAgICAgIGxldCBpID0gcHJlZCBpJyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+PHRleHQgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIj4lczwvdGV4dD5AXUAsXCIgKHcgLSAxNSlcbiAgICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICAgICAgICBzXG4gICAgICBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIjx1c2UgeGxpbms6aHJlZj1cXFwiIyVzXFxcIiBzdHlsZT1cXFwiY29sb3I6JXNcXFwiIHg9XFxcIiVpXFxcIiB5PVxcXCIlaVxcXCIvPlwiXG4gICAgICAgIHN0eWxlcy4oaScgbW9kIEFycmF5Lmxlbmd0aCBzdHlsZXMpXG4gICAgICAgIGNvbG9ycy4oaScgbW9kIEFycmF5Lmxlbmd0aCBjb2xvcnMpXG4gICAgICAgICh3IC0gNylcbiAgICAgICAgKDEwICsgKGkgKiAxNSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj48ZyBpZD1cXFwibGVnZW5kXFxcIj5ALCVhQF1ALDwvZz5ALEAsXCJcbiAgICAoUHAuYXJyYXkgUHAuY3V0IHBwX2xpbmUpIGFcblxubGV0IGdldF9saW1pdHMgbCA9XG4gIGxldCBkdW1teV92YWx1ZXMgPSAwLiwgLTEuLCAxLiBpblxuICBsZXQgcmVjIGF1eCB0X21heCB2YV9taW4gdmFfbWF4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiB2YV9taW4gPSB2YV9tYXggdGhlblxuICAgICAgICB0X21heCwgdmFfbWluIC0uIDEuLCB2YV9tYXggKy4gMS5cbiAgICAgIGVsc2VcbiAgICAgICAgdF9tYXgsIG1pbiB2YV9taW4gMC4sIHZhX21heFxuICAgIHwgdmEgOjogcSAtPlxuICAgICAgYXV4XG4gICAgICAgIChtYXggKE9wdGlvbl91dGlsLnVuc29tZSAwLiAoTmJyLnRvX2Zsb2F0IHZhLigwKSkpIHRfbWF4KVxuICAgICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAoZnVuIGkgYSB4IC0+XG4gICAgICAgICAgICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHggd2l0aFxuICAgICAgICAgICAgIHwgU29tZSB4IHdoZW4gaSA8PiAwIC0+IG1pbiBhIHhcbiAgICAgICAgICAgICB8IF8gLT4gYSlcbiAgICAgICAgICAgdmFfbWluIHZhKVxuICAgICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAoZnVuIGkgYSB4IC0+XG4gICAgICAgICAgICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHggd2l0aFxuICAgICAgICAgICAgIHwgU29tZSB4IHdoZW4gaSA8PiAwIC0+IG1heCBhIHhcbiAgICAgICAgICAgICB8IF8gLT4gYSlcbiAgICAgICAgICAgdmFfbWF4IHZhKVxuICAgICAgICBxXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGR1bW15X3ZhbHVlc1xuICB8IHZhIDo6IF8gd2hlbiBBcnJheS5sZW5ndGggdmEgPCAyIC0+IGR1bW15X3ZhbHVlc1xuICB8IGwgLT4gYXV4IDAuIGluZmluaXR5IDAuIGxcblxubGV0IGRyYXdfaW5fZGF0YSAoKHRfbWF4LCB2YV9taW4sIHZhX21heCksICh6ZXJvX3csIHplcm9faCwgZHJhd193LCBkcmF3X2gpKSA9XG4gIGxldCBkZWx0YV92YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IHplcm9fdycgPSBmbG9hdF9vZl9pbnQgemVyb193IGluXG4gIGxldCB6ZXJvX2gnID0gZmxvYXRfb2ZfaW50IHplcm9faCBpblxuICBsZXQgZHJhd193JyA9IGZsb2F0X29mX2ludCBkcmF3X3cgaW5cbiAgbGV0IGRyYXdfaCcgPSBmbG9hdF9vZl9pbnQgZHJhd19oIGluXG4gIGZ1biBmIHggeSAtPlxuICAgIG1hdGNoIE5ici50b19mbG9hdCB5IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeScgLT5cbiAgICAgIGZcbiAgICAgICAgKHplcm9fdydcbiAgICAgICAgKy4gKChPcHRpb25fdXRpbC51bnNvbWUgMC4gQEAgTmJyLnRvX2Zsb2F0IHgpICouIGRyYXdfdycgLy4gdF9tYXgpKVxuICAgICAgICAoemVyb19oJyAtLiAoKHknIC0uIHZhX21pbikgKi4gZHJhd19oJyAvLiBkZWx0YV92YSkpXG5cbmxldCBncmFkdWF0aW9uX3N0ZXAgZHJhd19sIG1pbl9ncmFkX2wgdmFfbWluIHZhX21heCA9XG4gIGxldCBuYnJfZGVsdGEgPSB2YV9tYXggLS4gdmFfbWluIGluXG4gIGxldCBkZWx0YV92YSA9XG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgbmJyX2RlbHRhIHdpdGhcbiAgICB8IEZQX3plcm8gLT4gMS5cbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IG5icl9kZWx0YVxuICBpblxuICBsZXQgbmJfZ3JhZCA9IGNlaWwgKGZsb2F0IGRyYXdfbCAvLiBmbG9hdCBtaW5fZ3JhZF9sKSBpblxuICBsZXQgZXhhY3Rfc3RlcCA9IGRlbHRhX3ZhIC8uIG5iX2dyYWQgaW5cbiAgbGV0IGRlbHRhX2dyYWQgPSAxMC4gKiogbG9nMTAgZXhhY3Rfc3RlcCBpblxuICBsZXQgdmFfbWluJyA9IGRlbHRhX2dyYWQgKi4gZmxvb3IgKHZhX21pbiAvLiBleGFjdF9zdGVwKSBpblxuICBsZXQgdmFfbWF4JyA9XG4gICAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgbmJyX2RlbHRhIHdpdGhcbiAgICB8IEZQX3plcm8gLT4gdmFfbWluJyArLiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT5cbiAgICAgIGRlbHRhX2dyYWQgKi4gY2VpbCAodmFfbWF4IC8uIGV4YWN0X3N0ZXApXG4gIGluXG4gIHZhX21pbicsIGludF9vZl9mbG9hdCBuYl9ncmFkLCBkZWx0YV9ncmFkLCB2YV9tYXgnXG5cbmxldCBheGlzICh3LCBoKSAoYl9vcCwgYl93LCBiX2gpIGYgbCA9XG4gIGxldCB0X21heCwgdmFfbWluLCB2YV9tYXggPSBnZXRfbGltaXRzIGwgaW5cbiAgbGV0IGRhdGFfdyA9IHcgLSAoYl9vcCArIGJfdykgaW5cbiAgbGV0IGRhdGFfaCA9IGggLSAoYl9vcCArIGJfaCkgaW5cbiAgbGV0IF8sIG5iX3csIGdyYWRfdywgdF9tYXgnID0gZ3JhZHVhdGlvbl9zdGVwIGRhdGFfdyBiX3cgMC4gdF9tYXggaW5cbiAgbGV0IHZhX21pbicsIG5iX2gsIGdyYWRfaCwgdmFfbWF4JyA9XG4gICAgZ3JhZHVhdGlvbl9zdGVwIGRhdGFfaCBiX3cgdmFfbWluIHZhX21heFxuICBpblxuICBsZXQgZHJhd19mdW4gPVxuICAgIGRyYXdfaW5fZGF0YSAoKHRfbWF4JywgdmFfbWluJywgdmFfbWF4JyksIChiX3csIGggLSBiX2gsIGRhdGFfdywgZGF0YV9oKSlcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJheGVzXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJheGlzX3ZhXFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+T2JzZXJ2YWJsZSB2YWx1ZXM8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgYl9vcCBiX3dcbiAgICAgIChkYXRhX2ggKyBiX29wKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX2ggKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgKHggLS4gOC4pXG4gICAgICAgICAgICAgICAgeSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgKHggLS4gNS4pIHkgKHggKy4gNS4pIHkpXG4gICAgICAgICAgTmJyLnplcm8gKE5ici5GIHYpKVxuICAgICAgKHN1Y2MgbmJfaClcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBdPC9nPkAsQFs8aHYgMj48ZyBpZD1cXFwiYXhpc190XFxcIj5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+VGltZSAoYXJiaXRyYXJ5IHVuaXQpPC90aXRsZT5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48cGF0aCBkPVxcXCJNICVpLCVpIEwgJWksJWlcXFwiLz5AXUAsXCIgYl93IChoIC0gYl9oKVxuICAgICAgKHcgLSBiX29wKSAoaCAtIGJfaClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBUb29scy5pdGVyaVxuICAgICAgKGZ1biBpIC0+XG4gICAgICAgIGxldCB2ID0gZ3JhZF93ICouIGZsb2F0IGkgaW5cbiAgICAgICAgZHJhd19mdW5cbiAgICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjx0ZXh0IHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+JS4zZzwvdGV4dD5ALFwiIHhcbiAgICAgICAgICAgICAgICAoeSArLiA4LikgdlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8bGluZSB4MT1cXFwiJWZcXFwiIHkxPVxcXCIlZlxcXCIgeDI9XFxcIiVmXFxcIiB5Mj1cXFwiJWZcXFwiLz5ALFwiXG4gICAgICAgICAgICAgIHggKHkgLS4gNS4pIHggKHkgKy4gNS4pKVxuICAgICAgICAgIChOYnIuRiB2KSAoTmJyLkYgdmFfbWluJykpXG4gICAgICAoc3VjYyBuYl93KVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCw8L2c+QCxALFwiIGluXG4gIGRyYXdfZnVuXG5cbmxldCBkYXRhIGRyYXdfZnVuIGwgZiBwID1cbiAgbGV0IG9uZV9wb2ludCBzIHQgaSBmIHZhID1cbiAgICBkcmF3X2Z1blxuICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8Pjx1c2UgeGxpbms6aHJlZj1cXFwiIyVzXFxcIiB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPkAsXCJcbiAgICAgICAgICAgIHN0eWxlcy4oaSBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgICAgIHggeVxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiVzIHQ9JWEgdj0lYTwvdGl0bGU+QCw8L3VzZT5AXUAsXCIgc1xuICAgICAgICAgIE5ici5wcmV0dHlfcHJpbnQgdCBOYnIucHJpbnQgdmEpXG4gICAgICB0IHZhXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8ZyBpZD1cXFwiZGF0YVxcXCI+QCwlYTwvZz5ALEAsXCJcbiAgICAoUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBpIGYgcyAtPlxuICAgICAgICAgaWYgaSA+IDAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgXCJAWzxodiAyPjxnIGlkPVxcXCJkYXRhXyVpXFxcIiBzdHlsZT1cXFwiY29sb3I6JXNcXFwiPkAsJWFAXTwvZz5ALFwiXG4gICAgICAgICAgICAgKHByZWQgaSlcbiAgICAgICAgICAgICBjb2xvcnMuKGkgbW9kIEFycmF5Lmxlbmd0aCBjb2xvcnMpXG4gICAgICAgICAgICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmIGUgLT4gb25lX3BvaW50IHMgZS4oMCkgaSBmIGUuKGkpKSlcbiAgICAgICAgICAgICBwKSlcbiAgICBsXG5cbmxldCBkcmF3ICgodywgaCkgYXMgc2l6ZSkgYm9yZGVyIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPD48c3ZnQCB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiQCBcIlxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwieG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiQCBcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwid2lkdGg9XFxcIiVpXFxcIkAgaGVpZ2h0PVxcXCIlaVxcXCI+QF1ALFwiIHcgaCBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXM8L3RpdGxlPkAsPGRlc2NyPiVzPC9kZXNjcj5ALEAsXCIgcy50aXRsZSBzLmRlc2NyXG4gIGluXG4gIGxldCAoKSA9IHN0eWxlIGYgaW5cbiAgbGV0ICgpID0gZGVmcyBmIGluXG4gIGxldCBkcmF3X2Z1biA9IGF4aXMgc2l6ZSBib3JkZXIgZiBzLnBvaW50cyBpblxuICBsZXQgKCkgPSBsZWdlbmQgdyBmIHMubGVnZW5kIGluXG4gIGxldCAoKSA9IGRhdGEgZHJhd19mdW4gcy5sZWdlbmQgZiBzLnBvaW50cyBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiPC9zdmc+XCJcblxubGV0IHRvX3N0cmluZyA/KHdpZHRoID0gODAwKSBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBzaXplID0gd2lkdGgsIGludF9vZl9mbG9hdCAoZmxvYXQgd2lkdGggLy4gc3FydCAyLikgaW5cbiAgbGV0IGJvcmRlciA9IDEwLCA3MCwgMjUgaW5cbiAgbGV0ICgpID0gZHJhdyBzaXplIGJvcmRlciBmIHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgZiAoKSBpblxuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgdG9fZmlsZSBzID1cbiAgbGV0IGZvcm0sIGNoYW4gPSBuZXdfZmlsZSBzLmZpbGUgaW5cbiAgbGV0IHNpemUgPSA4MDAsIDYwMCBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGZvcm0gcyBpblxuICBjbG9zZV9maWxlIGZvcm0gY2hhblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpFeHBlcnQgbW9kZSB2YWx1ZXMqKVxubGV0IGRlZmF1bHRFeHRBcnJheVNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRHcmFwaFNpemUgPSByZWYgNVxubGV0IGRlZmF1bHRMaWZ0U2V0U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEhlYXBTaXplID0gcmVmIDVcbmxldCBkZWJ1Z19tb2RlT24gPSByZWYgZmFsc2VcblxuKCogZXhwZXJ0IG9wdGlvbiBmb3Igc3RvcmllcyAqKVxuXG4oKiBOdW1iZXIgb2YgcG90ZW50aWFsIHN0YXRlcyB0aGF0IGFyZSBwdXQgaW4gdGhlIGNhY2hlIHBlciBiaW5kaW5nIHNpdGUsIHNvIGFzIHRvIGhhbmRsZXIgd2l0aCBzaWRlIGVmZmVjdHMgaW4gc3Rvcmllcy4gTm9uZSAtPiBVbmxpbWl0ZWQgY2FjaGUgKilcblxuKCoqIE1lbW9yeSAqKilcbmxldCBjYWNoZV9zaXplID0gcmVmIChOb25lIDogaW50IG9wdGlvbilcblxuKCogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzIChmb3IgYWxsIG9ic2VydmFibGVzKSBiZWZvcmUgZ2VuZXJhdGluZyB0aGUgYmxhY2tib2FyZCAqKVxuXG4oKiogUHJlY29tcHV0YXRpb24gKiopXG5sZXQgZG9fZ2xvYmFsX2N1dCA9IHRydWVcblxuKCogQ3V0IHBzZXVkby1pbnZlcnNlIGV2ZW50cyAqKVxubGV0IGN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCA9IHRydWVcblxuKCogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzIChmb3IgdGhlIGN1cnJlbnQgb2JzZXJ2YWxlKSBiZWZvcmUgZ2VuZXJhdGluZyB0aGUgYmxhY2tib2FyZCAqKVxubGV0IGRvX2xvY2FsX2N1dCA9IHRydWVcblxuKCogQ3V0IHNlcGFyYWJsZSBjb21wb25lbnRzICopXG5sZXQgZG9fZGV0ZWN0X3NlcGFyYWJsZV9jb21wb25lbnRzID0gdHJ1ZVxuXG4oKiBXaGVuZXZlciB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIGFuIGV2ZW50IGhhcyB0byBiZSBzZWxlY3RlZCBvciwgbm90LCBjaGVjayB3aGV0aGVyIHRoaXMgaXMgbm90IHRoZSBsYXN0IG9uZSB0aGF0IGNhbiBwYXJmb3JtIGEgcmVxdWVzdGVkIGFjdGlvbiAqKVxuXG4oKiogUHJvcGFnYXRpb24gaGV1cmlzdGljcyAqKilcbmxldCBsb29rX3VwX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxuXG4oKiBXaGVuZXZlciBhbiBldmVudCBpcyByZW1vdmVkLCBjaGVja2VkIHdoZXRoZXIgdGhlcmUgaXMgbm90IG9ubHkgb25lIGxlZnQgdG8gcGVyZm9ybSBhIHJlcXVpcmVkIGFjdGlvbiAqKVxubGV0IGxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCA9IHRydWVcbmxldCBsb2dfbnVtYmVyX29mX2NhdXNhbF9mbG93cyA9IHRydWVcblxuKCpVc2VyIGRlZmluYWJsZSB2YWx1ZXMqKVxubGV0IHRpbWVfaW5kZXBlbmRlbnQgPSByZWYgZmFsc2VcbmxldCBibGFja2xpc3RfZXZlbnRzID0gcmVmIGZhbHNlXG5cbigqWExTIG91dHB1dCBmb3IgdGhlIGdyaWRzIGR1cmluZyBjb21wcmVzc2lvbiopXG5sZXQgZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbiA9IGZhbHNlXG5sZXQgZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCB4bHN3ZWFrRmlsZU5hbWUgPSBcImdyaWRfd2Vha19jb21wcmVzc2lvblwiXG5sZXQgeGxzc3Ryb25nRmlsZU5hbWUgPSBcImdyaWRfc3Ryb25nX2NvbXByZXNzaW9uXCJcbmxldCBnZXRfY2FjaGVfc2l6ZSAoKSA9ICFjYWNoZV9zaXplXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfZGVzYyA6IChzdHJpbmcsIG91dF9jaGFubmVsICogRm9ybWF0LmZvcm1hdHRlcikgSGFzaHRibC50ID1cbiAgSGFzaHRibC5jcmVhdGUgMlxuXG5sZXQgc3BlY2llc19kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCB1dWlkID0gUmFuZG9tLlN0YXRlLmJpdHMgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IGdldF9kZXNjIGZpbGUgdGJsID1cbiAgdHJ5IHNuZCAoSGFzaHRibC5maW5kIHRibCBmaWxlKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBkX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlIGluXG4gICAgbGV0IGQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRfY2hhbiBpblxuICAgIEhhc2h0YmwuYWRkIHRibCBmaWxlIChkX2NoYW4sIGQpO1xuICAgIGRcblxubGV0IGNsb3NlX2Rlc2MgKCkgPVxuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgcHJpbnRfZGVzYztcbiAgSGFzaHRibC5pdGVyIChmdW4gX2ZpbGUgKGRfY2hhbiwgX2QpIC0+IGNsb3NlX291dCBkX2NoYW4pIHNwZWNpZXNfZGVzY1xuXG5sZXQgb3V0cHV0X2ZsdXggZGluX25hbWUgZmx1eCA9XG4gIEthcHBhX2ZpbGVzLndpdGhfZmx1eCBkaW5fbmFtZVxuICAgIChpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuaHRtbFwiIHRoZW5cbiAgICAgICBLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9odG1sX2RpbiBmIGZsdXgpXG4gICAgIGVsc2UgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmpzb25cIiB0aGVuXG4gICAgICAgZnVuIGQgLT5cbiAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBEYXRhLndyaXRlX2RpbiBkIGZsdXhcbiAgICAgZWxzZVxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9kaW4gfnV1aWQgZiBmbHV4KSlcblxubGV0IGFjdHNEZXNjciA9IHJlZiBOb25lXG5sZXQgZW1wdHlBY3RzID0gcmVmIHRydWVcblxubGV0IGluaXRfYWN0aXZpdGllcyBlbnYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHMgLT5cbiAgICBsZXQgbm9Db3VudGVycyA9ICFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIGluXG4gICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgbGV0IGZvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGRlc2MgaW5cbiAgICBsZXQgbmJfciA9IE1vZGVsLm5iX3N5bnRhY3RpY19ydWxlcyBlbnYgaW5cbiAgICBsZXQgKCkgPSBhY3RzRGVzY3IgOj0gU29tZSAoZGVzYywgZm9ybSwgbmJfcikgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj57QCxydWxlczpAW1tcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVhXFxcIixALFwiXG4gICAgICAgICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgICAgICAgIHgpXG4gICAgICAgIG5iX3JcbiAgICBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiXUBdLEAsZGF0YTpbQCxcIlxuICAgICAgKE1vZGVsLnByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgICBuYl9yXG5cbmxldCBjbG9zZV9hY3Rpdml0aWVzICgpID1cbiAgbWF0Y2ggIWFjdHNEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGMsIGYsIF8pIC0+XG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsXX1AXUAuXCIgaW5cbiAgICBjbG9zZV9vdXQgY1xuXG5sZXQgb3V0cHV0X2FjdGl2aXRpZXMgciBmbHV4ID1cbiAgbWF0Y2ggIWFjdHNEZXNjciB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKF8sIGYsIGxhc3QpIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIGlmICFlbXB0eUFjdHMgdGhlblxuICAgICAgICBlbXB0eUFjdHMgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIixALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFtbJWlcIiByIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBpID0gMCB0byBsYXN0IGRvXG4gICAgICAgIGxldCBrLCBrJyA9IHRyeSBMaXN0LmFzc29jIGkgZmx1eCB3aXRoIE5vdF9mb3VuZCAtPiAwLiwgMC4gaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiwlZlwiIChrJyAtLiBrKVxuICAgICAgZG9uZVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIl1AXVwiXG5cbnR5cGUgZmQgPSB7IGRlc2M6IG91dF9jaGFubmVsOyBmb3JtOiBGb3JtYXQuZm9ybWF0dGVyOyBpc190c3Y6IGJvb2wgfVxuXG50eXBlIGZvcm1hdCA9XG4gIHwgU3RhbmRCeSBvZiAoc3RyaW5nICogc3RyaW5nICogc3RyaW5nIGFycmF5KVxuICB8IFJhdyBvZiBmZFxuICB8IFN2ZyBvZiBQcF9zdmcuc3RvcmVcblxubGV0IHBsb3REZXNjciA9IHJlZiBOb25lXG5cbmxldCBjbG9zZV9wbG90ICgpID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgKFN0YW5kQnkgXykgLT4gKClcbiAgfCBTb21lIChSYXcgcGxvdCkgLT4gY2xvc2Vfb3V0IHBsb3QuZGVzY1xuICB8IFNvbWUgKFN2ZyBzKSAtPiBQcF9zdmcudG9fZmlsZSBzXG5cbmxldCB0cmFjZURlc2NyID0gcmVmIE5vbmVcbmxldCB0cmFjZU5vdEVtcHR5ID0gcmVmIGZhbHNlXG5cbmxldCBjbG9zZV90cmFjZSAoKSA9XG4gIG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkZXNjIC0+XG4gICAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiXVxcbn1cXG5cIiBpblxuICAgIGxldCAoKSA9IGNsb3NlX291dCBkZXNjIGluXG4gICAgdHJhY2VEZXNjciA6PSBOb25lXG5cbmxldCBpbml0aWFsaXplIGFjdGl2aXRpZXNfZmlsZSB0cmFjZV9maWxlIHBsb3RQYWNrIGVudiA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggdHJhY2VfZmlsZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT5cbiAgICAgIGxldCBkZXNjID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgcyBpblxuICAgICAgbGV0ICgpID0gVHJhY2UuaW5pdF90cmFjZV9maWxlIH51dWlkIGVudiBkZXNjIGluXG4gICAgICB0cmFjZURlc2NyIDo9IFNvbWUgZGVzY1xuICBpblxuICBsZXQgKCkgPSBpbml0X2FjdGl2aXRpZXMgZW52IGFjdGl2aXRpZXNfZmlsZSBpblxuICBtYXRjaCBwbG90UGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcGFjayAtPiBwbG90RGVzY3IgOj0gU29tZSAoU3RhbmRCeSBwYWNrKVxuXG5sZXQgbGF1bmNoX3Bsb3QgKGZpbGVuYW1lLCB0aXRsZSwgaGVhZCkgPVxuICBsZXQgZm9ybWF0ID1cbiAgICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIuc3ZnXCIgdGhlblxuICAgICAgU3ZnXG4gICAgICAgIHtcbiAgICAgICAgICBQcF9zdmcuZmlsZSA9IGZpbGVuYW1lO1xuICAgICAgICAgIFBwX3N2Zy50aXRsZTtcbiAgICAgICAgICBQcF9zdmcuZGVzY3IgPSBcIlxcXCJ1dWlkXFxcIiA6IFxcXCJcIiBeIHN0cmluZ19vZl9pbnQgdXVpZCBeIFwiXFxcIlwiO1xuICAgICAgICAgIFBwX3N2Zy5sZWdlbmQgPSBoZWFkO1xuICAgICAgICAgIFBwX3N2Zy5wb2ludHMgPSBbXTtcbiAgICAgICAgfVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGVuYW1lIGluXG4gICAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgICBsZXQgaXNfdHN2ID0gRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGVuYW1lIFwiLnRzdlwiIGluXG4gICAgICBsZXQgKCkgPSBpZiBub3QgaXNfdHN2IHRoZW4gRm9ybWF0LmZwcmludGYgZCBcIiMgJXNALlwiIHRpdGxlIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBub3QgaXNfdHN2IHRoZW4gRm9ybWF0LmZwcmludGYgZCBcIiMgXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIkAuXCIgdXVpZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IERhdGEucHJpbnRfcGxvdF9sZWdlbmQgfmlzX3RzdiBkIGhlYWQgaW5cbiAgICAgIFJhdyB7IGRlc2MgPSBkX2NoYW47IGZvcm0gPSBkOyBpc190c3YgfVxuICAgIClcbiAgaW5cbiAgcGxvdERlc2NyIDo9IFNvbWUgZm9ybWF0XG5cbmxldCByZWMgcGxvdF9ub3cgbCA9XG4gIG1hdGNoICFwbG90RGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSAoU3RhbmRCeSBwKSAtPlxuICAgIGxldCAoKSA9IGxhdW5jaF9wbG90IHAgaW5cbiAgICBwbG90X25vdyBsXG4gIHwgU29tZSAoUmF3IGZkKSAtPlxuICAgIERhdGEucHJpbnRfcGxvdF9saW5lIH5pc190c3Y6ZmQuaXNfdHN2IE5ici5wcmludF9vcHRpb24gZmQuZm9ybSBsXG4gIHwgU29tZSAoU3ZnIHMpIC0+IHMuUHBfc3ZnLnBvaW50cyA8LSBsIDo6IHMuUHBfc3ZnLnBvaW50c1xuXG5sZXQgc25hcHNob3QgZmlsZSBzID1cbiAgaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZpbGUgXCIuZG90XCIgdGhlblxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5kb3RcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9kb3Rfc25hcHNob3QgfnV1aWQgZiBzKSlcbiAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5qc29uXCIgdGhlblxuICAgIEthcHBhX2ZpbGVzLndpdGhfc25hcHNob3QgZmlsZSBcIi5qc29uXCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50IChmdW4gZCAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfc25hcHNob3QgZCBzKVxuICBlbHNlXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmthXCIgcy5EYXRhLnNuYXBzaG90X2V2ZW50XG4gICAgICAoS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfc25hcHNob3QgfnV1aWQgZiBzKSlcblxubGV0IHByaW50X3NwZWNpZXMgdGltZSBmIG1peHR1cmUgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWc6IEBbPGg+JWFAXUAuXCIgdGltZSBVc2VyX2dyYXBoLnByaW50X2NjIG1peHR1cmVcblxubGV0IHdhcm5pbmdfYnVmZmVyIDogKExvYy50IG9wdGlvbiAqIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpKSBsaXN0IHJlZiA9XG4gIHJlZiBbXVxuXG5sZXQgZ28gPSBmdW5jdGlvblxuICB8IERhdGEuU25hcHNob3QgKGYsIHMpIC0+IHNuYXBzaG90IGYgc1xuICB8IERhdGEuRElOIChuLCBmKSAtPiBvdXRwdXRfZmx1eCBuIGZcbiAgfCBEYXRhLkRlbHRhQWN0aXZpdGllcyAociwgZmx1eCkgLT4gb3V0cHV0X2FjdGl2aXRpZXMgciBmbHV4XG4gIHwgRGF0YS5QbG90IHggLT4gcGxvdF9ub3cgeFxuICB8IERhdGEuUHJpbnQgcCAtPlxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHAuRGF0YS5maWxlX2xpbmVfbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBzdGRvdXRcbiAgICAgIHwgU29tZSBmaWxlIC0+IGdldF9kZXNjIGZpbGUgcHJpbnRfZGVzY1xuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIiVzQC5cIiBwLkRhdGEuZmlsZV9saW5lX3RleHRcbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5wcmludGYgXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IHdhcm5pbmdfYnVmZmVyIDo9IChwb3MsIG1zZykgOjogIXdhcm5pbmdfYnVmZmVyXG4gIHwgRGF0YS5UcmFjZVN0ZXAgc3RlcCAtPlxuICAgIChtYXRjaCAhdHJhY2VEZXNjciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmICF0cmFjZU5vdEVtcHR5IHRoZW5cbiAgICAgICAgICBvdXRwdXRfY2hhciBkICcsJ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdHJhY2VOb3RFbXB0eSA6PSB0cnVlXG4gICAgICBpblxuICAgICAgSnNvblV0aWwud3JpdGVfdG9fY2hhbm5lbCBUcmFjZS53cml0ZV9zdGVwIGQgc3RlcClcbiAgfCBEYXRhLlNwZWNpZXMgKGZpbGUsIHRpbWUsIG1peHR1cmUpIC0+XG4gICAgbGV0IGRlc2MgPSBnZXRfZGVzYyBmaWxlIHNwZWNpZXNfZGVzYyBpblxuICAgIHByaW50X3NwZWNpZXMgdGltZSBkZXNjIG1peHR1cmVcblxubGV0IGlucHV0c0Rlc2MgPSByZWYgTm9uZVxuXG5sZXQgZmx1c2hfd2FybmluZyAoKSA9XG4gIGxldCBsID0gTGlzdC5yZXYgIXdhcm5pbmdfYnVmZmVyIGluXG4gIGxldCAoKSA9IHdhcm5pbmdfYnVmZmVyIDo9IFtdIGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBGb3JtYXQuZXJyX2Zvcm1hdHRlciBtc2cpXG4gICAgbFxuXG5sZXQgY2xvc2VfaW5wdXQgP2V2ZW50ICgpID1cbiAgbWF0Y2ggIWlucHV0c0Rlc2Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGlucHV0cyAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cylcbiAgICAgICAgICBcIkAuJSVtb2Q6IFtFXSA9ICVpIGRvICRTVE9QO0AuXCIgZXZlbnRcbiAgICBpblxuICAgIGNsb3NlX291dCBpbnB1dHNcblxubGV0IGNsb3NlID9ldmVudCAoKSA9XG4gIGxldCAoKSA9IGNsb3NlX3Bsb3QgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfdHJhY2UgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfYWN0aXZpdGllcyAoKSBpblxuICBsZXQgKCkgPSBmbHVzaF93YXJuaW5nICgpIGluXG4gIGxldCAoKSA9IGNsb3NlX2lucHV0ID9ldmVudCAoKSBpblxuICBjbG9zZV9kZXNjICgpXG5cbmxldCBpbml0aWFsX2lucHV0cyBjb25mIGVudiBpbml0IH5maWxlbmFtZSA9XG4gIGxldCBpbnB1dHMgPSBLYXBwYV9maWxlcy5vcGVuX291dF9mcmVzaCBmaWxlbmFtZSBbXSBcIlwiIFwiLmthXCIgaW5cbiAgbGV0IGlucHV0c19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBpbnB1dHMgaW5cbiAgbGV0ICgpID0gRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyB+dXVpZCBjb25mIGVudiBpbnB1dHNfZm9ybSBpbml0IGluXG4gIGlucHV0c0Rlc2MgOj0gU29tZSBpbnB1dHNcblxubGV0IGlucHV0X21vZGlmaWNhdGlvbnMgZW52IGV2ZW50IG1vZHMgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgRm9ybWF0LmZwcmludGZcbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cylcbiAgICAgIFwiJSVtb2Q6IFtFXSA9ICVpIGRvICVhQC5cIiBldmVudFxuICAgICAgKFBwLmxpc3QgfnRyYWlsaW5nOlBwLmNvbG9uIFBwLmNvbG9uXG4gICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6IVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gfmVudikpXG4gICAgICBtb2RzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGRpcmVjdGl2ZV91bml0ID0gVGltZSB8IEV2ZW50XG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBhbGdfdmFyX292ZXJ3cml0ZTogKHN0cmluZyAqIE5ici50KSBsaXN0O1xuICBtdXRhYmxlIG1hcnNoYWxpemVkSW5GaWxlOiBzdHJpbmc7XG4gIG11dGFibGUgaW5pdGlhbE1peDogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSByZXNjYWxlOiBmbG9hdCBvcHRpb247XG4gIG11dGFibGUgc2VlZFZhbHVlOiBpbnQgb3B0aW9uO1xuICBtdXRhYmxlIHVuaXQ6IGRpcmVjdGl2ZV91bml0O1xuICBtdXRhYmxlIG1hcnNoYWxpemVPdXRGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGRvbWFpbk91dHB1dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgdHJhY2VGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIGxvZ0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgY29tcGlsZV9tb2RlOiBib29sO1xuICBtdXRhYmxlIHNoYXJpbmc6IFBhdHRlcm4uc2hhcmluZ19sZXZlbDtcbiAgbXV0YWJsZSBzaG93RWZmaWNpZW5jeTogYm9vbDtcbiAgbXV0YWJsZSB0aW1lSW5kZXBlbmRlbnQ6IGJvb2w7XG59XG5cbmxldCBkZWZhdWx0IDogdCA9XG4gIHtcbiAgICBhbGdfdmFyX292ZXJ3cml0ZSA9IFtdO1xuICAgIHJlc2NhbGUgPSBOb25lO1xuICAgIG1hcnNoYWxpemVkSW5GaWxlID0gXCJcIjtcbiAgICBpbml0aWFsTWl4ID0gTm9uZTtcbiAgICBzZWVkVmFsdWUgPSBOb25lO1xuICAgIHVuaXQgPSBUaW1lO1xuICAgIG1hcnNoYWxpemVPdXRGaWxlID0gTm9uZTtcbiAgICBkb21haW5PdXRwdXRGaWxlID0gTm9uZTtcbiAgICB0cmFjZUZpbGUgPSBOb25lO1xuICAgIGxvZ0ZpbGUgPSBTb21lIFwiaW5wdXRzXCI7XG4gICAgY29tcGlsZV9tb2RlID0gZmFsc2U7XG4gICAgc2hhcmluZyA9IFBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucztcbiAgICBzaG93RWZmaWNpZW5jeSA9IGZhbHNlO1xuICAgIHRpbWVJbmRlcGVuZGVudCA9IGZhbHNlO1xuICB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi1taXh0dXJlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gZmljIC0+IHQuaW5pdGlhbE1peCA8LSBTb21lIGZpYyksXG4gICAgICBcIlRha2UgdGhlIGluaXRpYWwgc3RhdGUgZnJvbSB0aGlzIGZpbGUgKGlnbm9yZSAlaW5pdCBmcm9tIG90aGVyIGZpbGVzKVwiICk7XG4gICAgKCBcIi12YXJcIixcbiAgICAgIEFyZy5UdXBsZVxuICAgICAgICAobGV0IHRtcF92YXJfbmFtZSA9IHJlZiBcIlwiIGluXG4gICAgICAgICBbXG4gICAgICAgICAgIEFyZy5TdHJpbmcgKGZ1biBuYW1lIC0+IHRtcF92YXJfbmFtZSA6PSBuYW1lKTtcbiAgICAgICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAgICAgIChmdW4gdmFyX3ZhbCAtPlxuICAgICAgICAgICAgICAgdC5hbGdfdmFyX292ZXJ3cml0ZSA8LVxuICAgICAgICAgICAgICAgICAoICF0bXBfdmFyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgdHJ5IE5ici5vZl9zdHJpbmcgdmFyX3ZhbFxuICAgICAgICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoQXJnLkJhZCAoXCJcXFwiXCIgXiB2YXJfdmFsIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlXCIpKSApXG4gICAgICAgICAgICAgICAgIDo6IHQuYWxnX3Zhcl9vdmVyd3JpdGUpO1xuICAgICAgICAgXSksXG4gICAgICBcIlNldCBhIHZhcmlhYmxlIHRvIGEgZ2l2ZW4gdmFsdWVcIiApO1xuICAgICggXCItbG9hZC1zaW1cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWxlIC0+IHQubWFyc2hhbGl6ZWRJbkZpbGUgPC0gZmlsZSksXG4gICAgICBcImxvYWQgc2ltdWxhdGlvbiBwYWNrYWdlIGluc3RlYWQgb2Yga2FwcGEgZmlsZXNcIiApO1xuICAgICggXCItcmVzY2FsZVwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gaSAtPiB0LnJlc2NhbGUgPC0gU29tZSBpKSxcbiAgICAgIFwiQXBwbHkgcmVzY2FsaW5nIGZhY3RvciB0byBpbml0aWFsIGNvbmRpdGlvblwiICk7XG4gICAgKCBcIi11XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwidGltZVwiIHwgXCJUaW1lXCIgfCBcInRcIiAtPiB0LnVuaXQgPC0gVGltZVxuICAgICAgICB8IFwiZXZlbnRcIiB8IFwiZXZlbnRzXCIgfCBcImVcIiB8IFwiRXZlbnRcIiB8IFwiRXZlbnRzXCIgLT4gdC51bml0IDwtIEV2ZW50XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJVbnJlY29nbml6ZWQgdW5pdDogXCIgXiBzKSkpLFxuICAgICAgXCJ1bml0ICh0aW1lL2V2ZW50KSBpbiB3aGljaCBsaW1pdCBhbmQgcGxvdCBwZXJpb2QgYXJlIHNwZWNpZmllZFwiICk7XG4gICAgKCBcIi1lXCIsXG4gICAgICBBcmcuSW50XG4gICAgICAgIChmdW4gZSAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctZScgaGFzIGJlZW4gcmVwbGFjZSBieSAnLXUgZXZlbnQgLWwgXCJcbiAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGUgXiBcIidcIikpKSxcbiAgICAgIFwiRGVwcmVjYXRlZCBvcHRpb25cIiApO1xuICAgICggXCItbWFrZS1zaW1cIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBtYXJzaGFsaXplT3V0RmlsZSAtPiB0Lm1hcnNoYWxpemVPdXRGaWxlIDwtIFNvbWUgbWFyc2hhbGl6ZU91dEZpbGUpLFxuICAgICAgXCJzYXZlIGthcHBhIGZpbGVzIGFzIGEgc2ltdWxhdGlvbiBwYWNrYWdlXCIgKTtcbiAgICAoIFwiLWR1bXAtY2NcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBkb21haW5PdXRwdXRGaWxlIC0+IHQuZG9tYWluT3V0cHV0RmlsZSA8LSBTb21lIGRvbWFpbk91dHB1dEZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgZm9yIGR1bXBpbmcgdGhlIGRvbWFpbiBvZiBvYnNlcnZhYmxlc1wiICk7XG4gICAgKCBcIi10cmFjZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHRyYWNlRmlsZSAtPiB0LnRyYWNlRmlsZSA8LSBTb21lIHRyYWNlRmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgc2ltdWxhdGlvbiB0cmFjZVwiICk7XG4gICAgKCBcIi0tdGltZS1pbmRlcGVuZGVudFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiB0LnRpbWVJbmRlcGVuZGVudCA8LSB0cnVlKSxcbiAgICAgIFwiRGlzYWJsZSB0aGUgdXNlIG9mIHRpbWUgaXMgc3RvcnkgaGV1cml0aWNzIChmb3IgdGVzdCBzdWl0ZSlcIiApO1xuICAgICggXCItc2VlZFwiLFxuICAgICAgQXJnLkludCAoZnVuIGkgLT4gdC5zZWVkVmFsdWUgPC0gU29tZSBpKSxcbiAgICAgIFwiU2VlZCBmb3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yXCIgKTtcbiAgICAoIFwiLS1wcmludC1lZmZpY2llbmN5XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuc2hvd0VmZmljaWVuY3kgPC0gdHJ1ZSksXG4gICAgICBcIkthU2ltIHRlbGxzIGhvdyBmYXN0IGl0IHJ1bnNcIiApO1xuICAgICggXCItc2hhcmluZ1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBcIm5vXCIgfCBcIm5vbmVcIiB8IFwiTm9uZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk5vX3NoYXJpbmdcbiAgICAgICAgfCBcIkNvbXBhdGlibGVcIiAtPiB0LnNoYXJpbmcgPC0gUGF0dGVybi5NYXhfc2hhcmluZ1xuICAgICAgICB8IFwibWF4XCIgfCBcIk1heFwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJVbnJlY29nbml6ZWQgc2hhcmluZyBsZXZlbDogXCIgXiBzKSkpLFxuICAgICAgXCJMZXZlbCBvZiBzaGFyaW5nIGNvbXB1dGVkIGJldHdlZW4gcGF0dGVybnMgZHVyaW5nIGluaXRpYWxpemF0aW9uIFxcXG4gICAgICAgKE5vbmUvQ29tcGF0aWJsZS9NYXgpXCIgKTtcbiAgICAoIFwiLS1jb21waWxlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuY29tcGlsZV9tb2RlIDwtIHRydWUpLFxuICAgICAgXCJEaXNwbGF5IHJ1bGUgY29tcGlsYXRpb24gYXMgYWN0aW9uIGxpc3RcIiApO1xuICAgICggXCItbG9nXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gbG9nRmlsZSAtPiB0LmxvZ0ZpbGUgPC0gU29tZSBsb2dGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHJlZ2VuZXJhdGUgdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gICAgKCBcIi0tbm8tbG9nXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQubG9nRmlsZSA8LSBOb25lKSxcbiAgICAgIFwiRG8gbm90IGdlbmVyYXRlIGEgZmlsZSB0byByZWRvIHRoZSBleGFjdCBzYW1lIHNpbXVsYXRpb25cIiApO1xuICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHByZXByb2Nlc3NlZF9hc3QgPSB7XG4gIGNvbmY6IENvbmZpZ3VyYXRpb24udDtcbiAgc3RvcnlfY29tcHJlc3Npb246IGJvb2wgKiBib29sICogYm9vbDtcbiAgZm9ybWF0Q2Zsb3c6IHN0cmluZztcbiAgY2Zsb3dGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBhc3RfY29tcGlsZWRfZGF0YTogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhO1xuICBvdmVyd3JpdGVfaW5pdDpcbiAgICAoTEthcHBhLnJ1bGVfbWl4dHVyZSwgUmF3X21peHR1cmUudCwgaW50KSBBc3QuaW5pdF9zdGF0ZW1lbnQgbGlzdCBvcHRpb247XG4gIG92ZXJ3cml0ZV90MDogZmxvYXQgb3B0aW9uO1xufVxuXG50eXBlIGNvbXBpbGF0aW9uX3Jlc3VsdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBlbnY6IE1vZGVsLnQ7XG4gIGNvbnRhY3RfbWFwOiBDb250YWN0X21hcC50O1xuICB1cGRhdGVkX2FsZ192YXJzOiBpbnQgbGlzdDtcbiAgc3RvcnlfY29tcHJlc3Npb246IChib29sICogYm9vbCAqIGJvb2wpIG9wdGlvbjtcbiAgZm9ybWF0Q2Zsb3c6IHN0cmluZztcbiAgY2Zsb3dGaWxlOiBzdHJpbmcgb3B0aW9uO1xuICBpbml0X2w6IChQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUpIGxpc3Q7XG4gIGNvdW50ZXJfb3B0OiBDb3VudGVyLnQgb3B0aW9uO1xufVxuXG5sZXQgcHJlcHJvY2Vzc19hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgP2thc2ltX2FyZ3MgY2xpX2FyZ3NcbiAgICAoYXN0IDogKF8sIF8sIF8sIF8sIF8pIEFzdC5jb21waWwpIDogcHJlcHJvY2Vzc2VkX2FzdCA9XG4gIGxldCAoKSA9IEZvcm1hdC5wcmludGYgXCIrIHNpbXVsYXRpb24gcGFyYW1ldGVyc0AuXCIgaW5cbiAgbGV0IGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlID1cbiAgICBDb25maWd1cmF0aW9uLnBhcnNlIGFzdC5Bc3QuY29uZmlndXJhdGlvbnNcbiAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgU2FuaXR5IGNoZWNrc0AuXCIgaW5cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb24gaW5cbiAgbGV0IHZhcl9vdmVyd3JpdGUsIGluaXRpYWxNaXggPVxuICAgIG1hdGNoIGthc2ltX2FyZ3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBbXSwgTm9uZVxuICAgIHwgU29tZSBrYXNpbV9hcmdzIC0+XG4gICAgICBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuYWxnX3Zhcl9vdmVyd3JpdGUsIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5pbml0aWFsTWl4XG4gIGluXG4gIGxldCBhc3RfY29tcGlsZWRfZGF0YSA6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YSA9XG4gICAgTEthcHBhX2NvbXBpbGVyLmNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGUgfnN5bnRheF92ZXJzaW9uXG4gICAgICB+dmFyX292ZXJ3cml0ZSBhc3RcbiAgaW5cbiAgbGV0IG92ZXJ3cml0ZV9pbml0LCBvdmVyd3JpdGVfdDAgPVxuICAgIG1hdGNoIGluaXRpYWxNaXggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBOb25lXG4gICAgfCBTb21lIGZpbGUgLT5cbiAgICAgIGxldCBjb21waWwgPVxuICAgICAgICBtYXRjaCBzeW50YXhfdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgQXN0LlY0IC0+IEtsZXhlcjQuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBBc3QuZW1wdHlfY29tcGlsIGZpbGVcbiAgICAgICAgfCBBc3QuVjMgLT5cbiAgICAgICAgICBLYXBwYUxleGVyLmNvbXBpbGUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgQXN0LmVtcHR5X2NvbXBpbCBmaWxlXG4gICAgICBpblxuICAgICAgbGV0IGNvbmYsIF8sIF8sIF8gPSBDb25maWd1cmF0aW9uLnBhcnNlIGNvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgaW5cbiAgICAgICggU29tZVxuICAgICAgICAgIChMS2FwcGFfY29tcGlsZXIuaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZyBhc3RfY29tcGlsZWRfZGF0YS5jb250YWN0X21hcFxuICAgICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWxnX3ZhcnNfZmluZGVyIGNvbXBpbC5Bc3QuaW5pdCksXG4gICAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5pbml0aWFsIClcbiAgaW5cbiAge1xuICAgIGNvbmY7XG4gICAgc3RvcnlfY29tcHJlc3Npb247XG4gICAgZm9ybWF0Q2Zsb3c7XG4gICAgY2Zsb3dGaWxlO1xuICAgIGFzdF9jb21waWxlZF9kYXRhO1xuICAgIG92ZXJ3cml0ZV9pbml0O1xuICAgIG92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgc3ludGF4X3ZlcnNpb24gZmlsZV9saXN0ID1cbiAgbGV0IGNvbXBpbGluZ19mdW5jdGlvbiA9XG4gICAgbWF0Y2ggc3ludGF4X3ZlcnNpb24gd2l0aFxuICAgIHwgQXN0LlY0IC0+IEtsZXhlcjQuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICAgIHwgQXN0LlYzIC0+IEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICBpblxuICBMaXN0LmZvbGRfbGVmdCBjb21waWxpbmdfZnVuY3Rpb24gQXN0LmVtcHR5X2NvbXBpbCBmaWxlX2xpc3RcblxubGV0IGdldF9hc3RfZnJvbV9jbGlfYXJncyBjbGlfYXJncyA9XG4gIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uXG4gICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXNcblxubGV0IGdldF9wcmVwcm9jZXNzZWRfYXN0X2Zyb21fY2xpX2FyZ3Mgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICA/KGthc2ltX2FyZ3MgPSBLYXNpbV9hcmdzLmRlZmF1bHQpIGNsaV9hcmdzID1cbiAgbGV0IGFzdCA6IChBc3QuYWdlbnQsIEFzdC5taXh0dXJlLCBBc3QubWl4dHVyZSwgc3RyaW5nLCBBc3QucnVsZSkgQXN0LmNvbXBpbCA9XG4gICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG4gIGluXG4gIHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzIH5rYXNpbV9hcmdzIGFzdFxuXG50eXBlIGNvbXBpbGF0aW9uX3BhY2sgPSB7XG4gIGNvbXBpbGF0aW9uX3Jlc3VsdDogY29tcGlsYXRpb25fcmVzdWx0O1xuICBhbGdfb3ZlcndyaXRlOiAoaW50ICogUHJpbWl0aXZlcy5hbGdfZXhwcikgbGlzdDtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+KGNvbXBpbGVfbW9kZV9vbiA6IGJvb2wpXG4gICAgKHByZXByb2Nlc3NlZF9hc3QgOiBwcmVwcm9jZXNzZWRfYXN0KSA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBsZXQgbiwgdywgcyA9IHByZXByb2Nlc3NlZF9hc3Quc3RvcnlfY29tcHJlc3Npb24gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgQ29tcGlsaW5nLi4uQC5cIiBpblxuICBsZXQgZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbCA9XG4gICAgRXZhbC5jb21waWxlIH5vdXRwdXRzOk91dHB1dHMuZ29cbiAgICAgIH5wYXVzZTooZnVuIGYgLT4gZiAoKSlcbiAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHgpXG4gICAgICB+ZGVidWdfbW9kZTohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+c2hhcmluZzprYXNpbV9hcmdzLkthc2ltX2FyZ3Muc2hhcmluZ1xuICAgICAgP3Jlc2NhbGVfaW5pdDprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZVxuICAgICAgP292ZXJ3cml0ZV9pbml0OnByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX2luaXRcbiAgICAgID9vdmVyd3JpdGVfdDA6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfdDAgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICBpblxuICBsZXQgc3RvcnlfY29tcHJlc3Npb24gPVxuICAgIGlmIGhhc190cmFja2luZyAmJiAobiB8fCB3IHx8IHMpIHRoZW5cbiAgICAgIFNvbWUgcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvblxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgaW5cbiAge1xuICAgIGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGNvbmYgPSBwcmVwcm9jZXNzZWRfYXN0LmNvbmY7XG4gICAgICAgIGVudjtcbiAgICAgICAgY29udGFjdF9tYXAgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwO1xuICAgICAgICB1cGRhdGVkX2FsZ192YXJzID0gcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS51cGRhdGVkX2FsZ192YXJzO1xuICAgICAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICAgICAgZm9ybWF0Q2Zsb3cgPSBwcmVwcm9jZXNzZWRfYXN0LmZvcm1hdENmbG93O1xuICAgICAgICBjZmxvd0ZpbGUgPSBwcmVwcm9jZXNzZWRfYXN0LmNmbG93RmlsZTtcbiAgICAgICAgaW5pdF9sO1xuICAgICAgICBjb3VudGVyX29wdCA9IE5vbmU7XG4gICAgICB9O1xuICAgIGFsZ19vdmVyd3JpdGUgPSBbXTtcbiAgICBvdmVyd3JpdGVfdDAgPSBwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X3BhY2tfZnJvbV9tYXJzaGFsaXplZGZpbGUgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBtYXJzaGFsaXplZF9maWxlXG4gICAgOiBjb21waWxhdGlvbl9wYWNrID1cbiAgYXNzZXJ0IChtYXJzaGFsaXplZF9maWxlIDw+IFwiXCIpO1xuICB0cnlcbiAgICBsZXQgZCA9IG9wZW5faW5fYmluIG1hcnNoYWxpemVkX2ZpbGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXMgPD4gW10gdGhlblxuICAgICAgICB3YXJuaW5nIH5wb3M6TG9jLmR1bW15IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIGxvYWRlZCwgYWxsIGthcHBhIGZpbGVzIGFyZSBpZ25vcmVkXCIpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LnByaW50ZiBcIisgTG9hZGluZyBzaW11bGF0aW9uIHBhY2thZ2UgJXMuLi5ALlwiIG1hcnNoYWxpemVkX2ZpbGVcbiAgICBpblxuICAgIGxldCBjb21waWxhdGlvbl9yZXN1bHQgOiBjb21waWxhdGlvbl9yZXN1bHQgPSBNYXJzaGFsLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gU3RkbGliLmNsb3NlX2luIGQgaW5cbiAgICBsZXQgYWxnX292ZXJ3cml0ZSA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzLCB2KSAtPlxuICAgICAgICAgICggTW9kZWwubnVtX29mX2FsZyAoTG9jLmFubm90X3dpdGhfZHVtbXkgcykgY29tcGlsYXRpb25fcmVzdWx0LmVudixcbiAgICAgICAgICAgIEFsZ19leHByLkNPTlNUIHYgKSlcbiAgICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlXG4gICAgaW5cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IHsgY29tcGlsYXRpb25fcmVzdWx0OyBhbGdfb3ZlcndyaXRlOyBvdmVyd3JpdGVfdDAgPSBOb25lIH1cbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIFsgZmlsZSBdXG4gICAgICBpblxuICAgICAgbGV0IG92ZXJ3cml0ZV90MCA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgIChDb25maWd1cmF0aW9uLnBhcnNlIGNvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgfD4gZnVuIChhLCBfLCBfLCBfKSAtPiBhKVxuICAgICAgICB8PiBmdW4gY29uZiAtPiBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbFxuICAgICAgaW5cblxuICAgICAgbGV0IHJhd19pbml0cyA9XG4gICAgICAgIExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZ1xuICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwXG4gICAgICAgICAgKE1vZGVsLnRva2Vuc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWwuQXN0LmluaXRcbiAgICAgIGluXG4gICAgICBsZXQgaW5pdF9sID1cbiAgICAgICAgRXZhbC5jb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH53YXJuaW5nXG4gICAgICAgICAgP3Jlc2NhbGU6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnJlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZVxuICAgICAgICAgIGNvbXBpbGF0aW9uX3Jlc3VsdC5jb250YWN0X21hcCBjb21waWxhdGlvbl9yZXN1bHQuZW52IHJhd19pbml0c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0ID0geyBjb21waWxhdGlvbl9yZXN1bHQgd2l0aCBpbml0X2wgfTtcbiAgICAgICAgYWxnX292ZXJ3cml0ZTtcbiAgICAgICAgb3ZlcndyaXRlX3QwO1xuICAgICAgfVxuICB3aXRoXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCBfIGFzIGUgLT4gcmFpc2UgZVxuICB8IF9leG4gLT5cbiAgICBGb3JtYXQucHJpbnRmXG4gICAgICBcIlNpbXVsYXRpb24gcGFja2FnZSBzZWVtcyB0byBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHZlcnNpb24gXFxcbiAgICAgICBvZiBLYVNpbSwgYWJvcnRpbmcuLi5cIjtcbiAgICBleGl0IDFcblxubGV0IGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgOiBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgaW5pdF90X2Zyb21fZmlsZXMgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZVxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbClcbiAgICAgIHBhY2sub3ZlcndyaXRlX3QwXG4gIGluXG4gIGxldCBpbml0X3QsIG1heF90aW1lLCBpbml0X2UsIG1heF9ldmVudCwgcGxvdF9wZXJpb2QgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy51bml0IHdpdGhcbiAgICB8IEthc2ltX2FyZ3MuVGltZSAtPlxuICAgICAgKCBPcHRpb25fdXRpbC51bnNvbWUgaW5pdF90X2Zyb21fZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLm1pblZhbHVlLFxuICAgICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uRFQgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICAgIHwgS2FzaW1fYXJncy5FdmVudCAtPlxuICAgICAgKCBpbml0X3RfZnJvbV9maWxlcyxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgU29tZVxuICAgICAgICAgIChpbnRfb2ZfZmxvYXQgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUpKSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwIGludF9vZl9mbG9hdCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uREUgKGludF9vZl9mbG9hdCAoY2VpbCBhKSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIChDb25maWd1cmF0aW9uLkRFIDEpXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICBpblxuICBsZXQgY291bnRlciA9XG4gICAgQ291bnRlci5jcmVhdGUgfmluaXRfdCA/aW5pdF9lID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgICAgfm5iX3J1bGVzOihNb2RlbC5uYl9ydWxlcyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAoKVxuICBpblxuICBsZXQgZW52ID1cbiAgICBpZlxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmJhdGNobW9kZVxuICAgICAgJiYga2FzaW1fYXJncy5LYXNpbV9hcmdzLm1hcnNoYWxpemVPdXRGaWxlID0gTm9uZVxuICAgIHRoZW5cbiAgICAgIE1vZGVsLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWU6KENvdW50ZXIubWF4X3RpbWUgY291bnRlcilcbiAgICAgICAgP21heF9ldmVudHM6KENvdW50ZXIubWF4X2V2ZW50cyBjb3VudGVyKVxuICAgICAgICB+dXBkYXRlZF92YXJzOnBhY2suY29tcGlsYXRpb25fcmVzdWx0LnVwZGF0ZWRfYWxnX3ZhcnNcbiAgICAgICAgfmFsZ19vdmVyd3JpdGU6cGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICAgIGVsc2VcbiAgICAgIE1vZGVsLm92ZXJ3cml0ZV92YXJzIHBhY2suYWxnX292ZXJ3cml0ZSBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnZcbiAgaW5cbiAgeyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGVudjsgY291bnRlcl9vcHQgPSBTb21lIGNvdW50ZXIgfVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCB+d2FybmluZyA/KGNvbXBpbGVfbW9kZV9vbiA9IGZhbHNlKVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgcHJlcHJvY2Vzc2VkX2FzdCA6XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IHBhY2sgPVxuICAgIGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH5jb21waWxlX21vZGVfb24gcHJlcHJvY2Vzc2VkX2FzdFxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uIH53YXJuaW5nIH5kZWJ1Z19tb2RlID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCAocGFjayA6IGNvbXBpbGF0aW9uX3BhY2spID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZWRJbkZpbGUgd2l0aFxuICAgIHwgXCJcIiAtPlxuICAgICAgbGV0IHByZXByb2Nlc3NlZF9hc3QgPVxuICAgICAgICBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzXG4gICAgICBpblxuICAgICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgICBwcmVwcm9jZXNzZWRfYXN0XG4gICAgfCBtYXJzaGFsaXplZF9maWxlIC0+XG4gICAgICBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgICAgIG1hcnNoYWxpemVkX2ZpbGVcbiAgaW5cbiAgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIHBhY2tcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBkZWxpbWl0ZXI6IGNoYXIgfVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGRlbGltaXRlciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tZGVsaW1pdGVyXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGQgPSBTY2FuZi51bmVzY2FwZWQgZCBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBpZiAxID0gU3RyaW5nLmxlbmd0aCBkIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuZ2V0IGQgMFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJkZWxpbWV0ZXIgaGFzIG11bHRpcGxlIGNoYXJhY3RlcnMgJyVzJ1wiIGQpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHQuZGVsaW1pdGVyIDwtIGQgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgd2l0aCBTY2FuZi5TY2FuX2ZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGRlbGltZXRlciAnJXMnXCIgZCkpKSxcbiAgICAgIFwiRGVsaW1pdGVyIGZvciBtZXNzYWdlIHBhc3NpbmdcIiApO1xuICBdXG4iLCIoKipcbiAgKiBsb2dnZXJzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI2LzAxLzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBlbmNvZGluZyA9XG4gIHwgTWF0cml4XG4gIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoXG4gIHwgSFRNTFxuICB8IEhUTUxfVGFidWxhclxuICB8IERPVFxuICB8IFRYVFxuICB8IFRYVF9UYWJ1bGFyXG4gIHwgWExTXG4gIHwgT2N0YXZlXG4gIHwgTWF0bGFiXG4gIHwgTWFwbGVcbiAgfCBNYXRoZW1hdGljYVxuICB8IFNCTUxcbiAgfCBET1RORVRcbiAgfCBKc29uXG4gIHwgR0VQSElcblxubW9kdWxlIHR5cGUgRm9ybWF0TWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhZGQgOiBlbmNvZGluZyAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbmQgOiBlbmNvZGluZyAtPiAnYSB0IC0+ICdhXG4gIHZhbCBlbXB0eSA6ICdhIHRcbmVuZFxuXG5tb2R1bGUgRm9ybWF0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBlbmNvZGluZ1xuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kKVxuXG50eXBlIHRva2VuID0gU3RyaW5nIG9mIHN0cmluZyB8IEJyZWFrYWJsZV9zcGFjZSB8IEJyZWFrYWJsZV9oaW50XG5cbnR5cGUgbG9nZ2VyID1cbiAgfCBERVZOVUxcbiAgfCBGb3JtYXR0ZXIgb2YgRm9ybWF0LmZvcm1hdHRlclxuICB8IENpcmN1bGFyX2J1ZmZlciBvZiBzdHJpbmcgQ2lyY3VsYXJfYnVmZmVycy50IHJlZlxuICB8IEluZmluaXRlX2J1ZmZlciBvZiBzdHJpbmcgSW5maW5pdGVfYnVmZmVycy50IHJlZlxuXG5sZXQgYnJlYWthYmxlIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBIVE1MX1RhYnVsYXIgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgVFhUIC0+IHRydWVcbiAgfCBNYXRyaXggfCBKc29uIHwgTWF0aGVtYXRpY2EgfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBET1RcbiAgfCBHRVBISSB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgZmFsc2VcblxudHlwZSB0ID0ge1xuICBlbmNvZGluZzogZW5jb2Rpbmc7XG4gIGxvZ2dlcjogbG9nZ2VyO1xuICBjaGFubmVsX29wdDogb3V0X2NoYW5uZWwgb3B0aW9uO1xuICBtdXRhYmxlIGN1cnJlbnRfbGluZTogdG9rZW4gbGlzdDtcbn1cblxubGV0IGdldF9lbmNvZGluZ19mb3JtYXQgdCA9IHQuZW5jb2RpbmdcblxubGV0IGR1bW15X2h0bWxfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gSFRNTDtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG5sZXQgZHVtbXlfdHh0X2xvZ2dlciA9XG4gIHtcbiAgICAoKiAgaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eSA7KilcbiAgICBlbmNvZGluZyA9IFRYVDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgbG9nZ2VyID0gREVWTlVMO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG4oKiBXYXJuaW5nLCB3ZSBoYXZlIHRvIGtlZXAgdGhlIGNoYXJhY3RlciBAIHdoZW4gaXQgaXMgZm9sbG93ZWQgYnkgYSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgYSBkaWdpdCBzaG91bGQgYmUgcHJlc2VydmVkICopXG5cbmxldCBkdW1wX2NsZWFuX3N0cmluZyBmbXQgPVxuICBTdHJpbmcuaXRlciAoZnVuIGEgLT5cbiAgICAgIGlmIGEgPSAnXFxuJyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVjXCIgYSlcblxubGV0IGNsZWFuX3N0cmluZyBzID1cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZmZlciBpblxuICBsZXQgKCkgPSBkdW1wX2NsZWFuX3N0cmluZyBmbXRfYnVmZmVyIHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgY2xlYW4gZm10ID1cbiAgbGV0IHMgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBzIGluXG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgIGR1bXBfY2xlYW5fc3RyaW5nIGZtdCAoQnVmZmVyLmNvbnRlbnRzIHMpKVxuICAgIGZtdF9idWZmZXJcblxubGV0IGZwcmludGYgPyhmcHJpbnRuZXdsaW5lID0gZmFsc2UpIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIsIGZwcmludG5ld2xpbmUgfHwgYnJlYWthYmxlIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgREVWTlVMLCBfIC0+IEZvcm1hdC5pZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICB8IEZvcm1hdHRlciBmbXQsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZm10XG4gIHwgRm9ybWF0dGVyIGZtdCwgZmFsc2UgLT4gY2xlYW4gZm10XG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8sIGJvb2wgfCBJbmZpbml0ZV9idWZmZXIgXywgYm9vbCAtPlxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gICAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gICAgRm9ybWF0LmtmcHJpbnRmXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgICAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC1cbiAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgIChpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGNsZWFuX3N0cmluZyBzdHIpXG4gICAgICAgICAgOjogbG9nZ2VyLmN1cnJlbnRfbGluZSlcbiAgICAgIGZtdF9idWZmZXJcblxubGV0IHByaW50X2JyZWFrYWJsZV9zcGFjZSBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJAIFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9zcGFjZSA6OiBsb2dnZXIuY3VycmVudF9saW5lXG4gICkgZWxzZVxuICAgIGZwcmludGYgbG9nZ2VyIFwiIFwiXG5cbmxldCBwcmludF9icmVha2FibGVfaGludCBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJALFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9oaW50IDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCJcIlxuXG5sZXQgZW5kX29mX2xpbmVfc3ltYm9sIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCAtPiBcIjxCcj5cIlxuICB8IE1hdHJpeCB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSnNvblxuICB8IEdFUEhJIHwgSFRNTF9UYWJ1bGFyIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBcIlwiXG5cbmxldCBkdW1wX3Rva2VuIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gIHwgQnJlYWthYmxlX3NwYWNlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAIFwiXG4gIHwgQnJlYWthYmxlX2hpbnQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsXCJcblxubGV0IHByaW50X25ld2xpbmUgbG9nZ2VyID1cbiAgbGV0ICgpID1cbiAgICBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOnRydWUgbG9nZ2VyIFwiJXMldFwiIChlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyKVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIGYgKCkpXG4gIGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGJmIC0+XG4gICAgbGV0IGJmJyA9XG4gICAgICBDaXJjdWxhcl9idWZmZXJzLmFkZFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAoUHAubGlzdCAoZnVuIF8gLT4gKCkpIGR1bXBfdG9rZW4pXG4gICAgICAgICAgIChMaXN0LnJldiBsb2dnZXIuY3VycmVudF9saW5lKSlcbiAgICAgICAgIWJmXG4gICAgaW5cbiAgICBsZXQgKCkgPSBiZiA6PSBiZicgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuY3VycmVudF9saW5lIDwtIFtdIGluXG4gICAgKClcbiAgfCBJbmZpbml0ZV9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIEluZmluaXRlX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuXG5sZXQgcHJpbnRfY2VsbCBsb2dnZXIgcyA9XG4gIGxldCBvcGVuX2NlbGxfc3ltYm9sLCBjbG9zZV9jZWxsX3N5bWJvbCA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUxfVGFidWxhciAtPiBcIjxURD5cIiwgXCI8L1REPlwiXG4gICAgfCBUWFRfVGFidWxhciAtPiBcIlwiLCBcIlxcdFwiXG4gICAgfCBNYXRyaXggfCBHRVBISSB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTFxuICAgIHwgRE9UTkVUIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgSFRNTCB8IERPVCB8IFRYVCB8IFhMUyAtPlxuICAgICAgXCJcIiwgXCJcIlxuICBpblxuICBmcHJpbnRmIGxvZ2dlciBcIiVzJXMlc1wiIG9wZW5fY2VsbF9zeW1ib2wgcyBjbG9zZV9jZWxsX3N5bWJvbFxuXG5sZXQgZmx1c2hfbG9nZ2VyIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCAtPiAoKVxuICB8IEZvcm1hdHRlciBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gKClcblxubGV0IGNsb3NlX2xvZ2dlciBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gICAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPC9kaXY+XFxuPC9ib2R5PlxcblwiXG4gICAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8L1RBQkxFPlxcbjwvZGl2PlxcbjwvYm9keT5cIlxuICAgIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwifVxcblwiXG4gICAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICAgIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X3ByZWFtYmxlIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuXCJcbiAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8Ym9keT5cXG48ZGl2PlxcbjxUQUJMRT5cXG5cIlxuICB8IE1hdHJpeCAtPlxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwie1wiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9CZWdpblRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9FbmRUaW1lXFxcIiA6IDAuMDAwMDAwZSswMCxcIiBpblxuICAgIGxldCAoKSA9IHByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgKClcbiAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgKClcblxubGV0IG9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCA/KG1vZGUgPSBUWFQpIGNoYW5uZWwgPVxuICBsZXQgZm9ybWF0dGVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsIGluXG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBTb21lIGNoYW5uZWw7XG4gICAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGUgbG9nZ2VyIGluXG4gIGxvZ2dlclxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgPyhtb2RlID0gVFhUKSBmb3JtYXR0ZXIgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gRm9ybWF0dGVyIGZvcm1hdHRlcjtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2NpcmN1bGFyX2J1ZmZlciA/KG1vZGUgPSBUWFQpID8oc2l6ZSA9IDEwKSAoKSA9XG4gIHtcbiAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICBsb2dnZXIgPSBDaXJjdWxhcl9idWZmZXIgKHJlZiAoQ2lyY3VsYXJfYnVmZmVycy5jcmVhdGUgc2l6ZSBcIlwiKSk7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBvcGVuX2luZmluaXRlX2J1ZmZlciA/KG1vZGUgPSBUWFQpICgpID1cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEluZmluaXRlX2J1ZmZlciAocmVmIChJbmZpbml0ZV9idWZmZXJzLmNyZWF0ZSAwIFwiXCIpKTtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5cIlxuICB8IE1hdHJpeCAtPiBmcHJpbnRmIGxvZ2dlciBcIltcIlxuICB8IEpzb24gfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXRoZW1hdGljYSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IEhUTUxfR3JhcGhcbiAgfCBKc19HcmFwaCB8IFhMUyB8IEhUTUwgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IEdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5ALlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiXVxcblwiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgTWF0aGVtYXRpY2EgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICBmcHJpbnRmIGxvZ2dlciBcIkAuXCJcblxubGV0IGZvcm1hdHRlcl9vZl9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBTb21lIGZtdFxuICB8IERFVk5VTCB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gTm9uZVxuXG5sZXQgcmVkaXJlY3QgbG9nZ2VyIGZtdCA9IHsgbG9nZ2VyIHdpdGggbG9nZ2VyID0gRm9ybWF0dGVyIGZtdCB9XG5sZXQgcHJpbnRfYXNfbG9nZ2VyIGxvZ2dlciBmID0gZnByaW50ZiBsb2dnZXIgXCIldFwiIGZcblxubGV0IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10ID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBDaXJjdWxhcl9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gSW5maW5pdGVfYnVmZmVycy5pdGVyIChGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiKSAhYlxuXG5sZXQgZmx1c2hfYW5kX2NsZWFuIGxvZ2dlciBmbXQgPVxuICBsZXQgKCkgPSBmbHVzaF9idWZmZXIgbG9nZ2VyIGZtdCBpblxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IGEgOj0gQ2lyY3VsYXJfYnVmZmVycy5jbGVhbiAhYVxuICB8IEluZmluaXRlX2J1ZmZlciBiIC0+IGIgOj0gSW5maW5pdGVfYnVmZmVycy5jbGVhbiAhYlxuXG5sZXQgZnByaW50ZiBsb2dnZXIgPSBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOmZhbHNlIGxvZ2dlclxubGV0IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciA9IGxvZ2dlci5jaGFubmVsX29wdFxuXG5sZXQgcHJpbnRfYmluZGluZ190eXBlIHQgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWUgKClcbiAgICA9XG4gIGZwcmludGYgdCBcIiVzXCJcbiAgICAoUHVibGljX2RhdGEuc3RyaW5nX29mX2JpbmRpbmdfdHlwZSB+YmluZGluZ190eXBlX3N5bWJvbCB+YWdlbnRfbmFtZVxuICAgICAgIH5zaXRlX25hbWUgKCkpXG5cbmxldCBkdW1wX2pzb24gbG9nZ2VyIGpzb24gPVxuICBsZXQgY2hhbm5lbF9vcHQgPSBjaGFubmVsX29mX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjaGFubmVsX29wdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGNoYW5uZWwgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGNoYW5uZWwganNvbiBpblxuICAgICAgKClcbiAgaW5cbiAgKClcblxubGV0IGxpbmVfdG9fanNvbiBsaW5lID0gYEFzc29jIFsgXCJsaW5lXCIsIEpzb25VdGlsLm9mX3N0cmluZyBsaW5lIF1cblxubGV0IGxpbmVfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgU3RyaW5nIHMpIF0gLT4gc1xuICB8IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxpbmVcIiwganNvbikpXG5cbmxldCBnZW5faXRlciBpdGVyIGxpc3QgPVxuICBsZXQgb3V0cHV0ID0gcmVmIFtdIGluXG4gIGxldCAoKSA9IGl0ZXIgKGZ1biBsaW5lIC0+IG91dHB1dCA6PSBsaW5lIDo6ICFvdXRwdXQpIGxpc3QgaW5cbiAgSnNvblV0aWwub2ZfbGlzdCBsaW5lX3RvX2pzb24gKExpc3QucmV2ICFvdXRwdXQpXG5cbmxldCBvZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGluZSBsaXN0XCIgbGluZV9vZl9qc29uXG5cbmxldCB0b19qc29uIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+IGBMaXN0IFtdXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gZ2VuX2l0ZXIgQ2lyY3VsYXJfYnVmZmVycy5pdGVyICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gZ2VuX2l0ZXIgSW5maW5pdGVfYnVmZmVycy5pdGVyICFiXG4iLCJsZXQgc3RyaW5nX29mX3VuX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5VTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5MT0cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsb2cvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImxvZ1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cm9vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic3FydFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxleHAvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImV4cFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHNpbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic2luXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxjb3MvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImNvc1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0YW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcInRhblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxmbG9vci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZmxvb3JcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfY29tcGFyZV9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxlcS8+XCJcbiAgICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgLT4gXCI9PVwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+IFwiPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bmVxLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCIhPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bHQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIjxcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGd0Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCI+XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuTU9EVUxPIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cmVtLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtb2RcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUFYIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWF4Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtYXhcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWluLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8ZGl2aWRlLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIvXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHBsdXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIitcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NVUxUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8dGltZXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cG93ZXIvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIioqXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxhbmQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiZcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxvci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwifFwiXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl91bl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5OT1QgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxub3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiFcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4iLCIoKipcbiAgKiBncmFwaF9sb2dnZXJzX3NpZy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgZGlyZWN0aW9uID0gRGlyZWN0IHwgUmV2ZXJzZSB8IFVuZGlyZWN0ZWQgfCBCb3RoXG50eXBlIHNoYXBlID0gSW52aXNpYmxlIHwgSG91c2UgfCBSZWN0IHwgRWxsaXBzZSB8IENpcmNsZSB8IEludmhvdXNlXG50eXBlIGhlYWRraW5kID0gTm9ybWFsIHwgVmVlIHwgVGVlIHwgTm9faGVhZFxudHlwZSBsaW5lc3R5bGUgPSBQbGFpbiB8IERvdHRlZCB8IERhc2hlZFxuXG50eXBlIGNvbG9yID1cbiAgfCBSZWRcbiAgfCBHcmVlblxuICB8IFdoaXRlXG4gIHwgQmx1ZVxuICB8IEJsYWNrXG4gIHwgTGlnaHRTa3lCbHVlXG4gIHwgUGFsZUdyZWVuXG4gIHwgQnJvd25cbiAgfCBZZWxsb3dcbiAgfCBHcmV5XG5cbnR5cGUgb3B0aW9ucyA9XG4gIHwgQ29sb3Igb2YgY29sb3JcbiAgfCBGaWxsQ29sb3Igb2YgY29sb3JcbiAgfCBMYWJlbCBvZiBzdHJpbmdcbiAgfCBXaWR0aCBvZiBpbnQgKCpwaXhlbCopXG4gIHwgSGVpZ2h0IG9mIGludCAoKnBpeGVsKilcbiAgfCBEaXJlY3Rpb24gb2YgZGlyZWN0aW9uXG4gIHwgU2hhcGUgb2Ygc2hhcGVcbiAgfCBBcnJvd0hlYWQgb2YgaGVhZGtpbmRcbiAgfCBBcnJvd1RhaWwgb2YgaGVhZGtpbmRcbiAgfCBMaW5lU3R5bGUgb2YgbGluZXN0eWxlXG4gIHwgT25DbGljayBvZiBZb2pzb24uQmFzaWMudFxuICB8IENvbnRleHR1YWxfaGVscCBvZiBzdHJpbmdcbiAgfCBQb3NpdGlvbiBvZiBMb2MudCBsaXN0XG5cbnR5cGUgZ3JhcGggPVxuICAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0ICogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdFxuXG50eXBlIHQgPSB7XG4gIGxvZ2dlcjogTG9nZ2Vycy50O1xuICBpZF9tYXA6IGludCBNb2RzLlN0cmluZ01hcC50IHJlZjtcbiAgZnJlc2hfaWQ6IGludCByZWY7XG4gIG5vZGVzOiAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0IHJlZjtcbiAgZWRnZXM6IChzdHJpbmcgKiBzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlc19tYXA6IG9wdGlvbnMgbGlzdCBsaXN0IE1vZHMuU3RyaW5nMk1hcC50IHJlZjtcbn1cblxubGV0IGxpZnQgdCA9IHQubG9nZ2VyXG5cbmxldCBleHRlbmRfbG9nZ2VyIGxvZ2dlciA9XG4gIHtcbiAgICBsb2dnZXI7XG4gICAgaWRfbWFwID0gcmVmIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgbm9kZXMgPSByZWYgW107XG4gICAgZWRnZXMgPSByZWYgW107XG4gICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcmVmcmVzaF9pZCB0ID1cbiAgbGV0ICgpID0gdC5pZF9tYXAgOj0gTW9kcy5TdHJpbmdNYXAuZW1wdHkgaW5cbiAgbGV0ICgpID0gdC5ub2RlcyA6PSBbXSBpblxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZnJlc2hfaWQgOj0gMSBpblxuICAoKVxuXG5sZXQgYWRkX25vZGUgdCBzIGQgPSB0Lm5vZGVzIDo9IChzLCBkKSA6OiAhKHQubm9kZXMpXG5cbmxldCBhZGRfZWRnZSB0IHMxIHMyIGQgPVxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IChzMSwgczIsIGQpIDo6ICEodC5lZGdlcykgaW5cbiAgbGV0IG1hcCA9ICEodC5lZGdlc19tYXApIGluXG4gIGxldCBvbGRfbGlzdCA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmcyTWFwLmZpbmRfb3B0aW9uIChzMSwgczIpIG1hcCB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiBbXVxuICBpblxuICBsZXQgKCkgPSB0LmVkZ2VzX21hcCA6PSBNb2RzLlN0cmluZzJNYXAuYWRkIChzMSwgczIpIChkIDo6IG9sZF9saXN0KSBtYXAgaW5cbiAgKClcblxubGV0IGdyYXBoX29mX2xvZ2dlciBsb2dnZXIgPSBMaXN0LnJldiAhKGxvZ2dlci5ub2RlcyksIExpc3QucmV2ICEobG9nZ2VyLmVkZ2VzKVxubGV0IGdldF9lZGdlX21hcCB0ID0gISh0LmVkZ2VzX21hcClcbmxldCBnZXRfbm9kZXMgdCA9ICEodC5ub2RlcylcbmxldCBmcmVzaF9pZCBsb2dnZXIgPSBUb29scy5nZXRfcmVmIGxvZ2dlci5mcmVzaF9pZFxuXG5sZXQgaW50X29mX3N0cmluZ19pZCBsb2dnZXIgc3RyaW5nID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc3RyaW5nICEobG9nZ2VyLmlkX21hcCkgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBpID0gZnJlc2hfaWQgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5hZGQgc3RyaW5nIGkgIShsb2dnZXIuaWRfbWFwKSBpblxuICAgIGlcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjMvMDUvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZG90X2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gXCJncmV5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IFwid2hpdGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjODdjZWViXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOThmYjk4XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcImJyb3duXCJcblxubGV0IHN2Z19jb2xvcl9lbmNvZGluZyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IFwiI2ZmM1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcIiNhYWFcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcIiNmMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiIzBmMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCIjZmZmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IFwiIzAwZlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gXCIjMDAwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjOGNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOWY5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcIiNmYzlcIlxuXG50eXBlIG5vZGVfYXR0cmlidXRlID0ge1xuICBub2RlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfZmlsbGNvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfbGFiZWw6IHN0cmluZyBvcHRpb247XG4gIG5vZGVfd2lkdGg6IGludCBvcHRpb247XG4gIG5vZGVfaGVpZ2h0OiBpbnQgb3B0aW9uO1xuICBub2RlX3NoYXBlOiBHcmFwaF9sb2dnZXJzX3NpZy5zaGFwZSBvcHRpb247XG4gIG5vZGVfcG9zaXRpb25zOiBMb2MudCBsaXN0O1xuICBub2RlX2NvbnRleHR1YWxfaGVscDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV9vbl9jbGljazogWW9qc29uLkJhc2ljLnQgb3B0aW9uO1xufVxuXG50eXBlIGVkZ2VfYXR0cmlidXRlID0ge1xuICBlZGdlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIGVkZ2VfbGFiZWw6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgZWRnZV9zdHlsZTogR3JhcGhfbG9nZ2Vyc19zaWcubGluZXN0eWxlO1xuICBlZGdlX2RpcmVjdGlvbjogR3JhcGhfbG9nZ2Vyc19zaWcuZGlyZWN0aW9uO1xuICBlZGdlX2Fycm93aGVhZDogR3JhcGhfbG9nZ2Vyc19zaWcuaGVhZGtpbmQ7XG4gIGVkZ2VfYXJyb3d0YWlsOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIGVkZ2VfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBlZGdlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbmxldCBkdW1teV9ub2RlID1cbiAge1xuICAgIG5vZGVfY29sb3IgPSBOb25lO1xuICAgIG5vZGVfZmlsbGNvbG9yID0gTm9uZTtcbiAgICBub2RlX2xhYmVsID0gTm9uZTtcbiAgICBub2RlX3dpZHRoID0gTm9uZTtcbiAgICBub2RlX2hlaWdodCA9IE5vbmU7XG4gICAgbm9kZV9zaGFwZSA9IE5vbmU7XG4gICAgbm9kZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBub2RlX29uX2NsaWNrID0gTm9uZTtcbiAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGR1bW15X2VkZ2UgPVxuICB7XG4gICAgZWRnZV9jb2xvciA9IE5vbmU7XG4gICAgZWRnZV9sYWJlbCA9IE5vbmU7XG4gICAgZWRnZV9zdHlsZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluO1xuICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfcG9zaXRpb25zID0gW107XG4gICAgZWRnZV9vbl9jbGljayA9IE5vbmU7XG4gICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPSBOb25lO1xuICB9XG5cbmxldCBpc19ub19ub2RlX2F0dHJpYnV0ZXMgbm9kZV9hdHRyaWJ1dGUgPSBub2RlX2F0dHJpYnV0ZSA9IGR1bW15X25vZGVcblxubGV0IGlzX25vX2VkZ2VfYXR0cmlidXRlcyBlZGdlX2F0dHJpYnV0ZSA9XG4gIGR1bW15X2VkZ2VcbiAgPSB7XG4gICAgICBlZGdlX2F0dHJpYnV0ZSB3aXRoXG4gICAgICBlZGdlX2RpcmVjdGlvbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdDtcbiAgICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgfVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFwiXG4gIGVsc2VcbiAgICAoKVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgPVxuICBpZiBib29sIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiwgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBodG1sX2RlcHMgPVxuICBbXG4gICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgXCJodHRwOi8vY3BldHRpdHQuZ2l0aHViLmlvL3Byb2plY3QvZGFncmUtZDMvbGF0ZXN0L2RhZ3JlLWQzLm1pbi5qc1wiO1xuICBdXG5cbmxldCBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCA9XG4gIGxldCBiMSA9XG4gICAgbWF0Y2ggZmlsdGVyX2luIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGZvcm1hdCBsXG4gIGluXG4gIGIxICYmIG5vdCAoTGlzdC5tZW0gZm9ybWF0IGZpbHRlcl9vdXQpXG5cbmxldCBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGgxPkBbJXNAXTwvaDE+QCxcIiB0aXRsZSBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD05NjAgaGVpZ2h0PTYwMD48Zy8+PC9zdmc+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gICgpXG5cbmxldCBwcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgPyhmaWx0ZXJfaW4gPSBOb25lKSA/KGZpbHRlcl9vdXQgPSBbXSlcbiAgICA/KGhlYWRlciA9IFtdKSB0aXRsZSA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIjJXNcIiB4IGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgaGVhZGVyXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJkaWdyYXBoIEd7XCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAoKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgKCogSU4gUFJPR0VTUyAqKVxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUpXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS1ALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBoZWFkZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCItLT5ALFwiIGluXG4gICAgICAgIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXM8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgICAgICAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGh0bWxfZGVwcyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkdCB7ZmxvYXQ6IGxlZnQ7IGNsZWFyOiBsZWZ0OyB3aWR0aDogMjBlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbjogMCAwIDAgMjFlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIubm9kZSByZWN0IHtzdHJva2U6ICMzMzM7IGZpbGw6ICNmZmY7fUAsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcIi5lZGdlUGF0aCBwYXRoIHtzdHJva2U6ICMzMzM7IGZpbGw6ICMzMzM7IHN0cm9rZS13aWR0aDogXFxcbiAgICAgICAgICAgICAgICAgICAxLjVweDt9XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3N0eWxlPlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSBpblxuICAgICAgICAoKSlcbiAgICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgKClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgdGl0bGUgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgKCp8IFRlZSAtPlxuICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcInRlZVxcXCJcIiB0aXRsZVxuICAgICAgICBpblxuICAgICAgICB0cnVlKilcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzOiBcXFwidmVlXFxcIlwiIHRpdGxlXG4gICAgaW5cbiAgICB0cnVlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICgqIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiJXM6IFxcXCJub25lXFxcIlwiIHRpdGxlXG4gICAgICAgaW5cbiAgICAgICB0cnVlKilcbiAgICBib29sXG5cbmxldCBtZXJnZSBzIHMnID1cbiAgaWYgcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgdGhlblxuICAgIHMnXG4gIGVsc2VcbiAgICBzXG5cbmxldCBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgbCA9XG4gIGxldCBpID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gaSBsIC0+XG4gICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHggLT5cbiAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBpICogN1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gaSAqIDNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBpICogLTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gaSAqIDVcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGlcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBpICogMTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBpICogMTNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gaSAqIDE3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gaSAqIDE5KVxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyAtPlxuICAgICAgICAgICAgIGkpKVxuICAgICAgMSBsXG4gIGluXG4gIHN0cmluZ19vZl9pbnQgaVxuXG5sZXQgcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIE1vZHMuU3RyaW5nMk1hcC5pdGVyXG4gICAgICAoZnVuIChpZDEsIGlkMikgbGlzdCAtPlxuICAgICAgICBsZXQgbGlzdCA9IExpc3QucmV2IGxpc3QgaW5cbiAgICAgICAgbGV0IGlkMV9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDEgaW5cbiAgICAgICAgbGV0IGlkMl9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDIgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0IC0+XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgKHMgOjogXCIsXCIgOjogcycpIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIHdoZW4gcyA9IHMnIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29sb3IgPSBTb21lIEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfc3R5bGUgPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IG1lcmdlIHMgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbnRleHR1YWxfaGVscCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggX1xuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyBvcHRpb25fbGlzdClcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgXCJnLnNldEVkZ2UoJWksJWkseyBcIiBpZDFfaW50IGlkMl9pbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9kaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkO1xuICAgICAgICAgICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3QgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPiBhdHRyaWJ1dGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wsIHNfb3B0ID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sLCBOb25lXG4gICAgICAgICAgfCBTb21lIHN0cmluZ19saXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc19vcHQsIHMnID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMTAwIHRoZW5cbiAgICAgICAgICAgICAgICBTb21lIHMsIFN0cmluZy5zdWIgcyAwIDEwMCBeIFwiLi4uXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE5vbmUsIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXFxcIlwiIHMnXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZSwgc19vcHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCBjb2xvciA9IHN2Z19jb2xvcl9lbmNvZGluZyBzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJzdHlsZTogXFxcInN0cm9rZTogJXM7IGZpbGw6IHdoaXRlXFxcIiwgYXJyb3doZWFkU3R5bGU6IFxcXCJmaWxsOiBcXFxuICAgICAgICAgICAgICAgICAlczsgc3Ryb2tlOiAlc1xcXCJcIlxuICAgICAgICAgICAgICAgIGNvbG9yIGNvbG9yIGNvbG9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd2hlYWRcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd3RhaWxcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggc19vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS0lcy0tPlxcblwiIHNcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X2VkZ2VfbWFwIGxvZ2dlcilcbiAgaW5cbiAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgbWF0Y2ggZl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBTZXQgdXAgem9vbSBzdXBwb3J0QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcImlubmVyLmF0dHIoXFxcInRyYW5zZm9ybVxcXCIsIFxcXCJ0cmFuc2xhdGUoXFxcIiArIGQzLmV2ZW50LnRyYW5zbGF0ZSArIFxcXCIpXFxcIiBcXFxuICAgICAgICAgK0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiXFxcInNjYWxlKFxcXCIgKyBkMy5ldmVudC5zY2FsZSArIFxcXCIpXFxcIik7QCx9KTtALHN2Zy5jYWxsKHpvb20pO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIENlbnRlciB0aGUgZ3JhcGhALHZhciBpbml0aWFsU2NhbGUgPSAwLjc1O0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIFxcXG4gICAgICAgICAyLCAyMF0pQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9zY3JpcHQ+XCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L2Rpdj5cIiBpblxuICAgICgpXG5cbmxldCBwcmludF9ncmFwaF9mb290IGxvZ2dlciA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwifVwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgfCBMb2dnZXJzLk1hdHJpeCAtPlxuICAgIGxldCBub2RlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9ub2RlcyBsb2dnZXIgaW5cbiAgICBsZXQgZWRnZXMgPSBHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwicnVsZXNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgKHMsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiJXNcXFwiXCIgc2VwIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJoaXRzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VwIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzMVwiIHNlcCBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJmbHV4c1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKHMxLCBfKSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIixcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZXAgKHMyLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb2xvcl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgZWRnZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiMFwiXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3B0aW9ucyAtPiBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgb3B0aW9uc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiIHNlcCBjb2xvcl92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgXCIsIFwiKVxuICAgICAgICAgICAgICBcIlwiIG5vZGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgdHJ1ZSlcbiAgICAgICAgZmFsc2Ugbm9kZXNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPiBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlclxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgbGV0ICgpID0gcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvYm9keT5AXUAsPC9odG1sPkBdQC5cIiBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9jb21tZW50IGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKSBzdHJpbmcgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgaWYgc2hhbGxfSV9kb19pdCBmb3JtYXQgZmlsdGVyX2luIGZpbHRlcl9vdXQgdGhlbiAoXG4gICAgbWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICAgIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBvcGVuX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdDxwPjxkbD5cXG5cIlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRyaXhcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdFxcdDwvZGw+PC9wPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZVxuICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfYXNzbyBsb2dnZXIgc3RyaW5nMSBzdHJpbmcyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIvKiVzICVzKi9cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICBcIlxcdFxcdFxcdDxkdD4lczwvZHQ+PGRkPiVzPC9kZD5cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgc2hhcGVfaW5fZG90IHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSAtPiBcInN0eWxlPWludmlzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBcInNoYXBlPWludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBcInNoYXBlPWhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IFwic2hhcGU9Ym94XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IFwic2hhcGU9ZWxsaXBzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFwic2hhcGU9Y2lyY2xlXCJcblxubGV0IHNoYXBlX2luX2h0bWwgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFNvbWUgXCJzdHlsZTogXFxcInZpc2liaWxpdHk6aGlkZGVuXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gU29tZSBcInNoYXBlOiBcXFwiaW52aG91c2VcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gU29tZSBcInNoYXBlOiBcXFwicmVjdFxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gU29tZSBcInNoYXBlOiBcXFwiZWxsaXBzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG5cbmxldCBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLVwiXG5sZXQgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IF8gPSBcIi0tXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCJ8PlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3Qgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IFwiPFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IFwiPHxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcInxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCJcIlxuXG5sZXQgcHJpbnRfbm9kZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pIGlkID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9ub2RlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfbGFiZWwgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2ZpbGxjb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfd2lkdGggPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IGkgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfaGVpZ2h0ID0gU29tZSBpIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9zaGFwZSA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLm5vZGVfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgbm9kZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgXyAtPlxuICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgYXR0cmlidXRlcyBkaXJlY3RpdmVzXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUxcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5IVE1MIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcIiVzXFxcIlwiIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImxhYmVsPVxcXCIlc1xcXCJcIiBzdHJpbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfc2hhcGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCIlc1wiIChzaGFwZV9pbl9kb3Qgc2hhcGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3dpZHRoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoPVxcXCIlaXB4XFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfaGVpZ2h0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJoZWlnaHQ9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I9XFxcIiVzXFxcIlwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJmaWxsY29sb3I9XFxcIiVzXFxcIiBzdHlsZT1maWxsZWRcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBpZiBib29sIHRoZW4gKCkgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJdO1wiIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBpZF9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImcuc2V0Tm9kZSglaSwgeyBcIiBpZF9pbnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19ub2RlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWRcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+IHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nID0gU3RyaW5nLmVzY2FwZWQgc3RyaW5nIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbDogXFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2hhcGVfaW5faHRtbCBzaGFwZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBzaGFwZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIiBzaGFwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ3aWR0aDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJoZWlnaHQ6IFxcXCIlaVxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I6IFxcXCIlc1xcXCJcIiAoc3ZnX2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIFwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgfSk7QCxcIiBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgLT5cbiAgICAobWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiTm9kZTogJXNcIiBpZCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBTb21lIGxhYmVsIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgXCJOb2RlOiVzLCBMYWJlbDolc1wiIGlkIGxhYmVsXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpKVxuICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5hZGRfbm9kZSBsb2dnZXIgaWQgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfZWRnZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pID8ocHJlZml4ID0gXCJcIikgaWQxIGlkMiA9XG4gIGxldCBhdHRyaWJ1dGVzID0gZHVtbXlfZWRnZSBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSBbIHMgXSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfZGlyZWN0aW9uID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9wb3NpdGlvbnMgPSBwIEAgYXR0cmlidXRlcy5lZGdlX3Bvc2l0aW9ucyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFNcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCBkaXJlY3Rpb24gPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgIHN0cmluZ190d29fb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgICBeIHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZSAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiXFxcIiVzXFxcIiAlcyBcXFwiJXNcXFwiXCIgaWQxIGRpcmVjdGlvbiBpZDJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19lZGdlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgW1wiIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw9XFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIilcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiXCIgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9zdHlsZSB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwic3R5bGU9XFxcImRvdHRlZFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZGFzaGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ0ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93aGVhZD1cXFwidmVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJub25lXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3d0YWlsPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICBsZXQgbGFiZWwgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbIFwiXCIgXVxuICAgICAgfCBTb21lIHggLT4geFxuICAgIGluXG4gICAgbGV0IGFycm93ID1cbiAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiLS1cIlxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCItPlwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcIi18XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICBcIiVzJXMgJXMgJXNcIiBwcmVmaXggaWQxIGFycm93IGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAoTGlzdC5yZXYgbGFiZWwpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9lZGdlIGxvZ2dlciBpZDEgaWQyIGRpcmVjdGl2ZXNcbiAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWJcbiAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X29uZV90b19uX3JlbGF0aW9uIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSlcbiAgICA/KHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKSA/KHN0eWxlX24gPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbilcbiAgICBpZCBpZGxpc3QgPVxuICBsZXQgZmljdGl0aW91cyA9IFwiRmljdGl0aW91c19cIiBeIGlkIGluXG4gIGxldCBkaXJlY3RpdmVzX2ZpY3QgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuRE9UXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfb25lID1cbiAgICBpZiBzdHlsZV9vbmUgPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiB0aGVuXG4gICAgICBkaXJlY3RpdmVzXG4gICAgZWxzZVxuICAgICAgTGlzdC5yZXYgKEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzdHlsZV9vbmUgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfbiA9XG4gICAgaWYgc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX24gOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IF8gPSBwcmludF9ub2RlIGxvZ2dlciBmaWN0aXRpb3VzIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfZmljdCBpblxuICBsZXQgXyA9IHByaW50X2VkZ2UgbG9nZ2VyIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfb25lIGZpY3RpdGlvdXMgaWQgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBpZCcgLT4gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19uIGZpY3RpdGlvdXMgaWQnKVxuICAgICAgaWRsaXN0XG4gIGluXG4gICgpXG5cbmxldCBfID1cbiAgbGV0IGYgdCB0JyA9IHQuZWRnZV9vbl9jbGljaywgdCcubm9kZV9vbl9jbGljayBpblxuICBmXG4iLCIoKipcbiAgKiBncmFwaF9qcy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkaXJlY3Rpb24gPVxuICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPiBgU3RyaW5nIFwiRGlyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+IGBTdHJpbmcgXCJSZXZlcnNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGBTdHJpbmcgXCJCb3RoXCJcblxubGV0IHNoYXBlX3RvX2pzb24gc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IGBTdHJpbmcgXCJJbnZpc2libGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IGBTdHJpbmcgXCJIb3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gYFN0cmluZyBcIkludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IGBTdHJpbmcgXCJyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IGBTdHJpbmcgXCJlbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gYFN0cmluZyBcImNpcmNsZVwiXG5cbmxldCBoZWFka2luZF90b19qc29uIGhlYWRraW5kID1cbiAgbWF0Y2ggaGVhZGtpbmQgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBgU3RyaW5nIFwidmVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gYFN0cmluZyBcIlRlZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBgU3RyaW5nIFwidW5kaXJlY3RlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGBTdHJpbmcgXCJub3JtYWxcIlxuXG5sZXQgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlID1cbiAgbWF0Y2ggbGluZXN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBgU3RyaW5nIFwiUGxhaW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPiBgU3RyaW5nIFwiRG90dGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWQgLT4gYFN0cmluZyBcIkRhc2hlZFwiXG5cbmxldCBjb2xvcl90b19qc29uIGNvbG9yID1cbiAgbWF0Y2ggY29sb3Igd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBgU3RyaW5nIFwicmVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBgU3RyaW5nIFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGBTdHJpbmcgXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBgU3RyaW5nIFwiYmx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gYFN0cmluZyBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gYFN0cmluZyBcImxpZ2h0c2t5Ymx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGBTdHJpbmcgXCJwYWxlZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGBTdHJpbmcgXCJicm93blwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IGBTdHJpbmcgXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gYFN0cmluZyBcImdyZXlcIlxuXG5sZXQgZGlyZWN0aXZlX3RvX2pzb24gb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBjb2xvciAtPiBcImNvbG9yXCIsIGNvbG9yX3RvX2pzb24gY29sb3JcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgY29sb3IgLT4gXCJmaWxsY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHN0cmluZyAtPiBcImxhYmVsXCIsIGBTdHJpbmcgc3RyaW5nXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggaW50IC0+IFwid2lkdGhcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50IC0+IFwiaGVpZ2h0XCIsIGBJbnQgaW50XG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIGRpcmVjdGlvbiAtPlxuICAgIFwiZGlyZWN0aW9uXCIsIGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvblxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHNoYXBlIC0+IFwic2hhcGVcIiwgc2hhcGVfdG9fanNvbiBzaGFwZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3doZWFkXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgaGVhZGtpbmQgLT5cbiAgICBcImFycm93dGFpbFwiLCBoZWFka2luZF90b19qc29uIGhlYWRraW5kXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIGxpbmVzdHlsZSAtPlxuICAgIFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZV90b19qc29uIGxpbmVzdHlsZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAoIFwicG9zaXRpb25cIixcbiAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgKGZ1biBqc29uIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwganNvbikpXG4gICAgICAgIHAgKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgXCJjb250ZXh0dWFsIGhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT4gXCJvbl9jbGlja1wiLCBqc29uXG5cbmxldCBkaXJlY3RpdmVzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9hc3NvYyBkaXJlY3RpdmVfdG9fanNvblxuXG5sZXQgbm9kZV90b19qc29uIChpZCwgZGlyZWN0aXZlcykgPVxuICBgQXNzb2MgWyBcImlkXCIsIGBTdHJpbmcgaWQ7IFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcyBdXG5cbmxldCBlZGdlX3RvX2pzb24gKGlkMSwgaWQyLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwic291cmNlXCIsIGBTdHJpbmcgaWQxO1xuICAgICAgXCJ0YXJnZXRcIiwgYFN0cmluZyBpZDI7XG4gICAgICBcImRpcmVjdGl2ZXNcIiwgZGlyZWN0aXZlc190b19qc29uIGRpcmVjdGl2ZXM7XG4gICAgXVxuXG5sZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uXG5sZXQgZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uXG5cbmxldCB0b19qc29uIGdyYXBoIDogWW9qc29uLkJhc2ljLnQgPVxuICBgQXNzb2NcbiAgICBbIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbiAoZnN0IGdyYXBoKTsgXCJlZGdlc1wiLCBlZGdlc190b19qc29uIChzbmQgZ3JhcGgpIF1cblxubGV0IGxpbmVzdHlsZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiUGxhaW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpblxuICB8IGBTdHJpbmcgXCJEb3R0ZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWRcbiAgfCBgU3RyaW5nIFwiRGFzaGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgaGVhZGtpbmRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInZlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZVxuICB8IGBTdHJpbmcgXCJUZWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5UZWVcbiAgfCBgU3RyaW5nIFwidW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWRcbiAgfCBgU3RyaW5nIFwibm9ybWFsXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgc2hhcGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkludmlzaWJsZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICB8IGBTdHJpbmcgXCJIb3VzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG4gIHwgYFN0cmluZyBcIkludmhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2VcbiAgfCBgU3RyaW5nIFwicmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcbiAgfCBgU3RyaW5nIFwiZWxsaXBzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbiAgfCBgU3RyaW5nIFwiY2lyY2xlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHNoYXBlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aW9uX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJEaXJlY3RcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3RcbiAgfCBgU3RyaW5nIFwiUmV2ZXJzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2VcbiAgfCBgU3RyaW5nIFwiVW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWRcbiAgfCBgU3RyaW5nIFwiQm90aFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aW9uXCIsIHgpKVxuXG5sZXQgY29sb3Jfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImdyZXlcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5XG4gIHwgYFN0cmluZyBcInllbGxvd1wiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xuICB8IGBTdHJpbmcgXCJyZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbiAgfCBgU3RyaW5nIFwiZ3JlZW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlblxuICB8IGBTdHJpbmcgXCJ3aGl0ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlXG4gIHwgYFN0cmluZyBcImJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG4gIHwgYFN0cmluZyBcImJsYWNrXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgfCBgU3RyaW5nIFwibGlnaHRza3libHVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlXG4gIHwgYFN0cmluZyBcInBhbGVncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlblxuICB8IGBTdHJpbmcgXCJicm93blwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbG9yXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IFwiY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJmaWxsY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIChjb2xvcl9vZl9qc29uIGNvbG9yKVxuICB8IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmcgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nXG4gIHwgXCJ3aWR0aFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnRcbiAgfCBcImhlaWdodFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50XG4gIHwgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIChkaXJlY3Rpb25fb2ZfanNvbiBkaXJlY3Rpb24pXG4gIHwgXCJzaGFwZVwiLCBzaGFwZSAtPiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAoc2hhcGVfb2ZfanNvbiBzaGFwZSlcbiAgfCBcImFycm93aGVhZFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImFycm93dGFpbFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImxpbmVzdHlsZVwiLCBsaW5lc3R5bGUgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgKGxpbmVzdHlsZV9vZl9qc29uIGxpbmVzdHlsZSlcbiAgfCBcInBvc2l0aW9uXCIsIHBvc19saXN0IC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb25cbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgP2Vycm9yX21zZzooU29tZSAoSnNvblV0aWwuYnVpbGRfbXNnIFwicG9zaXRpb25cIikpKVxuICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgcG9zX2xpc3QpXG4gIHwgXCJjb250ZXh0dWFsIGhlbHBcIiwgY29udGV4dHVhbF9oZWxwIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIChKc29uVXRpbC50b19zdHJpbmcgY29udGV4dHVhbF9oZWxwKVxuICB8IFwib25fY2xpY2tcIiwganNvbiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb25cbiAgfCBfLCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aXZlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlc19vZl9qc29uIGRpcmVjdGl2ZXMgPVxuICBKc29uVXRpbC50b19hc3NvY1xuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxpc3Qgb2YgZGlyZWN0aXZlc1wiKVxuICAgIGRpcmVjdGl2ZV9vZl9qc29uIGRpcmVjdGl2ZXNcblxubGV0IGlkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpZFwiLCB4KSlcblxubGV0IG5vZGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImlkXCIgbCksXG4gICAgICAgICBkaXJlY3RpdmVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJkaXJlY3RpdmVzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5vZGVcIiwgeCkpXG5cbmxldCBlZGdlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJzb3VyY2VcIiBsKSxcbiAgICAgICAgIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJ0YXJnZXRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWRnZVwiLCB4KSlcblxubGV0IG5vZGVzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGUgbGlzdFwiKSBub2RlX29mX2pzb25cblxubGV0IGVkZ2VzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImVkZ2UgbGlzdFwiKSBlZGdlX29mX2pzb25cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICAoIG5vZGVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJub2Rlc1wiIGwpLFxuICAgICAgICAgZWRnZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImVkZ2VzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSlcbiIsInR5cGUgYnJlYWtfaGludCA9IFNwYWNlIHwgTm9fc3BhY2VcblxudHlwZSBzeW1ib2xfdGFibGUgPSB7XG4gIGFnZW50X29wZW46IHN0cmluZztcbiAgYWdlbnRfY2xvc2U6IHN0cmluZztcbiAgYWdlbnRfc2VwX2NvbW1hOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfZG90OiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfcGx1czogc3RyaW5nICogYnJlYWtfaGludDtcbiAgZ2hvc3RfYWdlbnQ6IHN0cmluZztcbiAgc2hvd19naG9zdDogYm9vbDtcbiAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sOiBzdHJpbmc7XG4gIG9wZW5faW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2w6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfYW55OiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG1pc3NpbmdfYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZDogc3RyaW5nO1xuICBmcmVlOiBzdHJpbmc7XG4gIGJvdW5kOiBzdHJpbmc7XG4gIGxpbmtfdG9fYW55OiBzdHJpbmc7XG4gIGxpbmtfdG9fc29tZTogc3RyaW5nO1xuICBhdDogc3RyaW5nO1xuICBzaXRlX3NlcDogc3RyaW5nICogYnJlYWtfaGludDtcbiAgYnR5cGVfc2VwOiBzdHJpbmc7XG4gIHVuaV9hcnJvdzogc3RyaW5nO1xuICByZXZfYXJyb3c6IHN0cmluZztcbiAgYmlfYXJyb3c6IHN0cmluZztcbiAgdW5pX2Fycm93X25vcG9seTogc3RyaW5nO1xuICByZXZfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJpX2Fycm93X25vcG9seTogc3RyaW5nO1xuICBicmVha2FibGU6IGJvb2w7XG4gIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHk6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yOiBzdHJpbmc7XG4gIHBsdXNfaW5maW5pdHk6IHN0cmluZztcbiAgbWludXNfaW5maW5pdHk6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNlcTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmN2YXI6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgb3Blbl9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmNlcTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2d0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcnZhbDogc3RyaW5nO1xuICBjb3VudGVyY2VxX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY2d0ZV9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmN2YXJfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVydmFsX3N5bWJvbDogc3RyaW5nO1xufVxuXG5sZXQgc3ltYm9sX3RhYmxlX1YzID1cbiAge1xuICAgIGJvdW5kID0gXCIhXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIj9cIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiIV9cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPSBcIn5cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZSA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbCA9IFwiL1wiO1xuICAgIGludGVybmFsX3N0YXRlX2FueSA9IFwiXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSBmYWxzZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBsaWdodGVuIHN5bWJvbF90YWJsZSA9XG4gIHsgc3ltYm9sX3RhYmxlIHdpdGggc2l0ZV9zZXAgPSBcIiBcIiwgc25kIHN5bWJvbF90YWJsZS5zaXRlX3NlcCB9XG5cbmxldCB0b19kb3RuZXQgc3ltYm9sX3RhYmxlID1cbiAge1xuICAgIHN5bWJvbF90YWJsZSB3aXRoXG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIiArXCIsIHNuZCBzeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLlwiLCBOb19zcGFjZTtcbiAgfVxuXG5sZXQgc3ltYm9sX3RhYmxlX1Y0ID1cbiAge1xuICAgIGJvdW5kID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIltcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJdXCI7XG4gICAgbWlzc2luZ19iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiI1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJ9XCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJ7I31cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiLlwiO1xuICAgIGF0ID0gXCIuXCI7XG4gICAgYWdlbnRfb3BlbiA9IFwiKFwiO1xuICAgIGFnZW50X2Nsb3NlID0gXCIpXCI7XG4gICAgYWdlbnRfc2VwX2NvbW1hID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9wbHVzID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9kb3QgPSBcIixcIiwgU3BhY2U7XG4gICAgYnR5cGVfc2VwID0gXCIuXCI7XG4gICAgc2l0ZV9zZXAgPSBcIixcIiwgTm9fc3BhY2U7XG4gICAgZ2hvc3RfYWdlbnQgPSBcIi5cIjtcbiAgICBzaG93X2dob3N0ID0gdHJ1ZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZSA9IHsgc3ltYm9sX3RhYmxlIHdpdGggYnJlYWthYmxlID0gZmFsc2UgfVxubGV0IHN5bWJvbF90YWJsZV9WM19saWdodCA9IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlX1YzXG5sZXQgc3ltYm9sX3RhYmxlX2RvdG5ldCA9IHRvX2RvdG5ldCBzeW1ib2xfdGFibGVfVjNcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjMgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1Y0XG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjNfbGlnaHRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfZG90bmV0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfZG90bmV0XG5cbmxldCB3aXRoX2RvdF9hbmRfcGx1cyBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX2RvdDtcbiAgfVxuIiwiKCoqXG4gICAgKiByZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWxcbiAgICAqXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMTIvMTAvMjAxMFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMjggMjAxOD5cbiAgICAqICpcbiAgICAqIFNpZ25hdHVyZSBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIG1lbW9yeVxuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgcnVsZV9rZXkgPSBpbnRcblxudHlwZSBlbmdpbmVfc3RhdGUgPSB7XG4gIGNvbW1hbmRfbGluZTogc3RyaW5nIG9wdGlvbjtcbiAgd2FrZV91cF9tYXA6IChydWxlX2tleSAtPiBydWxlX2tleSBsaXN0KSBvcHRpb247XG59XG5cbmxldCBlbXB0eV9lbmdpbmVfc3RhdGUgPSB7IGNvbW1hbmRfbGluZSA9IE5vbmU7IHdha2VfdXBfbWFwID0gTm9uZSB9XG5sZXQgd2FrZV91cF9tYXAgZXJyb3IgZW5naW5lX3N0YXRlID0gZXJyb3IsIGVuZ2luZV9zdGF0ZS53YWtlX3VwX21hcFxuIiwiKCoqXG4gICAgKiBleGNlcHRpb24ubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDA0IDIwMTg+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgZmlsZV9uYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmcgb3B0aW9uO1xuICBhbGFybTogZXhuO1xufVxuXG50eXBlIGNhdWdodF9leGNlcHRpb24gPSB7XG4gIHVuY2F1Z2h0X2V4Y2VwdGlvbjogdW5jYXVnaHRfZXhjZXB0aW9uO1xuICBjYWxsaW5nX3N0YWNrOiBzdHJpbmcgbGlzdDtcbn1cblxuZXhjZXB0aW9uIFVuY2F1Z2h0X2V4Y2VwdGlvbiBvZiB1bmNhdWdodF9leGNlcHRpb25cbmV4Y2VwdGlvbiBDYXVnaHRfZXhjZXB0aW9uIG9mIGNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBleG5fdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBgQXNzb2MgWyBcIkV4aXRcIiwgYE51bGwgXVxuICB8IE5vdF9mb3VuZCAtPiBgQXNzb2MgWyBcIk5vdF9mb3VuZFwiLCBgTnVsbCBdXG4gIHwgQXJnLkJhZCB4IC0+IGBBc3NvYyBbIFwiQXJnLkJhZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3lzLkJyZWFrIC0+IGBBc3NvYyBbIFwiU3lzLkJyZWFrXCIsIGBOdWxsIF1cbiAgfCBTdGFjay5FbXB0eSAtPiBgQXNzb2MgWyBcIlN0YWNrLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBRdWV1ZS5FbXB0eSAtPiBgQXNzb2MgWyBcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBgQXNzb2MgWyBcIlN0cmVhbS5FcnJvclwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gYEFzc29jIFsgXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCBdXG4gIHwgQXJnLkhlbHAgeCAtPiBgQXNzb2MgWyBcIkFyZy5IZWxwXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IGBBc3NvYyBbIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiLCBgTnVsbCBdXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gYEFzc29jIFsgXCJTY2FuX2ZhaWx1cmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IExhenkuVW5kZWZpbmVkIC0+IGBBc3NvYyBbIFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXhMYWJlbHMuVW5peF9lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2xhYmVsIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBVbml4LlVuaXhfZXJyb3IgKGEsIGIsIGMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJVbml4LlVuaXguZXJyb3JcIixcbiAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJmc3RcIiwgSnNvblV0aWwub2ZfdW5peF9lcnJvciBhO1xuICAgICAgICAgICAgICBcInNuZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYjtcbiAgICAgICAgICAgICAgXCJ0cmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGM7XG4gICAgICAgICAgICBdICk7XG4gICAgICBdXG4gIHwgRmFpbHVyZSB4IC0+IGBBc3NvYyBbIFwiRmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gYEFzc29jIFsgXCJTdGFja19vdmVyZmxvd1wiLCBgTnVsbCBdXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiQ2F1Z2h0XCIsIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiB4IF1cbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPiBgQXNzb2MgWyBcIlVuY2F1Z2h0XCIsIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IF8gLT4gYEFzc29jIFsgXCJVbmtub3duXCIsIGBOdWxsIF1cblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHVuY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIGV4bl90b19qc29uXG4gICAgKHVuY2F1Z2h0LmZpbGVfbmFtZSwgdW5jYXVnaHQubWVzc2FnZSwgdW5jYXVnaHQuYWxhcm0pXG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInVuY2F1Z2h0X2V4Y2VwdGlvblwiIH5sYWIyOlwiY2FsbGluZ19zdGFja1wiXG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKGNhdWdodC51bmNhdWdodF9leGNlcHRpb24sIGNhdWdodC5jYWxsaW5nX3N0YWNrKVxuXG5sZXQgcmVjIGV4bl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwiRXhpdFwiLCBgTnVsbCkgXSAtPiBFeGl0XG4gIHwgYEFzc29jIFsgKFwiTm90X2ZvdW5kXCIsIGBOdWxsKSBdIC0+IE5vdF9mb3VuZFxuICB8IGBBc3NvYyBbIChcIkFyZy5CYWRcIiwgeCkgXSAtPiBBcmcuQmFkIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTeXMuQnJlYWtcIiwgYE51bGwpIF0gLT4gU3lzLkJyZWFrXG4gIHwgYEFzc29jIFsgKFwiU3RhY2suRW1wdHlcIiwgYE51bGwpIF0gLT4gU3RhY2suRW1wdHlcbiAgfCBgQXNzb2MgWyAoXCJRdWV1ZS5FbXB0eVwiLCBgTnVsbCkgXSAtPiBRdWV1ZS5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlN0cmVhbS5FcnJvclwiLCB4KSBdIC0+IFN0cmVhbS5FcnJvciAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkZhaWx1cmVcIiwgYE51bGwpIF0gLT4gU3RyZWFtLkZhaWx1cmVcbiAgfCBgQXNzb2MgWyAoXCJBcmcuSGVscFwiLCB4KSBdIC0+IEFyZy5IZWxwIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsKSBdIC0+IFBhcnNpbmcuUGFyc2VfZXJyb3JcbiAgfCBgQXNzb2MgWyAoXCJTY2FuX2ZhaWx1cmVcIiwgeCkgXSAtPiBTY2FuZi5TY2FuX2ZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIkxhenkuVW5kZWZpbmVkXCIsIGBOdWxsKSBdIC0+IExhenkuVW5kZWZpbmVkXG4gIHwgYEFzc29jIFsgKFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peExhYmVscy5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwganNvbikpKVxuICB8IGBBc3NvYyBbIChcIlVuaXguVW5peF9lcnJvclwiLCBgQXNzb2MgbCkgXSB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIFVuaXguVW5peF9lcnJvclxuICAgICAgICAgKCBKc29uVXRpbC50b191bml4X2xhYmVsIChMaXN0LmFzc29jIFwiZnN0XCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInNuZFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJ0cmRcIiBsKSApXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiRmFpbHVyZVwiLCB4KSBdIC0+IEZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsKSBdIC0+IFN0YWNrX292ZXJmbG93XG4gIHwgYEFzc29jIFsgKFwiQ2F1Z2h0XCIsIHgpIF0gLT4gQ2F1Z2h0X2V4Y2VwdGlvbiAoY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIHgpXG4gIHwgYEFzc29jIFsgKFwiVW5jYXVnaHRcIiwgeCkgXSAtPlxuICAgIFVuY2F1Z2h0X2V4Y2VwdGlvbiAodW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmtub3duXCIsIGBOdWxsKSBdIC0+IEZhaWx1cmUgXCJVbmtub3duXCJcbiAgfCBfIC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImV4Y2VwdGlvblwiLCBqc29uKSlcblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiwgYyA9XG4gICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJmaWxlX25hbWVcIikpXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcIm1lc3NhZ2VcIikpXG4gICAgICBleG5fb2ZfanNvbiBqc29uXG4gIGluXG4gIHsgZmlsZV9uYW1lID0gYTsgbWVzc2FnZSA9IGI7IGFsYXJtID0gYyB9XG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwiY2FsbGluZyBzdGFja1wiXG4gICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGFjayBlbHRcIikpXG4gICAgICBqc29uXG4gIGluXG4gIHsgdW5jYXVnaHRfZXhjZXB0aW9uID0gYTsgY2FsbGluZ19zdGFjayA9IGIgfVxuXG5sZXQgYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuID1cbiAgeyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH1cblxubGV0IGJ1aWxkX2NhdWdodF9leGNlcHRpb24gZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIHN0YWNrID1cbiAge1xuICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IGJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4bjtcbiAgICBjYWxsaW5nX3N0YWNrID0gc3RhY2s7XG4gIH1cblxubGV0IHJhaXNlX2V4Y2VwdGlvbiBmaWxlX25hbWUgX2tleSBtZXNzYWdlIGV4biA9XG4gIHJhaXNlIChVbmNhdWdodF9leGNlcHRpb24geyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH0pXG5cbmxldCByZWMgcHBfZXhjZXB0aW9uIGYgPSBmdW5jdGlvblxuICB8IEV4aXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRXhpdFwiXG4gIHwgTm90X2ZvdW5kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIk5vdF9mb3VuZFwiXG4gIHwgQXJnLkJhZCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJBcmcuQmFkKCVzKVwiIHhcbiAgfCBTeXMuQnJlYWsgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3lzLkJyZWFrXCJcbiAgfCBTdGFjay5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFjay5FbXB0eVwiXG4gIHwgUXVldWUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUXVldWUuRW1wdHlcIlxuICB8IFN0cmVhbS5FcnJvciB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTdHJlYW0uRXJyb3IgJXNcIiB4XG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RyZWFtLkZhaWx1cmVcIlxuICB8IEFyZy5IZWxwIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5IZWxwKCVzKVwiIHhcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTY2FuZi5TY2FuLmZhaWx1cmUoJXMpXCIgeFxuICB8IExhenkuVW5kZWZpbmVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkxhenkuVW5kZWZpbmVkXCJcbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4TGFiZWxzLlVuaXhfZXJyb3IoJXMsJXMsJXMpXCJcbiAgICAgIChVbml4TGFiZWxzLmVycm9yX21lc3NhZ2UgZXIpXG4gICAgICB4IHlcbiAgfCBVbml4LlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4LlVuaXhfZXJyb3IoJXMsJXMsJXMpXCIgKFVuaXguZXJyb3JfbWVzc2FnZSBlcikgeCB5XG4gIHwgRmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGYWlsdXJlKCVzKVwiIHhcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFja19vdmVyZmxvd1wiXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5jYXVnaHRfZXhjZXB0aW9uKCVhKVwiIHBwX3VuY2F1Z2h0IHhcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfY2F1Z2h0IHhcbiAgfCBleGMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChQcmludGV4Yy50b19zdHJpbmcgZXhjKVxuXG5hbmQgcHBfdW5jYXVnaHQgZiB4ID1cbiAgbGV0IHdpdGhfc3BhY2UgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSVhZXhjZXB0aW9uOkAgJWFAXVwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZSAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiZmlsZV9uYW1lOiAlczsgXCIgeCkpXG4gICAgeC5maWxlX25hbWVcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJtZXNzYWdlOiAlczsgXCIgeCkpXG4gICAgeC5tZXNzYWdlIHBwX2V4Y2VwdGlvbiB4LmFsYXJtXG5cbmFuZCBwcF9jYXVnaHQgZiB4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+Y2FsbGluZ19zdGFjazogJWE7ICVhQF1cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgeC5jYWxsaW5nX3N0YWNrIHBwX3VuY2F1Z2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uXG5cbmxldCByZWMgc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geCBzdGFjayA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEV4aXQgLT4gXCJFeGl0XCIgOjogc3RhY2tcbiAgfCBOb3RfZm91bmQgLT4gXCJOb3RfZm91bmRcIiA6OiBzdGFja1xuICB8IEFyZy5CYWQgeCAtPiBcIkFyZy5CYWQoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFN5cy5CcmVhayAtPiBcIlN5cy5CcmVha1wiIDo6IHN0YWNrXG4gIHwgU3RhY2suRW1wdHkgLT4gXCJTdGFjay5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgUXVldWUuRW1wdHkgLT4gXCJRdWV1ZS5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gXCJTdHJlYW0uRXJyb3JcIiA6OiB4IDo6IHN0YWNrXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gXCJTdHJlYW0uRmFpbHVyZVwiIDo6IHN0YWNrXG4gIHwgQXJnLkhlbHAgeCAtPiBcIkFyZy5IZWxwKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IFwiUGFyc2luZy5QYXJzZV9lcnJvclwiIDo6IHN0YWNrXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gXCJTY2FuZi5TY2FuLmZhaWx1cmUoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IExhenkuVW5kZWZpbmVkIC0+IFwiTGF6eS5VbmRlZmluZWRcIiA6OiBzdGFja1xuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciBfIC0+IFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIgOjogc3RhY2tcbiAgfCBVbml4LlVuaXhfZXJyb3IgXyAtPiBcIlVuaXguVW5peC5lcnJvclwiIDo6IHN0YWNrXG4gIHwgRmFpbHVyZSB4IC0+IFwiRmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFja19vdmVyZmxvd1wiIDo6IHN0YWNrXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJDYXVnaHRfZXhjZXB0aW9uKFwiIDo6IHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJVbmNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4IChcIilcIiA6OiBzdGFjaylcbiAgfCBfIC0+IFwiVW5rbm93blwiIDo6IHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl91bmNhdWdodF9saWdodCB4IHN0YWNrID1cbiAgKG1hdGNoIHguZmlsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGZpbGVfbmFtZSAtPiBcImZpbGVfbmFtZTogXCIgXiBmaWxlX25hbWUgXiBcIjsgXCIpXG4gIDo6IChtYXRjaCB4Lm1lc3NhZ2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICB8IFNvbWUgbWVzc2FnZSAtPiBcIm1lc3NhZ2U6IFwiIF4gbWVzc2FnZSBeIFwiOyBcIilcbiAgOjogXCJleGNlcHRpb246XCJcbiAgOjogc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geC5hbGFybSBzdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl9jYXVnaHRfbGlnaHQgeCBzdGFjayA9XG4gIFwiY2FsbGluZ19zdGFjazogXCJcbiAgOjogKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc29sIHN0cmluZyAtPiBzdHJpbmcgOjogXCIsIFwiIDo6IHNvbClcbiAgICAgICAgKFwiOyBcIlxuICAgICAgICA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uIChcIjsgXCIgOjogc3RhY2spKSlcbiAgICAgICB4LmNhbGxpbmdfc3RhY2tcblxudHlwZSBtZXRob2RfaGFuZGxlciA9IHtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3Q6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdDogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG4gIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IHVuY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xufVxuXG5sZXQgdG9fanNvbiBtZXRob2RfaGFuZGxlciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF9jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgICAoIFwidW5jYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgKTtcbiAgICAgICggXCJ1bmNhdWdodF90b191aVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSApO1xuICAgIF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJjYXVnaHRcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IGNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwiY2F1Z2h0X3RvX3VpXCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodCA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJ1bmNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdW5jYXVnaHRfdG9fdWkgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwidW5jYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3QgPSBjYXVnaHQ7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IGNhdWdodF90b191aTtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodDtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSB1bmNhdWdodF90b191aTtcbiAgICAgICB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXJyb3IgaGFuZGxlclwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKVxuXG5sZXQgZW1wdHlfZXJyb3JfaGFuZGxlciA9XG4gIHtcbiAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAge1xuICAgIGVycm9yIHdpdGhcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpID1cbiAgICAgIHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodCA6OiBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0O1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3IgP3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCB0b191aSB3aXRoXG4gICAgfCBTb21lIGZhbHNlIHwgTm9uZSAtPiBlcnJvclxuICAgIHwgU29tZSB0cnVlIC0+IGFkZF91bmNhdWdodF9lcnJvcl90b191aSB1bmNhdWdodCBlcnJvclxuICBpblxuICBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fb3RoZXJzIHVuY2F1Z2h0IGVycm9yXG5cbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWlcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0XG5sZXQgZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aVxuXG5sZXQgaXNfZW1wdHlfZXJyb3JfaGFuZGxlciB4ID1cbiAgeC5taF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdICYmIHgubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdXG4iLCIoKipcbiAgKiBjb25maWcubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnNcbiAgKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgZGF0ZSA9IFwiPDIwMTUuMDEuMjNcIlxubGV0IHZlcnNpb24gPSBcIjQuMDFcIlxubGV0IG91dHB1dF9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9jbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9pbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IHVuc2FmZSA9IHJlZiB0cnVlXG5sZXQgdHJhY2UgPSByZWYgZmFsc2VcbmxldCBzeW50YXhfdmVyc2lvbiA9IHJlZiBcIlY0XCJcbmxldCBkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBzdGRvdXRcbmxldCBmb3JtYXR0ZXIgPSByZWYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbmxldCBmaWxlID0gcmVmIChOb25lIDogc3RyaW5nIG9wdGlvbilcbmxldCBsaW5rX21vZGUgPSByZWYgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQm91bmRfaW5kaWNlc1xuXG4oKiogaW5mbHVlbmNlIG1hcCAqKVxubGV0IGRvX2luZmx1ZW5jZV9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgcnVsZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5cbmxldCBydWxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAoKlwiIzg3Y2VlYlwiICgqIGxpZ2h0IHNreSBibHVlICopKilcblxubGV0IHZhcmlhYmxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcblxubGV0IHZhcmlhYmxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAoKiBcIiM5OGZiOThcIiAoKlBhbGUgZ3JlZW4qKSopXG5cbmxldCBjZW50ZXJfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG5sZXQgd2FrZV91cF9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAoKlwiIzAwZmYwMFwiICgqR3JlZW4gKikqKVxubGV0IGluaGliaXRpb25fY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkICgqXCIjZmYwMDAwXCIgKCpyZWQqKSopXG5sZXQgd2FrZV91cF9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbmxldCBpbmhpYml0aW9uX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxubGV0IGluZmx1ZW5jZV9tYXBfZmlsZSA9IHJlZiBcImluZmx1ZW5jZVwiXG5sZXQgaW5mbHVlbmNlX21hcF9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IHByb21wdF9mdWxsX3Zhcl9kZWYgPSByZWYgZmFsc2VcbmxldCBwcm9tcHRfZnVsbF9ydWxlX2RlZiA9IHJlZiBmYWxzZVxuXG5sZXQgbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHJlZiBbICdcXFwiJywgWyAnXFxcXCc7ICdcXFwiJyBdOyAnXFxcXCcsIFsgJ1xcXFwnOyAnXFxcXCcgXSBdXG5cbigqKiBjb250YWN0IG1hcCopXG5sZXQgZG9fY29udGFjdF9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgZG9fc2NjID0gcmVmIGZhbHNlXG5sZXQgcHVyZV9jb250YWN0ID0gcmVmIGZhbHNlXG5sZXQgY29udGFjdF9tYXBfZmlsZSA9IHJlZiBcImNvbnRhY3RcIlxubGV0IGNvbnRhY3RfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgYmluZGluZ19zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxubGV0IGJpbmRpbmdfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3dcbmxldCBpbnRlcm5hbF9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbmxldCBpbnRlcm5hbF9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG5sZXQgY291bnRlcl9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG5sZXQgY291bnRlcl9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbmxldCBhZ2VudF9zaGFwZV9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9jb2xvcl9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9zaGFwZV9kZWYgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxubGV0IGFnZW50X2NvbG9yX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG5sZXQgbGlua19jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xubGV0IGluZmx1ZW5jZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCBpbmZsdWVuY2VfYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG5cbigqKmZsb3cgb2YgaW5mb3JtYXRpb246IGludGVybmFsOyBleHRlcm5hbCBmbG93KilcbmxldCBkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9IHJlZiBmYWxzZVxuXG5sZXQgZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbigqY292ZXJpbmcgY2xhc3NlczogdGhpcyBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0dGVyIGlmIGl0IGlzIHRydWUvZmFsc2UqKVxubGV0IGRvX3NpdGVfZGVwZW5kZW5jaWVzID0gcmVmIGZhbHNlXG5cbigqc2V0IHRvIHRydWUgaWYgb25lIHdhbnRzIHRvIHByaW50IGNvdmVyaW5nIGNsYXNzZXMqKVxubGV0IGR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpSRU1BUks6IG9uZSBuZWVkcyB0byBzZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIHRvIHRydWUgZmlyc3QgdG8gYmVcbiAgYWJsZSB0byBhY3RpdmUgZGlmZmVyZW50IG91dHB1dCAqKVxubGV0IGRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgdmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPSByZWYgXCJMb3dcIlxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHJlZiB0cnVlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSByZWYgZmFsc2VcbmxldCBoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9IHJlZiB0cnVlXG5sZXQgaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9IHJlZiB0cnVlXG5sZXQgc21hc2hfcmVsYXRpb25zID0gcmVmIHRydWVcbmxldCB1c2VfbmF0dXJhbF9sYW5ndWFnZSA9IHJlZiBcImthcHBhXCJcbmxldCBjb21wdXRlX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IHNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSByZWYgdHJ1ZVxubGV0IHVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzID0gcmVmIGZhbHNlXG5sZXQgbG9jYWxfdHJhY2VfcHJlZml4ID0gcmVmIFwiQWdlbnRfdHJhY2VfXCJcbmxldCBsb2NhbF90cmFjZV9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IGNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxuXG4oKiogYWNjdXJhY3kgKilcblxubGV0IHdpdGhfdmlld3NfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfZHluYW1pY19jb250YWN0X21hcCA9IHJlZiBcImR5bmFtaWNcIlxubGV0IHdpdGhfY291bnRlcnNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IGNvdW50ZXJfYW5hbHlzaXNfZG9tYWluID0gcmVmIFwibWlcIlxubGV0IHZpZXdfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiRGlyZWN0XCJcbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkxvd1wiXG5sZXQgc2NjX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiSGlnaFwiXG5cbigqIFN5bW1ldHJpZXMgKilcbmxldCBkb19zeW1tZXRyaWVzID0gcmVmIGZhbHNlXG5sZXQgcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiYmlvY2hlbWlzdFwiXG5cbigqIEJhY2tkb29ycyAtIHN0YXRzIGZvciBiZW5jaG1hcmtpbmcgKilcbmxldCBwcmludF9lZmZpY2llbmN5ID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ydWxlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX3RpbWluZyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2ZpbGUgPSByZWYgXCJiZW5jaG1hcmsudGV4XCJcbmxldCBiYWNrZG9vcl9kaXJlY3RvcnkgPSByZWYgXCJcIlxuIiwiKCoqXG4gICogcGFyYW1ldGVycy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE5dGggb2YgRGVjZW1iZXJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEphbiAwOCAyMDIwPlxuICAqICpcbiAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZCB0aHJvdWdoIGZ1bmN0aW9ucyBjb21wdXRhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcblxubGV0IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0ID1cbiAgbGV0IHNpemVfYSA9IFN0cmluZy5sZW5ndGggYSBpblxuICBsZXQgc2l6ZV9leHQgPSBTdHJpbmcubGVuZ3RoIGV4dCBpblxuICB0cnlcbiAgICBpZiBzaXplX2EgPCBzaXplX2V4dCB8fCBTdHJpbmcuc3ViIGEgKHNpemVfYSAtIHNpemVfZXh0KSBzaXplX2V4dCA9IGV4dCB0aGVuXG4gICAgICBhXG4gICAgZWxzZVxuICAgICAgYSBeIGV4dFxuICB3aXRoIF8gLT4gYSBeIGV4dFxuXG5sZXQgb3Blbl9vdXQgYSBleHQgPVxuICAoKiBpdCB3b3VsZCBiZSBlYXNpZXIgd2l0aCBPQ2FtbCAzLjA0ICopXG4gIGxldCBhID0gYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgaW5cbiAgbGV0IGQgPSBGaWxlbmFtZS5kaXJuYW1lIGEgaW5cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBkKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgZDtcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBLYXBwYV9maWxlcy5ta19kaXJfciBkXG4gIGluXG4gIG9wZW5fb3V0IGFcblxubGV0IG9wZW5fYXBwZW5kIGEgZXh0ID1cbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBbIE9wZW5fYXBwZW5kIF0gNTExIGEgd2l0aCBfIC0+IG9wZW5fb3V0IGEgZXh0XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxuXG5sZXQgZXh0X2Zvcm1hdCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UIC0+IFwiLmRvdFwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBcIi5odG1sXCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gXCIuZGltLmpzb25cIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IFwiLmdleGZcIlxuXG5sZXQgZmV0Y2hfbGV2ZWxfZ2VuIHMgciA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhciB3aXRoXG4gIHwgXCJtdXRlXCIgfCBcIm5vbmVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lXG4gIHwgXCJsb3dcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBcImNvbXBsZXRlXCIgfCBcImZ1bGxcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXM6ICVzIGlzIG5vdCBhIHZhbGlkIGxldmVsICEhIVwiIHMgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGZldGNoX2dyYXBoX2Zvcm1hdCBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImRvdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVFxuICB8IFwiaHRtbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUxcbiAgfCBcImRpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTVxuICB8IFwiZ2VwaGlcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISVxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIGdyYXBoIGZvcm1hdCAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgciA9IGZldGNoX2xldmVsX2dlbiBcImFuIGFjY3VyYWN5XCIgclxubGV0IGZldGNoX3ZlcmJvc2l0eV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYSB2ZXJib3NpdHlcIiByXG5cbmxldCBmZXRjaF9yYXRlX2NvbnZlbnRpb24gZiA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhZiB3aXRoXG4gIHwgXCJrYXNpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vX2NvcnJlY3Rpb25cbiAgfCBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5EaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1xuICB8IFwiYmlvY2hlbWlzdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkJpb2NoZW1pc3RcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlcyBpcyBub3QgYSB2YWxpZCByYXRlIGNvbnZlbnRpb24gISEhXCIgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGdldF9zeW50YXhfdmVyc2lvbiAoKSA9XG4gIG1hdGNoICFDb25maWcuc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICB8IF8gLT4gZmFpbHdpdGggXCJTeW50YXggdmVyc2lvbiBzaG91bGQgYmUgZWl0aGVyIFYzIG9yIFY0XCJcblxubGV0IGdldF9zeW1ib2xzICgpID1cbiAgbWF0Y2ggZ2V0X3N5bnRheF92ZXJzaW9uICgpIHdpdGhcbiAgfCBBc3QuVjMgLT4gU3ltYm9sX3RhYmxlLnN5bWJvbF90YWJsZV9WM1xuICB8IEFzdC5WNCAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1Y0XG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5pbmZsdWVuY2VfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSB3aXRoXG4gICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+IFNvbWUgeCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9pbV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFNvbWUgXCJcIlxuICAgICAgfCB4IC0+IFNvbWUgKHggXiBcIi9cIikpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfc2hhcGUgPSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvciA9ICFDb25maWcucnVsZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZSA9ICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3IgPSAhQ29uZmlnLnZhcmlhYmxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3IgPSAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9jb2xvciA9ICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93ID0gIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3cgPSAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfdmFyX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfdmFyX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfcnVsZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAoYSwgbCkgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5hZGQgYSBsIG1hcClcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5lbXB0eVxuICAgICAgICAhQ29uZmlnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3Q7XG4gIH1cblxubGV0IGdldF9jb250YWN0X21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQ7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZmlsZSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5jb250YWN0X21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2NtX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0ID0gIUNvbmZpZy5wdXJlX2NvbnRhY3Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZSA9ICFDb25maWcuaW50ZXJuYWxfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX2NvbG9yID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZSA9ICFDb25maWcuY291bnRlcl9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvciA9ICFDb25maWcuY291bnRlcl9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9hcnJheSA9ICFDb25maWcuYWdlbnRfY29sb3JfYXJyYXk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvciA9ICFDb25maWcubGlua19jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3IgPSAhQ29uZmlnLmluZmx1ZW5jZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3cgPSAhQ29uZmlnLmluZmx1ZW5jZV9hcnJvdztcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8wID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3NhbmdlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgIHRydWU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPSBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gXCJBZ2VudF90cmFjZV9cIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMSA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzAgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMiA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzEgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMyA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzQgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8zIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHRydWU7XG4gIH1cblxubGV0IGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwIHJlYWNoYWJpbGl0eSA9XG4gIGxldCB0cmFjZSA9ICFDb25maWcudHJhY2UgaW5cbiAgbGV0IHJlYWNoYWJpbGl0eSA9XG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgICAgIUNvbmZpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICAgICAgICAhQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb247XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnMgPSAhQ29uZmlnLnNtYXNoX3JlbGF0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlID1cbiAgICAgICAgKG1hdGNoICFDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICAgICAgICB8IFwicmF3XCIgfCBcIlJBV1wiIHwgXCJSYXdcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXdcbiAgICAgICAgfCBcImthcHBhXCIgfCBcIktBUFBBXCIgfCBcIkthcHBhXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGFcbiAgICAgICAgfCBcIkVuZ2xpc2hcIiB8IFwiRU5HTElTSFwiIHwgXCJlbmdsaXNoXCIgLT5cbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5OYXR1cmFsX2xhbmd1YWdlXG4gICAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSk7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAhQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID1cbiAgICAgICAgIUNvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9XG4gICAgICAgICFDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0O1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gIUNvbmZpZy5sb2NhbF90cmFjZV9wcmVmaXg7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gICAgfVxuICBpblxuICBpZiB0cmFjZSB0aGVuXG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWM7XG4gICAgfVxuICBlbHNlXG4gICAgcmVhY2hhYmlsaXR5XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKSA9XG4gIGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwXG4gICAgKG1hdGNoXG4gICAgICAgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuICAgICB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IHJlYWNoYWJpbGl0eV9tYXBfMFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+IHJlYWNoYWJpbGl0eV9tYXBfMVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtIC0+IHJlYWNoYWJpbGl0eV9tYXBfMlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCAtPiByZWFjaGFiaWxpdHlfbWFwXzNcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgLT4gcmVhY2hhYmlsaXR5X21hcF80KVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzID0gIUNvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kcyA9XG4gICAgICAhQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcnMgPSAhQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcCA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcud2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIHdpdGhcbiAgICAgIHwgXCJkeW5hbWljXCIgLT4gdHJ1ZVxuICAgICAgfCBcInN0YXRpY1wiIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9kb21haW4gPVxuICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIHdpdGhcbiAgICAgIHwgXCJtaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1pXG4gICAgICB8IFwib2N0YWdvblwiIHwgXCJvY3RcIiB8IFwib2N0b1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk9jdGFnb25zXG4gICAgICB8IFwiYWJzdHJhY3QtbXVsdGlzZXRcIiB8IFwiYW1cIiB8IFwiYWJzdHJhY3RfbXVsdGlzZXRcIiAtPlxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5BYnN0cmFjdF9tdWx0aXNldFxuICAgICAgfCBcIm5vbi1yZWxhdGlvbmFsXCIgfCBcIm5yXCIgfCBcIm5vbi1yZWxcIiB8IFwibm9uX3JlbFwiIHwgXCJub25fcmVsYXRpb25hbFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbl9yZWxhdGlvbmFsXG4gICAgICB8IF8gLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWkpO1xuICB9XG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyA9XG4gIGxldCBjYWNoZSA9IHJlZiBOb25lIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFjYWNoZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgY2hhbm5lbCA9IEthcHBhX2ZpbGVzLm9wZW5fdGFza3NfcHJvZmlsaW5nICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIGNoYW5uZWwgaW5cbiAgICAgIGNoYW5uZWxcbiAgICB8IFNvbWUgY2hhbm5lbCAtPiBjaGFubmVsXG5cbmxldCBmZXRjaF9iYWNrZG9vcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjYyA9ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWdcbiAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZyA9ICFDb25maWcuYmFja2Rvb3JfdGltaW5nO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2ZpbGUgPSAhQ29uZmlnLmJhY2tkb29yX2ZpbGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZGlyZWN0b3J5ID0gIUNvbmZpZy5iYWNrZG9vcl9kaXJlY3Rvcnk7XG4gIH1cblxubGV0IGdldF9wYXJhbWV0ZXJzID8oaHRtbF9tb2RlID0gdHJ1ZSkgfmNhbGxlZF9mcm9tICgpID1cbiAgbGV0IGNoYW5uZWwsIGNoYW5uZWxfZXJyLCBjaGFubmVsX2JhY2tkb29yLCBodG1sX21vZGUsIGNvbW1hbmQgPVxuICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciAtPlxuICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBbfCBcIkthU2FcIjsgXCIoSW50ZXJyYWN0aXZlIG1vZGUpXCIgfF1cbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkludGVybmFsaXNlZCAtPlxuICAgICAgKCBTb21lIHN0ZG91dCxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgU29tZSBzdGRvdXQsXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW0gLT5cbiAgICAgIFNvbWUgKG9wZW5fdGFza3NfcHJvZmlsaW5nICgpKSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBTeXMuYXJndlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAtPlxuICAgICAgKCAobWF0Y2hcbiAgICAgICAgICAgIUNvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LCBcInByb2ZpbGluZ1wiLCBcIi5odG1sXCJcbiAgICAgICAgICAgKCp0ZW1wb3JhcnksIHRvIGRvOiBwcm92aWRlIGEgcGFyYW1ldGVyaXNhYmxlIGZpbGVuYW1lKilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IGEgZXh0KVxuICAgICAgICB8IGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX291dCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIFNvbWUgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICAoICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZ1xuICAgICAgICAgICAgICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfdGltaW5nXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeSxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgICAgICAgXCIudGV4XCIgKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IGZhbHNlLCBfLCBfLCBfIC0+IE5vbmVcbiAgICAgICAgfCBfLCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXywgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIGEgZXh0KVxuICAgICAgICB8IF8sIGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX2FwcGVuZCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICBpblxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb24gPSBnZXRfc3ludGF4X3ZlcnNpb24gKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwID0gIUNvbmZpZy5kb19jb250YWN0X21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2NjID0gIUNvbmZpZy5kb19zY2M7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2luZmx1ZW5jZV9tYXAgPSAhQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXA7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAhQ29uZmlnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zaXRlX2RlcGVuZGVuY2llcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpcyA9ICFDb25maWcuZG9fc3ltbWV0cmllcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmF0ZV9jb252ZW50aW9uID1cbiAgICAgICAgICBmZXRjaF9yYXRlX2NvbnZlbnRpb24gQ29uZmlnLnJhdGVfY29udmVudGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICAoKmRpZmZlcmVudCByZWFjaGFiaWxpdHkgb3V0cHV0KilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcztcbiAgICAgICAgKCpHRVQgU1lNQk9MUyopXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZpbGUgPSAhQ29uZmlnLmZpbGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bWJvbHMgPSBnZXRfc3ltYm9scyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9vdXRwdXQgPSBnZXRfaW5mbHVlbmNlX21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0ID0gZ2V0X2NvbnRhY3RfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICAgICAgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZSA9ICFDb25maWcudW5zYWZlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZSA9ICFDb25maWcudHJhY2U7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggPSBcIlwiO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrID0gW107XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZSA9ICFDb25maWcubGlua19tb2RlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlID1cbiAgICAgICAgICBSZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUuZW1wdHlfZW5naW5lX3N0YXRlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sYXVuY2hpbmdfZGF0ZSA9XG4gICAgICAgICAgVW5peC5sb2NhbHRpbWUgKFVuaXguZ2V0dGltZW9mZGF5ICgpKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCA9XG4gICAgICAgICAgKGxldCB4ID0gVW5peC5nZXR0aW1lb2ZkYXkgKCkgaW5cbiAgICAgICAgICAgKFVuaXgubG9jYWx0aW1lIHgpLlVuaXgudG1faG91ciAtIChVbml4LmdtdGltZSB4KS5Vbml4LnRtX2hvdXIpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZSA9XG4gICAgICAgICAgKHRyeSBVbml4LmdldGhvc3RuYW1lICgpIHdpdGggXyAtPiBcImphdmFzY3JpcHRcIik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZSA9IGNvbW1hbmQ7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3J0X3ZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fc3RyaW5nO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgPSAhVmVyc2lvbi50a19pc19pbml0aWFsaXplZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgd2l0aFxuICAgICAgICAgIHwgXCJpbmRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICAgICAgICAgIHwgXCJkaXJlY3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgICAgICAgICB8IFwicmVhbGlzYWJsZVwiIHwgXCJyZWFsaXphYmxlXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICAgICAgICAgIHwgXyAtPiBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnZpZXdfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5odG1sX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZSA9IDE7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29ycyA9IGZldGNoX2JhY2tkb29ycyAoKTtcbiAgICAgIH07XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0ID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgXyAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyICFDb25maWcuZm9ybWF0dGVyKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyID1cbiAgICAgIChtYXRjaCBjaGFubmVsX2VyciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgZm10IC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgZm10KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3IgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfYmFja2Rvb3Igd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGNoYW5uZWwgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSAhQ29uZmlnLnByaW50X2VmZmljaWVuY3k7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvZmlsZXIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGEgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgYSk7XG4gIH1cblxubGV0IGR1bW15X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwID0gZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIHAgaW5cbiAgICAgIHBcbiAgICB8IFNvbWUgcCAtPiBwXG5cbmxldCBnZXRfYm91bmRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5ib3VuZFxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fYmluZGluZ19zdGF0ZVxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9iaW5kaW5nX3N0YXRlXG5cbmxldCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5taXNzaW5nX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9saW5rX3RvX2FueV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubGlua190b19hbnlcbmxldCBnZXRfbGlua190b19zb21lXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX3NvbWVcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmludGVybmFsX3N0YXRlX3N5bWJvbFxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludGVybmFsX3N0YXRlXG5sZXQgZ2V0X2ZyZWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmZyZWVcbmxldCBnZXRfYXRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hdFxubGV0IGdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfb3BlblxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X2Nsb3NlXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIHN5bWJvbCA9XG4gIGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9jb21tYVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9wbHVzXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2RvdFxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5idHlwZV9zZXBcbmxldCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuc2l0ZV9zZXBcbmxldCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5naG9zdF9hZ2VudFxubGV0IGdldF9kb193ZV9zaG93X2dob3N0XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5zaG93X2dob3N0XG5sZXQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnVuaV9hcnJvd1xubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5yZXZfYXJyb3dcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93X25vcG9seVxubGV0IGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd19ub3BvbHlcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eVxuXG5sZXQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5wbHVzX2luZmluaXR5XG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubWludXNfaW5maW5pdHlcblxubGV0IGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50X2ludGVydmFsX3NlcGFyYXRvclxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X29wZW5fY291bnRlcmNlcV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2VxXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmN2YXJcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2d0ZVxubGV0IGdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyZGVsdGFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJ2YWxcbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcl9zdGF0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2VxXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY3ZhclxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmNndGVcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyZGVsdGFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcnZhbFxubGV0IGdldF9jb3VudGVyY2VxX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmNlcV9zeW1ib2xcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY3Zhcl9zeW1ib2xcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2d0ZV9zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhcGx1c19zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVydmFsX3N5bWJvbFxuXG4oKkluZmx1ZW5jZSopXG5sZXQgZ2V0X2ltX2Zvcm1hdF8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXRcbmxldCBnZXRfaW1fZmlsZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlXG5cbmxldCBnZXRfaW1fZGlyZWN0b3J5XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X3J1bGVfc2hhcGVfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZVxubGV0IGdldF9ydWxlX2NvbG9yXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfY29sb3JcblxubGV0IGdldF92YXJpYWJsZV9zaGFwZV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2NvbG9yXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93XG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2Fycm93XG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfcnVsZV9kZWZcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVcblxubGV0IGdldF9wdXJlX2NvbnRhY3RfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnB1cmVfY29udGFjdFxubGV0IGdldF9jbV9mb3JtYXRfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdFxubGV0IGdldF9jbV9maWxlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZGlyZWN0b3J5XG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSBjbSA9XG4gIGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3JcblxubGV0IGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZVxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvclxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXlcbmxldCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5XG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmXG5sZXQgZ2V0X2xpbmtfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2Fycm93XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3dcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25cblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bFxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9uc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9uc1xuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXG5cbmxldCBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIHIgPVxuICBtYXRjaCByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXcgLT4gZmFsc2VcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2UgLT5cbiAgICB0cnVlXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2VcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXNcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByIGIgPVxuICB7IHIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSBiIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGIgfVxuXG5sZXQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNcblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeFxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnlcbmxldCBnZXRfdmlld19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaXRlX2Fjcm9zc19ib25kc1xuXG5sZXQgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYWxsZWxfYm9uZHNcbmxldCBnZXRfZHluYW1pY19jb250YWN0X21hcF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR5bmFtaWNfY29udGFjdF9tYXBcbmxldCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyc1xubGV0IGdldF9jb3VudGVyc19kb21haW5fMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpblxuXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N5bW1ldHJpZXNfYW5hbHlzaXNcblxubGV0IGdldF9yYXRlX2NvbnZlbnRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb25cblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5lbXB0eV9oYXNodGJsX3NpemVcblxubGV0IGdldF9zeW1ib2xzXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9sc1xubGV0IGdldF9maWxlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dFxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0XG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dFxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNcblxubGV0IGdldF91bnNhZmVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51bnNhZmVcbmxldCBnZXRfdHJhY2VfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJcblxubGV0IGdldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXhcblxubGV0IGdldF9jYWxsX3N0YWNrXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFja1xuXG5sZXQgZ2V0X2xpbmtfbW9kZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZVxuXG5sZXQgZ2V0X2thc2Ffc3RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19jb250YWN0X21hcFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb25cblxubGV0IGdldF9kb19zY2NfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2NcblxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcFxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXNcblxuKCpyZWFjaGFiaWxpdHkgZGlmZmVyZW50IG91dHB1dCopXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuXG4oKiopXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfbGF1bmNoaW5nX2RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbGV0IHQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlIGluXG4gIGxldCBnbXQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRpbWVfc2hpZnQgaW5cbiAgUHJpbnRmLnNwcmludGYgXCJBbmFseXNpcyBsYXVuY2hlZCBhdCAlMDRpLyUwMmkvJTAyaSAlMDJpOiUwMmk6JTAyaSAoR01UJStpKVwiXG4gICAgKHQuVW5peC50bV95ZWFyICsgMTkwMCkgKHQuVW5peC50bV9tb24gKyAxKSB0LlVuaXgudG1fbWRheSB0LlVuaXgudG1faG91clxuICAgIHQuVW5peC50bV9taW4gdC5Vbml4LnRtX3NlYyBnbXRcblxubGV0IGdldF9zaG9ydF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvblxuXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBQcmludGYuc3ByaW50ZiBcIiVzICh3aXRoJXMgVGsgaW50ZXJmYWNlKVwiXG4gICAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG4gICAgKGlmIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGtfaW50ZXJmYWNlIHRoZW5cbiAgICAgICBcIlwiXG4gICAgIGVsc2VcbiAgICAgICBcIm91dFwiKVxuXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaG9zdG5hbWVcblxubGV0IGdldF9jb21tYW5kX2xpbmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21tYW5kX2xpbmVcblxubGV0IGdldF9tYXJzaGFsaXNhYmxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcblxubGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlclxubGV0IGdldF9sb2dnZXJfZXJyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyXG5cbmxldCBnZXRfbG9nZ2VyX2JhY2tkb29yIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3JcblxuKCpsZXQgZ2V0X2Zvcm1hdHRlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyXG4gIGxldCBzZXRfZm9ybWF0dGVyIHBhcmFtZXRlciBsb2dnZXIgPSB7cGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyID0gbG9nZ2VyfSopXG5cbmxldCB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2NvbW1hbmRfbGluZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21tYW5kX2xpbmVfMVxubGV0IGdldF9zaG9ydF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3Nob3J0X3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hlZF93aGVyZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hlZF93aGVyZV8xXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9mdWxsX3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hpbmdfZGF0ZV8xXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgb24gJXNcIlxuICAgIChnZXRfbGF1bmNoaW5nX2RhdGUgcGFyYW1ldGVycylcbiAgICAoZ2V0X2xhdW5jaGVkX3doZXJlIHBhcmFtZXRlcnMpXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fY29udGFjdF9tYXBfMVxubGV0IGdldF9zeW50YXhfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW50YXhfdmVyc2lvbl8xXG5sZXQgZ2V0X2RvX3NjYyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zY2NfMVxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMVxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzFcbigqcmVhY2hhYmlsaXR5IGFuYWx5c2lzIGluIGRpZmZlcmVudCBvdXRwdXQqKVxuXG4oKiopXG5sZXQgZ2V0X3N5bWJvbHMgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc3ltYm9sc18xXG5sZXQgZ2V0X2ZpbGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZmlsZV8xXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21wdXRlX3N5bW1ldHJpZXNfMVxubGV0IGdldF9yYXRlX2NvbnZlbnRpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmF0ZV9jb252ZW50aW9uXzFcbmxldCBnZXRfaW5mbHVlbmNlX21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwXzFcbmxldCBnZXRfY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfMVxuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzFcblxubGV0IGdldF91bnNhZmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdW5zYWZlXzFcbmxldCBnZXRfdHJhY2UgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdHJhY2VfMVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzFcblxubGV0IGdldF9wcmVmaXggPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcHJlZml4XzFcbmxldCBnZXRfY2FsbF9zdGFjayA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jYWxsX3N0YWNrXzFcbmxldCBnZXRfbGlua19tb2RlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xpbmtfbW9kZV8xXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF92aWV3X2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZW1wdHlfaGFzaHRibF9zaXplXzFcbmxldCB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9pbmZsdWVuY2VfbWFwXG5sZXQgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2NvbnRhY3RfbWFwXG5sZXQgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfc3ltYm9sc1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9tYXBcblxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBmID1cbiAgY29tcG9zZSBmIGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG4oKnN5bWJvbHMqKVxubGV0IGdldF9ib3VuZF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYm91bmRfc3ltYm9sXzFcbmxldCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzFcblxubGV0IGdldF9saW5rX3RvX2FueSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX2FueV8xXG5sZXQgZ2V0X2xpbmtfdG9fc29tZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX3NvbWVfMVxubGV0IGdldF9mcmVlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9mcmVlXzFcbmxldCBnZXRfYXRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2F0X3N5bWJvbF8xXG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xXG5cbmxldCBnZXRfYnR5cGVfc2VwX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9idHlwZV9zZXBfc3ltYm9sXzFcblxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzFcbmxldCBnZXRfZG9fd2Vfc2hvd19naG9zdCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9kb193ZV9zaG93X2dob3N0XzFcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfcmV2X2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JpX2Fycm93X3N5bWJvbF8xXG5cbmxldCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2NvdW50ZXJfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmNlcV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmNndGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcnZhbF8xXG5cbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcnZhbF8xXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xXG5sZXQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVydmFsX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVydmFsX3N5bWJvbF8xXG5sZXQgZ2V0X2ltX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9mb3JtYXRfMVxubGV0IGdldF9pbV9maWxlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2ZpbGVfMVxubGV0IGdldF9pbV9kaXJlY3RvcnkgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZGlyZWN0b3J5XzFcbmxldCBnZXRfcnVsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX3NoYXBlXzFcbmxldCBnZXRfcnVsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX2NvbG9yXzFcbmxldCBnZXRfdmFyaWFibGVfc2hhcGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfdmFyaWFibGVfc2hhcGVfMVxubGV0IGdldF92YXJpYWJsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9jb2xvcl8xXG5sZXQgZ2V0X3dha2VfdXBfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9jb2xvcl8xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2NvbG9yXzFcblxubGV0IGdldF93YWtlX3VwX2Fycm93ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3dha2VfdXBfYXJyb3dfMVxuXG5sZXQgZ2V0X2luaGliaXRpb25fYXJyb3cgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xXG5cbmxldCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzFcblxubGV0IGdldF9wdXJlX2NvbnRhY3QgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X3B1cmVfY29udGFjdF8xXG5sZXQgZ2V0X2NtX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZm9ybWF0XzFcbmxldCBnZXRfY21fZmlsZSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZmlsZV8xXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZGlyZWN0b3J5XzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9iaW5kaW5nX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX3NoYXBlXzFcblxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfYXJyYXkgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzFcblxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZiA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfZGVmXzFcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9kZWZfMVxubGV0IGdldF9saW5rX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9saW5rX2NvbG9yXzFcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbmZsdWVuY2VfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3cgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9hcnJvd18xXG5cbigqYWRkIHJlYWNoYWJsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMVxuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9wb3N0X3Byb2Nlc3NpbmdfMVxuXG5sZXQgZ2V0X2JhY2tlbmRfbW9kZSA9IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9iYWNrZW5kX21vZGVfMVxuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZFxuICAgIGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXzFcblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXzFcblxubGV0IGdldF9zbWFzaF9yZWxhdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc21hc2hfcmVsYXRpb25zXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzFcblxubGV0IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzIGI7XG4gIH1cblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xXG5cbmxldCBnZXRfdmlld19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfdmlld19hbmFseXNpc18xXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkXG4gICAgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzXzFcblxubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzFcblxubGV0IGdldF9jb3VudGVyc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfZG9tYWluXzFcblxubGV0IGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgcCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSBwXG4gIHx8IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyBwXG5cbmxldCBzZXRfcHJlZml4XzEgbWFyc2hhbGlzYWJsZSBwcmVmaXggPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggfVxuXG5sZXQgc2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlIGNhbGxfc3RhY2sgPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrIH1cblxubGV0IHNldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgYm9vbCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gYm9vbCB9XG5cbmxldCB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgZiBwYXJhbWV0ZXJzIHByZWZpeCA9XG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgZiAoZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVycykgcHJlZml4O1xuICB9XG5cbmxldCBzZXRfcHJlZml4ID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9wcmVmaXhfMVxubGV0IHNldF9jYWxsX3N0YWNrID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9jYWxsX3N0YWNrXzFcbmxldCBzZXRfdHJhY2UgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3RyYWNlXzFcblxubGV0IHVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBzdWZmaXggPVxuICBzZXRfcHJlZml4IHBhcmFtZXRlcnMgKGdldF9wcmVmaXggcGFyYW1ldGVycyBeIHN1ZmZpeClcblxubGV0IHVwZGF0ZV9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgYm9vbCBuYW1lID1cbiAgbGV0IHJlcF9ib29sID0gZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgYm9vbCBpblxuICBtYXRjaCBuYW1lLCBnZXRfdHJhY2UgcGFyYW1ldGVycyA9IGJvb2wgd2l0aFxuICB8IE5vbmUsIHRydWUgLT4gcGFyYW1ldGVyc1xuICB8IE5vbmUsIGZhbHNlIC0+IHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sXG4gIHwgU29tZSB4LCB0cnVlIC0+IHNldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcbiAgfCBTb21lIHgsIGZhbHNlIC0+XG4gICAgc2V0X2NhbGxfc3RhY2tcbiAgICAgIChzZXRfdHJhY2UgcGFyYW1ldGVycyByZXBfYm9vbClcbiAgICAgICh4IDo6IGdldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMpXG5cbmxldCBvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9pbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9pbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIGxldCBmb3JtYXQgPVxuICAgIG1hdGNoIGdldF9pbV9mb3JtYXQgcGFyYW1ldGVycyB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gTG9nZ2Vycy5ET1RcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUwgLT4gTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gTG9nZ2Vycy5NYXRyaXhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IExvZ2dlcnMuR0VQSElcbiAgaW5cbiAgbGV0IGxvZ2dlciA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOmZvcm1hdCBjaGFubmVsIGluXG4gIHsgcGFyYW1ldGVycyB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBvcGVuX2NvbnRhY3RfbWFwX2ZpbGUgcGFyYW1ldGVycyA9XG4gIGxldCBjaGFubmVsID1cbiAgICBtYXRjaFxuICAgICAgKCBnZXRfY21fZmlsZSBwYXJhbWV0ZXJzLFxuICAgICAgICBnZXRfY21fZGlyZWN0b3J5IHBhcmFtZXRlcnMsXG4gICAgICAgIGV4dF9mb3JtYXQgKGdldF9jbV9mb3JtYXQgcGFyYW1ldGVycykgKVxuICAgIHdpdGhcbiAgICB8IE5vbmUsIF8sIF8gLT4gc3Rkb3V0XG4gICAgfCBTb21lIGEsIE5vbmUsIGV4dCAtPiBvcGVuX291dCBhIGV4dFxuICAgIHwgU29tZSBhLCBTb21lIGQsIGV4dCAtPiBvcGVuX291dCAoZCBeIGEpIGV4dFxuICBpblxuICB7XG4gICAgcGFyYW1ldGVycyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbDtcbiAgfVxuXG5sZXQgcGVyc2lzdGVudF9tb2RlID0gZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICAobWF0Y2ggZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPlxuICAgIHRydWVcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IGZhbHNlKVxuICAmJiBnZXRfZG9faW5mbHVlbmNlX21hcCBwYXJhbWV0ZXJcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIF8gPVxuICBwZXJzaXN0ZW50X21vZGVcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgcGFyYW1ldGVyID1cbiAgZ2V0X2RvX2NvbnRhY3RfbWFwIHBhcmFtZXRlclxuICAmJlxuICBtYXRjaCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPlxuICAgIGZhbHNlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zIHBhcmFtZXRlciA9XG4gIGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9jb250YWN0X21hcFxuICAgICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9pbmZsdWVuY2VfbWFwXG4gICAgICAgcGFyYW1ldGVyXG5cbmxldCBnZXRfY2FsbGVkX2Zyb20gcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBiYWNrZG9vcnNcbiAgICA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZ1xuXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnlcblxubGV0IGdldF9iYWNrZG9vcnMgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xXG4gICAgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZ18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfdGltaW5nXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9maWxlXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmcgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9iYWNrZG9vcl9maWxlID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZmlsZV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlclxuXG5sZXQgZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXByZXNzaW9uX3N0YXR1c1xuXG5sZXQgZ2V0X2thc2Ffc3RhdGUgPSBjb21wb3NlIGdldF9rYXNhX3N0YXRlXzEgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IHNldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciBib29sID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5ID0gYm9vbCB9XG5cbmxldCBnZXRfcHJpbnRfZWZmaWNpZW5jeSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeVxuXG5sZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgbG9nZ2VyID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgfVxuXG5sZXQgc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlciBlcnJvciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgZXJyb3JcblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBiYXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgYmFyXG5cbmxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhclxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVcblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVcbiIsIm9wZW4gU3VwZXJhcmdcblxudHlwZSBjb3VudCA9IEVtYmVkZGluZ3MgfCBPY2N1cnJlbmNlc1xuXG50eXBlIHQgPSB7XG4gIGJhY2tlbmQ6IHN0cmluZyByZWY7XG4gIHJ1bGVfcmF0ZV9jb252ZW50aW9uOiBzdHJpbmcgcmVmO1xuICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIGNvdW50OiBzdHJpbmcgcmVmO1xuICBpbnRlcm5hbF9tZWFuaW5nOiBzdHJpbmcgcmVmO1xuICBzaG93X3JlYWN0aW9uczogYm9vbCByZWY7XG4gIGNvbXB1dGVfamFjb2JpYW46IGJvb2wgcmVmO1xuICBvY3RhdmVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0bGFiX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hcGxlX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hdGhlbWF0aWNhX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHNibWxfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZG90bmV0X291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIGRhdGFfZmlsZTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHdpdGhfc3ltbWV0cmllczogc3RyaW5nIHJlZjtcbiAgc2hvd19zeW1tZXRyaWVzOiBib29sIHJlZjtcbiAgdmlld3M6IGJvb2wgcmVmO1xuICBkYm9uZHM6IGJvb2wgcmVmO1xuICBzaXRlX2Fjcm9zczogYm9vbCByZWY7XG4gIG5vbm5lZ2F0aXZlOiBib29sIHJlZjtcbiAgc2hvd190aW1lX2FkdmFuY2U6IGJvb2wgcmVmO1xuICBpbml0aWFsX3N0ZXA6IGZsb2F0IHJlZjtcbiAgbWF4X3N0ZXA6IGZsb2F0IHJlZjtcbiAgcmVsYXRpdmVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIGFic29sdXRlX3RvbGVyYW5jZTogZmxvYXQgcmVmO1xuICBzbWFzaF9yZWFjdGlvbnM6IGJvb2wgcmVmO1xuICBwcm9wYWdhdGVfY29uc3RhbnRzOiBib29sIHJlZjtcbiAgcHJpbnRfZWZmaWNpZW5jeTogYm9vbCByZWY7XG4gIG1heF9zaXplX2Zvcl9zcGVjaWVzOiBpbnQgb3B0aW9uIHJlZjtcbiAgY3N2X3NlcDogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGJhY2tlbmQgPSByZWYgXCJvY3RhdmVcIjtcbiAgICBydWxlX3JhdGVfY29udmVudGlvbiA9IHJlZiBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgcmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICBjb3VudCA9IHJlZiBcIkVtYmVkZGluZ3NcIjtcbiAgICBpbnRlcm5hbF9tZWFuaW5nID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIHNob3dfcmVhY3Rpb25zID0gcmVmIHRydWU7XG4gICAgY29tcHV0ZV9qYWNvYmlhbiA9IHJlZiB0cnVlO1xuICAgIGRvdG5ldF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLm5ldFwiKTtcbiAgICBvY3RhdmVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWF0bGFiX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5tXCIpO1xuICAgIG1hcGxlX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5td3NcIik7XG4gICAgbWF0aGVtYXRpY2Ffb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm5iXCIpO1xuICAgIHNibWxfb3V0cHV0ID0gcmVmIChTb21lIFwibmV0d29yay54bWxcIik7XG4gICAgZGF0YV9maWxlID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgd2l0aF9zeW1tZXRyaWVzID0gcmVmIFwiTm9uZVwiO1xuICAgIHNob3dfc3ltbWV0cmllcyA9IHJlZiBmYWxzZTtcbiAgICB2aWV3cyA9IHJlZiB0cnVlO1xuICAgIGRib25kcyA9IHJlZiB0cnVlO1xuICAgIHNpdGVfYWNyb3NzID0gcmVmIHRydWU7XG4gICAgbm9ubmVnYXRpdmUgPSByZWYgZmFsc2U7XG4gICAgc2hvd190aW1lX2FkdmFuY2UgPSByZWYgZmFsc2U7XG4gICAgaW5pdGlhbF9zdGVwID0gcmVmIDAuMDAwMDE7XG4gICAgbWF4X3N0ZXAgPSByZWYgMC4wMjtcbiAgICBhYnNvbHV0ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gcmVmIDAuMDAxO1xuICAgIHNtYXNoX3JlYWN0aW9ucyA9IHJlZiBmYWxzZTtcbiAgICBwcm9wYWdhdGVfY29uc3RhbnRzID0gcmVmIGZhbHNlO1xuICAgIHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2U7XG4gICAgbWF4X3NpemVfZm9yX3NwZWNpZXMgPSByZWYgTm9uZTtcbiAgICBjc3Zfc2VwID0gcmVmIFwiIFwiO1xuICB9XG5cbmxldCBjb21iaW5lIGwxIGwyID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGxpc3QgYTEgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoYTIgOiBpbnQpIC0+IChhMSwgYTIpIDo6IGxpc3QpIGxpc3QgbDIpXG4gICAgW10gbDFcblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6XG4gICAgKFN1cGVyYXJnLmtleVxuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogU3VwZXJhcmcubXNnXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12b2lkXCIsXG4gICAgICBTdXBlcmFyZy5Wb2lkLFxuICAgICAgXCJcIixcbiAgICAgIGNvbWJpbmVcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dDtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcztcbiAgICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlO1xuICAgICAgICBdXG4gICAgICAgIFsgNTA7IDUxOyA1MiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5NdWx0aUV4dFxuICAgICAgICBbXG4gICAgICAgICAgXCItLWRvdG5ldC1vdXRwdXRcIiwgXCIubmV0XCI7XG4gICAgICAgICAgXCItLW1hcGxlLW91dHB1dFwiLCBcIi5td3NcIjtcbiAgICAgICAgICBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsIFwiLm5iXCI7XG4gICAgICAgICAgXCItLW1hdGxhYi1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1vY3RhdmUtb3V0cHV0XCIsIFwiLm1cIjtcbiAgICAgICAgICBcIi0tc2JtbC1vdXRwdXRcIiwgXCIueG1sXCI7XG4gICAgICAgIF0sXG4gICAgICBcIlByZWZpeCBmb3IgZmlsZSBuYW1lIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAxO1xuICAgICAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW9kZS1iYWNrZW5kXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcImRvdG5ldFwiLCBcImRvdG5ldCAoQk5HTCkgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJtYXBsZVwiLCBcIm1hcGxlIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRoZW1hdGljYVwiLCBcIm1hdGhlbWF0aWNhIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRsYWJcIiwgXCJtYXRsYWIgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJvY3RhdmVcIiwgXCJvY3RhdmUgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJzYm1sXCIsIFwic2JtbCBiYWNrZW5kXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIkRvdG5ldFwiO1xuICAgICAgICAgICAgXCJET1RORVRcIjtcbiAgICAgICAgICAgIFwiT2N0YXZlXCI7XG4gICAgICAgICAgICBcIk9DVEFWRVwiO1xuICAgICAgICAgICAgXCJNYXRsYWJcIjtcbiAgICAgICAgICAgIFwiTUFUTEFCXCI7XG4gICAgICAgICAgICBcIk1hdGhlbWF0aWNhXCI7XG4gICAgICAgICAgICBcIk1BVEhFTUFUSUNBXCI7XG4gICAgICAgICAgICBcIk1hcGxlXCI7XG4gICAgICAgICAgICBcIk1BUExFXCI7XG4gICAgICAgICAgICBcIlNibWxcIjtcbiAgICAgICAgICAgIFwiU0JNTFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5iYWNrZW5kICksXG4gICAgICBcIlNlbGVjdCB0aGUgYmFja2VuZCBmb3JtYXRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1kb3RuZXQtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQuZG90bmV0X291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBkb3RuZXQgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDIgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hcGxlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hcGxlX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXBsZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMyBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0aGVtYXRpY2Ffb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGhlbWF0aWNhIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRsYWItb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0bGFiX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXRsYWIgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW9jdGF2ZS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5vY3RhdmVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG9jdGF2ZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2JtbC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5zYm1sX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBzYm1sIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1wcm9wYWdhdGUtY29uc3RhbnRzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDggXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLWNvbnN0YW50LXByb3BhZ2F0aW9uXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDkgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNzdi1zZXBhcmF0b3JcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0LmNzdl9zZXAsXG4gICAgICBcInNlcGFyYXRvciBzeW1ib2wgaW4gQ1NWIGZpbGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzIHRoYXQgaW5kdWNlIFxcXG4gICAgICAgICAgICAgICBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5ydWxlX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXJ1bGUtcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcnVsZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVhY3Rpb24tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiByZWFjdGlvbnNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9ucyB0aGF0IFxcXG4gICAgICAgICAgICAgICBpbmR1Y2UgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcmVhY3Rpb25zKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvdW50XCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICAoIFwiRW1iZWRkaW5nc1wiLFxuICAgICAgICAgICAgICBcImNvdW50IHRoZSBudW1iZXIgb2YgZW1iZWRkaW5ncyBvZiBwYXR0ZXJucyBpbnRvIHNwZWNpZXNcIiApO1xuICAgICAgICAgICAgXCJPY2N1cnJlbmNlc1wiLCBcImNvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3BlY2llc1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5jb3VudCApLFxuICAgICAgXCJ0dW5lIHdoZXRoZXIgd2UgY291bnQgaW4gZW1iZWRkaW5ncyBvciBpbiBvY2N1cnJlbmNlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDMgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWludGVybmFsLW1lYW5pbmdcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIGVtYmVkZGluZ3NcIiApO1xuICAgICAgICAgICAgKCBcIk9jY3VycmVuY2VzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIG9jY3VycmVuY2VzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFsgXCJlbWJlZGRpbmdzXCI7IFwiRU1CRURESU5HU1wiOyBcIm9jY3VycmVuY2VzXCI7IFwiT0NDVVJSRU5DRVNcIiBdLFxuICAgICAgICAgIHQuaW50ZXJuYWxfbWVhbmluZyApLFxuICAgICAgXCJ0dW5lIHRoZSBtZWFuaW5nIG9mIHZhcmlhYmxlIGZvciBLYXBwYSBzcGVjaWVzICh3aGV0aGVyIGl0IGlzIHRoZSBcXFxuICAgICAgIG51bWJlciBvZiBlbWJlZGRpbmdzIG9yIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tdHJ1bmNhdGVcIixcbiAgICAgIFN1cGVyYXJnLkludF9vcHQgdC5tYXhfc2l6ZV9mb3Jfc3BlY2llcyxcbiAgICAgIFwidHJ1bmNhdGUgdGhlIG5ldHdvcmsgYnkgZGlzY2FyZGluZyBzcGVjaWVzIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gdGhlIFxcXG4gICAgICAgYXJndW1lbnRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1tYXgtc2l6ZS1mb3Itc3BlY2llc1wiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXNob3ctcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19yZWFjdGlvbnMsXG4gICAgICBcIkFubm90YXRlIE9ERXMgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2hlbWljYWwgcmVhY3Rpb25zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNtYXNoLXJlYWN0aW9uc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNtYXNoX3JlYWN0aW9ucyxcbiAgICAgIFwiR2F0aGVyIGlkZW50aWNhbCByZWFjdGlvbnMgaW4gdGhlIE9ERXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvbXB1dGUtamFjb2JpYW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5jb21wdXRlX2phY29iaWFuLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29tcHV0YXRpb24gb2YgdGhlIEphY29iaWFuIG9mIHRoZSBPREVzIFxcblxcXG4gICAgICAgXFx0IChub3QgYXZhaWxhYmxlIHlldClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXdpdGgtc3ltbWV0cmllc1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJOb25lXCIsIFwibm8gc3ltbWV0cmllcyByZWR1Y3Rpb25cIjtcbiAgICAgICAgICAgICggXCJCYWNrd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgYWxnZWJyYWljIFxcXG4gICAgICAgICAgICAgICBleHByZXNzaW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiRm9yd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgaW5pdGlhbCBzdGF0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJub25lXCI7XG4gICAgICAgICAgICBcIk5PTkVcIjtcbiAgICAgICAgICAgIFwiQkFDS1dBUkRcIjtcbiAgICAgICAgICAgIFwiYmFja3dhcmRcIjtcbiAgICAgICAgICAgIFwiZm9yd2FyZFwiO1xuICAgICAgICAgICAgXCJGT1JXQVJEXCI7XG4gICAgICAgICAgICBcInRydWVcIjtcbiAgICAgICAgICAgIFwiVFJVRVwiO1xuICAgICAgICAgICAgXCJUcnVlXCI7XG4gICAgICAgICAgICBcImZhbHNlXCI7XG4gICAgICAgICAgICBcIkZBTFNFXCI7XG4gICAgICAgICAgICBcIkZhbHNlXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LndpdGhfc3ltbWV0cmllcyApLFxuICAgICAgXCJUdW5lIHdoaWNoIGtpbmQgb2YgYmlzaW11bGF0aW9uIGlzIHVzZWQgdG8gcmVkdWNlIHRoZSBzZXQgb2Ygc3BlY2llc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDU7IENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19zeW1tZXRyaWVzLFxuICAgICAgXCJEaXNwbGF5IHRoZSBlcXVpdmFsZW5jZSByZWxhdGlvbnMgb3ZlciB0aGUgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS12aWV3cy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC52aWV3cyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdmlld3MgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMSBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmRib25kcyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgZG91YmxlIGJvbmRzIGFuYWx5c2lzIHdoZW4gZGV0ZWN0aW5nIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDIgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLXNpdGUtYWNyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNpdGVfYWNyb3NzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25kIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgXFxcbiAgICAgICBpbiBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMyBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tbm9ubmVnYXRpdmVcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5ub25uZWdhdGl2ZSxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGNvcnJlY3Rpb24gb2YgbmVnYXRpdmUgY29uY2VudHJhdGlvbnMgaW4gc3RpZmYgT0RFIFxcXG4gICAgICAgc3lzdGVtc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy10aW1lLWFkdmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3RpbWVfYWR2YW5jZSxcbiAgICAgIFwiRGlzcGxheSB0aW1lIGFkdmFuY2UgZHVyaW5nIG51bWVyaWNhbCBpbnRlZ3JhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1pbml0aWFsLXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQuaW5pdGlhbF9zdGVwLFxuICAgICAgXCJJbml0aWFsIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zdGVwXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0Lm1heF9zdGVwLFxuICAgICAgXCJNYXhpbXVtIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDUgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJlbGF0aXZlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5yZWxhdGl2ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byByZWxhdGl2ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDYgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWFic29sdXRlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5hYnNvbHV0ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byBhYnNvbHV0ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDcgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcmludF9lZmZpY2llbmN5LFxuICAgICAgXCJwcm9tcHQgQ1BVIHRpbWUgYW5kIHZhcmlvdXMgZGF0YXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gIF1cblxubGV0IGdldF9vcHRpb24gb3B0aW9ucyA9XG4gIGxldCB0aXRsZSA9IFZlcnNpb24udmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSBpblxuICBsZXQgaW5wdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBpbnB1dCBpblxuICAhaW5wdXRcblxubGV0IGJ1aWxkX2thc2FfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gdCB0X2NvbW1vbiA9XG4gIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzIDo9ICEodC52aWV3cyk7XG4gIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5kYm9uZHMpO1xuICBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA6PSAhKHQuc2l0ZV9hY3Jvc3MpO1xuICBDb25maWcudHJhY2UgOj0gdF9jb21tb24uQ29tbW9uX2FyZ3MuZGVidWc7XG4gIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpXG4iLCIoKipcbiAqIGhlYWRlcnMubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMTQgMjAxNj5cbiAqICpcbiAqIFNvbWUgcGFyYW1ldGVyc1xuICogcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAqXG4gKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTVcbiAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcbmxldCBkb3RfY29tbWVudCA9IFwiI1wiXG5cbmxldCBoZWFkIHBhcmFtZXRlcnMgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgaGFzIGJlZW4gY29tcHV0ZWQgYnkgS2FTYTogYSBTdGF0aWMgQW5hbHl6ZXIgZm9yIEthcHBhIChcIlxuICAgIF4gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfc2hvcnRfdmVyc2lvbiBwYXJhbWV0ZXJzXG4gICAgXiBcIilcIjtcbiAgICBcIkRvd25sb2FkIHNvdXJjZXMvYmluYXJpZXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiO1xuICAgIFwiXCI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycztcbiAgICBcIkNvbW1hbmQgbGluZSBpczogXCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIEFycmF5LnRvX2xpc3QgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbW1hbmRfbGluZSBwYXJhbWV0ZXJzKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF90IDo6IHEgLT4gXCJLYVNhXCIgOjogcVxuICAgICAgICB8IFtdIC0+IFtdKTtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBkb3RfdG9fcGRmID1cbiAgXCJQbGVhc2UgdXNlIGdyYXBodml6IChodHRwOi8vd3d3LmdyYXBodml6Lm9yZykgb3IgT21uaUdyYWZmbGUgdG8gZXhwb3J0IGl0IFxcXG4gICB0byBhIFBERlwiXG5cbmxldCBoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mbHVlbmNlIG1hcCBpbiBkb3QuXCI7XG4gICAgZG90X3RvX3BkZjtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhY3QgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cbiIsIigqZmlsZSBuYW1lcyopXG5cbmxldCBpbnB1dCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXSAoKm5hbWUgb2YgdGhlIGthcHBhIGZpbGVzKilcbmxldCBvdXRwdXQgPSByZWYgXCJkYXRhLm91dFwiXG4iLCIoKipcbiAgKiBnZXRfb3B0aW9uLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTgvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIHByaW1pdGl2ZSB0byBwYXJzZSBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFN1cGVyYXJnXG5cbmxldCBhY3Rpb25zID0gXCJBY3Rpb25zXCIsIDAsIE5vbmVcbmxldCBzeW50YXggPSBcIlN5bnRheFwiLCAxLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMiwgTm9uZVxubGV0IHJlYWNoYWJpbGl0eSA9IFwiUmVhY2hhYmlsaXR5IGFuYWx5c2lzXCIsIDMsIE5vbmVcbmxldCB0cmFjZXMgPSBcIlRyYWNlIGFuYWx5c2lzXCIsIDQsIE5vbmVcbmxldCBjb250YWN0X21hcCA9IFwiQ29udGFjdCBtYXBcIiwgNSwgTm9uZVxubGV0IGluZmx1ZW5jZV9tYXAgPSBcIkluZmx1ZW5jZSBtYXBcIiwgNiwgTm9uZVxubGV0IGZsb3cgPSBcIkZsb3cgb2YgaW5mb3JtYXRpb25cIiwgNywgTm9uZVxubGV0IGRlYnVnID0gXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIiwgOCwgTm9uZVxuXG5sZXQgb3B0aW9ucyA9XG4gIExpc3QucmV2XG4gICAgW1xuICAgICAgKCBcIi0tZG8tYWxsXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJsYXVuY2ggZXZlcnl0aGluZ1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1yZXNldC1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBub3RoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgIFwiLS12b2lkXCIsIFZvaWQsIFwiXCIsIFsgYWN0aW9ucywgMiBdLCBOb3JtYWw7XG4gICAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJWM1wiLCBcInByZXZpb3VzIHZlcnNpb25cIjsgXCJWNFwiLCBcImN1cnJlbnQgdmVyc2lvblwiIF0sXG4gICAgICAgICAgICBbIFwiVjNcIjsgXCJWNFwiOyBcIjNcIjsgXCI0XCI7IFwidjNcIjsgXCJ2NFwiIF0sXG4gICAgICAgICAgICBDb25maWcuc3ludGF4X3ZlcnNpb24gKSxcbiAgICAgICAgXCJWZXJzaW9uIG9mIHRoZSBsZXhlci9wYXJzZXJcIixcbiAgICAgICAgWyBzeW50YXgsIDE7IGFjdGlvbnMsIDMwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1jb250YWN0LW1hcFwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19jb250YWN0X21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDI7IGNvbnRhY3RfbWFwLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXAsXG4gICAgICAgIFwiY29tcHV0ZSB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDM7IGluZmx1ZW5jZV9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pbmZsdWVuY2UtbWFwLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkluZGlyZWN0XCIsIFwiSWdub3JlIGdsdWluZyBjb21wYXRpYmlsaXR5XCI7XG4gICAgICAgICAgICAgIFwiRGlyZWN0XCIsIFwiSWdub3JlIHJlYWNoYWJsZSBzdGF0ZXNcIjtcbiAgICAgICAgICAgICAgXCJSZWFsaXNhYmxlXCIsIFwiVGFrZSBpbnRvIGFjY291bnQgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsgXCJMb3dcIjsgXCJNZWRpdW1cIjsgXCJIaWdoXCI7IFwiRnVsbFwiIF0sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgaW5mbHVlbmNlX21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBPREUgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDQ7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc2NjLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGJvbmRzIHRoYXQgbWF5IGJlIGludm9sdmVkIGluIHBvbHltZXJpc2F0aW9uXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNTsgY29udGFjdF9tYXAsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBzdG9jaGFzdGljIFxcXG4gICAgICAgICBzZW1hbnRpY3NcIixcbiAgICAgICAgWyBhY3Rpb25zLCA2OyBmbG93LCA2IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgc3RhdGVzIG9mIGFnZW50IHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNzsgcmVhY2hhYmlsaXR5LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZW5hYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiZHluYW1pY1wiO1xuICAgICAgICAgICAgICBcIi0tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJlbmFibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZGlzYWJsZS1ldmVyeS1kb21haW5cIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcInN0YXRpY1wiO1xuICAgICAgICAgICAgICBcIi0tbm8tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJkaXNhYmxlIGV2ZXJ5IGFic3RyYWN0IGRvbWFpblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgKCBcInN0YXRpY1wiLFxuICAgICAgICAgICAgICAgIFwiVmVyeSBjb2Fyc2Ugc3RhdGljIGFic3RyYWN0aW9uOiBldmVyeSBib25kIHRoYXQgb2NjdXJzIGluIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGVzIGFuZCByaHMgb2YgcnVsZXMgaXMgY29uc2lkZXJlZFwiICk7XG4gICAgICAgICAgICAgICggXCJkeW5hbWljXCIsXG4gICAgICAgICAgICAgICAgXCJNb3JlIGFjY3VyYXRlIGFic3RyYWN0aW9uOiBvbmx5IHRoZSBib25kcyB0aGF0IG9jY3VyIGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICBpbml0aWFsIHN0YXRlIG9yIGEgcnVsZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCBcXFxuICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHksIGFyZSBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgKSxcbiAgICAgICAgXCJjb250YWN0IG1hcCBkb21haW4gaXMgdXNlZCB0byBvdmVyLWFwcHJveGltYXRlIHNpZGUtZWZmZWN0c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBsb2NhbCB2aWV3cyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvdW50ZXJzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX2NvdW50ZXJzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtYWNjdXJhY3lcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwibm9uLXJlbGF0aW9uYWxcIiwgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICggXCJvY3RhZ29uc1wiLFxuICAgICAgICAgICAgICAgIFwiTG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgZWFjaCB2YXJpYWJsZSwgIGFuIGVhY2ggc3VtIGFuZCBcXFxuICAgICAgICAgICAgICAgICBlYWNoIGRpZmZlcmVuY2UgYW1vbmcgdHdvIHZhcmlhYmxlc1wiICk7XG4gICAgICAgICAgICAgICggXCJtaVwiLFxuICAgICAgICAgICAgICAgIFwiQXBwcm94aW1hdGUgcmVkdWNlZCBwcm9kdWN0IGJldHdlZW4gaW50ZXJ2YWxzIGFuZCBhZmZpbmUgXFxcbiAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1wiICk7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIm9jdFwiO1xuICAgICAgICAgICAgICBcIm9jdG9cIjtcbiAgICAgICAgICAgICAgXCJvY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiTUlcIjtcbiAgICAgICAgICAgICAgXCJNaVwiO1xuICAgICAgICAgICAgICBcIk9jdFwiO1xuICAgICAgICAgICAgICBcIk9jdG9cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiT2N0YWdvbnNcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIm5yXCI7XG4gICAgICAgICAgICAgIFwibm9uLXJlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxcIjtcbiAgICAgICAgICAgICAgXCJub25fcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTnJcIjtcbiAgICAgICAgICAgICAgXCJOb24tcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIk5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluICksXG4gICAgICAgIFwiQWJzdHJhY3QgZG9tYWluIGZvciBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3ltbWV0cmllc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zeW1tZXRyaWVzLFxuICAgICAgICBcIkxvb2sgdXAgZm9yIHBhaXJzIG9mIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXZpZXctYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTXV0ZVwiLCBcIk5vIGluZm9ybWF0aW9uIGRpc3BsYXllZFwiO1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIlNob3cgYW5hbHlzaXMgcmVzdWx0IG9ubHlcIjtcbiAgICAgICAgICAgICAgXCJNZWRpdW1cIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIGFwcGxpZWRcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiQWxzbyBzaG93IHdoZW4gbmV3IHZpZXdzIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHZpZXcgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDkgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBwYXR0ZXJucyBhcmUgZGlzY292ZXJlZFwiO1xuICAgICAgICAgICAgICBcIkZ1bGxcIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIHB1dCBpbiB0aGUgd29ya2luZyBsaXN0XCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgKSxcbiAgICAgICAgXCJUdW5lIHRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSByZWFjaGFiaWxpdHkgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taGlkZS1vbmUtZC1yZWxhdGlvbnMtZnJvbS1jYXJ0ZXNpYW4tZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uLFxuICAgICAgICBcIkZpbHRlciBvdXQgMS1kIHJlbGF0aW9ucyBmcm9tIHRoZSBDYXJ0ZXNpYW4gZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTEgXSxcbiAgICAgICAgRGV2ZWxvcHBlciApO1xuICAgICAgKCBcIi0tc21hc2gtcmVsYXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNtYXNoX3JlbGF0aW9ucyxcbiAgICAgICAgXCJSZWNvbWJpbmUgcmVsYXRpb25zIHRvIGdldCBhIG1vcmUgcHJlY2lzZSAmIGNvbXBhY3Qgb3V0cHV0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMiBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1vdXRwdXQtbW9kZS1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcInJhd1wiLCBcIm5vIHBvc3QtcHJvY2Vzc2luZ1wiO1xuICAgICAgICAgICAgICBcImthcHBhXCIsIFwia2FwcGEgbW9kZVwiO1xuICAgICAgICAgICAgICBcImVuZ2xpc2hcIiwgXCJuYXR1cmFsIGxhbmd1YWdlXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgKSxcbiAgICAgICAgXCJwb3N0LXByb2Nlc3MgcmVsYXRpb24gYW5kIG91dHB1dCB0aGUgcmVzdWx0IGluIHRoZSBjaG9zZW4gZm9ybWF0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGxvY2FsIHRyYWNlcyBvZiBpbnRlcmVzdGluZyBwYXJ0cyBvZiBhZ2VudCBpbnRlcmZhY2VzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOTsgdHJhY2VzLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2hvdy1ydWxlLW5hbWVzLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkFubm90YXRlIGVhY2ggdHJhbnNpdGlvbiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBydWxlcyBpbiB0cmFjZSBcXFxuICAgICAgICAgYWJzdHJhY3Rpb25cIixcbiAgICAgICAgWyB0cmFjZXMsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS11c2UtbWFjcm90cmFuc2l0aW9ucy1pbi1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIlVzZSBtYWNyb3RyYW5zaXRpb25zIHRvIGdldCBhIGNvbXBhY3QgdHJhY2UgdXAgdG8gY2hhbmdlIG9mIHRoZSBcXFxuICAgICAgICAgaW50ZXJsZWF2aW5nIG9yZGVyIG9mIGNvbW11dGluZyBtaWNyb3RyYW5zaXRpb25zXCIsXG4gICAgICAgIFsgdHJhY2VzLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taWdub3JlLXRyaXZpYWwtbG9zYW5nZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMsXG4gICAgICAgIFwiRG8gbm90IHVzZSBtYWNyb3RyYW5zaXRpb25zIGZvciBzaW1wbGlmeWluZyB0cml2aWFsIGxvc2FuZ2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCAzIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYWRkLXNpbmd1bGFyLW1hY3Jvc3RhdGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyxcbiAgICAgICAgXCJDb21wbGV0ZSB0aGUgc2ltcGxpY2lhbCBjb21wbGV4ZXMgd2l0aCBzaW5ndWxhciBpbnRlcnNlY3Rpb24gb2YgXFxcbiAgICAgICAgIGhpZ2hlci1kaW1lbnNpb24gZmFjZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDQgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWljcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc2VwYXJhdGluZy10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgdHJhbnNpdGlvbnMgdGhhdCBzZXBhcmF0ZXMgc3Ryb25nbHkgY29ubmVjdGVkIHNldCBvZiBcXFxuICAgICAgICAgY29uZmlndXJhdGlvbnNcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxMDsgdHJhY2VzLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWRpcmVjdG9yeVwiLFxuICAgICAgICBNdWx0aUV4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtY29udGFjdC1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgIF0sXG4gICAgICAgIFwiRGVmYXVsdCByZXBvc2l0b3J5IGZvciBvdXRwdXRzXCIsXG4gICAgICAgIFsgb3V0cHV0LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogQ09OVEFDVCBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgY29udGFjdCBtYXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgMDsgY29udGFjdF9tYXAsIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtY29udGFjdC1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5jb250YWN0X21hcF9maWxlLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QgbWFwIG91dHB1dFwiLFxuICAgICAgICBbIG91dHB1dCwgMTsgY29udGFjdF9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiO1xuICAgICAgICAgICAgICBcIkdFUEhJXCIsIFwiR2VwaGkgZm9ybWF0XCI7XG4gICAgICAgICAgICAgICgqXCJIVE1MXCIsXCJIVE1MIGZvcm1hdFwiKilcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDI7IGNvbnRhY3RfbWFwLCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiQ29sbGVjdCBpbmZvIGZyb20gcmhzIG9mIHJ1bGVzIGFuZCBpbml0aWFsIHN0YXRlXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIk9ubHkgY29uc2lkZXIgcmVhY2hhYmxlIHJ1bGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXBvbHltZXItZGV0ZWN0aW9uLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcImJhc2VkIG9ubHkgb24gdGhlIGNvbnRhY3QgbWFwXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcInVzZSByZWFjaGFiaWxpdHkgYW5hbHlzaXMgYXMgd2VsbFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBkZXRlY3Rpb24gb2YgcG9seW1lcnNcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXB1cmUtY29udGFjdFwiLFxuICAgICAgICBCb29sIENvbmZpZy5wdXJlX2NvbnRhY3QsXG4gICAgICAgIFwic2hvdyBpbiB0aGUgY29udGFjdCBtYXAgIG9ubHkgdGhlIHNpdGVzIHdpdGggYSBiaW5kaW5nIHN0YXRlXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDggXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoKiBJTkZMVUVOQ0UgTUFQICopXG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfaW1fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgaW5mbHVlbmNlIG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5pbmZsdWVuY2VfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMzsgaW5mbHVlbmNlX21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJESU1cIiwgXCJESU0gZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDQ7IGluZmx1ZW5jZV9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBMT0NBTCBUUkFDRVMgKilcbiAgICAgICggXCItLW91dHB1dC1sb2NhbC10cmFjZXMtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGZpbGVzIGFib3V0IGxvY2FsIHRyYWNlcyBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgNTsgdHJhY2VzLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tbG9jYWwtdHJhY2VzLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmxvY2FsX3RyYWNlX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBsb2NhbCB0cmFuc2l0aW9uIHN5c3RlbXNcIixcbiAgICAgICAgWyBvdXRwdXQsIDY7IHRyYWNlcywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPRyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvZy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgbG9nIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA3OyBkZWJ1ZywgMCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDEgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1kZWJ1Zy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDIgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1kZWJ1Z2dpbmctbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAzIF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tdW5zYWZlLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudW5zYWZlLFxuICAgICAgICBcImV4Y2VwdGlvbnMgYXJlIGdhdGhlcmVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXB1dGF0aW9uLCBpbnN0ZWFkIG9mIFxcXG4gICAgICAgICBoYWx0aW5nIGl0IFwiLFxuICAgICAgICBbIGRlYnVnLCA0IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgICBCb29sIENvbmZpZy5wcmludF9lZmZpY2llbmN5LFxuICAgICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgICBbIGRlYnVnLCA1IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItcnVsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItbnItY29uc3RyYWludHNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gcmVsYXRpb25hbCByZWZpbmVtZW50IGNvbnN0cmFpbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWluZmx1ZW5jZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIGluZmx1ZW5jZSByZWxhdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItZGVhZC1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgZGVhZCBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW9mLXJ1bGVzLXdpdGgtbm9uLXdlYWtseS1yZXZlcnNpYmxlLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcnVsZXMgd2l0aCBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItc2NjXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2MsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtYXZlcmFnZS1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBhdmVyYWdlIHNpemUgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC10aW1pbmdcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfdGltaW5nLFxuICAgICAgICBcImR1bXAgQ1BVIHRpbWVcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZmlsZVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgIFwic2VsZWN0IHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICBcInNlbGVjdCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgZmlsZSB0byBkdW1wIGJhY2tkb29yIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICBdXG5cbmxldCBnZXRfb3B0aW9uIGVycm9yID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lIGluXG4gIGxldCAoKSA9IFN1cGVyYXJnVGsucGFyc2UgfnRpdGxlIG9wdGlvbnMgRmlsZU5hbWVzLmlucHV0IGluXG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhXG4gICAgICAoKVxuICBpblxuICBlcnJvciwgcGFyYW1ldGVycywgIUZpbGVOYW1lcy5pbnB1dFxuIiwiKCoqXG4gKiBleGNlcHRpb24ubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXVnIDE1IDIwMTY+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICpcbiAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXJcbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmlzX2VtcHR5X2Vycm9yX2hhbmRsZXJcblxubGV0IHNhZmVfd2FybiBwYXJhbWV0ZXJzIF9lcnJvcl9oYW5kbGVyIGZpbGVfbmFtZSBtZXNzYWdlIGV4biBfZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHRcbiAgICAgIFsgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMgXVxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgc3RyaW5nbGlzdFxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIGluXG4gIHJhaXNlIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuVW5jYXVnaHRfZXhjZXB0aW9uIHVuY2F1Z2h0KVxuXG5sZXQgdW5zYWZlX3dhcm4gX3BhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG5cbiAgaW5cbiAgKCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yIHVuY2F1Z2h0ID90b191aSBlcnJvcl9oYW5kbGVyLFxuICAgIGRlZmF1bHQgKCkgKVxuXG5sZXQgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgZXJyb3IsIGRmdCA9XG4gICAgaWYgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdW5zYWZlIHBhcmFtZXRlcnMgdGhlblxuICAgICAgdW5zYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHRcbiAgICBlbHNlXG4gICAgICBzYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICBpblxuICBsZXQgKCkgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfZXJyb3JfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIGVycm9yLCBkZnRcblxubGV0IHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoZmlsZSwgbGluZSwgXywgXylcbiAgICA/KG1lc3NhZ2UgPSBcIlwiKSA/KHBvcyA9IE5vbmUpIGV4biBkZWZhdWx0ID1cbiAgbGV0IGxpYWlzb24gPVxuICAgIGlmIG1lc3NhZ2UgPSBcIlwiICYmIHBvcyA9IE5vbmUgdGhlblxuICAgICAgXCJcIlxuICAgIGVsc2VcbiAgICAgIFwiOiBcIlxuICBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIHMgLT4gXCIsIFwiIF4gTG9jLnRvX3N0cmluZyBzXG4gIGluXG4gIHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgKFNvbWUgZmlsZSlcbiAgICAoU29tZSAoXCJsaW5lIFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIF4gcG9zIF4gbGlhaXNvbiBeIG1lc3NhZ2UpKVxuICAgIGV4biBkZWZhdWx0XG5cbmxldCB3YXJuIHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9saW5lID8obWVzc2FnZSA9IFwiXCIpID9wb3MgZXhuXG4gICAgZGVmYXVsdCA9XG4gIHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgfm1lc3NhZ2UgfnBvcyBleG5cbiAgICAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGxldCBwYXJhbWV0ZXJzID0gUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnMgXCJlcnJvcjogXCIgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBjYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IGNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gdW5jYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiJXNcIilcbiAgICAgICAgICAgIHN0cmluZ2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gICgpXG5cbmxldCBwcmludCBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgaWZcbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gICAgJiYgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gIHRoZW4gKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzZXhlY3V0aW9uIGZpbmlzaGVkIHdpdGhvdXQgYW55IGV4Y2VwdGlvblwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgXCIlc1NvbWUgZXhjZXB0aW9ucyBoYXZlIGJlZW4gcmFpc2VkXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVyc1xuICApXG5cbmxldCBwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWQgZHVyaW5nIHRoZSBzdGF0aWMgYW5hbHlzaXMsIHBsZWFzZSBcXFxuICAgICAgICAgYW5hbHlzZSB5b3VyIGZpbGUgd2l0aCBLYVNhXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApXG5cbmxldCB3cmFwIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nIHN0cmluZ19vcHQgZXhuID1cbiAgZnN0ICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBfbGlmdF9lcnJvcl9sb2dzX2Zvcl9LYVNhIGYgPVxuICBmIChmdW4gcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gLT5cbiAgICAgIGZzdFxuICAgICAgICAod2Fybl9hdXggcGFyYW1ldGVycyBlcnJvciAoU29tZSBzdHJpbmcpIHN0cmluZ19vcHQgZXhuIChmdW4gKCkgLT4gKCkpKSlcblxubGV0IGNoZWNrX3BvaW50XG4gICAgKHdhcm4gOlxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAgID90b191aTpib29sIC0+XG4gICAgICAnYSAtPlxuICAgICAgP21lc3NhZ2U6c3RyaW5nIC0+XG4gICAgICA/cG9zOkxvYy50IC0+XG4gICAgICBleG4gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIG1ldGhvZF9oYW5kbGVyICogdW5pdCkgcGFyYW1ldGVyIGVycm9yIGVycm9yJyBzID90b191aSA/bWVzc2FnZSA/cG9zIGV4biA9XG4gIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgZXJyb3JcbiAgZWxzZSAoXG4gICAgbGV0IGVycm9yLCAoKSA9IHdhcm4gcGFyYW1ldGVyIGVycm9yJyA/dG9fdWkgcyA/bWVzc2FnZSA/cG9zIGV4biAoKSBpblxuICAgIGVycm9yXG4gIClcbiIsIigqKiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+ICopXG5cbmxldCBmb3JfS2FTaW0gZiA9IGYgKGZ1biBfIF8gXyBfIF8gLT4gKCkpICgpICgpXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZiBhIGIgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYilcblxubGV0IGxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9XG4gIGxldCBfLCBiLCBjID0gZm9yX0thU2ltIGYgYSBiIGluXG4gIGIsIGNcblxubGV0IGxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSBmIGEgYiBjID0gc25kIChmb3JfS2FTaW0gZiBhIGIgYylcblxubGV0IGxpZnRfZ2VuX3VuYXJ5IGR1bXAgZiBhID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfZ2VuX2JpbmFyeSBkdW1wIGYgYSBiID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBiIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fdGVybmFyeSBkdW1wIGYgYSBiIGMgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgYyBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYVxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iaW5hcnkgZiBhIGIgPVxuICBsaWZ0X2dlbl9iaW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3Rlcm5hcnkgZiBhIGIgYyA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGIgY1xuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgKGZ1biBfIF8gLT4gKCkpIGYgYVxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9IGxpZnRfZ2VuX2JpbmFyeSAoZnVuIF8gXyBfIC0+ICgpKSBmIGEgYlxuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fdGVybmFyeSAoZnVuIF8gXyBfIF8gLT4gKCkpIGYgYSBiIGNcbiIsIigqKlxuICAqIHN0b3J5UHJvZmlsaW5nLm1sXG4gICpcbiAgKiBHZW5lcmF0ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gZm9yIHN0b3JpZXMgaW4gS2FTaW1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAwOS8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE1LzA2LzIwMTJcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBEdW1teVxuICB8IEJlZ2lubmluZ1xuICB8IENvbGxlY3RfdHJhY2VzXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uXG4gIHwgV2Vha19jb21wcmVzc2lvblxuICB8IFN0cm9uZ19jb21wcmVzc2lvblxuICB8IEl0ZXJhdGlvbiBvZiBpbnRcbiAgfCBTdG9yeSBvZiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvblxuICB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZVxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGVcbiAgfCBDb21wcmVzc2lvblxuICB8IEJ1aWxkX2dyaWRcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gIHwgR3JhcGhfcmVkdWN0aW9uXG4gIHwgR3JhcGhfY29udmVyc2lvblxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgfCBTdG9yZV90cmFjZVxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50c1xuICB8IEJsYWNrbGlzdGluZ19ldmVudHNcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5zX2luaXRpYWxpemF0aW9uXG4gIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIG9mIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgb2YgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBvZiBpbnRcbiAgfCBTY2FuX3J1bGVfc3RhdGljIG9mIGludFxuICB8IFNjYW5fcnVsZV9keW5hbWljIG9mIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICB8IFNpZGVfZWZmZWN0c19pbmZsdWVuY2VzXG4gIHwgTWVyZ2VfaW5mbHVlbmNlc1xuICB8IEthU2ltX2NvbXBpbGF0aW9uXG4gIHwgS2FTYV9wcmVjb21waWxhdGlvblxuICB8IEthU2FfbGV4aW5nXG4gIHwgS2FTYV9saW5raW5nXG4gIHwgSW5mbHVlbmNlX21hcCBvZiBzdHJpbmdcbiAgfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmVcblxubGV0IHN0cmluZ19vZl9zdGVwX2tpbmQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IER1bW15IHwgQmVnaW5uaW5nIC0+IFwiXCJcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uIC0+IFwiQnVpbGQgY29uZmlndXJhdGlvblwiXG4gIHwgQ29sbGVjdF90cmFjZXMgLT4gXCJDb2xsZWN0IHRyYWNlc1wiXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uIC0+IFwiQ2F1c2FsIGNvbXByZXNzaW9uXCJcbiAgfCBXZWFrX2NvbXByZXNzaW9uIC0+IFwiV2VhayBjb21wcmVzc2lvblwiXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uIC0+IFwiU3Ryb25nIGNvbXByZXNzaW9uXCJcbiAgfCBJdGVyYXRpb24gaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSXRlcmF0aW9uICVpXCIgaW50XG4gIHwgU3RvcnkgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU3RvcnkgJWlcIiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiAtPiBcIlBhcnRpYWwgb3JkZXIgcmVkdWN0aW9uXCJcbiAgfCBTaXBob25fZGV0ZWN0aW9uIC0+IFwiRGV0ZWN0aW9uIG9mIHNpcGhvbnNcIlxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIC0+IFwiU3BsaXR0aW5nIGluaXRpYWwgc3RhdGVzXCJcbiAgfCBBZ2VudF9pZHNfZGlzYW1iaWd1YXRpb24gLT4gXCJSZW5hbWluZyBhZ2VudHMgdG8gYXZvaWQgY29uZmxpY3RzXCJcbiAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiAtPiBcIkRlbGV0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUgLT5cbiAgICBcIlJlbW92aW5nIGV2ZW50cyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlc1wiXG4gIHwgQ29tcHJlc3Npb24gLT4gXCJDb21wcmVzc2lvblwiXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlIC0+IFwiVHJhbnNpdGl2ZSBjbG9zdXJlXCJcbiAgfCBCdWlsZF9ncmlkIC0+IFwiR3JpZCBjb21wdXRhdGlvblwiXG4gIHwgR3JhcGhfcmVkdWN0aW9uIC0+IFwiVHJhbnNpdGl2ZSByZWR1Y3Rpb25cIlxuICB8IEdyYXBoX2NvbnZlcnNpb24gLT4gXCJHcmFwaCBjb252ZXJzaW9uXCJcbiAgfCBDYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIC0+IFwiQ29tcHV0aW5nIHRoZSBjYW5ub25pYyBmb3JtXCJcbiAgfCBTdG9yZV90cmFjZSAtPiBcIlN0b3JlIHRyYWNlXCJcbiAgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgLT4gXCJSZW1vdmluZyBibGFjay1saXN0ZWQgZXZlbnRzXCJcbiAgfCBCbGFja2xpc3RpbmdfZXZlbnRzIC0+IFwiQmxha2xpc3RpbmcgZXZlbnRzXCJcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gLT4gXCJHbG9iYWwgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb24gLT4gXCJEb21haW5zIGluaXRpYWxpemF0aW9uXCJcbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJEb21haW4gaW5pdGlhbGl6YXRpb24gKCVzKVwiIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiQXBwbHkgcnVsZSAlaVwiIGludFxuICB8IEluaXRpYWxfc3RhdGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSW5pdGlhbCBzdGF0ZSAlaVwiIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChzdGF0aWMpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChkeW5hbWljKVwiIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlcyAtPiBQcmludGYuc3ByaW50ZiBcIlJlZ3VsYXIgaW5mbHVlbmNlcyBjb21wdXRhdGlvblwiXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIlNpZGUtZWZmZWN0cyBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBNZXJnZV9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiTWVyZ2luZyBpbmZsdWVuY2VzXCJcbiAgfCBLYVNpbV9jb21waWxhdGlvbiAtPiBQcmludGYuc3ByaW50ZiBcIkthU2ltIGZyb250ZW5kXCJcbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBwcmVjb21waWxhdGlvblwiXG4gIHwgS2FTYV9sZXhpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExleGluZ1wiXG4gIHwgS2FTYV9saW5raW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBMaW5raW5nXCJcbiAgfCBJbmZsdWVuY2VfbWFwIHN0cmluZyAtPiBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKCVzKVwiIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJJbmZsdWVuY2UgbWFwIChpbnRlcm5hbCAlcylcIiBzdHJpbmdcbiAgfCBMS2FwcGFfc2lnbmF0dXJlIC0+IFByaW50Zi5zcHJpbnRmIFwiTEthcHBhIHNpZ25hdHVyZVwiXG5cbmxldCBwcmludF9zdGVwX2tpbmQgcGFyYW1ldGVycyB4ID1cbiAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcnMpXG4gICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgeClcblxubW9kdWxlIHR5cGUgU3RvcnlTdGF0cyA9IHNpZ1xuICB0eXBlIGxvZ19pbmZvXG5cbiAgdmFsIGluY19yZW1vdmVkX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfc2VsZWN0ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGxvZ19pbmZvX3RvX2pzb24gOiBsb2dfaW5mbyAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgbG9nX2luZm9fb2ZfanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfa19jdXRfZXZlbnRzIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2thc2ltX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9pbml0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9zaWRlX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9vYnNfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19icmFuY2ggOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2N1dCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9sb2cgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZHVtcF9jb21wbGV0ZV9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGR1bXBfc2hvcnRfbG9nIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBsb2dfaW5mbyAtPiB1bml0XG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV91cCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfdXBfY2FzZSA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfZG93bl9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBjb3B5IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGlzX2R1bW15IDogc3RlcF9raW5kIC0+IGJvb2xcblxuICB2YWwgYWRkX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGFkZF9ldmVudF9vcHQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgb3B0aW9uIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgc2V0X3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0ZXBfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ2xvYmFsX2N1dCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3BzZXVkb19pbnYgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9zdGFydF9jb21wcmVzc2lvbiA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ3JpZF9nZW5lcmF0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jYW5vbmljYWxpc2F0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbl90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgOiBsb2dfaW5mbyAtPiBmbG9hdFxuICB2YWwgZWxsYXBzZWRfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBpbml0X2xvZ19pbmZvIDogdW5pdCAtPiBsb2dfaW5mb1xuICB2YWwgdGljayA6IGxvZ19pbmZvIC0+IGJvb2wgKiBsb2dfaW5mb1xuICB2YWwgY2xvc2VfbG9nZ2VyIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB1bml0XG4gIHZhbCBmbHVzaF9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgU3RvcnlTdGF0cyA6IFN0b3J5U3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSBzdGFja19oZWFkID0ge1xuICAgIGN1cnJlbnRfYnJhbmNoOiBpbnQ7XG4gICAgc2VsZWN0ZWRfZXZlbnRzOiBpbnQ7XG4gICAgcmVtYWluaW5nX2V2ZW50czogaW50O1xuICAgIHJlbW92ZWRfZXZlbnRzOiBpbnQ7XG4gICAgc3RhY2tfc2l6ZTogaW50O1xuICB9XG5cbiAgdHlwZSBzdGVwID0ge1xuICAgIHRhZzogc3RlcF9raW5kO1xuICAgIHNpemVfYmVmb3JlOiBpbnQgb3B0aW9uO1xuICAgIHNpemVfYWZ0ZXI6IGludCBvcHRpb247XG4gICAgdGltZV9zdGFydDogZmxvYXQ7XG4gICAgZHVyYXRpb246IGZsb2F0IG9wdGlvbjtcbiAgICBkZXB0aDogaW50O1xuICB9XG5cbiAgbGV0IGtfZmlyc3QgX3BhcmFtZXRlciBrIGwgPVxuICAgIGxldCByZWMgYXV4IGsgbCBvdXRwdXQgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBbXSwgTGlzdC5yZXYgb3V0cHV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAoIChsZXQgcmVjIGF1eCBrIG91dHB1dCA9XG4gICAgICAgICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhdXggKGsgLSAxKSAoXCJcIiA6OiBvdXRwdXQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBhdXggayBbXSksXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXQgKVxuICAgICAgICB8IHQgOjogcSAtPiBhdXggKGsgLSAxKSBxICh0IDo6IG91dHB1dClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBrIGwgW11cblxuICBsZXQgcHJpbnRfdGFzayBwYXJhbWV0ZXIgKGEsIGIpID1cbiAgICBsZXQgXyA9IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIgYS50YWcgaW5cbiAgICBsZXQgdGFiLCBiID0ga19maXJzdCBwYXJhbWV0ZXIgNCBiIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIpIGIgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKExvZ2dlcnMucHJpbnRfY2VsbCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSlcbiAgICAgICAgdGFiXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9iZWZvcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaSAtPiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5kdXJhdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB0aW1lIC0+IHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgY2xvc2VfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5jbG9zZV9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICBsZXQgZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICB0eXBlIGxvZ19pbmZvID0ge1xuICAgIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdGVwX3RpbWU6IGZsb2F0O1xuICAgIGN1cnJlbnRfdGFzazogc3RlcCBsaXN0O1xuICAgIG5leHRfZGVwdGg6IGludDtcbiAgICBicmFuY2g6IGludDtcbiAgICBjdXQ6IGludDtcbiAgICBzdGFjazogc3RhY2tfaGVhZCBsaXN0O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrX2hlYWQ7XG4gICAgcHJvcGFnYXRpb246IGludCBhcnJheTtcbiAgICBsYXN0X3RpY2s6IGZsb2F0O1xuICB9XG5cbiAgbGV0IGlzX2R1bW15IHN0ZXBfa2luZCA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IER1bW15IC0+IHRydWVcbiAgICB8IEJlZ2lubmluZyB8IENvbGxlY3RfdHJhY2VzIHwgQ2F1c2FsX2NvbXByZXNzaW9uIHwgV2Vha19jb21wcmVzc2lvblxuICAgIHwgU3Ryb25nX2NvbXByZXNzaW9uIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24gfCBTaXBob25fZGV0ZWN0aW9uXG4gICAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICAgIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb24gfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICAgIHwgQ29tcHJlc3Npb24gfCBCdWlsZF9ncmlkIHwgQnVpbGRfY29uZmlndXJhdGlvbiB8IFRyYW5zaXRpdmVfY2xvc3VyZVxuICAgIHwgR3JhcGhfcmVkdWN0aW9uIHwgR3JhcGhfY29udmVyc2lvbiB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgICB8IFN0b3JlX3RyYWNlIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICAgIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICAgIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgfCBNZXJnZV9pbmZsdWVuY2VzIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgICB8IEthU2FfcHJlY29tcGlsYXRpb24gfCBLYVNhX2xleGluZyB8IEthU2FfbGlua2luZyB8IExLYXBwYV9zaWduYXR1cmVcbiAgICB8IEl0ZXJhdGlvbiBfIHwgU3RvcnkgXyB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBfIHwgQXBwbHlfcnVsZSBfXG4gICAgfCBJbml0aWFsX3N0YXRlIF8gfCBTY2FuX3J1bGVfc3RhdGljIF8gfCBTY2FuX3J1bGVfZHluYW1pYyBfXG4gICAgfCBJbmZsdWVuY2VfbWFwIF8gfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IGFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBhZGRfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gYWRkX2V2ZW50XCIpICgpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgbGV0IHRhc2sgPVxuICAgICAgICB7XG4gICAgICAgICAgdGFnID0gc3RlcF9raW5kO1xuICAgICAgICAgIHNpemVfYmVmb3JlID1cbiAgICAgICAgICAgIChtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKSk7XG4gICAgICAgICAgc2l6ZV9hZnRlciA9IE5vbmU7XG4gICAgICAgICAgdGltZV9zdGFydCA9IFN5cy50aW1lICgpO1xuICAgICAgICAgIGR1cmF0aW9uID0gTm9uZTtcbiAgICAgICAgICBkZXB0aCA9IG5leHRfZGVwdGg7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIFwiU3RhcnRcIlxuICAgICAgaW5cbiAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgbG9nX2luZm8uY3VycmVudF90YXNrKVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIGluXG4gICAgICBsZXQgXyA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlclxuICAgICAgICAgIChzdHJpbmdfb2Zfc3RlcF9raW5kIHN0ZXBfa2luZClcbiAgICAgIGluXG4gICAgICBsZXQgY3VycmVudF90YXNrID0gdGFzayA6OiBsb2dfaW5mby5jdXJyZW50X3Rhc2sgaW5cbiAgICAgIGVycm9yLCB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggKyAxOyBjdXJyZW50X3Rhc2sgfVxuICAgIClcblxuICBsZXQgY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBpZiBpc19kdW1teSBzdGVwX2tpbmQgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgY2xvc2VfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgaW50ZXJydXB0ZWQgPVxuICAgICAgICBsZXQgbmV4dF9kZXB0aCA9IGxvZ19pbmZvLm5leHRfZGVwdGggaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgbmV4dF9kZXB0aCA9IDEgdGhlblxuICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBkZXB0aCBzaG91bGQgbm90IGJlIGVxdWFsIFxcXG4gICAgICAgICAgICAgICAgIHRvIDEgd2hlbiBjbG9zaW5nIGFuIGV2ZW50XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmUgXCJEZXB0aD0xIGluIGNsb3NlX2V2ZW50XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGxvZ19pbmZvLmN1cnJlbnRfdGFzayB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgbm8gY3VycmVudCB0YXNrIHdoZW4gXFxcbiAgICAgICAgICAgICAgIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJObyBjdXJyZW50IHRhc2tzIGluIGNsb3NlX2V2ZW50XCIpIGxvZ19pbmZvXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgd2hlbiBjdXJyZW50X3Rhc2sudGFnID0gc3RlcF9raW5kIC0+XG4gICAgICAgICAgbGV0IHNpemVfYWZ0ZXIgPVxuICAgICAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgLS4gY3VycmVudF90YXNrLnRpbWVfc3RhcnQgaW5cbiAgICAgICAgICBsZXQgdGFzayA9IHsgY3VycmVudF90YXNrIHdpdGggc2l6ZV9hZnRlcjsgZHVyYXRpb24gPSBTb21lIHRpbWUgfSBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgdGFzaywgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LnRhZykgKExpc3QucmV2IHRhaWwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAoaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgICAgICAgICBcIkludGVycnVwdGVkXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgXCJFbmRcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3Rhc2sgcGFyYW1ldGVyIHRlcm1pbmF0ZWRfdGFzayBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmNsb3NlX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH0gKVxuICAgICAgICB8IGN1cnJlbnRfdGFzayA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgY3VycmVudF90YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgYXV4XG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH1cbiAgICAgICAgICAgIGVycm9yIHRydWVcbiAgICAgIGluXG4gICAgICBhdXggbG9nX2luZm8gZXJyb3IgZmFsc2VcbiAgICApXG5cbiAgbGV0IGdlbl9vcHQgZ2VuIHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT4gZ2VuIHBhcmFtZXRlciBlcnJvciBlIGYgbG9nX2luZm9cblxuICBsZXQgYWRkX2V2ZW50X29wdCA9IGdlbl9vcHQgYWRkX2V2ZW50XG4gIGxldCBjbG9zZV9ldmVudF9vcHQgPSBnZW5fb3B0IGNsb3NlX2V2ZW50XG5cbiAgbGV0IHByb3BhZ2F0aW9uX2xhYmVscyA9XG4gICAgW3xcbiAgICAgIFwiTm9uZVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDIgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAzIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDUgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA2IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNyBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDggXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA5IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDExXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMlwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTNcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE0XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTZcIjtcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEgXCI7XG4gICAgICAoKjE3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDIgXCI7XG4gICAgICAoKjE4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDMgXCI7XG4gICAgICAoKjE5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDQgXCI7XG4gICAgICAoKjIwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDUgXCI7XG4gICAgICAoKjIxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDYgXCI7XG4gICAgICAoKjIyKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDcgXCI7XG4gICAgICAoKjIzKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDggXCI7XG4gICAgICAoKjI0KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDkgXCI7XG4gICAgICAoKjI1KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEwXCI7XG4gICAgICAoKjI2KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDExXCI7XG4gICAgICAoKjI3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEyXCI7XG4gICAgICAoKjI4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEzXCI7XG4gICAgICAoKjI5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE0XCI7XG4gICAgICAoKjMwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE1XCI7XG4gICAgICAoKjMxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE2XCI7XG4gICAgICAoKjMyKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAxXCI7XG4gICAgICAoKjMzKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAyXCI7XG4gICAgICAoKjM0KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAzXCI7XG4gICAgICAoKjM1KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICA0XCI7XG4gICAgICAoKjM2KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAxXCI7XG4gICAgICAoKjM3KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAyXCI7XG4gICAgICAoKjM4KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAzXCI7XG4gICAgICAoKjM5KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICA0XCI7XG4gICAgICAoKjQwKilcbiAgICB8XVxuXG4gIGxldCBwcm9wYWdhdGlvbl9jYXNlcyA9IEFycmF5Lmxlbmd0aCBwcm9wYWdhdGlvbl9sYWJlbHNcblxuICBsZXQgY29weSBsb2dfaW5mbyA9XG4gICAgeyBsb2dfaW5mbyB3aXRoIHByb3BhZ2F0aW9uID0gQXJyYXkuY29weSBsb2dfaW5mby5wcm9wYWdhdGlvbiB9XG5cbiAgbGV0IGluaXRfbG9nX2luZm8gKCkgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB7XG4gICAgICBuZXh0X2RlcHRoID0gMTtcbiAgICAgIGdsb2JhbF90aW1lID0gdGltZTtcbiAgICAgIHN0b3J5X3RpbWUgPSB0aW1lO1xuICAgICAgc3RlcF90aW1lID0gdGltZTtcbiAgICAgIGN1cnJlbnRfdGFzayA9IFtdO1xuICAgICAgcHJvcGFnYXRpb24gPSBBcnJheS5tYWtlIHByb3BhZ2F0aW9uX2Nhc2VzIDA7XG4gICAgICBicmFuY2ggPSAwO1xuICAgICAgY3V0ID0gMDtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSAwO1xuICAgICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtYWluaW5nX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtb3ZlZF9ldmVudHMgPSAwO1xuICAgICAgICAgIHN0YWNrX3NpemUgPSAwO1xuICAgICAgICB9O1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICAgIGxhc3RfdGljayA9IDAuO1xuICAgIH1cblxuICBsZXQgbG9nX2luZm9fdG9fanNvbiBsb2dfaW5mbyA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZ2xvYmFsX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLmdsb2JhbF90aW1lO1xuICAgICAgICBcInN0b3J5X3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIFwic3RlcF90aW1lXCIsIGBGbG9hdCBsb2dfaW5mby5zdGVwX3RpbWU7XG4gICAgICAgIFwibmV4dF9kZXB0aFwiLCBgSW50IGxvZ19pbmZvLm5leHRfZGVwdGg7XG4gICAgICAgIFwiYnJhbmNoXCIsIGBJbnQgbG9nX2luZm8uYnJhbmNoO1xuICAgICAgICBcImN1dFwiLCBgSW50IGxvZ19pbmZvLmN1dDtcbiAgICAgIF1cblxuICBsZXQgZmxvYXRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgRmxvYXQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBJbnQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGxvZ19pbmZvX29mX2pzb24geCA9XG4gICAgbGV0IGluaXQgPSBpbml0X2xvZ19pbmZvICgpIGluXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGluaXQgd2l0aFxuICAgICAgICAgICBnbG9iYWxfdGltZSA9IGZsb2F0X29mX2pzb24gKExpc3QuYXNzb2MgXCJnbG9iYWxfdGltZVwiIGwpO1xuICAgICAgICAgICBzdG9yeV90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5X3RpbWVcIiBsKTtcbiAgICAgICAgICAgc3RlcF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0ZXBfdGltZVwiIGwpO1xuICAgICAgICAgICBuZXh0X2RlcHRoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJuZXh0X2RlcHRoXCIgbCk7XG4gICAgICAgICAgIGJyYW5jaCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiYnJhbmNoXCIgbCk7XG4gICAgICAgICAgIGN1dCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3V0XCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGxvZ19pbmZvXCIsIHgpKVxuXG4gIGxldCBkdW1wX3Nob3J0X2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiUmVtYWluaW5nIGV2ZW50czogJWkgOyBTdGFjayBzaXplOiAlaSA7IFwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2sucmVtYWluaW5nX2V2ZW50c1xuICAgICAgICBsb2dfaW5mby5jdXJyZW50X3N0YWNrLnN0YWNrX3NpemVcbiAgICBpblxuICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgXCJUb3RhbCBicmFuY2g6ICVpIDsgVG90YWwgY3V0OiAlaSA7IEN1cnJlbnQgZGVwdGg6ICVpIEAuXCIgbG9nX2luZm8uYnJhbmNoXG4gICAgICBsb2dfaW5mby5jdXQgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuXG4gIGxldCByZXNldF9sb2cgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gQXJyYXkuZmlsbCB0IDAgKEFycmF5Lmxlbmd0aCB0KSAwIGluXG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHsgbG9nIHdpdGggc3RlcF90aW1lID0gdGltZTsgc3RvcnlfdGltZSA9IHRpbWUgfVxuXG4gIGxldCBwcm9wYWdhdGVfdXAgaSA9IGlcbiAgbGV0IHByb3BhZ2F0ZV9kb3duIGkgPSBpICsgMTZcbiAgbGV0IGxvb2tfdXAgaSA9IGkgKyAzMlxuICBsZXQgbG9va19kb3duIGkgPSBpICsgMzZcblxuICBsZXQgZWxsYXBzZWRfdGltZSBsb2cgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB0aW1lIC0uIGxvZy5zdG9yeV90aW1lXG5cbiAgbGV0IGVsbGFwc2VkX2dsb2JhbF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLmdsb2JhbF90aW1lXG5cbiAgbGV0IHNldF90aW1lIGxvZyA9XG4gICAgeyBsb2cgd2l0aCBzdG9yeV90aW1lID0gU3lzLnRpbWUgKCk7IHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cblxuICBsZXQgc2V0X3N0ZXBfdGltZSBsb2cgPSB7IGxvZyB3aXRoIHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cbiAgbGV0IHNldF9zdGFydF9jb21wcmVzc2lvbiA9IHNldF90aW1lXG5cbiAgbGV0IHNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZyA9XG4gICAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBzdCA9IGxvZy5zdGVwX3RpbWUgaW5cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSB0IC0uIHN0OyBzdGVwX3RpbWUgPSB0IH1cblxuICBsZXQgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2dyaWRfZ2VuZXJhdGlvbiBsb2cgPSBsb2dcbiAgbGV0IHNldF9jYW5vbmljYWxpc2F0aW9uIGxvZyA9IGxvZ1xuXG4gIGxldCBhZGRfY2FzZSBpIGxvZyA9XG4gICAgbGV0IHQgPSBsb2cucHJvcGFnYXRpb24gaW5cbiAgICBsZXQgXyA9IHQuKGkpIDwtIHQuKGkpICsgMSBpblxuICAgIGxvZ1xuXG4gIGxldCBhZGRfbG9va19kb3duX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX2Rvd24gaSlcbiAgbGV0IGFkZF9sb29rX3VwX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX3VwIGkpXG4gIGxldCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX2Rvd24gaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX3VwIGkpXG5cbiAgbGV0IGluY19jdXQgbG9nID1cbiAgICBtYXRjaCBsb2cuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gbG9nXG4gICAgfCB0IDo6IHEgLT4geyBsb2cgd2l0aCBjdXJyZW50X3N0YWNrID0gdDsgc3RhY2sgPSBxOyBjdXQgPSBsb2cuY3V0ICsgMSB9XG5cbiAgbGV0IGluY19icmFuY2ggbG9nID1cbiAgICB7XG4gICAgICBsb2cgd2l0aFxuICAgICAgc3RhY2sgPSBsb2cuY3VycmVudF9zdGFjayA6OiBsb2cuc3RhY2s7XG4gICAgICBicmFuY2ggPSBsb2cuYnJhbmNoICsgMTtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgbG9nLmN1cnJlbnRfc3RhY2sgd2l0aFxuICAgICAgICAgIGN1cnJlbnRfYnJhbmNoID0gbG9nLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2ggKyAxO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgaW5jX25fa2FzaW1fZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fb2JzX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19uX3NpZGVfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25faW5pdF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfY3V0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19rX2N1dF9ldmVudHMgX2sgbG9nID0gbG9nXG4gIGxldCByZXNldF9jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19yZW1vdmVkX2V2ZW50cyBsb2cgPSBsb2dcblxuICBsZXQgZHVtcF9jb21wbGV0ZV9sb2cgcGFyYW1ldGVyIGxvZ19pbmZvID1cbiAgICBsZXQgbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiLypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiU3RvcnkgcHJvZmlsaW5nXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFbGxhcHNlZF90aW1lOiAgICAgICAgICAgICAgICAgICVmXCJcbiAgICAgICAgKGVsbGFwc2VkX3RpbWUgbG9nX2luZm8pXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSByZXNlYXJjaCB0aW1lOiAgICAgICAgICAgICVmXCJcbiAgICAgICAgbG9nX2luZm8uc3RvcnlfdGltZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gZGVwdGg6ICAgICAgICAgICAgICAlaVwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2hcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkV4cGxvcmF0aW9uIGN1dHM6ICAgICAgICAgICAgICAgJWlcIiBsb2dfaW5mby5jdXRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlByb3BhZ2F0aW9uIEhpdHM6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID49IHByb3BhZ2F0aW9uX2Nhc2VzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiICAgICAgICAlcyAlaVwiIHByb3BhZ2F0aW9uX2xhYmVscy4oaylcbiAgICAgICAgICAgICAgbG9nX2luZm8ucHJvcGFnYXRpb24uKGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChrICsgMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBfID0gYXV4IDEgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKi9cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuXG4gIGxldCB0aWNrIGxvZ19pbmZvID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgaWYgdGltZSAtLiBsb2dfaW5mby5sYXN0X3RpY2sgPiA2MDAuIHRoZW5cbiAgICAgIHRydWUsIHsgbG9nX2luZm8gd2l0aCBsYXN0X3RpY2sgPSB0aW1lIH1cbiAgICBlbHNlXG4gICAgICBmYWxzZSwgbG9nX2luZm9cblxuICBsZXQgc2V0X2dsb2JhbF9jdXQgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuICBsZXQgc2V0X3BzZXVkb19pbnYgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuZW5kXG4iLCIoKipcbiAgIFRpbWUtc3RhbXA6IDxGZWIgMjIgMjAxOD5cbiopXG5cbm1vZHVsZSB0eXBlIFNldF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgYWRkX3doZW5fbm90X2luIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcmVtb3ZlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgbWludXMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlzam9pbnRfdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgaW50ZXIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlmZiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBjYXJkaW5hbCA6IHQgLT4gaW50XG4gIHZhbCBtZW0gOiBlbHQgLT4gdCAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgdmFsIGZvcl9hbGwgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgcGFydGl0aW9uIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXBfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGZpbmRfZGVmYXVsdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmVfb3Jfbm90IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdXBkYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIG1hcDIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MgdFxuXG4gIHZhbCBtYXAyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBmb2xkMnogOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBmb2xkMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0ICogJ2EgdFxuXG4gIHZhbCBkaWZmX3ByZWQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIG1lcmdlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHVuaW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgKGVsdCAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICBzZXQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG4gIHZhbCBpdGVyIDogKGVsdCAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgaXRlcjIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGZvbGQgOiAoZWx0IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gIHZhbCBtYXBpIDogKGVsdCAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXRfd2l0aF9sb2dzIHdpdGggdHlwZSBlbHQgPSBlbHRcbiAgbW9kdWxlIE1hcCA6IE1hcF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmxldCBsaWZ0IGYgPSBmIEV4Y2VwdGlvbi53cmFwXG5cbm1vZHVsZSBNYWtlIChTX2JvdGggOiBTZXRNYXAuUykgOlxuICBTX3dpdGhfbG9nc1xuICAgIHdpdGggdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgIGFuZCB0eXBlICdhIE1hcC50ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgIGFuZCB0eXBlIFNldC50ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuXG4gIG1vZHVsZSBTZXQgOlxuICAgIFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHQgYW5kIHR5cGUgdCA9IFNfYm90aC5TZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgdCA9IFNfYm90aC5TZXQudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLlNldC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5TZXQuaXNfZW1wdHlcbiAgICBsZXQgc2luZ2xldG9uID0gU19ib3RoLlNldC5zaW5nbGV0b25cbiAgICBsZXQgaXNfc2luZ2xldG9uID0gU19ib3RoLlNldC5pc19zaW5nbGV0b25cbiAgICBsZXQgYWRkID0gbGlmdCBTX2JvdGguU2V0LmFkZF93aXRoX2xvZ3NcblxuICAgIGxldCBhZGRfd2hlbl9ub3RfaW4gcCBlIHggcyA9XG4gICAgICBsZXQgZSwgXywgcyA9IChsaWZ0IFNfYm90aC5TZXQuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzKSBwIGUgeCBzIGluXG4gICAgICBlLCBzXG5cbiAgICBsZXQgcmVtb3ZlID0gbGlmdCBTX2JvdGguU2V0LnJlbW92ZV93aXRoX2xvZ3NcbiAgICBsZXQgdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQudW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uID0gbGlmdCBTX2JvdGguU2V0LmRpc2pvaW50X3VuaW9uX3dpdGhfbG9nc1xuICAgIGxldCBpbnRlciA9IGxpZnQgU19ib3RoLlNldC5pbnRlcl93aXRoX2xvZ3NcbiAgICBsZXQgZGlmZiA9IGxpZnQgU19ib3RoLlNldC5kaWZmX3dpdGhfbG9nc1xuICAgIGxldCBtaW51cyA9IGxpZnQgU19ib3RoLlNldC5taW51c193aXRoX2xvZ3NcbiAgICBsZXQgY2FyZGluYWwgPSBTX2JvdGguU2V0LnNpemVcbiAgICBsZXQgbWVtID0gU19ib3RoLlNldC5tZW1cbiAgICBsZXQgZXhpc3RzID0gU19ib3RoLlNldC5leGlzdHNcbiAgICBsZXQgZmlsdGVyID0gU19ib3RoLlNldC5maWx0ZXJcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5TZXQuZm9yX2FsbFxuICAgIGxldCBwYXJ0aXRpb24gPSBTX2JvdGguU2V0LnBhcnRpdGlvblxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLlNldC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLlNldC5lcXVhbFxuICAgIGxldCBzdWJzZXQgPSBTX2JvdGguU2V0LnN1YnNldFxuICAgIGxldCBpdGVyID0gU19ib3RoLlNldC5pdGVyXG4gICAgbGV0IGZvbGQgPSBTX2JvdGguU2V0LmZvbGRcbiAgICBsZXQgZm9sZF9pbnYgPSBTX2JvdGguU2V0LmZvbGRfaW52XG4gICAgbGV0IGVsZW1lbnRzID0gU19ib3RoLlNldC5lbGVtZW50c1xuICAgIGxldCBjaG9vc2UgPSBTX2JvdGguU2V0LmNob29zZVxuICAgIGxldCBtaW5fZWx0ID0gU19ib3RoLlNldC5taW5fZWx0XG4gICAgbGV0IG1heF9lbHQgPSBTX2JvdGguU2V0Lm1heF9lbHRcbiAgZW5kXG5cbiAgbW9kdWxlIE1hcCA6XG4gICAgTWFwX3dpdGhfbG9nc1xuICAgICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgICBhbmQgdHlwZSAnYSB0ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU2V0LnQgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICB0eXBlIHNldCA9IFNfYm90aC5TZXQudFxuICAgIHR5cGUgKydkYXRhIHQgPSAnZGF0YSBTX2JvdGguTWFwLnRcblxuICAgIGxldCBlbXB0eSA9IFNfYm90aC5NYXAuZW1wdHlcbiAgICBsZXQgaXNfZW1wdHkgPSBTX2JvdGguTWFwLmlzX2VtcHR5XG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguTWFwLm1pbl9lbHRcbiAgICBsZXQgbWVtID0gU19ib3RoLk1hcC5tZW1cbiAgICBsZXQgZmluZF9vcHRpb24gYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX29wdGlvbl93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX2RlZmF1bHRfd2l0aF9sb2dzIGEgYiBjIGRcbiAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIF9hIGIgYyBkID0gYiwgU19ib3RoLk1hcC5maW5kX29wdGlvbiBjIGRcbiAgICBsZXQgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBfYSBiIGMgZCBlID0gYiwgU19ib3RoLk1hcC5maW5kX2RlZmF1bHQgYyBkIGVcbiAgICBsZXQgYWRkIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAuYWRkX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBjIGQgZSA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIGxpZnQgU19ib3RoLk1hcC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgcGFyYW1ldGVyIGVycm9yIGMgZCBlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIG92ZXJ3cml0ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIilcbiAgICAgICAgICBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgYSBiIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBhIGIgYyBkIGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgcmVtb3ZlIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgcmVtb3ZlX29yX25vdCBhIGIgYyBkID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLnJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSBhIGIgYyBkXG4gICAgICBpblxuICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IHVwZGF0ZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51cGRhdGVfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1hcDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMnogYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBtYXBmIG1hcGcgPVxuICAgICAgZnN0XG4gICAgICAgIChTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBFeGNlcHRpb24ud3JhcCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGYgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCAoKSAtPiBnIGEgYiBjIGQsICgpKVxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgZSAoKSAtPiBoIGEgYiBjIGQgZSwgKCkpXG4gICAgICAgICAgIG1hcGYgbWFwZyAoKSlcblxuICAgIGxldCBmb2xkMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBpdGVyMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBkaWZmIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmZfcHJlZCBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5kaWZmX3ByZWRfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1lcmdlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLm1lcmdlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCB1bmlvbiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51bmlvbl93aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyBhIGIgYyA9XG4gICAgICBsaWZ0IFNfYm90aC5NYXAuZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguTWFwLml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5NYXAuZm9sZFxuICAgIGxldCBtYXBpID0gU19ib3RoLk1hcC5tYXBpXG4gICAgbGV0IG1hcCA9IFNfYm90aC5NYXAubWFwXG4gICAgbGV0IGZvcl9hbGwgPSBTX2JvdGguTWFwLmZvcl9hbGxcbiAgICBsZXQgZmlsdGVyX29uZSA9IFNfYm90aC5NYXAuZmlsdGVyX29uZVxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLk1hcC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLk1hcC5lcXVhbFxuICAgIGxldCBiaW5kaW5ncyA9IFNfYm90aC5NYXAuYmluZGluZ3NcbiAgICBsZXQgdG9fanNvbiA9IFNfYm90aC5NYXAudG9fanNvblxuICAgIGxldCBvZl9qc29uID0gU19ib3RoLk1hcC5vZl9qc29uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwIDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwX2kgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgZWx0X2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcGFydGl0aW9uX3NldCA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2ogKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uXG4gICAgd2l0aCB0eXBlIGVsdF9hID0gQS5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2IgPSBCLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlIHNldF9hID0gQS5TZXQudFxuICAgICBhbmQgdHlwZSBzZXRfYiA9IEIuU2V0LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iXG4gICAgICAgICAgICAobWVyZ2UgaWRlbnRpdHlfZWx0IGRhdGFfYSlcbiAgICAgICAgICAgIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgKG1lcmdlIG9sZCBkYXRhX2EpIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXBfaSBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYSBkYXRhX2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3Igb2xkIGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdFxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3Igb2xkIF8gZGF0YV9hIC0+IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQgZGF0YV9hKVxuICAgICAgbWFwXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAoU0Euc2luZ2xldG9uIGtleV9hKSBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3c2V0ID0gU0EuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBuZXdzZXQgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wYXJ0aXRpb25fc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldCA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gZXJyb3IsIFNBLnNpbmdsZXRvbiBrZXlfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IFNBLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Egb2xkIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgU0IuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciAoZiBrZXlfYSkgc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgc2V0X2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIGtleV9iIHNldF9iKVxuICAgICAgc2V0X2EgKGVycm9yLCBTQi5lbXB0eSlcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnbXZiZHVfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnbXZiZHVfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2oyIChBIDogU193aXRoX2xvZ3MpIChCIDogU193aXRoX2xvZ3MpIChDIDogU193aXRoX2xvZ3MpIDpcbiAgUHJvamVjdGlvbjJcbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9jID0gQy5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2EgPSAnYSBBLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9iID0gJ2EgQi5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYyA9ICdhIEMuTWFwLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUIuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdWJtYXAgPVxuICAgICAgICAgIE1DLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgZmluZF9kZWZhdWx0IGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJvajJfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBoYW5kbGVyIE1DLmVtcHR5IGtleV9iIG1hcF9iXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgaWRlbnRpdHlfZWx0IGtleV9jXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGZpbmRfZGVmYXVsdCBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIHN1Ym1hcCA9IE1DLmFkZCBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYyBkYXRhJyBzdWJtYXAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGFkZCA9XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYiBzdWJtYXAgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgYWRkKVxuICAgICAgbWFwXG4gICAgICAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgTUIuZW1wdHkpXG5lbmRcbiIsIigqKlxuICAqIGZpZm8ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMjd0aCBvZiBKdWx5XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMDYgMjAxNj5cbiAgKlxuICAqIFdvcmsgbGlzdCAtIEZJRk9cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFNldE1hcFxuXG5sZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBXb3JrX2xpc3QgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICB2YWwgcHVzaCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHBvcCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoZWx0IG9wdGlvbiAqIHQpXG5cbiAgdmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBlbHQgLT4gJ2EpIC0+ICdhIC0+IHQgLT4gJ2FcbiAgdmFsIHByaW50X3dsIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgV2xNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSB3aXRoIHR5cGUgdCA9IGludCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdTZXRNYXAgPSBNYXBfd3JhcHBlci5NYWtlIChTZXRNYXAuTWFrZSAoT3JkKSlcbiAgbW9kdWxlIFdTZXQgPSBXU2V0TWFwLlNldFxuXG4gIHR5cGUgZWx0ID0gT3JkLnRcbiAgdHlwZSB0ID0gZWx0IGxpc3QgKiBlbHQgbGlzdCAqIFdTZXQudFxuXG4gIGxldCBlbXB0eSA9IFtdLCBbXSwgV1NldC5lbXB0eVxuXG4gIGxldCBpc19lbXB0eSB4ID1cbiAgICBsZXQgXywgXywgcG9vbCA9IHggaW5cbiAgICBXU2V0LmlzX2VtcHR5IHBvb2xcblxuICBsZXQgcHVzaCBwYXJhbWV0ZXIgZXJyb3IgZSB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgV1NldC5tZW0gZSBwb29sIHRoZW5cbiAgICAgIGVycm9yLCB4XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3InLCBhZGRfZWx0ID0gV1NldC5hZGQgcGFyYW1ldGVyIGVycm9yIGUgcG9vbCBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRXhjZXB0aW9uLmNoZWNrX3BvaW50IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgX19QT1NfXyBFeGl0XG4gICAgICBpblxuICAgICAgZXJyb3IsIChlIDo6IGluX2xpc3QsIG91dF9saXN0LCBhZGRfZWx0KVxuICAgIClcblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgXyA9IHggaW5cbiAgICBMaXN0LmZvbGRfbGVmdCBmIChMaXN0LmZvbGRfbGVmdCBmIGFjYyBvdXRfbGlzdCkgKExpc3QucmV2IGluX2xpc3QpXG5cbiAgbGV0IHByaW50X3dsIHBhcmFtZXRlcnMgd2wgPVxuICAgICgqbGV0IF8gPSBmb2xkX2xlZnRcbiAgICAgIChmdW4gICgpIGEgLT4gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXJzKSBcIiVpIFwiIGEpXG4gICAgICAoKSB3bFxuICAgICAgaW5cbiAgICAgICgqcHJpbnRfbmV3bGluZSgpKilcbiAgICAgIGxldCBfID0gcHJpbnRfbmV3bGluZSAoKSBpbiopXG4gICAgbGV0IF8sIF8sIHNldCA9IHdsIGluXG4gICAgV1NldC5pdGVyXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlaSBcIiBpKVxuICAgICAgc2V0O1xuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcblxuICBsZXQgcmVjIHBvcCBwYXJhbWV0ZXIgZXJyb3IgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgIGlmIGlzX2VtcHR5IHggdGhlblxuICAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgTGlzdC5yZXYgaW5fbGlzdCwgcG9vbClcbiAgICAgIHwgaCA6OiB0bCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHJlbW92ZV9lbHQgPSBXU2V0LnJlbW92ZSBwYXJhbWV0ZXIgZXJyb3IgaCBwb29sIGluXG4gICAgICAgIGVycm9yLCAoU29tZSBoLCAoaW5fbGlzdCwgdGwsIHJlbW92ZV9lbHQpKVxuICAgIClcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgICBpZiBpc19lbXB0eSB4XG4gICAgIHRoZW5cbiAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgICBlbHNlXG4gICAgIGJlZ2luXG4gICAgIG1hdGNoIG91dF9saXN0IHdpdGhcbiAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgKExpc3QucmV2IGluX2xpc3QpLCBwb29sKVxuICAgICB8IGggOjogdGwgLT5cbiAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpXG4gICAgIFwiQkVGT1JFIFJFTU9WRSAlaSBcIiBoIGluXG4gICAgIGxldCBfID0gIFdTZXQuaXRlciAoZnVuIGkgLT5cbiAgICAgUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpIFwiJWkgXCIgaSkgcG9vbCBpblxuICAgICBsZXQgZXJyb3IscmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSByZW1vdmVfZWx0XG4gICAgIGluXG4gICAgIGVycm9yLCAoKFNvbWUgaCksIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgIGVuZCopXG5cbiAgKCpmb3IgZGVidWcqKVxuICAoKmxldCBwdXNoIHAgZSBmIHggPVxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJCRUZPUkUgUFVVU0ggJWlcXG4gXCIgZiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB4IGluXG4gICAgbGV0IGVycm9yLHdsID0gcHVzaCBwIGUgZiB4IGluXG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHApIFwiT1VUUFVUXFxuXCIgaW5cbiAgICBsZXQgXyA9IHByaW50X3dsIHAgd2wgaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJcXG5cIiBpblxuICAgIGVycm9yLHdsICopXG5lbmRcblxubW9kdWxlIEludFdMID0gTW9kcy5JbnRNYXBcbiIsIigqKlxuICAgKiBpbnRfc3RvcmFnZS5tbFxuICAgKlxuICAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTAtMDctMjcgZmVyZXQ+XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXByIDEzIDIwMTg+XG4gICAqXG4gICAqIG9wZW5rYXBwYVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICpcbiAgICpcbiAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHN0b3JhZ2UgZnVuY3Rpb25zXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSBJbnN0aXR1dCBOYXRpb25hbFxuICAgKiBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLlxuICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxudHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZFxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICAnZCAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gICdlIC0+XG4gICdmIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdnXG5cbnR5cGUgJ2EgdW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbnR5cGUgKCdhLCAnYikgYmluYXJ5X25vX291dHB1dCA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG5tb2R1bGUgdHlwZSBTdG9yYWdlID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuXG4gIHZhbCBjcmVhdGUgOiAoZGltZW5zaW9uLCAnYSB0KSB1bmFyeVxuICB2YWwgY3JlYXRlX2JpZ2dlc3Rfa2V5IDogKGtleSwgJ2EgdCkgdW5hcnlcbiAgdmFsIGV4cGFuZF9hbmRfY29weSA6ICgnYSB0LCBkaW1lbnNpb24sICdhIHQpIGJpbmFyeVxuICB2YWwgaW5pdCA6IChkaW1lbnNpb24sIChrZXksICdhKSB1bmFyeSwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBzZXQgOiAoa2V5LCAnYSwgJ2EgdCwgJ2EgdCkgdGVybmFyeVxuICB2YWwgZnJlZSA6IChrZXksICdhIHQsICdhIHQpIGJpbmFyeVxuICB2YWwgZ2V0IDogKGtleSwgJ2EgdCwgJ2Egb3B0aW9uKSBiaW5hcnlcbiAgdmFsIHVuc2FmZV9nZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgZGltZW5zaW9uIDogKCdhIHQsIGRpbWVuc2lvbikgdW5hcnlcbiAgdmFsIHByaW50IDogKCdhIHVuYXJ5X25vX291dHB1dCwgJ2EgdCkgYmluYXJ5X25vX291dHB1dFxuICB2YWwga2V5X2xpc3QgOiAoJ2EgdCwga2V5IGxpc3QpIHVuYXJ5XG4gIHZhbCBpdGVyIDogKChrZXksICdhKSBiaW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuICB2YWwgZm9sZCA6ICgoa2V5LCAnYSwgJ2IsICdiKSB0ZXJuYXJ5LCAnYSB0LCAnYiwgJ2IpIHRlcm5hcnlcblxuICB2YWwgZm9sZDIgOlxuICAgICggKGtleSwgJ2EsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdiLCAnYywgJ2MpIHRlcm5hcnksXG4gICAgICAoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSxcbiAgICAgICdhIHQsXG4gICAgICAnYiB0LFxuICAgICAgJ2MsXG4gICAgICAnYyApXG4gICAgc2V4dGVybmFyeVxuXG4gIHZhbCBmb2xkMl9jb21tb24gOlxuICAgICgoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSwgJ2EgdCwgJ2IgdCwgJ2MsICdjKSBxdWF0ZXJuYXJ5XG5cbiAgdmFsIGZvcl9hbGwgOiAoKGtleSwgJ2EsIGJvb2wpIGJpbmFyeSwgJ2EgdCwgYm9vbCkgYmluYXJ5XG4gIHZhbCBmcmVlX2FsbCA6ICgnYSB0LCAnYSB0KSB1bmFyeVxuZW5kXG5cbmxldCBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWUgPVxuICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWVcblxubW9kdWxlIEludF9zdG9yYWdlX2ltcGVyYXRpZiA6XG4gIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IGludCBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPSBzdHJ1Y3RcbiAgdHlwZSBrZXkgPSBpbnRcbiAgdHlwZSBkaW1lbnNpb24gPSBpbnRcbiAgdHlwZSAnYSB0ID0geyBhcnJheTogJ2Egb3B0aW9uIGFycmF5OyBzaXplOiBpbnQgfVxuXG4gIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuc2l6ZVxuXG4gIGxldCBrZXlfbGlzdCBfcGFyZW1ldGVycyBlcnJvciB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgIGVycm9yLCBzb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrIC0gMSkgc29sXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBzaXplIFtdXG5cbiAgbGV0IHJlYyBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplID1cbiAgICBpZiBzaXplIDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciAwIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5tYWtlIChzaXplICsgMSkgTm9uZTsgc2l6ZSB9XG5cbiAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIHggPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciB4XG5cbiAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IHNpemUgPVxuICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICBpZiBkaW1lbnNpb24gPCBzaXplIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheScgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgXyA9IEFycmF5LmJsaXQgYXJyYXkuYXJyYXkgMCBhcnJheScuYXJyYXkgMCBkaW1lbnNpb24gaW5cbiAgICAgIGVycm9yLCBhcnJheSdcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCB7IGFycmF5ID0gQXJyYXkuc3ViIGFycmF5LmFycmF5IDAgc2l6ZTsgc2l6ZSB9XG5cbiAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW4gKFxuICAgICAgbGV0ICgpID0gUHJpbnRmLmZwcmludGYgc3Rkb3V0IFwiJWkgJWlcIiBrZXkgYXJyYXkuc2l6ZSBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IF8gPSBhcnJheS5hcnJheS4oa2V5KSA8LSBTb21lIHZhbHVlIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBzaXplIGYgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGFycmF5ID1cbiAgICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHZhbHVlID0gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5ID0gc2V0IHBhcmFtZXRlcnMgZXJyb3IgayB2YWx1ZSBhcnJheSBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yIGFycmF5XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMCBlcnJvciBhcnJheVxuICAgIClcblxuICBsZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgXCIxMzA6JWlcXG5cIiBrZXlcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIGFycmF5LmFycmF5LihrZXkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCIxMzM6JWlcXG5cIiBrZXlcbiAgICAgICAgaW5cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZVxuICAgICAgfCBhIC0+IGVycm9yLCBhXG4gICAgKVxuXG4gIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0ICgpID0gYXJyYXkuYXJyYXkuKGtleSkgPC0gTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IHVuc2FmZV9nZXQgX3BhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlblxuICAgICAgZXJyb3IsIE5vbmVcbiAgICBlbHNlXG4gICAgICBlcnJvciwgYXJyYXkuYXJyYXkuKGtleSlcblxuICBsZXQgcHJpbnQgcGFyYW1ldGVycyBlcnJvciBwcmludF9lbHQgYXJyYXkgPVxuICAgIGxldCByZWMgYXV4IGkgZXJyb3IgPVxuICAgICAgaWYgaSA+IGFycmF5LnNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgXCIlcyVkOlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID1cbiAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpIF4gXCI6XCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gcHJpbnRfZWx0IHBhcmFtZXRlcnMgZXJyb3IgZWx0IGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBhdXggKGkgKyAxKSBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3JcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIGVycm9yXG5cbiAgbGV0IGZvbGQgcGFyYW1ldGVyIGVycm9yIGYgdCBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgcmVtYW5lbnRcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBlcnJvciA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yLCB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXIgZXJyb3IgayB4IGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBmYWxzZVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICB0cnkgU29tZSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbCkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByZW1hbmVudFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayArIDEpIGEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyX2NvbW1vbiBwYXJhbWV0ZXIgZXJyb3IgZiB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggdDEgdDIgaW5pdCA9XG4gICAgbGV0IHNpemUgPSBtaW4gdDEuc2l6ZSB0Mi5zaXplIGluXG4gICAgbGV0IGFycmF5MSA9IHQxLmFycmF5IGluXG4gICAgbGV0IGFycmF5MiA9IHQyLmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBTb21lIHgxLCBOb25lIC0+IGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHgxIHNvbClcbiAgICAgICAgfCBOb25lLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChnIHBhcmFtZXRlciBlcnJvciBrIHgyIHNvbClcbiAgICAgICAgfCBTb21lIHgxLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChoIHBhcmFtZXRlciBlcnJvciBrIHgxIHgyIHNvbClcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IGF1eCAoayArIDEpIChlcnJvciwgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGEgXyB0IC0+IGZyZWUgcGFyYW1ldGVyIGVycm9yIGEgdClcbiAgICAgIHQgdFxuZW5kXG5cbm1vZHVsZSBOZWFybHlfaW5maW5pdGVfYXJyYXlzID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSB3aXRoIHR5cGUgZGltZW5zaW9uID0gaW50IGFuZCB0eXBlIGtleSA9IGludClcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSAnYSBCYXNpYy50XG5cbiAgICAgIGxldCBjcmVhdGUgPSBCYXNpYy5jcmVhdGVcbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXlcbiAgICAgIGxldCBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIGxldCBrZXlfbGlzdCA9IEJhc2ljLmtleV9saXN0XG5cbiAgICAgIGxldCBleHBhbmQgcGFyYW1ldGVycyBlcnJvciBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX2RpbWVuc2lvbiA9IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgIGlmIG9sZF9kaW1lbnNpb24gPSBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5XG4gICAgICAgICAgICAobWF4IDEgKG1pbiBTeXMubWF4X2FycmF5X2xlbmd0aCAoMiAqIG9sZF9kaW1lbnNpb24pKSlcblxuICAgICAgbGV0IGdldCA9IEJhc2ljLmdldFxuICAgICAgbGV0IHVuc2FmZV9nZXQgPSBCYXNpYy51bnNhZmVfZ2V0XG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5ID0gQmFzaWMuZXhwYW5kX2FuZF9jb3B5XG4gICAgICBsZXQgaW5pdCA9IEJhc2ljLmluaXRcbiAgICAgIGxldCBmcmVlID0gQmFzaWMuZnJlZVxuXG4gICAgICBsZXQgcmVjIHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYga2V5ID49IGRpbWVuc2lvbiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgICAgaWYgYXJyYXkgPT0gYXJyYXknIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5J1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXlcblxuICAgICAgbGV0IHByaW50ID0gQmFzaWMucHJpbnRcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mID0gQmFzaWMucHJpbnRfdmFyX2ZcbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgPSBCYXNpYy5wcmludF9zaXRlX2YqKVxuICAgICAgbGV0IGl0ZXIgPSBCYXNpYy5pdGVyXG4gICAgICBsZXQgZm9sZCA9IEJhc2ljLmZvbGRcbiAgICAgIGxldCBmb2xkMiA9IEJhc2ljLmZvbGQyXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiA9IEJhc2ljLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgIGxldCBmb2xkMl9jb21tb24gPSBCYXNpYy5mb2xkMl9jb21tb25cbiAgICAgIGxldCBmb3JfYWxsID0gQmFzaWMuZm9yX2FsbFxuICAgICAgbGV0IGZyZWVfYWxsID0gQmFzaWMuZnJlZV9hbGxcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludClcblxubW9kdWxlIEV4dGVuZCA9XG5mdW5jdG9yXG4gIChFeHRlbnNpb24gOiBTdG9yYWdlKVxuICAoVW5kZXJseWluZyA6IFN0b3JhZ2UpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uXG4gICAgICB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgdHlwZSAnYSB0ID0geyBtYXRyaXg6ICdhIFVuZGVybHlpbmcudCBFeHRlbnNpb24udDsgZGltZW5zaW9uOiBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgZGltZW5zaW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPSBFeHRlbnNpb24uY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW1lbnNpb24pIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4ID1cbiAgICAgICAgICBFeHRlbnNpb24uY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBrZXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4JyA9XG4gICAgICAgICAgVW5kZXJseWluZy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoc25kIGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4IGluXG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uJyA9IFVuZGVybHlpbmcuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4JyBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXg7IGRpbWVuc2lvbiA9IGRpbWVuc2lvbiwgZGltZW5zaW9uJyB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIGV4dF9saXN0ID0gRXh0ZW5zaW9uLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdC5tYXRyaXggaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgbGlzdCkga2V5IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQyID0gRXh0ZW5zaW9uLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB0Lm1hdHJpeCBpblxuICAgICAgICAgICAgbWF0Y2ggdDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGxpc3RcbiAgICAgICAgICAgIHwgU29tZSB0MiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGwyID0gVW5kZXJseWluZy5rZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQyIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBrZXkyIC0+IChrZXksIGtleTIpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBsaXN0IChMaXN0LnJldiBsMikgKSlcbiAgICAgICAgICAoZXJyb3IsIFtdKSAoTGlzdC5yZXYgZXh0X2xpc3QpXG5cbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheSBfZGltZW5zaW9uID1cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBkaW0gZiA9XG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEV4dGVuc2lvbi5pbml0IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW0pIChmdW4gcCBlIGkgLT5cbiAgICAgICAgICAgICAgVW5kZXJseWluZy5pbml0IHAgZSAoc25kIGRpbSkgKGZ1biBwJyBlJyBqIC0+IGYgcCcgZScgKGksIGopKSlcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4ID0gYXJyYXk7IGRpbWVuc2lvbiA9IGRpbSB9XG5cbiAgICAgIGxldCBzZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgdmFsdWUgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT4gZXJyb3IsIG9sZF91bmRlcmx5aW5nXG4gICAgICAgICAgfCBOb25lIC0+IFVuZGVybHlpbmcuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKHNuZCBhcnJheS5kaW1lbnNpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgIFVuZGVybHlpbmcuc2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB2YWx1ZSBvbGRfdW5kZXJseWluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19tYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuICAgICAgICAoKiBsZXQgb3JkZXJlZCA9IG9yZGVyZWQgJiYgRXh0ZW5zaW9uLm9yZGVyZWQgbmV3X21hdHJpeCBpbiopXG4gICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXggaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB1bmRlcmx5aW5nXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG5cbiAgICAgIGxldCB1bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCB1bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHVuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IFNvbWUgdW5kZXJseWluZyAtPiBVbmRlcmx5aW5nLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBfIC0+IGVycm9yLCBOb25lXG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuXG4gICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG5ld191bmRlcmx5aW5nID1cbiAgICAgICAgICAgIFVuZGVybHlpbmcuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGogb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgICBFeHRlbnNpb24uc2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBuZXdfdW5kZXJseWluZyBhcnJheS5tYXRyaXhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuZGltZW5zaW9uXG5cbiAgICAgIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X29mIGEgPVxuICAgICAgICBFeHRlbnNpb24ucHJpbnQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcCBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IHAgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mIGVycm9yIHByaW50X29mIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBFeHRlbnNpb24ucHJpbnQgZXJyb3JcbiAgICAgICAgICAgKGZ1biBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IGVycm9yIHByaW50X29mKVxuICAgICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXgqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSAtPlxuICAgICAgICAgICAgVW5kZXJseWluZy5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrJyBhJyAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnKVxuICAgICAgICAgICAgICBhKVxuICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgIGxldCBmb2xkX2dlbiBmb2xkMSBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkMSBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYiAtPlxuICAgICAgICAgICAgZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJyBiKVxuICAgICAgICAgICAgICBhIGIpXG4gICAgICAgICAgYS5tYXRyaXggYlxuXG4gICAgICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkX2dlbiBFeHRlbnNpb24uZm9sZCBVbmRlcmx5aW5nLmZvbGQgcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgICAgVW5kZXJseWluZy5mb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYlxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG5cbiAgICAgIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgIHQgdFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlXG4gICAgICAgIHdpdGggdHlwZSBrZXkgPSBFeHRlbnNpb24ua2V5ICogVW5kZXJseWluZy5rZXlcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gKiBVbmRlcmx5aW5nLmRpbWVuc2lvbilcblxubW9kdWxlIFF1aWNrX2tleV9saXN0ID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IGJhc2ljOiAnYSBCYXNpYy50OyBrZXlzOiBrZXkgbGlzdCB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBpID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gW10gfVxuXG4gICAgICBsZXQga2V5X2xpc3QgX3BhcmFtZXRlcnMgZXJyb3IgdCA9IGVycm9yLCB0LmtleXNcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGogPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID1cbiAgICAgICAgICBCYXNpYy5leHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheS5iYXNpYyBqXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gYXJyYXkua2V5cyB9XG5cbiAgICAgIGxldCBpbml0IHBhcmFtZXRlcnMgZXJyb3IgbiBmID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgaW5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlzID1cbiAgICAgICAgICBCYXNpYy5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAgIChmdW4gXyBlIGsgXyBsaXN0IC0+IGUsIGsgOjogbGlzdClcbiAgICAgICAgICAgIGJhc2ljIFtdXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkID0gQmFzaWMudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBsZXQgbmV3X2FycmF5ID1cbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFycmF5XG4gICAgICAgICAgfCBOb25lIC0+IHsgYXJyYXkgd2l0aCBrZXlzID0ga2V5IDo6IGFycmF5LmtleXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19iYXNpYyA9XG4gICAgICAgICAgQmFzaWMuc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIG5ld19hcnJheS5iYXNpY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBuZXdfYXJyYXkgd2l0aCBiYXNpYyA9IG5ld19iYXNpYyB9XG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWMgaW5cbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBiYXNpYyB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy5nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljXG5cbiAgICAgIGxldCBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhID1cbiAgICAgICAgQmFzaWMuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYS5iYXNpY1xuXG4gICAgICBsZXQgcHJpbnQgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPSBCYXNpYy5wcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgQmFzaWMucHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWNcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF9zaXRlX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWMqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgYSA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gZXJyb3IgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB8IFNvbWUgaW0gLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW0pXG4gICAgICAgICAgZXJyb3IgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYikgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSBiKVxuICAgICAgICAgIChlcnJvciwgYikgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb3JfYWxsIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIHRydWVcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgKG1hdGNoIGdldCBwYXJhbWV0ZXJzIGVycm9yIGggYSB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPSBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoKSBpblxuICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCA9IGYgcGFyYW1ldGVycyBlcnJvciBoIGRhdGEgaW5cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IHQgZXJyb3JcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgZXJyb3JcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgbGV0IGVycm9yLCB0ID1cbiAgICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgICAgdCB0XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHQgd2l0aCBrZXlzID0gW10gfVxuXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXJzIGVycm9yIGYgYSBiID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGxpc3Qgb3V0cHV0ID1cbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IG91dHB1dFxuICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW0gPSBnZXQgcGFyYW1ldGVycyBlcnJvciBoZWFkIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNuZCBvdXRwdXQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGIpXG4gICAgICAgICAgICAgICAgfCBTb21lIGltIC0+IFNvbWUgKGYgcGFyYW1ldGVycyBlcnJvciBoZWFkIGltIGIpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICB8IFNvbWUgb3V0cHV0IC0+IGF1eCB0YWlsIG91dHB1dClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgKGVycm9yLCBiKVxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IEJhc2ljLmtleSBhbmQgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb24pXG5cbm1vZHVsZSBOZWFybHlfaW5mX0ltcGVyYXRpZiA9IE5lYXJseV9pbmZpbml0ZV9hcnJheXMgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcbm1vZHVsZSBRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZiA9IFF1aWNrX2tleV9saXN0IChOZWFybHlfaW5mX0ltcGVyYXRpZilcblxubW9kdWxlIEludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgTmVhcmx5X0luZl9JbnRfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kXG4gICAgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuICAgIChFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpKVxuIiwiKCoqXG4gICAgKiB1bmlvbl9maW5kLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMTF0aCBvZiBNYXJjaFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTggMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgd2l0aCB1bmlvbiBmaW5kIGFsZ29yaXRobSB3aXRoXG4gICAgKiBwYXRoIGNvbXByZXNzaW9uXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgVW5pb25fZmluZCA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZGltZW5zaW9uIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbl9saXN0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIGtleSBsaXN0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpdGVyaSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAga2V5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZ2V0X3JlcHJlc2VudGVudCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0ICoga2V5XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoU3RvcmFnZSA6IEludF9zdG9yYWdlLlN0b3JhZ2UpXG4gIC0+XG4gICgqICAgIGZ1bmN0b3IgKE1hcDogTWFwX3dyYXBwZXIuTWFwX3dpdGhfbG9ncykgLT4qKVxuICAgIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgIHR5cGUgdCA9IGtleSBTdG9yYWdlLnRcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gU3RvcmFnZS5kaW1lbnNpb25cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gPVxuICAgICAgICBTdG9yYWdlLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIChmdW4gXyBlIHggLT4gZSwgeClcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGZpbmRTZXQoZSk6IHdoaWNoIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBzZXRcbiAgICAgICAgIGNvbnRhaW5pbmcgZS4gU2luY2UgdGhlIHNldCBhcmUgZGlzam9pbnQsIGUgY29udGFpbnRlZCBpbiBvbmUgc2V0XG4gICAgICAgICBvbmx5LiBUaGVyZWZvcmUsIHRoZSByZXR1cm5lZCByZXByZXNlbnRhdGl2ZSBjYW4gYmUgdW5pcXVlbHkgZGV0ZXJtaW5lZC5cbiAgICAgICopXG5cbiAgICAgIGxldCBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHJvb3QgbCB0ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIHQpIGkgLT4gU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIGkgcm9vdCB0KVxuICAgICAgICAgICAgKGVycm9yLCB0KSBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIGwgdCA9XG4gICAgICAgICAgbGV0IGVycm9yLCBwYXJlbnQgPSBTdG9yYWdlLnVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGUgdCBpblxuICAgICAgICAgIG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCAodCwgZSlcbiAgICAgICAgICB8IFNvbWUgcCB3aGVuIHAgPD4gZSAtPiBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIHAgKGUgOjogbCkgdFxuICAgICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgICAoKiBiYXNlIGNhc2U6IHdlIGhpdCB0aGUgcm9vdCBub2RlIG1ha2UgYWxsIGNvbGxlY3RlZCBub2RlcyBvbiB0aGVcbiAgICAgICAgICAgICAgIHBhdGggcG9pbnQgdG8gdGhlIHJvb3QuIEFuZCByZXR1cm4gdGhlIHJvb3QgYWZ0ZXJ3YXJkcyAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCB0ID0gcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHAgbCB0IGluXG4gICAgICAgICAgICBlcnJvciwgKHQsIHApXG4gICAgICAgIGluXG4gICAgICAgIGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgZSBbXSB0XG5cbiAgICAgIGxldCBnZXRfcmVwcmVzZW50ZW50IHBhcmFtZXRlcnMgZXJyb3IgZSB0ID1cbiAgICAgICAgbGV0IGVycm9yLCAodW5pb24sIGVsdCkgPSBmaW5kU2V0IHBhcmFtZXRlcnMgZXJyb3IgZSB0IGluXG4gICAgICAgIGVycm9yLCB1bmlvbiwgZWx0XG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCpVTklPTiopXG5cbiAgICAgIGxldCB1bmlvbiBwYXJhbWV0ZXIgZXJyb3IgeCB5IHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh0LCByb290X3gpID0gZmluZFNldCBwYXJhbWV0ZXIgZXJyb3IgeCB0IGluXG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeSkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB5IHQgaW5cbiAgICAgICAgU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIHJvb3RfeCByb290X3kgdFxuXG4gICAgICAoKmxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgICgqICBsZXQgY2xhc3NlcyA9IENja2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluKilcbiAgICAgICAgPT09PT09PVxuICAgICAgICBsZXQgdW5pb24geCB5IGEgPVxuICAgICAgICBsZXQgcm9vdF94ID0gZmluZFNldCB4IGEgaW5cbiAgICAgICAgbGV0IHJvb3RfeSA9IGZpbmRTZXQgeSBhIGluXG4gICAgICAgIGxldCBfID0gYS4ocm9vdF94KSA8LSByb290X3kgaW5cbiAgICAgICAgKCpsZXQgXyA9IHByaW50X3N0cmluZyBcImR1bXA6IFwiOyBkdW1wIGE7IHByaW50X3N0cmluZyBcIlxcblwiIGluKilcbiAgICAgICAgYVxuXG4gICAgICAgIGxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgIGxldCBjbGFzc2VzID0gQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5lbXB0eSBpblxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggayAoY2xhc3Nlcyx1bmlvbl9saXN0KSA9XG4gICAgICAgICAgaWYgIGsgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgY2xhc3NlcywgdW5pb25fbGlzdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqZmluZCB0aGUgcGFyZW50IG9mIHRoZSB1bmlvbiopXG4gICAgICAgICAgICBsZXQgcmVwID0gZmluZFNldCBrIGEgaW5cbiAgICAgICAgICAgICgqY2hlY2sgaWYgaW5zaWRlIGNsYXNzZXMgaGFzIGFscmVhZHkgaGFzIHRoaXMgcGFyZW50KilcbiAgICAgICAgPDw8PDw8PCBIRUFEXG4gICAgICAgICAgICBsZXQgZXJyb3InLGdldF9yZXAgPVxuICAgICAgICAoKiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZmluZF9kZWZhdWx0IHBhcmFtZXRlciBlcnJvciBbXSByZXAgY2xhc3NlcyBpbiopXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uY2hlY2sgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIChTb21lIFwibGluZSA3M1wiKSBFeGl0IGluXG4gICAgICAgICAgICAoKnN0b3JlIHRoZSByZXN1bHQgaW5zaWRlIGNsYXNzZXMqKVxuICAgICAgICAoKiAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA9PT09PT09XG4gICAgICAgICAgICBsZXQgZXJyb3InLCBnZXRfcmVwID1cbiAgICAgICAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgICAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICAgICBsZXQgZXJyb3IsY2xhc3NlcyA9XG4gICAgICAgIENrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIHBhcmFtZXRlclxuICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIHJlcFxuICAgICAgICAoayA6OiBnZXRfcmVwKVxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoY2xhc3NlcywgdW5pb25fbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNsYXNzZXMsIGEgPSBhdXggKHNpemUgLSAxKSAoY2xhc3NlcywgYSkgaW5cbiAgICAgICAgY2xhc3NlcywgYSopXG5cbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKiBjb21wdXRlIHVuaW9uLWZpbmQgaW4gYSBsaXN0KilcblxuICAgICAgbGV0IHVuaW9uX2xpc3QgcGFyYW1ldGVyIGVycm9yIGEgKGxpc3QgOiBrZXkgbGlzdCkgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCByZWMgYXV4IHBhcmFtZXRlciB0b192aXNpdCBlcnJvciBhID1cbiAgICAgICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGFcbiAgICAgICAgICAgIHwgdCcgOjogcScgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCB1bmlvbl9hcnJheSA9IHVuaW9uIHBhcmFtZXRlciBlcnJvciB0IHQnIGEgaW5cbiAgICAgICAgICAgICAgYXV4IHBhcmFtZXRlciBxJyBlcnJvciB1bmlvbl9hcnJheVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHBhcmFtZXRlciBxIGVycm9yIGFcblxuICAgICAgbGV0IGl0ZXJpID0gU3RvcmFnZS5pdGVyXG4gICAgZW5kIDpcbiAgICAgIFVuaW9uX2ZpbmRcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IFN0b3JhZ2Uua2V5XG4gICAgICAgICBhbmQgdHlwZSB0ID0gU3RvcmFnZS5rZXkgU3RvcmFnZS50XG4gICAgICAgICBhbmQgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvbilcbiIsImxldCBmc3Rfb3B0aW9uIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lICh4LCBfKSAtPiBTb21lIHhcbiAgfCBfIC0+IE5vbmVcblxubGV0IHNuZF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKF8sIHgpIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG4oKiBPQ2FtbCBtYW51YWw6IEluIHBhcnRpY3VsYXIsIGlmIHlvdSB3YW50IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXRcbiAgIG1hdGNoZXMgYSBzaW5nbGUgYmFja3NsYXNoIGNoYXJhY3RlciwgeW91IG5lZWQgdG8gcXVvdGUgaXQgaW4gdGhlXG4gICBhcmd1bWVudCB0byByZWdleHAgKGFjY29yZGluZyB0byB0aGUgbGFzdCBpdGVtIG9mIHRoZSBsaXN0IGFib3ZlKSBieVxuICAgYWRkaW5nIGEgc2Vjb25kIGJhY2tzbGFzaC4gVGhlbiB5b3UgbmVlZCB0byBxdW90ZSBib3RoIGJhY2tzbGFzaGVzXG4gICAoYWNjb3JkaW5nIHRvIHRoZSBzeW50YXggb2Ygc3RyaW5nIGNvbnN0YW50cyBpbiBPQ2FtbCkgYnkgZG91YmxpbmdcbiAgIHRoZW0gYWdhaW4sIHNvIHlvdSBuZWVkIHRvIHdyaXRlIGZvdXIgYmFja3NsYXNoIGNoYXJhY3RlcnM6IFN0ci5yZWdleHBcbiAgIFwiXFxcXFxcXFxcIi4gKilcblxuKCoqIGRvdCBvdXRwdXQqKVxubGV0IGVzY2FwZV9sYWJlbF9pbl9kb3QgcyA9XG4gIFN0ci5nbG9iYWxfc3Vic3RpdHV0ZSAoU3RyLnJlZ2V4cCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKVxuICAgIChmdW4geCAtPlxuICAgICAgbWF0Y2ggU3RyLm1hdGNoZWRfc3RyaW5nIHggd2l0aFxuICAgICAgfCBcIlxcXCJcIiAtPiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgXCJcXFxcXCIgLT4gXCJcXFxcXFxcXFwiXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHNcblxubGV0IG1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mb3JtYXQgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgPVxuICBsZXQgdGFiID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90IHBhcmFtZXRlcnNcbiAgaW5cbiAgbGV0IHJlYyBhdXggcG9zIGwgPVxuICAgIGlmIHBvcyA8IDAgdGhlblxuICAgICAgbFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXIgPSBTdHJpbmcuZ2V0IHN0cmluZyBwb3MgaW5cbiAgICAgIG1hdGNoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuZmluZF9vcHRpb24gY2hhciB0YWIgd2l0aFxuICAgICAgfCBTb21lIGxpc3RlX2NoYXIgLT5cbiAgICAgICAgYXV4IChwb3MgLSAxKVxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBjaGFyIC0+IGNoYXIgOjogbGlzdClcbiAgICAgICAgICAgICBsIChMaXN0LnJldiBsaXN0ZV9jaGFyKSlcbiAgICAgIHwgTm9uZSAtPiBhdXggKHBvcyAtIDEpIChjaGFyIDo6IGwpXG4gICAgKVxuICBpblxuICBsZXQgbCA9IGF1eCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSAxKSBbXSBpblxuICBlcnJvciwgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKFN0cmluZy5tYWtlIDEpIChMaXN0LnJldiBsKSlcblxubGV0IHNvcnRlZF9wYXJ0c19vZl9saXN0IG4gbGlzdCA9XG4gIGxldCBsaXN0ID0gTGlzdC5zb3J0IChmdW4gYSBiIC0+IGNvbXBhcmUgYiBhKSBsaXN0IGluXG4gIGxldCByZWMgYXV4IGsgbGlzdCBzdWZmaXggb3V0cHV0ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBzdWZmaXggOjogb3V0cHV0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaCA6OiB0IC0+IGF1eCBrIHQgc3VmZml4IChhdXggKGsgLSAxKSB0IChoIDo6IHN1ZmZpeCkgb3V0cHV0KVxuICAgICAgfCBbXSAtPiBvdXRwdXRcbiAgICApXG4gIGluXG4gIGF1eCBuIGxpc3QgW10gW11cblxubGV0IHNvcnRfbGlzdCBrZXkgcGFyYW1ldGVyIGVycm9yIGxpc3QgPVxuICBsZXQgZXJyb3IsIHJlZmluZWRfbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCByZWZpbmVkX2xpc3QpIGEgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXkgPSBrZXkgcGFyYW1ldGVyIGVycm9yIGEgaW5cbiAgICAgICAgZXJyb3IsIChrZXksIGEpIDo6IHJlZmluZWRfbGlzdClcbiAgICAgIChlcnJvciwgW10pIGxpc3RcbiAgaW5cbiAgbGV0IHJlZmluZWRfc29ydGVkX2xpc3QgPVxuICAgIExpc3Quc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gY29tcGFyZSBiIGEpIHJlZmluZWRfbGlzdFxuICBpblxuICBlcnJvciwgTGlzdC5yZXZfbWFwIHNuZCByZWZpbmVkX3NvcnRlZF9saXN0XG4iLCIoKipcbiAgKiBtaXNjX3NhLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+XG4gICogKlxuICAqIFZhcmlvdXMgZnVuY3Rpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBjb25zdF91bml0IF8gPSAoKVxuXG5sZXQgYXJyYXlfb2ZfbGlzdCBjcmVhdGUgc2V0IHBhcmFtZXRlcnMgZXJyb3IgbGlzdCA9XG4gIGxldCBuID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgYSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gaW5cbiAgbGV0IHJlYyBhdXggbCBrIGEgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYVxuICAgIHwgdCA6OiBxIC0+IGF1eCBxIChrICsgMSkgKHNldCBwYXJhbWV0ZXJzIChmc3QgYSkgayB0IChzbmQgYSkpXG4gIGluXG4gIGF1eCBsaXN0IDAgYVxuXG5sZXQgdW5zb21lIChlcnJvciwgeCkgZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gZiBlcnJvclxuICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuXG5sZXQgcmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gTGlzdC5yZXYgcmVwXG4gICAgfCBhIDo6IGIsIGMgOjogZCAtPlxuICAgICAgaWYgY29tcGFyZSBhIGMgPSAwIHRoZW5cbiAgICAgICAgYXV4IGIgZCAoYSA6OiByZXApXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgYSBjIDwgMCB0aGVuXG4gICAgICAgIGF1eCBiIGwyIHJlcFxuICAgICAgZWxzZVxuICAgICAgICBhdXggbDEgZCByZXBcbiAgaW5cbiAgYXV4IGwxIGwyIFtdXG5cbmxldCB0cmFjZSBwYXJhbWV0ZXJzIHN0cmluZyA9XG4gIGlmXG4gICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuICB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICBcIiVzJXNcIlxuICAgICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCAoc3RyaW5nICgpKVxuXG5sZXQgaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID0gTGlzdC5yZXYgKHJldl9pbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIpXG5cbmxldCBsaXN0XzBfbiBrID1cbiAgbGV0IHJlYyBhdXggayBzb2wgPVxuICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgIHNvbFxuICAgIGVsc2VcbiAgICAgIGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgaW5cbiAgYXV4IGsgW11cblxubGV0IGxpc3RfbWludXMgbDEgbDIgPVxuICBsZXQgcmVjIGF1eCBsMSBsMiByZXAgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB0MSA6OiBxMSwgdDIgOjogcTIgd2hlbiB0MSA9IHQyIC0+IGF1eCBxMSBxMiByZXBcbiAgICB8IHQxIDo6IHExLCBfIC0+IGF1eCBxMSBsMiAodDEgOjogcmVwKVxuICAgIHwgW10sIF8gLT4gcmVwXG4gIGluXG4gIExpc3QucmV2IChhdXggbDEgbDIgW10pXG5cbmxldCBwcmludF9jb21tYSBwYXJhbWV0ZXIgYm9vbCBjb21tYSA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCIlc1wiIGNvbW1hXG5cbmxldCBmZXRjaF9hcnJheSBpIGFycmF5IGRlZiA9XG4gIHRyeVxuICAgIG1hdGNoIGFycmF5LihpKSB3aXRoXG4gICAgfCBOb25lIC0+IGRlZlxuICAgIHwgU29tZSBpIC0+IGlcbiAgd2l0aCBfIC0+IGRlZlxuIiwiKCoqXG4gICAgKiBoYXNoLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxOC8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNCAyMDE3PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHNpZ25hdHVyZSBmb3IgaGFzaCB0YWJsZXMgYW5kIHNldmVyYWwgaW1wbGVtZW50YXRpb25zXG4gICAgKiAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgJ2EgaGFzaFxuXG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgaGFzaFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSAtPlxuICAgIGludCAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBoYXNoXG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgYWRkX29yX292ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IDoga2V5IC0+ICdhIGhhc2ggLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IGludCAtPiB1bml0KSAtPiAnYSBoYXNoIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdiIC0+IGludCAtPiAnYSAtPiAnYSkgLT4gJ2IgaGFzaCAtPiAnYSAtPiAnYVxuZW5kXG5cbm1vZHVsZSBIYXNoID1cbmZ1bmN0b3JcbiAgKE1hcCA6IE1hcF93cmFwcGVyLlNfd2l0aF9sb2dzKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IE1hcC5lbHRcbiAgICAgIHR5cGUgJ2EgaGFzaCA9IChpbnQgKiAnYSkgTWFwLk1hcC50XG5cbiAgICAgIGxldCBjcmVhdGUgXyA9IE1hcC5NYXAuZW1wdHlcblxuICAgICAgbGV0IGFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5hZGQgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBhZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiA9XG4gICAgICAgIGxldCBlcnJvcicsIG91dHB1dCA9IE1hcC5NYXAuZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiBpblxuICAgICAgICBpZiBlcnJvciA9PSBlcnJvcicgdGhlblxuICAgICAgICAgIGVycm9yJywgb3V0cHV0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3InIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiYXR0ZW1wdCB0byByZWFkIGFuIHVuZXhpc3RpbmcgYXNzb2NpYXRpb25cIiBOb3RfZm91bmRcbiAgICAgICAgICAgIG91dHB1dFxuXG4gICAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzID0gTWFwLk1hcC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IGEgYiA9XG4gICAgICAgIExpZnRfZXJyb3JfbG9ncy5saWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmaW5kX29wdGlvbiBhIGJcblxuICAgICAgbGV0IGl0ZXIgZiA9IE1hcC5NYXAuaXRlciAoZnVuIChhIDoga2V5KSAoYiwgYykgLT4gZiBhIGMgYilcbiAgICAgIGxldCBmb2xkIGYgPSBNYXAuTWFwLmZvbGQgKGZ1biBhIChiLCBjKSBkIC0+IGYgYSBjIGIgZClcbiAgICBlbmQgOlxuICAgICAgSGFzaCB3aXRoIHR5cGUga2V5ID0gTWFwLmVsdClcblxubW9kdWxlIEhhc2hfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IEhhc2ggKE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPKSkpXG4iLCJsZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG50eXBlIG5vZGUgPSBpbnRcblxubGV0IG5vZGVfb2ZfaW50IHggPSB4XG5sZXQgaW50X29mX25vZGUgKHggOiBub2RlKSA6IGludCA9IHhcblxubW9kdWxlIE5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgTm9kZU1hcCA9IE5vZGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBGaXhlZF9zaXplX2FycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5RdWlja19rZXlfbGlzdCAoSW50X3N0b3JhZ2UuSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxuXG5tb2R1bGUgTm9kZWFycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZlxuXG50eXBlICgnbm9kZV9sYWJlbHMsICdlZGdlX2xhYmVscykgZ3JhcGggPSB7XG4gIG5vZGVfbGFiZWxzOiAnbm9kZV9sYWJlbHMgRml4ZWRfc2l6ZV9hcnJheS50O1xuICBlZGdlczogKG5vZGUgKiAnZWRnZV9sYWJlbHMpIGxpc3QgRml4ZWRfc2l6ZV9hcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igbm9kZV9vZl9ub2RlX2xhYmVsIG5vZGVfbGlzdCBlZGdlX2xpc3QgPVxuICBsZXQgbWF4X25vZGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBpIC0+IG1heCBtIChpbnRfb2Zfbm9kZSBpKSkgMCBub2RlX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9IEZpeGVkX3NpemVfYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbWF4X25vZGUgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBub2RlcykgaSAtPlxuICAgICAgICBGaXhlZF9zaXplX2FycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGkgOiBub2RlKVxuICAgICAgICAgIChub2RlX29mX25vZGVfbGFiZWwgaSkgbm9kZXMpXG4gICAgICAoZXJyb3IsIG5vZGVzKSAoTGlzdC5yZXYgbm9kZV9saXN0KVxuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgYWRkX2VkZ2UgcGFyYW1ldGVycyBlcnJvciAobjEsIGxhYmVsLCBuMikgZWRnZXMgPVxuICAgIGxldCBlcnJvciwgb2xkID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIG4xIGVkZ2VzIHdpdGhcbiAgICAgIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIFtdXG4gICAgICB8IGVycm9yLCBTb21lIGEgLT4gZXJyb3IsIGFcbiAgICBpblxuICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgKChuMiwgbGFiZWwpIDo6IG9sZCkgZWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBlZGdlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBlZGdlcykgZWRnZSAtPiBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIGVkZ2UgZWRnZXMpXG4gICAgICAoZXJyb3IsIGVkZ2VzKSBlZGdlX2xpc3RcbiAgaW5cbiAgZXJyb3IsIHsgbm9kZV9sYWJlbHMgPSBub2RlczsgZWRnZXMgfVxuXG5sZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgLTFcblxubGV0IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgZmFsc2VcblxubGV0IGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBuX3RvX3N0cmluZyBncmFwaCA9XG4gIGxldCBlcnJvciA9XG4gICAgaWYgbG9jYWxfdHJhY2UgfHwgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIkNPTVBVVEUgQlJJREdFOiBcXG4gR3JhcGg6IFxcbiBOb2RlczogXFxuXCJcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpICVzO1xcblwiIGkgKG5fdG9fc3RyaW5nIGopXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGwgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpOlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3IgKGosIF8pIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgXCIlaSxcIiBqXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgICAgICAgZXJyb3IgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGguZWRnZXNcbiAgICAgIGluXG4gICAgICBlcnJvclxuICAgICkgZWxzZVxuICAgICAgZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb3csIHByZSwgb25fc3RhY2sgPVxuICAgIG1hdGNoIGxvdywgcHJlLCBvbl9zdGFjayB3aXRoXG4gICAgfCBTb21lIGxvdywgU29tZSBwcmUsIFNvbWUgb25fc3RhY2sgLT4gZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIF9tYXhfbm9kZSA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIGkgXyBqIC0+IGVycm9yLCBtYXggKGludF9vZl9ub2RlIGkpIGopXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHMgMFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgfCBTb21lIGxvdyAtPiBlcnJvciwgbG93XG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgcHJlID1cbiAgICAgICAgbWF0Y2ggcHJlIHdpdGhcbiAgICAgICAgfCBTb21lIHByZSAtPiBlcnJvciwgcHJlXG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgb25fc3RhY2sgPVxuICAgICAgICBtYXRjaCBvbl9zdGFjayB3aXRoXG4gICAgICAgIHwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgb25fc3RhY2tcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICBpblxuICBsZXQgcmVjIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB2ID1cbiAgICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgcHJlIGluXG4gICAgbGV0IGVycm9yLCBsb3cgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBjb3VudGVyIGxvdyBpblxuICAgIGxldCBzdGFjayA9IHYgOjogc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgdHJ1ZSBvbl9zdGFjayBpblxuICAgIGxldCBjb3VudGVyID0gc3VjYyBjb3VudGVyIGluXG4gICAgbGV0IGVycm9yLCBlZGdlc192ID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIHYgZ3JhcGguZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKSAodywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHByZV93ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBwcmUgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgaWYgcHJlX3cgPSAtMSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgICAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgbG93IGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiAobWluIGxvd192IGxvd193KSBsb3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYiA9IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgdyBvbl9zdGFjayBpblxuICAgICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgcHJlX3cpIGxvd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgICAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIGVkZ2VzX3ZcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgIGlmIGxvd192ID0gcHJlX3YgdGhlbiAoXG4gICAgICBsZXQgcmVjIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgY2MgdlxuICAgICAgICAgID1cbiAgICAgICAgbWF0Y2ggc3RhY2sgd2l0aFxuICAgICAgICB8IHcnIDo6IHN0YWNrIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdycgZmFsc2Ugb25fc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjYyA9IHcnIDo6IGNjIGluXG4gICAgICAgICAgaWYgdiA9IHcnIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBjYyA6OiBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICBpblxuICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBbXSB2XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICBpblxuICBsZXQgZXJyb3IsIChwcmUsIGxvdywgX2NvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgX3N0YWNrKSA9XG4gICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciB2IF8gKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByZV92ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBwcmUgaW5cbiAgICAgICAgaWYgcHJlX3YgPSAtMSB0aGVuXG4gICAgICAgICAgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIChwcmUsIGxvdywgMSwgb25fc3RhY2ssIFtdLCBbXSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJTQ0NcIlxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBsaXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgIFwiJWk7XCIpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBzY2NfbGlzdFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgKVxuICBpblxuICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHByZSBpblxuICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIGxvdyBpblxuICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3Igb25fc3RhY2sgaW5cbiAgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3RcblxubGV0IGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgIGJyaWRnZXMgPVxuICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBuaSBsIGJyaWRnZXMgLT5cbiAgICAgIGxldCBlcnJvciwgc2NjaSA9XG4gICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaSBzY2Mgd2l0aFxuICAgICAgICB8IGVycm9yLCBTb21lIHNjY2kgLT4gZXJyb3IsIHNjY2lcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPiBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoLTEpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGJyaWRnZXMpIChuaiwgbGFiZWwpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzY2NqID1cbiAgICAgICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBzY2Mgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBzY2NqIC0+IGVycm9yLCBzY2NqXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMilcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHNjY2kgPSBzY2NqIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBicmlkZ2VzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBGaXhlZF9zaXplX2FycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgbnN0cmluZ2kgLT5cbiAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmogZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naiAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHx8IGxvY2FsX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJXMgJXMgJXNcIiAoc3RyaW5nX29mX24gbnN0cmluZ2kpIChzdHJpbmdfb2ZfZSBsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfbiBuc3RyaW5nailcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGFkZCAobnN0cmluZ2ksIGxhYmVsLCBuc3RyaW5naikgYnJpZGdlcylcbiAgICAgICAgICApKVxuICAgICAgICAoZXJyb3IsIGJyaWRnZXMpIGwpXG4gICAgZ3JhcGguZWRnZXMgYnJpZGdlc1xuXG5sZXQgYWRkX2JyaWRnZXMgP2xvdyA/cHJlID9vbl9zdGFjayA/c2NjIGFkZCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uXG4gICAgc3RyaW5nX29mX2UgZ3JhcGggYnJpZGdlcyA9XG4gIGxldCBlcnJvciwgc2NjID1cbiAgICBtYXRjaCBzY2Mgd2l0aFxuICAgIHwgU29tZSBzY2MgLT4gZXJyb3IsIHNjY1xuICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICBpblxuICBsZXQgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3QgPVxuICAgIGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBzdHJpbmdfb2ZfbiBncmFwaFxuICBpblxuICBsZXQgZXJyb3IsIF8sIHNjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBuLCBzY2MpIGNjIC0+XG4gICAgICAgIGxldCBlcnJvciwgbiwgc2NjID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgbm9kZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBub2RlIG4gc2NjIGluXG4gICAgICAgICAgICAgIGVycm9yLCBuLCBzY2MpXG4gICAgICAgICAgICAoZXJyb3IsIG4sIHNjYykgY2NcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG4gKyAxLCBzY2MpXG4gICAgICAoZXJyb3IsIDEsIHNjYykgc2NjX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBicmlkZ2VzID1cbiAgICBkZXRlY3RfYnJpZGdlcyBwYXJhbWV0ZXJzIGVycm9yIGFkZCBncmFwaCBzdHJpbmdfb2ZfbiBzdHJpbmdfb2ZfZSBzY2NcbiAgICAgIGJyaWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBzY2MgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBzY2MgaW5cbiAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjaywgc2NjLCBicmlkZ2VzXG4iLCIoKipcbiAqIGRpY3Rpb25hcnkubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDIwMTAsIHRoZSAxOHRoIG9mIE9jdG9iZXJcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIGluZGV4ZWQgc2V0IG9mIHZhbHVlc1xuICogRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gbWVtYmVyc2hpcCwgdHJhbmR1Y3Rpb24sIGFuZCBuZXcga2V5IGNhblxuICogYmUgaGFuZGxlZCBpbiBPKGxvZyBuKVxuICogQWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBrZXkgY2FuIGJlIHRyYW5zbGF0ZWQgaW4gTygxKVxuICogKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgRGljdGlvbmFyeSA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIHZhbHVlXG4gIHR5cGUgKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpbml0IDogdW5pdCAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIG1lbWJlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHZhbHVlIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGJvb2xcblxuICB2YWwgYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvblxuXG4gIHZhbCBhbGxvY2F0ZV91bmlxdWVseSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgKCogIHZhbCBhbGxvY2F0ZV9mX2lkOiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT4gKCdhIC0+ICdhIC0+IGludCkgLT4gdmFsdWUgLT4gKGludCAtPiAnYSkgLT4gJ2EgZGljdGlvbmFyeSAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EgKiAnYSBkaWN0aW9uYXJ5KSBvcHRpb24qKVxuICB2YWwgYWxsb2NhdGVfYm9vbCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuICAgICogKGJvb2wgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvbilcblxuICB2YWwgdW5zYWZlX2FsbG9jYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBzdGFiaWxpemUgOiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgaXRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbGFzdF9lbnRyeSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBrZXlcblxuICB2YWwgZm9sZCA6XG4gICAgKHZhbHVlIC0+ICdhICogJ2IgLT4ga2V5IC0+ICdjIC0+ICdjKSAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICdjIC0+ICdjXG5lbmRcblxuZXhjZXB0aW9uXG4gIEFzc29jaWF0aW9uX2lzX2V4aXN0aW5nX3dpdGhfdGhlX3NhbWVfdmFsdWVfaW5fYV9kaWZmZXJlbnRfbG9jYXRpb25fbWVtb3J5XG5cbmV4Y2VwdGlvbiBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG5tb2R1bGUgRGljdGlvbmFyeSA9XG5mdW5jdG9yXG4gIChIYXNoIDogSGFzaC5IYXNoKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IGludFxuICAgICAgdHlwZSB2YWx1ZSA9IEhhc2gua2V5XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgaW5fY29uc3RydWN0aW9uID0ge1xuICAgICAgICBoYXNoX3RhYmxlOiAoJ2EgKiAnYikgSGFzaC5oYXNoO1xuICAgICAgICBmcmVzaDogaW50O1xuICAgICAgfVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIHN0YWJpbGl6ZWQgPSAodmFsdWUgKiAnYSAqICdiKSBvcHRpb24gYXJyYXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5ID0ge1xuICAgICAgICBpc19zdGFiaWxpemVkOiBib29sO1xuICAgICAgICBzdGFiaWxpemVkOiAoJ2EsICdiKSBzdGFiaWxpemVkO1xuICAgICAgICBpbl9jb25zdHJ1Y3Rpb246ICgnYSwgJ2IpIGluX2NvbnN0cnVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgbGV0IGludmFsaWQgeCBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gbWVzc2FnZSBleG4gPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gfm1lc3NhZ2UgZXhuIHhcblxuICAgICAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZCBOb25lXG4gICAgICBsZXQgaW52YWxpZF9hcmdfYm9vbCA9IGludmFsaWQgKGZhbHNlLCBOb25lKVxuICAgICAgbGV0IHByZWluaXQgKCkgPSB7IGhhc2hfdGFibGUgPSBIYXNoLmNyZWF0ZSAxOyBmcmVzaCA9IDAgfVxuXG4gICAgICBsZXQgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgICAgICAgIEhhc2guZmluZF9vcHRpb25fd2l0aG91dF9sb2dzXG4gICAgICAgICAgICAoKiBpbmRlZWQsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIGFzc29jaWF0aW9uICopXG4gICAgICAgICAgICBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBvdXRwdXQgIT0gTm9uZVxuXG4gICAgICBsZXQgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHN0YWJpbGl6ZWQgPVxuICAgICAgICBpZiBrZXkgPj0gMCAmJiBrZXkgPCBBcnJheS5sZW5ndGggc3RhYmlsaXplZCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBzdGFiaWxpemVkLihrZXkpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBlcnJvciwgU29tZSBhXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gXCJtaXNzaW5nIGVudHJ5XCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgKSBlbHNlIGlmIGtleSA8IDAgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm5lZ2F0aXZlIGtleSBhcmUgbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcblxuICAgICAgbGV0IHByZXN0YWJpbGl6ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgYXJyYXkgPSBBcnJheS5tYWtlIGluX2NvbnN0cnVjdGlvbi5mcmVzaCBOb25lIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgSGFzaC5pdGVyXG4gICAgICAgICAgICAoZnVuIGEgKGFzc28sIGFzc28nKSBpIC0+IGFycmF5LihpKSA8LSBTb21lIChhLCBhc3NvLCBhc3NvJykpXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBhcnJheVxuXG4gICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgIHtcbiAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBwcmVpbml0ICgpO1xuICAgICAgICAgIHN0YWJpbGl6ZWQgPSBBcnJheS5tYWtlIDAgTm9uZTtcbiAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeSA9XG4gICAgICAgIHByZW1lbWJlciBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uXG5cbiAgICAgIGxldCBzdGFiaWxpemUgZGljdGlvbmFyeSA9XG4gICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgZGljdGlvbmFyeVxuICAgICAgICBlbHNlXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWJpbGl6ZWQgPSBwcmVzdGFiaWxpemUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgfVxuXG4gICAgICBsZXQgdHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5IGluXG4gICAgICAgIHByZXRyYW5zbGF0ZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBkaWN0aW9uYXJ5LnN0YWJpbGl6ZWRcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB1bmlxdWVseSBwYXJhbWV0ZXJzIGVycm9yIGNvbXBhcmVcbiAgICAgICAgICAodmFsdWUgOiB2YWx1ZSkgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHRoYXQgZWl0aGVyIHRoZXJlIGlzIG5vIGFzc29jaWF0aW9uLCBvciB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgICAgbGV0IGFzc29faWQgPSBidWlsZCBmcmVzaCBpblxuICAgICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgICBIYXNoLmFkZCBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIChhc3NvLCBhc3NvX2lkKSBmcmVzaFxuICAgICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGhhc2ggPSB7IGhhc2hfdGFibGU7IGZyZXNoID0gZnJlc2ggKyAxIH0gaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9XG4gICAgICAgICAgICBpZiBkaWN0aW9uYXJ5LmlzX3N0YWJpbGl6ZWQgdGhlblxuICAgICAgICAgICAgICB7IGRpY3Rpb25hcnkgd2l0aCBpc19zdGFiaWxpemVkID0gZmFsc2UgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICAgIGVycm9yLCAodHJ1ZSwgU29tZSAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBhc3NvJyA9PSBhc3NvIC0+XG4gICAgICAgICAgZXJyb3IsIChmYWxzZSwgU29tZSAoaSwgYXNzbycsIGFzc28nX2lkLCBkaWN0aW9uYXJ5KSlcbiAgICAgICAgfCBlcnJvciwgU29tZSAoaSwgKGFzc28nLCBhc3NvJ19pZCkpIHdoZW4gY29tcGFyZSBhc3NvIGFzc28nID0gMCAtPlxuICAgICAgICAgIGlmIHVuaXF1ZWx5IHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIFwid3JvbmcgYXNzb2NpYXRpb24gKHRoZSBpbWFnZSBpcyBub3QgdW5pcXVlbHkgZGVzY3JpYmVkIGluIFxcXG4gICAgICAgICAgICAgICBtZW1vcnkpXCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIF8gLT5cbiAgICAgICAgICBpbnZhbGlkX2FyZ19ib29sIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAoc2V2ZXJhbCBpbWFnZXMgZm9yIHRoZSBzYW1lIGtleSlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuICAgICAgbGV0IGFsbG9jYXRlIGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV91bmlxdWVseSBhYSBlIHggdiBhIGQgZiA9XG4gICAgICAgIGxldCBhLCAoXywgYykgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgdHJ1ZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV9ib29sIGFhIGUgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgZmFsc2UgYWEgZVxuXG4gICAgICBsZXQgdW5zYWZlX2FsbG9jYXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIGxldCBmcmVzaCA9IGluX2NvbnN0cnVjdGlvbi5mcmVzaCBpblxuICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgSGFzaC5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICBlcnJvciwgKGZyZXNoLCBhc3NvLCBhc3NvX2lkLCBkaWN0aW9uYXJ5KVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgZGljID1cbiAgICAgICAgbGV0IGRpYycgPSBzdGFiaWxpemUgZGljIGluXG4gICAgICAgIGxldCBnIGtleSBlcnJvciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lICh2YWx1ZSwgYSwgYikgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGJcbiAgICAgICAgaW5cbiAgICAgICAgKCogaWYgZGljLmlzX3N0YWJpbGl6ZWRcbiAgICAgICAgICAgdGhlbiopXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgZyBlcnJvciBkaWMnLnN0YWJpbGl6ZWRcbiAgICAgICgqZWxzZSBIYXNoLmZvbGRcbiAgICAgICAgKGZ1biB2YWx1ZSAoYSxiKSBrZXkgZXJyb3IgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGIpXG4gICAgICAgIGRpYy5pbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZSBlcnJvciopXG5cbiAgICAgIGxldCBmb2xkIGYgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbiBpblxuICAgICAgICBIYXNoLmZvbGQgZiBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuXG4gICAgICBsZXQgbGFzdF9lbnRyeSBfcGFyYW1ldGVycyBlcnJvciBkaWMgPVxuICAgICAgICBlcnJvciwgZGljLmluX2NvbnN0cnVjdGlvbi5mcmVzaCAtIDFcbiAgICBlbmQgOlxuICAgICAgRGljdGlvbmFyeSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIHZhbHVlID0gSGFzaC5rZXkpXG5cbm1vZHVsZSBEaWN0aW9uYXJ5X29mX09yZCA9XG5mdW5jdG9yIChPIDogU2V0TWFwLk9yZGVyZWRUeXBlKSAtPiBEaWN0aW9uYXJ5IChIYXNoLkhhc2hfb2ZfT3JkIChPKSlcbiIsIigqKlxuICAgKiB0aWNrX3N0b3JpZXMubWxcbiAgICpcbiAgICogUHJvZ3Jlc3MgYmFyIChjb21pbmcgZnJvbSBNb2RzLm1sKVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDUvMjAxNlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTcvMDUvMjAxNlxuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IHRpY2tfc3RvcmllcyBmIGNvbmYgc2F2ZV9wcm9ncmVzc19iYXIgKGluaXQsIGxhc3QsIGNvdW50ZXIsIG5fc3RvcmllcykgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCBpbml0IHRoZW4gKFxuICAgICAgbGV0IGMgPSByZWYgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgICAgIHdoaWxlICFjID4gMCBkb1xuICAgICAgICBMb2dnZXJzLmZwcmludGYgZiBcIl9cIjtcbiAgICAgICAgYyA6PSAhYyAtIDFcbiAgICAgIGRvbmU7XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgZlxuICAgIClcbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG5fc3RvcmllcyA8PSAwICYmIGNvdW50ZXIgPSAwIHRoZW5cbiAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemVcbiAgICBlbHNlIGlmIGNvdW50ZXIgPiBuX3N0b3JpZXMgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5jID0gY291bnRlciAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIGxldCBubCA9IGxhc3QgKiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIC8gbl9zdG9yaWVzIGluXG4gICAgICBuYyAtIG5sXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBuID1cbiAgICBpZiBuIDw9IDAgdGhlblxuICAgICAgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBmIFwiJWNcIiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NDaGFyIGluXG4gICAgICBhdXggKG4gLSAxKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID0gYXV4IG4gaW5cbiAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgZiBpblxuICBsZXQgKCkgPSBpZiBjb3VudGVyID0gbl9zdG9yaWVzIHRoZW4gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgbGV0IGJhciA9IHRydWUsIGNvdW50ZXIsIGNvdW50ZXIgKyAxLCBuX3N0b3JpZXMgaW5cbiAgbGV0ICgpID0gc2F2ZV9wcm9ncmVzc19iYXIgYmFyIGluXG4gIGJhclxuIiwiKCoqXG4gICAqIGdyYXBoX2Nsb3N1cmUubWxcbiAgICpcbiAgICogQWxnb3JpdGhtcyB0byBjb21wdXRlIHRyYW5zaXRpdmUgY2xvc3VyZSBvZiBvYmVydmFibGVzIGluIHRyYWNlc1xuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDgvMjAxM1xuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTAvMDkvMjAxM1xuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIEEgPSBBcnJheVxubW9kdWxlIFMgPSBNb2RzLkludFNldFxubW9kdWxlIE0gPSBNb2RzLkludE1hcFxuXG5sZXQgaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gPSB0cnVlXG5sZXQgY2hlY2tfbW9kZSA9IGZhbHNlXG5cbnR5cGUgYWxnb190eXBlID0gVG9wX2Rvd24gfCBCb3R0b21fdXAgfCBDaGVja1xudHlwZSBvcmRlciA9IEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50IHwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnRcblxudHlwZSBjb25maWcgPSB7XG4gIGRvX3RpY2s6IGJvb2w7XG4gIGtlZXBfYWxsX25vZGVzOiBib29sO1xuICBjdXRfdHJhbnNpdGl2ZV9wYXRoOiBib29sO1xuICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHM6IGJvb2w7XG4gIG1heF9pbmRleDogaW50O1xuICBhbGdvOiBhbGdvX3R5cGU7XG59XG5cbmxldCBjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyID1cbiAge1xuICAgIGRvX3RpY2sgPSB0cnVlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gZmFsc2U7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IHRydWU7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gICAgYWxnbyA9IEJvdHRvbV91cCAoKmlmIGNoZWNrX21vZGUgdGhlbiBDaGVjayBlbHNlIFRvcF9kb3duKik7XG4gIH1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXIgPVxuICB7IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgd2l0aCBkb190aWNrID0gZmFsc2UgfVxuXG5sZXQgY29uZmlnX3NtYWxsX2dyYXBoID1cbiAge1xuICAgIGRvX3RpY2sgPSBmYWxzZTtcbiAgICBrZWVwX2FsbF9ub2RlcyA9IHRydWU7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IGZhbHNlO1xuICAgIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyA9IHRydWU7XG4gICAgYWxnbyA9IEJvdHRvbV91cDtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gIH1cblxubGV0IHN3YXAgZiBhIGIgPSBmIGIgYVxubGV0IGlnbm9yZV9mc3QgZiBfID0gZlxuXG5sZXQgcmVjIGNvbXBhcmVfc3VjYyBwIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgfCBhIDo6IHEgLT5cbiAgICAobWF0Y2ggcSB3aXRoXG4gICAgfCBiIDo6IF8gd2hlbiBwIGEgYiAtPiBjb21wYXJlX3N1Y2MgcCBxXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgc3RyaWN0bHlfaW5jcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPCBiKVxubGV0IHN0cmljdGx5X2RlY3JlYXNpbmcgPSBjb21wYXJlX3N1Y2MgKGZ1biAoYSA6IGludCkgYiAtPiBhID4gYilcbmxldCBjb25jYXQgYSA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgYSlcblxubGV0IHByaW50X2xpc3QgZiBsID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXUAuXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X3N0cmluZykgbFxuXG5sZXQgY2hlY2sgZm9ybSBwIGYgc3RyaW5nIGEgYiA9XG4gIG1hdGNoIHAgYSwgcCBiIHdpdGhcbiAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBiIGluXG4gICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX2FyZzFfMlwiKVxuICB8IHRydWUsIGZhbHNlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMlwiKVxuICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGEgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMVwiKVxuICB8IHRydWUsIHRydWUgLT5cbiAgICBsZXQgcmVwID0gZiBhIGIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gcmVwIGluXG4gICAgaWYgcCByZXAgdGhlblxuICAgICAgcmVwXG4gICAgZWxzZSAoXG4gICAgICBwcmludF9saXN0IGZvcm0gYTtcbiAgICAgIHByaW50X2xpc3QgZm9ybSBiO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIHJlcDtcbiAgICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9vdXRwdXRcIilcbiAgICApXG5cbmxldCBpc19zdHJpY3Rfc3VibGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgW10sIF8gOjogXyAtPiB0cnVlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnXG4gICAgfCBoIDo6IF8sIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gZmFsc2VcbiAgICB8IF8sIF8gOjogdCcgLT4gYXV4IGEgdCdcbiAgaW5cbiAgYXV4IGEgYlxuXG5sZXQgaW5zZXJ0X2VsdCBwIGUgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSBwIFsgZSBdXG5cbmxldCBkaWZmX2xpc3QgcCBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgYWNjdSA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBiLCBbXSAtPiBMaXN0LnJldiAoTGlzdC5yZXZfYXBwZW5kIGIgYWNjdSlcbiAgICB8IFtdLCBfIDo6IF8gLT4gTGlzdC5yZXYgYWNjdVxuICAgIHwgaCA6OiB0LCBoJyA6OiB0JyB3aGVuIGggPSBoJyAtPiBhdXggdCB0JyBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gYXV4IHQgYiAoaCA6OiBhY2N1KVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0JyBhY2N1XG4gIGluXG4gIGF1eCBhIGIgW11cblxubGV0IGNvbXBhcmVfYm9vbCBhIGIgPSBjb21wYXJlIGEgYiA8IDBcbmxldCBkaWZmX2xpc3RfZGVjcmVhc2luZyA9IGRpZmZfbGlzdCAoc3dhcCBjb21wYXJlX2Jvb2wpXG5sZXQgbWVyZ2VfbGlzdF9kZWNyZWFzaW5nID0gTGlzdF91dGlsLm1lcmdlX3VuaXEgKGZ1biB4IHkgLT4gU3RkbGliLmNvbXBhcmUgeSB4KVxuXG5sZXQgY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50IGNvbmZpZ1xuICAgIHByZWMgaXNfb2JzIGYgYSA9XG4gIGxldCBlcnJfbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlciBpblxuICBsZXQgaXNfb2JzID1cbiAgICBpZiBjb25maWcua2VlcF9hbGxfbm9kZXMgdGhlblxuICAgICAgZnVuIF8gLT5cbiAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgaXNfb2JzXG4gIGluXG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbmZpZy5zdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgJiYgY29uZmlnLm1heF9pbmRleCA+IDMwMCB0aGVuIChcbiAgICAgIGxldCBuX2VkZ2VzID0gTS5mb2xkIChpZ25vcmVfZnN0IChTLmZvbGQgKGlnbm9yZV9mc3Qgc3VjYykpKSBwcmVjIDAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgZXJyX2xvZ2dlciBcIlxcdFxcdFRyYW5zaXRpdmUgY2xvc3VyZSAoJWkgbm9kZXMsICVpIGVkZ2VzKVwiXG4gICAgICAgICAgbWF4X2luZGV4IG5fZWRnZXNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgKClcbiAgICApXG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBjbGVhbiwgX21heF9zdWNjID1cbiAgICBsZXQgbWF4X3N1Y2MgPSBBLmluaXQgKG1heF9pbmRleCArIDEpIChmdW4gaSAtPiBpKSBpblxuICAgIGxldCBfID1cbiAgICAgIE0uaXRlclxuICAgICAgICAoZnVuIHN1Y2MgLT5cbiAgICAgICAgICBTLml0ZXIgKGZ1biBwcmVkIC0+XG4gICAgICAgICAgICAgIEEuc2V0IG1heF9zdWNjIHByZWQgKG1heCBzdWNjIChBLmdldCBtYXhfc3VjYyBwcmVkKSkpKVxuICAgICAgICBwcmVjXG4gICAgaW5cbiAgICBsZXQgaXNfbGFzdF9zdWNjX29mID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICAgIGxldCBhZGQgbm9kZSBtYXhfc3VjYyA9XG4gICAgICBsZXQgb2xkX2wgPSBBLmdldCBpc19sYXN0X3N1Y2Nfb2YgbWF4X3N1Y2MgaW5cbiAgICAgIGxldCBsJyA9IG5vZGUgOjogb2xkX2wgaW5cbiAgICAgIEEuc2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBsJ1xuICAgIGluXG4gICAgbGV0IF8gPSBBLml0ZXJpIGFkZCBtYXhfc3VjYyBpblxuICAgIGxldCBfID0gQS5zZXQgaXNfbGFzdF9zdWNjX29mIDAgW10gaW5cbiAgICBsZXQgZ2Nfd2hlbl92aXNpdCBub2RlID1cbiAgICAgIExpc3QuaXRlciAoZnVuIGsgLT4gQS5zZXQgc19wcmVkX3N0YXIgayBbXSkgKEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBub2RlKVxuICAgIGluXG4gICAgZ2Nfd2hlbl92aXNpdCwgZnVuIGkgLT4gQS5nZXQgbWF4X3N1Y2MgaVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgIHwgU29tZSBlIC0+XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgKGZ1biBzdWNjIHNfcHJlZCAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSAtPlxuICAgICAgICBsZXQgcmVjIGF1eCAobCA6IGludCBsaXN0KSAoYWNjdSA6IGludCBsaXN0KSA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgfCBwcmVkIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBuZXdfbCA9IEEuZ2V0IHNfcHJlZF9zdGFyIHByZWQgaW5cbiAgICAgICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICAgICAgaWYgY29uZmlnLmN1dF90cmFuc2l0aXZlX3BhdGggdGhlblxuICAgICAgICAgICAgICAgIGRpZmZfbGlzdF9kZWNyZWFzaW5nIHQgbmV3X2xcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggZGlmZiAobWVyZ2VfbGlzdF9kZWNyZWFzaW5nIChwcmVkIDo6IG5ld19sKSBhY2N1KVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZF9zdGFyID1cbiAgICAgICAgICBsZXQgbF9wcmVkID0gUy5mb2xkIChmdW4gaSBqIC0+IGkgOjogaikgc19wcmVkIFtdIGluXG4gICAgICAgICAgbGV0IHMgPSBBLmdldCBzX3ByZWRfc3RhciBzdWNjIGluXG4gICAgICAgICAgYXV4IGxfcHJlZCBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID0gQS5zZXQgc19wcmVkX3N0YXIgc3VjYyBwcmVkX3N0YXIgaW5cbiAgICAgICAgbGV0IF8gPSBjbGVhbiBzdWNjIGluXG4gICAgICAgIGxldCB0aWNrID0gZG9fdGljayB0aWNrIGluXG4gICAgICAgIGlmIGlzX29icyBzdWNjIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgZiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdWNjIHByZWRfc3RhciBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyICsgMSwgYSkpXG4gICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChlcnJvciwgbG9nX2luZm8sIGIpKVxuICAgICAgICAgICAgYVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKHRpY2ssIGVycm9yLCBsb2dfaW5mbywgY291bnRlciwgYSkpXG4gICAgICBwcmVjXG4gICAgICAodGljaywgZXJyb3IsIGxvZ19pbmZvLCAxLCBhKVxuICBpblxuICBsZXQgXyA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAoZnVuIChfLCBlcnJvciwgbG9nX2luZm8sIF8sIGEpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgU3RvcC5zdWNjZXNzIChlcnJvciwgbG9nX2luZm8sIGEpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYikgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgPVxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgZiBfcCBfaCBjIGUgaSBzIGEgPVxuICAgIGxldCBfID0gQS5zZXQgYSBpIHMgaW5cbiAgICBlLCBjLCBTdG9wLnN1Y2Nlc3MgYVxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICBjb25maWcgcHJlYyBpc19vYnMgZiBzX3ByZWRfc3RhclxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgZ3JhcGgpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIChncmFwaCwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnQpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgXykgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBfZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgaXNfb2JzIGRlbHRhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCBwcmVjID0gTS5mb2xkIChmdW4gaSBzX3ByZWQgbCAtPiAoaSwgc19wcmVkKSA6OiBsKSBwcmVjIFtdIGluXG4gIGxldCBjcmVhdGVfdGFpbnRzIGkgPVxuICAgIGxldCByZWMgYXV4IGRlbHRhIG91dHB1dCA9XG4gICAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgICBvdXRwdXRcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IChkZWx0YSAtIDEpIChTLmVtcHR5IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCBkZWx0YSBbIFMuc2luZ2xldG9uIGkgXVxuICBpblxuICBsZXQgc2hpZnRfdGFpbnRzIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgdCA6OiB0JyA6OiBxIC0+IFMudW5pb24gdCB0JyA6OiBxXG4gICAgfCBfIC0+IGxcbiAgaW5cbiAgbGV0IHJlYyBtZXJnZV90YWludHMgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBfLCBbXSAtPiBsMVxuICAgIHwgW10sIF8gLT4gbDJcbiAgICB8IHQgOjogcSwgdCcgOjogcScgLT4gUy51bmlvbiB0IHQnIDo6IG1lcmdlX3RhaW50cyBxIHEnXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IHRhaW50IGkgdGFpbnRzID1cbiAgICBtYXRjaCB0YWludHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHQgOjogX3EgLT5cbiAgICAgIFMuaXRlclxuICAgICAgICAoZnVuIHRhaW50IC0+IEEuc2V0IHNfcHJlZF9zdGFyIHRhaW50IChpIDo6IEEuZ2V0IHNfcHJlZF9zdGFyIHRhaW50KSlcbiAgICAgICAgdFxuICBpblxuICBsZXQgZG9fdGljaywgdGljaywgY2xvc2VfdGljayA9XG4gICAgaWYgbWF4X2luZGV4ID4gMzAwICYmIGNvbmZpZy5kb190aWNrIHRoZW4gKFxuICAgICAgbGV0IHRpY2sgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG1heF9pbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgZiA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgIGxldCBjbG9zZSAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBmLCB0aWNrLCBjbG9zZVxuICAgICkgZWxzZVxuICAgICAgKGZ1biB4IC0+IHgpLCAoZmFsc2UsIDAsIDAsIDApLCBmdW4gKCkgLT4gKClcbiAgaW5cbiAgbGV0IHRhaW50aW5nID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gdGljayAoaSwgc19wcmVkKSAtPlxuICAgICAgICBsZXQgbmV3X3RhaW50ID1cbiAgICAgICAgICBpZiBpc19vYnMgaSB0aGVuXG4gICAgICAgICAgICBjcmVhdGVfdGFpbnRzIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbnRzID0gbWVyZ2VfdGFpbnRzIG5ld190YWludCAoQS5nZXQgdGFpbnRpbmcgaSkgaW5cbiAgICAgICAgbGV0ICgpID0gdGFpbnQgaSB0YWludHMgaW5cbiAgICAgICAgbGV0IHNoaWZ0ZWRfdGFpbnRzID0gc2hpZnRfdGFpbnRzIHRhaW50cyBpblxuICAgICAgICBsZXQgdGFpbnQgeCA9XG4gICAgICAgICAgQS5zZXQgdGFpbnRpbmcgeCAobWVyZ2VfdGFpbnRzIHNoaWZ0ZWRfdGFpbnRzIChBLmdldCB0YWludGluZyB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gUy5pdGVyIHRhaW50IHNfcHJlZCBpblxuICAgICAgICBsZXQgKCkgPSBBLnNldCB0YWludGluZyBpIFtdIGluXG4gICAgICAgIGRvX3RpY2sgdGljaylcbiAgICAgIHRpY2sgcHJlY1xuICBpblxuICBsZXQgKCkgPSBjbG9zZV90aWNrICgpIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudClcblxubGV0IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKG0sIG1vZGUpID1cbiAgbWF0Y2ggbW9kZSB3aXRoXG4gIHwgSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gbS4oaSlcbiAgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPlxuICAgIChtYXRjaCBtLihpKSB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgbCAtPiBMaXN0LnJldiAoaSA6OiBsKSlcblxubGV0IGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICAgID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYSwgYScpID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcbiAgaW5cbiAgbGV0IHQnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGIsIGInKSA9XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICB7IGNvbmZpZyB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG4gICAgICBwcmVjIGlzX29ic1xuICBpblxuICBsZXQgdCcnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJORVc6ICVmIE9MRDogJWYgXFxuXCIgKHQnIC0uIHQpICh0JycgLS4gdCcpIGluXG4gIGxldCBfID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgX3MgLT5cbiAgICAgICAgbGV0IHMgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChhLCBhJykgaW5cbiAgICAgICAgbGV0IHMnID0gZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAoYiwgYicpIGluXG4gICAgICAgIGlmIHMgPSBzJyB0aGVuXG4gICAgICAgICAgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJESUZGRVIgJWlcXG5cIiBpIGluXG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLCBcIikgcyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzJyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICAgICAgYVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChhLCBhJylcblxubGV0IGNsb3N1cmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29icyA9XG4gIG1hdGNoIGNvbmZpZy5hbGdvIHdpdGhcbiAgfCBDaGVjayAtPlxuICAgIGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICB8IEJvdHRvbV91cCAtPlxuICAgIGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzXG4gIHwgVG9wX2Rvd24gLT5cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcblxubGV0IHJlZHVjdGlvbl90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVjID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlY19zdGFyLCBfKSA9XG4gICAgY2xvc3VyZV90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuVHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcbiAgICAgIHByZWNcbiAgICAgIChmdW4gXyAtPiB0cnVlKVxuICAgICAgMlxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBNLmZvbGRcbiAgICAgIChmdW4gZWlkIG5laWdoIG91dCAtPlxuICAgICAgICBsZXQgdG9fcmVtb3ZlID0gQS5nZXQgcHJlY19zdGFyIGVpZCBpblxuICAgICAgICBsZXQgcyA9IFMuZm9sZCAoZnVuIGkgbCAtPiBpIDo6IGwpIG5laWdoIFtdIGluXG4gICAgICAgIGxldCBzID0gTGlzdC5yZXYgcyBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsMSBsMiBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgICAgfCBfLCBbXSAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzZXQgaSAtPiBTLmFkZCBpIHNldCkgb3V0cHV0IGwxXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHF1aXRlIGFubm95aW5nLCB3aHkgcHJlYyBpcyBub3QgZGVzY3JpYmVkIHdpdGggb3JkZXJlZCBsaXN0ICopXG4gICAgICAgICAgfCBbXSwgXyAtPiBvdXRwdXRcbiAgICAgICAgICB8IGggOjogcSwgaCcgOjogcScgLT5cbiAgICAgICAgICAgIGxldCBjbXAgPSBjb21wYXJlIGggaCcgaW5cbiAgICAgICAgICAgIGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBsMiAoUy5hZGQgaCBvdXRwdXQpXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBxJyBvdXRwdXRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChoIDo6IHEpIHEnIG91dHB1dFxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IGF1eCBzIHRvX3JlbW92ZSBTLmVtcHR5IGluXG4gICAgICAgIE0uYWRkIGVpZCBzIG91dClcbiAgICAgIHByZWMgcHJlY1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuR3JhcGhfcmVkdWN0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubGV0IHJlZHVjdGlvbiA9IHJlZHVjdGlvbl90b3BfZG93blxuIiwidHlwZSBxdWFya19saXN0cyA9IHtcbiAgc2l0ZV90ZXN0ZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIHNpdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIGludGVybmFsX3N0YXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG59XG5cbnR5cGUgZXZlbnRfa2luZCA9IE9CUyBvZiBzdHJpbmcgfCBFVkVOVCBvZiBUcmFjZS5ldmVudF9raW5kXG5cbmxldCBhdG9tX3Rlc3RlZCA9IDFcbmxldCBhdG9tX21vZGlmaWVkID0gMlxubGV0IGF0b21fdGVzdGVkbW9kaWZpZWQgPSAzXG5cbnR5cGUgYXRvbSA9IHtcbiAgY2F1c2FsX2ltcGFjdDogaW50OyAoKigxKSB0ZXN0ZWQgKDIpIG1vZGlmaWVkLCAoMykgdGVzdGVkICsgbW9kaWZpZWQqKVxuICBlaWQ6IGludDsgKCpldmVudCBpZGVudGlmaWVyKilcbiAga2luZDogZXZlbnRfa2luZDsgKCpvYnNlcnZhdGlvbjogc3RyaW5nIGxpc3QqKVxufVxuXG50eXBlIGF0dHJpYnV0ZSA9IGF0b20gbGlzdCAoKnZlcnRpY2FsIHNlcXVlbmNlIG9mIGF0b21zKilcblxudHlwZSBncmlkID0ge1xuICBmbG93OiAoaW50ICogaW50ICogaW50LCBhdHRyaWJ1dGUpIEhhc2h0YmwudDtcbiAgKCoobl9pLHNfaSxxX2kpIC0+IGF0dF9pIHdpdGggbl9pOiBub2RlX2lkLCBzX2k6IHNpdGVfaWQsIHFfaTpcbiAgICBsaW5rICgxKSBvciBpbnRlcm5hbCBzdGF0ZSAoMCkgKilcbiAgcGlkX3RvX2luaXQ6IChpbnQgKiBpbnQgKiBpbnQsIGludCkgSGFzaHRibC50O1xuICBvYnM6IGludCBsaXN0O1xuICBpbml0X3RibDogKGludCwgTW9kcy5JbnRTZXQudCkgSGFzaHRibC50OyAoKmRlY3JlYXNpbmcqKVxuICBpbml0X3RvX2VpZG1heDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbnR5cGUgY29uZmlnID0ge1xuICBldmVudHNfa2luZDogZXZlbnRfa2luZCBNb2RzLkludE1hcC50O1xuICBwcmVjXzE6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbiAgY29uZmxpY3Q6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBlbnJpY2hlZF9ncmlkID0ge1xuICBjb25maWc6IGNvbmZpZztcbiAgZGVwdGg6IGludDtcbiAgcHJlY19zdGFyOiBpbnQgbGlzdCBhcnJheSAqIEdyYXBoX2Nsb3N1cmUub3JkZXI7ICgqZGVjcmVhc2luZyopXG4gIGRlcHRoX29mX2V2ZW50OiBpbnQgTW9kcy5JbnRNYXAudDtcbiAgc2l6ZTogaW50O1xufVxuXG50eXBlIGZvcm1hdENmbG93ID0gRG90IHwgSHRtbCB8IEpzb25cblxubGV0IGVtcHR5X2NvbmZpZyA9XG4gIHtcbiAgICBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIGNvbmZsaWN0ID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgcHJlY18xID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gIH1cblxubGV0IHByaW50X2V2ZW50X2tpbmQgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmQgP2VudiBmIGVcbiAgfCBPQlMgaSAtPlxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT0JTKCVzKVwiIGlcbiAgICB8IFNvbWUgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgaSlcblxubGV0IGRlYnVnX3ByaW50X2NhdXNhbCBmIGkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaSA9IGF0b21fdGVzdGVkIHRoZW5cbiAgICAgICBcInRlc3RlZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fbW9kaWZpZWQgdGhlblxuICAgICAgIFwibW9kaWZpZWRcIlxuICAgICBlbHNlIGlmIGkgPSBhdG9tX3Rlc3RlZCBsb3IgYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJ0ZXN0ZWQmbW9kaWZpZWRcIlxuICAgICBlbHNlXG4gICAgICAgXCJDQVVTQUwgSU1QQUNUIFVOREVGSU5FRFwiKVxuXG5sZXQgZGVidWdfcHJpbnRfYXRvbSBmIGEgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwieyMlaTogJWEgJWF9XCIgYS5laWQgZGVidWdfcHJpbnRfY2F1c2FsIGEuY2F1c2FsX2ltcGFjdFxuICAgIChwcmludF9ldmVudF9raW5kID9lbnY6Tm9uZSlcbiAgICBhLmtpbmRcblxubGV0IGRlYnVnX3ByaW50X2dyaWQgZiBnID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+RmxvdzpALFwiIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIChub2RlX2lkLCBzaXRlX2lkLCBxKSBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpLiVpJXM6QCwlYUBdQCxcIiBub2RlX2lkIHNpdGVfaWRcbiAgICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAgIFwiflwiXG4gICAgICAgICAgIGVsc2UgaWYgcSA9IDEgdGhlblxuICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiVU5ERUZJTkVEXCIpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgZGVidWdfcHJpbnRfYXRvbSlcbiAgICAgICAgICBsKVxuICAgICAgZy5mbG93XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcblxubGV0IGVtcHR5X2dyaWQgKCkgPVxuICB7XG4gICAgZmxvdyA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBwaWRfdG9faW5pdCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBvYnMgPSBbXTtcbiAgICBpbml0X3RibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBpbml0X3RvX2VpZG1heCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgfVxuXG5sZXQgYnVpbGRfc3VicyBsID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAobiwgbWFwKSBhIC0+IHN1Y2MgbiwgTW9kcy5JbnRNYXAuYWRkIGEgbiBtYXApXG4gICAgICAgKDEsIE1vZHMuSW50TWFwLmVtcHR5KSBsKVxuXG5sZXQgc3VibWFwIHN1YnMgbCBtIGRlZmF1bHQgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbScgYSAtPlxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgU29tZSBuZXdfYSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgbmV3X2FcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICB8IFNvbWUgYSAtPiBhKSlcbiAgICAgICAgICBtJylcbiAgICBNb2RzLkludE1hcC5lbXB0eSBsXG5cbmxldCBhZGRfaW5pdF9waWQgZWlkIHBpZCBncmlkID1cbiAgbGV0IGVpZF9pbml0ID0gSGFzaHRibC5maW5kIGdyaWQucGlkX3RvX2luaXQgcGlkIGluXG4gIGxldCBvbGQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgZ3JpZC5pbml0X3RibCBlaWQgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGdyaWQuaW5pdF90YmwgZWlkIChNb2RzLkludFNldC5hZGQgZWlkX2luaXQgb2xkKSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RvX2VpZG1heCBlaWRfaW5pdCBlaWQgaW5cbiAgZ3JpZFxuXG5sZXQgX3N1YnNldCBzdWJzIGwgcyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBzJyBhIC0+XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gYSBzIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGEgc3VicyB3aXRoXG4gICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgcydcbiAgICAgIGVsc2VcbiAgICAgICAgcycpXG4gICAgTW9kcy5JbnRTZXQuZW1wdHkgbFxuXG5sZXQgc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGNvbmZpZyBsID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gc3VibWFwIHN1YnMgbCBjb25maWcuZXZlbnRzX2tpbmQgTm9uZTtcbiAgICBwcmVjXzEgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5wcmVjXzEgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICAgIGNvbmZsaWN0ID0gc3VibWFwIHN1YnMgbCBjb25maWcuY29uZmxpY3QgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICB9XG5cbmxldCBzdWJlbnJpY2hlZF9ncmlkX3dpdGhfc3VicyBzdWJzIGdyaWQgbCA9XG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IHN1Ym1hcCBzdWJzIGwgZ3JpZC5kZXB0aF9vZl9ldmVudCAoU29tZSAwKSBpblxuICBsZXQgZGVwdGggPSBNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBtYXgpIGRlcHRoX29mX2V2ZW50IDAgaW5cbiAge1xuICAgIHByZWNfc3RhciA9IGdyaWQucHJlY19zdGFyO1xuICAgIGNvbmZpZyA9IHN1YmNvbmZpZ193aXRoX3N1YnMgc3VicyBncmlkLmNvbmZpZyBsO1xuICAgIGRlcHRoX29mX2V2ZW50O1xuICAgIGRlcHRoO1xuICAgIHNpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICB9XG5cbmxldCBfc3ViY29uZmlnIGNvbmZpZyBsID0gc3ViY29uZmlnX3dpdGhfc3VicyAoYnVpbGRfc3VicyBsKSBjb25maWcgbFxubGV0IF9zdWJlbnJpY2hlZF9ncmlkIGdyaWQgbCA9IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGdyaWQgbFxubGV0IGFkZF9vYnNfZWlkIGVpZCBncmlkID0geyBncmlkIHdpdGggb2JzID0gZWlkIDo6IGdyaWQub2JzIH1cblxubGV0IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcXVhcmspIGdyaWQgPVxuICBIYXNodGJsLmZpbmQgZ3JpZC5mbG93IChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaylcblxubGV0IF9pc19lbXB0eV9ncmlkIGdyaWQgPSBIYXNodGJsLmxlbmd0aCBncmlkLmZsb3cgPSAwXG5cbmxldCBncmlkX2FkZCBxdWFyayBlaWQgKGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSkgZ3JpZCA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChIYXNodGJsLm1lbSBncmlkLmZsb3cgcXVhcmspIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGdyaWQucGlkX3RvX2luaXQgcXVhcmsgZWlkXG4gIGluXG4gIEhhc2h0YmwucmVwbGFjZSBncmlkLmZsb3cgcXVhcmsgYXR0cmlidXRlO1xuICBncmlkXG5cbmxldCBfbGFzdF9ldmVudCBhdHRyaWJ1dGUgPVxuICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhIDo6IF8gLT4gU29tZSBhLmVpZFxuXG4oKmFkZHMgYXRvbSBhIHRvIGF0dHJpYnV0ZSBhdHQuXG4gIENvbGxhcHNlcyBsYXN0IGF0b20gaWYgaWYgYmVhcnMgdGhlIHNhbWUgaWQgYXMgYSAtLWluIHRoZSBjYXNlIG9mIGEgbm9uIGF0b21pYyBhY3Rpb24qKVxubGV0IHB1c2ggKGEgOiBhdG9tKSAoYXR0IDogYXRvbSBsaXN0KSA9XG4gIG1hdGNoIGF0dCB3aXRoXG4gIHwgW10gLT4gWyBhIF1cbiAgfCBhJyA6OiBhdHQnIC0+XG4gICAgaWYgYScuZWlkID0gYS5laWQgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKGEnLmtpbmQgPSBhLmtpbmQpIGluXG4gICAgICB7IGEnIHdpdGggY2F1c2FsX2ltcGFjdCA9IGEuY2F1c2FsX2ltcGFjdCBsb3IgYScuY2F1c2FsX2ltcGFjdCB9IDo6IGF0dCdcbiAgICApIGVsc2VcbiAgICAgIGEgOjogYXR0XG5cbigqKnNpZGVfZWZmZWN0IEludDJTZXQudDogcGFpcnMgKGFnZW50cyxwb3J0cykgdGhhdCBoYXZlIGJlZW4gZnJlZWQgYXMgYSBzaWRlIGVmZmVjdCAtLXZpYSBhIERFTCBvciBhIEZSRUUgYWN0aW9uKilcbigqTkIgbm8gaW50ZXJuYWwgc3RhdGUgbW9kaWYgYXMgc2lkZSBlZmZlY3QqKVxuXG4oKmxldCBpbXBhY3QgaXNfbGluayBjID1cbiAgaWYgaXNfbGluayB0aGVuXG4gICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua19tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2xpbmtfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiAgZWxzZSAoKmludGVybmFsIHN0YXRlKilcbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19pbnRlcm5hbF9tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX3Rlc3RlZCBjIHRoZW4gYXRvbV90ZXN0ZWRtb2RpZmllZCBlbHNlIGF0b21fbW9kaWZpZWRcbiAgICBlbHNlIGF0b21fdGVzdGVkXG4qKVxubGV0IGFkZCAoKG5vZGVfaWQsIF8pLCBzaXRlX2lkKSBpc19saW5rIHZhIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgPVxuICBsZXQgcSA9XG4gICAgaWYgaXNfbGluayB0aGVuXG4gICAgICBhdG9tX3Rlc3RlZFxuICAgIGVsc2VcbiAgICAgIDBcbiAgaW5cbiAgbGV0IGF0dCA9IHRyeSBncmlkX2ZpbmQgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWQgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgbGV0IGF0dCA9XG4gICAgcHVzaFxuICAgICAgeyBjYXVzYWxfaW1wYWN0ID0gdmE7IGVpZCA9IGV2ZW50X251bWJlcjsga2luZCAoKjsgb2JzZXJ2YXRpb24gPSBvYnMqKSB9XG4gICAgICBhdHRcbiAgaW5cbiAgbGV0IGdyaWQgPSBncmlkX2FkZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZXZlbnRfbnVtYmVyIGF0dCBncmlkIGluXG4gIGFkZF9pbml0X3BpZCBldmVudF9udW1iZXIgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWRcblxubGV0IGFkZF9hY3Rpb25zIGVudiBncmlkIGV2ZW50X251bWJlciBraW5kIGFjdGlvbnMgPVxuICBsZXQgcmVjIGF1eCBncmlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGdyaWRcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpIDo6IHEgLT5cbiAgICAgIGxldCBncmlkJyA9IGFkZCBzaXRlMiB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgYXV4IChhZGQgc2l0ZTEgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQnIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgOjogcSAtPlxuICAgICAgYXV4IChhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgKCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCBuYSkgYXMgYWcpLCBfKVxuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIG5hKSBhcyBhZykgKVxuICAgICAgOjogcSAtPlxuICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgbGV0IGFnX2ludGYgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgbmEgaW5cbiAgICAgIGxldCBncmlkID0gYWRkIChhZywgLTEpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBsZXQgZ3JpZCA9XG4gICAgICAgIFNpZ25hdHVyZS5mb2xkXG4gICAgICAgICAgKGZ1biBzaXRlIF8gZ3JpZCAtPlxuICAgICAgICAgICAgbGV0IGdyaWQnID1cbiAgICAgICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgbmEgc2l0ZSBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGdyaWRcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSBmYWxzZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpXG4gICAgICAgICAgZ3JpZCBhZ19pbnRmXG4gICAgICBpblxuICAgICAgYXV4IGdyaWQgcVxuICBpblxuICBhdXggZ3JpZCBhY3Rpb25zXG5cbmxldCBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIga2luZCB0ZXN0cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gZ3JpZCAtPiBmdW5jdGlvblxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIGZhbHNlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzaXRlXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgICAgYWRkIHNpdGUxIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpKVxuICAgIGdyaWQgdGVzdHNcblxubGV0IHJlY29yZCAoa2luZCwgZXZlbnQsIF8pIGV2ZW50X251bWJlciBlbnYgZ3JpZCA9XG4gIGxldCBncmlkID1cbiAgICBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgaW5cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZClcbiAgICAgIFsgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXVxuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPlxuICAgICAgYWRkXG4gICAgICAgIChmc3Qgc2l0ZSwgLTEpXG4gICAgICAgIHRydWUgYXRvbV90ZXN0ZWRcbiAgICAgICAgKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgICAgIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgZ3JpZCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcblxubGV0IHJlY29yZF9vYnMgKGtpbmQsIHRlc3RzLCBfKSBzaWRlX2VmZmVjdHMgZXZlbnRfbnVtYmVyIGdyaWQgPVxuICBsZXQgZ3JpZCA9IGFkZF9vYnNfZWlkIGV2ZW50X251bWJlciBncmlkIGluXG4gIGxldCBncmlkID0gYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChPQlMga2luZCkgdGVzdHMgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPiBhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSlcbiAgICBncmlkIHNpZGVfZWZmZWN0c1xuXG5sZXQgcmVjb3JkX2luaXQgKGxibCwgYWN0aW9ucykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCAoVHJhY2UuSU5JVCBsYmwpKSBhY3Rpb25zXG5cbmxldCBhZGRfcHJlZCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgcHJlZF9zZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5wcmVjXzEgaW5cbiAgbGV0IHByZWNfMSA9XG4gICAgTW9kcy5JbnRNYXAuYWRkIGVpZCAoTW9kcy5JbnRTZXQuYWRkIGF0b20uZWlkIHByZWRfc2V0KSBjb25maWcucHJlY18xXG4gIGluXG4gIHsgY29uZmlnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG5cbmxldCBhZGRfY29uZmxpY3QgZWlkIGF0b20gY29uZmlnID1cbiAgbGV0IGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjb25maWcuZXZlbnRzX2tpbmQgaW5cbiAgbGV0IGNmbGN0X3NldCA9XG4gICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGVpZCBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgbGV0IGNmbGN0ID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgY2ZsY3Rfc2V0KSBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBjb25mbGljdCA9IGNmbGN0OyBldmVudHNfa2luZCB9XG5cbmxldCByZWMgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgbGFzdF90ZXN0ZWQgYXR0cmlidXRlIGNvbmZpZyA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gY29uZmlnXG4gIHwgYXRvbSA6OiBhdHQgLT5cbiAgICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICAgIGxldCBwcmVjXzEgPVxuICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNvbmZpZy5wcmVjXzFcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY29uZmlnLnByZWNfMVxuICAgIGluXG4gICAgbGV0IGNvbmZpZyA9IHsgY29uZmlnIHdpdGggZXZlbnRzX2tpbmQ7IHByZWNfMSB9IGluXG4gICAgKCphdG9tIGhhcyBhIG1vZGlmaWNhdGlvbiopXG4gICAgaWZcbiAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gY29uZmlnIHByZWRfaWQgLT4gYWRkX3ByZWQgcHJlZF9pZCBhdG9tIGNvbmZpZylcbiAgICAgICAgICBjb25maWcgbGFzdF90ZXN0ZWRcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdGVkID1cbiAgICAgICAgaWZcbiAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFtdXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIChTb21lIGF0b20uZWlkKSB0ZXN0ZWQgYXR0IGNvbmZpZ1xuICAgICkgZWxzZSAoXG4gICAgICAoKiBhdG9tIGlzIGEgcHVyZSB0ZXN0KilcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBtYXRjaCBsYXN0X21vZGlmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNvbmZpZ1xuICAgICAgICB8IFNvbWUgZWlkIC0+XG4gICAgICAgICAgYWRkX2NvbmZsaWN0IGVpZCBhdG9tXG4gICAgICAgICAgICBjb25maWcgKCphZGRpbmcgY29uZmxpY3Qgd2l0aCBsYXN0IG1vZGlmaWNhdGlvbiopXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgKGF0b20uZWlkIDo6IGxhc3RfdGVzdGVkKSBhdHQgY29uZmlnXG4gICAgKVxuXG5sZXQgY3V0ID8od2l0aF9yZWR1Y3Rpb24gPSB0cnVlKSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhdHRyaWJ1dGVfaWRzXG4gICAgZ3JpZCA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCByZWMgYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgY2ZnID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVfaWRzIHdpdGhcbiAgICB8IFtdIC0+IGNmZ1xuICAgIHwgKG5vZGVfaSwgc2l0ZV9pLCB0eXBlX2kpIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cmlidXRlID1cbiAgICAgICAgdHJ5IGdyaWRfZmluZCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgZ3JpZFxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBpbnZhbGlkX2FyZyBcIkNhdXNhbC5jdXRcIlxuICAgICAgaW5cbiAgICAgIGxldCBjZmcgPVxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICAgICAgICB8IFtdIC0+IGNmZ1xuICAgICAgICB8IGF0b20gOjogYXR0IC0+XG4gICAgICAgICAgbGV0IGV2ZW50c19raW5kID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY2ZnLmV2ZW50c19raW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlY18xID1cbiAgICAgICAgICAgIGxldCBwcmVkcyA9XG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBhdG9tLmVpZCBjZmcucHJlY18xXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIHByZWRzIGNmZy5wcmVjXzFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgW11cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb2RpZiA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX21vZGlmaWVkXG4gICAgICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU29tZSBhdG9tLmVpZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9hdHRyaWJ1dGUgbW9kaWYgdGVzdGVkIGF0dCB7IGNmZyB3aXRoIHByZWNfMTsgZXZlbnRzX2tpbmQgfVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2NvbmZpZyB0bCBjZmdcbiAgaW5cbiAgbGV0IGNmZyA9IGJ1aWxkX2NvbmZpZyBhdHRyaWJ1dGVfaWRzIGVtcHR5X2NvbmZpZyBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHJlZHVjdGlvbiA9XG4gICAgaWYgd2l0aF9yZWR1Y3Rpb24gdGhlblxuICAgICAgR3JhcGhfY2xvc3VyZS5yZWR1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2ZnLnByZWNfMVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgY2ZnLnByZWNfMVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgY2ZnIHdpdGggcHJlY18xID0gcmVkdWN0aW9uIH1cblxubGV0IHBwX2F0b20gZiBhdG9tID1cbiAgbGV0IGltcF9zdHIgPVxuICAgIG1hdGNoIGF0b20uY2F1c2FsX2ltcGFjdCB3aXRoXG4gICAgfCAxIC0+IFwib1wiXG4gICAgfCAyIC0+IFwieFwiXG4gICAgfCAzIC0+IFwiJVwiXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLnN0cmluZ19vZl9hdG9tXCJcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzXyVkXCIgaW1wX3N0ciBhdG9tLmVpZFxuXG5sZXQgX2R1bXAgZ3JpZCBmaWMgPVxuICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgKEZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uIGZpYyBeIFwiLnR4dFwiKSBpblxuICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZCAwIGluXG4gIEhhc2h0YmwuZm9sZFxuICAgIChmdW4gKG5faWQsIHNfaWQsIHEpIGF0dCBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBkIFwiIyVpLiVpJWM6JWFALFwiIG5faWQgc19pZFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAnfidcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgJyEnKVxuICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSBwcF9hdG9tKSBhdHQpXG4gICAgZ3JpZC5mbG93ICgpO1xuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBkIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBkX2NoYW5cblxubGV0IGlkc19vZl9ncmlkIGdyaWQgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLmZsb3cgW11cbmxldCBjb25maWdfb2ZfZ3JpZCA9IGN1dFxuXG4oKmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnX29sZCAgY29uZmlnID1cbiAgbGV0IHJlYyBwcmVjX2Nsb3N1cmUgY29uZmlnIHRvZG8gYWxyZWFkeV9kb25lIGNsb3N1cmUgPVxuICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHRvZG8gdGhlbiBjbG9zdXJlXG4gICAgZWxzZVxuICAgICAgbGV0IGVpZCA9IE1vZHMuSW50U2V0LmNob29zZSB0b2RvIGluXG4gICAgICBsZXQgdG9kbycgPSBNb2RzLkludFNldC5yZW1vdmUgZWlkIHRvZG8gaW5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBlaWQgYWxyZWFkeV9kb25lXG4gICAgICB0aGVuXG4gICAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbycgYWxyZWFkeV9kb25lIGNsb3N1cmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgSW50TWFwLmZpbmQgZWlkIGNvbmZpZy5wcmVjXzEgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC51bmlvbiB0b2RvJyBwcmVjKSAoSW50U2V0LmFkZCBlaWQgYWxyZWFkeV9kb25lKSAoSW50U2V0LnVuaW9uIHByZWMgY2xvc3VyZSlcbiAgaW5cbiAgSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBraW5kIHByZWNfc3RhciAtPlxuICAgICAgbGV0IHNldCA9IHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC5zaW5nbGV0b24gZWlkKSBNb2RzLkludFNldC5lbXB0eSBNb2RzLkludFNldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIEludE1hcC5hZGQgZWlkIHNldCBwcmVjX3N0YXJcbiAgICApIGNvbmZpZy5ldmVudHMgSW50TWFwLmVtcHR5ICopXG5cbmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnID0gR3JhcGhfY2xvc3VyZS5jbG9zdXJlXG5cbmxldCBkZXB0aF9hbmRfc2l6ZV9vZl9ldmVudCBjb25maWcgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBlaWQgcHJlY19laWRzIChlbWFwLCBfKSAtPlxuICAgICAgbGV0IGQgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biBlaWQnIGQgLT5cbiAgICAgICAgICAgIGxldCBkJyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAwIGVpZCcgZW1hcCBpblxuICAgICAgICAgICAgbWF4IChkJyArIDEpIGQpXG4gICAgICAgICAgcHJlY19laWRzIDBcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgZWlkIGQgZW1hcCwgZClcbiAgICBjb25maWcucHJlY18xIChNb2RzLkludE1hcC5lbXB0eSwgMClcblxubGV0IGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIGdyaWQgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlY19zdGFyID1cbiAgICBwcmVjX3N0YXJfb2ZfY29uZmlnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAoU29tZSBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzFcbiAgICAgIHRvX2tlZXBcbiAgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50LCBkZXB0aCA9IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyBpblxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIHtcbiAgICAgIGNvbmZpZztcbiAgICAgIHByZWNfc3RhcjtcbiAgICAgIGRlcHRoO1xuICAgICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgICBzaXplID0gTW9kcy5JbnRNYXAuc2l6ZSBjb25maWcucHJlY18xO1xuICAgIH0gKVxuXG5sZXQgZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZVxuICAgIGdyaWQgZiBhID1cbiAgbGV0IGtlZXBfbCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhIGIgLT4gTW9kcy5JbnRTZXQuYWRkIGIgYSkgTW9kcy5JbnRTZXQuZW1wdHkgZ3JpZC5vYnNcbiAgaW5cbiAgbGV0IHRvX2tlZXAgaSA9IE1vZHMuSW50U2V0Lm1lbSBpIGtlZXBfbCBpblxuICBsZXQgaWRzID0gaWRzX29mX2dyaWQgZ3JpZCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIGNvbmZpZ19vZl9ncmlkIH53aXRoX3JlZHVjdGlvbjpmYWxzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHNcbiAgICAgIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBHcmFwaF9jbG9zdXJlLmNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzKSBjb25maWdfY2xvc3VyZSBjb25maWcucHJlY18xIHRvX2tlZXAgZlxuICAgIGFcblxubGV0IHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmID0gZnVuY3Rpb25cbiAgfCBPQlMgbmFtZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXVwiIG5hbWVcbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmIGVcblxubGV0IGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfZ3JpZCBmb3JtID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHNvcnRlZF9ldmVudHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGQgZG1hcCAtPlxuICAgICAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGQgZG1hcCBpblxuICAgICAgICBNb2RzLkludE1hcC5hZGQgZCAoTW9kcy5JbnRTZXQuYWRkIGVpZCBzZXQpIGRtYXApXG4gICAgICBkZXB0aF9vZl9ldmVudCBNb2RzLkludE1hcC5lbXB0eVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4ldEAsZGlncmFwaCBHe0AsIHJhbmtzZXA9LjUgO0AsXCIgcHJvZmlsaW5nO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBkIGVpZHNfYXRfZCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPGh2PnsgcmFuayA9IHNhbWUgOyBcXFwiJWRcXFwiIFtzaGFwZT1wbGFpbnRleHRdIDtALFwiIGQ7XG4gICAgICBNb2RzLkludFNldC5pdGVyXG4gICAgICAgIChmdW4gZWlkIC0+XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIGNvbmZpZy5ldmVudHNfa2luZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgU29tZSBhdG9tX2tpbmQgLT5cbiAgICAgICAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgJWEgO0AsXCIgZWlkXG4gICAgICAgICAgICAgICAgKHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudilcbiAgICAgICAgICAgICAgICBhdG9tX2tpbmRcbiAgICAgICAgICAoKiBMaXN0Lml0ZXIgKGZ1biBvYnMgLT4gZnByaW50ZiBkZXNjIFwib2JzXyVkIFtsYWJlbCA9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXSA7XFxuIG5vZGVfJWQgLT4gb2JzXyVkIFthcnJvd2hlYWQ9dmVlXTtcXG5cIiBlaWQgb2JzIGVpZCBlaWQpIGF0b20ub2JzZXJ2YXRpb24gOyopKVxuICAgICAgICBlaWRzX2F0X2Q7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUBdQCxcIilcbiAgICBzb3J0ZWRfZXZlbnRzO1xuICBsZXQgY3B0ID0gcmVmIDAgaW5cbiAgd2hpbGUgIWNwdCArIDEgPCBNb2RzLkludE1hcC5zaXplIHNvcnRlZF9ldmVudHMgZG9cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVkXFxcIiAtPiBcXFwiJWRcXFwiIFtzdHlsZT1cXFwiaW52aXNcXFwiXTtALFwiICFjcHQgKCFjcHQgKyAxKTtcbiAgICBjcHQgOj0gIWNwdCArIDFcbiAgZG9uZTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIHByZWRfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgICAoZnVuIGVpZCcgLT5cbiAgICAgICAgICAgIGlmIGVpZCcgPSAwIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgLT4gbm9kZV8lZEAsXCIgZWlkJyBlaWQpXG4gICAgICAgICAgcHJlZF9zZXQpXG4gICAgY29uZmlnLnByZWNfMTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIGNmbGN0X3NldCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAoZnVuIGVpZCcgcHJlYyAtPlxuICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBhdXggcHJlYyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgaCA+IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybVxuICAgICAgICAgICAgICAgICAgICBcIm5vZGVfJWQgLT4gbm9kZV8lZCBbc3R5bGU9ZG90dGVkLCBhcnJvd2hlYWQgPSB0ZWVdQCBcIiBlaWRcbiAgICAgICAgICAgICAgICAgICAgZWlkJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwcmVjKVxuICAgICAgICAgICAgY2ZsY3Rfc2V0IHByZWNcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgICkpXG4gICAgY29uZmlnLmNvbmZsaWN0O1xuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUAsXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCIvKkAsIERvdCBnZW5lcmF0aW9uIHRpbWU6ICVmQCwqL0BdQC5cIiAoU3lzLnRpbWUgKCkgLS4gdClcblxubGV0IGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IH50cmFpbGluZzpQcC5zcGFjZSBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgKGZ1biBmIChlaWQsIGF0b21fa2luZCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiZy5zZXROb2RlKCVpLCB7IGxhYmVsOiBcXFwiJWFcXFwiLCBzdHlsZTogXFxcImZpbGw6ICVzXFxcIiB9KTtcIiBlaWRcbiAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZCB+ZW52KSBhdG9tX2tpbmRcbiAgICAgICAgICAobWF0Y2ggYXRvbV9raW5kIHdpdGhcbiAgICAgICAgICB8IE9CUyBfIC0+IFwiI2Y3N1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSAtPiBcIiM3ZjdcIlxuICAgICAgICAgIHwgRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gXCIjNzdmXCIpKVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5ldmVudHNfa2luZFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5lbXB0eVxuICAgICAgKGZ1biBmIChlaWQsIHNldCkgLT5cbiAgICAgICAgUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZVxuICAgICAgICAgIChmdW4gZiBlaWQnIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJnLnNldEVkZ2UoJWksJWkse30pO1wiIGVpZCcgZWlkKVxuICAgICAgICAgIGYgc2V0KVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5wcmVjXzFcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgc3ZnID0gZDMuc2VsZWN0KFxcXCJzdmdcXFwiKSxpbm5lciA9IHN2Zy5zZWxlY3QoXFxcImdcXFwiKTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciB6b29tID0gZDMuYmVoYXZpb3Iuem9vbSgpLm9uKFxcXCJ6b29tXFxcIiwgZnVuY3Rpb24oKSB7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiICtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gUnVuIHRoZSByZW5kZXJlci4gVGhpcyBpcyB3aGF0IGRyYXdzIHRoZSBmaW5hbCBncmFwaC5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiem9vbUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi50cmFuc2xhdGUoWyhzdmcuYXR0cihcXFwid2lkdGhcXFwiKSAtIGcuZ3JhcGgoKS53aWR0aCAqIGluaXRpYWxTY2FsZSkgLyAyLCBcXFxuICAgICAgIDIwXSlALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIuc2NhbGUoaW5pdGlhbFNjYWxlKUAsLmV2ZW50KHN2Zyk7QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwic3ZnLmF0dHIoJ2hlaWdodCcsIGcuZ3JhcGgoKS5oZWlnaHQgKiBpbml0aWFsU2NhbGUgKyA0MCk7XCJcblxubGV0IGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2dyaWQgPVxuICBsZXQgdGl0bGUgZiA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzIGNvbXByZXNzZWQgc3RvcnkgbnVtYmVyICVpXCIgY29tcHJlc3Npb25fdHlwZSBjcHRcbiAgaW5cbiAgUHBfaHRtbC5ncmFwaF9wYWdlIHRpdGxlXG4gICAgW1xuICAgICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDt9XCJcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD1cXFwiOTYwXFxcIj48Zz48L2c+PC9zdmc+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxwPkBbJXRAXTwvcD5ALFwiIHByb2ZpbGluZyBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXRAXUAsPC9zY3JpcHQ+XCJcbiAgICAgICAgKGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQpKVxuXG5sZXQgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoc2l0ZSwgaW50ZXJuYWwpIC0+XG4gICAgICBtYXRjaCBpbnRlcm5hbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMCkpIHF1YXJrc1xuICAgICAgICAmJiBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMSkpIHF1YXJrc1xuICAgICAgfCBOb25lIC0+IExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzKVxuICAgIHNpdGVzXG5cbmxldCBjaGVja19tb2RpZmllZF9xdWFya3MgKChhaWQsIF8pLCBzaXRlKSBtb2RpZiBxdWFya3MgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGMsIChuLCBzLCBtKSkgLT5cbiAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfdGVzdGVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX3Rlc3RlZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfZXZlbnRfcXVhcmtzIGFjdGlvbnMgdGVzdHMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgIGNoZWNrX2NyZWF0ZV9xdWFya3MgYWlkIHNpdGVzIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgYXNpdGUgLT4gY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoYXNpdGUxLCBhc2l0ZTIpXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoYXNpdGUxLCBhc2l0ZTIpIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgJiYgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoYWlkLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZCkgJiYgbiA9IGFpZClcbiAgICAgICAgICBxdWFya3MpXG4gICAgYWN0aW9uc1xuICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAoTGlzdC5mb3JfYWxsIChmdW5jdGlvblxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgKGFpZCwgXykgLT5cbiAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAoZnVuIChjLCAobiwgXywgXykpIC0+XG4gICAgICAgICAgICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgICAgIGNoZWNrX3Rlc3RlZF9xdWFya3MgYXNpdGUgMCBxdWFya3NcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIGFzaXRlXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAxIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgICAgJiYgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTIgMSBxdWFya3MpKVxuICAgICAgIHRlc3RzXG5cbmxldCBsb2dfZXZlbnQgaWQgcXVhcmtzIGV2ZW50X2tpbmQgc3RlcHMgPVxuICBtYXRjaCBldmVudF9raW5kIHdpdGhcbiAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKGFpZCwgXyksIHNpdGVzKSAtPlxuICAgICAgICAgICAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImluaXQgZXZlbnQgaGFzIGFjdGlvbnMgbm90IGFsbG93ZWRcIikpKVxuICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgX1xuICAgICAgICAgIHwgVHJhY2UuRHVtbXkgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlJVTEUgcmlkKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAocmlkJywgZSwgXykgLT5cbiAgICAgICAgICAgIHJpZCA9IHJpZCdcbiAgICAgICAgICAgICYmIGNoZWNrX2V2ZW50X3F1YXJrcyBlLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgICAgICAoZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA6OiBlLkluc3RhbnRpYXRpb24udGVzdHMpXG4gICAgICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IE9CUyBfIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXyAtPiB0cnVlXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IEVWRU5UIChUcmFjZS5QRVJUIHBlcnQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChwZXJ0JywgZSwgXykgLT5cbiAgICAgICAgICAgIHBlcnQgPSBwZXJ0J1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG5cbmxldCBqc29uX29mX2dyaWQgZW5yaWNoZWRfZ3JpZCBncmlkX3N0b3J5IHN0ZXBzID1cbiAgbGV0IGNvbmZpZyA9IGVucmljaGVkX2dyaWQuY29uZmlnIGluXG4gIGxldCBwcmVjX3N0YXIgPSBlbnJpY2hlZF9ncmlkLnByZWNfc3RhciBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQgPSBlbnJpY2hlZF9ncmlkLmRlcHRoX29mX2V2ZW50IGluXG4gIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAhUGFyYW1ldGVyLmRlZmF1bHRFeHRBcnJheVNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gcXVhcmsgYXR0X2xzIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gYXRvbSAtPiBIYXNodGJsLmFkZCB0YmwgYXRvbS5laWQgKGF0b20uY2F1c2FsX2ltcGFjdCwgcXVhcmspKVxuICAgICAgICAgIGF0dF9scylcbiAgICAgIGdyaWRfc3RvcnkuZmxvd1xuICBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIGxldCBub2RlX3RvX2pzb24gZWlkID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBxdWFya3MgPSBIYXNodGJsLmZpbmRfYWxsIHRibCBlaWQgaW5cbiAgICAgICAgbG9nX2V2ZW50IGVpZCBxdWFya3MgYXRvbV9raW5kIHN0ZXBzXG4gICAgICApIGVsc2VcbiAgICAgICAgYE51bGxcbiAgaW5cbiAgbGV0IG5vZGVzX3RvX2xpc3QgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyBlaWRzX2F0X2QgbHMgLT5cbiAgICAgICAgbGV0IGxzJycgPSBNb2RzLkludFNldC5mb2xkIChmdW4gZWlkIGxzJyAtPiBlaWQgOjogbHMnKSBlaWRzX2F0X2QgW10gaW5cbiAgICAgICAgbHMnJyBAIGxzKVxuICAgICAgc29ydGVkX2V2ZW50cyBbXVxuICBpblxuICBsZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uIG5vZGVzX3RvX2xpc3QgaW5cbiAgbGV0IGVkZ2VfdG9fanNvbiAoZWlkLCBlaWQnKSA9IGBBc3NvYyBbIFwiZnJvbVwiLCBgSW50IGVpZCc7IFwidG9cIiwgYEludCBlaWQgXSBpblxuICBsZXQgcHJlY19lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgcHJlZF9zZXQgbHMgLT5cbiAgICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGVpZCcgbHMnIC0+XG4gICAgICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgbHMnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnKVxuICAgICAgICAgICAgICBwcmVkX3NldCBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbHMnJyBAIGxzXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGxzKVxuICAgICAgY29uZmlnLnByZWNfMSBbXVxuICBpblxuICBsZXQgcHJlY19lZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb24gcHJlY19lZGdlcyBpblxuICBsZXQgY29uZmxfZWRnZXMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGNmbGN0X3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgcHJlYyA9IHRyeSAoZnN0IHByZWNfc3RhcikuKGVpZCkgd2l0aCBfIC0+IFtdIGluXG4gICAgICAgICAgbGV0IF8sIGxzJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkX2ludlxuICAgICAgICAgICAgICAoZnVuIGVpZCcgKHByZWMsIGxzJykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGggPSBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXggdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChlaWQsIGVpZCcpIDo6IGxzJ1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHByZWMsIGxzJycpXG4gICAgICAgICAgICAgIGNmbGN0X3NldCAocHJlYywgbHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscydcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcuY29uZmxpY3QgW11cbiAgaW5cbiAgbGV0IGNvbmZsX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBjb25mbF9lZGdlcyBpblxuICAoYEFzc29jXG4gICAgIFtcbiAgICAgICBcIm5vZGVzXCIsIG5vZGVzX3RvX2pzb247XG4gICAgICAgXCJjYXVzZVwiLCBwcmVjX2VkZ2VzX3RvX2pzb247XG4gICAgICAgXCJpbmhpYml0XCIsIGNvbmZsX2VkZ2VzX3RvX2pzb247XG4gICAgIF1cbiAgICA6IFlvanNvbi5CYXNpYy50KVxuXG4oKnN0b3J5X2xpc3Q6WyhrZXlfaSxsaXN0X2kpXSBldCBsaXN0X2k6WyhncmlkLF8sc2ltX2luZm8gb3B0aW9uKS4uLl1cbiAgZXQgc2ltX2luZm86e3dpdGggc3RvcnlfaWQ6aW50IHN0b3J5X3RpbWU6IGZsb2F0IDsgc3RvcnlfZXZlbnQ6IGludH0qKVxubGV0IHByZXR0eV9wcmludCB+ZG90Rm9ybWF0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBjb25maWdfY2xvc3VyZVxuICAgIGNvbXByZXNzaW9uX3R5cGUgbGFiZWwgZ3JpZF9saXN0ID1cbiAgbWF0Y2hcbiAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICB8IFNvbWUgZXJyX2ZtdCAtPlxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZ3JpZF9saXN0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGNvbXByZXNzaW9uX3R5cGUgPSBcIlwiIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkIGZsb3clc0AuXCIgblxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGVycl9mbXQgXCIrIFByZXR0eSBwcmludGluZyAlZCAlc2NvbXByZXNzZWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgICAoaWYgbiA+IDEgdGhlblxuICAgICAgICAgICAgIFwic1wiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlwiKVxuICAgIGluXG4gICAgbGV0IGNvbXByZXNzaW9uX3R5cGUgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBcIm5vbmVcIlxuICAgICAgZWxzZVxuICAgICAgICBjb21wcmVzc2lvbl90eXBlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgKHosIHgsIHkpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgeCA9XG4gICAgICAgICAgICBlbnJpY2hfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZSB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sICh6LCB4LCB5KSA6OiBsaXN0KVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBbXSkgZ3JpZF9saXN0XG4gICAgaW5cbiAgICBsZXQgc3RvcnlfbGlzdCA9IExpc3QucmV2IHN0b3J5X2xpc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGNwdCAoc3RlcHMsIGVucmljaGVkX2NvbmZpZywgc3RvcmllcykgLT5cbiAgICAgICAgICBsZXQgYXZfdCwgaWRzLCBuID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGF2X3QsIGlkcywgbikgaW5mbyAtPlxuICAgICAgICAgICAgICAgICggYXZfdCArLiBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lLFxuICAgICAgICAgICAgICAgICAgaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgOjogaWRzLFxuICAgICAgICAgICAgICAgICAgbiArIDEgKSlcbiAgICAgICAgICAgICAgKDAuLCBbXSwgMCkgKExpc3QucmV2IHN0b3JpZXMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgKCpkdW1wIGdyaWQgZmljIHN0YXRlIGVudiA7ICopXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBkb3RGb3JtYXQgPSBKc29uIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBfLCBncmlkX3N0b3J5LCBfID0gTGlzdC5udGggZ3JpZF9saXN0IGNwdCBpblxuICAgICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgICBcIi5qc29uXCJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiXG4gICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbl9vZl9ncmlkIGVucmljaGVkX2NvbmZpZyBncmlkX3N0b3J5IHN0ZXBzKSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgICAgICAgfCBEb3QgfCBKc29uIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIi8qIEBbQ29tcHJlc3Npb24gb2YgJWQgY2F1c2FsIGZsb3dzXCIgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCBvYnRhaW5lZCBpbiBhdmVyYWdlIGF0ICVFIHQudUBdICovQCxcIlxuICAgICAgICAgICAgICAgICAgKGF2X3QgLy4gZmxvYXRfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFsvKiBDb21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOkAgWyVhXSAqL0BdXCJcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIjtALFwiKVxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgICAgICAgICAgICAgIGlkc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGVcbiAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICBcIi5kb3RcIlxuICAgICAgICAgICAgICAgIChkb3Rfb2ZfZ3JpZCBwcm9maWxpbmcgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICAgIHwgSHRtbCAtPlxuICAgICAgICAgICAgICBsZXQgcHJvZmlsaW5nIGRlc2MgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFs8diAyPjxkbD5ALDxkdD5Db21wcmVzc2lvbiBvZjwvZHQ+PGRkPiVkIGNhdXNhbCBmbG93czwvZGQ+XCJcbiAgICAgICAgICAgICAgICAgIG47XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJALDxkdD5vYnRhaW5lZCBpbiBhdmVyYWdlIGF0PC9kdD48ZGQ+JUUgdC51PC9kZD5ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIjxkdD5Db21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOjwvZHQ+XCI7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkAgPGRkPltAWyVhQF1dPC9kZD5AXUAsPC9kbD5cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmh0bWxcIlxuICAgICAgICAgICAgICAgIChodG1sX29mX2dyaWQgcHJvZmlsaW5nIGNvbXByZXNzaW9uX3R5cGUgY3B0IGVudiBlbnJpY2hlZF9jb25maWcpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjcHQgKyAxKVxuICAgICAgICAwIHN0b3J5X2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgfCBKc29uIC0+XG4gICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZSBbIGNvbXByZXNzaW9uX3R5cGU7IFwiZW52XCIgXSBcIi5qc29uXCJcbiAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKE1vZGVsLnRvX3lvanNvbiBlbnYpKSlcbiAgICAgIHwgRG90IHwgSHRtbCAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJTdW1tYXJ5XCIgXSBcIi5kYXRcIlxuICAgICAgICAoZnVuIGZvcm0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4jaWRcXHRFXFx0VFxcdFxcdGRlcHRoXFx0c2l6ZVxcdEAsXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHAubGlzdGkgUHAuZW1wdHlcbiAgICAgICAgICAgICAgKGZ1biBjcHQgZiAoXywgZW5yaWNoZWRfY29uZmlnLCBzdG9yeSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSBlbnJpY2hlZF9jb25maWcuZGVwdGggaW5cbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IGVucmljaGVkX2NvbmZpZy5zaXplIGluXG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVxcdCVpXFx0JUVcXHQlaVxcdCVpXFx0QCxcIiBjcHQgZXZlbnQgdGltZVxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIHNpemUpXG4gICAgICAgICAgICAgICAgICBzdG9yeSlcbiAgICAgICAgICAgICAgZm9ybSBzdG9yeV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1AP1wiKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvXG5cbmxldCBwcmludF9zdGF0IGYgX3BhcmFtZXRlciBfaGFuZGxlciBlbnJpY2hlZF9ncmlkID1cbiAgbGV0IGNvdW50X29icyA9XG4gICAgbWF0Y2ggc25kIGVucmljaGVkX2dyaWQucHJlY19zdGFyIHdpdGhcbiAgICB8IEdyYXBoX2Nsb3N1cmUuSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gZnVuIHggLT4geFxuICAgIHwgR3JhcGhfY2xvc3VyZS5EZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPiBzdWNjXG4gIGluXG4gIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGluXG4gIGxldCByZWMgYXV4IGsgbl9zdGVwIGxvbmdlc3Rfc3Rvcnkgbl9ub25lbXB0eSBsZW5ndGhfc3VtIGxlbmd0aF9zcXVhcmVfc3VtID1cbiAgICBpZiBrID49IHNpemUgdGhlblxuICAgICAgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNjID0gTGlzdC5sZW5ndGggKEFycmF5LmdldCAoZnN0IGVucmljaGVkX2dyaWQucHJlY19zdGFyKSBrKSBpblxuICAgICAgbGV0IGNjJyA9XG4gICAgICAgIGlmIGNjID4gMCB0aGVuXG4gICAgICAgICAgY291bnRfb2JzIGNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjY1xuICAgICAgaW5cbiAgICAgIGF1eCAoayArIDEpIChuX3N0ZXAgKyAxKSAobWF4IGxvbmdlc3Rfc3RvcnkgY2MnKVxuICAgICAgICAoaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICAgbl9ub25lbXB0eSArIDFcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbl9ub25lbXB0eSlcbiAgICAgICAgKGxlbmd0aF9zdW0gKyBjYycpXG4gICAgICAgIChsZW5ndGhfc3F1YXJlX3N1bSArIChjYycgKiBjYycpKVxuICAgIClcbiAgaW5cbiAgbGV0IG5fc3RlcCwgbG9uZ2VzdF9zdG9yeSwgbl9ub25lbXB0eSwgbGVuZ3RoX3N1bSwgbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGF1eCAwIDAgMCAwIDAgMFxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5TdGF0czpALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgbnVtYmVyIG9mIHN0ZXAgICA6ICVpQCxcIiBuX3N0ZXAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBsb25nZXN0IHN0b3J5ICAgIDogJWlALFwiIGxvbmdlc3Rfc3RvcnkgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGF2ZXJhZ2UgbGVuZ3RoICAgOiAlLjRnQCxcIlxuICAgICAgKGZsb2F0IGxlbmd0aF9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGdlb21ldHJpYyBtZWFuICAgOiAlLjRnQCxcIlxuICAgICAgKHNxcnQgKGZsb2F0IGxlbmd0aF9zcXVhcmVfc3VtIC8uIGZsb2F0IG5fbm9uZW1wdHkpKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALlwiXG4iLCJ0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gIHwgSW50ZXJuYWxfc3RhdGVfaXMgb2YgaW50XG4gIHwgVW5kZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBub3QgZXhpc3QgeWV0ICopXG4gIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICB8IEJvdW5kX3RvIG9mIGludCAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKilcblxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgcHJlZGljYXRlX2luZm8gPVxuICB8IEhlcmUgb2YgaW50XG4gIHwgQm91bmRfc2l0ZSBvZiBpbnQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICB8IEludGVybmFsX3N0YXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbmxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGkgPVxuICBtYXRjaCBwaSB3aXRoXG4gIHwgSGVyZSBhZyAtPiBcIkhlcmUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gIHwgQm91bmRfc2l0ZSAoYWcsIHMpIC0+XG4gICAgXCJCb3VuZF9zdGF0ZSBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgc1xuICB8IEludGVybmFsX3N0YXRlIChhZywgcykgLT5cbiAgICBcIkludGVybmFsX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG5cbm1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyB4KVxuZW5kKVxuXG5tb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG5tb2R1bGUgUVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudCBBLnRcblxuICBsZXQgZW1wdHkgbiA9IEEubWFrZSBuIFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciBmIHQgPSBBLml0ZXIgKFByZWRpY2F0ZU1hcC5pdGVyIGYpIHRcblxuICBsZXQgaGFzaCBwcmVkaWNhdGUgPVxuICAgIG1hdGNoIHByZWRpY2F0ZSB3aXRoXG4gICAgfCBIZXJlIGFnIHwgQm91bmRfc2l0ZSAoYWcsIF8pIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBfKSAtPiBhZ1xuXG4gIGxldCBsaWZ0IGYgcHJlZGljYXRlX2lkIHRhYiA9IGYgcHJlZGljYXRlX2lkIChBLmdldCB0YWIgKGhhc2ggcHJlZGljYXRlX2lkKSlcbiAgbGV0IGZpbmRfZGVmYXVsdCBkZWYgcCB0ID0gbGlmdCAoUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBkZWYpIHAgdFxuICBsZXQgZmluZF9vcHRpb24gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcCB0XG4gIGxldCBtZW0gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAubWVtIHAgdFxuXG4gIGxldCBhZGQgcHJlZGljYXRlX2lkIHggdGFiID1cbiAgICBsZXQgaGFzaCA9IGhhc2ggcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IG9sZCA9IEEuZ2V0IHRhYiBoYXNoIGluXG4gICAgbGV0IF8gPSBBLnNldCB0YWIgaGFzaCAoUHJlZGljYXRlTWFwLmFkZCBwcmVkaWNhdGVfaWQgeCBvbGQpIGluXG4gICAgdGFiXG5cbiAgbGV0IHJlY3ljbGUgdGFiIGkgPSBBLnNldCB0YWIgaSBQcmVkaWNhdGVNYXAuZW1wdHlcbmVuZFxuXG5tb2R1bGUgTVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudFxuXG4gIGxldCBwcmVkaWNhdGVfbWF4IF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciBfbGlzdCA9IGVycm9yLCBpbmZvLCAwXG4gIGxldCBlbXB0eSBfbiA9IFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciA9IFByZWRpY2F0ZU1hcC5pdGVyXG4gIGxldCBmaW5kX2RlZmF1bHQgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gIGxldCBmaW5kX29wdGlvbiA9IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvblxuICBsZXQgbWVtID0gUHJlZGljYXRlTWFwLm1lbVxuICBsZXQgYWRkID0gUHJlZGljYXRlTWFwLmFkZFxuZW5kXG5cbm1vZHVsZSBDUHJlZGljYXRlTWFwID0gTVByZWRpY2F0ZU1hcFxuIiwiKCoqXG4gICogcHJpb3JpdHkubWxcbiAgKlxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA3LTMwIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDoyMToxOSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzZWxlY3Rpb25fc3RyYXRlZ3kgPVxuICB8IEFsbF9yZW1haW5pbmdfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcblxudHlwZSB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHMgfCBFYXJseV9ldmVudHNcblxudHlwZSBsZXZlbCA9XG4gIHwgSGlnaGVzdFxuICB8IEhpZ2hcbiAgfCBBYm92ZV9hdmVyYWdlXG4gIHwgQXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlXG4gIHwgTG93XG4gIHwgTG93ZXN0XG5cbmxldCB3ZWlnaHQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhpZ2hlc3QgLT4gMFxuICB8IEhpZ2ggLT4gMVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gMlxuICB8IEF2ZXJhZ2UgLT4gM1xuICB8IEJlbGxvd19hdmVyYWdlIC0+IDRcbiAgfCBMb3cgLT4gNVxuICB8IExvd2VzdCAtPiA2XG5cbmxldCBfY29tcGFyZV9sZXZlbCBsdmwxIGx2bDIgPSBjb21wYXJlICh3ZWlnaHQgbHZsMSkgKHdlaWdodCBsdmwyKVxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIGlmIGNvbXBhcmUgYSBiIDw9IDAgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIGJcblxubGV0IF9tYXhfbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYlxuICBlbHNlXG4gICAgYVxuXG5sZXQgaGlnaGVzdCA9IEhpZ2hlc3RcbmxldCBoaWdoID0gSGlnaFxubGV0IGFib3ZlX2F2ZXJhZ2UgPSBBYm92ZV9hdmVyYWdlXG5sZXQgYXZlcmFnZSA9IEF2ZXJhZ2VcbmxldCBiZWxsb3dfYXZlcmFnZSA9IEJlbGxvd19hdmVyYWdlXG5sZXQgbG93ID0gTG93XG5sZXQgbG93ZXN0ID0gTG93ZXN0XG5cbmxldCBzdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBcImhpZ2hlc3RcIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFwiYWJvdmUgYXZlcmFnZVwiXG4gIHwgQXZlcmFnZSAtPiBcImF2ZXJhZ2VcIlxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFwiYmVsbG93IGF2ZXJhZ2VcIlxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTG93ZXN0IC0+IFwibG93ZXN0XCJcblxubGV0IGxvd2VyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gU29tZSBIaWdoXG4gIHwgSGlnaCAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IEF2ZXJhZ2UgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgTG93XG4gIHwgTG93IC0+IFNvbWUgTG93ZXN0XG4gIHwgTG93ZXN0IC0+IE5vbmVcblxubGV0IGhpZ2hlciBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IE5vbmVcbiAgfCBIaWdoIC0+IFNvbWUgSGlnaGVzdFxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBIaWdoXG4gIHwgQXZlcmFnZSAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBCZWxsb3dfYXZlcmFnZSAtPiBTb21lIEF2ZXJhZ2VcbiAgfCBMb3cgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IExvd2VzdCAtPiBTb21lIExvd1xuXG5tb2R1bGUgTGV2ZWxTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGxldmVsXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9sZXZlbCB4KVxuZW5kKVxuXG5tb2R1bGUgTGV2ZWxNYXAgPSBMZXZlbFNldE1hcC5NYXBcblxudHlwZSBwcmlvcml0aWVzID0ge1xuICBjcmVhdGlvbjogbGV2ZWw7XG4gIHVuYmluZGluZzogbGV2ZWw7XG4gIHJlbW92YWw6IGxldmVsO1xuICBvdGhlcl9ldmVudHM6IGxldmVsO1xuICBzdWJzdGl0dXRpb246IGxldmVsO1xuICBzaWRlX2VmZmVjdHM6IGxldmVsO1xuICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50czogc2VsZWN0aW9uX3N0cmF0ZWd5O1xuICB0cnlfdG9fcmVtb3ZlX2ZpcnN0OiB0cnlfdG9fcmVtb3ZlX2ZpcnN0O1xufVxuKCoqIGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgbGV2ZWwgY29ycmVzcG9uZGluZyBvZiBpdHMgYWN0aW9ucyAoaWYgbXVsdGlwbGUgYWN0aW9uLCB0aGVuLCB0aGUgbGVhc3QgY29ycmVzcG9uZGluZyBsZXZlbCBpcyBzZWxlY3RlZFxuIEV2ZW50cyB3aXRoIHRoZSBsZWFzdCBsZXZlbCBvZiBwcmlvcml0eSBhcmUgcmVtb3ZlZCBmaXJzdFxuIEFtb25nIHRoZW0sIHRoZSBjaG9pY2UgaXMgZHJpdmVuIGJ5IHRoZSBmaWVsZHMgJ2NhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzJyBhbmQgJ3RyeV90b19yZW1vdmVfZmlyc3QnICopXG5cbmxldCBjYXVzYWwgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoZXN0O1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2hlc3Q7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCB3ZWFrID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoZXN0O1xuICAgIHJlbW92YWwgPSBIaWdoZXN0O1xuICAgIG90aGVyX2V2ZW50cyA9IEhpZ2hlc3Q7XG4gICAgc3Vic3RpdHV0aW9uID0gSGlnaDtcbiAgICBzaWRlX2VmZmVjdHMgPSBIaWdoO1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgc3Ryb25nID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoO1xuICAgIHJlbW92YWwgPSBBYm92ZV9hdmVyYWdlO1xuICAgIG90aGVyX2V2ZW50cyA9IEF2ZXJhZ2U7XG4gICAgc3Vic3RpdHV0aW9uID0gQmVsbG93X2F2ZXJhZ2U7XG4gICAgc2lkZV9lZmZlY3RzID0gTG93O1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgbl9zdG9yeSA9IHJlZiAxXG5sZXQgbl9icmFuY2ggPSByZWYgMVxuIiwidHlwZSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBXZWFrIHwgU3Ryb25nIHwgQ2F1c2FsXG50eXBlIG5ld19zdG9yeSA9IHsgaWQ6IGludDsgZ3JhcGg6IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoIH1cbnR5cGUgc3RvcnkgPSBOZXcgb2YgbmV3X3N0b3J5IHwgU2FtZV9hcyBvZiBpbnRcblxudHlwZSAnYSBvbmVfY29tcHJlc3Npb24gPSB7XG4gIGxvZ19pbmZvOiAnYSBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0O1xuICBzdG9yeV9tb2RlOiBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU7XG4gIHN0b3J5OiBzdG9yeTtcbn1cblxubGV0IHN0cmluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdHJpbmdcIiwgeCkpXG5cbmxldCBpbnRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBzIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaW50XCIsIHgpKVxuXG5sZXQgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5ID1cbiAgYEFzc29jXG4gICAgWyBcImlkXCIsIGBJbnQgbmV3X3N0b3J5LmlkOyBcImdyYXBoXCIsIEdyYXBoX2pzb24udG9fanNvbiBuZXdfc3RvcnkuZ3JhcGggXVxuXG5sZXQgbmV3X3N0b3J5X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBpZCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKTtcbiAgICAgICAgIGdyYXBoID0gR3JhcGhfanNvbi5vZl9qc29uIChMaXN0LmFzc29jIFwiZ3JhcGhcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV90b19qc29uIHN0b3J5ID1cbiAgbWF0Y2ggc3Rvcnkgd2l0aFxuICB8IE5ldyBuZXdfc3RvcnkgLT4gYEFzc29jIFsgXCJuZXdcIiwgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5IF1cbiAgfCBTYW1lX2FzIGludCAtPiBgQXNzb2MgWyBcInNhbWVfYXNcIiwgYEludCBpbnQgXVxuXG5sZXQgc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwibmV3XCIsIG5ld19zdG9yeSkgXSAtPiBOZXcgKG5ld19zdG9yeV9vZl9qc29uIG5ld19zdG9yeSlcbiAgfCBgQXNzb2MgWyAoXCJzYW1lX2FzXCIsIGBJbnQgaW50KSBdIC0+IFNhbWVfYXMgaW50XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5XCIsIHgpKVxuXG5sZXQgc3RvcnlfbW9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBDYXVzYWwgLT4gYFN0cmluZyBcIkNhdXNhbFwiXG4gIHwgV2VhayAtPiBgU3RyaW5nIFwiV2Vha1wiXG4gIHwgU3Ryb25nIC0+IGBTdHJpbmcgXCJTdHJvbmdcIlxuXG5sZXQgc3RvcnlfbW9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQ2F1c2FsXCIgLT4gQ2F1c2FsXG4gIHwgYFN0cmluZyBcIldlYWtcIiAtPiBXZWFrXG4gIHwgYFN0cmluZyBcIlN0cm9uZ1wiIC0+IFN0cm9uZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBtb2RlXCIsIHgpKVxuXG5sZXQgdG9fanNvbiBsb2dfaW5mb190b19qc29uIG9uZV9jb21wcmVzc2lvbiA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJsb2dfaW5mb1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAoVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gbG9nX2luZm9fdG9fanNvbilcbiAgICAgICAgICAgICAoTGlzdC5yZXYgb25lX2NvbXByZXNzaW9uLmxvZ19pbmZvKSkgKTtcbiAgICAgIFwic3RvcnlfbW9kZVwiLCBzdG9yeV9tb2RlX3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5X21vZGU7XG4gICAgICBcInN0b3J5XCIsIHN0b3J5X3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5O1xuICAgIF1cblxubGV0IG9mX2pzb24gbG9nX2luZm9fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGxvZ19pbmZvID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJsb2dfaW5mb1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8ub2ZfanNvbiBsb2dfaW5mb19vZl9qc29uKVxuICAgICAgICAgICAgICAgKExpc3QucmV2IGwpXG4gICAgICAgICAgIHwgX3kgLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpKTtcbiAgICAgICAgIHN0b3J5ID0gc3Rvcnlfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5XCIgbCk7XG4gICAgICAgICBzdG9yeV9tb2RlID0gc3RvcnlfbW9kZV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfbW9kZVwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpXG5cbnR5cGUgcGhhc2UgPSBTdGFydCB8IElucHJvZ3Jlc3MgfCBTdWNjZXNzIHwgRmFpbGx1cmVcblxubGV0IHN0YXJ0ID0gXCJzdGFydGluZyBjb21wdXRhdGlvblwiXG5sZXQgaW5wcm9ncmVzcyA9IFwiY29tcHV0YXRpb24gaW4gcHJvZ3Jlc3NcIlxubGV0IHN1Y2Nlc3MgPSBcImNvbXB1dGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIlxubGV0IGZhaWxsdXJlID0gXCJjb21wdXRhdGlvbiAocGFydGlhbGx5KSBmYWlsZWRcIlxuXG5sZXQgcGhhc2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3RhcnQgLT4gYFN0cmluZyBzdGFydFxuICB8IElucHJvZ3Jlc3MgLT4gYFN0cmluZyBpbnByb2dyZXNzXG4gIHwgU3VjY2VzcyAtPiBgU3RyaW5nIHN1Y2Nlc3NcbiAgfCBGYWlsbHVyZSAtPiBgU3RyaW5nIGZhaWxsdXJlXG5cbmxldCBwaGFzZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3RhcnQgLT4gU3RhcnRcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gaW5wcm9ncmVzcyAtPiBJbnByb2dyZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IHN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBmYWlsbHVyZSAtPiBGYWlsbHVyZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwaGFzZVwiLCB4KSlcblxudHlwZSBwcm9ncmVzc19iYXIgPSB7IGJvb2w6IHN0cmluZzsgY3VycmVudDogaW50OyB0b3RhbDogaW50IH1cblxubGV0IHByb2dyZXNzX2Jhcl90b19qc29uIHByb2dyZXNzX2JhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9ncmVzc19iYXJcIixcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJib29sXCIsIGBTdHJpbmcgcHJvZ3Jlc3NfYmFyLmJvb2w7XG4gICAgICAgICAgICBcImN1cnJlbnRcIiwgYEludCBwcm9ncmVzc19iYXIuY3VycmVudDtcbiAgICAgICAgICAgIFwidG90YWxcIiwgYEludCBwcm9ncmVzc19iYXIudG90YWw7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IHByb2dyZXNzX2Jhcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInByb2dyZXNzX2JhclwiIGwgd2l0aFxuICAgIHwgYEFzc29jIGwgd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBib29sID0gc3RyaW5nX29mX2pzb24gKExpc3QuYXNzb2MgXCJib29sXCIgbCk7XG4gICAgICAgICAgIGN1cnJlbnQgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImN1cnJlbnRcIiBsKTtcbiAgICAgICAgICAgdG90YWwgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRvdGFsXCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKVxuXG50eXBlICdhIG1lc3NhZ2UgPVxuICB8IFBoYXNlIG9mIHBoYXNlICogc3RyaW5nXG4gIHwgUHJvZ3Jlc3Mgb2YgcHJvZ3Jlc3NfYmFyXG4gIHwgU3Rvcnkgb2YgJ2Egb25lX2NvbXByZXNzaW9uXG5cbmxldCBtZXNzYWdlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFBoYXNlIChwLCBtKSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwaGFzZV90b19qc29uIHA7IGBTdHJpbmcgbSBdXG4gIHwgUHJvZ3Jlc3MgcCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwcm9ncmVzc19iYXJfdG9fanNvbiBwIF1cbiAgfCBTdG9yeSBzIC0+IGBMaXN0IFsgYFN0cmluZyBcIlNUT1JZXCI7IHRvX2pzb24gKGZ1biBfIC0+IGBOdWxsKSBzIF1cblxubGV0IG1lc3NhZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUEhBU0VcIjsgcDsgYFN0cmluZyBtIF0gLT4gUGhhc2UgKHBoYXNlX29mX2pzb24gcCwgbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwIF0gLT4gUHJvZ3Jlc3MgKHByb2dyZXNzX2Jhcl9vZl9qc29uIHApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgcyBdIC0+IFN0b3J5IChvZl9qc29uIChmdW4gXyAtPiAoKSkgcylcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc3RvcnkgbWVzc2FnZVwiLCB4KSlcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMy0wOC0wMiBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTQ6MzA6NDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2Zsb3dfaGFuZGxlciA9IHNpZ1xuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3Rvcmllc1xuICB0eXBlIGNvbXByZXNzaW9uX21vZGVcblxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZSA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfd2Vha19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cbiAgKCoqIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIHBhcmFtZXRlcml6YWJsZSBvcHRpb25zICopXG5cbiAgdmFsIGdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb25cblxuICB0eXBlIGhhbmRsZXIgPSB7XG4gICAgKCpoYW5kbGVyIHRvIGludGVycHJldCBhYnN0cmFjdCB2YWx1ZXMqKVxuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICB2YWwgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2l0dGVyYXRpb25fYm91bmQgOiBwYXJhbWV0ZXIgLT4gaW50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIDogcGFyYW1ldGVyIC0+IGludCBvcHRpb25cbiAgdmFsIHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGJ1aWxkX3BhcmFtZXRlciA6XG4gICAgY2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb20gLT5cbiAgICA/c2VuZF9tZXNzYWdlOihzdHJpbmcgLT4gdW5pdCkgLT5cbiAgICBub25lOmJvb2wgLT5cbiAgICB3ZWFrOmJvb2wgLT5cbiAgICBzdHJvbmc6Ym9vbCAtPlxuICAgIHVuaXQgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgc3RyaW5nX29mX2V4biA6IGV4biAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCBpc19zZXJ2ZXJfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fd2VhayA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9zdHJvbmcgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fbm9uZSA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9wcmlvcml0aWVzIDogcGFyYW1ldGVyIC0+IFByaW9yaXR5LnByaW9yaXRpZXMgb3B0aW9uXG4gIHZhbCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfbG9nX3N0ZXAgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfZGVidWdnaW5nX21vZGUgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfcHJvZmlsaW5nX2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIGdldF9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGlzX3NlcnZlcl9jaGFubmVsX29uIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2thc2FfcGFyYW1ldGVycyA6IHBhcmFtZXRlciAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzXG5cbiAgdmFsIHNldF9rYXNhX3BhcmFtZXRlcnMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBkb193ZV91c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgdXNlX2J1Y2tldF9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgdXNlX2Z1c2lvbl9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgaW5pdF9oYW5kbGVyIDogTW9kZWwudCAtPiBoYW5kbGVyXG4gIHZhbCBzdHJpbmdfb2ZfcnVsZV9pZCA6IGhhbmRsZXIgLT4gaW50IC0+IHN0cmluZ1xuICB2YWwgc3RyaW5nX29mX2FnZW50X2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG5cbiAgdmFsIGdldF9wcmVkaWNhdGVfbWFwIDpcbiAgICBoYW5kbGVyIC0+XG4gICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnRcblxuICB2YWwgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2JsYWNrbGlzdF9ldmVudHMgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHN0cmluZyAtPiB1bml0XG4gIHZhbCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNhdmVfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQgLT4gdW5pdFxuICB2YWwgcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHN0cmluZyAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfc2F2ZV9wcm9ncmVzc19iYXIgOlxuICAgIHBhcmFtZXRlciAtPiAoYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciA6IHBhcmFtZXRlciAtPiAodW5pdCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdFxuXG4gIHZhbCBzZXRfc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPlxuICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdCkgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgcHVzaF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2UgLT4gdW5pdFxuXG4gIHZhbCBwb3BfanNvbiA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIG9wdGlvblxuZW5kXG5cbm1vZHVsZSBDZmxvd19oYW5kbGVyIDogQ2Zsb3dfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB8IEZ1c2lvblxuXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZSA9IHtcbiAgICBjYXVzYWxfdHJhY2U6IGJvb2w7XG4gICAgd2Vha19jb21wcmVzc2lvbjogYm9vbDtcbiAgICBzdHJvbmdfY29tcHJlc3Npb246IGJvb2w7XG4gIH1cblxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZSB4ID0geC5jYXVzYWxfdHJhY2VcbiAgbGV0IGdldF9jYXVzYWxfdHJhY2Vfb25seSB4ID0gbm90ICh4LndlYWtfY29tcHJlc3Npb24gfHwgeC5zdHJvbmdfY29tcHJlc3Npb24pXG4gIGxldCBnZXRfd2Vha19jb21wcmVzc2lvbiB4ID0geC53ZWFrX2NvbXByZXNzaW9uXG4gIGxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIHggPSB4LnN0cm9uZ19jb21wcmVzc2lvblxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5jdXJyZW50X2NvbXByZXNzaW9uX21vZGVcblxuICBsZXQgYnVpbGRfcGFyYW1ldGVyIH5jYWxsZWRfZnJvbVxuICAgICAgPyhzZW5kX21lc3NhZ2UgPVxuICAgICAgICBmdW4geCAtPlxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgXCIlc1wiIHg7XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlcikgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgPVxuICAgIGxldCAoIHNlcnZlcixcbiAgICAgICAgICBvdXRfc2VydmVyLFxuICAgICAgICAgIG91dF9jaGFubmVsLFxuICAgICAgICAgIG91dF9jaGFubmVsX2VycixcbiAgICAgICAgICBvdXRfY2hhbm5lbF9wcm9maWxpbmcsXG4gICAgICAgICAgbG9nX3N0ZXBfY2hhbm5lbCApID1cbiAgICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICAgICggdHJ1ZSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkpzb24gc3Rkb3V0LFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgKCkgKVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW1cbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpIGluXG4gICAgICAgICggZmFsc2UsXG4gICAgICAgICAgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsKSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIClcbiAgICBpblxuICAgIHtcbiAgICAgIHNlcnZlcjtcbiAgICAgIGlzX3NlcnZlcl9jaGFubmVsX29uID0gc2VydmVyO1xuICAgICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gTm9uZTtcbiAgICAgIHByaW9yaXRpZXNfd2VhayA9IFByaW9yaXR5LndlYWs7XG4gICAgICBwcmlvcml0aWVzX3N0cm9uZyA9IFByaW9yaXR5LnN0cm9uZztcbiAgICAgIHByaW9yaXRpZXNfY2F1c2FsID0gUHJpb3JpdHkuY2F1c2FsO1xuICAgICAgY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlO1xuICAgICAgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0O1xuICAgICAgbG9nZ2VyX3NlcnZlciA9IG91dF9zZXJ2ZXI7XG4gICAgICBsb2dnZXJfb3V0ID0gb3V0X2NoYW5uZWw7XG4gICAgICBsb2dnZXJfZXJyID0gb3V0X2NoYW5uZWxfZXJyO1xuICAgICAgbG9nZ2VyX3Byb2ZpbGluZyA9IG91dF9jaGFubmVsX3Byb2ZpbGluZztcbiAgICAgIGpzb25fYnVmZmVyID0gTm9uZTtcbiAgICAgIGNvbXByZXNzaW9uX21vZGUgPVxuICAgICAgICB7XG4gICAgICAgICAgY2F1c2FsX3RyYWNlID0gbm9uZTtcbiAgICAgICAgICB3ZWFrX2NvbXByZXNzaW9uID0gd2VhaztcbiAgICAgICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBzdHJvbmc7XG4gICAgICAgIH07XG4gICAgICBjYWNoZV9zaXplID0gUGFyYW1ldGVyLmdldF9jYWNoZV9zaXplICgpO1xuICAgICAgZGVidWdfbW9kZSA9IGZhbHNlO1xuICAgICAgbG9nX3N0ZXAgPSB0cnVlO1xuICAgICAgbG9nZ2VyX3N0ZXAgPSBsb2dfc3RlcF9jaGFubmVsO1xuICAgICAga2FzYSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpO1xuICAgICAgYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlcyA9IHRydWU7XG4gICAgICBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmU7XG4gICAgICB0aW1lX2luZGVwZW5kZW50ID0gIVBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50O1xuICAgICAgYmxhY2tsaXN0X2V2ZW50cyA9ICFQYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50cztcbiAgICAgIGR1bXAgPSBzZW5kX21lc3NhZ2U7XG4gICAgfVxuXG4gIGxldCBzZXRfY29tcHJlc3Npb25fd2VhayBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uV2VhayB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9zdHJvbmcgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLlN0cm9uZyB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9ub25lIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgfVxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICBlbnY6IE1vZGVsLnQ7XG4gICAgcnVsZV9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgYWdlbnRfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChpbnQgKiBQcmVkaWNhdGVfbWFwcy5wcmVkaWNhdGVfdmFsdWUgKiBib29sKSBsaXN0XG4gICAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnQ7XG4gIH1cblxuICB0eXBlICdhIHplcm9hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdhXG5cbiAgdHlwZSAoJ2EsICdiKSB1bmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdjXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdkXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdkIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdlXG5cbiAgbGV0IGluaXRfaGFuZGxlciBlbnYgPVxuICAgIGxldCBuX3J1bGVzID0gTW9kZWwubmJfcnVsZXMgZW52IGluXG4gICAgbGV0IHJ1bGVfbmFtZV9jYWNoZSA9IEFycmF5Lm1ha2Ugbl9ydWxlcyBcIlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgICAgKGZ1biB4ICgpIHIgLT5cbiAgICAgICAgICBydWxlX25hbWVfY2FjaGUuKHgpIDwtXG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgICAgICAgICByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpXG4gICAgICAgICgpIGVudlxuICAgIGluXG4gICAgbGV0IG5fYWdlbnRzID0gU2lnbmF0dXJlLnNpemUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBpblxuICAgIGxldCBhZ2VudF9uYW1lX2NhY2hlID1cbiAgICAgIEFycmF5LmluaXQgbl9hZ2VudHMgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikgeClcbiAgICBpblxuICAgIGxldCBzdGVwc19ieV9jb2x1bW4gPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLmVtcHR5IDAgaW5cbiAgICB7IGVudjsgcnVsZV9uYW1lX2NhY2hlOyBhZ2VudF9uYW1lX2NhY2hlOyBzdGVwc19ieV9jb2x1bW4gfVxuXG4gIGxldCBzdHJpbmdfb2ZfZXhuIF94ID0gU29tZSBcIlwiXG5cbiAgbGV0IGdldF9wcmlvcml0aWVzIHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgU3RvcnlfanNvbi5XZWFrIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfd2Vha1xuICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX3N0cm9uZ1xuICAgIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX2NhdXNhbFxuXG4gIGxldCBzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlIH1cblxuICBsZXQgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGNvbXB1dGVfYWxsX3N0b3JpZXMgPSB0cnVlIH1cblxuICBsZXQgZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmNvbXB1dGVfYWxsX3N0b3JpZXNcbiAgbGV0IGdldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuZGVidWdfbW9kZVxuICBsZXQgc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBib29sID0geyBwYXJhbWV0ZXIgd2l0aCBkZWJ1Z19tb2RlID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nX3N0ZXAgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ19zdGVwXG4gIGxldCBzZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ19zdGVwID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc3RlcFxuICBsZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfc3RlcCA9IGZtdCB9XG4gIGxldCBnZXRfb3V0X2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9vdXRcbiAgbGV0IHNldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfb3V0ID0gZm10IH1cbiAgbGV0IGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX2VyclxuICBsZXQgc2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9lcnIgPSBmbXQgfVxuICBsZXQgZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIua2FzYVxuXG4gIGxldCBzZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciBwYXJhbWV0ZXInID1cbiAgICB7IHBhcmFtZXRlcicgd2l0aCBrYXNhID0gcGFyYW1ldGVyIH1cblxuICBsZXQgZG9fd2VfdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9IHBhcmFtZXRlci5zb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXRcblxuICBsZXQgdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQgfVxuXG4gIGxldCB1c2VfZnVzaW9uX3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEZ1c2lvbiB9XG5cbiAgbGV0IGFsd2F5c19kaXNhbWJpZ3VhdGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlc1xuXG4gIGxldCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgYm9vbCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gYm9vbCB9XG5cbiAgbGV0IGRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgPSBOb25lIH1cblxuICBsZXQgc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGludCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IFNvbWUgaW50IH1cblxuICBsZXQgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyXG5cbiAgbGV0IGdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfcHJvZmlsaW5nXG4gIGxldCBzdHJpbmdfb2ZfcnVsZV9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLnJ1bGVfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IHN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLmFnZW50X25hbWVfY2FjaGUuKGkpXG4gIGxldCBnZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyID0gaGFuZGxlci5zdGVwc19ieV9jb2x1bW5cbiAgbGV0IGdldF9pc190aW1lX2luZGVwZW5kZW50IHBhcmFtZXRlciA9IHBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50XG4gIGxldCBnZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50c1xuICBsZXQgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNlcnZlclxuICBsZXQgZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc2VydmVyXG5cbiAgbGV0IHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBsb2dnZXJfc2VydmVyID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlciA9IHBhcmFtZXRlci5pc19zZXJ2ZXJfY2hhbm5lbF9vblxuXG4gIGxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIHggPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSB4XG5cbiAgbGV0IGR1bXBfanNvbiBwYXJhbWV0ZXIgbWVzc2FnZSA9XG4gICAgaWYgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIHBhcmFtZXRlci5kdW1wXG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChTdG9yeV9qc29uLm1lc3NhZ2VfdG9fanNvbiBtZXNzYWdlKSlcblxuICBsZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIHggPVxuICAgIGxldCBiLCBpLCBfaiwgbl9zdG9yaWVzID0geCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkdW1wX2pzb24gcGFyYW1ldGVyXG4gICAgICAgIChTdG9yeV9qc29uLlByb2dyZXNzXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLmJvb2wgPVxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgXCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImZhbHNlXCIpO1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uY3VycmVudCA9IGk7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi50b3RhbCA9IG5fc3RvcmllcztcbiAgICAgICAgICAgfSlcbiAgICBpblxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyIHhcblxuICBsZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyICgpXG5cbiAgbGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlICgpXG5cbiAgbGV0IHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7IHBhcmFtZXRlci5rYXNhIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzYXZlX2Vycm9yX2xvZyBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0IHhcblxuICBsZXQgc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9IHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSBmIH07XG4gICAgfVxuXG4gIGxldCBwdXNoX2pzb24gcGFyYW1ldGVyIGpzb24gPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IGR1bXBfanNvbiBwYXJhbWV0ZXIganNvblxuICAgIHwgU29tZSByZWYgLT4gcmVmIDo9IEZpZm8ucHVzaCBqc29uICFyZWZcblxuICBsZXQgcG9wX2pzb24gcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuanNvbl9idWZmZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJlZiAtPlxuICAgICAgbGV0IGZpZm8sIGVsdF9vcHQgPSBGaWZvLnBvcCAhcmVmIGluXG4gICAgICBsZXQgKCkgPSByZWYgOj0gZmlmbyBpblxuICAgICAgZWx0X29wdFxuZW5kXG4iLCIoKipcbiAgKiBrYXBwYV9pbnN0YW50aWF0aW9uLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMDIvMDgvMjAxNVxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbmxldCBjb21wb3NlX3dpdGhfaGFuZGxlciBmIGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCA9XG4gIGxldCBlcnJvciwgeSA9IGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCBpblxuICBmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHlcblxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbm1vZHVsZSB0eXBlIENmbG93X3NpZ25hdHVyZSA9IHNpZ1xuICBtb2R1bGUgSCA6IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcblxuICBtb2R1bGUgQWdlbnRJZFNldCA6IFNldE1hcC5TZXQgd2l0aCB0eXBlIGVsdCA9IGFnZW50X2lkXG5cbiAgdHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdFxuXG4gIHZhbCBlbXB0eV9zaWRlX2VmZmVjdCA6IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA6XG4gICAgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3R5cGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYWdlbnRfaWRfb2ZfYWdlbnQgOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIC0+IGludFxuICB2YWwgYWdlbnRfbmFtZV9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIGFnZW50X29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uY29uY3JldGVcblxuICB2YWwgYWdlbnRfaWRfb2Zfc2l0ZSA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IGludFxuXG4gIHZhbCBhZ2VudF9uYW1lX29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYnVpbGRfZ3JpZCA6XG4gICAgKFRyYWNlLnN0ZXAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0KSBsaXN0IC0+XG4gICAgYm9vbCAtPlxuICAgIEguaGFuZGxlciAtPlxuICAgIENhdXNhbC5ncmlkXG5cbiAgdmFsIHByaW50X3NpZGVfZWZmZWN0IDogTG9nZ2Vycy50IC0+IHNpZGVfZWZmZWN0IC0+IHVuaXRcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfbGlzdCA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdCAtPiBzaWRlX2VmZmVjdFxuXG4gIHZhbCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIDogVHJhY2Uuc3RlcCAtPiBpbnQgb3B0aW9uXG4gIHZhbCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGZsb2F0IG9wdGlvblxuXG4gIHZhbCBsZXZlbF9vZl9ldmVudCA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAoVHJhY2Uuc3RlcCwgYWdlbnRfaWQgLT4gYm9vbCwgUHJpb3JpdHkubGV2ZWwpIEguYmluYXJ5XG5cbiAgdmFsIGRpc2FtYmlndWF0ZSA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgY2xlYW5fZXZlbnRzIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBmaWxsX3NpcGhvbiA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgc3BsaXRfaW5pdCA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgYWdlbnRfaWRfaW5fb2JzIDogKFRyYWNlLnN0ZXAsIEFnZW50SWRTZXQudCkgSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBDZmxvd19saW5rZXIgOiBDZmxvd19zaWduYXR1cmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEggPSBDZmxvd19oYW5kbGVyLkNmbG93X2hhbmRsZXJcbiAgbW9kdWxlIFBJID0gSW5zdGFudGlhdGlvblxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcbiAgdHlwZSBzaWRlX2VmZmVjdCA9IFBJLmNvbmNyZXRlIFBJLnNpdGUgbGlzdFxuXG4gIG1vZHVsZSBBZ2VudElkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgU2l0ZU1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaXRlU2V0ID0gTW9kcy5JbnRTZXRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG5cbiAgbGV0IGVtcHR5X3NpZGVfZWZmZWN0ID0gW11cbiAgbGV0IHNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBzbmRcbiAgbGV0IGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9hZ2VudCA9IGZzdFxuICBsZXQgYWdlbnRfbmFtZV9vZl9hZ2VudCA9IHNuZFxuICBsZXQgYWdlbnRfb2Zfc2l0ZSA9IGZzdFxuICBsZXQgYWdlbnRfaWRfb2Zfc2l0ZSB4ID0gYWdlbnRfaWRfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBhZ2VudF9uYW1lX29mX3NpdGUgeCA9IGFnZW50X25hbWVfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBzaXRlX25hbWVfb2Zfc2l0ZSA9IHNuZFxuXG4gIGxldCBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCBmIHggPVxuICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuXG4gIGxldCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgeCA9XG4gICAgZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAgKGZ1biB4IC0+IHguVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpIHhcblxuICBsZXQgZ2V0X2lkX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpIHhcblxuICBsZXQgYnVpbGRfZ3JpZCBsaXN0IGJvb2wgaGFuZGxlciA9XG4gICAgbGV0IGVudiA9IGhhbmRsZXIuSC5lbnYgaW5cbiAgICBsZXQgZW1wdHlfc2V0ID0gW10gaW5cbiAgICBsZXQgZ3JpZCA9IENhdXNhbC5lbXB0eV9ncmlkICgpIGluXG4gICAgbGV0IGdyaWQsIF8sIF8sIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIHN1YnMpIChrLCBzaWRlKSAtPlxuICAgICAgICAgIGxldCBtYXliZV9zaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgZnVuIHNlIC0+XG4gICAgICAgICAgICBzZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmdW4gXyAtPlxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHNpZGVfZWZmZWN0IHNpZGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2xhdGUgeSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCB5IHkgc3VicyBpblxuICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoaWQsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IGV2ZW50JyA9IFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCB0cmFuc2xhdGUgZXZlbnQgaW5cbiAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgICAgbWF5YmVfc2lkZV9lZmZlY3QgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZFxuICAgICAgICAgICAgICAgICggVHJhY2UuUlVMRSBpZCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudCcuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpbmZvIClcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5QRVJUIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLk9icyAoaWQsIHRlc3RzLCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCB0cmFuc2xhdGUpKVxuICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkX29icyAoaWQsIHRlc3RzJywgaW5mbykgc2lkZV9lZmZlY3QgY291bnRlciBncmlkLFxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIChhLCBiKSAtPlxuICAgICAgICAgICAgZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIE1vZHMuSW50TWFwLmFkZCBhIGIgc3Vic1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBsZXQgYWN0aW9ucycgPVxuICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfaW5pdFxuICAgICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9hY3Rpb25zIHNuZCBhY3Rpb25zJywgYWN0aW9ucycpXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgc2lkZV9lZmZlY3QsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+IGdyaWQsIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCwgY291bnRlciwgc3VicylcbiAgICAgICAgKGdyaWQsIGVtcHR5X3NldCwgMSwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGdyaWRcblxuICBsZXQgY2xlYW5fZXZlbnRzID1cbiAgICBMaXN0LmZpbHRlciAoZnVuY3Rpb25cbiAgICAgIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5Jbml0IF8gLT4gdHJ1ZVxuICAgICAgfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfIC0+IGZhbHNlKVxuXG4gIGxldCBwcmludF9zaWRlX2VmZmVjdCBsb2cgPVxuICAgIExpc3QuaXRlciAoZnVuICgoYSwgXyksIGIpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIoJWksJWkpLFwiIGEgYilcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfbGlzdCBsID0gbFxuXG4gIGxldCBsZXZlbF9vZl9ldmVudCBwcmlvcml0eV9vcHQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGUgc2V0ID1cbiAgICBtYXRjaCBwcmlvcml0eV9vcHQsIEguZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBQcmlvcml0eS5oaWdoZXN0XG4gICAgfCBTb21lIHByaW9yaXRpZXMsIF8gfCBOb25lLCBTb21lIHByaW9yaXRpZXMgLT5cbiAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgIHwgVHJhY2UuT2JzIF8gLT4gZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50c1xuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgbGV0IGFjdGlvbnMgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZSBpblxuICAgICAgICBsZXQgcHJpb3JpdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIHByaW9yaXR5IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIChhZywgXykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWdfaWQgPSBhZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgICAgICAgICAgIGlmIHNldCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LmNyZWF0aW9uXG4gICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS5yZW1vdmFsXG4gICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIF8gLT4gcHJpb3JpdHlcbiAgICAgICAgICAgICAgfCBQSS5GcmVlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS51bmJpbmRpbmdcbiAgICAgICAgICAgICAgfCBQSS5CaW5kIChfLCBfKSB8IFBJLkJpbmRfdG8gKF8sIF8pIC0+IHByaW9yaXR5KVxuICAgICAgICAgICAgcHJpb3JpdGllcy5Qcmlvcml0eS5vdGhlcl9ldmVudHMgKGZzdCBhY3Rpb25zKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXR5XG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5LnN1YnN0aXR1dGlvbilcblxuICBsZXQgc3Vic19hZ2VudF9pbl9ldmVudCBtYXBwaW5nIG1hcHBpbmcnID0gZnVuY3Rpb25cbiAgICAoKiBtYXBwaW5nIC0+IGJlZm9yZSB0aGUgZXZlbnQsIGluY2x1ZGluZyBhZ2VudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICgqIG1hcHBpbmcnIC0+IGFmdGVyIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSBjcmVhdGVkICopXG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBvbmUgYWdlbnQgaXMgcmVtb3ZlZCwgYW5kIG9uZSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUgaWQgaW4gYSBzaW5nbGUgZXZlbnQgKilcbiAgICB8IFRyYWNlLlJ1bGUgKGEsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgVHJhY2UuUnVsZVxuICAgICAgICAoIGEsXG4gICAgICAgICAgUEkuc3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKVxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJylcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGluZm8gKVxuICAgIHwgVHJhY2UuUGVydCAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5QZXJ0XG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5PYnMgKGEsIGIsIGMpIC0+XG4gICAgICBUcmFjZS5PYnNcbiAgICAgICAgKCBhLFxuICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKSkpXG4gICAgICAgICAgICBiLFxuICAgICAgICAgIGMgKVxuICAgIHwgVHJhY2UuSW5pdCBiIC0+XG4gICAgICBUcmFjZS5Jbml0XG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIChmdW4geCAtPlxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJykpXG4gICAgICAgICAgIGIpXG4gICAgfCAoVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXykgYXMgZXZlbnQgLT4gZXZlbnRcblxuICBsZXQgZGlzYW1iaWd1YXRlIGV2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBfLCBfLCBldmVudF9saXN0X3JldiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcsIGV2ZW50X2xpc3QpIGV2ZW50IC0+XG4gICAgICAgICAgbGV0IG1heF9pZCwgdXNlZCwgbWFwcGluZycgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKSB4IC0+XG4gICAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCB1c2VkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggbWF4X2lkICsgMSxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGQgKG1heF9pZCArIDEpIHVzZWQsXG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggKG1heF9pZCArIDEpIG1hcHBpbmcgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1heCB4IG1heF9pZCwgQWdlbnRJZFNldC5hZGQgeCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAoVHJhY2UuY3JlYXRpb25fb2Zfc3RlcCBldmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIG1hcHBpbmcgY2FuIGJlIHNhZmVseSBhcHBsaWVkIHRvIGFsbCBhZ2VudHMgZXhjZXB0IHRoZSBuZXdseSBjcmVhdGVkIG9uZXMgKilcbiAgICAgICAgICAoKiBtYXBwaW5nJyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG9uZXMgdGhhdCBoYXZlIGJlZW4ganVzdCByZW1vdmVzICopXG4gICAgICAgICAgbGV0IGxpc3QgPSBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgZXZlbnQgOjogZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1heF9pZCwgdXNlZCwgbWFwcGluZycsIGxpc3QpXG4gICAgICAgICgwLCBBZ2VudElkU2V0LmVtcHR5LCBBZ2VudElkTWFwLmVtcHR5LCBbXSlcbiAgICAgICAgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgTGlzdC5yZXYgZXZlbnRfbGlzdF9yZXZcblxuICB0eXBlIGFnZW50X2luZm8gPSB7XG4gICAgaW5pdGlhbF9zdGVwOiBUcmFjZS5zdGVwO1xuICAgIGludGVybmFsX3N0YXRlczogaW50ZXJuYWxfc3RhdGUgU2l0ZU1hcC50O1xuICAgIGJvdW5kX3NpdGVzOiBTaXRlU2V0LnQ7XG4gICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTogU2l0ZVNldC50O1xuICB9XG5cbiAgbGV0IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgPVxuICAgIGxldCBleHRyYWN0X2FnZW50IGlkIHNvdXAgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBQSS5DcmVhdGUgKChpZCcsIF8pLCBfKVxuICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsICgoKGlkJywgXyksIF8pLCBfKVxuICAgICAgICAgIHwgUEkuRnJlZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5CaW5kX3RvICgoKGlkJywgXyksIF8pLCBfKSAtPlxuICAgICAgICAgICAgaWQgPSBpZCdcbiAgICAgICAgICB8IFBJLkJpbmQgXyB8IFBJLlJlbW92ZSBfIC0+IGZhaWx3aXRoIFwiUHJvYmxlbWF0aWMgaW5pdGlhbCBldmVudFwiKVxuICAgICAgICBzb3VwXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCByZWN1ciBhY2Mgc291cCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICggKGlmIHNvdXAgPD4gW10gdGhlblxuICAgICAgICAgICAgIFRyYWNlLkluaXQgc291cCA6OiBhY2NcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGFjYyksXG4gICAgICAgICAgcmVjdXIgKVxuICAgICAgfCBQSS5GcmVlIF8gOjogdCAtPiBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCAoUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gfCBQSS5CaW5kX3RvIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXykgOjogdCAtPlxuICAgICAgICBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCBQSS5DcmVhdGUgKChpZCwgXyksIHNpdGVfbGlzdCkgOjogdCAtPlxuICAgICAgICBsZXQgdGhpcywgc291cCcgPSBleHRyYWN0X2FnZW50IGlkIHNvdXAgaW5cbiAgICAgICAgbGV0IHN0YW5kYWxvbmUgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gfCBQSS5GcmVlIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgUEkuQmluZF90byBfIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzID0gVHJhY2UuSW5pdCB0aGlzIGluXG4gICAgICAgIGlmIHN0YW5kYWxvbmUgdGhlbiAoXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIG1hcCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgcywgU29tZSB1IC0+IFNpdGVNYXAuYWRkIHMgdSBtYXBcbiAgICAgICAgICAgICAgICB8IF8sIE5vbmUgLT4gbWFwKVxuICAgICAgICAgICAgICBTaXRlTWFwLmVtcHR5IHNpdGVfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFnZW50X2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbml0aWFsX3N0ZXAgPSB0aGlzO1xuICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZXMgPSBtYXA7XG4gICAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9IFNpdGVTZXQuZW1wdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKEFnZW50SWRNYXAuYWRkIGlkIGFnZW50X2luZm8gcmVjdXIpICh0aGlzIDo6IGFjYykgc291cCcgdFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcmVjdXIgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgaW5cbiAgICBhdXggcmVtYW5lbnQgc3RlcF9saXN0IGFjdGlvbl9saXN0IGFjdGlvbl9saXN0XG5cbiAgbGV0IGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdlbnRfaW5mbyA9XG4gICAgbGV0IHJlc3RyaWN0aW9uID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCByZXN0cmljdGlvbl9tYXBcbiAgICBpblxuICAgIFNpdGVTZXQuaXNfZW1wdHkgKFNpdGVTZXQuaW50ZXIgYWdlbnRfaW5mby5ib3VuZF9zaXRlcyByZXN0cmljdGlvbilcbiAgICAmJiBTaXRlU2V0LmlzX2VtcHR5XG4gICAgICAgICAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgcmVzdHJpY3Rpb24pXG5cbiAgbGV0IG1vZF9zaXRlIHJlc3RyaWN0aW9uX21hcCBzaXRlIHN0YXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgKG1hdGNoIFNpdGVNYXAuZmluZF9vcHRpb24gc19uYW1lIGFnX2luZm8uaW50ZXJuYWxfc3RhdGVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgICB8IFNvbWUgc3RhdGVfcmVmIC0+XG4gICAgICAgIGlmIHN0YXRlX3JlZiA9IHN0YXRlICgqIEJhY2sgdG8gdGhlIG9yaWdpbmFsIGludGVybmFsIHN0YXRlKikgdGhlblxuICAgICAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LmFkZCBhZ2lkIHNldFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgaWZcbiAgICAgICAgICAoKiBObyBsb25nZXIgdGhlIGRlZmF1bHQgc3RhdGUgKilcbiAgICAgICAgICBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5zaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgIFNpdGVTZXQuYWRkIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgICAgcmVtYW5lbnQsIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgICApKVxuXG4gIGxldCB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgKHJlbWFuZW50LCBzZXQpID1cbiAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGFnaWQgcmVtYW5lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgfCBTb21lIGFnX2luZm8gLT5cbiAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzIHRoZW4gKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICBib3VuZF9zaXRlcyA9IFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5hZGQgYWdpZCBhZ19pbmZvIHJlbWFuZW50IGluXG4gICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICApIGVsc2VcbiAgICAgICAgcmVtYW5lbnQsIHNldFxuXG4gIGxldCB1bmJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgcmVtID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgdW5iaW5kX3NpZGUgcmVzdHJpY3Rpb25fbWFwIChhZ2lkLCBzX25hbWUpIHJlbVxuXG4gIGxldCBiaW5kIHJlc3RyaWN0aW9uX21hcCBzaXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlblxuICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgIHsgYWdfaW5mbyB3aXRoIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5yZW1vdmUgYWdpZCBzZXRcbiAgICAgIClcblxuICBsZXQgc3BsaXRfaW5pdCByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGZzdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQgLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgIHwgVHJhY2UuUGVydCBfIC0+XG4gICAgICAgICAgICAgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnQpXG4gICAgICAgICAoW10sIHJlbWFuZW50KVxuICAgICAgICAgKExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0KSlcblxuICBsZXQgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGUgPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgb2xkX3NldCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCBzY29wZSBpblxuICAgIGxldCBuZXdfc2V0ID0gU2l0ZVNldC5hZGQgc19uYW1lIG9sZF9zZXQgaW5cbiAgICBpZiBvbGRfc2V0ID09IG5ld19zZXQgdGhlblxuICAgICAgc2NvcGVcbiAgICBlbHNlXG4gICAgICBBZ2VudElkTWFwLmFkZCBhZ2lkIG5ld19zZXQgc2NvcGVcblxuICBsZXQgZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gc2NvcGUgeCAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBQSS5Jc19IZXJlIF8gLT4gc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgIHwgUEkuSXNfRnJlZSBzaXRlXG4gICAgICAgICAgIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXylcbiAgICAgICAgICAgfCBQSS5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgIGFkZF9pbl9zY29wZSBzaXRlMSAoYWRkX2luX3Njb3BlIHNpdGUyIHNjb3BlKSkpXG4gICAgICBzY29wZSB0ZXN0c1xuXG4gIGxldCBmaWxsX3NpcGhvbiByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJldl90cmFjZSA9IExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0IGluXG4gICAgbGV0IHNjb3BlID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0LCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgc2NvcGUpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT4gKHJlZmluZWRfc3RlcCwgc2NvcGUpIDo6IHN0ZXBfbGlzdCwgc2NvcGVcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgKF8sIGV2ZW50LCBfKSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSAtPlxuICAgICAgICAgICAgbGV0IHNjb3BlJyA9IGRlYWxfd2l0aF90ZXN0cyBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHNjb3BlKSByZXZfdHJhY2VcbiAgICBpblxuICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICBsZXQgYSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBpbml0LCBfIC0+IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgaW5pdFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pLCBzY29wZSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSwgc2NvcGUgLT5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIHJlY3VyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFBJLkNyZWF0ZSBfIC0+IHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLk1vZF9pbnRlcm5hbCAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vZF9zaXRlIHNjb3BlIHNpdGUgc3RhdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuQmluZCAoc2l0ZTEsIHNpdGUyKSB8IFBJLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluZCBzY29wZSBzaXRlMSAoYmluZCBzY29wZSBzaXRlMiByZWN1cilcbiAgICAgICAgICAgICAgICAgIHwgUEkuRnJlZSBzaXRlIC0+IHVuYmluZCBzY29wZSBzaXRlIHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLlJlbW92ZSBfIC0+IHJlY3VyKVxuICAgICAgICAgICAgICAgIChyZW1hbmVudCwgQWdlbnRJZFNldC5lbXB0eSlcbiAgICAgICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQsIHNldCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAodW5iaW5kIHNjb3BlKVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCAocmVtYW5lbnQsIHNldClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIEFnZW50SWRTZXQuZm9sZFxuICAgICAgICAgICAgICAgIChmdW4gaWQgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBpZCByZW1hbmVudCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LmluaXRpYWxfc3RlcCA6OiBsaXN0XG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdClcbiAgICAgICAgICAgICAgICBzZXRcbiAgICAgICAgICAgICAgICAoZnN0IHJlZmluZWRfc3RlcCA6OiBzdGVwX2xpc3QpLFxuICAgICAgICAgICAgICByZW1hbmVudCApXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXywgXyAtPiBmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnRcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXywgXyB8IFRyYWNlLkR1bW15IF8sIF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHJlbWFuZW50KSByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBhXG5cbiAgbGV0IGFnZW50X2lkX2luX29icyBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgLT5cbiAgICAgIGVycm9yLCBpbmZvLCBBZ2VudElkU2V0LmVtcHR5XG4gICAgfCBUcmFjZS5PYnMgKF8sIHRlc3RzLCBfKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgaW5mbyxcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBQSS5Jc19IZXJlIHggLT4gQWdlbnRJZFNldC5hZGQgKGFnZW50X2lkX29mX2FnZW50IHgpIGxcbiAgICAgICAgICAgICAgIHwgUEkuSXNfQm91bmQgXyB8IFBJLklzX0ZyZWUgXyB8IFBJLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byBfIHwgUEkuSGFzX0ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSB0ZXN0cyApXG5lbmRcbiIsIigqKlxuICAqIHBvX2N1dC5tbFxuICAqXG4gICogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMDQvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIFBvX2N1dCA9IHNpZ1xuICBtb2R1bGUgSyA6IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfc2lnbmF0dXJlXG5cbiAgdmFsIGN1dCA6IChUcmFjZS50LCBUcmFjZS50ICogaW50KSBLLkgudW5hcnlcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGVcblxuICB2YWwgaW5pdF9jdXQgOiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBjdXRfc3RlcCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCAtPiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBmaW5hbGl6ZV9jdXQgOiBvbl90aGVfZmx5X3N0YXRlIC0+IFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIHZhbCBjdXRfcmV2X3RyYWNlIDpcbiAgICBUcmFjZS5zdGVwIGxpc3QgKCpyZXZlcnNlIG9yZGVyKikgLT5cbiAgICBUcmFjZS5zdGVwIGxpc3QgKCogY29ycmVjdCBvcmRlciAqKSAqIGludFxuZW5kXG5cbm1vZHVsZSBQb19jdXQgOiBQb19jdXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEsgPSBLYXBwYV9pbnN0YW50aWF0aW9uLkNmbG93X2xpbmtlclxuXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgSGVyZSBvZiBLLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIEsuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbiAgbW9kdWxlIFBTTSA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUFMgPSBQU00uU2V0XG5cbiAgbGV0IGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBLLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICBsZXQgbGlzdCA9IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0IGluXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgIHwgU29tZSBfIC0+IEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkgOjogbGlzdClcbiAgICAgICAgWyBIZXJlIGFnX2lkIF0gaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBbXVxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzMSwgczIpIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPiBbIEhlcmUgKEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIHNpZGVzID1cbiAgICBMaXN0Lm1hcCAoZnVuICgoYWdfaWQsIF8pLCBzX2lkKSAtPiBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpIHNpZGVzXG5cbiAgdHlwZSBvbl90aGVfZmx5X3N0YXRlID0gUFMudCAqIFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIGxldCBpbml0X2N1dCA9IFBTLmVtcHR5LCBbXSwgMFxuICBsZXQgZmluYWxpemVfY3V0IChfYSwgYiwgYykgPSBiLCBjXG5cbiAgbGV0IGN1dF9zdGVwIChzZWVuLCBrZXB0LCBuX2N1dCkgZXZlbnQgPVxuICAgIGxldCByZWMga2VlcCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgfCB0MCA6OiBxMCAtPlxuICAgICAgICBsZXQgcmVjIGF1eDEgbCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBrZWVwIHEwXG4gICAgICAgICAgfCB0MSA6OiBxMSAtPlxuICAgICAgICAgICAgaWYgUFMubWVtIHQxIHNlZW4gdGhlblxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eDEgcTFcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MSAocHJlZGljYXRlc19vZl9hY3Rpb24gdDApXG4gICAgaW5cbiAgICBsZXQgcmVjIGtlZXAyIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBQUy5tZW0gdCBzZWVuIHRoZW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBrZWVwMiBxXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlZW4gYWN0aW9uIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gc2VlbiBlbHQgLT4gUFMucmVtb3ZlIGVsdCBzZWVuKVxuICAgICAgICAgICAgc2VlblxuICAgICAgICAgICAgKGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uKSlcbiAgICAgICAgc2VlbiBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjdGlvbnMsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBpZlxuICAgICAgVHJhY2Uuc3RlcF9pc19vYnMgZXZlbnQgfHwga2VlcCBhY3Rpb25zXG4gICAgICB8fCBrZWVwMiAocHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KSlcbiAgICB0aGVuIChcbiAgICAgIGxldCBrZXB0ID0gZXZlbnQgOjoga2VwdCBpblxuICAgICAgbGV0IHRlc3RzID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBldmVudCBpblxuICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgIHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIChUcmFjZS5zaWRlX2VmZmVjdHNfb2Zfc3RlcCBldmVudClcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHRlc3QgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gc2VlbiBwcmVkaWNhdGVfaW5mbyAtPiBQUy5hZGQgcHJlZGljYXRlX2luZm8gc2VlbilcbiAgICAgICAgICAgICAgc2VlbiAocHJlZGljYXRlc19vZl90ZXN0IHRlc3QpKVxuICAgICAgICAgIHNlZW4gdGVzdHNcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgIHNlZW4gdGVzdHMnXG4gICAgICBpblxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXRcbiAgICApIGVsc2VcbiAgICAgIHNlZW4sIGtlcHQsIG5fY3V0ICsgMVxuXG4gIGxldCBjdXRfcmV2X3RyYWNlIHJldl9ldmVudF9saXN0ID1cbiAgICBsZXQgXywgZXZlbnRfbGlzdCwgbiA9IExpc3QuZm9sZF9sZWZ0IGN1dF9zdGVwIGluaXRfY3V0IHJldl9ldmVudF9saXN0IGluXG4gICAgZXZlbnRfbGlzdCwgblxuXG4gIGxldCBjdXQgX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIGV2ZW50X2xpc3QgPVxuICAgIGxldCB0cmFjZSA9IGN1dF9yZXZfdHJhY2UgKExpc3QucmV2IGV2ZW50X2xpc3QpIGluXG4gICAgZXJyb3IsIGluZm8sIHRyYWNlXG5lbmRcbiIsIigqKlxuICAgKiBwc2V1ZG9faW52ZXJzZS5tbFxuICAgKlxuICAgKiBDdXQgcHNldWRvIGludmVyc2UgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBLYVNpbVxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgICpcbiAgICogQ3JlYXRpb246IDE3LzA0LzIwMTJcbiAgICogTGFzdCBtb2RpZmljYXRpb246IDIxLzExLzIwMTNcbiAgICogKlxuICAgKiBTb21lIHBhcmFtZXRlciByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsIDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEN1dF9wc2V1ZG9faW52ZXJzZSA9IHNpZ1xuICBtb2R1bGUgUG8gOiBQb19jdXQuUG9fY3V0XG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIFBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBQc2V1ZG9faW52IDogQ3V0X3BzZXVkb19pbnZlcnNlID0gc3RydWN0XG4gIG1vZHVsZSBQbyA9IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV9pbmZvXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gPSBQcmVkaWNhdGVfbWFwcy5zdHJpbmdfb2ZfcHJlZGljYXRlX2luZm9cblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBwaSA9XG4gICAgbWF0Y2ggcGkgd2l0aFxuICAgIHwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgcyAtPiBzdHJpbmdfb2ZfaW50IHNcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCAtPiBcIiNVbmRlZlwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IC0+IFwiI0hlcmVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuRnJlZSAtPiBcIiNGcmVlXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZywgYWdlbnRfbmFtZSwgcykgLT5cbiAgICAgIFwiQm91bmRfdG8gXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIiBcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IHNcblxuICB0eXBlIHBzZXVkb19pbnZfYmxhY2tib2FyZCA9IHtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9pZCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3QgQ1ByZWRpY2F0ZU1hcC50O1xuICAgIG5zdGVwczogc3RlcF9pZDtcbiAgICBwcmVkaWNhdGVzX29mX2V2ZW50OiBwcmVkaWNhdGVfaW5mbyBsaXN0IEEudDtcbiAgICBpc19yZW1vdmVfYWN0aW9uOiBib29sIEEudDtcbiAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50OiBpbnQgQS50O1xuICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0OiBib29sIEEudDtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBvcHRpb24gQS50O1xuICAgIGFnZW50X2xpc3Q6IGludCBsaXN0O1xuICB9XG5cbiAgbGV0IGluaXRfYmxhY2tib2FyZCBuX3N0ZXBzIGhhbmRsZXIgPVxuICAgIHtcbiAgICAgIHN0ZXBzX2J5X2NvbHVtbiA9IFBvLksuSC5nZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyO1xuICAgICAgbnN0ZXBzID0gLTE7XG4gICAgICBwcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5tYWtlIG5fc3RlcHMgW107XG4gICAgICBpc19yZW1vdmVfYWN0aW9uID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBoYXNfbW9kX3dpdGhvdXRfdGVzdCA9IEEubWFrZSBuX3N0ZXBzIGZhbHNlO1xuICAgICAgbW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCA9IEEuY3JlYXRlIG5fc3RlcHMgMDtcbiAgICAgIGV2ZW50ID0gQS5tYWtlIG5fc3RlcHMgTm9uZTtcbiAgICAgIGFnZW50X2xpc3QgPSBbXTtcbiAgICB9XG5cbiAgbGV0IF9wcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIkJsYWNrYm9hcmQgZm9yIHJlbW92aW5nIHBzZXVkbyBpbnZlcnNlIGVsZW1lbnRcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJuX2V2ZW50czogJWlcIiBibGFja2JvYXJkLm5zdGVwc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJTdGVwc19ieV9jb2x1bW46XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBDUHJlZGljYXRlTWFwLml0ZXJcbiAgICAgICAgKGZ1biBwcmVkIGxpc3QgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlczogXCJcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwcmVkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgdmFsdWUsIGJvb2wpIC0+XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiglaSwlcyVzKSxcIiBlaWRcbiAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgXCIoTW9kKVwiXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgXCJcIikpXG4gICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICAgICAgICBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJFdmVudHM6XCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gYmxhY2tib2FyZC5uc3RlcHMgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBldmVudCA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQga1xuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJFUlJFVVIgJWkgMTIzXCIga1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgJWklYVwiIGtcbiAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDpmYWxzZSB+ZW52OmhhbmRsZXIuUG8uSy5ILmVudilcbiAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiUHJlZGljYXRlczogXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbGlzdCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlc19vZl9ldmVudCBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCIlcyxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHBpZCkpXG4gICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGJvb2wgPSBBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCJjb250YWluIGEgZGVsZXRpb25cIlxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgaW50ID0gQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICBcIiVpIG1vZGlmaWVkIHByZWRpY2F0ZXNcIiBpbnRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yID0gYXV4IDAgaW5cbiAgICBlcnJvclxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGxldCBsaXN0MSwgbGlzdDIgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGxpc3QxLCBsaXN0MikgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgICBsZXQgbGlzdDIgPSBwcmVkaWNhdGVfaWQgOjogbGlzdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGlzdDEsIGxpc3QyXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgICAoIChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBsaXN0MiApKVxuICAgICAgICAgIChbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuUHJlc2VudCBdLCBbIHByZWRpY2F0ZV9pZCBdKVxuICAgICAgICAgIGludGVyZmFjZVxuICAgICAgaW5cbiAgICAgICggeyBibGFja2JvYXJkIHdpdGggYWdlbnRfbGlzdCA9IGFnX2lkIDo6IGJsYWNrYm9hcmQuYWdlbnRfbGlzdCB9LFxuICAgICAgICBsaXN0MSxcbiAgICAgICAgbGlzdDIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlIClcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgcHJlZGljYXRlX2lkID1cbiAgICAgICAgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAoUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMiA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUgXSwgW10sIGZhbHNlLCBmYWxzZVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIF0sIFtdLCB0cnVlLCBmYWxzZVxuXG4gIGxldCBub19yZW1vdmUgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIG5vdCAoQS5nZXQgYmxhY2tib2FyZC5pc19yZW1vdmVfYWN0aW9uIGVpZClcblxuICBsZXQgc2FtZV9sZW5ndGggX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQxIGVpZDIgPVxuICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMVxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMlxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQxXG4gICAgICAgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkMlxuXG4gIGxldCBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgIHwgW10gLT4gY29sdW1uLCBibGFja2JvYXJkXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgYm9vbCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChlaWQsIF8sIGZhbHNlKSA6OiBxIC0+XG4gICAgICAgICAgaWYgZWlkID0gLTEgdGhlblxuICAgICAgICAgICAgbGlzdCwgYm9vbFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGF1eCBxIHRydWVcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gLT4gbGlzdCwgYm9vbFxuICAgICAgaW5cbiAgICAgIGxldCBsaXN0LCBib29sID0gYXV4IHRhaWwgZmFsc2UgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBoZWFkIDo6IGxpc3QgaW5cbiAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgdCBjb2x1bW4gYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICAgICkgZWxzZVxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcblxuICBsZXQgY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVpZCA9IGJsYWNrYm9hcmQubnN0ZXBzIGluXG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgc2NhbiBwcmVkaWNhdGVfbGlzdCA9XG4gICAgICBtYXRjaCBwcmVkaWNhdGVfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBbXVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICBpblxuICAgICAgICBsZXQgY29sdW1uLCBibGFja2JvYXJkID0gY2xlYW4gdCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAobWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gc2NhbiBxICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoXywgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiB4ID0geSAtPlxuICAgICAgICAgIHNjYW4gcSAoKiBtdXRlIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIC0+XG4gICAgICAgICAgaWYgYSA9IGVpZCAmJiB4ID0geSB0aGVuXG4gICAgICAgICAgICBlcnJvciwgU29tZSAoYSwgYiksIGJsYWNrYm9hcmQsIHEgKCogYSBjYW5jZWxzIGIgbW9kaWYgKilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcVxuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIHEpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGNhbmRpZGF0ZXMsIGJsYWNrYm9hcmQsIHEgPSBzY2FuIHByZWRpY2F0ZV9saXN0IGluXG4gICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBOb25lXG4gICAgfCBTb21lIChlaWRhLCBlaWRiKSAtPlxuICAgICAgaWZcbiAgICAgICAgbm9fcmVtb3ZlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYlxuICAgICAgICAmJiBzYW1lX2xlbmd0aCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZGEgZWlkYlxuICAgICAgICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IFtdIHBpZCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4sIF9ibGFja2JvYXJkID0gY2xlYW4gcGlkIGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gdHJ1ZSAoKiBubyBtb2RpZiBvbiBhICopXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpZiB5ZXMsIGEgY2FuY2VscyBiIG1vZGlmKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogaXMgYSBtb2RpZiBpcyBtdXRlID8gKilcbiAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICBxXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfYXV4IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICAgIHwgKGIsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBiIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgICB8IChiLCBfLCBib29sKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICBub3QgYm9vbCAoKiBpZiB5ZXMsIGIgZG9lcyBub3QgZG8gbW9kaWYgKilcbiAgICAgICAgICAgICAgICAgfCAoXywgXywgXykgOjogdGFpbCAtPiBjaGVja19hdXggdGFpbFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfXG4gICAgICAgICAgICAgICAgIHdoZW4gYiA9IGVpZGIgJiYgYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGNoZWNrX2F1eCBjb2x1bW4gKCogb3RoZXJ3aXNlIGNoZWNrIHRoYXQgYiBoYXMgbm8gZWZmZWN0ICAqKSlcbiAgICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZGIpXG4gICAgICB0aGVuXG4gICAgICAgIGVycm9yLCBTb21lIChlaWRhLCBlaWRiKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgTm9uZVxuXG4gIGxldCBwb3AgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgYXV4IGwgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGJsYWNrYm9hcmRcbiAgICAgIHwgcGlkIDo6IHRhaWwgLT5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIENQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgKGEsIF8sIF8pIDo6IHEgd2hlbiBhID0gZWlkIC0+IHFcbiAgICAgICAgICB8IF8gLT4gbGlzdFxuICAgICAgICBpblxuICAgICAgICBhdXggdGFpbCBlcnJvclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgcGlkIGxpc3QgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gYXV4IHByZWRpY2F0ZV9saXN0IGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIE5vbmUgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgX2JsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgX2ludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkMTsgcHJlZGljYXRlX2lkMiBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkID1cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9IFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZV9tYXBzLlByZWRpY2F0ZU1hcC5hZGQgaWQgdmFsdWUgbWFwKVxuICAgICAgICBtYXAgbGlzdFxuICAgIGluXG4gICAgbGV0IGJ1aWxkX21hcF90ZXN0IGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbWFwIGlkIC0+IFByZWRpY2F0ZU1hcC5hZGQgaWQgdHJ1ZSBtYXApIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID0gUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCAoZmFsc2UsIE5vbmUpIHBpZCBtYXAgaW5cbiAgICAgIGxldCB0ZXN0ID0gdGVzdCB8fCB0ZXN0JyBpblxuICAgICAgbGV0IGFjdGlvbiA9XG4gICAgICAgIG1hdGNoIGFjdGlvbicgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICAgIHwgXyAtPiBhY3Rpb24nXG4gICAgICBpblxuICAgICAgbGV0IG1hcCA9IFByZWRpY2F0ZU1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgdGVzdCAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IG1hcClcbiAgICAgICAgUHJlZGljYXRlTWFwLmVtcHR5IHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBhY3Rpb25fbWFwLFxuICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgIGlzX3JlbW92ZV9hY3Rpb24sXG4gICAgICAgICAgX2lzX2NyZWF0ZV9hY3Rpb24gKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAsIGJvb2wsIGJvb2xfY3JlYXRpb24pXG4gICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QsIGJvb2wnLCBib29sX2NyZWF0aW9uJyA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcF90ZXN0IHRlc3RfbGlzdCB0ZXN0X21hcCxcbiAgICAgICAgICAgIGJvb2wgfHwgYm9vbCcsXG4gICAgICAgICAgICBib29sX2NyZWF0aW9uIHx8IGJvb2xfY3JlYXRpb24nICkpXG4gICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgUHJlZGljYXRlTWFwLmVtcHR5LCB0ZXN0X21hcCwgZmFsc2UsIGZhbHNlKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZU1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKHRlc3QsIFNvbWUgYWN0aW9uKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPiBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgTm9uZSkgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5IChmYWxzZSwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuICgoYSwgXyksIGIpIG1hcCAtPlxuICAgICAgICAgIGxldCBwaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhLCBiKSBpblxuICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKGZhbHNlLCBTb21lIFByZWRpY2F0ZV9tYXBzLkZyZWUpIG1hcClcbiAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIG1lcmdlZF9tYXBcbiAgICBpblxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5uc3RlcHMgKyAxIGluXG4gICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmV2ZW50IG5zaWQgKFNvbWUgc3RlcCkgaW5cbiAgICBsZXQgbl9tb2RpZmljYXRpb25zLCBwcmVfc3RlcHNfYnlfY29sdW1uLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgIFByZWRpY2F0ZU1hcC5mb2xkXG4gICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgKG5fbW9kaWZpY2F0aW9ucywgbWFwLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0KSAtPlxuICAgICAgICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBbIC0xLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQsIGZhbHNlIF1cbiAgICAgICAgICAgICAgaWQgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIG9sZF9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgKF8sIHYsIF8pIDo6IF8gLT4gdlxuICAgICAgICAgICAgfCBbXSAtPiBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIGJvb2xfYWN0aW9uLCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbl9tb2RpZmljYXRpb25zLCBmYWxzZSwgbW9kX3dpdGhvdXRfdGVzdFxuICAgICAgICAgICAgfCBTb21lIF8gLT4gbl9tb2RpZmljYXRpb25zICsgMSwgdHJ1ZSwgbW9kX3dpdGhvdXRfdGVzdCB8fCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIG5fbW9kaWZpY2F0aW9ucyxcbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuYWRkIGlkXG4gICAgICAgICAgICAgICgobnNpZCwgbmV3X3ZhbHVlLCBib29sX2FjdGlvbikgOjogb2xkX2xpc3QpXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgIChpZCwgbmV3X3ZhbHVlKSA6OiBsaXN0LFxuICAgICAgICAgICAgbW9kX3dpdGhvdXRfdGVzdCApKVxuICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICgwLCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiwgW10sIGZhbHNlKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgaXNfcmVtb3ZlX2FjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gbnNpZCB0cnVlIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWRcbiAgICAgICAgKExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QpKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBuc2lkIG5fbW9kaWZpY2F0aW9uc1xuICAgIGluXG4gICAgbGV0ICgpID0gQS5zZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBuc2lkIG1vZF93aXRob3V0X3Rlc3QgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBldmVudCA9IHByZV9ldmVudDtcbiAgICAgICAgc3RlcHNfYnlfY29sdW1uID0gcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgbnN0ZXBzID0gbnNpZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBpbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGN1dCBwYXJhbWV0ZXIgaGFuZGxlciBpbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBuX3N0ZXBzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBibGFja2JvYXJkID0gaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciBpblxuICAgIGxldCBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0KSBzdGVwIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRvX3BvcCA9IGNoZWNrIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICBtYXRjaCB0b19wb3Agd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXRcbiAgICAgICAgICB8IFNvbWUgKGUxLCBlMikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUxIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBwb3AgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlMiBpblxuICAgICAgICAgICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0ICsgMilcbiAgICAgICAgKGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCAwKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbGlzdCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIGxpc3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhdXggKGsgLSAxKSAoYSA6OiBsaXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBsaXN0XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggYmxhY2tib2FyZC5uc3RlcHMgW11cbiAgICBpblxuICAgIGxldCB0YWIgPSBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCBfID0gTGlzdC5pdGVyIChDUHJlZGljYXRlTWFwLnJlY3ljbGUgdGFiKSBibGFja2JvYXJkLmFnZW50X2xpc3QgaW5cbiAgICBlcnJvciwgaW5mbywgKGxpc3QsIG5fY3V0KVxuXG4gICgqICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9IGVycm9yLCBpbmZvLCAobGlzdCwwKSopXG5lbmRcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyOS8wMS8yMDE2XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBQcmVCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcbiAgbW9kdWxlIENJIDogUHNldWRvX2ludmVyc2UuQ3V0X3BzZXVkb19pbnZlcnNlXG5cbiAgdHlwZSBzdGVwX2lkXG5cbiAgdmFsIHplcm9fc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGR1bW15X3N0ZXBfaWQgOiBzdGVwX2lkXG4gIHZhbCBpbnRfb2Zfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gaW50XG4gIHZhbCBzdGVwX2lkX29mX2ludCA6IGludCAtPiBzdGVwX2lkXG4gIHZhbCBkZWNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuICB2YWwgaW5jX3N0ZXBfaWQgOiBzdGVwX2lkIC0+IHN0ZXBfaWRcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWRcblxuICB2YWwgemVyb19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgZHVtbXlfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGludF9vZl9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfc2hvcnRfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGluY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkZWNfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWQgLT4gc3RlcF9zaG9ydF9pZFxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gIHR5cGUgcHJlZGljYXRlX2luZm9cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWVcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICB0eXBlIHByZV9ibGFja2JvYXJkICgqYmxhY2tib2FyZCBkdXJpbmcgaXRzIGNvbnN0cnVjdGlvbiopXG5cbiAgdmFsIHdlYWtlbmluZyA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgbGlzdFxuXG4gIHZhbCBjb25qIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkaXNqdW5jdGlvbiA6XG4gICAgKHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZVxuICB2YWwgdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmtub3duIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCBpc191bmtub3duIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGlzX3VuZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBtb3JlX3JlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGNvbXBhdGlibGUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIHN0cmljdGx5X21vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiA6IHByZV9ibGFja2JvYXJkIC0+IHByZWRpY2F0ZV9pbmZvIEEudFxuXG4gICgqKiBnZW5lcmF0aW9uKilcblxuICB2YWwgaW5pdCA6IHByZV9ibGFja2JvYXJkIENJLlBvLksuSC56ZXJvYXJ5XG5cbiAgdmFsIGFkZF9zdGVwIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGFkZF9zdGVwX3VwX3RvX2lzbyA6XG4gICAgKCBUcmFjZS5zdGVwLFxuICAgICAgcHJlX2JsYWNrYm9hcmQsXG4gICAgICBzdGVwX2lkLFxuICAgICAgcHJlX2JsYWNrYm9hcmQgKiBzdGVwX2lkIClcbiAgICBDSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBmaW5hbGl6ZSA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAocHJlX2JsYWNrYm9hcmQsIHByZV9ibGFja2JvYXJkKSBDSS5Qby5LLkgudW5hcnlcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuXG4gIHZhbCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIDogcHJlZGljYXRlX3ZhbHVlIC0+IHN0cmluZ1xuICB2YWwgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV92YWx1ZSAtPiB1bml0XG4gIHZhbCBwcmludF9wcmVibGFja2JvYXJkIDogKHByZV9ibGFja2JvYXJkLCB1bml0KSBDSS5Qby5LLkgudW5hcnlcblxuICAoKippbnRlcmZhY2UqKVxuXG4gIHZhbCBuX2V2ZW50cyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcbiAgdmFsIG5fcHJlZGljYXRlcyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBpbnQsIHByZWRpY2F0ZV9pZCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBldmVudF9saXN0X29mX3ByZWRpY2F0ZSA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHByZWRpY2F0ZV9pZCxcbiAgICAgIChzdGVwX2lkICogaW50ICogcHJlZGljYXRlX3ZhbHVlICogcHJlZGljYXRlX3ZhbHVlKSBsaXN0IClcbiAgICBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG1hbmRhdG9yeV9ldmVudHMgOlxuICAgICggcHJlX2JsYWNrYm9hcmQsXG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3QgKVxuICAgIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfcHJlX2V2ZW50IDogKHByZV9ibGFja2JvYXJkLCBUcmFjZS5zdGVwIEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9zaWRlX2VmZmVjdCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9maWN0aXRpb3VzX29ic2VydmFibGUgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCBvcHRpb24pIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbGV2ZWxzIDogcHJlX2JsYWNrYm9hcmQgLT4gUHJpb3JpdHkubGV2ZWwgQS50XG4gIHZhbCBwcmludF9wcmVkaWNhdGVfaW5mbyA6IExvZ2dlcnMudCAtPiBwcmVkaWNhdGVfaW5mbyAtPiB1bml0XG5lbmRcblxubW9kdWxlIFByZWJsYWNrYm9hcmQgOiBQcmVCbGFja2JvYXJkID0gc3RydWN0XG4gICgqKiBVc2VmdWwgbW9kdWxlcyAqKVxuXG4gIG1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuICBtb2R1bGUgQ0kgPSBQc2V1ZG9faW52ZXJzZS5Qc2V1ZG9faW52XG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCB4ID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB4XG5cbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIHN0ZXBfaWQgPSBpbnRcbiAgKCoqIGdsb2JhbCBpZCBvZiBhbiBldmVudCAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX2lkIGkgPSBpXG4gIGxldCBzdGVwX2lkX29mX2ludCBpID0gaVxuICBsZXQgZGVjX3N0ZXBfaWQgaSA9IGkgLSAxXG4gIGxldCBpbmNfc3RlcF9pZCBpID0gaSArIDFcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWQgPSBpbnRcbiAgKCoqIHBvc2l0aW9uIG9mIGFuIGV2ZW50IG9uIGEgd2lyZSAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfc2hvcnRfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX3Nob3J0X2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX3Nob3J0X2lkIGkgPSBpXG4gIGxldCBzdGVwX3Nob3J0X2lkX29mX2ludCBpID0gaVxuICBsZXQgaW5jX3N0ZXBfc2hvcnRfaWQgaSA9IGkgKyAxXG4gIGxldCBkZWNfc3RlcF9zaG9ydF9pZCBpID0gaSAtIDFcblxuICAoKiogYmxhY2tib2FyZCBwcmVkaWNhdGVzKilcblxuICAoKioga2luZCBvZiBldmVudHMqKVxuICB0eXBlIHJ1bGVfdHlwZSA9XG4gICAgfCBTdWJzXG4gICAgfCBEdW1teVxuICAgIHwgSW5pdFxuICAgIHwgT2JzZXJ2YWJsZVxuICAgIHwgUnVsZVxuICAgIHwgU2lkZV9lZmZlY3Rfb2Ygb2ZcbiAgICAgICAgKHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lKSBsaXN0KVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gICgqKiB3aXJlIGlkZW50aWZpZXJzICopXG5cbiAgdHlwZSBtdXRleCA9XG4gICAgfCBMb2NrX3NpZGVfZWZmZWN0IG9mXG4gICAgICAgIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBMb2NrX2FnZW50IG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX3JlY3Rhbmd1bGFyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX2xpbmtzIG9mIHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWQpXG5cbiAgKCoqIHdpcmUgbGFiZWxzICopXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgRmljdGl0aW91cyAoKnRvIGhhbmRsZSB3aXRoIGFtYmlndW91cyBzaXRlIGVmZmVjdHMgKilcbiAgICB8IEhlcmUgb2YgQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgQm91bmRfc2l0ZSBvZiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgUG9pbnRlciBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgTXV0ZXggb2YgbXV0ZXhcbiAgICB8IExpbmsgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG5cbiAgbGV0IF8gPSBMaW5rICgwLCAwLCAwKVxuICAoKiBkbyBub3QgcmVtb3ZlLCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgZGVhbGluZyBlZmZlY3RpdmVseSB3aXRoIHVuYXJ5L2JpbmFyeSBydWxlICopXG5cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWUgPVxuICAgIHwgQ291bnRlciBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgb2YgSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBDSS5Qby5LLmludGVybmFsX3N0YXRlXG4gICAgfCBEZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBleGlzdCwgYnV0IHdlIGRvIG5vdCBrbm93IHdoYXQgdGhlIHZhbHVlIGlzICopXG4gICAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgICB8IFByZXNlbnQgICgqKiBmb3IgYWdlbnQgcHJlc2VuY2UgKilcbiAgICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICAgIHwgQm91bmQgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbikgKilcbiAgICB8IEJvdW5kX3RvIG9mXG4gICAgICAgIHByZWRpY2F0ZV9pZFxuICAgICAgICAqIENJLlBvLksuYWdlbnRfaWRcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmYgc2l0ZXMgKGNvbXBsZXRlIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG9fdHlwZSBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcbiAgICB8IFVua25vd25cbiAgICAgICAgKCoqICBmb3IgYWdlbnQgcHJlc2VuY2UsIGludGVybmFsIHN0YXRlcywgYmluZGluZyBzdGF0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWUgPSBDYWNoZS5DYWNoZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIGxldCB3ZWFrZW5pbmcgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIC0+XG4gICAgICBbIHA7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnLCBzaXRlKSAtPlxuICAgICAgWyBwOyBCb3VuZF90b190eXBlIChhZywgc2l0ZSk7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IEJvdW5kX3RvX3R5cGUgXyAtPiBbIHA7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IERlZmluZWQgfCBVbmRlZmluZWQgLT4gWyBwIF1cbiAgICB8IFVua25vd24gLT4gW11cblxuICBsZXQgZGVmaW5lZCA9IERlZmluZWRcbiAgbGV0IHVuZGVmaW5lZCA9IFVuZGVmaW5lZFxuICBsZXQgdW5rbm93biA9IFVua25vd25cbiAgbGV0IGlzX3Vua25vd24geCA9IHggPSBVbmtub3duXG4gIGxldCBpc191bmRlZmluZWQgeCA9IHggPSBVbmRlZmluZWRcblxuICAoKiogbWFwcyBhbmQgc2V0cyAqKVxuXG4gIG1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldCA9IFByZWRpY2F0ZVNldE1hcC5TZXRcbiAgbW9kdWxlIFByZWRpY2F0ZU1hcCA9IFByZWRpY2F0ZVNldE1hcC5NYXBcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0ID0gQ2FzZVZhbHVlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgU2lkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZDJNYXAgPSBNb2RzLkludDJNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgQWdlbnRJZDJTZXQgPSBNb2RzLkludDJTZXRcbiAgbW9kdWxlIFNpdGVJZFNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkTWFwID0gTW9kcy5JbnQyTWFwXG5cbiAgdHlwZSBwcmVfYmxhY2tib2FyZCA9IHtcbiAgICBwcmVfZmljdGl0aW91c19saXN0OiBwcmVkaWNhdGVfaWQgbGlzdDtcbiAgICAgICAgKCoqIGxpc3Qgb2Ygd2lyZSBmb3IgbXV0dWFsIGV4Y2x1c2lvbnMsIHRoZSBzdGF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFjZSAqKVxuICAgIHByZV9zdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9zaG9ydF9pZFxuICAgICAgKiAoc3RlcF9pZCAqIHN0ZXBfc2hvcnRfaWQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QpXG4gICAgICBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSB0byB0aGUgbGFzdCBrbm93biB2YWx1ZSBhbmQgdGhlIGxpc3Qgb2Ygc3RlcCAoc3RlcCBpZCx0ZXN0LGFjdGlvbikqKVxuICAgIHByZV9raW5kX29mX2V2ZW50OiBydWxlX3R5cGUgQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIGV2ZW50IGlkIHRvIHRoZSBraW5kIG9mIGV2ZW50ICopXG4gICAgcHJlX2V2ZW50OiBUcmFjZS5zdGVwIEEudDsgICgqKiBtYXBzIGVhY2ggZXZlbnQgdG8gdGhlIHN0ZXAgKilcbiAgICBwcmVfbnN0ZXBzOiBzdGVwX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3QgZXZlbnQgKilcbiAgICBwcmVfbmNvbHVtbjogcHJlZGljYXRlX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3Qgd2lyZSAqKVxuICAgIHByZV9jb2x1bW5fbWFwOiBwcmVkaWNhdGVfaWQgUHJlZGljYXRlTWFwLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBsYWJlbCB0byBpdHMgd2lyZSBpZCAqKVxuICAgIHByZV9jb2x1bW5fbWFwX2ludjogcHJlZGljYXRlX2luZm8gQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZDogUHJlZGljYXRlaWRTZXQudCBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCBmb3IgdGhlIHByZXNlbmNlIG9mIGFuIGFnZW50IHRvIHRoZSBzZXQgb2Ygd2lyZXMgZm9yIGl0cyBhdHRpYnV0ZSAodXNlZnVsLCB3aGVuIGFuIGFnZW50IGdldCByZW1vdmVkLCBhbGwgaXRzIGF0dHJpYnV0ZXMgZ2V0IHVuZGVmaW5lZCAqKVxuICAgIGhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWQ6IEMudCBBLnQ7XG4gICAgICAgICgqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBzZXQgb2YgaXRzIHByZXZpb3VzIHN0YXRlcywgdGhpcyBzdW1tYXJpemUgdGhlIHBvdGVudGlhbCBzdGF0ZSBvZiBhIHNpdGUgdGhhdCBpcyBmcmVlZCwgc28gYXMgdG8gb3ZlcmFwcHJveGltYXRlIHRoZSBzZXQgb2YgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyopXG4gICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZTogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEEudDtcbiAgICBwcmVfb2JzZXJ2YWJsZV9saXN0OlxuICAgICAgKHN0ZXBfaWQgbGlzdCAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uKSBsaXN0O1xuICAgIHByZV9zaWRlX2VmZmVjdF9vZl9ldmVudDogQ0kuUG8uSy5zaWRlX2VmZmVjdCBBLnQ7XG4gICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogc3RlcF9pZCBvcHRpb247XG4gICAgICAgICgqaWQgb2YgdGhlIHN0ZXAgdGhhdCBjbG9zZXMgYWxsIHRoZSBzaWRlLWVmZmVjdCBtdXRleCAqKVxuICAgIHByZV9sZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgQS50O1xuICB9XG5cbiAgbGV0IGxldmVscyBiID0gYi5wcmVfbGV2ZWxfb2ZfZXZlbnRcbiAgbGV0IGdldF9wcmVfY29sdW1uX21hcF9pbnYgeCA9IHgucHJlX2NvbHVtbl9tYXBfaW52XG5cbiAgbGV0IGdldF9wcmVfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIHgucHJlX2V2ZW50XG5cbiAgKCoqIHByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBIZXJlIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkFnZW50X0hlcmUgJWlcIiBpXG4gICAgfCBCb3VuZF9zaXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQmluZGluZ19zdGF0ZSAoJWksJWkpXCIgaSBzXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoaSwgcykgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkludGVybmFsX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IFBvaW50ZXIgKGVpZCwgaWQpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyKGVpZDolaSxhZ19pZDolaSlcIiBlaWQgaWRcbiAgICB8IExpbmsgKGVpZCwgaWQxLCBpZDIpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTGluayhlaWQ6JWksJWktJWkpXCIgZWlkIGlkMSBpZDJcbiAgICB8IE11dGV4IChMb2NrX2FnZW50IChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4IChTdGVwLWlkOiVpLEFnZW50X2lkOiVpKVwiIGludCBpbnQyXG4gICAgfCBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoaW50LCBpbnQyKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9pbnYgKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX2xpbmtzIChpbnQsIChpbnQyLCBpbnQzKSkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfbGlua3MgKFN0ZXAtaWQ6JWksJWktJWkpXCIgaW50IGludDIgaW50M1xuICAgIHwgTXV0ZXggKExvY2tfc2lkZV9lZmZlY3QgKGludCwgaW50MiwgaW50MywgaW50NCkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfc2lkZV9lZmZlY3QgKFN0ZXAtaWQ6JWksJWkvJWkuJWkpXCIgaW50IGludDJcbiAgICAgICAgaW50MyBpbnQ0XG4gICAgfCBGaWN0aXRpb3VzIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGaWN0aXRpb3VzXCJcblxuICBsZXQgcHJpbnRfa25vd24gbG9nIHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVbmtub3duIC0+ICgpXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyB8IERlZmluZWQgfCBVbmRlZmluZWQgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIHhcblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IENvdW50ZXIgaW50IC0+IFwiQ291bnRlciBcIiBeIHN0cmluZ19vZl9pbnQgaW50XG4gICAgfCBEZWZpbmVkIC0+IFwiRGVmaW5lZFwiXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnRlcm5hbF9zdGF0ZSAtPiBzdHJpbmdfb2ZfaW50IGludGVybmFsX3N0YXRlXG4gICAgfCBVbmRlZmluZWQgLT4gXCJVbmRlZmluZWRcIlxuICAgIHwgUHJlc2VudCAtPiBcIlByZXNlbnRcIlxuICAgIHwgRnJlZSAtPiBcIkZyZWVcIlxuICAgIHwgQm91bmQgLT4gXCJCb3VuZFwiXG4gICAgfCBCb3VuZF90byAoaWQsIGFnZW50X2lkLCBhZ2VudF9uYW1lLCBzaXRlKSAtPlxuICAgICAgXCJCb3VuZChcIiBeIHN0cmluZ19vZl9pbnQgaWQgXiBcIixcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfaWQgXiBcIihcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIilAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgQm91bmRfdG9fdHlwZSAoYWdlbnQsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudCBeIFwiQFwiIF4gc3RyaW5nX29mX2ludCBzaXRlIF4gXCIpXCJcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgYWdlbnRfaWQgLT4gXCJQb2ludGVyKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKVwiXG4gICAgfCBVbmtub3duIC0+IFwiXCJcblxuICBsZXQgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyB4ID1cbiAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4KVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSA9XG4gICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQcmVkaWNhdGU6ICVpIFwiIGkgaW5cbiAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgcHJlZGljYXRlX2luZm8gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfcHJlYmxhY2tib2FyZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGxvZyA9IENJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqUFJFQkxBQ0tCT0FSRCoqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogIGFnZW50IHR5cGVzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIG5hbWUgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnQgbmFtZTogJWkgXCIgbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgaWQ6ICVpIFwiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqIHN0ZXBzIGJ5IGNvbHVtbiAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAobmV2ZW50cywgbGlzdCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaWQgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwibmV2ZW50czogJWkgXCIgbmV2ZW50cyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgc2VpZCwgdGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCBpZDogJWkgXCIgZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTaG9ydCBpZDogJWkgXCIgc2VpZCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgdGVzdCBcIlRFU1Q6ICAgXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHRlc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfa25vd24gbG9nIGFjdGlvbiBcIkFDVElPTjogXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGFjdGlvbiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogU2lkZSBlZmZlY3RzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGkgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJldmVudCAlaTosIFwiIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDSS5Qby5LLnByaW50X3NpZGVfZWZmZWN0IGxvZyBsaXN0IGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlByZWRpY2F0ZV9pZCByZWxhdGVkIHRvIHRoZSBwcmVkaWNhdGUgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHJlZGljYXRlaWRTZXQuaXRlclxuICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBzIGluXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlBhc3QgdmFsdWVzIG9mIGEgcHJlZGljYXRlKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDLml0ZXIgKGZ1biBzIC0+IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgcykgcyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKk9ic2VydmFibGVzKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChsLCBfKSAtPlxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChMb2dnZXJzLmZwcmludGYgbG9nIFwiJWksXCIpIGwgaW5cbiAgICAgICAgICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgKCoqIGluZm9ybWF0aW9uIGxhdHRpY2UgKilcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeSB3aXRoXG4gICAgfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudFxuICAgIHwgRnJlZSB8IEJvdW5kX3RvIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBCb3VuZF90b190eXBlIChhZywgcykgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnJywgcycpIHdoZW4gYWcgPSBhZycgJiYgcyA9IHMnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IEJvdW5kIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IEJvdW5kX3RvIF8gfCBCb3VuZF90b190eXBlIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgRGVmaW5lZCAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBVbmtub3duIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG4gICAgfCBVbmtub3duIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKVxuXG4gIGxldCBtb3JlX3JlZmluZWQgeCB5ID0geCA9IHkgfHwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeVxuXG4gIGxldCBjb25qIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIGlmIG1vcmVfcmVmaW5lZCB4IHkgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgZWxzZSBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgeSB4IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeVxuICAgIGVsc2VcbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJjb25qLCAgQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIlxuICAgICAgICAoRmFpbHVyZSBcIkFyZ3VtZW50cyBoYXZlIG5vIGdyZWF0ZXN0IGxvd2VyIGJvdW5kXCIpIFVuZGVmaW5lZFxuXG4gIGxldCBjb21wYXRpYmxlIHggeSA9IHggPSB5IHx8IG1vcmVfcmVmaW5lZCB4IHkgfHwgbW9yZV9yZWZpbmVkIHkgeFxuXG4gIGxldCBkaXNqdW5jdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgaWYgeCA9IHkgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgICAgIHwgVW5rbm93biwgXyB8IF8sIFVua25vd24gfCBVbmRlZmluZWQsIF8gfCBfLCBVbmRlZmluZWQgLT4gVW5rbm93blxuICAgICAgICB8IERlZmluZWQsIF8gfCBfLCBEZWZpbmVkIC0+IERlZmluZWRcbiAgICAgICAgfCBDb3VudGVyIF8sIF9cbiAgICAgICAgfCBfLCBDb3VudGVyIF9cbiAgICAgICAgfCBGcmVlLCBfXG4gICAgICAgIHwgXywgRnJlZVxuICAgICAgICB8IFByZXNlbnQsIF9cbiAgICAgICAgfCBfLCBQcmVzZW50XG4gICAgICAgIHwgSW50ZXJuYWxfc3RhdGVfaXMgXywgX1xuICAgICAgICB8IF8sIEludGVybmFsX3N0YXRlX2lzIF8gLT5cbiAgICAgICAgICBEZWZpbmVkXG4gICAgICAgIHwgQm91bmQsIF8gfCBfLCBCb3VuZCAtPiBCb3VuZFxuICAgICAgICB8IEJvdW5kX3RvX3R5cGUgKGEsIGIpLCBCb3VuZF90byAoXywgXywgYywgZClcbiAgICAgICAgfCBCb3VuZF90byAoXywgXywgYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG9fdHlwZSAoYywgZClcbiAgICAgICAgICB3aGVuIGEgPSBjICYmIGIgPSBkIC0+XG4gICAgICAgICAgQm91bmRfdG9fdHlwZSAoYSwgYilcbiAgICAgICAgfCBfIC0+IEJvdW5kXG4gICAgICApIClcblxuICAoKiogcHJlZGljYXRlIGlkIGFsbG9jYXRpb24gKilcblxuICAoKiogaWYgYSB3aXJlIGNvbmNlcm5zIGFuIGFnZW50LCB3aGljaCBvbmUgaXQgaXMgKilcbiAgbGV0IGFnZW50X2lkX29mX3ByZWRpY2F0ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgeCAtPiBTb21lIHhcbiAgICB8IEJvdW5kX3NpdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgSW50ZXJuYWxfc3RhdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEZpY3RpdGlvdXMgLT4gTm9uZVxuXG4gIGxldCByZWMgYmluZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF9wcmVkaWNhdGVcbiAgICAgIHByZWRpY2F0ZV9pZCBhZ19pZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkID1cbiAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgaW5cbiAgICBsZXQgb2xkX3NldCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBzaWRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbmV3X3NldCA9IFByZWRpY2F0ZWlkU2V0LmFkZCBwcmVkaWNhdGVfaWQgb2xkX3NldCBpblxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZCBuZXdfc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJiaW5kLCBPdXQgb2YgYm91bmQgYWNjZXNzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJiaW5kXCIpIGJsYWNrYm9hcmRcblxuICBhbmQgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgPVxuICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX3ByZWRpY2F0ZSBwcmVkaWNhdGUgaW5cbiAgICBsZXQgbWFwID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCBpblxuICAgIGxldCBtYXBfaW52ID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaW5cbiAgICBtYXRjaCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcHJlZGljYXRlIG1hcCB3aXRoXG4gICAgfCBTb21lIHNpZCAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHNpZCcgPSBibGFja2JvYXJkLnByZV9uY29sdW1uICsgMSBpblxuICAgICAgbGV0IG1hcCcgPSBQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZSBzaWQnIG1hcCBpblxuICAgICAgbGV0IF8gPSBBLnNldCBtYXBfaW52IHNpZCcgcHJlZGljYXRlIGluXG4gICAgICBsZXQgbWFwX2ludicgPSBtYXBfaW52IGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCBzaWQnXG4gICAgICAgICAgKEMuY3JlYXRlIHBhcmFtZXRlci5DSS5Qby5LLkguY2FjaGVfc2l6ZSlcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbmNvbHVtbiA9IHNpZCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBtYXAnO1xuICAgICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IG1hcF9pbnYnO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIG1hdGNoIGFnX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICB8IFNvbWUgYWdfaWQgLT5cbiAgICAgICAgICBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlIHNpZCcgYWdfaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZCdcblxuICBsZXQgY3JlYXRlX2FnZW50IF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnZW50X2lkID1cbiAgICBsZXQgb2xkX2xpc3QgPVxuICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgIGluXG4gICAgbGV0IG5ld19saXN0ID0gYWdlbnRfaWQgOjogb2xkX2xpc3QgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lIG5ld19saXN0IGluXG4gICAgZXJyb3IsIGJsYWNrYm9hcmRcblxuICBsZXQgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ2VudF9pZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNldCA9XG4gICAgICB0cnlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICBwcmVkaWNhdGVfaWQgKVxuICAgICAgd2l0aCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImZyZWVfYWdlbnQsIFRyeSB0byBmcmVlIGFuIHVuZXhpc3RpbmcgYWdlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiZnJlZV9hZ2VudFwiKSBQcmVkaWNhdGVpZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBQcmVkaWNhdGVpZFNldC5mb2xkXG4gICAgICAgIChmdW4gcHJlZGljYXRlX2lkIG1hcCAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBQcmVkaWNhdGVNYXAucmVtb3ZlIHByZWRpY2F0ZSBtYXApXG4gICAgICAgIHNldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9jb2x1bW5fbWFwID0gbWFwIH1cblxuICBsZXQgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgYWdlbnRfaWQgPVxuICAgIGlmIFByZWRpY2F0ZU1hcC5tZW0gKEhlcmUgYWdlbnRfaWQpIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXAgdGhlblxuICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5pdCBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgPVxuICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHByZWRpY2F0ZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBibGFja2JvYXJkLCAocHJlZGljYXRlaWQsIFVuZGVmaW5lZCkgOjogbGlzdClcbiAgICAgICAgICBzZXRcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbml0XG4gICAgICBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgKCogICAgICAgICAgICAgICBsZXQgZXJyb3IsYmxhY2tib2FyZCA9IGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ19pZCBpbiAqKVxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QpIC0+XG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGJvb2wgPVxuICAgIGlmIGJvb2wgdGhlblxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fc3Vic1xuICAgIGVsc2VcbiAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnNcblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdIClcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBCb3VuZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIEJvdW5kX3RvX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgXSApXG5cbiAgbGV0IHR5cGVfb2Zfc3RlcCB4ID1cbiAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB4IHRoZW5cbiAgICAgIE9ic2VydmFibGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfaW5pdCB4IHRoZW5cbiAgICAgIEluaXRcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfcnVsZSB4IHRoZW5cbiAgICAgIFJ1bGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfc3VicyB4IHRoZW5cbiAgICAgIFN1YnNcbiAgICBlbHNlXG4gICAgICBEdW1teVxuXG4gICgqKiBpbml0aWFsaXNhdGlvbiopXG4gIGxldCBpbml0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50ID0gQS5tYWtlIDEgQ0kuUG8uSy5lbXB0eV9zaWRlX2VmZmVjdDtcbiAgICAgICAgcHJlX2V2ZW50ID0gQS5tYWtlIDEgKFRyYWNlLmR1bW15X3N0ZXAgXCJcIik7XG4gICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9IEEubWFrZSAxICgxLCBbXSk7XG4gICAgICAgIHByZV9uc3RlcHMgPSAtMTtcbiAgICAgICAgcHJlX25jb2x1bW4gPSAtMTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBQcmVkaWNhdGVNYXAuZW1wdHk7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IEEubWFrZSAxIEZpY3RpdGlvdXM7XG4gICAgICAgIHByZV9raW5kX29mX2V2ZW50ID0gQS5tYWtlIDEgKFNpZGVfZWZmZWN0X29mICgtMSwgW10pKTtcbiAgICAgICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCA9IEEubWFrZSAxIChDLmNyZWF0ZSBOb25lKTtcbiAgICAgICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSA9IEEubWFrZSAxIFtdO1xuICAgICAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgQS5tYWtlIDEgUHJlZGljYXRlaWRTZXQuZW1wdHk7XG4gICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IE5vbmU7XG4gICAgICAgIHByZV9sZXZlbF9vZl9ldmVudCA9IEEubWFrZSAxIFByaW9yaXR5LmhpZ2hlc3Q7XG4gICAgICB9IClcblxuICBsZXQgZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgQS5nZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgZWlkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gKEZhaWx1cmUgXCJVTmtub3duIGV2ZW50XCIpXG4gICAgICAgIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCA9XG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBuc2lkIH1cblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbl9hdF9uc2lkIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkIG5zaWRcbiAgICAgID1cbiAgICBsZXQgdGVzdCA9IFVuZGVmaW5lZCBpblxuICAgIGxldCBhY3Rpb24gPSBDb3VudGVyIDAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkXG4gICAgICAgICgyLCBbIG5zaWQsIDEsIHRlc3QsIGFjdGlvbiBdKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgaW5pdF9zdGVwID1cbiAgICBtYXRjaCBpbml0X3N0ZXAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFNvbWUgYmxhY2tib2FyZC5wcmVfbnN0ZXBzXG4gICAgfCBTb21lIG5zaWQgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICBuc2lkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXBcblxuICBsZXQgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gaW5cbiAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IG1hcCBwcmVkaWNhdGVfaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3RhcmdldF9pZCBzIHNpdGUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRGVmaW5lZCB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF9cbiAgICB8IFByZXNlbnQgfCBCb3VuZCB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIHN0YXRlIGZvciBhIHNpZGUtZWZmZWN0c1wiXG4gICAgICAgIChGYWlsdXJlIFwiQmxhY2tib2FyZF9nZW5lcmF0aW9uLnNpZGVfZWZmZWN0XCIpIFtdXG4gICAgfCBGcmVlIC0+IGVycm9yLCBsb2dfaW5mbywgWyBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAoRnJlZSwgVW5rbm93bikgXVxuICAgIHwgQm91bmRfdG8gKHBpZCwgYWcsIGFnZW50X25hbWUsIHNuYW1lKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAocywgVW5rbm93bik7XG4gICAgICAgICAgKCBwaWQsXG4gICAgICAgICAgICBTb21lICgoYWcsIGFnZW50X25hbWUpLCBzbmFtZSksXG4gICAgICAgICAgICAoIEJvdW5kX3RvXG4gICAgICAgICAgICAgICAgKCBwcmVkaWNhdGVfdGFyZ2V0X2lkLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzaXRlLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICksXG4gICAgICAgICAgICAgIEZyZWUgKSApO1xuICAgICAgICBdIClcblxuICBsZXQgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5BTlkgLT4gZXJyb3IsIGxvZ19pbmZvLCBVbmtub3duXG4gICAgfCBJbnN0YW50aWF0aW9uLkZSRUUgLT4gZXJyb3IsIGxvZ19pbmZvLCBGcmVlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EIC0+IGVycm9yLCBsb2dfaW5mbywgQm91bmRcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSBidCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvdW5kX3RvX3R5cGVcbiAgICAgICAgICAoIENJLlBvLksuYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQsXG4gICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQgKSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EX3RvIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIGJpbmRpbmcgc3RhdGUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlXCIpIFVua25vd25cblxuICBsZXQgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgIGJpbmRpbmdfc3RhdGUgPVxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNpdGVfbmFtZSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV90YXJnZXRfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAoQm91bmRfc2l0ZSAoYWdlbnRfaWQsIHNpdGVfbmFtZSkpXG4gICAgaW5cbiAgICBsZXQgZm9ybWVyX3N0YXRlcyA9XG4gICAgICBBLmdldCBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgcHJlZGljYXRlX3RhcmdldF9pZFxuICAgIGluXG4gICAgbWF0Y2ggcGFyYW1ldGVyLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgIGxldCBzID0gQy5sYXN0IGZvcm1lcl9zdGF0ZXMgaW5cbiAgICAgIChtYXRjaCBzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbCA9XG4gICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHNcbiAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIGwgXVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdKVxuICAgIHwgU29tZSAoU3RvcnlfanNvbi5TdHJvbmcgfCBTdG9yeV9qc29uLldlYWspIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgIHByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBDLmZvbGRcbiAgICAgICAgICAoZnVuIHMgKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgLT5cbiAgICAgICAgICAgIGlmIG1vcmVfcmVmaW5lZCBzIGJ0IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgICAgICAgICAgICAgICBzIHNpdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBsIDo6IGxpc3RcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGxpc3QpXG4gICAgICAgICAgZm9ybWVyX3N0YXRlcyAoZXJyb3IsIGxvZ19pbmZvLCBbXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3RcblxuICB0eXBlIGRhdGFfc3RydWN0dXJlX3N0cm9uZyA9IHtcbiAgICBuZXdfYWdlbnRzOiBBZ2VudElkU2V0LnQ7XG4gICAgb2xkX2FnZW50czogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lIEFnZW50SWRNYXAudDtcbiAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb246IENJLlBvLksuYWdlbnRfaWQgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgc3VyZV9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBzdXJlX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M6IFNpdGVJZFNldC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzOiBDSS5Qby5LLmFnZW50X2lkIFNpdGVJZE1hcC50O1xuICAgIHN1cmVfdGVzdHM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3Q7XG4gICAgc3VyZV9hY3Rpb25zOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3Q7XG4gICAgY3JlYXRlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBzdXJlX3NpZGVfZWZmZWN0czpcbiAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYmluZGluZ19zdGF0ZSlcbiAgICAgIGxpc3Q7XG4gICAgb3RoZXJfYWdlbnRzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfYWdlbnRzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZE1hcC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZDJNYXAudDtcbiAgICBvdGhlcl9saW5rc19wcmlvcml0eTogQWdlbnRJZDJTZXQudDtcbiAgICBvdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdFxuICAgICAgQWdlbnRJZE1hcC50O1xuICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzOiBBZ2VudElkU2V0LnQ7XG4gICAgcnVsZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBydWxlX2FnZW50X2lkX3N1YnM6IHByZWRpY2F0ZV9pZCBBZ2VudElkTWFwLnQ7XG4gICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBsaW5rc19tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWQyTWFwLnQ7XG4gICAgcmVtb3ZlZF9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgfVxuXG4gIGxldCBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyA9XG4gICAge1xuICAgICAgbmV3X2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBvbGRfYWdlbnRzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdXJlX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc3VyZV90ZXN0cyA9IFtdO1xuICAgICAgc3VyZV9hY3Rpb25zID0gW107XG4gICAgICBjcmVhdGVfYWN0aW9ucyA9IFtdO1xuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBbXTtcbiAgICAgIG90aGVyX2FnZW50c190ZXN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc19wcmlvcml0eSA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbnMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX3N1YnMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgcmVtb3ZlZF9hZ2VudHMgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9IFNpdGVJZFNldC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IHByaW50X2RhdGFfc3RydWN0dXJlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgX2RhdGEgPVxuICAgICgqIGxldCBzdGRlcnIgPSBwYXJhbWV0ZXIuQ0kuUG8uSy5ILm91dF9jaGFubmVsX2VyciBpblxuICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBoYW5kbGVyLkNJLlBvLksuSC5lbnYgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk5ldyBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkgQC5cIikgZGF0YS5uZXdfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgaWQ6JWk6IHR5cGU6JWkgQC5cIikgZGF0YS5vbGRfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHMgaW1wbGllZCBpbiBsaW5rczogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLnN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlRlc3RlZF9saW5rc19tYXA6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgU2l0ZUlkTWFwLml0ZXIgKGZ1biAoYSxiKSAtPiBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkuJWkgLT4gJWkgQC5cIiBhIGIgKSBkYXRhLm90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk1vZGlmaWVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlBvdGVudGlhbCBzdWJzdGl0dXRpb246IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaUAuXCIgaWRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgICAlaUAuXCIpIGwpXG4gICAgICAgICBkYXRhLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFnZW50czpALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpQC5cIikgZGF0YS5zdXJlX2FnZW50c1xuICAgICAgIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHRlc3RzOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGRhdGEuc3VyZV90ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdHMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGxcbiAgICAgICApKVxuICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc190ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU3VyZSBhY3Rpb25zOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIkFjdGlvbnMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgICAgIChQcC5zZXQgQWdlbnRJZDJNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKChpZDEsaWQyKSxsKSAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgZiBcIiglaSwlaSlALCVhXCIgaWQxIGlkMlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25zIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHNpZGVfZWZmZWN0cyBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIExpc3QuaXRlclxuICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiBcIilcbiAgICAgICAgIGRhdGEuc3VyZV9zaWRlX2VmZmVjdHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU2lkZSBlZmZlY3QgdG8gYmUgc3Vic3RpdHV0ZWQ6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiIGlkIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgIChDSS5Qby5LLnByaW50X3NpZGUgc3RkZXJyIGhhbmRsZXIgXCIgIFwiKVxuICAgICAgICAgICAgICAgbFxuICAgICAgICAgICBpbiAoKSlcbiAgICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgICAgIGluKilcbiAgICBlcnJvclxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzO1xuICAgIH1cblxuICBsZXQgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcyA9XG4gICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZSBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M7XG4gICAgfVxuXG4gIGxldCBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgU2l0ZUlkU2V0Lm1lbSBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rc1xuXG4gIGxldCBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHsgZGF0YV9zdHJ1Y3R1cmUgd2l0aCBzdXJlX3Rlc3RzID0gdGVzdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3Rlc3RzIH1cblxuICBsZXQgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID1cbiAgICAgICAgQWdlbnRJZE1hcC5hZGQgYWdfaWQgKHRlc3QgOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPVxuICAgICAgICBBZ2VudElkMk1hcC5hZGQgbGluayAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWN0aW9ucyA9IGFjdGlvbiA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnMgfVxuXG4gIGxldCBhZGRfY3JlYXRlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IG9sZCA9XG4gICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBhZ19pZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX2FjdGlvbnMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoYWN0aW9uIDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gbGluayBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGEsIGIgPSBmc3QgbGluaywgc25kIGxpbmsgaW5cbiAgICBsZXQgbGluayA9XG4gICAgICBpZiBhIDwgYiB0aGVuXG4gICAgICAgIGxpbmtcbiAgICAgIGVsc2VcbiAgICAgICAgYiwgYVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlLCBvbGQgPVxuICAgICAgbWF0Y2ggQWdlbnRJZDJNYXAuZmluZF9vcHRpb24gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHN1cmVfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgOjogZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IHNpdGUgPSBmc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnZW50X2lkXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoc2lkZV9lZmZlY3QgOjogb2xkKVxuICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3RlcF9zdHJvbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkIHN0ZXBfaWQgPVxuICAgIGxldCBpbml0ID0gVHJhY2Uuc3RlcF9pc19pbml0IHN0ZXAgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmcgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBhY3Rpb24gLT5cbiAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG5ld19hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRTZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm5ld19hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZzFfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZzJfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMV9pZCA9IGFnMV9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGUyX2lkID0gYWcyX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICByZW1vdmVkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50KVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uX2xpc3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG9sZF9hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIGFnMV9pZCBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZTFfaWRcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcyX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMl9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9XG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmFkZCBzaXRlMV9pZCBhZzJfaWRcbiAgICAgICAgICAgICAgICAgIChTaXRlSWRNYXAuYWRkIHNpdGUyX2lkIGFnMV9pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgdGVzdGVkX3NpdGVzID1cbiAgICAgIFNpdGVJZE1hcC5mb2xkXG4gICAgICAgIChmdW4gYSBfIC0+IFNpdGVJZFNldC5hZGQgYSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBtb2Rfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgU2l0ZUlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgcHJpb3JpdHlfc2l0ZXMgPSBTaXRlSWRTZXQuaW50ZXIgdGVzdGVkX3NpdGVzIG1vZF9zaXRlcyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkTWFwLm1hcFxuICAgICAgICAgICAgKEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSlcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWdlbnRzID0gZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cyB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1cmVfYWdlbnRzID1cbiAgICAgICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gaWQgbCBzdXJlX2FnZW50cyAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIF8gXSAtPiBBZ2VudElkU2V0LmFkZCBpZCBzdXJlX2FnZW50c1xuICAgICAgICAgICAgICB8IF8gLT4gc3VyZV9hZ2VudHMpXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHN1cmVfYWdlbnQgPVxuICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgIGZ1biBfIC0+XG4gICAgICB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIGZ1biB4IC0+XG4gICAgICBBZ2VudElkU2V0Lm1lbSB4IGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9XG4gICAgICAgICAgQWdlbnRJZFNldC5mb2xkIEFnZW50SWRNYXAucmVtb3ZlIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb247XG4gICAgICB9XG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWQxXG4gICAgICAgICAgICAgICYmIChub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9pZDEpIHByaW9yaXR5X3NpdGVzKSlcbiAgICAgICAgICAgICAgJiYgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfaWQyKSBwcmlvcml0eV9zaXRlcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbWl4X3NpdGUxID0gYWdfaWQxLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTIgPSBhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgICBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIG1peF9zaXRlMVxuICAgICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUyIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBTaXRlSWRTZXQubWVtIG1peF9zaXRlMSBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgICAgfHwgU2l0ZUlkU2V0Lm1lbSBtaXhfc2l0ZTIgcHJpb3JpdHlfc2l0ZXNcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhZ19pZDEsIGFnX2lkMiA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGFnX2lkMSA8IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQxLCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFnX2lkMiwgYWdfaWQxXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkMlNldC5hZGQgKGFnX2lkMSwgYWdfaWQyKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkMSAmJiBzdXJlX2FnZW50IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgIChhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEpXG4gICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgICAgIChhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIpXG4gICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSB0ZXN0IC0+XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3QgdGVzdCBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWRcbiAgICAgICAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgICAgICAgKFNpdGVJZFNldC5tZW1cbiAgICAgICAgICAgICAgICAgICAgICAoYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9saW5rcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZCwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9uYW1lMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrMSA9XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZTEsIChhZ2VudF9uYW1lMiwgc2l0ZV9uYW1lMikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHdlYWsyID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMiwgKGFnZW50X25hbWUxLCBzaXRlX25hbWUxKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICggc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDEsIHNpdGVfbmFtZTEpIHByaW9yaXR5X3NpdGVzKSxcbiAgICAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfbmFtZTIpIHByaW9yaXR5X3NpdGVzKSApXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHdlYWsxXG4gICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3Qgd2VhazIgYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3VyZV90ZXN0IHdlYWsyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB3ZWFrMSBhZ19pZDFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIC0+IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzaXRlIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgaWYgbWVtX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGVfaWQxIGRhdGFfc3RydWN0dXJlIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBhZ19pZDIgLT5cbiAgICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IGFjdGlvbl9saXN0KVxuICAgIGluXG5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBzaWRlX2VmZmVjdCAtPlxuICAgICAgICAgIGxldCBzaXRlLCBfID0gc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgIGFkZF9zdXJlX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX3N1YnNfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzID1cbiAgICAgICAgICAobGV0IGYgeCBzZXQgPVxuICAgICAgICAgICAgIEFnZW50SWQyTWFwLmZvbGRcbiAgICAgICAgICAgICAgIChmdW4gKGExLCBhMikgXyBzZXQgLT4gQWdlbnRJZFNldC5hZGQgYTEgKEFnZW50SWRTZXQuYWRkIGEyIHNldCkpXG4gICAgICAgICAgICAgICB4IHNldFxuICAgICAgICAgICBpblxuICAgICAgICAgICBmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzXG4gICAgICAgICAgICAgKGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9ucyBBZ2VudElkU2V0LmVtcHR5KSk7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgaW5pdF9zdGVwID0gTm9uZSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIF8sXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZE1hcC5mb2xkXG4gICAgICAgIChmdW4geCBsXG4gICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgLT5cbiAgICAgICAgICAoKiB0aGUgZm9sbG93aW5nIG11dGV4IGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBmYWN0IHRoYXQgdGhlIGFnZW50IHggaW4gdGhlIGxocyBvZiB0aGUgcnVsZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBleGFjdGVseSBvbmUgYWdlbnQgaW4gdGhlIG1peHR1cmUgKilcbiAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBNdXRleCAoTG9ja19hZ2VudCAoc3RlcF9pZCwgeCkpIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfbXV0ZXggPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBQb2ludGVyIChzdGVwX2lkLCB4KSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBydWxlX2FnZW50X2lkX3N1YnMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggcHJlZGljYXRlX2lkIHJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBydWxlX2FnZW50X2lkX3N1YnMsIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIklEIG9mIGFnZW50IGluIHRoZSBydWxlOiAlaSwgSUQgb2YgdGhlIGFnZW50IGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmU6ICVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggaWRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHNldCcgPSBBZ2VudElkU2V0LmFkZCBpZCBzZXQgaW5cbiAgICAgICAgICAgICAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBBZ2VudElkTWFwLm1lbSBpZCBtaXh0dXJlX2FnZW50X2lkX211dGV4IHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaXMgYWxyZWFkeSBkZWNsYXJlZCwgbm90aGluZyB0byBkbyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTXV0ZXggYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaGFzIHRvIGJlIGFsbG9jYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ3JlYXRlIE11dGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgTXV0ZXggKExvY2tfcmVjdGFuZ3VsYXIgKHN0ZXBfaWQsIGlkKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgaWQgcHJlZGljYXRlX2lkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgKCogVGhlIGFnZW50IGluIHRoZSBtaXh0dXJlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBubyBuZWVkIGZvciBhIG11dGV4IGZvciB0aGUgbW9tZW50ICopXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgYWdlbnQgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRleCB5ZXRcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgIGluXG4gICAgbGV0IGxpbmtzX211dGV4ID0gQWdlbnRJZDJNYXAuZW1wdHkgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIHhcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2xpbmtzIChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgbGlua3NfbXV0ZXggaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIGxpbmtzX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX3N1YnM7XG4gICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0IH1cbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCBfID0gcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZGF0YV9zdHJ1Y3R1cmUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggY3JlYXRlZCBhZ2VudHMgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkXG4gICAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgICBsZXQgbnNpZCA9IG5zaWQgaW5cbiAgICAgICAgbGV0IG5zaWRfdm9pZCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBuc2lkX25leHQgPSBuc2lkICsgMSBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBbXSBpblxuICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPSBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBpblxuICAgICAgICBsZXQgdGVzdF9saXN0ID0gW10gaW5cbiAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IFtdIGluXG5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIF9maWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgc2l0ZSBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgICAgICBtZXJnZWRfbWFwIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfdm9pZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgICAgIChDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlLCBsaXN0ID0gQS5nZXQgbWFwIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGZhZGQgaWQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFwKVxuICAgICAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfbGlzdCA9XG4gICAgICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICA6OiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBuc2lkX25leHRcbiAgICAgICAgKVxuICAgIGluXG5cbiAgICAoKioqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50cyAqKiopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBydWxlX2FnX2lkIGwgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgLT5cbiAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgKCBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzLFxuICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3QpIG1peHR1cmVfYWdfaWQgLT5cbiAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBUcmFjZS5zdWJzX3N0ZXAgcnVsZV9hZ19pZCBtaXh0dXJlX2FnX2lkIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBpZF9ydWxlX2FnZW50X211dGV4ID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHggLT4gZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiVW5rbm93biBhZ2VudCBpZFwiKSAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkX3J1bGVfYWdlbnRfbXV0ZXggKENvdW50ZXIgMCkgdGVzdF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAxKSBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X21hcCwgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5ydWxlX2FnZW50X2lkX3N1YnNcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKENvdW50ZXIgMCkgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBtX2lkIChQb2ludGVyX3RvX2FnZW50IG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX21hcCApXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLCBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgYmxvY2sgc2hvdWxkIGJlIGxvZ2dlZCBhbmQgY29ycmVjdGVkICopXG4gICAgICAgICAgICAgICgqIGxldCB0ZXN0X21hcCxhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubWl4dHVyZV9hZ2VudF9pZF9tdXRleCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0ZXN0X21hcCxhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAsIG5saXN0ID1cbiAgICAgICAgICAgICAgICAoKiBlbnVtZXJhdGlvbiBvZiBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSwgYWNjb3JkaW5nIHRvIGEgc3Vic3RpdHV0aW9uICopXG4gICAgICAgICAgICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkLCBjaGVjayB0aGF0IHRoZSB3aXJlIGVuZCBpbiB0aGUgc3RhdGUgMCopXG4gICAgICAgICAgICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgICAgICAgICAgICgqID0+IENvdW50ZXIgMSAtPiBDb3VudGVyIDAgOiB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gaXMgYXBwbGllZCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQgJiB0aGUgYWNjb3JkaW5nIHN1YnN0aXR1dGlvbiB0YWtlbiwgdGhlbiBtdXR1YWwgZXhjbHVzaW9uIGFtb25nIHRoZSBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSopXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hcCwgbmxpc3QpIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAoIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgQ291bnRlciAwKSBtYXAsXG4gICAgICAgICAgICAgICAgICAgICAgcGlkIDo6IG5saXN0ICkpXG4gICAgICAgICAgICAgICAgICAobWVyZ2VkX21hcCwgbmxpc3QpIGZpY3RpdGlvdXNfbG9jYWxfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubWFwaVxuICAgICAgICAgICAgICAgICAgKGZ1biBwaWQgKHRlc3QsIGFjdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZCwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgIHwgSGVyZSBfIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEludGVybmFsX3N0YXRlIF9cbiAgICAgICAgICAgICAgICAgICAgICB8IEZpY3RpdGlvdXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBVbmtub3duXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhY3Rpb24pXG4gICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWQgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0O1xuICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdFxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdClcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIFtdKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggc3Vic3RpdHV0YWJsZSBhZ2VudCBpbiBsaW5rcyopXG4gICAgbGV0IGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBzZXQgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIGxpbmsgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgLT5cbiAgICAgICAgICBsZXQgbGlua19tdXRleCA9XG4gICAgICAgICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLmxpbmtzX211dGV4IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBydWxlX2FnX2lkMSwgcnVsZV9hZ19pZDIgPSBsaW5rIGluXG4gICAgICAgICAgbGV0IGxfYWdfMSA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbIHJ1bGVfYWdfaWQxIF0gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbF9hZ18yID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDIgXSBydWxlX2FnX2lkMlxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgQWdlbnRJZDJNYXAuZmluZF9kZWZhdWx0IFtdIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBtaXh0dXJlX2FnXzEgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgICAgICAoKiBpZiBydWxlX2FnX2lkMSA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICBzdWJzXG4gICAgICAgICAgICAgICAgICAgZWxzZSopXG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgcnVsZV9hZ19pZDEgbWl4dHVyZV9hZ18xIHN1YnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMiAtPlxuICAgICAgICAgICAgICAgICAgaWYgcnVsZV9hZ19pZDEgPSBydWxlX2FnX2lkMiA9IChtaXh0dXJlX2FnXzEgPSBtaXh0dXJlX2FnXzIpXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLmR1bW15X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChcIkxJTksgXCIgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMSBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMSBeIFwiLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtaXh0dXJlX2FnXzIgXiBcIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgcnVsZV9hZ19pZDIgXiBcIilcIilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQyID0gbWl4dHVyZV9hZ18yXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMiBtaXh0dXJlX2FnXzIgc3Vic1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LCBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgeCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBzdWJzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCApID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwaWQsIHgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ19pZCA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWdfaWQgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZDIsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgVW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZW1wdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAoVW5rbm93biwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbGlua19tdXRleCAoQ291bnRlciAwLCBDb3VudGVyIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIFBvaW50ZXIgLT4gKilcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18xLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18yLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgaWYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgbF9hZ18yKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgIGxfYWdfMSlcbiAgICAgICAgc2V0XG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG90aGVyX2xpbmtzID1cbiAgICAgICAgICBBZ2VudElkMlNldC5kaWZmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCByaWdpZCBlbGVtZW50cyAqKVxuICAgIGxldCBzaWRlX2VmZmVjdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfc2lkZV9lZmZlY3RzIGluXG4gICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnMgQCBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnNcbiAgICAgIHwgU29tZSBfIC0+IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgaW5cbiAgICBsZXQgZmljdGl0aW91c19saXN0ID0gYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19saXN0IGluXG5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfbnN0ZXBzID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9uc3RlcHMgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSAocHJlZGljYXRlX2lkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICBzaWRlX2VmZmVjdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgIHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCkgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICgqIFVuZGVmLT5Db3VudGVyIDAgOiBvcGVuaW5nIGV2ZW50ICopXG4gICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgKCogQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAoKiA9PiBDb3VudGVyIDAgLT4gVW5kZWYgOiBjbG9zaW5nIGV2ZW50LCBjaGVjayB0aGF0IGlmIHRoZSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCAob3BlbiBhbmQgY2xvc2VkKSwgdGhlbiBleGFjdGVseSBvbmUgYmluZGluZyBzdGF0ZSBoYXMgYmVlbiBzZWxlY3RlZCxcbiAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIHBpZCAtPiBhZGRfc3RhdGUgcGlkIChDb3VudGVyIDAsIFVuZGVmaW5lZCkgbWFwKVxuICAgICAgICBtZXJnZWRfbWFwIG5saXN0XG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBhZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0IHByZV9ldmVudCA9IGJsYWNrYm9hcmQucHJlX2V2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBbXSBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IHJ1bGVfYWdfaWQgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPVxuICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgKCBzdGVwX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBmaW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGwgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHwgXyAtPlxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgKGZ1biAoeCwgaW5mbykgLT4gbnNpZCA6OiB4LCBpbmZvKVxuICAgICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3QpXG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IG9ic2VydmFibGVfbGlzdDtcbiAgICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gU29tZSBuc2lkO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgcHJlZGljYXRlX2lkIC0+XG4gICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgVW5kZWZpbmVkIFVua25vd24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKSBsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNldCAoc3RlcHMsIF8pIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIHNldCkgZWlkIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBBLmdldCBibGFja2JvYXJkLnByZV9ldmVudCBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBhZ2VudHNfaW5fb2JzID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfaW5fb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LnVuaW9uIHNldCBhZ2VudHNfaW5fb2JzKVxuICAgICAgICAgICAgICBzZXQgc3RlcHMpXG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgIG9ic2VydmFibGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgeCA9IENJLlBvLksuQWdlbnRJZFNldC5tZW0geCBzZXQgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBzdGVwIC0+XG4gICAgICAgICAgICBsZXQgXywgXywgbGV2ZWwgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmxldmVsX29mX2V2ZW50IGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIHN0ZXAgc2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgaSBsZXZlbClcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9ldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgYWRkX3N0ZXBfdXBfdG9faXNvID0gYWRkX3N0ZXBfc3Ryb25nXG5cbiAgKCoqIGludGVyZmFjZSAqKVxuXG4gIGxldCBuX3ByZWRpY2F0ZXMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxXG5cbiAgbGV0IGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIHNuZCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGVcIikgW11cblxuICBsZXQgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX2lkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBmc3QgKEEuZ2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWQpXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBwcmVkaWNhdGUgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGVcIikgMFxuXG4gIGxldCBuX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMVxuXG4gIGxldCBtYW5kYXRvcnlfZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcblxuICBsZXQgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IGdldF9zaWRlX2VmZmVjdCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tib2FyZC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDExLTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo0ODozNCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBQQiA6IEJsYWNrYm9hcmRfZ2VuZXJhdGlvbi5QcmVCbGFja2JvYXJkXG5cbiAgdHlwZSBldmVudF9jYXNlX2FkZHJlc3NcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4ICopXG5cbiAgdHlwZSBjYXNlX2luZm9cbiAgdHlwZSBjYXNlX3ZhbHVlXG4gIHR5cGUgY2FzZV9hZGRyZXNzXG4gIHR5cGUgcG9pbnRlclxuXG4gICgqKiBibGFja2JvYXJkKilcblxuICB0eXBlIGJsYWNrYm9hcmQgKCpibGFja2JvYXJkLCBvbmNlIGZpbmFsaXplZCopXG4gIHR5cGUgYXNzaWduX3Jlc3VsdFxuXG4gIHZhbCBpc19mYWlsZWQgOiBhc3NpZ25fcmVzdWx0IC0+IGJvb2xcbiAgdmFsIGlzX3N1Y2NlZWRlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfaWdub3JlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgc3VjY2VzcyA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGlnbm9yZSA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGZhaWwgOiBhc3NpZ25fcmVzdWx0XG4gIHZhbCBwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFBCLnByZWRpY2F0ZV9pZFxuICB2YWwgYnVpbGRfcG9pbnRlciA6IFBCLnN0ZXBfc2hvcnRfaWQgLT4gcG9pbnRlclxuICB2YWwgaXNfYmVmb3JlX2JsYWNrYm9hcmQgOiBwb2ludGVyIC0+IGJvb2xcbiAgdmFsIGdldF9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBUcmFjZS5zdGVwXG4gIHZhbCBnZXRfbl9laWQgOiBibGFja2JvYXJkIC0+IGludFxuICB2YWwgZ2V0X25wcmVkaWNhdGVfaWQgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFByaW9yaXR5LmxldmVsIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgOiBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBpbnRcbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIDogYmxhY2tib2FyZCAtPiBpbnRcblxuICB2YWwgZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUEIuc3RlcF9zaG9ydF9pZCBvcHRpb25cblxuICB2YWwgZ2V0X2xhc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfc3RhY2tfZGVwdGggOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBpc19zZWxlY3RlZF9ldmVudCA6XG4gICAgKFBCLnN0ZXBfaWQsIGJsYWNrYm9hcmQsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIDpcbiAgICAoY2FzZV92YWx1ZSwgUEIucHJlZGljYXRlX3ZhbHVlKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZm9sbG93X3BvaW50ZXJfdXAgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl9kb3duIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBldmVudF9jYXNlX2FkZHJlc3MpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgaXNfYm91bmRhcnkgOiAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBib29sKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgUEIucHJlZGljYXRlX2lkIC0+IHBvaW50ZXIgLT4gZXZlbnRfY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGV4aXN0X2Nhc2UgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGdldF9zdGF0aWMgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyxcbiAgICAgIFBCLnN0ZXBfc2hvcnRfaWQgKiBQQi5zdGVwX2lkICogUEIucHJlZGljYXRlX3ZhbHVlICogUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc2V0IDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBnZXQgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBjYXNlX3ZhbHVlKSBQQi5DSS5Qby5LLkguYmluYXJ5XG4gIHZhbCBkZWMgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSwgYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgcmVmaW5lIDpcbiAgICAoIGNhc2VfYWRkcmVzcyxcbiAgICAgIGNhc2VfdmFsdWUsXG4gICAgICBibGFja2JvYXJkLFxuICAgICAgYmxhY2tib2FyZCAqIGFzc2lnbl9yZXN1bHQgKVxuICAgIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGJyYW5jaCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIHJlc2V0X2xhc3RfYnJhbmNoaW5nIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfaW5pdCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgaW1wb3J0IDpcbiAgICA/aGV1cmlzdGljOlByaW9yaXR5LnByaW9yaXRpZXMgLT5cbiAgICAoVHJhY2Uuc3RlcCBsaXN0LCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcblxuICB0eXBlIHJlc3VsdCA9IChUcmFjZS5zdGVwICogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCkgbGlzdFxuICAoKiogb3V0cHV0IHJlc3VsdCopXG5cbiAgdmFsIGlzX21heGltYWxfc29sdXRpb24gOiAoYmxhY2tib2FyZCwgYm9vbCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBpdGVyYXRpb24qKVxuXG4gIHZhbCB0cmFuc2xhdGVfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCByZXN1bHQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgdmFsIHByaW50X2JsYWNrYm9hcmQgOiAoYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyA6XG4gICAgKHN0cmluZywgaW50LCBpbnQsIGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgdW5pdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBwcmludF9zdGFjayA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIGV4aXN0IDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgYm9vbGVhbiA6IGJvb2wgb3B0aW9uIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHBvaW50ZXJfdG9fcHJldmlvdXMgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyX3RvX25leHQgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHZhbHVlX2FmdGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBjYXNlX2xpc3Rfb2ZfZWlkIDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgZXZlbnRfY2FzZV9hZGRyZXNzIGxpc3QpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc3RhdGUgOiBQQi5wcmVkaWNhdGVfdmFsdWUgLT4gY2FzZV92YWx1ZVxuICB2YWwgaXNfZXhpc3RfZXZlbnQgOiBQQi5zdGVwX2lkIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCA6IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50cyA6IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCA6XG4gICAgZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgYmxhY2tib2FyZCAtPiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3RcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgOiBibGFja2JvYXJkIC0+IFBCLnN0ZXBfaWQgLT4gUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxuXG4gIHZhbCBjdXQgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIFBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIGJsYWNrYm9hcmQgKiBQQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdGljayA6XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIGJvb2wgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICgqIHRvIGRvOiBtb3ZlIHRvIHRoZSBtb2R1bGUgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cyopXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIFBCLkNJLlBvLksuSC5iaW5hcnlcbmVuZFxuXG5tb2R1bGUgQmxhY2tib2FyZCA6IEJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBCID0gQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZWJsYWNrYm9hcmRcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIGFzc2lnbl9yZXN1bHQgPSBGYWlsIHwgU3VjY2VzcyB8IElnbm9yZVxuICB0eXBlIHBvaW50ZXIgPSBQQi5zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCBhID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBhXG5cbiAgbGV0IHN1Y2Nlc3MgPSBTdWNjZXNzXG4gIGxldCBpZ25vcmUgPSBJZ25vcmVcbiAgbGV0IGZhaWwgPSBGYWlsXG5cbiAgbGV0IGlzX2lnbm9yZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJZ25vcmUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19mYWlsZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGYWlsIC0+IHRydWVcbiAgICB8IFN1Y2Nlc3MgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgaXNfc3VjY2VlZGVkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3VjY2VzcyAtPiB0cnVlXG4gICAgfCBGYWlsIHwgSWdub3JlIC0+IGZhbHNlXG5cbiAgbGV0IG51bGxfcG9pbnRlciA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWRcbiAgbGV0IGlzX251bGxfcG9pbnRlciB4ID0geCA9IG51bGxfcG9pbnRlclxuICBsZXQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgeCA9IHggPSBQQi5kdW1teV9zdGVwX2lkXG4gIGxldCBpc19iZWZvcmVfYmxhY2tib2FyZCB4ID0geCA9IHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgbGV0IGJ1aWxkX3BvaW50ZXIgaSA9IGlcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9IHtcbiAgICBjb2x1bW5fcHJlZGljYXRlX2lkOiBQQi5wcmVkaWNhdGVfaWQ7XG4gICAgcm93X3Nob3J0X2V2ZW50X2lkOiBwb2ludGVyO1xuICB9XG5cbiAgbGV0IHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgeCA9IHguY29sdW1uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBpc19ib3VuZGFyeSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ibGFja2JvYXJkIGV2ZW50X2FkZHJlc3MgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgaXNfYmVmb3JlX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWRcblxuICBsZXQgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkID1cbiAgICB7IGNvbHVtbl9wcmVkaWNhdGVfaWQgPSBwaWQ7IHJvd19zaG9ydF9ldmVudF9pZCA9IHNlaWQgfVxuXG4gIHR5cGUgY2FzZV9hZGRyZXNzID1cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIG9mIGludCAqIFByaW9yaXR5LmxldmVsXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IFZhbHVlX2FmdGVyIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYmVmb3JlIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgb2YgUHJpb3JpdHkubGV2ZWxcbiAgICB8IEV4aXN0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgS2VlcF9ldmVudCBvZiBQQi5zdGVwX2lkXG5cbiAgbGV0IGlzX2V4aXN0X2V2ZW50IGkgPSBLZWVwX2V2ZW50IGlcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaS5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGkgaiA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGkuY29sdW1uX3ByZWRpY2F0ZV9pZCwgailcblxuICBsZXQgcG9pbnRlcl90b19uZXh0IGUgPSBQb2ludGVyX3RvX25leHQgZVxuICBsZXQgdmFsdWVfYWZ0ZXIgZSA9IFZhbHVlX2FmdGVyIGVcbiAgbGV0IHZhbHVlX2JlZm9yZSBlID0gVmFsdWVfYmVmb3JlIGVcbiAgbGV0IHBvaW50ZXJfdG9fcHJldmlvdXMgZSA9IFBvaW50ZXJfdG9fcHJldmlvdXMgZVxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50cyA9IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSA9IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaVxuICBsZXQgZXhpc3QgZSA9IEV4aXN0IGVcblxuICB0eXBlIGNhc2VfdmFsdWUgPVxuICAgIHwgU3RhdGUgb2YgUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlciBvZiBwb2ludGVyXG4gICAgfCBCb29sZWFuIG9mIGJvb2wgb3B0aW9uXG5cbiAgbGV0IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3RhdGUgeCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJTdGF0ZSEgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgeFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IENvdW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQ291bnRlciAlaVwiIGlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgfCBQb2ludGVyIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlBvaW50ZXIgJWlcIlxuICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IEJvb2xlYW4gYiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQm9vbGVhbiAlc1wiXG4gICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICAgIHwgU29tZSB0cnVlIC0+IFwidHJ1ZVwiXG4gICAgICAgICAgfCBfIC0+IFwiZmFsc2VcIilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgbGV0IHN0cmluZ19vZl9wb2ludGVyIHNlaWQgPVxuICAgIFwiZXZlbnQgc2VpZCBcIiBeIHN0cmluZ19vZl9pbnQgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpXG5cbiAgbGV0IHByaW50X3BvaW50ZXIgbG9nIHNlaWQgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3BvaW50ZXIgc2VpZClcbiAgbGV0IHN0YXRlIHByZWRpY2F0ZV92YWx1ZSA9IFN0YXRlIHByZWRpY2F0ZV92YWx1ZVxuICBsZXQgcG9pbnRlciBwID0gUG9pbnRlciBwLnJvd19zaG9ydF9ldmVudF9pZFxuICBsZXQgYm9vbGVhbiBiID0gQm9vbGVhbiBiXG5cbiAgbGV0IGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfYWRkcmVzcyA9XG4gICAgVmFsdWVfYWZ0ZXIgZXZlbnRfYWRkcmVzc1xuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV92YWx1ZVxuICAgICAgPVxuICAgIG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgbGV0IF8gPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwid3Jvbmcga2luZCBvZiBjYXNlX3ZhbHVlIGluIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZVwiKSBQQi51bmtub3duXG5cbiAgdHlwZSBhc3NpZ25tZW50ID0gY2FzZV9hZGRyZXNzICogY2FzZV92YWx1ZVxuXG4gIGxldCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU29tZSBfLCBOb25lIC0+IHRydWVcbiAgICB8IF8sIF8gLT4gZmFsc2VcblxuICBsZXQgZyBwIHAyIHBvcyBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IFN0YXRlIHgsIFN0YXRlIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwIHggeVxuICAgIHwgQm9vbGVhbiB4LCBCb29sZWFuIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwMiB4IHlcbiAgICB8IFN0YXRlIF8sIF8gfCBCb29sZWFuIF8sIF8gfCBDb3VudGVyIF8sIF8gfCBQb2ludGVyIF8sIF8gLT5cbiAgICAgIGxldCBmaWxlLCBsaW5lLCBfLCBfID0gcG9zIGluXG4gICAgICBsZXQgc3RyaW5nID0gZmlsZSBeIFwiLCBsaW5lOiBcIiBeIHN0cmluZ19vZl9pbnQgbGluZSBpblxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zXG4gICAgICAgIH5tZXNzYWdlOlwiQ291bnRlcnMgYW5kL29yIFBvaW50ZXJzIHNob3VsZCBub3QgYmUgY29tcGFyZWRcIlxuICAgICAgICAoRmFpbHVyZSAoc3RyaW5nIF4gXCIgQ29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXJzIGFuZCBjb3VudGVyc1wiKSlcbiAgICAgICAgZmFsc2VcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkID1cbiAgICBnIFBCLnN0cmljdGx5X21vcmVfcmVmaW5lZCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCBfX1BPU19fXG5cbiAgdHlwZSBjYXNlX2luZm9fc3RhdGljID0ge1xuICAgIHJvd19zaG9ydF9pZDogUEIuc3RlcF9zaG9ydF9pZDtcbiAgICBldmVudF9pZDogUEIuc3RlcF9pZDtcbiAgICB0ZXN0OiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgYWN0aW9uOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mb19keW5hbWljID0ge1xuICAgIHBvaW50ZXJfcHJldmlvdXM6IHBvaW50ZXI7XG4gICAgcG9pbnRlcl9uZXh0OiBwb2ludGVyO1xuICAgIHN0YXRlX2FmdGVyOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2wgb3B0aW9uO1xuICB9XG5cbiAgdHlwZSBjYXNlX2luZm8gPSB7IHN0YXRpYzogY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYzogY2FzZV9pbmZvX2R5bmFtaWMgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fc3RhdGljID1cbiAgICB7XG4gICAgICByb3dfc2hvcnRfaWQgPSBQQi5kdW1teV9zdGVwX3Nob3J0X2lkO1xuICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgIH1cblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBudWxsX3BvaW50ZXI7XG4gICAgICBwb2ludGVyX25leHQgPSBudWxsX3BvaW50ZXI7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBjb3JyZWN0X3BvaW50ZXIgc2VpZCBzaXplID1cbiAgICBsZXQgaW50X3NlaWQgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBzZWlkIGluXG4gICAgaWYgaW50X3NlaWQgPCAwIHRoZW5cbiAgICAgIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgICBlbHNlIGlmIGludF9zZWlkID49IHNpemUgdGhlblxuICAgICAgUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZVxuICAgIGVsc2VcbiAgICAgIHNlaWRcblxuICBsZXQgaW5pdF9pbmZvX2R5bmFtaWMgc2VpZCBzaXplID1cbiAgICB7XG4gICAgICBwb2ludGVyX3ByZXZpb3VzID0gY29ycmVjdF9wb2ludGVyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgcG9pbnRlcl9uZXh0ID0gY29ycmVjdF9wb2ludGVyIChQQi5pbmNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgc2VsZWN0ZWQgPSBOb25lO1xuICAgIH1cblxuICBsZXQgaW5pdF9pbmZvX3N0YXRpYyBfcF9pZCBzZWlkIChlaWQsIF8sIHRlc3QsIGFjdGlvbikgPVxuICAgIHsgcm93X3Nob3J0X2lkID0gc2VpZDsgZXZlbnRfaWQgPSBlaWQ7IHRlc3Q7IGFjdGlvbiB9XG5cbiAgbGV0IGdldF9laWRfb2ZfdHJpcGxlICh4LCBfLCBfLCBfKSA9IHhcblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvID1cbiAgICB7IHN0YXRpYyA9IGR1bW15X2Nhc2VfaW5mb19zdGF0aWM7IGR5bmFtaWMgPSBkdW1teV9jYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGluaXRfaW5mbyBwX2lkIHNlaWQgc2l6ZSB0cmlwbGUgPVxuICAgIHtcbiAgICAgIHN0YXRpYyA9IGluaXRfaW5mb19zdGF0aWMgcF9pZCBzZWlkIHRyaXBsZTtcbiAgICAgIGR5bmFtaWMgPSBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemU7XG4gICAgfVxuXG4gIHR5cGUgc3RhY2sgPSBhc3NpZ25tZW50IGxpc3RcbiAgKCoqIGJsYWNrYm9hcmQgKilcblxuICB0eXBlIGJsYWNrYm9hcmQgPSB7XG4gICAgZXZlbnQ6IFRyYWNlLnN0ZXAgUEIuQS50O1xuICAgIHByZV9jb2x1bW5fbWFwX2ludjogUEIucHJlZGljYXRlX2luZm8gUEIuQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBmb3JjZWRfZXZlbnRzOiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgbl9wcmVkaWNhdGVfaWQ6IGludDtcbiAgICBuX2VpZDogaW50O1xuICAgIG5fc2VpZDogaW50IFBCLkEudDtcbiAgICBjdXJyZW50X3N0YWNrOiBzdGFjaztcbiAgICBzdGFjazogc3RhY2sgbGlzdDtcbiAgICBibGFja2JvYXJkOiBjYXNlX2luZm8gUEIuQS50IFBCLkEudDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGJvb2wgb3B0aW9uIFBCLkEudDtcbiAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkOiBpbnQgUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWw6IGludCBQQi5BLnQgUHJpb3JpdHkuTGV2ZWxNYXAudDtcbiAgICB1c2VkX3ByZWRpY2F0ZV9pZDogYm9vbCBQQi5BLnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50czogaW50O1xuICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWw6IGludCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDogUEIuc3RlcF9zaG9ydF9pZCBQQi5BLnQ7XG4gICAgZXZlbnRfY2FzZV9saXN0OiBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCBQQi5BLnQ7XG4gICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQ6IFBCLkNJLlBvLksuc2lkZV9lZmZlY3QgUEIuQS50O1xuICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogUEIuc3RlcF9pZCBvcHRpb247XG4gICAgbGV2ZWxfb2ZfZXZlbnQ6IFByaW9yaXR5LmxldmVsIFBCLkEudDtcbiAgfVxuXG4gIGxldCB0aWNrIHByb2ZpbGluZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy50aWNrIHByb2ZpbGluZ19pbmZvXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5sZXZlbF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSApXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIGV2ZW50IGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGV2ZW50IGlkXCIpIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgZ2V0X2V2ZW50IGJsYWNrYm9hcmQgayA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgKFBCLmludF9vZl9zdGVwX2lkIGspXG4gIGxldCBnZXRfbl9laWQgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl9laWRcbiAgbGV0IGdldF9zdGFja19kZXB0aCBibGFja2JvYXJkID0gTGlzdC5sZW5ndGggYmxhY2tib2FyZC5zdGFja1xuICBsZXQgZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5mb3JjZWRfZXZlbnRzXG5cbiAgbGV0IHNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgaSA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaSlcblxuICBsZXQgY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgW11cblxuICBsZXQgZ2V0X2Nhc2UgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgZHVtbXlfY2FzZV9pbmZvXG5cbiAgbGV0IGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IHN0YXRpYyA9IGNhc2Uuc3RhdGljIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgKHN0YXRpYy5yb3dfc2hvcnRfaWQsIHN0YXRpYy5ldmVudF9pZCwgc3RhdGljLnRlc3QsIHN0YXRpYy5hY3Rpb24pIClcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpQC5cIiAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAocHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyBjYXNlKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fcHJlZCAlaSAlc0AuXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpIEAuXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBlIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJQb2ludGVyXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2FmdGVyIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2FmdGVyICBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2JlZm9yZSBlIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJWYWx1ZV9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJfYmVmb3JlIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJVbnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVW5yZXNvbHZlZF9ldmVudHNcIlxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIkV4aXN0IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJLZWVwICVpXCIgKFBCLmludF9vZl9zdGVwX2lkIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBnZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgYmxhY2tib2FyZCBwaWQgbGV2ZWwgPVxuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICB3aXRoXG4gICAgfCBTb21lIHggLT4gUEIuQS5nZXQgeCBwaWRcbiAgICB8IE5vbmUgLT4gMFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgYmxhY2tib2FyZCBwaWQgPVxuICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBwaWRcblxuICBsZXQgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgZ2V0X3BvaW50ZXJfbmV4dCBjYXNlID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuXG4gIGxldCBmb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX25leHQgfSApXG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIH0gKVxuXG4gIGxldCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IGJsYWNrYm9hcmQgcGlkID1cbiAgICBpZiBwaWQgPCAwIHx8IHBpZCA+PSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuXG4gIGxldCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgKFBCLkEuZ2V0IGJsYWNrYm9hcmQubGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBpZClcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuICBsZXQgcHJpbnRfa25vd25fY2FzZSBsb2cgcHJlZiBpbmYgc3VmIGNhc2UgPVxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzdGVzdDpcIiBwcmVmIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLnRlc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiL2VpZDolaS9hY3Rpb246XCJcbiAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIGNhc2Uuc3RhdGljLmV2ZW50X2lkKVxuICAgIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLmFjdGlvbiBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgaW5mIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlciBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgc3VmIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfY2FzZSBsb2cgY2FzZSA9XG4gICAgbGV0IHN0YXR1cyA9IGNhc2UuZHluYW1pYy5zZWxlY3RlZCBpblxuICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+ICgpXG4gICAgfCBTb21lIHRydWUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCJcIiBcIiBcIiBcIiBcIiBjYXNlXG4gICAgfCBOb25lIC0+IHByaW50X2tub3duX2Nhc2UgbG9nIFwiPyhcIiBcIikgXCIgXCIgXCIgY2FzZVxuXG4gIGxldCBwcmludF9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGxvZyA9IFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbWF0Y2ggYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgZXZlbnQgJWkgc2VsZWN0ZWQgPyBcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBFeGlzdCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiSXMgdGhlIGNhc2UgXCIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJzZWxlY3RlZCA/IFwiIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaSwgaikgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dcbiAgICAgICAgICBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaSBhdCBsZXZlbCAlc1wiIGlcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGopXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaVwiIGlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBQb2ludGVyX3RvX25leHQgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByb2NoYWluIMOpdsOpbmVtZW50IGFnaXNzYW50IHN1ciBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYWZ0ZXIgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlZhbGV1ciBhcHLDqHMgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFZhbHVlX2JlZm9yZSBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGF2YW50IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVuZW1lbnQgcHLDqWPDqXNlbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1XCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk5vbWJyZSBkJ8OpdsOpbmVtZW50cyBub24gcsOpc29sdSBhdCBsZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgc3RyaW5nX29mX3ZhbHVlIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgfCBQb2ludGVyIGkgLT4gc3RyaW5nX29mX3BvaW50ZXIgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgIHwgU29tZSB0cnVlIC0+IFwiWWVzXCJcbiAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X3ZhbHVlIGxvZyB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgcGIgLT4gUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBwYlxuICAgIHwgQ291bnRlciBpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDb3VudGVyICVpXCIgaVxuICAgIHwgUG9pbnRlciBpIC0+IHByaW50X3BvaW50ZXIgbG9nIGlcbiAgICB8IEJvb2xlYW4gYm9vbCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCJcbiAgICAgICAgKG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gXCJOb1wiKVxuXG4gIGxldCBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChhZGRyZXNzLCB2YWx1ZSkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICBsZXQgXyA9IHByaW50X3ZhbHVlIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgdmFsdWUgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxuICBsZXQgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpIHdpcmVzLCAlaSBldmVudHNcIiBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG4gICAgICAgIGJsYWNrYm9hcmQubl9laWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzOipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyID0gcmVmIGVycm9yIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBpIGFycmF5IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgUEIuQS5nZXQgYmxhY2tib2FyZC51c2VkX3ByZWRpY2F0ZV9pZCBpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzICVpOiBcIiBpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXggaiBlcnJvciA9XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogJWk6XCIgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2FzZSA9IFBCLkEuZ2V0IGFycmF5IGogaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGxvZyBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gZ2V0X3BvaW50ZXJfbmV4dCBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgaicgaW5cbiAgICAgICAgICAgICAgICBpZiBqID0gaicgdGhlblxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhdXggaicgZXJyb3JcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgICBhdXggKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQpICFlcnJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBlcnIgOj0gZXJyb3IgaW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSAhZXJyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIipzdGFja3MqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIHN0YWNrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKSBibGFja2JvYXJkLnN0YWNrXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnNlbGVjdGVkX2V2ZW50cypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYm9vbCAtPlxuICAgICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiICBFdmVudDolaSAoJXMpXCIgaVxuICAgICAgICAgICAgICAgIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcIktFUFRcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJSRU1PVkVEXCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqdW5zb2x2ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWlcIiBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHMgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaTolaVwiIGEgYiBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkX2J5X2xldmVsKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLml0ZXJcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgTGV2ZWw6JXNcIiAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgUEIuQS5pdGVyaSAoZnVuIGEgYiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpKVxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogcHJvcGFnYXRpb24gcmVxdWVzdCAqKVxuXG4gIGxldCBhZGRfZXZlbnQgZWlkIChwaWQsIHNlaWQpIGFycmF5IGxldmVsIHVuc29sdmVkID1cbiAgICBsZXQgZXZlbnRfY2FzZV9hZGRyZXNzID0gYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkIGluXG4gICAgbGV0IG9sZCA9IFBCLkEuZ2V0IGFycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIGluXG4gICAgbGV0IHVuc29sdmVkID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgdW5zb2x2ZWQgKyAxKVxuICAgICAgICB1bnNvbHZlZFxuICAgIGluXG4gICAgUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKGV2ZW50X2Nhc2VfYWRkcmVzcyA6OiBvbGQpLCB1bnNvbHZlZFxuXG4gIGxldCBlbXB0eV9zdGFjayA9IFtdXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljOl8gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fcHJlZGljYXRlcyA9XG4gICAgICBQQi5uX3ByZWRpY2F0ZXMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fZXZlbnRzID1cbiAgICAgIFBCLm5fZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBbXSBpblxuICAgIGxldCBjdXJyZW50X3N0YWNrID0gZW1wdHlfc3RhY2sgaW5cbiAgICBsZXQgZXZlbnRfY2FzZV9saXN0ID0gUEIuQS5tYWtlIG5fZXZlbnRzIFtdIGluXG4gICAgbGV0IG5fc2VpZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgMCBpblxuICAgIGxldCB1bnNvbHZlZF9ieV9sZXZlbCA9IFByaW9yaXR5LkxldmVsTWFwLmVtcHR5IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIChQQi5BLm1ha2UgMSBkdW1teV9jYXNlX2luZm8pIGluXG4gICAgbGV0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggbGV2ZWxfb3B0IG1hcCA9XG4gICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYXBcbiAgICAgICAgfCBTb21lIGxldmVsIC0+XG4gICAgICAgICAgYXV4IChQcmlvcml0eS5oaWdoZXIgbGV2ZWwpXG4gICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIChQQi5BLm1ha2UgMCAwKSBtYXApXG4gICAgICBpblxuICAgICAgYXV4IChTb21lIFByaW9yaXR5Lmxvd2VzdCkgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBpbmNfZGVwdGggbGV2ZWwgcF9pZCA9XG4gICAgICBtYXRjaFxuICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgYSAtPlxuICAgICAgICBsZXQgb2xkID0gdHJ5IFBCLkEuZ2V0IGEgcF9pZCB3aXRoIE5vdF9mb3VuZCAtPiAwIGluXG4gICAgICAgIFBCLkEuc2V0IGEgcF9pZCAob2xkICsgMSlcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSAwIDAgaW5cbiAgICBsZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkID1cbiAgICAgIFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGxldCByZWMgYXV4MSBwX2lkIGxvZ19pbmZvIGVycm9yID1cbiAgICAgICAgaWYgcF9pZCA8IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzaXplID1cbiAgICAgICAgICAgIFBCLm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNpemUgPSBzaXplICsgMSBpblxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBCLkEuc2V0IGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZCBwX2lkXG4gICAgICAgICAgICAgIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCAoc2l6ZSAtIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBfaWQgKHNpemUgLSAyKSBpblxuICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgbl9zZWlkIHBfaWQgc2l6ZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEIuZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFycmF5ID0gUEIuQS5tYWtlIHNpemUgZHVtbXlfY2FzZV9pbmZvIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkIHBfaWQgYXJyYXkgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eDIgc2VpZCBsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IFBCLmluY19zdGVwX3Nob3J0X2lkIFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IFNvbWUgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHN0YXRpYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfaWQgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGFycmF5IDAgaW5mbyBpblxuICAgICAgICAgICAgICBsZXQgcHJlZF9zaXplID1cbiAgICAgICAgICAgICAgICBQQi5kZWNfc3RlcF9zaG9ydF9pZCAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGR5bmFtaWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX25leHQgPSBwcmVkX3NpemU7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgKHNpemUgLSAxKSBpbmZvIGluXG4gICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICB8IHRyaXBsZSA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID0gaW5pdF9pbmZvIHBfaWQgc2VpZCAoc2l6ZSAtIDEpIHRyaXBsZSBpblxuICAgICAgICAgICAgICBsZXQgZWlkID0gZ2V0X2VpZF9vZl90cmlwbGUgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9ldmVudHMgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9wcmVfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF9lcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNfZGVwdGggbGV2ZWwgcF9pZCBpblxuICAgICAgICAgICAgICBsZXQgKCksIF8gPVxuICAgICAgICAgICAgICAgIGFkZF9ldmVudCBlaWQgKHBfaWQsIHNlaWQpIGV2ZW50X2Nhc2VfbGlzdCBsZXZlbFxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpIGluZm8gaW5cbiAgICAgICAgICAgICAgYXV4MiAoUEIuZGVjX3N0ZXBfc2hvcnRfaWQgc2VpZCkgcSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIGF1eDIgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMikpIGxpc3QgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eDEgKHBfaWQgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4MSAobl9wcmVkaWNhdGVzIC0gMSkgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmNlZF9ldmVudHMgPVxuICAgICAgUEIubWFuZGF0b3J5X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnQgPVxuICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdW5zb2x2ZWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggayBlcnJvciBsb2dfaW5mbyBtYXAgPVxuICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBtYXBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgUEIuZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIChQQi5zdGVwX2lkX29mX2ludCBrKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWxcbiAgICAgICAgICAgICAgKFByaW9yaXR5LkxldmVsTWFwLmZpbmRfZGVmYXVsdCAwIGxldmVsIG1hcCArIDEpXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChrIC0gMSkgZXJyb3IgbG9nX2luZm8gbWFwXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggbl9ldmVudHMgZXJyb3IgbG9nX2luZm8gdW5zb2x2ZWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpZGVfZWZmZWN0cyA9XG4gICAgICBQQi5nZXRfc2lkZV9lZmZlY3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZpY3RpdGlvdXNfb2JzID1cbiAgICAgIFBCLmdldF9maWN0aXRpb3VzX29ic2VydmFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBiID1cbiAgICAgIHtcbiAgICAgICAgZXZlbnQ7XG4gICAgICAgIHNpZGVfZWZmZWN0X29mX2V2ZW50ID0gc2lkZV9lZmZlY3RzO1xuICAgICAgICBwcmVfY29sdW1uX21hcF9pbnYgPSBQQi5nZXRfcHJlX2NvbHVtbl9tYXBfaW52IHByZV9ibGFja2JvYXJkO1xuICAgICAgICBsZXZlbF9vZl9ldmVudCA9IFBCLmxldmVscyBwcmVfYmxhY2tib2FyZDtcbiAgICAgICAgZm9yY2VkX2V2ZW50cztcbiAgICAgICAgbl9laWQgPSBuX2V2ZW50cztcbiAgICAgICAgbl9zZWlkO1xuICAgICAgICBldmVudF9jYXNlX2xpc3Q7XG4gICAgICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgbl9wcmVkaWNhdGVfaWQgPSBuX3ByZWRpY2F0ZXM7XG4gICAgICAgIGN1cnJlbnRfc3RhY2s7XG4gICAgICAgIHN0YWNrO1xuICAgICAgICBibGFja2JvYXJkO1xuICAgICAgICBzZWxlY3RlZF9ldmVudHMgPSBQQi5BLm1ha2Ugbl9ldmVudHMgTm9uZTtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDtcbiAgICAgICAgdXNlZF9wcmVkaWNhdGVfaWQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIHRydWU7XG4gICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHMgPSBuX2V2ZW50cztcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbCA9IHVuc29sdmVkX2J5X2xldmVsO1xuICAgICAgICBmaWN0aXRpb3VzX29ic2VydmFibGUgPSBmaWN0aXRpb3VzX29icztcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYlxuXG4gIGxldCBleGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpbmZvID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGluZm8uZHluYW1pYy5zZWxlY3RlZFxuXG4gIGxldCBzZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBQQi5BLnNldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBibGFja2JvYXJkXG5cbiAgbGV0IHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjYXNlX2FkZHJlc3Mgd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50MiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhIGludCBpbnQyIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpbnQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBfID0gUEIuQS5zZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIGludCBpbnQyIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX25leHQgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQ291bnRlciBfIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgU3RhdGUgc3RhdGUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHN0YXRlX2FmdGVyID0gc3RhdGUgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBCb29sZWFuIF8gfCBDb3VudGVyIF8gfCBQb2ludGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYWZ0ZXJcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2JlZm9yZSBfY2FzZV9hZGRyZXNzIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYmVmb3JlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgYmxhY2tib2FyZFxuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX3ByZXZpb3VzID0gaW50MiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gfCBDb3VudGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgODk2LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggbl91bnJlc29sdmVkX2V2ZW50cyA9IGludCB9XG4gICAgICB8IEJvb2xlYW4gXyB8IFBvaW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgOTA1LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID1cbiAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIGludFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBQQi5BLnNldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyAoUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZCkgYlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBzZWxlY3RlZCA9IGIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBDb3VudGVyIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcblxuICBsZXQgaXNfc2VsZWN0ZWRfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2lkIGJsYWNrYm9hcmQgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSApXG5cbiAgbGV0IHJlYyBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBCb29sZWFuXG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSkgKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICBsZXQgbiA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IFBCLkEuZ2V0IGEgaW50XG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIG5cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIChQQi5BLmdldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50KVxuICAgIHwgRXhpc3QgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEJvb2xlYW4gY2FzZS5keW5hbWljLnNlbGVjdGVkXG4gICAgfCBQb2ludGVyX3RvX25leHQgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuICAgIHwgVmFsdWVfYWZ0ZXIgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0YXRlIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlclxuICAgIHwgVmFsdWVfYmVmb3JlIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IHBvaW50ZXIgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgaWYgaXNfbnVsbF9wb2ludGVyIHBvaW50ZXIgdGhlblxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiKVxuICAgICAgICAgIChTdGF0ZSBQQi51bmRlZmluZWQpXG4gICAgICBlbHNlXG4gICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChWYWx1ZV9hZnRlciB7IGNhc2VfYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IHBvaW50ZXIgfSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBQb2ludGVyIGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGx2bCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIENvdW50ZXJcbiAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbHZsXG4gICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsKSApXG5cbiAgbGV0IGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVmaXggaW50IGludDJcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIGxldCBmaWxlX25hbWUgPVxuICAgICAgcHJlZml4IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludCBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBpbnQyIF4gXCIuc3h3XCJcbiAgICBpblxuICAgIGxldCBkZXNjX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlX25hbWUgaW5cbiAgICBsZXQgZGVzYyA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuWExTIGRlc2NfY2hhbiBpblxuICAgIGxldCBwYXJhbWV0ZXIgPSBQQi5DSS5Qby5LLkguc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZGVzYyBpblxuICAgIGxldCBuY29sdW1uc19sZWZ0ID0gMyBpblxuICAgIGxldCBucm93c19oZWFkID0gMiBpblxuICAgIGxldCByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCA9IG5yb3dzX2hlYWQgKyAoMyAqIGVpZCkgaW5cbiAgICBsZXQgcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkID0gMSArIHJvd19vZl9wcmVjb25kaXRpb24gZWlkIGluXG4gICAgbGV0IGNvbHVtbl9vZl9waWQgcGlkID0gcGlkICsgbmNvbHVtbnNfbGVmdCBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUkVNICAqKioqKiAgQkFTSUMgICoqKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBjb2xvcnMgPSBQQi5BLm1ha2UgYmxhY2tib2FyZC5uX2VpZCBOb25lIGluXG4gICAgbGV0IGJhY2tjb2xvciBsb2cgY29sb3IgPVxuICAgICAgbWF0Y2ggY29sb3Igd2l0aFxuICAgICAgfCBTb21lIGNvbG9yIC0+XG4gICAgICAgIGxldCByLCBnLCBiID0gQ29sb3IudHJpcGxlX29mX2NvbG9yIGNvbG9yIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLkNlbGxCYWNrQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAoKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgdGV4dGNvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2hhckNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiIGluXG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGdldGNlbGwgbG9nIHJvdyBjb2wgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMgPSBTLmdldENlbGxCeVBvc2l0aW9uKCVpLCVpKVwiIGNvbCByb3cgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICBpblxuICAgIGxldCBvdmVybGluZV9jYXNlIGxvZyByb3cgX2NvbCBfY29sb3IgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlI9Uy5Sb3dzKCVpKVwiIHJvdyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlIuVG9wQm9yZGVyID0gd2l0aEJvcmRcIiBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2UgbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIHN0cmluZyA9XG4gICAgICBpZiBzdHJpbmcgPD4gXCJcIiB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgICBsZXQgKCkgPSB0ZXh0Y29sb3IgbG9nIGNvbG9yX2ZvbnQgaW5cbiAgICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIiVzXFxcIilcIiBzdHJpbmcgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgKVxuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2VfZnVuIGxvZyByb3cgY29sIGNvbG9yX2ZvbnQgY29sb3JfYmFjayBmIGVycm9yID1cbiAgICAgIGxldCAoKSA9IGdldGNlbGwgbG9nIHJvdyBjb2wgaW5cbiAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5zZXRGb3JtdWxhKFxcXCJcIiBpblxuICAgICAgbGV0IGVycm9yID0gZiBlcnJvciBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlxcXCIpXCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgIGVycm9yXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlN1YiBNYWluXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgQ29sb3IuQmxhY2sgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJEaW0gd2l0aEJvcmQgQXMgTmV3IGNvbS5zdW4uc3Rhci50YWJsZS5Cb3JkZXJMaW5lXCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiV2l0aCB3aXRoQm9yZCB3aXRoQm9yZC5Db2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIndpdGhCb3JkLk91dGVyTGluZVdpZHRoID0gNjBcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJFbmQgV2l0aFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlMgPSBUaGlzQ29tcG9uZW50LlNoZWV0cygwKVwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgXyA9XG4gICAgICBtYXRjaCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgfCBbIChsaXN0LCBfKSBdIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gZWlkIC0+IFBCLkEuc2V0IGNvbG9ycyAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoU29tZSBDb2xvci5SZWQpKVxuICAgICAgICAgIGxpc3RcbiAgICAgIHwgXyAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIHBpZCBwX2luZm8gLT5cbiAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIDAgKGNvbHVtbl9vZl9waWQgcGlkKSBOb25lIE5vbmVcbiAgICAgICAgICAgIChmdW4gX2Vycm9yIC0+IFBCLnByaW50X3ByZWRpY2F0ZV9pbmZvIGRlc2MgcF9pbmZvKVxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52XG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBlaWQgZXJyb3IgbG9nX2luZm8gc3RhY2sgPVxuICAgICAgaWYgZWlkID49IGJsYWNrYm9hcmQubl9laWQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIChQQi5zdGVwX2lkX29mX2ludCBlaWQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByb3dfcHJlY29uZGl0aW9uID0gcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IHJvd19wb3N0Y29uZGl0aW9uID0gcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkIGluXG4gICAgICAgIGxldCBjb2xvciwgbWF5YmVrZXB0ID1cbiAgICAgICAgICBtYXRjaCBQQi5BLmdldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBlaWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBQQi5BLmdldCBjb2xvcnMgZWlkLCB0cnVlXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gU29tZSBDb2xvci5SZWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gU29tZSBDb2xvci5HcmV5LCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eDIgZiBnIGwgZXJyb3IgbG9nX2luZm8gPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgb3ZlcmxpbmVfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcHJlY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGYgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvblxuICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICBOb25lIGNvbG9yIChnIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIG1heWJla2VwdCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9iZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAodmFsdWVfYmVmb3JlIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcHJlY29uZGl0aW9uIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAoU29tZSBDb2xvci5MaWdodGJsdWUpIE5vbmUgdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9hZnRlciA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9hZnRlciB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cmluZ19vZl92YWx1ZSBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBlcnJvciwgbG9nX2luZm8sIFwiVW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyAocm93X3Bvc3Rjb25kaXRpb24gKyAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eDIgZiBnIHEgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X3Rlc3QgdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy50ZXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmludF9hY3Rpb24gdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy5hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0cmluZ19laWQgZXJyb3IgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9hc19sb2dnZXIgZGVzYyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSB+ZW52OmhhbmRsZXIuUEIuQ0kuUG8uSy5ILmVudiBmXG4gICAgICAgICAgICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCkpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkV2ZW50OiVpXCIgZWlkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMSBOb25lIGNvbG9yIHN0cmluZ19laWQgZXJyb3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUFJFQ09ORElUSU9OXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUE9TVENPTkRJVElPTlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGF1eDIgcHJpbnRfdGVzdCBwcmludF9hY3Rpb24gbGlzdCBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgY2FuZCA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIGluXG4gICAgICAgICAgICBUcmFjZS5zdGVwX2lzX3J1bGUgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgY2FuZFxuICAgICAgICAgICAgfHwgVHJhY2Uuc3RlcF9pc19vYnMgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX2luaXQgY2FuZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgc3RhY2sgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3Igcm93IC0+XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIHJvdyAwIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgc3RhY2spXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIFtdXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgcm93X3ByZWNvbmRpdGlvbiA6OiByb3dfcG9zdGNvbmRpdGlvbiA6OiBzdGFja1xuICAgICAgICBpblxuICAgICAgICBhdXggKGVpZCArIDEpIGVycm9yIGxvZ19pbmZvIHN0YWNrXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID0gYXV4IDAgZXJyb3IgbG9nX2luZm8gW10gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBTdWJcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2NfY2hhbiBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgcmVjb3JkX21vZGlmIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgPVxuICAgICggZXJyb3IsXG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBjdXJyZW50X3N0YWNrID0gKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgOjogYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrO1xuICAgICAgfSApXG5cbiAgbGV0IHJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvbGQgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlIG9sZFxuICAgICAgICBpblxuICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICByZWNvcmRfbW9kaWYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIG9sZCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuTmV3IHZhbHVlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuU1VDQ0VTUyoqKkAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTdWNjZXNzKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5GQUlMKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIEZhaWwpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICApXG5cbiAgbGV0IGRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbWF0Y2ggb2xkIHdpdGhcbiAgICB8IENvdW50ZXIgayAtPlxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAoQ291bnRlciAoayAtIDEpKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiV3JvbmcgdHlwZSBvZiBjYXNlIHZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIikgYmxhY2tib2FyZFxuXG4gIGxldCBicmFuY2ggcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4gKiBCUkFOQ0ggKkAuKioqKioqKkAuXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2JyYW5jaCBsb2dfaW5mbyBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIDo6IGJsYWNrYm9hcmQuc3RhY2s7XG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSBbXTtcbiAgICAgIH0gKVxuXG4gIGxldCByZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUpIC0+XG4gICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICBzdGFja1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4qIEFmdGVyX0N1dCAqQC4qKioqKioqXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2N1dCBsb2dfaW5mbyBpblxuICAgIG1hdGNoIGJsYWNrYm9hcmQuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBjdXJyZW50X3N0YWNrID0gW10gfVxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHEgfVxuXG4gIGxldCByZXNldF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCByZWMgYXV4IChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpID1cbiAgICAgIG1hdGNoIGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBfIC0+XG4gICAgICAgIGF1eCAocmVzZXRfbGFzdF9icmFuY2hpbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPSBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICAoKiogaXRlcmF0aW9uKilcbiAgbGV0IGlzX21heGltYWxfc29sdXRpb24gX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyA9IDBcblxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgbGV0IHRyYW5zbGF0ZV9ibGFja2JvYXJkIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGFycmF5ID0gYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgaW5cbiAgICBsZXQgc3RlcF9hcnJheSA9IGJsYWNrYm9hcmQuZXZlbnQgaW5cbiAgICBsZXQgc2lkZV9hcnJheSA9IGJsYWNrYm9hcmQuc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgaW5cbiAgICBsZXQgc2l6ZSA9IFBCLkEubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgIGlmIGsgPSBzaXplIHRoZW5cbiAgICAgICAgTGlzdC5yZXYgbGlzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBib29sID0gUEIuQS5nZXQgYXJyYXkgayBpblxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICBsZXQgc3RlcCA9IFBCLkEuZ2V0IHN0ZXBfYXJyYXkgayBpblxuICAgICAgICAgIGxldCBzaWRlID0gUEIuQS5nZXQgc2lkZV9hcnJheSBrIGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKChzdGVwLCBzaWRlKSA6OiBsaXN0KVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBhdXggMCBbXSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9zdGFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkN1cnJlbnRfc3RhY2tfbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIGkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJALlwiIGluXG4gICAgICAgICAgZXJyb3IpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiBzdGFjaylcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSB4IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk90aGVyIGxldmVsICVpIFwiIChMaXN0Lmxlbmd0aCB4KSBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiB4KSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbylcbiAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQuc3RhY2spXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkID1cbiAgICBTb21lIGVpZCA9IGJsYWNrYm9hcmQuZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IG5fZXZlbnRzID0gYmxhY2tib2FyZC5uX2VpZCBpblxuICAgIGlmIFBhcmFtZXRlci5kb19sb2NhbF9jdXQgdGhlbiAoXG4gICAgICBsZXQgZXZlbnRfYXJyYXkgPSBQQi5BLm1ha2Ugbl9ldmVudHMgZmFsc2UgaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9IFtdIGluXG4gICAgICBsZXQga2VwdF9ldmVudHMgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4ga2VwdF9ldmVudHMgaSAtPlxuICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgaSkgdHJ1ZSBpblxuICAgICAgICAgICAgaSA6OiBrZXB0X2V2ZW50cylcbiAgICAgICAgICBrZXB0X2V2ZW50cyBsaXN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIGV2ZW50X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywga2VwdF9ldmVudHNcbiAgICAgICAgfCBlaWQgOjogcSAtPlxuICAgICAgICAgIGlmIGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkIHRoZW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpIGV2ZW50X2Nhc2VfYWRkcmVzcyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgICAgICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBQQi5pc191bmRlZmluZWQgY2FzZS5zdGF0aWMudGVzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgc2Nhbl9kb3duIHBvaW50ZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfZXJyb3IsIF9sb2dfaW5mbywgcHJldl9jYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZWlkID0gcHJldl9jYXNlLnN0YXRpYy5ldmVudF9pZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgcHJldl9laWQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIFBCLmlzX3Vua25vd24gcHJldl9jYXNlLnN0YXRpYy5hY3Rpb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gcHJldl9jYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2Rvd24gcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcHJldl9laWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGVpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHEsIGtlcHRfZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2VpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBib29sID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBQQi5BLmdldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgcHJldl9laWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUEIuQS5zZXQgZXZlbnRfYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9laWQgOjogcSwgcHJldl9laWQgOjoga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHJlcCA9IGF1eCBsb2dfaW5mbyBlcnJvciBsaXN0IGtlcHRfZXZlbnRzIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIExpc3Quc29ydCBjb21wYXJlIHJlcCwgbl9ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXBcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGV2ZW50c190b19rZWVwID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChrIC0gMSkgKFBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChuX2V2ZW50cyAtIDEpIFtdXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcCwgMFxuICAgIClcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY3V0X2NhdXNhbF9mbG93LCBuX2V2ZW50c19yZW1vdmVkID1cbiAgICAgIHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19rX2N1dF9ldmVudHMgbl9ldmVudHNfcmVtb3ZlZCBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY3V0X2NhdXNhbF9mbG93KVxuXG4gIGxldCBpbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVibGFja2JvYXJkID1cbiAgICAgIFBCLmluaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBfc3RlcF9pZCwgc3RyaW5nLCB0b194bHMpID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXBcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2V0IHVwLlwiKVxuICAgICAgICAgIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQsIFwiTm9uZVwiLCBmYWxzZSlcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkpIHJlZmluZWRfZXZlbnQgLT5cbiAgICAgICAgICAgICAgUEIuYWRkX3N0ZXBfdXBfdG9faXNvIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgcmVmaW5lZF9ldmVudCBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSxcbiAgICAgICAgICAgIFBhcmFtZXRlci5kdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiApIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50XG4gICAgICAgICAgICAgICAgcHJlYmxhY2tib2FyZCBpbnQpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgUEIuemVyb19zdGVwX2lkKSlcbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoIHByZWJsYWNrYm9hcmQsXG4gICAgICAgICAgICBpbnQsXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiApIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuZmluYWxpemUgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgaW1wb3J0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9zdG9yeSA6PSAhUHJpb3JpdHkubl9zdG9yeSArIDEgaW5cbiAgICBsZXQgXyA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9IDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICBpZiB0b194bHMgdGhlblxuICAgICAgICBleHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RyaW5nXG4gICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgMCBibGFja2JvYXJkXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuZW5kXG4iLCIoKipcbiAgKiBwcm9wYWdhdGlvbl9oZXVyaXN0aWMubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wOS0wNSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6MDM6MTEgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IFBhcmFtZXRlci5sb29rX3VwX2Zvcl9iZXR0ZXJfY3V0XG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dFxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljID0gc2lnXG4gIG1vZHVsZSBCIDogQmxhY2tib2FyZC5CbGFja2JvYXJkXG5cbiAgdHlwZSB1cGRhdGVfb3JkZXJcbiAgdHlwZSBwcm9wYWdhdGlvbl9jaGVja1xuXG4gIHZhbCBkdW1teV91cGRhdGVfb3JkZXIgOiB1cGRhdGVfb3JkZXJcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICAodXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogQi5QQi5zdGVwX2lkIGxpc3RcbiAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pXG4gICAgICBsaXN0IClcbiAgICBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb3JiaWRkZW5fZXZlbnRzIDpcbiAgICAoQi5QQi5zdGVwX2lkIGxpc3QsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuZXh0X2Nob2ljZSA6IChCLmJsYWNrYm9hcmQsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBhcHBseV9pbnN0cnVjdGlvbiA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICB1cGRhdGVfb3JkZXIsXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJvcGFnYXRlIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrLFxuICAgICAgdXBkYXRlX29yZGVyIGxpc3QsXG4gICAgICBwcm9wYWdhdGlvbl9jaGVjayBsaXN0LFxuICAgICAgQi5ibGFja2JvYXJkXG4gICAgICAqIHVwZGF0ZV9vcmRlciBsaXN0XG4gICAgICAqIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3RcbiAgICAgICogQi5hc3NpZ25fcmVzdWx0IClcbiAgICBCLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5lbmRcblxubW9kdWxlIFByb3BhZ2F0aW9uX2hldXJpc3RpYyA6IEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmQgPSBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBFeGNlcHRpb24ud2FyblxuICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbiAgdHlwZSB1cGRhdGVfb3JkZXIgPVxuICAgIHwgS2VlcF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IERpc2NhcmRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBDdXRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgb2YgQi5ldmVudF9jYXNlX2FkZHJlc3MgKiBCLlBCLnByZWRpY2F0ZV92YWx1ZVxuICAgIHwgUmVmaW5lX3ZhbHVlX2JlZm9yZSBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBTa2lwXG5cbiAgbGV0IGR1bW15X3VwZGF0ZV9vcmRlciA9IFNraXBcblxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrID1cbiAgICB8IFByb3BhZ2F0ZV91cCBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUHJvcGFnYXRlX2Rvd24gb2YgQi5ldmVudF9jYXNlX2FkZHJlc3NcblxuICBsZXQgX3ByaW50X291dHB1dCBsb2cgeCA9XG4gICAgaWYgQi5pc19mYWlsZWQgeCB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRkFJTEVEXCJcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJR05PUkVEXCJcbiAgICBlbHNlXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1VDQ0VTU1wiXG5cbiAgbGV0IGZvcmNlZF9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbGlzdCA9IEIuZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKGwsIGluZm8pIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiBLZWVwX2V2ZW50IHgpIChMaXN0LnJldiBsKSwgbCwgaW5mbylcbiAgICAgICAgKExpc3QucmV2IGxpc3QpIClcblxuICBsZXQgZm9yYmlkZGVuX2V2ZW50cyBfcGFyYW10ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEN1dF9ldmVudCB4KSAoTGlzdC5yZXYgbGlzdClcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBsZXQga19pbml0ID0gZmlyc3QgYmxhY2tib2FyZCBwX2lkIGluXG4gICAgbGV0IGtfZW5kID0gbGFzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBtYXRjaCBrX2luaXQsIGtfZW5kIHdpdGhcbiAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgIHwgU29tZSBpLCBTb21lIGogLT5cbiAgICAgIGxldCByZWMgYXV4IGkgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBzdG9wIGkgaiB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgQi5idWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcF9pZCAoQi5idWlsZF9wb2ludGVyIGkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCBfdGVzdCwgX2FjdGlvbikgPVxuICAgICAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIFNvbWUgZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBpIGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCBCLlBCLmRlY19zdGVwX3Nob3J0X2lkXG4gICAgICAoZnVuIGkgaiAtPiBpIDwgailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9maXJzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2xhc3RfbGlua2VkX2V2ZW50IEIuUEIuaW5jX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgZXJyb3IgYmxhY2tib2FyZCBsZXZlbCA9XG4gICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICBpZiBzdG9wIGkgbGFzdCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICBCLmlzX3NlbGVjdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZXZlbF9vZl9ldmVudCA9IGxldmVsIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBmaXJzdCBsb2dfaW5mbyBlcnJvclxuXG4gIGxldCBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuemVyb19zdGVwX2lkIEIuUEIuZGVjX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IEIuUEIuemVyb19zdGVwX2lkXG4gICAgICAoQi5QQi5zdGVwX2lkX29mX2ludCAoQi5nZXRfbl9laWQgYmxhY2tib2FyZCkpXG4gICAgICBCLlBCLmluY19zdGVwX2lkXG4gICAgICAoZnVuIGkgaiAtPiBpID4gailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGV2ZWxcblxuICBsZXQgbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24sXG4gICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICBpblxuICAgIGxldCAoKSA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9ICFQcmlvcml0eS5uX2JyYW5jaCArIDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBCLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAgICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmlvcml0eSA9XG4gICAgICBtYXRjaCBCLlBCLkNJLlBvLksuSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZXJyb3IsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyB0byBiZWVuIHNlbGVjdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNlbGVjdGVkXCIpIFByaW9yaXR5LmNhdXNhbFxuICAgIGluXG4gICAgbGV0IG5fcF9pZCA9IEIuZ2V0X25wcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpblxuICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkuUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJBbGxfcmVtYWluaW5nX2V2ZW50cyBzdHJhdGVneSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkFsbCByZW1haW5pbmcgZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIikgKClcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50cyAtPiBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBiZXN0X3BhaXIgeCBhIGIgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgIFRvb2xzLm1heF9wb3NfaW50X25vdF96ZXJvIGEgYlxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWluX3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgeCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWRcbiAgICAgICAgbGV2ZWwgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS50cnlfdG9fcmVtb3ZlX2ZpcnN0IHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuTGF0ZV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICAgIHwgUHJpb3JpdHkuRWFybHlfZXZlbnRzIC0+XG4gICAgICAgIChtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbGlzdCA9XG4gICAgICBpZiBuX3BfaWQgPSAwIHRoZW5cbiAgICAgICAgZXJyb3IsIFtdXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyB0cnlfbGV2ZWwgbGV2ZWxfb3B0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBsZXZlbF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGxldmVsIG5fcF9pZCBzdGVwIGJlc3QgPVxuICAgICAgICAgICAgICBpZiBzdGVwID0gbl9wX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBiZXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBncmFkZSA9XG4gICAgICAgICAgICAgICAgICBCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHN0ZXBcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgKHN0ZXAgKyAxKVxuICAgICAgICAgICAgICAgICAgKGJlc3RfcGFpciBwcmlvcml0eSBiZXN0IChncmFkZSwgc3RlcCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbiwgcF9pZCA9XG4gICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgMVxuICAgICAgICAgICAgICAgIChCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIDAgbGV2ZWwsIDApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBldmVudF9pZCA9XG4gICAgICAgICAgICAgICAgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgcHJpb3JpdHkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBldmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGxldCBsb2cgPSBCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgKFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgICAgICAgICAgICAgICAoRmFpbHVyZSBcIkFuIGVtcHR5IHdpcmUgaGFzIGJlZW4gc2VsZWN0ZWRcIikgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRVJST1IgMjQ5OiAlc1xcblwiXG4gICAgICAgICAgICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgICB8IFNvbWUgZXZlbnRfaWQgLT5cbiAgICAgICAgICAgICAgICBlcnJvciwgWyBEaXNjYXJkX2V2ZW50IGV2ZW50X2lkOyBLZWVwX2V2ZW50IGV2ZW50X2lkIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgdHJ5X2xldmVsIChTb21lIFByaW9yaXR5LmhpZ2hlc3QpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAoQi5wcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBrbm93IHRoYXQgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBjYW4gYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sMiA9XG4gICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYm9vbDIgd2l0aFxuICAgICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAgICgqIFRoZSBibGFja2JvYXJkIGlzIGluY29uc2lzdGVudDogKilcbiAgICAgICAgKCogUG9pbnRlcnMgc2hvdWxkIG5vdCBwb2ludCB0byByZW1vdmVkIGV2ZW50cy4qKVxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcImluY29uc2lzdGVudCBwb2ludGVycyBpbiBibGFja2JvYXJkXCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIikgKClcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX25leHRfc2VpZCwgX25leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0LCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyB0ZXN0LCBubyBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQgYnV0IGhhcyBubyB0ZXN0IGFuZCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSB2YWx1ZSBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAyKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBubyB0ZXN0LCBidXQgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIk5vdGhpbmcgdG8gYmUgZG9uZVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICgqIG5vdGhpbmcgdG8gcHJvcGFnYXRlIGRvd253YXJkKilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmVkaWNhdGVfdmFsdWUgbmV4dF90ZXN0IHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uaiA9XG4gICAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvbiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIGFuZCBhZnRlciBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIG1lZXQgb2YgdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbmopXG4gICAgICAgICAgICAgICAgOjogUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDQgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIGN1dCB0aGUgZXhwbG9yYXRpb24gKilcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgQi5mYWlsKVxuICAgICAgICAgIClcbiAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAoKnRoZXJlIGlzIGEgdGVzdCBhbmQgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZSBuZXcgcHJlZGljYXRlX3ZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbmpcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGVzdCBhbmQgdmFsdWUgYXJlIGluY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDYpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0LCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDYgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBhbiBhY3Rpb24gYW5kIGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBuZXh0X2VpZCwgbmV4dF90ZXN0LCBuZXh0X2FjdGlvbikgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfYWN0aW9uIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3Qgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgYW5kIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcXG5cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICgqIHRlc3QgYW5kIHByZWRpY2F0ZV92YWx1ZSBhcmUgY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDkgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IG5leHRfZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkpXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBub3QgKEIuUEIuY29tcGF0aWJsZSBuZXh0X2FjdGlvbiBwcmVkaWNhdGVfdmFsdWUpIHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEwKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKnRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBqb2luIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIGFjdGlvbiBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBuZXh0X3Rlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMik6XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMlxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50ICglaSkgaXMgZGlzY2FyZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIG5leHRfZWlkKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTNcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuXG4gIGxldCByZWMgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX3ZhbHVlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPiBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgICAgQi5pc19ib3VuZGFyeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAxIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIG5vdCAoQi5QQi5pc191bmRlZmluZWQgcHJlZGljYXRlX3ZhbHVlKSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDMgbG9nX2luZm8gaW5cbiAgICAgICAgZXJyb3IsIHRydWUsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIF90ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgZXJyb3IsIGZhbHNlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKVxuXG4gIGxldCBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgYWRkcmVzcyA9XG4gICAgaWYgQi5QQi5pc191bmtub3duIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgZWxzZVxuICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgYWRkcmVzc1xuXG4gIGxldCBsYXN0X2NoYW5jZV91cCA9XG4gICAgaWYgbG9va191cF9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsYXN0X2NoYW5jZV91cFxuICAgIGVsc2VcbiAgICAgIGZ1biBfIF8gbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBfIF8gLT5cbiAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGhhcyBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLmlzX3Vua25vd24gYWN0aW9uIHRoZW5cbiAgICAgICAgKCogbm8gYWN0aW9uLCB3ZSBrZWVwIG9uIHByb3BhZ2F0aW5nIHdpdGggdGhlIGNvbmpvbmN0aW9uIG9mIHRoZSB0ZXN0IG9mIHRoZSB2YWx1ZSAqKVxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ZhbHVlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld192YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGlmIEIuUEIuaXNfdW5kZWZpbmVkIHRlc3QgdGhlbiAoXG4gICAgICAgICAgKCp0aGUgd2lyZSBoYXMganVzdCBiZSBjcmVhdGVkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDMpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAzIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICgqd2Uga25vdyB0aGF0IHRoZSB3aXJlIHdhcyBkZWZpbmVkIGJlZm9yZSopXG4gICAgICAgICAgICBCLlBCLmNvbXBhdGlibGUgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGF0ZSA9XG4gICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgc3RhdGUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKlRoZSBldmVudCBoYXMgdG8gYmUgZGlzY2FyZGVkIHdoaWNoIGlzIGFic3VyZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDYpOlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDYgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCB0ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gdGVzdCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgbmVpdGhlciBhIHRlc3QsIG5vciAgYWN0aW9uIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSAgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkV2ZW50IGJlZm9yZSAoJWkpIGlzIGRpc2NhcmRlZFwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSlcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgaXMgdGhlIG9ubHkgb3Bwb3J0dW5pdHkgdG8gc2V0IHVwIHRoZSB3aXJlLCB3ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBrZWVwIHRoZSBldmVudFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDExKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiwgYnV0IG5vIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV3X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMyk6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzY2FyZCB0aGUgZXZlbnQgYmVmb3JlICglaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEzXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXYnID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSB0ZXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNCk6XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldidcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTRcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmV2JylcbiAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgbWF5YmUgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTUgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTYpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJldmlvdXMgd2lyZSBzdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiU2VsZWN0IHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBLZWVwX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTcpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNyBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICkpXG5cbiAgbGV0IHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNoZWNrXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBtYXRjaCBjaGVjayB3aXRoXG4gICAgfCBQcm9wYWdhdGVfdXAgeCAtPlxuICAgICAgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBQcm9wYWdhdGVfZG93biB4IC0+XG4gICAgICBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHhcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuXG4gIGxldCBjdXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gY2FzZSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIClcblxuICBsZXQgbG9va19kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJvcGFnYXRlX2xpc3QgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBfLCBfLCBhY3Rpb24pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxpc3RfdmFsdWVzID0gQi5QQi53ZWFrZW5pbmcgYWN0aW9uIGluXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAocHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgdmFsdWUgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGNhc2UgYm9vbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGxldCBjYSA9IEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBjYXNlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIHByZWRpY2F0ZV92YWx1ZSB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX25leHQgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXh0X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgICAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgbmV4dF9hY3Rpb24gdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX2Rvd25fY2FzZSAzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgdHJ1ZSBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhdXggbmV4dF9jYXNlIGJvb2wgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBjYXNlIGZhbHNlIGVycm9yIGxvZ19pbmZvKVxuICAgICAgICAgIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgIGxpc3RfdmFsdWVzXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIClcblxuICBsZXQgbG9va19kb3duID1cbiAgICBpZiBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgdGhlblxuICAgICAgbG9va19kb3duXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgXyAtPlxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIGxldCByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgY2FzZV9hZGRyZXNzID0gQi52YWx1ZV9hZnRlciBhZGRyZXNzIGluXG4gICAgbGV0IHN0YXRlID0gQi5zdGF0ZSB2YWx1ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBzdGF0ZSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCByZXN1bHQpXG4gICAgZWxzZSBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCByZXN1bHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICBQcm9wYWdhdGVfdXAgYWRkcmVzcyA6OiBQcm9wYWdhdGVfZG93biBhZGRyZXNzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICApXG5cbiAgbGV0IHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcG9pbnRlcl9wcmV2aW91cyB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGRpc2NhcmRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgcHJlZGljYXRlX3ZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0J1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgZXZlbnQsIF8sIF8pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGNhc2UgbGV2ZWwpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBuZXh0IG9mIHRoZSBwcmV2aW91cyBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19uZXh0IHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgcHJldmlvdXMgb2YgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLnBvaW50ZXJfdG9fcHJldmlvdXMgcG9pbnRlcl9uZXh0KVxuICAgICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBwb2ludGVyX25leHQgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdFxuICAgICAgICAgICAgY2FzZVxuICAgICAgICBpblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgICAgKVxuICAgIClcblxuICBsZXQga2VlcF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgKCogd2Uga2VlcCB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHRcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9wb2ludGVyX25leHQgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIF8sIHJlc3VsdCcpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgICB0ZXN0IGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JycpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIGFjdGlvbiBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0JyB8fCBCLmlzX2ZhaWxlZCByZXN1bHQnJyB0aGVuXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIEIuZmFpbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBQcm9wYWdhdGVfdXAgY2FzZSA6OiBQcm9wYWdhdGVfZG93biBjYXNlXG4gICAgICAgICAgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91cyA6OiBQcm9wYWdhdGVfdXAgcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19zZWxlY3RlZF9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIldlIGtlZXAgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEIuY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsIHggc3VjY2VzcyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHgsIHN1Y2Nlc3NcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgeSwgc3VjY2VzczIgPSBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgdCB4IGluXG4gICAgICAgICAgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2Vzc1xuICAgICAgICAgIGVsc2UgaWYgQi5pc19zdWNjZWVkZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzMlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHksIHN1Y2Nlc3MyXG4gICAgICBpblxuICAgICAgbGV0ICggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLFxuICAgICAgICAgICAgc3VjY2VzcyApID1cbiAgICAgICAgYXV4IGxpc3RcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdClcbiAgICAgICAgICBCLmlnbm9yZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIClcblxuICBsZXQgZ2VuX2V2ZW50IGZfY2FzZSBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgc3VjY2VzcylcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2UgcmVtb3ZlIGV2ZW50ICVpXCJcbiAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IGcgbG9nX2luZm8gaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBCLm5fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGZfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBjdXRfZXZlbnQgPSBnZW5fZXZlbnQgY3V0X2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0X2V2ZW50c1xuXG4gIGxldCBkaXNjYXJkX2V2ZW50ID1cbiAgICBnZW5fZXZlbnQgZGlzY2FyZF9jYXNlIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3JlbW92ZWRfZXZlbnRzXG5cbiAgbGV0IGFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaW5zdHJ1Y3Rpb25cbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGluc3RydWN0aW9uIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAga2VlcF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgQ3V0X2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGN1dF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgRGlzY2FyZF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBkaXNjYXJkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzc1xuICAgICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIChhZGRyZXNzLCB2YWx1ZSkgLT5cbiAgICAgIHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFNraXAgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLmlnbm9yZSlcblxuICBsZXQgX2tlZXAgeCA9IEtlZXBfZXZlbnQgeFxuZW5kXG4iLCIoKipcbiAgKiBnZW5lcmljX2JyYW5jaF9hbmRfY3VwX3NvbHZlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE5LzA3LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgbG9nX3N0ZXBzID0gZmFsc2VcblxubW9kdWxlIHR5cGUgU29sdmVyID0gc2lnXG4gIG1vZHVsZSBQSCA6IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuQmxhY2tib2FyZF93aXRoX2hldXJpc3RpY1xuXG4gIHZhbCBjb21wcmVzcyA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC51cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCAqIFBILkIuYXNzaWduX3Jlc3VsdCAqIFBILkIucmVzdWx0IGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmaWx0ZXIgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLmJsYWNrYm9hcmQgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdWIgOiAoVHJhY2UudCwgUEguQi5ibGFja2JvYXJkKSBQSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgY2xlYW4gOiAoUEguQi5ibGFja2JvYXJkLCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZSA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFRyYWNlLnQgKiBQSC5CLnJlc3VsdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZV9yZXN1bHQgOiBQSC5CLnJlc3VsdCAtPiBUcmFjZS50XG5lbmRcblxubW9kdWxlIFNvbHZlciA9IHN0cnVjdFxuICBtb2R1bGUgUEggPSBQcm9wYWdhdGlvbl9oZXVyaXN0aWNzLlByb3BhZ2F0aW9uX2hldXJpc3RpY1xuICAoKkJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMqKVxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICBsZXQgX2NvbWJpbmVfb3V0cHV0IG8xIG8yID1cbiAgICBpZiBQSC5CLmlzX2lnbm9yZWQgbzIgdGhlblxuICAgICAgbzFcbiAgICBlbHNlXG4gICAgICBvMlxuXG4gIGxldCByZWMgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmQgPVxuICAgIGxldCBib29sLCBsb2dfaW5mbyA9IFBILkIudGljayBsb2dfaW5mbyBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmR1bXBfY29tcGxldGVfbG9nXG4gICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBtYXRjaCBpbnN0cnVjdGlvbl9saXN0IHdpdGhcbiAgICB8IHQgOjogcSAtPlxuICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgYXNzaWduX3Jlc3VsdCkgKSA9XG4gICAgICAgIFBILmFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdCBxXG4gICAgICAgICAgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHByb3BhZ2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgICBQSC5wcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0XG4gICAgICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHFcbiAgICAgICAgaW5cbiAgICAgICAgaWYgUEguQi5pc19mYWlsZWQgYXNzaWduX3Jlc3VsdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbnN0cnVjdGlvbl9saXN0XG4gICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFBILkIuc3VjY2VzcykpXG5cbiAgdHlwZSBjaG9pY2VzID0ge1xuICAgIGN1cnJlbnQ6IFBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICAgIHN0YWNrOiBQSC51cGRhdGVfb3JkZXIgbGlzdCBsaXN0O1xuICB9XG5cbiAgbGV0IGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdCA9XG4gICAgeyBjdXJyZW50ID0gW107IHN0YWNrID0gY2hvaWNlX2xpc3QuY3VycmVudCA6OiBjaG9pY2VfbGlzdC5zdGFjayB9XG5cbiAgbGV0IHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3QgPSB7IGNob2ljZV9saXN0IHdpdGggY3VycmVudCA9IGxpc3QgfVxuXG4gIGxldCBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHN0YWNrID1cbiAgICBtYXRjaCBzdGFjay5jdXJyZW50IHdpdGhcbiAgICB8IHQgOjogcSAtPiBlcnJvciwgKHQsIHsgc3RhY2sgd2l0aCBjdXJyZW50ID0gcSB9KVxuICAgIHwgW10gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJFbXB0eSBjaG9pY2Ugc3RhY2tcIlxuICAgICAgICAoRmFpbHVyZSBcIkVtcHR5IGNob2ljZSBsaXN0IGluIHBvcF9uZXh0X2Nob2ljZVwiKVxuICAgICAgICAoUEguZHVtbXlfdXBkYXRlX29yZGVyLCBzdGFjaylcblxuICBsZXQgbm9fbW9yZV9jaG9pY2Ugc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgbGV0IHJlYyBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QgPVxuICAgICAgbWF0Y2ggY2hvaWNlX2xpc3QuY3VycmVudCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgTm9uZSlcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgY2hvaWNlX2xpc3QgPSB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QpXG4gICAgICB8IF8gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgU29tZSBjaG9pY2VfbGlzdClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcblxuICBsZXQgZW1wdHlfY2hvaWNlX2xpc3QgPSB7IHN0YWNrID0gW107IGN1cnJlbnQgPSBbXSB9XG5cbiAgbGV0IHJlYyBzdWJsaXN0IGwgbCcgPVxuICAgIG1hdGNoIGwsIGwnIHdpdGhcbiAgICB8IFtdLCBfIC0+IHRydWVcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IHN1Ymxpc3QgdCB0J1xuICAgIHwgXywgX2gnIDo6IHQnIC0+IHN1Ymxpc3QgbCB0J1xuXG4gIGxldCBzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsID1cbiAgICBMaXN0LnJldl9tYXAgZnN0XG4gICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAoZnVuIChfLCBhKSAoXywgYikgLT4gY29tcGFyZSBiIGEpXG4gICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4gYSAtPiBhLCBMaXN0Lmxlbmd0aCBhKSBsKSlcblxuICBsZXQgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSBsID1cbiAgICBsZXQgcmVjIGF1eCB0b192aXNpdCBnb29kb25lcyA9XG4gICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGdvb2RvbmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBhdXhcbiAgICAgICAgICAoTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIHQpXG4gICAgICAgICAgKGggOjogTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIGdvb2RvbmVzKVxuICAgIGluXG4gICAgYXV4IChzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsKSBbXVxuXG4gIGxldCByZWMgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICBzdG9yeV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIFBILkIuaXNfbWF4aW1hbF9zb2x1dGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBib29sIHRoZW4gKFxuICAgICAgKCogU1VDQ0VTUyAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIFBILkIudHJhbnNsYXRlX2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuUEIuQ0kuUG8uSy5ILmdldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgbGV0IHN0b3J5X2xpc3QgPSBsaXN0IDo6IHN0b3J5X2xpc3QgaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgY2hvaWNlX2xpc3QuY3VycmVudCA8PiBbXSB0aGVuXG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgY3VycmVudCBsaXN0IG9mIGNob2ljZXMgc2hvdWxkIGJlIFxcXG4gICAgICAgICAgICAgICAgIGVtcHR5XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgIGVtcHR5XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VfbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Quc3RhY2sgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2hvaWNlX2xpc3RcbiAgICAgICAgICB8IHQgOjogcSAtPiB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY2hvaWNlX2xpc3QpID1cbiAgICAgICAgICBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBjaG9pY2VfbGlzdCAtPlxuICAgICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICAgICAgc3RvcnlfbGlzdCAoKih1cGRhdGVfZmlyc3Rfc3RvcnkgZmlyc3Rfc3RvcnkgbGlzdCkqKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBcIkZBSUxcIiAhUHJpb3JpdHkubl9zdG9yeSAhUHJpb3JpdHkubl9icmFuY2ggYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdClcbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbIGxpc3QgXSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBjaG9pY2VfbGlzdCA9XG4gICAgICAgIGlmIG5vX21vcmVfY2hvaWNlIGNob2ljZV9saXN0IHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgIFBILm5leHRfY2hvaWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB1cGRhdGVfY3VycmVudCBjaG9pY2VfbGlzdCBsaXN0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCAoY2hvaWNlLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2hvaWNlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBbIGNob2ljZSBdIFtdIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0XG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChicmFuY2hfY2hvaWNlX2xpc3QgY2hvaWNlX2xpc3QpXG4gICAgICAgICAgc3RvcnlfbGlzdFxuICAgIClcblxuICBsZXQgZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsaXN0X2VpZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2JvYXJkLCBldmVudHNfdG9fa2VlcCkgPVxuICAgICAgUEguQi5jdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X2VpZFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcFxuXG4gIGxldCB0cmFuc2xhdGUgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgPVxuICAgIGxldCBsaXN0JyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgKCBQSC5CLmdldF9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspLFxuICAgICAgICAgICAgUEguQi5zaWRlX2VmZmVjdF9vZl9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspICkpXG4gICAgICAgIChMaXN0LnJldiBsaXN0KVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldl9tYXAgZnN0IChMaXN0LnJldiBsaXN0JykgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChsaXN0LCBsaXN0JylcblxuICBsZXQgdHJhbnNsYXRlX3Jlc3VsdCByZXN1bHQgPSBMaXN0LnJldl9tYXAgZnN0IEBAIExpc3QucmV2IHJlc3VsdFxuXG4gIGxldCBjbGVhbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkID1cbiAgICBQSC5CLnJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZFxuXG4gIGxldCBmaWx0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudHNfdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzX3RvX3JlbW92ZSA9XG4gICAgICBsZXQgbl9ldmVudHMgPSBQSC5CLmdldF9uX2VpZCBibGFja2JvYXJkIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3Qgc29sID1cbiAgICAgICAgaWYgayA9IG5fZXZlbnRzIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBzb2xcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGlmIFBILkIuUEIuaW50X29mX3N0ZXBfaWQgdCA9IGsgdGhlblxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBxIHNvbFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICAgIHwgW10gLT4gYXV4IChrICsgMSkgbGlzdCAoUEguQi5QQi5zdGVwX2lkX29mX2ludCBrIDo6IHNvbClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGV2ZW50c190b19rZWVwIFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBmb3JiaWRkZW5fZXZlbnRzID1cbiAgICAgIFBILmZvcmJpZGRlbl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRzX3RvX3JlbW92ZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiU3RhcnQgY3V0dGluZ1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBfb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZm9yYmlkZGVuX2V2ZW50cyBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgc3ViIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRvX2tlZXAgPVxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5pbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlciA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJBZnRlciBDYXVzYWwgQ3V0ICAlaVwiXG4gICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdF9vcmRlciBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgRkFJTCAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQsIFtdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgJWkgQC5cIlxuICAgICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IGZhbHNlLCBcIlwiXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3dlYWtGaWxlTmFtZSApXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSApXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSArICghUHJpb3JpdHkubl9icmFuY2ggKyAxKSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3RyaW5nICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpID1cbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVtcHR5X2Nob2ljZV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIG1hdGNoIHN0b3J5X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IFBILkIuZmFpbFxuICAgICAgICB8IF8gLT4gUEguQi5zdWNjZXNzXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIChibGFja2JvYXJkLCBvdXRwdXQsIGZpbHRlcl9vdXRfbm9uX21pbmltYWxfc3RvcnkgKExpc3QucmV2IHN0b3J5X2xpc3QpKVxuICAgICAgKVxuICAgIClcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tfbGlzdC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTAyLTE0IDEwOjI5OjQyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xNCAxMDo1MDo1NyBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNlxuICAqICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5XG4gICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBFdmVudCA9IHNpZ1xuICB0eXBlIGV2ZW50XG4gIHR5cGUgZWlkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBrZXlfb2ZfZXZlbnQgOiBldmVudCAtPiBlaWQgb3B0aW9uXG4gIHZhbCBpbml0IDogaW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4gZWlkIC0+ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gZWlkIC0+ICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQmxhY2tsaXN0ID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBFdmVudCA6IEV2ZW50XG5cbiAgdmFsIGluaXQgOiBpbnQgLT4gdFxuICB2YWwgYmxhY2tfbGlzdCA6IEV2ZW50LmV2ZW50IC0+IHQgLT4gdFxuICB2YWwgaXNfYmxhY2tfbGlzdGVkIDogRXZlbnQuZXZlbnQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoRXZlbnQgOiBFdmVudClcbiAgLT5cbiAgc3RydWN0XG4gICAgbW9kdWxlIEV2ZW50ID0gRXZlbnRcblxuICAgIHR5cGUgdCA9IGJvb2wgRXZlbnQudFxuXG4gICAgbGV0IGluaXQgbiA9IEV2ZW50LmluaXQgbiBmYWxzZVxuXG4gICAgbGV0IGJsYWNrX2xpc3QgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgbGV0IHQgPSBFdmVudC5zZXQgdCBlaWQgdHJ1ZSBpblxuICAgICAgICB0XG5cbiAgICBsZXQgaXNfYmxhY2tfbGlzdGVkIGV2ZW50IHQgPVxuICAgICAgbWF0Y2ggRXZlbnQua2V5X29mX2V2ZW50IGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGVpZCAtPiBFdmVudC5nZXQgdCBlaWRcbiAgZW5kXG4iLCIoKipcbiAgKiBkYWcubWxcbiAgKlxuICAqIERhZyBjb21wdXRhdGlvbiBhbmQgY2Fub25pY2FsIGZvcm1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMi8wMy8yMDEyXG4gICogTGFzdCBtb2R4aWZpY2F0aW9uOiAxOC8wNi8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5cbmxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICBFeGNlcHRpb24ud2FyblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG5tb2R1bGUgdHlwZSBTdG9yeVRhYmxlID0gc2lnXG4gIHR5cGUgdGFibGVcblxuICB2YWwgZm9sZF90YWJsZSA6XG4gICAgKCAoIFRyYWNlLnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudGVybmFyeSxcbiAgICAgIHRhYmxlLFxuICAgICAgJ2EsXG4gICAgICAnYSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGluaXRfdGFibGUgOiB0YWJsZSBTLlBILkIuUEIuQ0kuUG8uSy5ILnplcm9hcnlcbiAgdmFsIGNvdW50X3N0b3JpZXMgOiB0YWJsZSAtPiBpbnRcblxuICB2YWwgYWRkX3N0b3J5IDpcbiAgICAoIENhdXNhbC5ncmlkLFxuICAgICAgVHJhY2UudCxcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgIHRhYmxlLFxuICAgICAgdGFibGUgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBoYXNoX2xpc3QgOiAodGFibGUsIHRhYmxlKSBTLlBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHNvcnRfbGlzdCA6XG4gICAgKCB0YWJsZSxcbiAgICAgIChUcmFjZS50XG4gICAgICAqIENhdXNhbC5ncmlkXG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcbmVuZFxuXG5tb2R1bGUgSCA9IFMuUEguQi5QQi5DSS5Qby5LLkhcbm1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuXG50eXBlIGxhYmVsID0gc3RyaW5nXG50eXBlIG5vZGVfa2luZCA9IE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCB8IEZJQ1RJVElPVVNcbnR5cGUgbm9kZSA9IG5vZGVfa2luZCAqIGxhYmVsXG5cbnR5cGUgZ3JhcGggPSB7XG4gIHJvb3Q6IGludDtcbiAgbGFiZWxzOiBub2RlIEEudDtcbiAgcHJlZDogaW50IGxpc3QgQS50O1xuICBjb25mbGljdF9wcmVkOiBpbnQgbGlzdCBBLnQ7XG59XG5cbmxldCBkdW1teV9ncmFwaCA9XG4gIHtcbiAgICByb290ID0gMDtcbiAgICBsYWJlbHMgPSBBLm1ha2UgMSAoRklDVElUSU9VUywgXCJcIik7XG4gICAgcHJlZCA9IEEubWFrZSAxIFtdO1xuICAgIGNvbmZsaWN0X3ByZWQgPSBBLm1ha2UgMSBbXTtcbiAgfVxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGtleSA9IEZyZXNoIG9mIG5vZGUgfCBGb3JtZXIgb2YgcG9zaXRpb24gfCBTdG9wXG50eXBlIGNhbm9uaWNhbF9mb3JtID0ga2V5IGxpc3RcbnR5cGUgcHJlaGFzaCA9IChub2RlICogaW50KSBsaXN0XG5cbmxldCBfZHVtbXlfY2Fubm9uaWNhbF9mb3JtID0gW11cbmxldCBfZHVtbXlfcHJlaGFzaCA9IFtdXG5cbmxldCBfcHJpbnRfc3RvcnlfaW5mbyBsb2dnZXIgX3BhcmFtZXRlciBqc29uID1cbiAgKCpMaXN0Lml0ZXJcbiAgICAoZnVuXG4gICAgICBzdG9yeV9pbmZvIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICBsb2dnZXJcbiAgICAgICAgICBcImlkOiVpLCB0aW1lOiVmLCBldmVudDolaVwiXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWRcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnRcbiAgICAgIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG4gICAgKVxuICAgIHN0b3J5X2luZm9fbGlzdFxuICAqKVxuICBsZXQgY2hhbm5lbF9vcHQgPSBMb2dnZXJzLmNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICgpXG5cbmxldCBwcmludF9ncmFwaCBsb2dnZXIgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGlkIHN0b3J5X2luZm8gZ3JhcGggPVxuICBsZXQgbG9nZ2VyID0gR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vyc19zaWcucmVmcmVzaF9pZCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJzdG9yeVwiIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIChub2RlX2tpbmQsIGopIC0+XG4gICAgICAgIGlmIGkgPSAwICYmIGogPSBcIlwiIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICBtYXRjaCBub2RlX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBPQlMgLT4gWyBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgXVxuICAgICAgICAgICAgfCBQRVJUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBSVUxFIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWU7XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgSU5JVCAtPlxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW47XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgRklDVElUSU9VUyAtPlxuICAgICAgICAgICAgICBbIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X25vZGUgbG9nZ2VyXG4gICAgICAgICAgICB+ZGlyZWN0aXZlczooR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgaiA6OiBkaXJlY3RpdmVzKVxuICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgKSlcbiAgICAgIGdyYXBoLmxhYmVsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciAoc3RyaW5nX29mX2ludCBqKSAoc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgICBsKVxuICAgICAgZ3JhcGgucHJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlclxuICAgICAgICAgICAgICB+ZGlyZWN0aXZlczpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkO1xuICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZTtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkpIChzdHJpbmdfb2ZfaW50IGopKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5jb25mbGljdF9wcmVkXG4gIGluXG4gIGxldCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBILmdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RvcnlfanNvbi5DYXVzYWxcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGxldCByZXN1bHQgPVxuICAgIHtcbiAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgIFN0b3J5X2pzb24uc3RvcnkgPVxuICAgICAgICBTdG9yeV9qc29uLk5ld1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFN0b3J5X2pzb24uZ3JhcGggPSBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5pZDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdCkgaW5cbiAgZXJyb3JcblxubGV0IHByaW50X2VsdCBsb2cgZWx0ID1cbiAgbWF0Y2ggZWx0IHdpdGhcbiAgfCBTdG9wIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNUT1BcIiBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGb3JtZXIgaSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyICVpXCIgaSBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGcmVzaCAoXywgcykgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiRXZlbnQgJXNcIiBzIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuXG5sZXQgX3ByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciBkYWcgPVxuICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfZWx0IChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKSBkYWcgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IF9wcmludF9wcmVoYXNoIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciByZXByZXNlbnRhdGlvbiA9XG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKChfLCBiKSwgaSkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIFwiJXM6JWksXCIgYiBpKVxuICAgICAgcmVwcmVzZW50YXRpb25cbiAgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IGxhYmVsIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUlVMRSBpKSAtPiBILnN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBbIGkgXSkgLT4gSC5zdHJpbmdfb2ZfYWdlbnRfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UICgoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSBhcyB4KSAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFRyYWNlLnByaW50X2V2ZW50X2tpbmQgfmVudjpoYW5kbGVyLkguZW52KSB4XG4gIHwgQ2F1c2FsLk9CUyBuYW1lIC0+IG5hbWVcblxubGV0IGtpbmQgbm9kZSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBfKSAtPiBJTklUXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIF8pIC0+IFJVTEVcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlBFUlQgXykgLT4gUEVSVFxuICB8IENhdXNhbC5PQlMgXyAtPiBPQlNcblxubGV0IGNvbXBhcmVfZWx0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IFN0b3AsIFN0b3AgLT4gMFxuICB8IFN0b3AsIF8gLT4gLTFcbiAgfCBfLCBTdG9wIC0+IDFcbiAgfCBGb3JtZXIgaSwgRm9ybWVyIGogLT4gY29tcGFyZSBpIGpcbiAgfCBGb3JtZXIgXywgXyAtPiAtMVxuICB8IF8sIEZvcm1lciBfIC0+IDFcbiAgfCBGcmVzaCBzLCBGcmVzaCBzJyAtPiBjb21wYXJlIHMgcydcblxubGV0IHF1aWNrX2NvbXBhcmUgZyB0MSB0MiA9IGNvbXBhcmVfZWx0IChnIHQxKSAoZyB0MilcblxubGV0IHJlYyBhdXggY29tcGFyZV9lbHQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHQnIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBhdXggY29tcGFyZV9lbHQgcSBxJ1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG5sZXQgY29tcGFyZV9jYW5vbmljID0gYXV4IGNvbXBhcmVfZWx0XG5cbmxldCBjb21wYXJlX2Nhbm9uaWNfb3B0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBjb21wYXJlX2Nhbm9uaWMgeCB5XG5cbmxldCBjb21wYXJlX3ByZWhhc2ggPSBhdXggY29tcGFyZVxuXG5sZXQgZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuR3JhcGhfY29udmVyc2lvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBpZHMgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLkNhdXNhbC5mbG93IFtdIGluXG4gIGxldCBsYWJlbCA9IGxhYmVsIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBDYXVzYWwuY3V0XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBjb25maWcuQ2F1c2FsLnByZWNfMSB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGR1bW15X2dyYXBoXG4gIHwgU29tZSBzaXplIC0+XG4gICAgbGV0IHN1Y2Nfc2l6ZSA9IHN1Y2Mgc2l6ZSBpblxuICAgIGxldCBsYWJlbHMgPSBBLm1ha2Ugc3VjY19zaXplIChGSUNUSVRJT1VTLCBcIlwiKSBpblxuICAgIGxldCBwcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCBjb25mbGljdF9wcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBhdG9tX2tpbmQgLT4gQS5zZXQgbGFiZWxzIGkgKGtpbmQgYXRvbV9raW5kLCBsYWJlbCBhdG9tX2tpbmQpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmV2ZW50c19raW5kXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBwcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLnByZWNfMVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQS5zZXQgY29uZmxpY3RfcHJlZCBpIChNb2RzLkludFNldC5lbGVtZW50cyBzKSlcbiAgICAgICAgY29uZmlnLkNhdXNhbC5jb25mbGljdFxuICAgIGluXG4gICAgbGV0IHJvb3QgPSBzaXplIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyByb290OyBsYWJlbHM7IHByZWQ7IGNvbmZsaWN0X3ByZWQgfVxuXG5sZXQgY29uY2F0IGxpc3QxIGxpc3QyID1cbiAgbGV0IHJlYyBhdXggbGlzdDEgbGlzdDIgPVxuICAgIG1hdGNoIGxpc3QyIHdpdGhcbiAgICB8IFtdIC0+IGxpc3QxXG4gICAgfCB0IDo6IHEgLT4gYXV4ICh0IDo6IGxpc3QxKSBxXG4gIGluXG4gIGF1eCBsaXN0MiAoTGlzdC5yZXYgbGlzdDEpXG5cbmxldCBjb21wYXJlX25vZGUgKGEsIF8pIChiLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBsID1cbiAgbGV0IHJlYyBhdXggbCBmb3JtZXIgd2VpZ2h0IG91dHB1dCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBMaXN0LnJldiAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gICAgfCAodCwgd3QpIDo6IHEgd2hlbiB0ID0gZm9ybWVyIC0+IGF1eCBxIGZvcm1lciAod3QgKyB3ZWlnaHQpIG91dHB1dFxuICAgIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgKChmb3JtZXIsIHdlaWdodCkgOjogb3V0cHV0KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8ICh0LCB3dCkgOjogcSAtPiBhdXggcSB0IHd0IFtdXG5cbmxldCBwcmVoYXNoIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgZ3JhcGggPVxuICAoIGVycm9yLFxuICAgIHNtYXNoXG4gICAgICAoTGlzdC5zb3J0IGNvbXBhcmVfbm9kZVxuICAgICAgICAgKGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgQS5pdGVyXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRklDVElUSU9VUywgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgKChPQlMgfCBQRVJUIHwgUlVMRSB8IElOSVQpLCBfKSBhcyBhIC0+IGwgOj0gKGEsIDEpIDo6ICFsKVxuICAgICAgICAgICAgICBncmFwaC5sYWJlbHNcbiAgICAgICAgICBpblxuICAgICAgICAgICFsKSkgKVxuXG5sZXQgY2Fub25pY2FsaXplIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaCA9XG4gIGxldCBhc3NvID0gTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGxhYmVsIGkgPSB0cnkgQS5nZXQgZ3JhcGgubGFiZWxzIGkgd2l0aCBfIC0+IEZJQ1RJVElPVVMsIFwiXCIgaW5cbiAgbGV0IHJlYyBwb3AgKGNhbmRpZGF0ZSA6IGtleSBsaXN0KSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgIG1hdGNoIGNhbmRpZGF0ZSwgdG9fYmVhdCB3aXRoXG4gICAgfCBbXSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgIFNvbWUgdG9fYmVhdCAoKiBjYW5kaWRhdGUgaXMgYSBwcmVmaXggb2YgdG9fYmVhdCwgd2Ugb3V0cHV0IHRoZSBzdWZmaXggKilcbiAgICB8IF8gOjogXywgU29tZSBbXSAtPiBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgICB8IHQgOjogcSwgU29tZSAodHIgOjogcXIpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9lbHQgdCB0ciBpblxuICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgIFNvbWUgTm9uZSAoKiB0aGUgY2FuZGlkYXRlIGlzIGJldHRlciAqKVxuICAgICAgZWxzZSBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgcG9wIHEgKFNvbWUgcXIpXG4gICAgICAoKiB3ZSBkbyBub3Qga25vdywgd2UgbG9vayBmdXJ0aGVyICopXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICAoKiB0aGUgY2FuZGlkYXRlIGlzIHdvcnNlICopXG4gIGluXG4gIGxldCByZWMgdmlzaXQgKGkgOiBpbnQpIChtYXAgOiBpbnQgTW9kcy5JbnRNYXAudCkgKGZyZXNoX3BvcyA6IGludClcbiAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBtYXAgd2l0aFxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoKiB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4sIHdlIHB1dCBhIHBvaW50ZXIgKilcbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRm9ybWVyIGkgXSB0b19iZWF0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB0byBiZWF0IGlzIGJldHRlciwgd2UgY3V0IHRoZSBjb25zdHJ1Y3Rpb24gKilcbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgKCogdG8gYmVhdCBtYXkgYmUgaW1wcm92ZWQsIHdlIGdvIG9uICopXG4gICAgICAgIFNvbWUgKFsgRm9ybWVyIGkgXSwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKVxuICAgICgqMCopXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB0aGUgbm9kZSBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSAqKVxuICAgICAgbGV0IG1hcCA9IE1vZHMuSW50TWFwLmFkZCBpIGZyZXNoX3BvcyBtYXAgaW5cbiAgICAgIGxldCBmcmVzaF9wb3MgPSBmcmVzaF9wb3MgKyAxIGluXG4gICAgICAoKjAqKVxuICAgICAgKG1hdGNoIHBvcCBbIEZyZXNoIChsYWJlbCBpKSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgLT5cbiAgICAgICAgKCoxKilcbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IHRyeSBBLmdldCBncmFwaC5wcmVkIGkgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMiA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGdyYXBoLmNvbmZsaWN0X3ByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGJlc3Rfc2liYmxpbmcgKG0gOiBpbnQgTW9kcy5JbnRNYXAudCkgKGYgOiBpbnQpXG4gICAgICAgICAgICAoY2FuZGlkYXRlcyA6IGludCBsaXN0KSAobm90X2Jlc3QgOiBpbnQgbGlzdClcbiAgICAgICAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKVxuICAgICAgICAgICAgKHJlY29yZCA6XG4gICAgICAgICAgICAgIChpbnQgKiAoa2V5IGxpc3QgKiBpbnQgTW9kcy5JbnRNYXAudCAqIGludCAqIGtleSBsaXN0IG9wdGlvbikpXG4gICAgICAgICAgICAgIG9wdGlvbikgPVxuICAgICAgICAgIG1hdGNoIGNhbmRpZGF0ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgcmVjb3JkIC0+IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpKVxuICAgICAgICAgICgqMiopXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCByZXAgPSB2aXNpdCB0IG0gZiB0b19iZWF0IGluXG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIHJlcCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYmVzdF9zaWJibGluZyBtIGYgcSAodCA6OiBub3RfYmVzdCkgdG9fYmVhdCByZWNvcmRcbiAgICAgICAgICAgIHwgU29tZSAoKGVuY29kaW5nIDoga2V5IGxpc3QpLCBtYXAsIGZyZXNoLCByZXNpZHVlKSAtPlxuICAgICAgICAgICAgICAoKjMqKVxuICAgICAgICAgICAgICBsZXQgKHRvX2JlYXRfYWZ0ZXIgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNpZHVlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBlbmNvZGluZ1xuICAgICAgICAgICAgICAgIHwgXyAtPiB0b19iZWF0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAobm90X2Jlc3QgOiBpbnQgbGlzdCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlY29yZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG5vdF9iZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIChiZXN0LCBfKSAtPiBiZXN0IDo6IG5vdF9iZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGJlc3Rfc2liYmxpbmcgbSBmIHEgbm90X2Jlc3QgdG9fYmVhdF9hZnRlclxuICAgICAgICAgICAgICAgIChTb21lICh0LCAoZW5jb2RpbmcsIG1hcCwgZnJlc2gsIHJlc2lkdWUpKSkpXG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eCBtIGYgbCBzb2wgdG9fYmVhdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBTb21lIChtLCBmLCBzb2wsIHRvX2JlYXQpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIGJlc3Rfc2liYmxpbmcgbSBmIGwgW10gdG9fYmVhdCBOb25lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpIC0+XG4gICAgICAgICAgICAgIGxldCBfLCAoYmVzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXRfYWZ0ZXIpID0gcmVjb3JkIGluXG4gICAgICAgICAgICAgIGF1eCBtYXAgZnJlc2hfcG9zIG5vdF9iZXN0IChjb25jYXQgc29sIGJlc3QpIHRvX2JlYXRfYWZ0ZXIpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPSBbIEZyZXNoIChsYWJlbCBpKSBdIGluXG4gICAgICAgICgqMiopXG4gICAgICAgIGxldCBnIHggPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiBGb3JtZXIgeFxuICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IExpc3Quc29ydCAocXVpY2tfY29tcGFyZSBnKSBzaWJibGluZzEgaW5cbiAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMSBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgKG1hcCwgZnJlc2hfcG9zLCBsaXN0LCB0b19iZWF0KSAtPlxuICAgICAgICAgICgqMyopXG4gICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAoKjQqKVxuICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgKCo1KilcbiAgICAgICAgICAgIGxldCBnIHggPVxuICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB4IG1hcCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc2liYmxpbmcyID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMiBpblxuICAgICAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMiBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAgIChtYXRjaCBwb3AgWyBTdG9wIF0gdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgICAgIFNvbWUgKGxpc3QsIG1hcCwgZnJlc2hfcG9zLCB0b19iZWF0KSkpXG4gICAgICAgICAgICAoKjYqKVxuICAgICAgICAgICAgKCo1KikpXG4gICAgICAgICAgKCo0KikpXG4gICAgICAgICgqMyopXG4gICAgICAgICgqMiopKVxuICAgICgqMSopXG4gICAgKCowKilcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID1cbiAgICBtYXRjaCB2aXNpdCBncmFwaC5yb290IGFzc28gMCBOb25lIHdpdGhcbiAgICB8IFNvbWUgKHJlcCwgXywgXywgXykgLT4gZXJyb3IsIHJlcFxuICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubW9kdWxlIExpc3RUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0YWJsZSA9XG4gICAgKHByZWhhc2hcbiAgICAqIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBsaXN0KVxuICAgIGxpc3RcblxuICBsZXQgaW5pdF90YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID0gZXJyb3IsIGxvZ19pbmZvLCBbXVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChwcmVoYXNoLCBbIGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgaW5mbyBdKSA6OiB0YWJsZVxuXG4gIGxldCBzb3J0X291dGVyID1cbiAgICBsZXQgY29tcGFyZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZV9wcmVoYXNoIGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IHNvcnRfaW5uZXIgPVxuICAgIGxldCBjb21wYXJlIChfLCBfLCBhLCBfLCBfKSAoXywgXywgYiwgXywgXykgPSBjb21wYXJlX2Nhbm9uaWNfb3B0IGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IGhhc2hfaW5uZXIgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjbXAgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X2lubmVyIGxpc3QgaW5cbiAgICBsZXQgcmVjIHZpc2l0IGVsZW1lbnRzX3RvX3N0b3JlIHN0b3JlZF9lbGVtZW50cyBsYXN0X2VsZW1lbnRcbiAgICAgICAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIGVsZW1lbnRzX3RvX3N0b3JlLCBsYXN0X2VsZW1lbnQgd2l0aFxuICAgICAgfCAoXywgXywgdCwgXywgbGlzdCkgOjogcSwgU29tZSAoXywgXywgb2xkLCBfKSB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKGdyaWQsIGdyYXBoLCB0LCBldmVudCwgbGlzdCkgOjogcSwgU29tZSAoZ3JpZCcsIGdyYXBoJywgYSwgZXZlbnQnKSAtPlxuICAgICAgICB2aXNpdCBxXG4gICAgICAgICAgKChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcsIExpc3Quc29ydCBjbXAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgICAgIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICAgICAgICAoU29tZSAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50KSlcbiAgICAgICAgICAoKkxpc3QucmV2KikgbGlzdFxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBOb25lIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgKGdyaWQsIGdyYXBoLCBhLCBldmVudCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoKGdyaWQsIGdyYXBoLCBhLCBldmVudCwgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBlcnJvciwgbGlzdFxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X291dGVyIChMaXN0LnJldiBsaXN0KSBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8ICgodCA6IHByZWhhc2gpLCBsaXN0KSA6OiBxLCBTb21lIG9sZCB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIFNvbWUgYSAtPlxuICAgICAgICB2aXNpdCBxICgoYSwgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKSA6OiBzdG9yZWRfZWxlbWVudHMpIChTb21lIHQpIGxpc3RcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIE5vbmUgLT4gdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgdCkgKExpc3QucmV2IGxpc3QpXG4gICAgICB8IFtdLCBOb25lIC0+IFtdXG4gICAgICB8IFtdLCBTb21lIGEgLT4gTGlzdC5yZXYgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICBpblxuICAgIGxldCBsaXN0ID0gdmlzaXQgbGlzdCBbXSBOb25lIFtdIGluXG4gICAgbGV0IHJlYyB2aXNpdDIgbCBsb2dfaW5mbyBlcnJvciBhY2MgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYWNjXG4gICAgICB8ICh0LCBsaXN0KSA6OiBxIC0+XG4gICAgICAgIGlmIExpc3QubGVuZ3RoIGxpc3QgPSAxIHRoZW5cbiAgICAgICAgICB2aXNpdDIgcSBsb2dfaW5mbyBlcnJvciAoKHQsIGxpc3QpIDo6IGFjYylcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCcgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0JykgKGdyaWQsIGdyYXBoLCBkYWcsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZGFnJyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkYWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgICAgICAgICAgfCBTb21lIGRhZyAtPiBlcnJvciwgbG9nX2luZm8sIGRhZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgZGFnJywgYiwgYykgOjogbGlzdCcpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBsaXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxpc3QnID1cbiAgICAgICAgICAgIGhhc2hfaW5uZXIgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3JcbiAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgbGlzdCdcbiAgICAgICAgICBpblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCcpIDo6IGFjYylcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9IHZpc2l0MiBsaXN0IGxvZ19pbmZvIGVycm9yIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByb2plY3RfdHVwbGUgKGdyaWQsIF8sIF8sIHRyYWNlLCBsaXN0KSA9IExpc3QuaGQgbGlzdCwgdHJhY2UsIGdyaWQsIGxpc3RcblxuICBsZXQgc29ydF9saXN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGZsYXRfbGlzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Rfb3V0IChfcHJlaGFzaCwgbGlzdCkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBsaXN0X291dCB0dXBsZSAtPiBwcm9qZWN0X3R1cGxlIHR1cGxlIDo6IGxpc3Rfb3V0KVxuICAgICAgICAgICAgbGlzdF9vdXQgbGlzdClcbiAgICAgICAgW10gbGlzdFxuICAgIGluXG4gICAgbGV0IGNvbXBhcmVfcGFpciAoYSwgXywgXywgXykgKGMsIF8sIF8sIF8pID1cbiAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGEgY1xuICAgIGluXG4gICAgbGV0IGZsYXRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX3BhaXIgZmxhdF9saXN0IGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gKF9hLCBiLCBjLCBkKSAtPiBiLCBjLCBkKSAoTGlzdC5yZXYgZmxhdF9saXN0KSApXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBuIGwgLT4gbiArIExpc3QubGVuZ3RoIChzbmQgbCkpIDAgbGlzdFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIChlcnJvciA6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgZ1xuICAgICAgbGlzdCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIChfLCBsKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYSkgKF8sIF8sIF8sIHgsIHkpIC0+XG4gICAgICAgICAgICBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSBhKVxuICAgICAgICAgIGEgbClcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGEpIChMaXN0LnJldiBsaXN0KVxuZW5kXG5cbm1vZHVsZSBCdWNrZXRUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBzdG9yeV9pZCA9IGludFxuXG4gIGxldCBzdWNjX3N0b3J5X2lkID0gc3VjY1xuXG4gIHR5cGUgcHJlaGFzaF9lbHQgPSBub2RlICogaW50XG5cbiAgbW9kdWxlIEtleVMgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0ga2V5XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQcmVIYXNoUyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVoYXNoX2VsdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgS2V5TWFwID0gS2V5Uy5NYXBcbiAgbW9kdWxlIFByZUhhc2hNYXAgPSBQcmVIYXNoUy5NYXBcblxuICB0eXBlIGlubmVyX3RyZWUgPVxuICAgIHwgSW5uZXJfbm9kZSBvZiAoaW5uZXJfdHJlZSBLZXlNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IElubmVyX2xlYXZlIG9mIChrZXkgbGlzdCAqIHN0b3J5X2lkKVxuXG4gIHR5cGUgb3V0ZXJfdHJlZSA9XG4gICAgfCBFbXB0eVxuICAgIHwgT3V0ZXJfbm9kZSBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBzdG9yeV9pZCBvcHRpb24pXG4gICAgfCBPdXRlcl9sZWF2ZSBvZiAocHJlaGFzaF9lbHQgbGlzdCAqIHN0b3J5X2lkKVxuICAgIHwgVG9faW5uZXIgb2YgKG91dGVyX3RyZWUgUHJlSGFzaE1hcC50ICogaW5uZXJfdHJlZSlcblxuICB0eXBlIHRhYmxlID0ge1xuICAgIHRyZWU6IG91dGVyX3RyZWU7XG4gICAgYXJyYXk6XG4gICAgICAoQ2F1c2FsLmdyaWRcbiAgICAgICogZ3JhcGhcbiAgICAgICogY2Fub25pY2FsX2Zvcm0gb3B0aW9uXG4gICAgICAqIFRyYWNlLnRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYudDtcbiAgICBmcmVzaF9pZDogc3RvcnlfaWQ7XG4gIH1cblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXJzIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmNyZWF0ZVxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIDBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0cmVlID0gRW1wdHk7IGFycmF5OyBmcmVzaF9pZCA9IDAgfVxuXG4gIGxldCBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGFzc29jID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgaWQgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgYSA9XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJ1bmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29uc2lzdGVudCBzdG9yeSBpZFwiKSAodGFibGUsIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYVxuICAgIHwgU29tZSAoXywgXywgU29tZSBjYW5ub25pYywgXywgXykgLT4gZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljKVxuICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWMgPVxuICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgKGdyaWQsIGdyYXBoLCBTb21lIGNhbm5vbmljLCB0cmFjZSwgaW5mbylcbiAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCB0YWJsZSA9IHsgdGFibGUgd2l0aCBhcnJheSA9IGFycmF5JyB9IGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIHN0b3J5X2luZm8gdGFibGVcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBsZXQgYXNzb2MgPSBncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8gaW5cbiAgICBsZXQgYWRkX3N0b3J5IGVycm9yIHggdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIHRhYmxlLmZyZXNoX2lkIHggdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZlxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHByaW50X2dyYXBoXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHRhYmxlLmZyZXNoX2lkIHN0b3J5X2luZm8gZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIHRhYmxlLmZyZXNoX2lkLFxuICAgICAgICB7IHRhYmxlIHdpdGggYXJyYXk7IGZyZXNoX2lkID0gc3VjY19zdG9yeV9pZCB0YWJsZS5mcmVzaF9pZCB9IClcbiAgICBpblxuICAgIGxldCBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkIHRhYmxlID1cbiAgICAgIGxldCBlcnJvciwgYXNzb19vcHQgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5nZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGFzc29fb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBzdG9yeSBpZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIHN0b3J5IGlkXCIpIHRhYmxlXG4gICAgICB8IFNvbWUgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgaW5mbykgLT5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgICAgICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgICAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeSA9IFN0b3J5X2pzb24uU2FtZV9hcyBpZDtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlciAoU3RvcnlfanNvbi5TdG9yeSByZXN1bHQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBpZFxuICAgICAgICAgICAgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgc3RvcnlfaW5mbyBAIGluZm8pXG4gICAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyB0YWJsZSB3aXRoIGFycmF5IH1cbiAgICBpblxuICAgIGxldCB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fub25pY19mb3JtIGFzc29jID1cbiAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgIHwgZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvIC0+XG4gICAgICAgIGVycm9yLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fub25pY19mb3JtLCB0cmFjZSwgaW5mbylcbiAgICAgIHwgXywgXywgU29tZSBfLCBfLCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHRoaXMgc3Rvcnkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiKVxuICAgICAgICAgIGFzc29jXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fub25pY19mb3JtIGNhbm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgID1cbiAgICAgIG1hdGNoIGNhbm9uaWNfZm9ybSwgY2Fub25pY19mb3JtJyB3aXRoXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyB3aGVuIHQgPSB0JyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBxIHEnIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgdHJlZSBLZXlNYXAuZW1wdHksIE5vbmUpXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgKCBLZXlNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoSW5uZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICBOb25lICkgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHByZWhhc2ggcHJlaGFzaCcgaWQnIHRhYmxlID1cbiAgICAgIG1hdGNoIHByZWhhc2gsIHByZWhhc2gnIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pY19mb3JtJykgPVxuICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAoUHJlSGFzaE1hcC5lbXB0eSwgaW5uZXIpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZClcbiAgICAgICAgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCB0cmVlIFByZUhhc2hNYXAuZW1wdHksIE5vbmUpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBpbm5lcl90cmVlIHdpdGhcbiAgICAgICAgfCBJbm5lcl9ub2RlIChtYXAsIE5vbmUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbm9kZSAobWFwLCBTb21lIGlkKVxuICAgICAgICB8IElubmVyX25vZGUgKF8sIFNvbWUgaWQnKSB8IElubmVyX2xlYXZlIChbXSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAodCcgOjogcScsIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkKSApKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBLZXlNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCAoSW5uZXJfbGVhdmUgKHEsIGlkKSkgbWFwLCBhc3NvYycpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICAgIHwgU29tZSBpbm5lcl90cmVlJyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBpbm5lcl90cmVlJycgPVxuICAgICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBxIGlubmVyX3RyZWUnIHRhYmxlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgaW5uZXJfdHJlZScnID09IGlubmVyX3RyZWUnIHRoZW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICB0YWJsZScsXG4gICAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IGlubmVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAobCcsIGlkJykgLT5cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgYXNzb2MgdGFibGUpXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBvdXRlcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBTb21lIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGdyYXBoID1cbiAgICAgICAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIE5vbmUsIF8sIF8gLT4gZXJyb3IsIGdyYXBoXG4gICAgICAgICAgICB8IF8sIGdyYXBoLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyBpbiB0aGUgb3V0ZXIgdHJlZSBzaG91bGQgbm90IFxcXG4gICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiXG4gICAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGUgeWV0XCIpXG4gICAgICAgICAgICAgICAgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgICBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkJyB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fubm9uaWNfZm9ybSBjYW5ub25pY19mb3JtJyBpZCcgYXNzb2NcbiAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChfcSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIG91dGVyX3RyZWVcbiAgICAgICAgfCBUb19pbm5lciAobWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdWZmaXggPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIHN1ZmZpeCBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggaW5uZXIgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKSlcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBQcmVIYXNoTWFwLmZpbmRfb3B0aW9uIHQgbWFwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICAgbGV0IGlubmVyX3RyZWUgPVxuICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIG91dGVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIG91dGVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgb3V0ZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBvdXRlcl90cmVlJycgPT0gb3V0ZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IG91dGVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAodCcgOjogcScsIGlkJykgd2hlbiBub3QgKHQgPSB0JykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgICBOb25lICkgKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChsJywgaWQnKSAtPiBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgdGFibGVcbiAgICAgICAgfCBUb19pbm5lciAoX21hcCwgaW5uZXIpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBUb19pbm5lclxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIGlubmVyICkgKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBzdG9yeV9pbmZvKVxuICAgICAgICBzdG9yeV9pbmZvIHByZWhhc2ggdGFibGUudHJlZSB0YWJsZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRhYmxlIHdpdGggdHJlZSB9XG5cbiAgKCogbGV0IHJlYyBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBpbm5lcl90cmVlID1cbiAgICAgbWF0Y2hcbiAgICAgaW5uZXJfdHJlZVxuICAgICB3aXRoXG4gICAgIHwgSW5uZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgbGV0ICgpID1cbiAgICAgbWF0Y2hcbiAgICAgYXNzb2MnXG4gICAgIHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgIHwgU29tZSAoaWQpICAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgIGluXG4gICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgIEtleU1hcC5pdGVyXG4gICAgIChmdW4gZWx0IG1hcCAtPlxuICAgICBwcmludF9lbHQgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgZWx0O1xuICAgICBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICBtYXBcbiAgICAgfCBJbm5lcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgbGV0IF8gPSBwcmludF9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsIGluXG4gICAgICgpKilcblxuICAoKlxubGV0IHJlYyBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBvdXRlcl90cmVlID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG91dGVyX3RyZWVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNFTVBUWVxcblwiIHByZWZpeFxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCxhc3NvYycpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgIGFzc29jJ1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVW5maWxsZWQgTm9kZVxcblwiIHByZWZpeFxuICAgICAgICB8IFNvbWUgKGlkKSAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0ZpbGxlZCBOb2RlOiAlaVxcblwiIHByZWZpeCBpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IF8gPSBwcmludF9wcmVoYXNoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgICAgKClcbiAgICAgICAgfCBUb19pbm5lciAobWFwLGlubmVyKSAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVE8gSU5ORVIgVFJFRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gUHJlSGFzaE1hcC5pdGVyXG4gICAgICAgIChmdW4gKChfLGIpLGkpICBtYXAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlcyVzOiVpLT5cXG5cIiBwcmVmaXggYiBpIDtcbiAgICAgICAgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgICAgbWFwXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBpbm5lciAqKVxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIF8gbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXInIGVycm9yIGkgKGEsIGIsIGMsIGQsIGUpIGFycmF5IC0+XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0IHBhcmFtZXRlcicgZXJyb3IgaVxuICAgICAgICAgICAgKGEsIGIsIGMsIGQsIExpc3Quc29ydCBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBlKVxuICAgICAgICAgICAgYXJyYXkpXG4gICAgICAgIHRhYmxlLmFycmF5IHRhYmxlLmFycmF5XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCBhcnJheSB9XG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBsID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gX3BhcmFtZXRlciBlcnJvciBfIChhLCBfYiwgX2MsIGQsIGUpIGwgLT4gZXJyb3IsIChkLCBhLCBlKSA6OiBsKVxuICAgICAgICB0YWJsZS5hcnJheSBbXVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgdGFibGUgPSB0YWJsZS5mcmVzaF9pZFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGYgdGFibGUgYSA9XG4gICAgbGV0IGEsIChiLCBjKSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgXyAoXywgXywgXywgZCwgZSkgKGxvZ19pbmZvLCBhKSAtPlxuICAgICAgICAgIGxldCBhLCBiLCBjID1cbiAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXInIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBkIGUgYVxuICAgICAgICAgIGluXG4gICAgICAgICAgYSwgKGIsIGMpKVxuICAgICAgICB0YWJsZS5hcnJheSAobG9nX2luZm8sIGEpXG4gICAgaW5cbiAgICBhLCBiLCBjXG5lbmRcblxubW9kdWxlIHR5cGUgU2VsZWN0b3IgPSBzaWdcbiAgdmFsIGNob29zZV9mc3QgOiBILnBhcmFtZXRlciAtPiBib29sXG5lbmRcblxubW9kdWxlIENob2ljZSAoUyA6IFNlbGVjdG9yKSAoQSA6IFN0b3J5VGFibGUpIChCIDogU3RvcnlUYWJsZSkgOiBTdG9yeVRhYmxlID1cbnN0cnVjdFxuICB0eXBlIHRhYmxlID0gQSBvZiBBLnRhYmxlIHwgQiBvZiBCLnRhYmxlXG5cbiAgbGV0IGluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGlmIFMuY2hvb3NlX2ZzdCBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuICAgIClcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICB8IEIgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuXG4gIGxldCBzb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLmNvdW50X3N0b3JpZXMgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5jb3VudF9zdG9yaWVzIHRhYmxlXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGFcbiAgICB8IEIgdGFibGUgLT4gQi5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuZW5kXG5cbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gTGlzdFRhYmxlKilcbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gQnVja2V0VGFibGUqKVxubW9kdWxlIFN0b3J5VGFibGUgPVxuICBDaG9pY2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgY2hvb3NlX2ZzdCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fd2VfdXNlX2J1Y2tldF9zb3J0XG4gICAgZW5kKVxuICAgIChCdWNrZXRUYWJsZSlcbiAgICAoTGlzdFRhYmxlKVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6NTM6MTQgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb25cbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgRCA9IERhZy5TdG9yeVRhYmxlXG5tb2R1bGUgUyA9IEdlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLlNvbHZlclxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbnR5cGUgZXJyb3JfbG9nID0gRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG50eXBlIHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkgucGFyYW1ldGVyXG50eXBlIGthcHBhX2hhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXJcbnR5cGUgcHJvZmlsaW5nX2luZm8gPSBQLmxvZ19pbmZvXG50eXBlIHNoYWxsX3dlID0gcGFyYW1ldGVyIC0+IGJvb2xcbnR5cGUgc3RlcCA9IFRyYWNlLnN0ZXBcbnR5cGUgc3RlcF93aXRoX3NpZGVfZWZmZWN0cyA9IHN0ZXAgKiBTLlBILkIuUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxudHlwZSBzdGVwX2lkID0gUy5QSC5CLlBCLnN0ZXBfaWRcblxudHlwZSB0cmFjZSA9IHtcbiAgY29tcHJlc3NlZF90cmFjZTogc3RlcF93aXRoX3NpZGVfZWZmZWN0cyBsaXN0IG9wdGlvbjtcbiAgcHJldHJhY2U6IHN0ZXAgbGlzdDtcbiAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5OiBib29sO1xufVxuXG50eXBlIHRyYWNlX3J1bnRpbWVfaW5mbyA9IHByb2ZpbGluZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50XG5cbnR5cGUgJ2Egd2l0aF9oYW5kbGVycyA9XG4gIHBhcmFtZXRlciAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246c2hhbGxfd2UgLT5cbiAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAga2FwcGFfaGFuZGxlciAtPlxuICBwcm9maWxpbmdfaW5mbyAtPlxuICBlcnJvcl9sb2cgLT5cbiAgJ2FcblxudHlwZSAnYSB6ZXJvYXJ5ID0gKGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2EpIHdpdGhfaGFuZGxlcnNcbnR5cGUgKCdhLCAnYikgdW5hcnkgPSAoJ2EgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYykgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdkKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdlKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHF1aW50ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2YpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZiwgJ2cpIHNleHRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZylcbiAgd2l0aF9oYW5kbGVyc1xuXG5sZXQgKHdlX3NoYWxsIDogc2hhbGxfd2UpID0gZnVuIF8gLT4gdHJ1ZVxubGV0ICh3ZV9zaGFsbF9ub3QgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiBmYWxzZVxubGV0IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSA9IHRyYWNlLnByZXRyYWNlXG5sZXQgc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSA9IExpc3QubGVuZ3RoIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5sZXQgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlID0gdHJhY2Uud2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5XG5sZXQgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eSA9IHggfVxubGV0IF9zZXRfcHJldHJhY2UgdHJhY2UgeCA9IHsgdHJhY2Ugd2l0aCBwcmV0cmFjZSA9IHggfVxubGV0IF9zZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIGNvbXByZXNzZWRfdHJhY2UgPSB4IH1cblxubGV0IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlID1cbiAgbWF0Y2ggdHJhY2UuY29tcHJlc3NlZF90cmFjZSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCBbXSkgKExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpKVxuXG5sZXQgaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSA9IHRyYWNlLmNvbXByZXNzZWRfdHJhY2UgIT0gTm9uZVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgd2l0aF9hbWJpZ3VpdHkgcHJldHJhY2UgPVxuICB7XG4gICAgcHJldHJhY2U7XG4gICAgY29tcHJlc3NlZF90cmFjZSA9IE5vbmU7XG4gICAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gd2l0aF9hbWJpZ3VpdHk7XG4gIH1cblxubGV0IHRyYWNlX29mX3ByZXRyYWNlID0gdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgdHJ1ZVxuXG5sZXQgYnVpbGRfY29tcHJlc3NlZF90cmFjZSB4IHkgPVxuICB7IGNvbXByZXNzZWRfdHJhY2UgPSBTb21lIHk7IHByZXRyYWNlID0geDsgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gZmFsc2UgfVxuXG4oKmxldCBnZXRfbG9nX3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcFxuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGVcbiAgbGV0IGdldF9sb2dnZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIqKVxubGV0IGdldF9pZF9vZl9ldmVudCA9IFMuUEguQi5QQi5DSS5Qby5LLmdldF9pZF9vZl9yZWZpbmVkX3N0ZXBcbmxldCBnZXRfc2ltdWxhdGlvbl90aW1lX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X3RpbWVfb2ZfcmVmaW5lZF9zdGVwXG5cbmxldCBfZXh0ZW5kX3RyYWNlX3dpdGhfZHVtbXlfc2lkZV9lZmZlY3RzIGwgPVxuICBMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIFtdKSAoTGlzdC5yZXYgbClcblxubGV0IHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBfaGFuZGxlciA9XG4gIExvZ2dlcnMuZnByaW50ZlxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgXCJAWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSA/ZW52Ok5vbmUpKVxuXG5sZXQgcHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgdHJhY2UgPVxuICBwcmludF9wcmV0cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKVxuXG5sZXQgdHJhbnNmb3JtX3RyYWNlX2dlbiBmIGxvZ19tZXNzYWdlIGRlYnVnX21lc3NhZ2UgcHJvZmlsaW5nX2V2ZW50IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbCkgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbCkga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIGlmIHNoYWxsX3dlX2NvbXB1dGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgcHJvZmlsaW5nX2V2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgYm9vbCA9XG4gICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcCBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgICBtYXRjaCBsb2dfbWVzc2FnZSB3aXRoXG4gICAgICAgIHwgU29tZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIiVzJXNcIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycykpXG4gICAgICAgICAgICAgIGxvZ19tZXNzYWdlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICkgZWxzZVxuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IHByZXRyYWNlID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHByZXRyYWNlJywgbikgPVxuICAgICAgZiBwYXJhbWV0ZXJzIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcHJldHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZScgPSB0cmFjZV9vZl9wcmV0cmFjZSBwcmV0cmFjZScgaW5cbiAgICBsZXQgdHJhY2UgPVxuICAgICAgaWYgdHJhY2UgPT0gdHJhY2UnIHRoZW5cbiAgICAgICAgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZScgKG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIGlmIHByaW50X2lmX3plcm8gcGFyYW1ldGVycyB0aGVuXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIjogbm90aGluZyBoYXMgY2hhbmdlZCBALlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJALlwiXG4gICAgICAgIGVsc2UgaWYgbiA+IDAgdGhlblxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6IC0laSBldmVudHMgQC5cIiBuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIFwiOiArJWkgZXZlbnRzIEAuXCIgKC1uKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXJzKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBkZWJ1Z19tZXNzYWdlXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X3RyYWNlIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciB0cmFjZVxuICAgICAgKVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG50eXBlIGtpbmQgPSAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyopXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyB8IE5ldXRyYWxcblxubGV0IGhhbmRsZV9hbWJpZ3VpdGllcyBraW5kIGIgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgKCogIHwgU29sdmVfYW1iaWd1aXRpZXMgLT4gZmFsc2UqKVxuICB8IE5ldXRyYWwgLT4gYlxuICB8IE1heV9hZGRfYW1iaWd1aXRpZXMgLT4gdHJ1ZVxuXG50eXBlIGFtYmlxdWl0aWVzX3ByZWNvbmRpdGlvbiA9XG4gIHwgRG9fbm90X2NhcmVcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgKCp8IEJldHRlcl93aGVuX25vX2FtYmlndWl0eSopXG5cbmxldCBtdXN0X3dlX3NvbHZlX2FtYmlndWl0eSBfcGFyYW1ldGVycyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRG9fbm90X2NhcmUgLT4gZmFsc2VcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgLT4gdHJ1ZVxuKCogIHwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5IC0+IFMuUEguQi5QQi5DSS5Qby5LLkguYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzKilcblxubGV0IG1vbmFkaWNfbGlmdCBmIF8gXyBsb2dfaW5mbyBlcnJvciB0ID1cbiAgbGV0IHQnID0gZiB0IGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHQnLCBMaXN0Lmxlbmd0aCB0IC0gTGlzdC5sZW5ndGggdCcpXG5cbmxldCBfZHVtbXlfcHJvZmlsaW5nIF8gcCA9IHBcblxubGV0IGRpc2FtYmlndWF0ZSA9XG4gIHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmRpc2FtYmlndWF0ZSlcbiAgICAoU29tZSBcIlxcdC0gYWxwaGEtY29udmVyc2lvblwiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW5hbWVzIGFnZW50czpcXG5cIlxuICAgIFN0b3J5UHJvZmlsaW5nLkFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuXG5sZXQgbWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXJzID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbF9ub3QpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGxfbm90KSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlJyA9XG4gICAgICBkaXNhbWJpZ3VhdGUgcGFyYW1ldGVyc1xuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTooZnVuIHBhcmFtZXRlcnMgLT5cbiAgICAgICAgICBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgJiYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzKVxuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8ga2FwcGFfaGFuZGxlclxuICAgICAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIHByb2ZpbGluZ19pbmZvLFxuICAgICAgaWYgdHJhY2UnID09IHRyYWNlIHRoZW5cbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyBmYWxzZSApXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyBmIHJlcXVpcmVtZW50IGVmZmVjdCBwYXJhbWV0ZXJzXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlID1cbiAgICAgIGlmIG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IHBhcmFtZXRlcnMgcmVxdWlyZW1lbnQgdGhlblxuICAgICAgICBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUga2FwcGFfaGFuZGxlclxuICAgICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIChmXG4gICAgICAgIDogUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXIgLT5cbiAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICAgICAgICAgID9wcmludF9pZl96ZXJvOnNoYWxsX3dlIC0+XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5oYW5kbGVyIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICAgICAgIHRyYWNlIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqIHRyYWNlKVxuICAgICAgICBwYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBsZXQgdHJhY2UgPSBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIChoYW5kbGVfYW1iaWd1aXRpZXMgZWZmZWN0IHRydWUpIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbmxldCBzcGxpdF9pbml0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLnNwbGl0X2luaXQpXG4gICAgICAgKFNvbWUgXCJcXHQtIHNwbGl0dGluZyBpbml0aWFsIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHNwbGl0IGluaXRpYWwgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuRGVjb21wb3NlX2luaXRpYWxfc3RhdGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgY3V0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW4gUy5QSC5CLlBCLkNJLlBvLmN1dFxuICAgICAgIChTb21lIFwiXFx0LSBjdXR0aW5nIGNvbmN1cnJlbnQgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBjb25jdXJyZW50IGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBOZXV0cmFsXG5cbnR5cGUgb25fdGhlX2ZseV9jdXRfc3RhdGUgPSBTLlBILkIuUEIuQ0kuUG8ub25fdGhlX2ZseV9zdGF0ZVxuXG5sZXQgb25fdGhlX2ZseV9jdXRfaW5pdCA9IFMuUEguQi5QQi5DSS5Qby5pbml0X2N1dFxubGV0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uY3V0X3N0ZXBcblxubGV0IG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplIGN1dF9zdGF0ZSA9XG4gIGZzdCAoUy5QSC5CLlBCLkNJLlBvLmZpbmFsaXplX2N1dCBjdXRfc3RhdGUpXG5cbmxldCBjdXRfcmV2X3RyYWNlIHJldl90cmFjZSA9XG4gIG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplXG4gICAgKExpc3QuZm9sZF9sZWZ0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgb25fdGhlX2ZseV9jdXRfaW5pdCByZXZfdHJhY2UpXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfZWlkIHRyYWNlID1cbiAgKCBlcnJvcixcbiAgICBsb2dfaW5mbyxcbiAgICBsZXQgcmVjIGF1eCBsIHNjb3JlIG91dHB1dCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgb3V0cHV0LCBzY29yZVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgdCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgc2NvcmUgKHQgOjogb3V0cHV0KVxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBpZiBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCA+PSBsYXN0X2VpZCB0aGVuXG4gICAgICAgICAgICAgICggTGlzdC5yZXYgKExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdCkgb3V0cHV0IGwpLFxuICAgICAgICAgICAgICAgIHNjb3JlIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IHEgKHN1Y2Mgc2NvcmUpIG91dHB1dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgaW5cbiAgICBhdXggdHJhY2UgMCBbXSApXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgLT5cbiAgICAgICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbylcbiAgICAgICAoU29tZSBcIlxcdC0gUmVtb3ZpbmcgYWxyZWFkeSB2aXNpdGVkIG9ic2VydmFibGUgaGl0c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgc2VlbiBvYnNlcnZhYmxlIGhpdHNcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWwgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgbGFzdF9pbmZvIHRyYWNlID1cbiAgbWF0Y2ggbGFzdF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdHJhY2VcbiAgfCBTb21lIGwgLT5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHJlc3VsdCB4IC0+XG4gICAgICAgICAgbGV0IGxhc3RfZWlkID0gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkIHggaW5cbiAgICAgICAgICBtYXggcmVzdWx0IGxhc3RfZWlkKVxuICAgICAgICAwIGxcbiAgICBpblxuICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3QgdHJhY2VcblxubGV0IGZpbGxfc2lwaG9uID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmZpbGxfc2lwaG9uKVxuICAgICAgIChTb21lIFwiXFx0LSBkZXRlY3Rpbmcgc2lwaG9uc1wiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyBkZXRlY3RlZCBzaXBob25zOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuU2lwaG9uX2RldGVjdGlvbilcbiAgICBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgTWF5X2FkZF9hbWJpZ3VpdGllc1xuXG5sZXQgKHJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgOiAodHJhY2UsIHRyYWNlKSB1bmFyeSkgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnRcbiAgICAgICAgICAoTGlzdF91dGlsLnJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIFRyYWNlLnN0ZXBfaXNfb2JzKSlcbiAgICAgICAoU29tZSBcIlxcdC0gcmVtb3ZpbmcgZXZlbnRzIG9jY3VycmluZyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCB0aGUgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxubGV0IHJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBwc2V1ZG8gaW52ZXJzZSBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHBzZXVkbyBpbnZlcnNlIGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBzZXVkb19pbnZlcnNlX2RlbGV0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxudHlwZSBjZmxvd19ncmlkID0gQ2F1c2FsLmdyaWRcbnR5cGUgZW5yaWNoZWRfY2Zsb3dfZ3JpZCA9IENhdXNhbC5lbnJpY2hlZF9ncmlkXG50eXBlIG11c2ljYWxfZ3JpZCA9IFMuUEguQi5ibGFja2JvYXJkXG50eXBlIHN0b3J5X3RhYmxlID0geyBzdG9yeV9jb3VudGVyOiBpbnQ7IHN0b3J5X2xpc3Q6IEQudGFibGUgfVxuXG5sZXQgY291bnRfc3RvcmllcyBzdG9yeV90YWJsZSA9IEQuY291bnRfc3RvcmllcyBzdG9yeV90YWJsZS5zdG9yeV9saXN0XG5cbnR5cGUgb2JzZXJ2YWJsZV9oaXQgPSB7XG4gIGxpc3Rfb2ZfYWN0aW9uczogUy5QSC51cGRhdGVfb3JkZXIgbGlzdDtcbiAgbGlzdF9vZl9ldmVudHM6IHN0ZXBfaWQgbGlzdDtcbiAgcnVudGltZV9pbmZvOiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbjtcbn1cblxubGV0IGdldF9ldmVudF9saXN0X2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEubGlzdF9vZl9ldmVudHNcbmxldCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEucnVudGltZV9pbmZvXG5sZXQgX2dldF9saXN0X29yZGVyIGEgPSBhLmxpc3Rfb2ZfYWN0aW9uc1xubGV0IGVycm9yX2luaXQgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgZCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGwgPSBTLlBILmZvcmNlZF9ldmVudHMgYSBiIHByb2ZpbGluZ19pbmZvIGMgZCBpblxuICAoIGVycm9yLFxuICAgIHByb2ZpbGluZ19pbmZvLFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgeyBsaXN0X29mX2FjdGlvbnMgPSBhOyBsaXN0X29mX2V2ZW50cyA9IGI7IHJ1bnRpbWVfaW5mbyA9IGMgfSlcbiAgICAgIChMaXN0LnJldiBsKSApXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcHJvZmlsaW5nX2luZm9cbiAgICBjIHN0cmluZyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFsgKGEsIGIsIGMpIF0gLT5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9IClcbiAgfCBbXSAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgbm8gc3RvcnlcIilcbiAgfCBfIDo6IF8gLT4gZmFpbHdpdGggKHN0cmluZyBeIFwiIHNldmVyYWwgc3Rvcmllc1wiKVxuXG5sZXQgdHJhbnNsYXRlIHAgaCBwcm9maWxpbmdfaW5mbyBlIGIgbGlzdCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChsaXN0LCBfKSA9XG4gICAgUy50cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0XG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2Vfb2ZfcHJldHJhY2UgbGlzdFxuXG5sZXQgY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlX2hpdCBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHN0cmluZyBibGFja2JvYXJkIChlbnJpY2hlZF9ncmlkIDogZW5yaWNoZWRfY2Zsb3dfZ3JpZClcbiAgICBvYnNlcnZhYmxlX2lkID1cbiAgbGV0IGVpZCA9XG4gICAgbWF0Y2ggZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkIHdpdGhcbiAgICB8IFsgYSBdIC0+IGFcbiAgICB8IFtdIC0+IGZhaWx3aXRoIChcIm5vIG9ic2VydmFibGUgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJzZXZlcmFsIG9ic2VydmFibGVzIGluIHRoYXQgc3RvcnlcIiBeIHN0cmluZylcbiAgaW5cbiAgbGV0IGV2ZW50X2lkX2xpc3QgPVxuICAgIEdyYXBoX2Nsb3N1cmUuZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuaW50X29mX3N0ZXBfaWQgKFMuUEguQi5QQi5pbmNfc3RlcF9pZCBlaWQpKVxuICAgICAgZW5yaWNoZWRfZ3JpZC5DYXVzYWwucHJlY19zdGFyXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dCA9XG4gICAgdHJhbnNsYXRlIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IChMaXN0LnJldiBldmVudF9pZF9saXN0KSlcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBvdXRwdXRcblxubGV0IGV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYlxuICAgIChwIDogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbykgYyBkIGUgZiBnID1cbiAgUy5QSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBhIGIgcCBjIGQgZSBmIGdcblxubGV0IHByaW50X211c2ljYWxfZ3JpZCBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcCBjIGQgPVxuICBTLlBILkIucHJpbnRfYmxhY2tib2FyZCBhIGIgcCBjIGRcblxubGV0IGNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGluaXQgPVxuICAgIEQuaW5pdF90YWJsZSBwYXJhbWV0ZXJzIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB7IHN0b3J5X2NvdW50ZXIgPSAxOyBzdG9yeV9saXN0ID0gaW5pdCB9XG5cbmxldCBfZ2V0X3RyYWNlX29mX3N0b3J5IChfLCBfLCBfLCB5LCBfKSA9IHRyYWNlX29mX3ByZXRyYWNlIHlcbmxldCBfZ2V0X2luZm9fb2Zfc3RvcnkgKF8sIF8sIF8sIF8sIHQpID0gdFxuXG5sZXQgdGlja19vcHQgcGFyYW1ldGVyIGJhciA9XG4gIG1hdGNoIGJhciB3aXRoXG4gIHwgTm9uZSAtPiBiYXJcbiAgfCBTb21lIChsb2dnZXIsIGJhcikgLT5cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICBiYXIgKVxuXG5sZXQgY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG5cbmxldCBwcmludF9mYWlscyBsb2dnZXIgcyBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgMCAtPiAoKVxuICB8IDEgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0IDEgJXMgaGFzIGZhaWxlZEAuXCIgc1xuICB8IF8gLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0ICVpICVzcyBoYXZlIGZhaWxlZEAuXCIgbiBzXG5cbmxldCBpbmNfZmFpbHMgYSBhJyBiID1cbiAgaWYgYSA9PSBhJyB0aGVuXG4gICAgc3VjYyBiXG4gIGVsc2VcbiAgICBiXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX2dlbiBsb2dnZXIgcGFyYW1ldGVyID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICAoaGFuZGxlciA6IGthcHBhX2hhbmRsZXIpIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSBlcnJvciBzXG4gICAgKGYgOiAodHJhY2UsIHRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LCAnYSwgJ2EpIHRlcm5hcnkpIGwgYSA9XG4gIGxldCBuX3N0b3JpZXNfaW5wdXQgPSBjb3VudF9zdG9yaWVzIGwgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgU29tZVxuICAgICAgKCBsb2dnZXIsXG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBuX3N0b3JpZXNfaW5wdXQpIClcbiAgaW5cbiAgbGV0IGcgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RvcnkgaW5mb1xuICAgICAgKGssIHByb2dyZXNzX2JhciwgYSwgbl9mYWlscykgPVxuICAgIGxldCBldmVudCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5IGsgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBhJyA9XG4gICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZSB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgICAgICAodHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgZmFsc2Ugc3RvcnkpXG4gICAgICAgIGluZm8gYVxuICAgIGluXG4gICAgbGV0IHByb2dyZXNzX2JhciA9IHRpY2tfb3B0IHBhcmFtZXRlciBwcm9ncmVzc19iYXIgaW5cbiAgICBsZXQgbl9mYWlscyA9IGluY19mYWlscyBhIGEnIG5fZmFpbHMgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHN1Y2MgaywgcHJvZ3Jlc3NfYmFyLCBhJywgbl9mYWlscylcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKF8sIF8sIGEsIG5fZmFpbHMpID1cbiAgICBELmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgZyBsLnN0b3J5X2xpc3RcbiAgICAgICgxLCBwcm9ncmVzc19iYXIsIGEsIDApXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgbG9nZ2VyIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgcyBuX2ZhaWxzIGluXG4gIGVycm9yLCAocHJvZmlsaW5nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlbiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfY291bnRlclxubGV0IGdldF9zdG9yaWVzIHN0b3J5X2xpc3QgPSBzdG9yeV9saXN0LnN0b3J5X2xpc3RcblxubGV0IF9pbmNfY291bnRlciBzdG9yeV9saXN0ID1cbiAgeyBzdG9yeV9saXN0IHdpdGggc3RvcnlfY291bnRlciA9IHN1Y2Mgc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyIH1cblxubGV0IGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBib29sID1cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgZ3JpZCA9IFMuUEguQi5QQi5DSS5Qby5LLmJ1aWxkX2dyaWQgdHJhY2UgYm9vbCBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZFxuXG5sZXQgc3RvcmVfdHJhY2UgKHBhcmFtZXRlciA6IHBhcmFtZXRlcikgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2Ugb2JzX2luZm8gc3RvcnlfdGFibGUgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IHRyYWNlMiA9IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIGluXG4gIGxldCBib29sID0gbm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIGdyaWQgPVxuICAgIGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZTIgYm9vbFxuICBpblxuICBsZXQgY29tcHV0YXRpb25faW5mbyA9IFAuc2V0X2dyaWRfZ2VuZXJhdGlvbiBjb21wdXRhdGlvbl9pbmZvIGluXG4gIGxldCBzdG9yeV9pbmZvID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIChQLmNvcHkgY29tcHV0YXRpb25faW5mbykpXG4gICAgICAoTGlzdC5yZXYgb2JzX2luZm8pXG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfbGlzdCA9XG4gICAgRC5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciBncmlkIHByZXRyYWNlXG4gICAgICBzdG9yeV9pbmZvIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgbGV0IHN0b3J5X3RhYmxlID1cbiAgICB7IHN0b3J5X2xpc3Q7IHN0b3J5X2NvdW50ZXIgPSBzdG9yeV90YWJsZS5zdG9yeV9jb3VudGVyICsgMSB9XG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5TdG9yZV90cmFjZSBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfdGFibGVcblxubGV0IGZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgIEQuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCB7IHN0b3J5X3RhYmxlIHdpdGggc3RvcnlfbGlzdCA9IGxpc3QgfVxuXG5sZXQgY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgWyB0cmFjZSBdXG4gIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgdGhlblxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIGN1dCBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIChTdG9yeV9qc29uLldlYWsgfCBTdG9yeV9qc29uLlN0cm9uZykgLT5cbiAgICBsZXQgZXZlbnQsIHMgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgU3RvcnlQcm9maWxpbmcuV2Vha19jb21wcmVzc2lvbiwgXCJTdGFydCBvbmUgd2VhayBjb21wcmVzc2lvblwiXG4gICAgICB8IF8gLT4gU3RvcnlQcm9maWxpbmcuU3Ryb25nX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSBzdHJvbmcgY29tcHJlc3Npb25cIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIHMpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBldmVudF9saXN0ID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBTLlBILkIuaW1wb3J0ID9oZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICBTLlBILmZvcmNlZF9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGxpc3Rfb3JkZXIgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IChsaXN0X29yZGVyLCBfLCBfKSA6OiBfIC0+IGxpc3Rfb3JkZXJcbiAgICAgIHwgXyAtPiBbXVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgbGlzdCkgPVxuICAgICAgUy5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3Rfb3JkZXJcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIHByZXRyYWNlIC0+XG4gICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSBTLnRyYW5zbGF0ZV9yZXN1bHQgcHJldHJhY2UgaW5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMuUEguQi5QQi5DSS5Qby5LLmNsZWFuX2V2ZW50cyBldmVudF9saXN0IGluXG4gICAgICAgICAgYnVpbGRfY29tcHJlc3NlZF90cmFjZSBldmVudF9saXN0IHByZXRyYWNlKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIk9uZSBjb21wcmVzc2lvbiBoYXMgZmFpbGVkXCIgRXhpdCAoKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBlcnJvciA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICBcIlxcdFxcdCAqIHJlc3VsdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgaWYgUy5QSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIF9sb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgXCJGQUlMXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiRmFpbF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgICAgICBcIlN1Y2NlZWRfdG9fY29tcHJlc3NcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBlcnJvclxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxubGV0IHN0cm9uZ2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlcilcblxubGV0IHdlYWtseV9jb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA9XG4gIGNvbXByZXNzID9oZXVyaXN0aWMgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3dlYWsgcGFyYW1ldGVyKVxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX2dyaWQgdHJhY2UgaGFuZGxlciA9XG4gIGxldCBldmVudF9saXN0ID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCBldmVudF9saXN0XG4gICAgKG5vdCAoaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSkpXG4gICAgaGFuZGxlclxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBrYXBwYV9oYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBTLlBILkIuaW1wb3J0IHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZSBjb25maWcgbG9nZ2VyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICBDYXVzYWwuZW5yaWNoX2dyaWRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgbG9nZ2VyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWcgZ3JpZFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IF9lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoXG5cbmxldCBzb3J0X3N0b3J5X2xpc3QgPSBELnNvcnRfbGlzdFxuXG5sZXQgZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgeCA9XG4gIGxldCBhLCBsb2dfaW5mbywgYiA9XG4gICAgc29ydF9zdG9yeV9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChnZXRfc3RvcmllcyB4KVxuICBpblxuICBhLCBsb2dfaW5mbywgYlxuXG5sZXQgaGFzX29icyB4ID0gTGlzdC5leGlzdHMgVHJhY2Uuc3RlcF9pc19vYnMgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB4KVxuXG5sZXQgZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyID8oZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5EdW1teSkgcGFyYW1ldGVyXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBoYW5kbGVyIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvclxuICAgIChmIDogKCdhLCAnYiwgJ2EpIGJpbmFyeSkgYSBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBzdHJpbmcsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKSA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBcIlwiLCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbilcbiAgICBlbHNlXG4gICAgICAoIFN0b3J5UHJvZmlsaW5nLnN0cmluZ19vZl9zdGVwX2tpbmQgZXZlbnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgICAoU29tZSAoZnVuIF8gLT4gTGlzdC5sZW5ndGggbGlzdCkpXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIClcbiAgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgKGZhbHNlLCAwLCAwLCBuKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgXywgXywgYSwgbl9mYWlsID1cbiAgICBsZXQgcmVjIGF1eCBsaXN0IChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGssIGEsIG5fZmFpbCkgPVxuICAgICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsXG4gICAgICB8IHggOjogdGFpbCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGEnID1cbiAgICAgICAgICAgICAgZiBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGVcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8gaGFuZGxlclxuICAgICAgICAgICAgICAgIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvciBhIHhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYmFyID1cbiAgICAgICAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICBiYXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbl9mYWlsID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlsIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEnLCBuX2ZhaWwpXG4gICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGsgKyAxLCBhLCBuX2ZhaWxcbiAgICAgICAgfCBTb21lIHJlbWFuZW50IC0+IGF1eCB0YWlsIHJlbWFuZW50KVxuICAgIGluXG4gICAgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIHByb2dyZXNzX2JhciwgMSwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgIGlmIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaXNfZHVtbXkgZXZlbnQgdGhlblxuICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgIGVsc2VcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgc3RyaW5nIG5fZmFpbCBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBhXG5cbmxldCBfZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc190aHJvdWdoX2FfZ3JpZF93aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0IGEgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciBncmlkIGYgKGVycm9yLCBsb2dfaW5mbywgYSlcblxubGV0IGZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICA/c2hhbGxfd2VfY29tcHV0ZTpfID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxvZ19zdGVwIGRlYnVnX21vZGUgY291bnRlciBmIHQgYSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uIEAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgIGNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkXG4gIGluXG4gIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICBuX3N0b3JpZXNcbiAgaW5cbiAgKCogZ2VuZXJhdGlvbiBvZiB1bmNvbXByZXNzZWQgc3RvcmllcyAqKVxuICBsZXQgKCkgPVxuICAgIGlmIGRlYnVnX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdFxcdCogY2F1c2FsIGNvbXByZXNzaW9uIFwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpblxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29ic1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhclxuICAgICAgZ3JpZFxuICAgICAgKGZ1biBwYXJhbWV0ZXInIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igb2JzZXJ2YWJsZV9oaXQgY2F1c2FsX3Bhc3RcbiAgICAgICAgICAgKGNvdW50ZXIsIGxpc3QsIGEpIC0+XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIChjb3VudGVyLCBsaXN0LCBhKVxuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfaWQgPSBoZWFkIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID0gUC5yZXNldF9sb2cgbG9nX2luZm8gaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgdHJhbnNsYXRlIHRoZSBsaXN0IG9mIGV2ZW50IGlkcyBpbnRvIGEgdHJhY2UgdGhhbmtzIHRvIHRoZSBibGFja2JvYWQgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIFMuUEguQi5QQi5zdGVwX2lkX29mX2ludFxuICAgICAgICAgICAgICAgICAob2JzZXJ2YWJsZV9oaXQgOjogY2F1c2FsX3Bhc3QpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgY29sbGVjdCBydW4gdGltZSBpbmZvIGFib3V0IHRoZSBvYnNlcnZhYmxlICopXG4gICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgbWF0Y2ggZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgeyBpbmZvIHdpdGggVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY291bnRlciB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIGxvZ19pbmZvIGluZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgKGYgOiAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm8gYVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlcicgZXJyb3JcbiAgICAgICAgICAgICAgKFN0b3J5UHJvZmlsaW5nLlN0b3J5IGNvdW50ZXIpIE5vbmUgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgIChmdW4gYSAtPiBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIgKyAxLCB0YWlsLCBhKSlcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFN0b3Auc3RvcCAoYiwgY291bnRlcikpXG4gICAgICAgICAgICAgIGEgKSlcbiAgICAgIChjb3VudGVyLCBMaXN0LnJldiBsaXN0LCBhKVxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIGEpKSAtPiBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3VjY2VzcyBhKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKGEsIGNvdW50ZXIpKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGEsIGNvdW50ZXIpKVxuICAgIG91dHB1dFxuXG5sZXQgY29weV9sb2dfaW5mbyA9IFAuY29weVxuXG50eXBlIGNhbm9uaWNhbF9mb3JtID0gRGFnLmNhbm9uaWNhbF9mb3JtXG5cbmxldCBjb21wYXJlX2Nhbm9uaWNhbF9mb3JtID0gRGFnLmNvbXBhcmVfY2Fub25pY1xuXG5sZXQgY29tcHV0ZV9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICBEYWcuZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm9uaWMgPVxuICAgIERhZy5jYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgaW5cbiAgKGVycm9yIDogZXJyb3JfbG9nKSwgKGxvZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pLCAoY2Fub25pYyA6IGNhbm9uaWNhbF9mb3JtKVxuXG5tb2R1bGUgRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXAgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudCA9IHN0ZXBcbiAgdHlwZSBlaWQgPSBpbnRcbiAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICBsZXQga2V5X29mX2V2ZW50IGV2ZW50ID1cbiAgICBpZlxuICAgICAgKFRyYWNlLnN0ZXBfaXNfcnVsZSBldmVudCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgZXZlbnQpXG4gICAgICAmJiBub3QgKFRyYWNlLmhhc19jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgIHRoZW5cbiAgICAgIGdldF9pZF9vZl9ldmVudCBldmVudFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgaW5pdCBlaWQgZGVmYXVsdCA9IEFycmF5Lm1ha2UgZWlkIGRlZmF1bHRcblxuICBsZXQgc2V0IHQgZWlkIHZhbHVlID1cbiAgICBsZXQgKCkgPSBBcnJheS5zZXQgdCBlaWQgdmFsdWUgaW5cbiAgICB0XG5cbiAgbGV0IGdldCB0IGVpZCA9IEFycmF5LmdldCB0IGVpZFxuZW5kXG5cbm1vZHVsZSBCbGFja0xpc3QgOiBCbGFja19saXN0LkJsYWNrbGlzdCB3aXRoIHR5cGUgRXZlbnQuZXZlbnQgPSBzdGVwID1cbkJsYWNrX2xpc3QuTWFrZSAoKEV2ZW50IDogQmxhY2tfbGlzdC5FdmVudCB3aXRoIHR5cGUgZXZlbnQgPSBzdGVwKSlcblxudHlwZSBibGFja19saXN0ID0gQmxhY2tMaXN0LnRcblxubGV0IGNyZWF0ZV9ibGFja19saXN0IG4gPSBCbGFja0xpc3QuaW5pdCBuXG5cbmxldCBibGFja19saXN0IF9wYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gX2hhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSBibGFja2xpc3QgPVxuICBsZXQgYmxhY2tsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBibGFja2xpc3QgKGV2ZW50LCBfKSAtPiBCbGFja0xpc3QuYmxhY2tfbGlzdCBldmVudCBibGFja2xpc3QpXG4gICAgICBibGFja2xpc3RcbiAgICAgIChnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSlcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3RcblxubGV0IHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsZXQgbGlzdCwgaW50ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAodHJhY2UsIGludCkgZXZlbnQgLT5cbiAgICAgICAgaWYgQmxhY2tMaXN0LmlzX2JsYWNrX2xpc3RlZCBldmVudCBibGFja2xpc3QgdGhlblxuICAgICAgICAgIHRyYWNlLCBzdWNjIGludFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXZlbnQgOjogdHJhY2UsIGludClcbiAgICAgIChbXSwgMCkgdHJhY2VcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoTGlzdC5yZXYgbGlzdCwgaW50KVxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAoZnVuIF9wYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tsaXN0KVxuICAgICAgIE5vbmUgXCJcIiBTdG9yeVByb2ZpbGluZy5SZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgbGFzdF9laWRfaW5fcHJldHJhY2UgdHJhY2UgPVxuICBsZXQgbCA9IExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpIGluXG4gIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgKG1hdGNoIGdldF9pZF9vZl9ldmVudCBoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggdFxuICAgICAgfCBTb21lIGVpZCAtPiBlaWQpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBwb3BfanNvbiA9IFMuUEguQi5QQi5DSS5Qby5LLkgucG9wX2pzb25cblxubGV0IHByb2ZpbGluZ19zdGF0ZV90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwicHJvZmlsaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfcHJvZmlsaW5nX2xvZ2dlciBwYXJhbWV0ZXJzKSApO1xuICAgIF1cblxubGV0IGVycm9yX2xpc3RfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImVycm9yc1wiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvbXB1dGF0aW9uIHN0ZXBzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTE6Mjg6MDUgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb24gKGZvciBleHBlcnQpXG4gKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlXG4gKiBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBfID0gZGVidWdfbW9kZVxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmc6IGludDtcbiAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heDogZmxvYXQgb3B0aW9uO1xufVxuXG5sZXQgcGFyYW1ldGVycyA9XG4gIHtcbiAgICBpdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nID0gMTA7XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgNS47XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgMjAuO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXggPSBTb21lIDUwMDtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW4gPSBTb21lIDEwLjtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXggPSBTb21lIDUwMC47XG4gIH1cblxudHlwZSBzdGF0dXNfZ2xvYmFsID0ge1xuICBjb3VudGVyX21pbjogaW50O1xuICBnbG9iYWxfdGltZV9taW46IGZsb2F0IG9wdGlvbjtcbiAgZ2xvYmFsX3RpbWVfbWF4OiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfcmVmOiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWY6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWY6IGludCBvcHRpb247XG59XG5cbnR5cGUgc3RhdHVzID0ge1xuICBjb3VudGVyOiBpbnQ7XG4gIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZTogaW50O1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXI6IGludDtcbiAgY3B1X3RpbWU6IGZsb2F0O1xufVxuXG5sZXQgZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSA9XG4gIHtcbiAgICBjb3VudGVyO1xuICAgIGdsb2JhbF90aW1lID0gU3lzLnRpbWUgKCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IDA7XG4gICAgY3B1X3RpbWUgPSAwLjtcbiAgfVxuXG5sZXQgZ2V0X3N0YXR1c19hZnRlciBzdGF0dXNfYmVmb3JlIHRyYWNlID1cbiAge1xuICAgIHN0YXR1c19iZWZvcmUgd2l0aFxuICAgIGNwdV90aW1lID0gU3lzLnRpbWUgKCkgLS4gc3RhdHVzX2JlZm9yZS5nbG9iYWxfdGltZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXIgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZTtcbiAgfVxuXG5sZXQgY21wX29wdCBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gMFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGNtcCBhIGJcblxubGV0IGNtcF9mbG9hdF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxubGV0IGNtcF9pbnRfb3B0ID0gY21wX29wdCAoY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuXG5sZXQgZ2VuX2Jpbl9vcHQgb3AgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKG9wIGEgYilcblxubGV0IGFkZF9mbG9hdF9vcHQgPSBnZW5fYmluX29wdCAoICsuIClcbmxldCBtdWx0X2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKi4gKVxubGV0IG11bHRfaW50X29wdCA9IGdlbl9iaW5fb3B0ICggKiApXG5cbmxldCBtYXhfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+IFNvbWUgYlxuICB8IFNvbWUgYSAtPlxuICAgIFNvbWVcbiAgICAgIChpZiBjbXAgYSBiID4gMCB0aGVuXG4gICAgICAgICBhXG4gICAgICAgZWxzZVxuICAgICAgICAgYilcblxubGV0IHN0b3BfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBzdGF0dXMuY291bnRlciA+IGdsb2JhbC5jb3VudGVyX21pblxuICAmJiAoY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHN0b3BfYWZ0ZXIgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuY3B1X3RpbWUpIGdsb2JhbC5jcHVfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXIpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZmxvYXQxIGZsb2F0MiBjb3VudGVyID1cbiAge1xuICAgIGNvdW50ZXJfbWluID0gY291bnRlciArIHBhcmFtZXRlcnMuaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZztcbiAgICBnbG9iYWxfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgYWRkX2Zsb2F0X29wdCAoU29tZSBmbG9hdDIpXG4gICAgICAgICAgIChtdWx0X2Zsb2F0X29wdFxuICAgICAgICAgICAgICAoU29tZSAoZmxvYXQyIC0uIGZsb2F0MSkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2xvYmFsX3RpbWVfZmFjdG9yX21pbikpO1xuICAgIGdsb2JhbF90aW1lX21heCA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWF4KSk7XG4gICAgY3B1X3RpbWVfbWluID0gTm9uZTtcbiAgICBjcHVfdGltZV9tYXggPSBOb25lO1xuICAgIGNwdV90aW1lX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiA9IE5vbmU7XG4gIH1cblxubGV0IHVwZGF0ZV9zdGF0dXNfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICAgIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlO1xuICAgIH1cbiAgZWxzZVxuICAgIGdsb2JhbFxuXG5sZXQgdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgaWYgc3RhdHVzLmNvdW50ZXIgPCBnbG9iYWwuY291bnRlcl9taW4gdGhlblxuICAgIHtcbiAgICAgIGdsb2JhbCB3aXRoXG4gICAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXI7XG4gICAgICBjcHVfdGltZV9yZWYgPSBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLmNwdV90aW1lX3JlZiBzdGF0dXMuY3B1X3RpbWU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCBjb21wdXRlX3N0YXR1c19yYW5nZXMgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXIgZ2xvYmFsX3N0YXR1cyA9XG4gIHtcbiAgICBnbG9iYWxfc3RhdHVzIHdpdGhcbiAgICBjcHVfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbik7XG4gICAgY3B1X3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIG11bHRfZmxvYXRfb3B0IGdsb2JhbF9zdGF0dXMuY3B1X3RpbWVfcmVmXG4gICAgICAgICAgIHBhcmFtZXRlci5jb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXgpO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21pbjtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXg7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYWZ0ZXJfZmFjdG9yX21heDtcbiAgfVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOl9cbiAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsXG4gICAgbmV2ZXIgcGFyYW1ldGVycyBnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gZlxuICAgIChzdG9yZV9yZXN1bHQgOlxuICAgICAgKCBVdGlsaXRpZXMudHJhY2UsXG4gICAgICAgIFV0aWxpdGllcy50cmFjZV9ydW50aW1lX2luZm8gbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFV0aWxpdGllcy50ZXJuYXJ5KSB0cmFjZSAodGFibGUgOiAnYSkgPVxuICBsZXQgZiBjZmxvd19wYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgKGxhc3RfaW5mbywgc3RvcF9uZXh0LCBnbG9iYWxfc3RhdHVzLCBjb3VudGVyLCB0YWJsZSkgPVxuICAgIGlmIHN0b3BfbmV4dCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBzdGF0dXNfYmVmb3JlID0gZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSBpblxuICAgICAgbGV0IHN0b3AgPSBzdG9wX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYmVmb3JlIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGxhc3RfaW5mbywgdGFibGUpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgIGYgY2Zsb3dfcGFyYW1ldGVycyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdGF0dXNfYWZ0ZXIgPSBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgaW5cbiAgICAgICAgbGV0IHN0b3AgPSBzdG9wX2FmdGVyIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2FmdGVyIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgICBzdG9yZV9yZXN1bHQgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgIGVycm9yIHRyYWNlIGluZm8gdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxhc3RfaW5mbyA9IFNvbWUgaW5mbyBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9IHVwZGF0ZV9zdGF0dXNfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPVxuICAgICAgICAgIGlmIGNvdW50ZXIgPSBnbG9iYWxfc3RhdHVzLmNvdW50ZXJfbWluIHRoZW5cbiAgICAgICAgICAgIGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZ2xvYmFsX3N0YXR1c1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGdsb2JhbF9zdGF0dXNcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKGxhc3RfaW5mbywgc3RvcCwgZ2xvYmFsX3N0YXR1cywgc3VjYyBjb3VudGVyLCB0YWJsZSkgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSA9XG4gICAgaWYgVXRpbGl0aWVzLmhhc19vYnMgdHJhY2UgdGhlbiAoXG4gICAgICBsZXQgc3RhcnRfaXRlcmF0aW9uID0gU3lzLnRpbWUgKCkgaW5cbiAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICB0cnkgU29tZSAoZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIDAgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpKVxuICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICBpblxuICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHRhYmxlXG4gICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpIC0+XG4gICAgICAgIGxldCBlbmRfc2ltcGxpZmljYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgICBsZXQgc3RhdHVzID1cbiAgICAgICAgICBzZXRfc3RhdHVzX2luaXQgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIHN0YXJ0X2l0ZXJhdGlvblxuICAgICAgICAgICAgZW5kX3NpbXBsaWZpY2F0aW9uIGNvdW50ZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICAgICAgICBVdGlsaXRpZXMuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3Igd2Vfc2hhbGwgbmV2ZXIgY291bnRlciBmIHRyYWNlXG4gICAgICAgICAgICAoTm9uZSwgZmFsc2UsIHN0YXR1cywgY291bnRlciwgdGFibGUpXG4gICAgICAgIGluXG4gICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgKGZ1biAoXywgXywgXywgXywgb3V0cHV0KSAtPiBlcnJvciwgbG9nX2luZm8sIG91dHB1dClcbiAgICAgICAgICAoZnVuICgobGFzdF9pbmZvLCB0YWJsZSksIGNvdW50ZXIpIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgIFV0aWxpdGllcy5yZW1vdmVfb2JzX2JlZm9yZSBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBsYXN0X2luZm8gdHJhY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSlcbiAgICAgICAgICBvdXRwdXRcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgaW5cbiAgYXV4IGxvZ19pbmZvIGVycm9yIDEgdHJhY2UgdGFibGVcbiIsIigqXG4gICogY2Zsb3dfanNfaW50ZXJmYWNlLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDQtMzAgMTg6MzQ6MDAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA0LTMwIDE4OjI0OjAwIGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBKYXZhLXNjcmlwdCBzZXJ2ZXJcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzXG4gICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgY2Zsb3dfc3RhdGUgPSB7XG4gIHN0ZF9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGVycl9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHByb2ZpbGluZ19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHN0YXR1c19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGN1cnJlbnRfcGhhc2U6IHN0cmluZyBvcHRpb247XG4gIHByb2dyZXNzX2JhcjogKGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQpIG9wdGlvbjtcbiAgY2F1c2FsX2Zsb3dzOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB0cml2aWFsX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB3ZWFrX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICBzdHJvbmdfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIGVycm9yX2xpc3Q6IFV0aWxpdGllcy5lcnJvcl9sb2cgb3B0aW9uO1xufVxuXG5sZXQgaW5pdCAoKSA9XG4gIHJlZlxuICAgIHtcbiAgICAgIHN0ZF9sb2dnZXIgPSBOb25lO1xuICAgICAgZXJyX2xvZ2dlciA9IE5vbmU7XG4gICAgICBwcm9maWxpbmdfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHN0YXR1c19sb2dnZXIgPSBOb25lO1xuICAgICAgY3VycmVudF9waGFzZSA9IE5vbmU7XG4gICAgICBwcm9ncmVzc19iYXIgPSBOb25lO1xuICAgICAgY2F1c2FsX2Zsb3dzID0gTm9uZTtcbiAgICAgIHRyaXZpYWxfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgd2Vha19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgZXJyb3JfbGlzdCA9IE5vbmU7XG4gICAgfVxuXG5sZXQgZ2V0X3N0ZF9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdGRfbG9nZ2VyXG5sZXQgZ2V0X2Vycl9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJfbG9nZ2VyXG5sZXQgZ2V0X3Byb2ZpbGluZ19idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9maWxpbmdfbG9nZ2VyXG5sZXQgZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0YXR1c19sb2dnZXJcbmxldCBnZXRfcHJvZ3Jlc3NfYmFyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUucHJvZ3Jlc3NfYmFyXG5sZXQgZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jdXJyZW50X3BoYXNlXG5sZXQgZ2V0X2NhdXNhbF9mbG93X3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuY2F1c2FsX2Zsb3dzXG5sZXQgZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS50cml2aWFsX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS53ZWFrX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0cm9uZ19jb21wcmVzc2lvblxubGV0IGdldF9lcnJvcl9saXN0IGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuZXJyb3JfbGlzdFxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgc3RyaW5nID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IFNvbWUgc3RyaW5nIH1cblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGN1cnJlbnRfcGhhc2UgPSBOb25lIH1cblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgYmFyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZ3Jlc3NfYmFyID0gU29tZSBiYXIgfVxuXG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBOb25lIH1cblxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGNhdXNhbF9mbG93cyA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCB0cml2aWFsX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHdlYWtfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdHJvbmdfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfZXJyb3JfbG9nX2F1eCBjZmxvd19zdGF0ZV9wdHIgZXJyb3IgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJvcl9saXN0ID0gU29tZSBlcnJvciB9XG5cbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0ZF9sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggZXJyX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9maWxpbmdfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RhdHVzX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgbGlmdCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgZGF0YSA9XG4gIG1hdGNoIGNmbG93X3N0YXRlX3B0cl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNmbG93X3N0YXRlX3B0ciAtPiBjZmxvd19zdGF0ZV9wdHIgOj0gZiBjZmxvd19zdGF0ZV9wdHIgZGF0YVxuXG5sZXQgbGlmdF9yZXNldCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgPVxuICBsaWZ0IChmdW4geCAoKSAtPiBmIHgpIGNmbG93X3N0YXRlX3B0cl9vcHQgKClcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eFxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBsaWZ0X3Jlc2V0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgPSBsaWZ0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciA9IGxpZnRfcmVzZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGUgPSBsaWZ0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4XG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfZXJyb3JfbGlzdCA9IGxpZnQgc2F2ZV9lcnJvcl9sb2dfYXV4XG5sZXQgcmVkaXJlY3Rfc3RkX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9lcnJfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9lcnJfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4XG4iLCIoKipcbiAgKiBjb21wcmVzc2lvbl9tYWluLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMTAtMTkgMTY6NTI6NTUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA2LTEwIDExOjEwOjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFUgPSBVdGlsaXRpZXNcbm1vZHVsZSBTID0gVS5TXG5cbnR5cGUgc2VjcmV0X2xvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuXG5sZXQgaW5pdF9zZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluaXRfbG9nX2luZm9cblxudHlwZSBzZWNyZXRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcblxubGV0IGJ1aWxkX3BhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguYnVpbGRfcGFyYW1ldGVyXG5sZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlclxubGV0IGxvZ19zdGVwID0gdHJ1ZVxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IGR1bXBfcHJvZmlsaW5nX2luZm8gPSB0cnVlXG5sZXQgXyA9IGR1bXBfcHJvZmlsaW5nX2luZm9cbmxldCBidWNrZXRfc29ydCA9IHRydWVcblxuKCoqIGZhbHNlIC0+IG9ubHkgdGhlIGZpcnN0IHN0b3J5IHBlciBvYnNlcnZhYmxlIGhpdDsgdHJ1ZSAtPiBhbGwgc3RvcmllcyBwZXIgb2JzIGhpdCAqKVxubGV0IGdldF9hbGxfc3RvcmllcyA9IGZhbHNlXG5cbmxldCBtYXhfbnVtYmVyX29mX2l0dGVyYXRpb25zID0gTm9uZVxubGV0IHdlX3NoYWxsX25vdCBfID0gZmFsc2VcbmxldCB3ZV9zaGFsbCBfID0gdHJ1ZVxubGV0IGRvX25vdF9sb2cgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGZhbHNlXG5cbmxldCBjb21wcmVzc19hbmRfcHJpbnQgcGFyYW1ldGVyIH5kb3RGb3JtYXQgP2pzX2ludGVyZmFjZSBlbnYgbG9nX2luZm8gc3RlcF9saXN0XG4gICAgPVxuICAoKmxldCBjYWxsZWRfZnJvbSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciBpbiopXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgbG9nX3N0ZXAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBkZWJ1Z19tb2RlIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILmRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgaSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9pdHRlcmF0aW9uX2JvdW5kIHBhcmFtZXRlciBpXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGdldF9hbGxfc3RvcmllcyB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBpZiBidWNrZXRfc29ydCB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9idWNrZXRfc29ydCBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IG1vZGUgPSBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jb21wcmVzc2lvbl9tb2RlIGluXG4gIGxldCBjYXVzYWxfdHJhY2Vfb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9jYXVzYWxfdHJhY2UgbW9kZSBpblxuICBsZXQgd2Vha19jb21wcmVzc2lvbl9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3dlYWtfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgc3Ryb25nX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfc3Ryb25nX2NvbXByZXNzaW9uIG1vZGUgaW5cbiAgbGV0IGVycm9yID0gVS5lcnJvcl9pbml0IGluXG4gIGxldCBoYW5kbGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5pbml0X2hhbmRsZXIgZW52IGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdGFydCwgXCJTdGFydGluZyBDb21wcmVzc2lvblwiKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUxID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMyA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGU0ID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgKCkgPSBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9jYXVzYWxfZmxvd190YWJsZSBqc19pbnRlcmZhY2UgdGFibGUxIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUyXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMyBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGU0XG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X3N0ZF9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2Vycl9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lXG4gICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlclxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKSlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2gganNfaW50ZXJmYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gcGFyYW1ldGVyXG4gICAgfCBTb21lIF9qc19pbnRlcmZhY2VfcHRyIC0+XG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlIHMpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyXG4gICAgICAgICAgKENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9lcnJvcl9saXN0IGpzX2ludGVyZmFjZSBlcnJvcilcbiAgICAgIGluXG4gICAgICBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX25vbmUgcGFyYW1ldGVyIGluXG4gIGxldCBwYXJhbWV0ZXJfY2F1c2FsID1cbiAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXJfd2VhayA9XG4gICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl9zdHJvbmcgPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cblxuICBsZXQgZW1wdHlfY29tcHJlc3Npb24gPSBlcnJvciwgbG9nX2luZm8sIHRhYmxlMSwgdGFibGUyLCB0YWJsZTMsIHRhYmxlNCBpblxuICBsZXQgc3RlcF9saXN0ID0gVS50cmFjZV9vZl9wcmV0cmFjZSBzdGVwX2xpc3QgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsLCBfdHJpdmlhbCwgd2Vhaywgc3Ryb25nID1cbiAgICBpZlxuICAgICAgKG5vdCBjYXVzYWxfdHJhY2Vfb24pICYmIChub3Qgd2Vha19jb21wcmVzc2lvbl9vbilcbiAgICAgICYmIG5vdCBzdHJvbmdfY29tcHJlc3Npb25fb25cbiAgICB0aGVuXG4gICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgVS5yZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgc3RlcF9saXN0XG4gICAgICBpblxuICAgICAgaWYgbm90IChVLmhhc19vYnMgc3RlcF9saXN0KSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIrIE5vIGNhdXNhbCBmbG93IGZvdW5kQC5cIlxuICAgICAgICBpblxuICAgICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgKGlmIHdlYWtfY29tcHJlc3Npb25fb24gfHwgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIGNvbXByZXNzaW9uc0AuXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcIisgUHJvZHVjaW5nIGNhdXNhbCB0cmFjZXNALlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9laWQgPSBVLmxhc3RfZWlkX2luX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICAgIFUuc3BsaXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogY2F1c2FsIGNvbXByZXNzaW9uIHdpdGhvdXQgYW55IHNpbXBsaWZpY2F0aW9uIChqdXN0IHBhcnRpYWwgb3JkZXIgY29tcHJlc3Npb24pKilcbiAgICAgICAgKCogdGhpcyBpcyB2ZXJ5IGNvc3RseSwgYW5kIG1haW5seSBmb3IgdGVhY2hpbmcgcHVycG9zZSAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfdGFibGUgPVxuICAgICAgICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgICAgIFUubWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgVS5jb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgJiYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIHByZXR0eSBwcmludGluZyB0aGUgZ3JpZEAuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8sIGVycm9yID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLmV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiIDAgMCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLnByaW50X211c2ljYWxfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgIFUuZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgICAgICAgICAgICBuX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0XFx0ICogY2F1c2FsIGNvbXByZXNzaW9uIEAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCpcdFx0bGV0IGxvZ19pbmZvID0gVS5TLlBILkIuUEIuQ0kuUG8uSy5QLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpbiAqKVxuICAgICAgICAgICAgICAoKiBXZSB1c2UgdGhlIGdyaWQgdG8gZ2V0IHRoZSBjYXVzYWwgcHJlY2VkZW5jZSAocHJlZCogKSBvZiBlYWNoIG9ic2VydmFibGUgKilcbiAgICAgICAgICAgICAgbGV0IGdyaWQgPSBVLmNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHN0ZXBfbGlzdCBoYW5kbGVyIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGVucmljaGVkX2dyaWQgPVxuICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAuZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBQYXJhbWV0ZXIubG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGxvZ2dlciAtPlxuICAgICAgICAgICAgICAgICAgICBDYXVzYWwucHJpbnRfc3RhdCBsb2dnZXIgcGFyYW1ldGVyIGhhbmRsZXIgZW5yaWNoZWRfZ3JpZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY2F1c2FsIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl9zdG9yaWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGZvbGQgdGhlIGxpc3Qgb2Ygb2JlcnZhYmxlIGhpdCwgYW5kIGZvciBlYWNoIG9uZSBjb2xsZWN0IHRoZSBjYXVzYWwgcGFzdCAqKVxuICAgICAgICAgICAgICBVLmZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIH5ldmVudDpTdG9yeVByb2ZpbGluZy5Db2xsZWN0X3RyYWNlc1xuICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl9cbiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfbGlzdCBvYnNlcnZhYmxlX2lkIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiICkpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uID1cbiAgICAgICAgICAgICAgICAgICAgVS5jYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgXCJjb21wcmVzc2lvbl9tYWluLCBsaW5lIDIwMTRcIiBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgZW5yaWNoZWRfZ3JpZCBvYnNlcnZhYmxlX2lkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkgPVxuICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIGluZm8gc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2FycmF5KVxuICAgICAgICAgICAgICAgIHRhYmxlMSAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTFcbiAgICAgICAgaW5cbiAgICAgICAgKCogTm93IGNhdXNhbCBjb21wcmVzc2lvbiwgd2l0aCBkZXRlY3Rpb24gb2Ygc2lwaG9ucyAmIGRldGVjdGlvbiBvZiBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgbGV0IHBhcmFtZXRlcl9kZWVwZXIgPVxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVyc1xuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMudXBkYXRlX3ByZWZpeFxuICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBcIlxcdFxcdFxcdFwiKVxuICAgICAgICAgICAgcGFyYW1ldGVyX2NhdXNhbFxuICAgICAgICBpblxuICAgICAgICBsZXQgb25lX2l0ZXJhdGlvbl9vZl9jb21wcmVzc2lvbiAobG9nX2luZm8sIGVycm9yLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBHcmFwaF9jbG9zdXJlLmlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaG9uIHRoZW5cbiAgICAgICAgICAgICAgVS5maWxsX3NpcGhvbiBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBVLnByaW50X3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QgPVxuICAgICAgICAgICAgaWYgUGFyYW1ldGVyLmRvX2dsb2JhbF9jdXQgdGhlblxuICAgICAgICAgICAgICBVLmN1dCBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUGFyYW1ldGVyLmN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCB0aGVuXG4gICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgcGFyYW1ldGVyX2RlZXBlclxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgIGluXG4gICAgICAgICgqIFRoaXMgZm9uY3Rpb24gaXRlciB0aGUgY2F1c2FsIGNvbXByZXNzaW9uIHVudGlsIGEgZml4cG9pbnQgaXMgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgc2l6ZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBrJyB3aGVuIGsgPj0gaycgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHQtIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQtIHN0YXJ0IGl0ZXJhdGlvbiAlaSwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAoayArIDEpIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgIChvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpKVxuICAgICAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGl0ZXJhdGlvbnMgc3RvcHBlZCBieSB0aGUgZW5kLXVzZXIsICVpIGV2ZW50cyBcXFxuICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgICAgfCBTb21lIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnKSAtPlxuICAgICAgICAgICAgICBpZiBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCcgPCBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChrICsgMSkgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGEgZml4cG9pbnQgaGFzIGJlZW4gcmVhY2hlZCwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlc1xcdC0gc2ltcGxpZnkgdGhlIHRyYWNlLCAlaSBldmVudHMgQC5cIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgKFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMykgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuYmxhY2tfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdFxuICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha19zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydFxuICAgICAgICAgICAgICAgIC5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGwgd2Vfc2hhbGxfbm90XG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0LnBhcmFtZXRlcnMgYXV4XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIHdlIHJlbW92ZSBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgY29sbGVjdGluZyBvbmUgbmV3IHRyYWNlXCIgKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIHdlIGNvbXB1dGUgY2F1c2FsIGNvbXByZXNzaW9uICopXG4gICAgICAgICAgICAgICAgICAgIFUuY3V0IChkb19ub3RfbG9nIHBhcmFtZXRlcikgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZSB0YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIHRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluZm8gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBpbmZvLCB0YWJsZSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdCB0YWJsZTJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbl9jYXVzYWxfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyBjYXVzYWxfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3dlYWsgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdCAtIHdlYWsgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX2NhdXNhbF9zdG9yaWVzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmxhY2tsaXN0LCB3ZWFrbHlfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcIndlYWsgY29tcHJlc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIGxpc3RfaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2Ugc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSlcbiAgICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlIChibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIsIHRhYmxlM1xuICAgICAgICBpblxuICAgICAgICBsZXQgbl93ZWFrX3N0b3JpZXMgPSBVLmNvdW50X3N0b3JpZXMgd2Vha2x5X3N0b3J5X3RhYmxlIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3N0cm9uZyBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwYXJhbWV0ZXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlxcdCAtIHN0cm9uZyBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fd2Vha19zdG9yaWVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICBVLmZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBcInN0cm9uZ19jb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50X2xpc3QgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgIFUuY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50X2xpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9pbmZvIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUgdGFibGU0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlNFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGNhdXNhbF90YWJsZSxcbiAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUsXG4gICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlLFxuICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIClcbiAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhdXNhbFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlwiIFwiXCJcbiAgICAgICAgICBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vha1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIldlYWtseVwiXG4gICAgICAgICAgXCJ3ZWFrbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBfbG9nX2luZm8gPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cm9uZ1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlN0cm9uZ2x5XCJcbiAgICAgICAgICBcInN0cm9uZ2x5IFwiIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdWNjZXNzLCBcIkNvbXByZXNzaW9uIGNvbXBsZXRlZFwiKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfbG9nZ2VyXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgaW5cbiAgbGV0IF8gPVxuICAgIEV4Y2VwdGlvbi5wcmludF9mb3JfS2FTaW1cbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3JcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbl9tZXNzYWdlIH5ub25lIH53ZWFrIH5zdHJvbmcgfnNlbmRfbWVzc2FnZSA9XG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIHJlZlxuICAgICAgKENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2Ugfm5vbmUgfndlYWtcbiAgICAgICAgIH5zdHJvbmcgKCkpXG4gIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgXCJDT05GSUdcIiAtPlxuICAgICAgICAgICAgbGV0IGNvbmYgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9qc29uIHN0IGIgaW5cbiAgICAgICAgICAgIGxldCBub25lID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vbmVcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhayA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ3ZWFrXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gd2Vha1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN0cm9uZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJzdHJvbmdcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdHJvbmdcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBhcmFtZXRlciA6PVxuICAgICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIH5ub25lIH53ZWFrIH5zdHJvbmcgKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgXCJSVU5cIiAtPlxuICAgICAgICAgICAgbGV0IGVudiwgc3RlcHMgPVxuICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgIChUcmFjZS5mb2xkX3RyYWNlXG4gICAgICAgICAgICAgICAgICAgKGZ1biBfZW52IHN0ZXBzIHN0ZXAgLT4gc3RlcCA6OiBzdGVwcylcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgIHN0IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBDb21wcmVzc2lvbl9tYWluLmNvbXByZXNzX2FuZF9wcmludCAhcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfmRvdEZvcm1hdDpDYXVzYWwuSHRtbCBlbnZcbiAgICAgICAgICAgICAgICAoQ29tcHJlc3Npb25fbWFpbi5pbml0X3NlY3JldF9sb2dfaW5mbyAoKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RlcHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIChcIkludmFsaWQgS2FTdG9yIG1lc3NhZ2U6IFwiIF4geCkpKVxuICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyB0ZXh0KVxuICAgIHdpdGggZSAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmVwcmludGYgXCIlc0AuXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKSBpblxuICAgICAgKCkgKCpUT0RPKilcbiIsInR5cGUgJ2Egc3VwZXJsaXN0ID0gRWx0IG9mICdhIHwgU3VwZXJfbGlzdCBvZiAnYSBzdXBlcmxpc3QgbGlzdCBsaXN0XG5cbmxldCByZWMgZm9sZCBmIGEgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IEVsdCBlbHQgLT4gZiBhIGVsdFxuICB8IFN1cGVyX2xpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgKGZvbGQgZikpIGEgbFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIGwyIHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IF8gLT4gLTEpXG4gIHwgaDEgOjogdDEgLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMVxuICAgIHwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlIGgxIGgyIGluXG4gICAgICAobWF0Y2ggY21wIHdpdGhcbiAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSB0MSB0MlxuICAgICAgfCBfIC0+IGNtcCkpXG5cbmxldCByZWMgY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBFbHQgYSwgRWx0IGIgLT4gY29tcGFyZSBhIGJcbiAgfCBTdXBlcl9saXN0IGEsIFN1cGVyX2xpc3QgYiAtPlxuICAgIGNvbXBhcmVfbGlzdCAoY29tcGFyZV9saXN0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSkgYSBiXG4gIHwgRWx0IF8sIFN1cGVyX2xpc3QgXyAtPiAtMVxuICB8IFN1cGVyX2xpc3QgXywgRWx0IF8gLT4gMVxuXG5sZXQgcmVjIHNvcnQgY29tcGFyZSBzdXBlcmxpc3QgPVxuICBtYXRjaCBzdXBlcmxpc3Qgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBhIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIGxldCBsJyA9IExpc3QucmV2X21hcCAoc29ydCBjb21wYXJlKSBsIGluXG4gICAgICAgICAgIGxldCBsJyA9IExpc3Quc29ydCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSkgbCcgaW5cbiAgICAgICAgICAgbCcpXG4gICAgICAgICAoTGlzdC5yZXYgYSkpXG5cbmxldCBkdW1wX3N1cGVyX2xpc3QgZiBzIGwgPVxuICBsZXQgcmVjIGF1eCBkZXB0aCBmIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRWx0IGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzJWFALFwiIGRlcHRoIHMgYVxuICAgIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgICBQcC5saXN0IFBwLmN1dFxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AsJWFcIiBkZXB0aFxuICAgICAgICAgICAgKFBwLmxpc3QgUHAuY3V0IChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJXNALCVhXCIgZGVwdGggKGF1eCAoXCItLVwiIF4gZGVwdGgpKSBsKSlcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGYgbFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdQC5cIiAoYXV4IFwiLT5cIikgbFxuXG50eXBlICdhIGluZm8gPSB7IHByZWRfMTogaW50IGxpc3Q7IGNvbmZsaWN0XzE6IGludCBsaXN0OyBsYWJlbDogJ2E7IGRlcHRoOiBpbnQgfVxuXG5sZXQgY29tcGFyZV9mc3RfdHJpcGxlIChhLCBfLCBfKSAoYiwgXywgXykgPSBjb21wYXJlIGEgYlxuXG5sZXQgc21hc2ggY29tcGFyZSBsID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gb2xkIGN1cnJlbnQgYWNjdSA9XG4gICAgbWF0Y2ggdG9fZG8gd2l0aFxuICAgIHwgW10gLT4gY3VycmVudCA6OiBhY2N1XG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGNvbXBhcmUgaCBvbGQgPSAwIHRoZW5cbiAgICAgICAgYXV4IHQgb2xkIChoIDo6IGN1cnJlbnQpIGFjY3VcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IHQgaCBbIGggXSAoY3VycmVudCA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBFbHQgYSAtPiBFbHQgYVxuICB8IFN1cGVyX2xpc3QgbCAtPlxuICAgIFN1cGVyX2xpc3RcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgbCAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgaCA6OiB0IC0+IGF1eCB0IGggWyBoIF0gYWNjdSlcbiAgICAgICAgICAgIFtdIGwpKVxuXG4oKmxldCBsID1cbiAgICBTdXBlcl9saXN0XG4gICAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFtFbHQgKDIsMCwwKTtFbHQgKDMsMCwwKTtFbHQgKDQsMCwwKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsMSwxKTtFbHQgKDIsMSwxKTtFbHQgKDMsMSwxKV07XG4gICAgICAgICAgICAgIFtFbHQgKDIsMiwyKTtFbHQgKDQsMiwyKTtFbHQgKDUsMywzKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsNCw0KTtFbHQgKDIsNCw0KTtFbHQgKDMsNCw0KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDUsNSk7RWx0ICgyLDUsNSldXTtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbW0VsdCAoMSw2LDYpO0VsdCAoMiw2LDYpXV1dXTs7XG5cbiAgbGV0IGR1bXBfdHJpcGxlIChhLGIsYykgPSAgIChcIihcIl4oc3RyaW5nX29mX2ludCBhKV5cIixcIl4oc3RyaW5nX29mX2ludCBiKV5cIixcIl4oc3RyaW5nX29mX2ludCBjKV5cIilcIilcblxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsXG4gIGxldCBsMSA9IHNvcnQgY29tcGFyZV9mc3RfdHJpcGxlIGxcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDFcbiAgbGV0IGwyID0gc21hc2ggKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmVfZnN0X3RyaXBsZSkgbDFcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDIgKilcbigqXG5sZXQgbm9ybWFsX2Zvcm0gcm9vdCBjb21wYXJlIGYgPSBcbiAgbGV0IGRlYWxfd2l0aF9lbHQgZWx0ID0gXG4gICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgbGV0IG5vZGUgPSAoaW5mby5sYWJlbCxpbmZvLmRlcHRoLExpc3QubGVuZ3RoIGluZm8ucHJlZF8xLExpc3QubGVuZ3RoIGluZm8uY29uZmxpY3RfMSkgaW4gXG4gICAgbm9kZSxpbmZvLnByZWRfMSxpbmZvLmNvbmZsaWN0XzEgXG4gIGluIFxuXG4gIFxuICBsZXQgcmVjIGF1eCBjdXJyZW50X2xheWVyIG5leHRfbGF5ZXIgYWNjdSA9IFxuICAgIG1hdGNoIFxuICAgICAgY3VycmVudF9sYXllciBcbiAgICB3aXRoIFxuICAgIHwgTGlzdCBsICAtPiBcblxuICAgIHwgU3VwZXJfbGlzdCBsIC0+IFxuICAgICAgICBsZXQgZXh0ZW5kZWRfbGlzdCA9IExpc3QucmV2X21hcCBkZWFsX3dpdGhfZWx0IGwgaW4gXG4gICAgICAgIGxldCBzb3J0ZWRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IHNtYXNoX2xpc3QgPSBzbWFzaCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IGluZm9fb2YgeCA9IFxuICAgICAgICAgIGxldCBpbmZvID0gZiB4IGluIFxuICAgICAgICAgIChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKVxuICAgICAgICBpbiBcbiAgICAgICAgXG4gICAgICAgICAgXG4gICAgICBlbmRcbiAgICB8IEh1YiBsIC0+IFxuICAgICAgYmVnaW4gXG4gICAgICBlbmQgXG4gICAgICAgIFxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlc3VsdCAqKVxubGV0IGVycm9yX21zZyA/KHNldmVyaXR5ID0gTG9ncy5FcnJvcikgP3JhbmdlIHRleHQgOiBSZXN1bHRfdXRpbC5tZXNzYWdlID1cbiAgeyBSZXN1bHRfdXRpbC5zZXZlcml0eTsgUmVzdWx0X3V0aWwudGV4dDsgUmVzdWx0X3V0aWwucmFuZ2UgfVxuXG5sZXQgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlID9yZXN1bHRfY29kZSAobWVzc2FnZSA6IHN0cmluZykgOlxuICAgICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBbIGVycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlIG1lc3NhZ2UgXVxuXG5sZXQgcmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZSBtZXNzYWdlcyA6ICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBtZXNzYWdlc1xuXG5sZXQgcmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIChlIDogZXhuKSA6ICdvayBBcGkucmVzdWx0ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZSB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgaW5cbiAgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VcblxubGV0IG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWggPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWhcbiAgaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeClcbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF91bmNhdWdodCB4KSlcbiAgICAgICB1bmNhdWdodClcblxubGV0IG1ldGhvZF9oYW5kbGVyX21lc3NhZ2VzID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWggPVxuICByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIChtZXRob2RfaGFuZGxlcl9lcnJvcnMgP3NldmVyaXR5IG1oKVxuXG5sZXQgcmVzdWx0X2thc2EgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgbWggLT4gbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgfnNldmVyaXR5OkxvZ3MuRXJyb3IgbWhcblxubGV0IHJlc3VsdF9iaW5kX2x3dCA6XG4gICAgb2s6KCdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCkgLT5cbiAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4ob2sgOiAnb2sgLT4gKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpXG4gICAgIHsgUmVzdWx0X3V0aWwudmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgUmVzdWx0Lk9rIGRhdGEgLT4gb2sgZGF0YVxuICB8IFJlc3VsdC5FcnJvciBlIC0+XG4gICAgTHd0LnJldHVybiB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIGU7IHN0YXR1czsgbWVzc2FnZXMgfVxuXG5sZXQgcmVjIHJlc3VsdF9mb2xkX2x3dCA6XG4gICAgZjpcbiAgICAgICgoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICd2YWx1ZSAtPlxuICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgIGlkOignb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICd2YWx1ZSBsaXN0IC0+XG4gICAgKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+KGYgOlxuICAgICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICAgJ3ZhbHVlIC0+XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgfihpZCA6ICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCkgKGwgOiAndmFsdWUgbGlzdCkgLT5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTHd0LnJldHVybiBpZFxuICB8IGggOjogdCAtPiBmIGlkIGggPj49IGZ1biByZXN1bHQgLT4gcmVzdWx0X2ZvbGRfbHd0IH5mIH5pZDpyZXN1bHQgdFxuXG5sZXQgcmVjIHJlc3VsdF9jb21iaW5lIDogdW5pdCBBcGkucmVzdWx0IGxpc3QgLT4gdW5pdCBBcGkucmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBSZXN1bHRfdXRpbC5vayAoKVxuICB8IGwgOjogdCAtPlxuICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgIH5vazooZnVuICgpIC0+IHJlc3VsdF9jb21iaW5lIHQpXG4gICAgICB+ZXJyb3I6KGZ1biBkYXRhXzEgLT5cbiAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgIH5vazooZnVuICgpIC0+IGwpXG4gICAgICAgICAgfmVycm9yOihmdW4gZGF0YV9yIC0+XG4gICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciB+c3RhdHVzOmwuUmVzdWx0X3V0aWwuc3RhdHVzIChkYXRhXzEgQCBkYXRhX3IpKVxuICAgICAgICAgIChyZXN1bHRfY29tYmluZSB0KSlcbiAgICAgIGxcblxubGV0IG1kNXN1bSB0ZXh0ID0gRGlnZXN0LnRvX2hleCAoRGlnZXN0LnN0cmluZyB0ZXh0KVxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcImFwaV90eXBlcy5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3QgPSBEYXRhLnNuYXBzaG90XG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaXRlX2dyYXBoID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc3RhdGVcblxudHlwZSBzaW11bGF0aW9uX3NlZWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWRcblxudHlwZSBzaW11bGF0aW9uX3Byb2dyZXNzID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcyA9IHtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQ6IGludDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc6IGJvb2xcbn1cblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyID0ge1xuICBzaW11bGF0aW9uX3Bsb3RfcGVyaW9kICgqYXRkIHBsb3RfcGVyaW9kICopOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gKCphdGQgcGF1c2VfY29uZGl0aW9uICopOiBzdHJpbmc7XG4gIHNpbXVsYXRpb25fc2VlZCAoKmF0ZCBzZWVkICopOiBzaW11bGF0aW9uX3NlZWQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3N0b3JlX3RyYWNlICgqYXRkIHN0b3JlX3RyYWNlICopOiBib29sXG59XG5cbnR5cGUgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0ID1cbiAgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0ID0ge1xuICBzaW11bGF0aW9uX291dHB1dF9wbG90OiAncGxvdDtcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZGluczogJ2RpbnM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM6ICdmaWxlX2xpbmVzO1xuICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM6ICdzbmFwc2hvdHM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0czogJ2lucHV0cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzOiAnbG9nX21lc3NhZ2VzXG59XG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvID0ge1xuICBzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M6IHNpbXVsYXRpb25fcHJvZ3Jlc3M7XG4gIHNpbXVsYXRpb25faW5mb19vdXRwdXQ6IHNpbXVsYXRpb25faW5mb19vdXRwdXRcbn1cblxudHlwZSBzaW11bGF0aW9uX2lkID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pZFxuXG50eXBlIHNpbXVsYXRpb25fYXJ0aWZhY3QgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0ID0ge1xuICBzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDogc2ltdWxhdGlvbl9zZWVkXG59XG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IFBhdHRlcm4uc2hhcmluZ19sZXZlbFxuXG50eXBlICgnb2ssICdlcnJvcikgcmVzdWx0ID0gKCdvaywgJ2Vycm9yKSBSZXN1bHRfdXRpbC50XG5cbnR5cGUgcGFyc2luZ19jb21waWwgPSBBc3QucGFyc2luZ19jb21waWxcblxudHlwZSBuYnIgPSBOYnIudFxuXG50eXBlIHByb2plY3RfcGFyc2UgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcnNlID0ge1xuICBwYXR0ZXJuX3NoYXJpbmc6IHNoYXJpbmdfbGV2ZWw7XG4gIGFzdDogcGFyc2luZ19jb21waWw7XG4gIHZhcmlhYmxlX292ZXJ3cml0dGVuOiAoc3RyaW5nICogbmJyKSBsaXN0XG59XG5cbnR5cGUgcHJvamVjdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcmFtZXRlciA9IHtcbiAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZDogc3RyaW5nXG59XG5cbnR5cGUgcGxvdF9saW1pdCA9IEFwaV90eXBlc190LnBsb3RfbGltaXQgPSB7XG4gIHBsb3RfbGltaXRfb2Zmc2V0OiBpbnQgb3B0aW9uO1xuICBwbG90X2xpbWl0X3BvaW50czogaW50IG9wdGlvblxufVxuXG50eXBlIHBsb3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90ID0gRGF0YS5wbG90XG5cbnR5cGUgbWVzc2FnZSA9IFJlc3VsdF91dGlsLm1lc3NhZ2VcblxudHlwZSBsb2dfbWVzc2FnZSA9IEFwaV90eXBlc190LmxvZ19tZXNzYWdlXG5cbnR5cGUga2FwcGFfY29kZSA9IEFwaV90eXBlc190LmthcHBhX2NvZGVcblxudHlwZSBmaWxlX2xpbmUgPSBEYXRhLmZpbGVfbGluZSA9IHtcbiAgZmlsZV9saW5lX25hbWUgKCphdGQgbmFtZSAqKTogc3RyaW5nIG9wdGlvbjtcbiAgZmlsZV9saW5lX3RleHQgKCphdGQgdGV4dCAqKTogc3RyaW5nXG59XG5cbnR5cGUgZmlsZV9saW5lX2RldGFpbCA9IEFwaV90eXBlc190LmZpbGVfbGluZV9kZXRhaWxcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm8gPSB7XG4gIGVudmlyb25tZW50X3Byb2plY3RzICgqYXRkIHByb2plY3RzICopOiBpbnQ7XG4gIGVudmlyb25tZW50X2J1aWxkICgqYXRkIGJ1aWxkICopOiBzdHJpbmdcbn1cblxudHlwZSBkaW5faWQgPSBBcGlfdHlwZXNfdC5kaW5faWRcblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gRGF0YS5kaW5cblxubGV0IHdyaXRlX3NuYXBzaG90X2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc25hcHNob3RfaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3QgPSAoXG4gIERhdGEud3JpdGVfc25hcHNob3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdCA9IChcbiAgRGF0YS5yZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfZGV0YWlsID0gKFxuICB3cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICByZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NuYXBzaG90X2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9zbmFwc2hvdF9pZFxuICApXG4pXG5sZXQgX3NuYXBzaG90X2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgcmVhZF9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzdHJpbmdfb2Zfc2l0ZV9ncmFwaCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaXRlX2dyYXBoIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2l0ZV9ncmFwaCA9IChcbiAgVXNlcl9ncmFwaC5yZWFkX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzaXRlX2dyYXBoX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaXRlX2dyYXBoIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFJ1bm5pbmcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUnVubmluZ1xcXCJcIlxuICAgICAgfCBgUGF1c2VkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlBhdXNlZFxcXCJcIlxuICAgICAgfCBgU3RvcHBlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTdG9wcGVkXFxcIlwiXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fc3RhdGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFJ1bm5pbmdcbiAgICAgICAgICAgIHwgXCJQYXVzZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIGBQYXVzZWRcbiAgICAgICAgICAgIHwgXCJTdG9wcGVkXCIgLT5cbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc3RhdGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zZWVkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc2VlZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19pbnRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ludF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9faW50X251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2ludF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9pbnRfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19pbnRfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIDogXyAtPiBzaW11bGF0aW9uX3Byb2dyZXNzIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNSkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIDogXyAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX3BhcmFtZXRlcikgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBsb3RfcGVyaW9kXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdGRfZmxvYXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGxvdF9wZXJpb2Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdXNlX2NvbmRpdGlvblxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbjtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zZWVkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzdG9yZV90cmFjZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zdG9yZV90cmFjZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxMSAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGxvdF9wZXJpb2RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3NlZWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc3RvcmVfdHJhY2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA6IF8gLT4gKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19wbG90XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGluc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ZpbGVfbGluZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NuYXBzaG90c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnB1dHNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fbG9nX21lc3NhZ2VzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zbmFwc2hvdHNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZmlsZV9saW5lc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2xvZ19tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX291dHB1dF85MzQwYWQ2IDogXyAtPiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9udWxsXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfX291dHB1dF85MzQwYWQ2ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19vdXRwdXRfOTM0MGFkNiA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udWxsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgX291dHB1dF85MzQwYWQ2X29mX3N0cmluZyBzID1cbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICB3cml0ZV9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChcbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIDogXyAtPiBzaW11bGF0aW9uX2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25faW5mb19vdXRwdXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19vdXRwdXQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fb3V0cHV0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IDogXyAtPiBzaW11bGF0aW9uX2FydGlmYWN0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAzNSAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2FydGlmYWN0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLndyaXRlX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaGFyaW5nX2xldmVsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2hhcmluZ19sZXZlbCA9IChcbiAgUGF0dGVybi5yZWFkX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgc3RyaW5nX29mX3BhcnNpbmdfY29tcGlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3BhcnNpbmdfY29tcGlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgPSAoXG4gIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgcGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3BhcnNpbmdfY29tcGlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbmJyID0gKFxuICBOYnIud3JpdGVfdFxuKVxubGV0IHN0cmluZ19vZl9uYnIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbmJyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbmJyID0gKFxuICBOYnIucmVhZF90XG4pXG5sZXQgbmJyX29mX3N0cmluZyBzID1cbiAgcmVhZF9uYnIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX25icl9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgZnVuIG9iIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAobGV0IHgsIF8gPSB4IGluXG4gICAgICAoXG4gICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgKSBvYiB4XG4gICAgICApO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIChsZXQgXywgeCA9IHggaW5cbiAgICAgIChcbiAgICAgICAgd3JpdGVfbmJyXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nO1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbmJyX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19uYnJfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIGZ1biBwIGxiIC0+XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgc3RkX3R1cGxlID0gWW9qc29uLlNhZmUuc3RhcnRfYW55X3R1cGxlIHAgbGIgaW5cbiAgICAgIGxldCBsZW4gPSByZWYgMCBpblxuICAgICAgbGV0IGVuZF9vZl90dXBsZSA9IHJlZiBmYWxzZSBpblxuICAgICAgKHRyeVxuICAgICAgICBsZXQgeDAgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICBpblxuICAgICAgICAgIGluY3IgbGVuO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBsZXQgeDEgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcmVhZF9uYnJcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiBlbmRfb2ZfdHVwbGUgOj0gdHJ1ZSk7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgIWVuZF9vZl90dXBsZSB0aGVuIChcbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiAoKVxuICAgICAgICApO1xuICAgICAgICAoeDAsIHgxKVxuICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX3R1cGxlX2ZpZWxkcyBwICFsZW4gWyAwOyAxIF0pO1xuICApXG4pXG5sZXQgX3N0cmluZ19uYnJfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19uYnJfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Byb2plY3RfcGFyc2UgOiBfIC0+IHByb2plY3RfcGFyc2UgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJzZSkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdHRlcm5fc2hhcmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2hhcmluZ19sZXZlbFxuICAgIClcbiAgICAgIG9iIHgucGF0dGVybl9zaGFyaW5nO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJhc3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3BhcnNpbmdfY29tcGlsXG4gICAgKVxuICAgICAgb2IgeC5hc3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInZhcmlhYmxlX292ZXJ3cml0dGVuXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX25icl9saXN0XG4gICAgKVxuICAgICAgb2IgeC52YXJpYWJsZV9vdmVyd3JpdHRlbjtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3BhdHRlcm5fc2hhcmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfYXN0ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9hc3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3BhcnNpbmdfY29tcGlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDMgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3BhdHRlcm5fc2hhcmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2hhcmluZ19sZXZlbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0dGVybl9zaGFyaW5nID0gKG1hdGNoICFmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBhdHRlcm5fc2hhcmluZ1wiKTtcbiAgICAgICAgICAgIGFzdCA9IChtYXRjaCAhZmllbGRfYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJhc3RcIik7XG4gICAgICAgICAgICB2YXJpYWJsZV9vdmVyd3JpdHRlbiA9IChtYXRjaCAhZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInZhcmlhYmxlX292ZXJ3cml0dGVuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcHJvamVjdF9wYXJzZSlcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgOiBfIC0+IHByb2plY3RfcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHByb2plY3RfcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdF9pZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSAobWF0Y2ggIWZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X2xpbWl0IDogXyAtPiBwbG90X2xpbWl0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHBsb3RfbGltaXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJvZmZzZXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfb2Zmc2V0O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYl9wb2ludHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfcG9pbnRzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3RfbGltaXQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9saW1pdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfbGltaXQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA5IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfb2Zmc2V0ID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X29mZnNldCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9vZmZzZXRcIik7XG4gICAgICAgICAgICBwbG90X2xpbWl0X3BvaW50cyA9IChtYXRjaCAhZmllbGRfcGxvdF9saW1pdF9wb2ludHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBsb3RfbGltaXRfcG9pbnRzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcGxvdF9saW1pdClcbiAgICAgIClcbilcbmxldCBwbG90X2xpbWl0X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X2xpbWl0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgPSAoXG4gIHdyaXRlX3Bsb3RfbGltaXRcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgcmVhZF9wbG90X2xpbWl0XG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdCA9IChcbiAgRGF0YS53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIERhdGEucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX21lc3NhZ2UgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfa2FwcGFfY29kZSA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2thcHBhX2NvZGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfa2FwcGFfY29kZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2thcHBhX2NvZGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGthcHBhX2NvZGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2thcHBhX2NvZGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc3RyaW5nX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lIDogXyAtPiBmaWxlX2xpbmUgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZmlsZV9saW5lKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwibmFtZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3N0cmluZ19udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX25hbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInRleHRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX3RleHQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfbmFtZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfZmlsZV9saW5lX3RleHQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgJ3QnIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX25hbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICB8ICduJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxlX2xpbmVfbmFtZSA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX25hbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV9uYW1lXCIpO1xuICAgICAgICAgICAgZmlsZV9saW5lX3RleHQgPSAobWF0Y2ggIWZpZWxkX2ZpbGVfbGluZV90ZXh0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJmaWxlX2xpbmVfdGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IGZpbGVfbGluZSlcbiAgICAgIClcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2ZpbGVfbGluZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19maWxlX2xpbmVfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZmlsZV9saW5lX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZmlsZV9saW5lX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZmlsZV9saW5lXG4gIClcbilcbmxldCBfZmlsZV9saW5lX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19maWxlX2xpbmVfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICByZWFkX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHdyaXRlX19zdHJpbmdfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICByZWFkX19zdHJpbmdfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Vudmlyb25tZW50X2luZm8gOiBfIC0+IGVudmlyb25tZW50X2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInByb2plY3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X3Byb2plY3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJidWlsZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5lbnZpcm9ubWVudF9idWlsZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50X3Byb2plY3RzID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfcHJvamVjdHNcIik7XG4gICAgICAgICAgICBlbnZpcm9ubWVudF9idWlsZCA9IChtYXRjaCAhZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImVudmlyb25tZW50X2J1aWxkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZW52aXJvbm1lbnRfaW5mbylcbiAgICAgIClcbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9kaW5faWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fZGluX2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2Rpbl9pZF9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2Rpbl9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2Rpbl9pZFxuICApXG4pXG5sZXQgX2Rpbl9pZF9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fZGluX2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgd3JpdGVfX2Rpbl9pZF9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIHJlYWRfX2Rpbl9pZF9saXN0XG4pXG5sZXQgZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluID0gKFxuICBEYXRhLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBEYXRhLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IEJpZ1N0cmluZyA6IEJpZ2J1ZmZlci5iaWdzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5nIDogc3RyaW5nIGhhbmRsZVxuICB8IFN0cmluZ3MgOiBzdHJpbmcgbGlzdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgKCogIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZSopXG4gIHwgSlNPTiA6IFlvanNvbi5CYXNpYy50IGhhbmRsZVxuICB8IEluZmx1ZW5jZV9tYXBcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogaW50XG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIGludCBvcHRpb25cbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb25cbiAgICAgICAgKiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwKVxuICAgICAgICBoYW5kbGVcbiAgfCBTaG9ydF9pbmZsdWVuY2Vfbm9kZSA6IChpbnQsIGludCkgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2RlXG4gICAgICA6IChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICBoYW5kbGVcbiAgfCBJbmZsdWVuY2Vfbm9kZXNcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgbGlzdClcbiAgICAgICAgaGFuZGxlXG4gIHwgUnVsZXNfa2FzYSA6IFB1YmxpY19kYXRhLnJ1bGUgbGlzdCBoYW5kbGVcbiAgfCBBZ2VudHNfa2FzYSA6IFB1YmxpY19kYXRhLmRlYWRfYWdlbnRzIGhhbmRsZVxuICB8IFRyYW5zaXRpb25zX2thc2EgOiAoUHVibGljX2RhdGEucnVsZSAqIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgQ29uc3RyYWludHNfa2FzYVxuICAgICAgOiAoc3RyaW5nICogUHVibGljX2RhdGEuYWdlbnQgbGlzdCBQdWJsaWNfZGF0YS5sZW1tYSBsaXN0KSBsaXN0IGhhbmRsZVxuICB8IFBvbHltZXJzX2thc2FcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5zY2MpXG4gICAgICAgIGhhbmRsZVxuICB8IERJTiA6IERhdGEuZGluIGhhbmRsZVxuICB8IFBsb3QgOiBEYXRhLnBsb3QgaGFuZGxlXG4gIHwgU25hcHNob3QgOiBEYXRhLnNuYXBzaG90IGhhbmRsZVxuICB8IFNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IGhhbmRsZVxuICB8IFNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fYXJ0aWZhY3QgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC51IC0+IGJveFxuXG50eXBlIG1haWxib3ggPSAoaW50LCBib3gpIEhhc2h0YmwudFxuXG5sZXQgbmV3X21haWxib3ggKCkgPSBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCByZWFkX3Jlc3VsdCBmIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgIChSZXN1bHRfdXRpbC5yZWFkX3QgZiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2UpKVxuICAgIHAgbGJcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHAgbGIgaWQgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIHdpdGhcbiAgICAgICAgICAgfCBCIChOb3RoaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX251bGwgcCBsYilcbiAgICAgICAgICAgfCBCIChCaWdTdHJpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0ID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCAoQmFzZTY0LmRlY29kZSA/YWxwaGFiZXQ6Tm9uZSkgb3V0KVxuICAgICAgICAgICB8IEIgKFN0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYilcbiAgICAgICAgICAgfCBCIChTdHJpbmdzLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChDYXRhbG9nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChJbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgICAoKiB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXN0LnJlYWRfcGFyc2luZ19jb21waWwgcCBsYikqKVxuICAgICAgICAgICB8IEIgKEpTT04sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9tYXAsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFNob3J0X2luZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZXMsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFJ1bGVzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKEFnZW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIGpzb24pXG4gICAgICAgICAgIHwgQiAoVHJhbnNpdGlvbnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQ29uc3RyYWludHNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFBvbHltZXJzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2NjX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChESU4sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX2RpbiBwIGxiKVxuICAgICAgICAgICB8IEIgKFBsb3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX3Bsb3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTbmFwc2hvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfc25hcHNob3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX2VmZmljaWVuY3ksIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25faW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm8gcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX3BhcmFtZXRlciwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fYXJ0aWZhY3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0IEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIGlzX3J1bm5pbmcgKCkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYU1vSGEgKilcbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlIDogQXN0LnBhcnNpbmdfY29tcGlsIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHByb2plY3RfcGFyc2UgbXVzdG4ndCBiZSB1c2VkXCIpXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgOiBQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYVNhICopXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5JVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBjb21waWwpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSlNPTiAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05UQUNUX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9tYXAgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTE9DQUxfSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGJ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgdG90YWwpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIG9yaWdpbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBqc29uKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaG9ydF9pbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05PREVfQVRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gTG9jLndyaXRlX3Bvc2l0aW9uIGIgcG9zKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlcyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFJ1bGVzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9SVUxFU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQWdlbnRzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9BR0VOVFNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBUcmFuc2l0aW9uc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ29uc3RyYWludHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05TVFJBSU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHNlbGYjbWVzc2FnZSBQb2x5bWVyc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlBPTFlNRVJTXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfY20pKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3NjYykpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2ltICopXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgKF8gOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwpXG4gICAgICAgIChfIDogQXN0LnBhcnNpbmdfY29tcGlsKSAoXyA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHNpbXVsYXRpb25fbG9hZCBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RQYXJzZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbCBiIHBhdHRlcm5TaGFyaW5nKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBOYnIud3JpdGVfdClcbiAgICAgICAgICAgICAgICAgIGIgb3ZlcndyaXRlcyk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIHBhdXNlKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRlbGV0ZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgRElOIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxESU5cIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNuYXBzaG90IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBsb3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fZWZmaWNpZW5jeSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9pbmZvIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25JbmZvXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gaW50ZXJ2ZW50aW9uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpbnRlcnZlbnRpb24pO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBCaWdTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXVzZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX3BhcmFtZXRlciAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fYXJ0aWZhY3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblN0YXJ0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgYiBwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25UcmFjZVwiKSBdKVxuXG4gICAgKCogbWV0aG9kIHByb2plY3RfcGFyc2Ugb3ZlcndyaXRlID0gKClcblxuICAgICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uID0gKClcbiAgICAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIG1vZGVzID0gTHd0X3Jlc3VsdC5yZXR1cm4gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICAgICBtZXRob2Qgc3RvcnlfbGlzdCA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X2xvZyA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzID0gKClcblxuICAgICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlXG4gICAgICAgICBtZXRob2QgdGVybWluYXRlID0gKCkqKVxuICBlbmRcbiIsIigqIEF1dG8tZ2VuZXJhdGVkIGZyb20gXCJtcGlfbWVzc2FnZS5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyXG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mbyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb1xuXG50eXBlIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9IENvdW50ZXIuRWZmaWNpZW5jeS50XG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3RcblxudHlwZSAoJ29rLCAnZXJyb3IpIGFwaV9yZXN1bHQgPSAoJ29rLCAnZXJyb3IpIEFwaV90eXBlc190LnJlc3VsdFxuXG50eXBlIGFwaV9tZXNzYWdlID0gQXBpX3R5cGVzX3QubWVzc2FnZVxuXG50eXBlICdvayByZXN1bHQgPSAnb2sgTXBpX21lc3NhZ2VfdC5yZXN1bHRcblxudHlwZSBwbG90ID0gQXBpX3R5cGVzX3QucGxvdFxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm9cblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gQXBpX3R5cGVzX3QuZGluXG5cbnR5cGUgcmVzdF9yZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcblxudHlwZSByZXN0X3Jlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlXG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2VcblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyXG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIHJlc3RfcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVzdF9yZXF1ZXN0XG5cbnR5cGUgcmVzcG9uc2VfY29udGVudCA9IE1waV9tZXNzYWdlX3QucmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZVxuXG50eXBlIHJlcXVlc3QgPSBNcGlfbWVzc2FnZV90LnJlcXVlc3RcblxudHlwZSBpZCA9IE1waV9tZXNzYWdlX3QuaWRcblxudHlwZSAnZGF0YSBtZXNzYWdlID0gJ2RhdGEgTXBpX21lc3NhZ2VfdC5tZXNzYWdlID0geyBpZDogaWQ7IGRhdGE6ICdkYXRhIH1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZSA9IEFwaV90eXBlc190LmZpbGVfbGluZVxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2lkXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfaWRcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2NhdGFsb2dcbilcbmxldCBzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS5yZWFkX3RcbilcbmxldCBzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3JcbilcbmxldCBzdHJpbmdfb2ZfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2FwaV9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgYXBpX3Jlc3VsdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9tZXNzYWdlXG4pXG5sZXQgc3RyaW5nX29mX2FwaV9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfbWVzc2FnZVxuKVxubGV0IGFwaV9tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9hcGlfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fYXBpX21lc3NhZ2VfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2FwaV9tZXNzYWdlXG4gIClcbilcbmxldCBfYXBpX21lc3NhZ2VfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX2Egd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9fYSByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF9kMWY5ODI0X29mX3N0cmluZyByZWFkX19hIHMgPVxuICByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayA9IChcbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19va1xuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN1bHQgcmVhZF9fb2sgPSAoXG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX29rXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcGxvdFxuKVxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfbG9nX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9sb2dfbWVzc2FnZVxuKVxubGV0IGxvZ19tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9sb2dfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2Vudmlyb25tZW50X2luZm9cbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2Rpbl9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2NhdGFsb2dcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2RpblxuKVxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gIClcbilcbmxldCBfc3RyaW5nX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFbnZpcm9ubWVudEluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENyZWF0ZVxcXCJcIlxuICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0RGVsZXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0Q2F0YWxvZ1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8geFxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdExvYWRcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZVxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2RpblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2RldGFpbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0XzRjYTZiOGYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IF9yZXN1bHRfNGNhNmI4Zl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IHN0cmluZ19vZl9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCByZXN0X3Jlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJzZVxuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Byb2plY3RfcGFyc2VcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Byb2plY3RfcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcGxvdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90X3BhcmFtZXRlclxuKVxubGV0IHBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2lkXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5faWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2lkXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJFbnZpcm9ubWVudEluZm9cXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RDYXRhbG9nXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDcmVhdGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3REZWxldGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXN0X3JlcXVlc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZSB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0TG9hZFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfbG9nX21lc3NhZ2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5fY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25UcmFjZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25QYXJhbWV0ZXJcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGF1c2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkludGVydmVudGlvblxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF84OTBkOWZlID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF84OTBkOWZlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfODkwZDlmZSA9IChcbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF84OTBkOWZlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0Xzg5MGQ5ZmUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IHN0cmluZ19vZl9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHN0cmluZ19vZl9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlID0gKFxuICByZWFkX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVxdWVzdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbilcbmxldCBzdHJpbmdfb2ZfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4pXG5sZXQgaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSB3cml0ZV9fZGF0YSA6IF8gLT4gJ2RhdGEgbWVzc2FnZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAnZGF0YSBtZXNzYWdlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiaWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX2lkXG4gICAgKVxuICAgICAgb2IgeC5pZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiZGF0YVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2RhdGFcbiAgICApXG4gICAgICBvYiB4LmRhdGE7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSB3cml0ZV9fZGF0YSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSByZWFkX19kYXRhID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2lkID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9kYXRhID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2EnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9kYXRhIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGF0YVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQgPSAobWF0Y2ggIWZpZWxkX2lkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJpZFwiKTtcbiAgICAgICAgICAgIGRhdGEgPSAobWF0Y2ggIWZpZWxkX2RhdGEgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImRhdGFcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAnZGF0YSBtZXNzYWdlKVxuICAgICAgKVxuKVxubGV0IG1lc3NhZ2Vfb2Zfc3RyaW5nIHJlYWRfX2RhdGEgcyA9XG4gIHJlYWRfbWVzc2FnZSByZWFkX19kYXRhIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9kZXRhaWxcbilcbmxldCBmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9maWxlX2xpbmVcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlIG9mIE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudFxuXG5sZXQgb25fbWVzc2FnZSAobWFuYWdlciA6IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24pXG4gICAgKHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0IEx3dC50KSAodGV4dF9tZXNzYWdlIDogc3RyaW5nKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgIE1waV9tZXNzYWdlX2oubWVzc2FnZV9vZl9zdHJpbmcgTXBpX21lc3NhZ2Vfai5yZWFkX3JlcXVlc3QgdGV4dF9tZXNzYWdlXG4gIGluXG4gIGxldCBoYW5kbGVyIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICgnYSAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlX2NvbnRlbnQpIC0+ICdhIEFwaS5yZXN1bHQgLT4gdW5pdCBMd3QudCA9XG4gICBmdW4gcGFjayByZXN1bHQgLT5cbiAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgIHtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5pZCA9IG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZDtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5kYXRhID0gUmVzdWx0X3V0aWwubWFwIHBhY2sgcmVzdWx0O1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHRleHQgOiBzdHJpbmcgPVxuICAgICAgTXBpX21lc3NhZ2Vfai5zdHJpbmdfb2ZfbWVzc2FnZSBNcGlfbWVzc2FnZV9qLndyaXRlX3Jlc3BvbnNlIG1lc3NhZ2VcbiAgICBpblxuICAgIHBvc3RfbWVzc2FnZSB0ZXh0XG4gIGluXG4gIG1hdGNoIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhIHdpdGhcbiAgfCBgUHJvamVjdExvYWQgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSAtPlxuICAgIG1hbmFnZXIjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgUHJvamVjdExvYWQpXG4gIHwgYFNpbXVsYXRpb25Db250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jb250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGZpbGVfbGluZV9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGRpbl9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgcGxvdF9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IHNuYXBzaG90X2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8gPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25JbmZvIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRWZmaWNpZW5jeSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uUGFyYW1ldGVyIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uVHJhY2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9vdXRwdXRzX3ppcFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAoQmFzZTY0LmVuY29kZSByZXN1bHQpKVxuICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGF1c2UgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgID4+PSBoYW5kbGVyIChmdW4gcyAtPiBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzKVxuICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fc3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblN0YXJ0IHJlc3VsdClcblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfYmFzZV90eXBlID0gb2JqZWN0XG4gIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZSA6XG4gICAgTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICBpbmhlcml0IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb25cbmVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfYmFzZSAoKSA6IG1hbmFnZXJfYmFzZV90eXBlID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50XG5cbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZVxuICAgICAgICAoYFByb2plY3RMb2FkXG4gICAgICAgICAgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0TG9hZCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIChmaWxlX2xpbmVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nIGxpc3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfbGlzdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmaWxlX2xpbmVfbGlzdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXAgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmx1eF9tYXApXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX2oubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgbG9nX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX2oucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3QgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGxvdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgKHNuYXBzaG90X2lkIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQpXG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNuYXBzaG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25JbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkluZm8gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9zdGF0dXMpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IGVmZmljaWVuY3kgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZWZmaWNpZW5jeSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSBpbmZvIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfai5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiBpbmZvIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc19qLnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXVzZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9yYXdfdHJhY2UgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCByZXN1bHQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJhc2U2NC5kZWNvZGUgcmVzdWx0KSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX2lkIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb25faWQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuICBlbmRcblxubW9kdWxlIEludE1hcCA9IE1vZHMuSW50TWFwXG5cbnR5cGUgY29udGV4dCA9IHsgbWFpbGJveGVzOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC51IEludE1hcC50OyBpZDogaW50IH1cblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfbXBpX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgcmVjZWl2ZSA6IHN0cmluZyAtPiB1bml0XG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nIDogYm9vbFxuICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlciAoKSA6IG1hbmFnZXJfbXBpX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgY29udGV4dCA9IHsgbWFpbGJveGVzID0gSW50TWFwLmVtcHR5OyBpZCA9IDAgfVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgc2xlZXAgOiBmbG9hdCAtPiB1bml0IEx3dC50XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIChyZXNwb25zZV90ZXh0IDogc3RyaW5nKSA9XG4gICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVzcG9uc2VcbiAgICAgICAgICByZXNwb25zZV90ZXh0XG4gICAgICBpblxuICAgICAgbWF0Y2ggSW50TWFwLnBvcCBtZXNzYWdlLk1waV9tZXNzYWdlX2ouaWQgY29udGV4dC5tYWlsYm94ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlLCBtYWlsYm94ZXMgLT5cbiAgICAgICAgbGV0ICgpID0gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBtYWlsYm94ZXMgfSBpblxuICAgICAgICBMd3Qud2FrZXVwIHZhbHVlIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhXG4gICAgICB8IE5vbmUsIG1haWxib3hlcyAtPiBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIChyZXF1ZXN0IDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0KVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIGlkID0gY29udGV4dC5pZCArIDEgfSBpblxuICAgICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICAgIHsgTXBpX21lc3NhZ2Vfai5pZCA9IGNvbnRleHQuaWQ7IE1waV9tZXNzYWdlX2ouZGF0YSA9IHJlcXVlc3QgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVzc2FnZV90ZXh0IDogc3RyaW5nID1cbiAgICAgICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVxdWVzdCBtZXNzYWdlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHNlbGYjcG9zdF9tZXNzYWdlIG1lc3NhZ2VfdGV4dCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGNvbnRleHQgPC1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGV4dCB3aXRoXG4gICAgICAgICAgICAgIG1haWxib3hlcyA9IEludE1hcC5hZGQgY29udGV4dC5pZCBmZWVkZXIgY29udGV4dC5tYWlsYm94ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBcIkthcHBhIGhhcyBkaWVkXCIpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nID0gbm90IChJbnRNYXAuaXNfZW1wdHkgY29udGV4dC5tYWlsYm94ZXMpXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2Jhc2UgKClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCA9XG4gICggQXBpX3R5cGVzX3QucGxvdCBvcHRpb24sXG4gICAgKHN0cmluZyAqIEFwaV90eXBlc190LmRpbikgbGlzdCxcbiAgICBzdHJpbmcgbGlzdCBNb2RzLlN0cmluZ01hcC50LFxuICAgIEFwaV90eXBlc190LnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyApXG4gIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0XG5cbmxldCBhcGlfc25hcHNob3RfZG90IChzbmFwc2hvdCA6IEFwaV90eXBlc190LnNuYXBzaG90KSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3RcblxubGV0IGFwaV9zbmFwc2hvdF9rYXBwYSAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NpbXVsYXRpb25fc3RhdHVzIChwcm9ncmVzcyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgKGRldGFpbCA6IHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPVxuICBsZXQgb3V0cHV0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9XG4gICAge1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9XG4gICAgICAgIChtYXRjaCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgIHwgU29tZSBwbG90IC0+IExpc3QubGVuZ3RoIHBsb3QuRGF0YS5wbG90X3Nlcmllcyk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID1cbiAgICAgICAgTGlzdC5sZW5ndGggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9XG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLnNpemUgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9ICgpO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgU3RyaW5nLmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIH1cbiAgaW5cbiAge1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBvdXRwdXQ7XG4gIH1cblxuKCogcmV0dXJuIHRoZSBhZ2VudCBjb3VudCAqKVxubGV0IGFnZW50X2NvdW50IChzcGVjaWVzIDogQXBpX3R5cGVzX3Quc2l0ZV9ncmFwaCkgOiBpbnQgPSBBcnJheS5sZW5ndGggc3BlY2llc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAoRnJvbSkgVGhlIENhbWxaaXAgbGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAyMDAxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqKVxuKCogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXcml0ZSB1bmVmZmljaWVudGx5IGJ1dCBpbiBwdXJlIE9DYW1sIHVuY29tcHJlc3NlZCBaSVAgYXJjaGl2ZXMgKilcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgd3JpdGUxIG9jIG4gPSBCaWdidWZmZXIuYWRkX2NoYXIgb2MgKENoYXIudW5zYWZlX2NociBuKVxuXG5sZXQgd3JpdGUyIG9jIG4gPVxuICB3cml0ZTEgb2MgbjtcbiAgd3JpdGUxIG9jIChuIGxzciA4KVxuXG5sZXQgd3JpdGU0IG9jIG4gPVxuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCBuKTtcbiAgd3JpdGUyIG9jIChJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxNikpXG5cbmxldCB3cml0ZTRfaW50IG9jIG4gPVxuICB3cml0ZTIgb2MgbjtcbiAgd3JpdGUyIG9jIChuIGxzciAxNilcblxubGV0IHdyaXRlc3RyaW5nIG9jIHMgPSBCaWdidWZmZXIuYWRkX3N0cmluZyBvYyBzXG5cbnR5cGUgY29tcHJlc3Npb25fbWV0aG9kID0gU3RvcmVkXG5cbnR5cGUgZW50cnkgPSB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGV4dHJhOiBzdHJpbmc7XG4gIGNvbW1lbnQ6IHN0cmluZztcbiAgbWV0aGQ6IGNvbXByZXNzaW9uX21ldGhvZDtcbiAgbXRpbWU6IGZsb2F0O1xuICBjcmM6IGludDMyO1xuICB1bmNvbXByZXNzZWRfc2l6ZTogaW50O1xuICBjb21wcmVzc2VkX3NpemU6IGludDtcbiAgKCppc19kaXJlY3Rvcnk6IGJvb2w7KilcbiAgZmlsZV9vZmZzZXQ6IGludDMyO1xufVxuXG50eXBlIG91dF9maWxlID0ge1xuICBvZl9maWxlbmFtZTogc3RyaW5nO1xuICBvZl9jaGFubmVsOiBCaWdidWZmZXIudDtcbiAgbXV0YWJsZSBvZl9lbnRyaWVzOiBlbnRyeSBsaXN0O1xuICBvZl9jb21tZW50OiBzdHJpbmc7XG59XG5cbigqbGV0IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBuYW1lID1cbiAgU3RyaW5nLmxlbmd0aCBuYW1lID4gMCAmJiBuYW1lLltTdHJpbmcubGVuZ3RoIG5hbWUgLSAxXSA9ICcvJyopXG5cbigqIENvbnZlcnQgYmV0d2VlbiBVbml4IGRhdGVzIGFuZCBET1MgZGF0ZXMgKilcblxubGV0IGRvc3RpbWVfb2ZfdW5peHRpbWUgdCA9XG4gIGxldCB0bSA9IFVuaXgubG9jYWx0aW1lIHQgaW5cbiAgKCAodG0uVW5peC50bV9zZWMgbHNyIDEpICsgKHRtLlVuaXgudG1fbWluIGxzbCA1KSArICh0bS5Vbml4LnRtX2hvdXIgbHNsIDExKSxcbiAgICB0bS5Vbml4LnRtX21kYXlcbiAgICArICgodG0uVW5peC50bV9tb24gKyAxKSBsc2wgNSlcbiAgICArICgodG0uVW5peC50bV95ZWFyIC0gODApIGxzbCA5KSApXG5cbigqIE9wZW4gYSBaSVAgZmlsZSBmb3Igd3JpdGluZyAqKVxuXG5sZXQgb3Blbl9vdXQgPyhjb21tZW50ID0gXCJcIikgZmlsZW5hbWUgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChmaWxlbmFtZSwgXCJcIiwgXCJjb21tZW50IHRvbyBsb25nXCIpKTtcbiAge1xuICAgIG9mX2ZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgb2ZfY2hhbm5lbCA9IEJpZ2J1ZmZlci5jcmVhdGUgODE5MjtcbiAgICBvZl9lbnRyaWVzID0gW107XG4gICAgb2ZfY29tbWVudCA9IGNvbW1lbnQ7XG4gIH1cblxuKCogQ2xvc2UgYSBaSVAgZmlsZSBmb3Igd3JpdGluZy4gIEFkZCBjZW50cmFsIGRpcmVjdG9yeS4gKilcblxubGV0IHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYyBlID1cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwMjAxNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgbWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMTBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbWFkZSBieSAqKVxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCAqKVxuICB3cml0ZTIgb2MgODtcbiAgKCogZmxhZ3MgKilcbiAgd3JpdGUyIG9jXG4gICAgKG1hdGNoIGUubWV0aGQgd2l0aFxuICAgIHwgU3RvcmVkIC0+IDApO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIGUubXRpbWUgaW5cbiAgd3JpdGUyIG9jIHRpbWU7XG4gICgqIGxhc3QgbW9kIHRpbWUgKilcbiAgd3JpdGUyIG9jIGRhdGU7XG4gICgqIGxhc3QgbW9kIGRhdGUgKilcbiAgd3JpdGU0IG9jIGUuY3JjO1xuICAoKiBDUkMzMiAqKVxuICB3cml0ZTRfaW50IG9jIGUuY29tcHJlc3NlZF9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyBlLnVuY29tcHJlc3NlZF9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5maWxlbmFtZSk7XG4gICgqIGZpbGVuYW1lIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5leHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5jb21tZW50KTtcbiAgKCogY29tbWVudCBsZW5ndGggKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyIHN0YXJ0ICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBpbnRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogZXh0ZXJuYWwgYXR0cmlidXRlcyAqKVxuICB3cml0ZTQgb2MgZS5maWxlX29mZnNldDtcbiAgKCogb2Zmc2V0IG9mIGxvY2FsIGhlYWRlciAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmV4dHJhO1xuICAoKiBleHRyYSBpbmZvICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuY29tbWVudCAoKiBmaWxlIGNvbW1lbnQgKilcblxubGV0IGNsb3NlX291dCBvZmlsZSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHN0YXJ0X2NkID0gQmlnYnVmZmVyLmxlbmd0aCBvYyBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYykgKExpc3QucmV2IG9maWxlLm9mX2VudHJpZXMpO1xuICBsZXQgY2Rfc2l6ZSA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgLSBzdGFydF9jZCBpblxuICBsZXQgbnVtX2VudHJpZXMgPSBMaXN0Lmxlbmd0aCBvZmlsZS5vZl9lbnRyaWVzIGluXG4gIGlmIG51bV9lbnRyaWVzID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIFwiXCIsIFwidG9vIG1hbnkgZW50cmllc1wiKSk7XG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDYwNTRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBudW1iZXIgb2YgZGlzayB3aXRoIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIHRoaXMgZGlzayAqKVxuICB3cml0ZTIgb2MgbnVtX2VudHJpZXM7XG4gICgqICMgZW50cmllcyBpbiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIGNkX3NpemU7XG4gICgqIHNpemUgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGU0X2ludCBvYyBzdGFydF9jZDtcbiAgKCogb2Zmc2V0IG9mIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBvZmlsZS5vZl9jb21tZW50KTtcbiAgKCogbGVuZ3RoIG9mIGNvbW1lbnQgKilcbiAgd3JpdGVzdHJpbmcgb2Mgb2ZpbGUub2ZfY29tbWVudDtcbiAgKCogY29tbWVudCAqKVxuICBCaWdidWZmZXIuY29udGVudHMgb2NcblxuKCogV3JpdGUgYSBsb2NhbCBmaWxlIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5ICopXG5cbmxldCBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgZmlsZW5hbWUgPVxuICBpZiBsZXZlbCA8PiAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJmYWtlX3ppcCBjYW5ub3QgY29tcHJlc3NcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZpbGVuYW1lIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBleHRyYSA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJleHRyYSBkYXRhIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBjb21tZW50ID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIGxldCBwb3MgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDQwMzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgbGV0IHZlcnNpb24gPVxuICAgIGlmIGxldmVsID0gMCB0aGVuXG4gICAgICAxMFxuICAgIGVsc2VcbiAgICAgIDIwXG4gIGluXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAoaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgICAwXG4gICAgIGVsc2VcbiAgICAgICA4KTtcbiAgKCogbWV0aG9kICopXG4gIGxldCB0aW1lLCBkYXRlID0gZG9zdGltZV9vZl91bml4dGltZSBtdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgSW50MzIuemVybztcbiAgKCogQ1JDMzIgLSB0byBiZSBmaWxsZWQgbGF0ZXIgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBjb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplIC0gbGF0ZXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBleHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZXN0cmluZyBvYyBmaWxlbmFtZTtcbiAgKCogZmlsZW5hbWUgKilcbiAgd3JpdGVzdHJpbmcgb2MgZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAge1xuICAgIGZpbGVuYW1lO1xuICAgIGV4dHJhO1xuICAgIGNvbW1lbnQ7XG4gICAgbWV0aGQgPSBTdG9yZWQ7XG4gICAgbXRpbWU7XG4gICAgY3JjID0gSW50MzIuemVybztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IDA7XG4gICAgY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICAoKmlzX2RpcmVjdG9yeSA9IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBmaWxlbmFtZTsqKVxuICAgIGZpbGVfb2Zmc2V0ID0gSW50MzIub2ZfaW50IHBvcztcbiAgfVxuXG4oKiBXcml0ZSBhIGRhdGEgZGVzY3JpcHRvciBhbmQgdXBkYXRlIHRoZSBlbnRyeSAqKVxuXG5sZXQgYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZW50cnkgPVxuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDgwNzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGU0IG9jIGNyYztcbiAgKCogQ1JDICopXG4gIHdyaXRlNF9pbnQgb2MgY29tcHJfc2l6ZTtcbiAgKCogY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlNF9pbnQgb2MgdW5jb21wcl9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB7XG4gICAgZW50cnkgd2l0aFxuICAgIGNyYztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IHVuY29tcHJfc2l6ZTtcbiAgICBjb21wcmVzc2VkX3NpemUgPSBjb21wcl9zaXplO1xuICB9XG5cbmxldCB1cGRhdGVfY3JjIGNyYyBidWYgc3RhcnQgbGVuID0gQ3JjMzIuc3RyaW5nIH5jcmMgYnVmIHN0YXJ0IGxlblxuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBzdHJpbmcgKilcblxubGV0IGFkZF9lbnRyeSBkYXRhIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKSA/KGxldmVsID0gMClcbiAgICA/KG10aW1lID0gVW5peC50aW1lICgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gdXBkYXRlX2NyYyBJbnQzMi56ZXJvIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKSBpblxuICBsZXQgY29tcHJfc2l6ZSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBkYXRhIDAgKFN0cmluZy5sZW5ndGggZGF0YSk7XG4gICAgICBTdHJpbmcubGVuZ3RoIGRhdGFcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiAgaW5cbiAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSAoU3RyaW5nLmxlbmd0aCBkYXRhKSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKlxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGFuIGluIGNoYW5uZWwgKilcblxubGV0IGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID8obXRpbWUgPSBVbml4LnRpbWUoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCAoY29tcHJfc2l6ZSwgdW5jb21wcl9zaXplKSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgICAgMCAtPlxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDQwOTYgaW5cbiAgICAgICAgbGV0IHJlYyBjb3B5IHN6ID1cbiAgICAgICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiAwIChCeXRlcy5sZW5ndGggYnVmKSBpblxuICAgICAgICAgIGlmIHIgPSAwIHRoZW4gc3ogZWxzZSBiZWdpblxuICAgICAgICAgICAgY3JjIDo9IHVwZGF0ZV9jcmMgIWNyYyBidWYgMCByO1xuICAgICAgICAgICAgQml0QnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBidWYgMCByO1xuICAgICAgICAgICAgY29weSAoc3ogKyByKVxuICAgICAgICAgIGVuZCBpblxuICAgICAgICBsZXQgc2l6ZSA9IGNvcHkgMCBpblxuICAgICAgICAoc2l6ZSwgc2l6ZSlcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKSBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlICFjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZSBpblxuICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcblxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSAqKVxuXG5sZXQgY29weV9maWxlX3RvX2VudHJ5IGluZmlsZW5hbWUgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID9tdGltZSBuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gaW5maWxlbmFtZSBpblxuICBsZXQgbXRpbWUnID1cbiAgICBtYXRjaCBtdGltZSB3aXRoXG4gICAgICBTb21lIHQgLT4gbXRpbWVcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgdHJ5IFNvbWUoKFVuaXguc3RhdCBpbmZpbGVuYW1lKS5Vbml4LnN0X210aW1lKVxuICAgICAgICB3aXRoIFVuaXguVW5peF9lcnJvcihfLF8sXykgLT4gTm9uZSBpblxuICB0cnlcbiAgICBjb3B5X2NoYW5uZWxfdG9fZW50cnkgaWMgb2ZpbGUgfmV4dHJhIH5jb21tZW50IH5sZXZlbCA/bXRpbWU6bXRpbWUnIG5hbWU7XG4gICAgUGVydmFzaXZlcy5jbG9zZV9pbiBpY1xuICB3aXRoIHggLT5cbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljOyByYWlzZSB4XG4qKVxuXG4oKiBBZGQgYW4gZW50cnkgd2hvc2UgY29udGVudCB3aWxsIGJlIHByb2R1Y2VkIGJ5IHRoZSBjYWxsZXIgKilcblxubGV0IGFkZF9lbnRyeV9nZW5lcmF0b3Igb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSByZWYgSW50MzIuemVybyBpblxuICBsZXQgY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCB1bmNvbXByX3NpemUgPSByZWYgMCBpblxuICBsZXQgZmluaXNoZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNoZWNrICgpID1cbiAgICBpZiAhZmluaXNoZWQgdGhlblxuICAgICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJlbnRyeSBhbHJlYWR5IGZpbmlzaGVkXCIpKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBmaW5pc2hlZCA6PSB0cnVlO1xuICAgIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyAhY29tcHJfc2l6ZSAhdW5jb21wcl9zaXplIGUgaW5cbiAgICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcbiAgaW5cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IDAgLT5cbiAgICAoIChmdW4gYnVmIHBvcyBsZW4gLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIEJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXMgb2ZpbGUub2ZfY2hhbm5lbCBidWYgcG9zIGxlbjtcbiAgICAgICAgY29tcHJfc2l6ZSA6PSAhY29tcHJfc2l6ZSArIGxlbjtcbiAgICAgICAgdW5jb21wcl9zaXplIDo9ICF1bmNvbXByX3NpemUgKyBsZW4pLFxuICAgICAgZnVuICgpIC0+XG4gICAgICAgIGNoZWNrICgpO1xuICAgICAgICBmaW5pc2ggKCkgKVxuICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEVycm9yIG1lc3NhZ2VzICopXG5cbigqKiBJbnRlcmZhY2UgdG8ga2FwcGEgcnVudGltZSAqKVxubGV0IG1zZ19wcm9jZXNzX25vdF9wYXVzZWQgPSBcInByb2Nlc3Mgbm90IHBhdXNlZFwiXG5cbigqKiAgU3lzdGVtIHByb2Nlc3NcblxuICAgICBUaGVzZSBhcmUgc3lzdGVtIHByb2Nlc3MgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGF0XG4gICAgIHZhcnkuXG4qKVxuY2xhc3MgdHlwZSBzeXN0ZW1fcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogP2V4bjpleG4gLT4gc3RyaW5nIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHlpZWxkIDogdW5pdCAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uIDogdW5pdCAtPiBmbG9hdFxuZW5kXG5cbigqKiBUcml2aWFsIGltcGxlbWVudGF0aW9uIHByaW1hcmlseSBmb3IgdW5pdCB0ZXN0aW5nLiAqKVxuY2xhc3MgbnVsbF9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG9nID9leG4gKF8gOiBzdHJpbmcpID1cbiAgICAgIGxldCAoKSA9IGlnbm9yZSBleG4gaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG4gICAgbWV0aG9kIHlpZWxkICgpID0gTHd0LnJldHVybl91bml0XG4gICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjBcbiAgZW5kXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpc19ydW5uaW5nOiBib29sO1xuICBtdXRhYmxlIHJ1bl9maW5hbGl6ZTogYm9vbDtcbiAgbXV0YWJsZSBwYXVzZV9jb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbDtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBwYXR0ZXJuU2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBjb3VudGVyOiBDb3VudGVyLnQ7XG4gIGxvZ19idWZmZXI6IEJ1ZmZlci50O1xuICBsb2dfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgbXV0YWJsZSBwbG90OiBEYXRhLnBsb3Q7XG4gIG11dGFibGUgc25hcHNob3RzOiBEYXRhLnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZGluczogKHN0cmluZyAqIERhdGEuZGluKSBsaXN0O1xuICBtdXRhYmxlIHNwZWNpZXM6XG4gICAgKGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZmlsZXM6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZXJyb3JfbWVzc2FnZXM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgKCptdXRhYmxlKikgdHJhY2U6IEJ1ZmZlci50O1xuICBpbnB1dHNfYnVmZmVyOiBCdWZmZXIudDtcbiAgaW5wdXRzX2Zvcm06IEZvcm1hdC5mb3JtYXR0ZXI7XG4gIGFzdDogQXN0LnBhcnNpbmdfY29tcGlsO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgbXV0YWJsZSBlbnY6IE1vZGVsLnQ7XG4gIG11dGFibGUgZ3JhcGg6IFJ1bGVfaW50ZXJwcmV0ZXIudDtcbiAgbXV0YWJsZSBzdGF0ZTogU3RhdGVfaW50ZXJwcmV0ZXIudDtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBtdXRhYmxlIGxhc3R5aWVsZDogZmxvYXQ7XG59XG4oKiogU3RhdGUgb2YgdGhlIHJ1bm5pbmcgc2ltdWxhdGlvbi4gKilcblxubGV0IGNyZWF0ZV90IH5sb2dfZm9ybSB+bG9nX2J1ZmZlciB+Y29udGFjdF9tYXAgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtXG4gICAgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggfnBhdHRlcm5TaGFyaW5nIH5lbnYgfmNvdW50ZXIgfmdyYXBoXG4gICAgfnN0YXRlIH5pbml0X2wgfmxhc3R5aWVsZCB+YXN0IDogdCA9XG4gIHtcbiAgICBpc19ydW5uaW5nID0gZmFsc2U7XG4gICAgcnVuX2ZpbmFsaXplID0gZmFsc2U7XG4gICAgY291bnRlcjtcbiAgICBsb2dfYnVmZmVyO1xuICAgIGxvZ19mb3JtO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IEFsZ19leHByLkZBTFNFO1xuICAgIGR1bXBJZkRlYWRsb2NrZWQ7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaDtcbiAgICBwYXR0ZXJuU2hhcmluZztcbiAgICBwbG90ID0gRGF0YS5pbml0X3Bsb3QgZW52O1xuICAgIHNuYXBzaG90cyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGRpbnMgPSBbXTtcbiAgICBzcGVjaWVzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZmlsZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBlcnJvcl9tZXNzYWdlcyA9IFtdO1xuICAgIHRyYWNlID0gQnVmZmVyLmNyZWF0ZSAxMDI0O1xuICAgIGlucHV0c19idWZmZXI7XG4gICAgaW5wdXRzX2Zvcm07XG4gICAgYXN0O1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIGVudjtcbiAgICBncmFwaDtcbiAgICBzdGF0ZTtcbiAgICBpbml0X2w7XG4gICAgbGFzdHlpZWxkO1xuICB9XG5cbmxldCByZWluaXRpYWxpemUgfm91dHB1dHMgcmFuZG9tX3N0YXRlIHQgPVxuICBsZXQgKCkgPSBDb3VudGVyLnJlaW5pdGlhbGl6ZSB0LmNvdW50ZXIgaW5cbiAgKCogbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHQubG9nX2Zvcm0gKCkgaW5cbiAgICAgbGV0ICgpID0gQnVmZmVyLnJlc2V0IHQubG9nX2J1ZmZlciBpbiopXG4gIHQuaXNfcnVubmluZyA8LSBmYWxzZTtcbiAgdC5ydW5fZmluYWxpemUgPC0gZmFsc2U7XG4gIHQucGF1c2VfY29uZGl0aW9uIDwtIEFsZ19leHByLkZBTFNFO1xuICB0LnBsb3QgPC0gRGF0YS5pbml0X3Bsb3QgdC5lbnY7XG4gIHQuc25hcHNob3RzIDwtIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB0LmRpbnMgPC0gW107XG4gIHQuZmlsZXMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZXJyb3JfbWVzc2FnZXMgPC0gW107XG4gIHQuZ3JhcGggPC1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlOmZhbHNlIHJhbmRvbV9zdGF0ZSB0LmVudlxuICAgICAgdC5jb3VudGVyO1xuICB0LnN0YXRlIDwtXG4gICAgU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSB0LmNvdW50ZXIgdC5lbnZcblxubGV0IGNhdGNoX2Vycm9yIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgKFwiUnVudGltZSBlcnJvciBcIiBeIGVycm9yKSlcbiAgfCBleG4gLT5cbiAgICBsZXQgbWVzc2FnZSA9XG4gICAgICB0cnkgUHJpbnRleGMudG9fc3RyaW5nIGV4biB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgICBpblxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UpXG5cbmxldCBwYXJzZSB+cGF0dGVyblNoYXJpbmcgKGFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgdmFyX292ZXJ3cml0ZVxuICAgIHN5c3RlbV9wcm9jZXNzID1cbiAgbGV0IHlpZWxkID0gc3lzdGVtX3Byb2Nlc3MjeWllbGQgaW5cbiAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgbG9nX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBsb2dfYnVmZmVyIGluXG4gIGxldCBpbnB1dHNfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IGlucHV0c19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgaW5wdXRzX2J1ZmZlciBpblxuICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9ucyBpblxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IERhdGEucHJpbnRfd2FybmluZyB+cG9zIGxvZ19mb3JtIG1zZyBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3Qud3JhcDJcbiAgICAgICAgKGZ1biB2YXJfb3ZlcndyaXRlIC0+XG4gICAgICAgICAgTEthcHBhX2NvbXBpbGVyLmNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfnZhcl9vdmVyd3JpdGUpXG4gICAgICAgIHZhcl9vdmVyd3JpdGUgYXN0XG4gICAgICA+Pj0gZnVuIChhc3RfY29tcGlsZWRfZGF0YSA6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YSkgLT5cbiAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICgqIFRoZSBsYXN0IHlpZWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGxhc3QgeWllbGQuXG4gICAgICAgICBJdCBpcyBnb3R0ZW4gaGVyZSBmb3IgdGhlIGluaXRpYWwgbGFzdCB5ZWlsZCB2YWx1ZS4gKilcbiAgICAgIGxldCBsYXN0eWllbGQgPSBTeXMudGltZSAoKSBpblxuICAgICAgdHJ5XG4gICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgY29tcGlsZSBtdXN0IGhhdmUgdXNlZCBMd3QuZmFpbC5cbiAgICAgICAgICAgU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cgKilcbiAgICAgICAgbGV0IG91dHB1dHMgPSBmdW5jdGlvblxuICAgICAgICAgIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIiVzQC5cIiBzXG4gICAgICAgICAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBsb2dfZm9ybSBtc2dcbiAgICAgICAgICB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuRElOIF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgICAgICAgIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgX1xuICAgICAgICAgIHwgRGF0YS5QcmludCBfIC0+XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgRXZhbC5jb21waWxlIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgfnBhdXNlOihmdW4gZiAtPiBMd3QuYmluZCAoeWllbGQgKCkpIGYpXG4gICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuID9yZXNjYWxlX2luaXQ6Tm9uZSA/b3ZlcndyaXRlX3QwOk5vbmVcbiAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIH5vdXRwdXRzIH5zaGFyaW5nOnBhdHRlcm5TaGFyaW5nXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZyBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lc1xuICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIGFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICAgICAgICA+Pj0gZnVuIChlbnYsIHdpdGhfdHJhY2UsIGluaXRfbCkgLT5cbiAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgIENvdW50ZXIuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdF90OigwLiA6IGZsb2F0KVxuICAgICAgICAgICAgfmluaXRfZTooMCA6IGludClcbiAgICAgICAgICAgID9tYXhfdGltZTpOb25lID9tYXhfZXZlbnQ6Tm9uZSB+cGxvdF9wZXJpb2Q6KENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIGVudikgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoZVNlZWQgPVxuICAgICAgICAgIG1hdGNoIGNvbmYuQ29uZmlndXJhdGlvbi5zZWVkIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFJhbmRvbS5zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgICAgIGxldCBvdXQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nX2Zvcm0gXCJSYW5kb20gc2VlZCB1c2VkOiAlaUAuXCIgb3V0IGluXG4gICAgICAgICAgICBvdXRcbiAgICAgICAgICB8IFNvbWUgdGhlU2VlZCAtPiB0aGVTZWVkXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUubWFrZSBbfCB0aGVTZWVkIHxdIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyA/dXVpZDpOb25lXG4gICAgICAgICAgICB7IGNvbmYgd2l0aCBDb25maWd1cmF0aW9uLnNlZWQgPSBTb21lIHRoZVNlZWQgfVxuICAgICAgICAgICAgZW52IGlucHV0c19mb3JtIGluaXRfbFxuICAgICAgICBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbiA9XG4gICAgICAgICAgY3JlYXRlX3QgfmNvbnRhY3RfbWFwOmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIH5sb2dfZm9ybVxuICAgICAgICAgICAgfmxvZ19idWZmZXIgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtIH5hc3QgfmVudiB+Y291bnRlclxuICAgICAgICAgICAgfmR1bXBJZkRlYWRsb2NrZWQ6Y29uZi5Db25maWd1cmF0aW9uLmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOmNvbmYuQ29uZmlndXJhdGlvbi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICAgICB+cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICAgIH5ncmFwaDpcbiAgICAgICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudlxuICAgICAgICAgICAgICAgICBjb3VudGVyKVxuICAgICAgICAgICAgfnN0YXRlOlxuICAgICAgICAgICAgICAoU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSBjb3VudGVyIGVudilcbiAgICAgICAgICAgIH5pbml0X2wgfmxhc3R5aWVsZFxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uKVxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIChjYXRjaF9lcnJvciAoZnVuIHggLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyB4IF0pKSkgZSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBvdXRwdXRzIChzaW11bGF0aW9uIDogdCkgPSBmdW5jdGlvblxuICB8IERhdGEuRElOIChmbHV4X25hbWUsIGZsdXhfbWFwKSAtPlxuICAgIHNpbXVsYXRpb24uZGlucyA8LSAoZmx1eF9uYW1lLCBmbHV4X21hcCkgOjogc2ltdWxhdGlvbi5kaW5zXG4gIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEYXRhLlBsb3QgbmV3X29ic2VydmFibGVzIC0+XG4gICAgc2ltdWxhdGlvbi5wbG90IDwtIERhdGEuYWRkX3Bsb3RfbGluZSBuZXdfb2JzZXJ2YWJsZXMgc2ltdWxhdGlvbi5wbG90XG4gIHwgRGF0YS5TcGVjaWVzIChmaWxlLCB0aW1lLCBtaXgpIC0+XG4gICAgbGV0IHAgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gZmlsZSBzaW11bGF0aW9uLnNwZWNpZXMgaW5cbiAgICBzaW11bGF0aW9uLnNwZWNpZXMgPC1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBmaWxlICgodGltZSwgbWl4KSA6OiBwKSBzaW11bGF0aW9uLnNwZWNpZXNcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSAtPlxuICAgIChtYXRjaCBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBzaW11bGF0aW9uLmxvZ19mb3JtIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gICAgfCBTb21lIG5hIC0+XG4gICAgICBsZXQgbGluZXMgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gbmEgc2ltdWxhdGlvbi5maWxlcyBpblxuICAgICAgc2ltdWxhdGlvbi5maWxlcyA8LVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgbmFcbiAgICAgICAgICAoZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHQgOjogbGluZXMpXG4gICAgICAgICAgc2ltdWxhdGlvbi5maWxlcylcbiAgfCBEYXRhLlNuYXBzaG90IChmaWxlbmFtZSwgc25hcHNob3QpIC0+XG4gICAgbGV0IGFscmVhZHlfdGhlcmUgeCA9IE1vZHMuU3RyaW5nTWFwLm1lbSB4IHNpbXVsYXRpb24uc25hcHNob3RzIGluXG4gICAgbGV0IHNuYXBzaG90X2ZpbGUgPVxuICAgICAgVG9vbHMuZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBmaWxlbmFtZVxuICAgICAgICB+ZmFjdWx0YXRpdmU6KHN0cmluZ19vZl9pbnQgc25hcHNob3QuRGF0YS5zbmFwc2hvdF9ldmVudClcbiAgICAgICAgfmV4dDpOb25lXG4gICAgaW5cbiAgICBzaW11bGF0aW9uLnNuYXBzaG90cyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHNuYXBzaG90X2ZpbGUgc25hcHNob3Qgc2ltdWxhdGlvbi5zbmFwc2hvdHNcbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIHNpbXVsYXRpb24ubG9nX2Zvcm0gbXNnXG4gIHwgRGF0YS5UcmFjZVN0ZXAgc3QgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHNpbXVsYXRpb24udHJhY2VcbiAgICAgICAgKGlmIEJ1ZmZlci5sZW5ndGggc2ltdWxhdGlvbi50cmFjZSA9IDAgdGhlblxuICAgICAgICAgICAnWydcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgJywnKVxuICAgIGluXG4gICAgVHJhY2Uud3JpdGVfc3RlcCBzaW11bGF0aW9uLnRyYWNlIHN0XG5cbmxldCBpbnRlcmFjdGl2ZV9vdXRwdXRzIGZvcm1hdHRlciB0ID0gZnVuY3Rpb25cbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gRGF0YS5wcmludF93YXJuaW5nID9wb3MgZm9ybWF0dGVyIG1zZ1xuICB8IERhdGEuUHJpbnQgZmlsZV9saW5lIHdoZW4gZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX25hbWUgPSBOb25lIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gIHwgKCBEYXRhLkRJTiBfIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5TcGVjaWVzIF9cbiAgICB8IERhdGEuUHJpbnQgXyB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuVHJhY2VTdGVwIF8gKSBhcyB2IC0+XG4gICAgb3V0cHV0cyB0IHZcblxubGV0IHRpbWVfeWllbGQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gIGlmIHRpbWUgLS4gdC5sYXN0eWllbGQgPiBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpIHRoZW4gKFxuICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIHRpbWUgaW5cbiAgICBzeXN0ZW1fcHJvY2VzcyN5aWVsZCAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGZpbmFsaXplX3NpbXVsYXRpb24gfih0IDogdCkgOiB1bml0ID1cbiAgU3RhdGVfaW50ZXJwcmV0ZXIuZW5kX29mX3NpbXVsYXRpb24gfm91dHB1dHM6KG91dHB1dHMgdCkgdC5lbnYgdC5jb3VudGVyXG4gICAgdC5ncmFwaCB0LnN0YXRlXG5cbmxldCBydW5fc2ltdWxhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIHN0b3BwZWQgOlxuICAgIHVuaXQgTHd0LnQgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgcnN0b3AgPSByZWYgc3RvcHBlZCBpblxuICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIHRydWUgaW5cbiAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICh0cnlcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgICAgKG5vdCAhcnN0b3ApXG4gICAgICAgICAgICAgICAmJiBTeXMudGltZSAoKSAtLiB0Lmxhc3R5aWVsZFxuICAgICAgICAgICAgICAgICAgPCBzeXN0ZW1fcHJvY2VzcyNtaW5fcnVuX2R1cmF0aW9uICgpXG4gICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgIGxldCBzdG9wLCBncmFwaCcsIHN0YXRlJyA9XG4gICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLmFfbG9vcCB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgIH5kdW1wSWZEZWFkbG9ja2VkOnQuZHVtcElmRGVhZGxvY2tlZFxuICAgICAgICAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOnQubWF4Q29uc2VjdXRpdmVDbGFzaCB0LmVudiB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICB0LmdyYXBoIHQuc3RhdGVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICByc3RvcCA6PVxuICAgICAgICAgICAgICAgICBzdG9wXG4gICAgICAgICAgICAgICAgIHx8IFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCB0LmNvdW50ZXIgZ3JhcGgnXG4gICAgICAgICAgICAgICAgICAgICAgdC5wYXVzZV9jb25kaXRpb247XG4gICAgICAgICAgICAgICB0LmdyYXBoIDwtIGdyYXBoJztcbiAgICAgICAgICAgICAgIHQuc3RhdGUgPC0gc3RhdGUnXG4gICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIHdpdGggZSAtPiBMd3QuZmFpbCBlKVxuICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgIGlmICFyc3RvcCB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgKSBlbHNlIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQubGFzdHlpZWxkIDwtIFN5cy50aW1lICgpIGluXG4gICAgICAgICAgaXRlciAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgaXRlciAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBpZiB0LnJ1bl9maW5hbGl6ZSB0aGVuIGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+XG4gICAgICAgICBsZXQgKCkgPSB0LmlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBzdGFydCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpXG4gICAgfihwYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgfih0IDogdCkgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID1cbiAgICBMZXhpbmcuZnJvbV9zdHJpbmcgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXG4gIGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X3RpbWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ291bnRlci5zZXRfbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc19qLnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgICAgaW4qKVxuICAgICAgbGV0IHJhbmRvbV9zdGF0ZSA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpXG4gICAgICAgIHwgU29tZSBzZWVkIC0+IFJhbmRvbS5TdGF0ZS5tYWtlIFt8IHNlZWQgfF1cbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSByZWluaXRpYWxpemUgcmFuZG9tX3N0YXRlIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAoRXZhbHVhdG9yLmdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuZ3JhcGggcGF1c2VcbiAgICAgICAgPj49IGZ1biAoZW52JywgZ3JhcGgnLCBiJycpIC0+XG4gICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcgaW5cbiAgICAgICAgbGV0ICgpID0gdC5wYXVzZV9jb25kaXRpb24gPC0gYicnIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgQ291bnRlci5zZXRfcGxvdF9wZXJpb2QgdC5jb3VudGVyXG4gICAgICAgICAgICAoQ29uZmlndXJhdGlvbi5EVCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wbG90X3BlcmlvZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAoKiBleGNlcHRpb24gcmFpc2VkIGJ5IGJ1aWxkX2luaXRpYWxfc3RhdGUgbXVzdCBoYXZlIGJlZW5cbiAgICAgICAgICAgICAgICAgICByYWlzZWQgd2l0aCBMd3QuZmFpbC4gU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cuLi4gKilcbiAgICAgICAgICAgICAgICBFdmFsLmJ1aWxkX2luaXRpYWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIH5iaW5kOihmdW4geCBmIC0+XG4gICAgICAgICAgICAgICAgICAgIHRpbWVfeWllbGQgfnN5c3RlbV9wcm9jZXNzIH50ID4+PSBmdW4gKCkgLT4geCA+Pj0gZilcbiAgICAgICAgICAgICAgICAgIH5yZXR1cm46THd0LnJldHVybiB+ZGVidWdfbW9kZTpmYWxzZSB+b3V0cHV0czoob3V0cHV0cyB0KVxuICAgICAgICAgICAgICAgICAgfndpdGhfdHJhY2U6cGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIH53aXRoX2RlbHRhX2FjdGl2aXRpZXM6ZmFsc2UgdC5jb3VudGVyIHQuZW52IHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAgICAgICAgdC5pbml0X2xcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIChzdG9wLCBncmFwaCwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHQuZ3JhcGggPC0gZ3JhcGg7XG4gICAgICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlyc3Rfb2JzID1cbiAgICAgICAgICAgICAgICAgIFN0YXRlX2ludGVycHJldGVyLm9ic2VydmFibGVzX3ZhbHVlcyB0LmVudiBncmFwaCB0LmNvdW50ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IHQucGxvdCA8LSBEYXRhLmFkZF9wbG90X2xpbmUgZmlyc3Rfb2JzIHQucGxvdCBpblxuICAgICAgICAgICAgICAgIHJ1bl9zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2VzcyB+dCBzdG9wXG4gICAgICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgICAgIGNhdGNoX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdC5lcnJvcl9tZXNzYWdlcyA8LSBbIGUgXSBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICAgICAgICBlKVxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT5cbiAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwYXVzZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgIHQuaXNfcnVubmluZyA8LSBmYWxzZVxuICAgIGVsc2VcbiAgICAgICgpXG4gIGluXG4gIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuXG5sZXQgc3RvcCB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IHQucnVuX2ZpbmFsaXplIDwtIHRydWUgaW5cbiAgICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICAgIHBhdXNlIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGZpbmFsaXplX3NpbXVsYXRpb24gfnQgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IHBlcnR1cmJhdGlvbiB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwZXJ0dXJiYXRpb24gOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvbikgOlxuICAgIChzdHJpbmcsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBlcnR1cmJhdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgbXNnX3Byb2Nlc3Nfbm90X3BhdXNlZClcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZSA9IEtwYXJzZXI0LnN0YW5kYWxvbmVfZWZmZWN0X2xpc3QgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbG9nX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgNTEyIGluXG4gICAgICAgICAgbGV0IGxvZ19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgbG9nX2J1ZmZlciBpblxuICAgICAgICAgIEx3dC53cmFwNlxuICAgICAgICAgICAgKEV2YWx1YXRvci5kb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgICAgICB+b3V0cHV0czooaW50ZXJhY3RpdmVfb3V0cHV0cyBsb2dfZm9ybSB0KVxuICAgICAgICAgICAgICAgfnNoYXJpbmc6dC5wYXR0ZXJuU2hhcmluZyB+c3ludGF4X3ZlcnNpb246QXN0LlY0KVxuICAgICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmNvdW50ZXIgdC5ncmFwaCB0LnN0YXRlIGVcbiAgICAgICAgICA+Pj0gZnVuIChlJywgKGVudicsIChfLCBncmFwaCcnLCBzdGF0ZScpKSkgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5zdGF0ZSA8LSBzdGF0ZScgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5sb2dfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgdC5pbnB1dHNfZm9ybSBcIiUlbW9kOiBbRV0gPSAlaSBkbyAlYUAuXCJcbiAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXIpXG4gICAgICAgICAgICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvblxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5tb2RpZmljYXRpb24gfm5vQ291bnRlcnM6ZmFsc2UgfmVudjp0LmVudikpXG4gICAgICAgICAgICAgIGUnXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoQnVmZmVyLmNvbnRlbnRzIGxvZ19idWZmZXIpKVxuICAgICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gICAgICApKVxuICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcblxubGV0IGNvbnRpbnVlIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdClcbiAgICB+KHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOlxuICAgICh1bml0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHBhdXNlX2NvbmRpdGlvbiBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgcGF1c2UgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2Jvb2xfZXhwciBLbGV4ZXI0LnRva2VuIGxleGJ1ZiBpblxuICAgICAgICAgIEx3dC53cmFwNFxuICAgICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5ncmFwaCBwYXVzZVxuICAgICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICAgIGxldCAoKSA9IHQuZW52IDwtIGVudicgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LmdyYXBoIDwtIGdyYXBoJyBpblxuICAgICAgICAgIGxldCAoKSA9IHQucGF1c2VfY29uZGl0aW9uIDwtIGInJyBpblxuICAgICAgICAgICgqbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF90aW1lXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgIHQuY291bnRlclxuICAgICAgICAgICAgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fbWF4X2V2ZW50c1xuICAgICAgICAgICAgaW4qKVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPiBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgZmFsc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwcm9ncmVzcyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcywgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50XG4gICAgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0ICgpID0gaWdub3JlIHQgaW5cbiAgbWF0Y2ggdC5lcnJvcl9tZXNzYWdlcyB3aXRoXG4gIHwgW10gLT5cbiAgICBMd3QuY2F0Y2hcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF90aW1lIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlID1cbiAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgKGZ1biB4IC0+IGludF9vZl9mbG9hdCAoeCAqLiAxMDAuKSlcbiAgICAgICAgICAgICAgICAgICAoQ291bnRlci50aW1lX3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50ID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci5jdXJyZW50X2V2ZW50IHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuZXZlbnRfcmF0aW8gdC5jb3VudGVyKTtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLnRyYWNrZWRfZXZlbnRzIHQuY291bnRlcjtcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA9IHQuaXNfcnVubmluZztcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBvdXRwdXRzIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOlxuICAgIChBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIG1hdGNoIHQuZXJyb3JfbWVzc2FnZXMgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90ID0gU29tZSB0LnBsb3Q7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID0gdC5kaW5zO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcyA9IHQuZmlsZXM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSB0LnNuYXBzaG90cztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9XG4gICAgICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyB0LmlucHV0c19idWZmZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5sb2dfYnVmZmVyO1xuICAgICAgICAgICAgIH0pKVxuICAgICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuICB8IF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgdC5lcnJvcl9tZXNzYWdlcylcblxubGV0IGVmZmljaWVuY3kgdCA9IENvdW50ZXIuZ2V0X2VmZmljaWVuY3kgdC5jb3VudGVyXG5cbmxldCBnZXRfcmF3X3RyYWNlIHQgPVxuICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAoZnVuIG9iIHQgLT5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGljdFwiXG4gICAgICAgICAgKGZ1biBvYiAoKSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgQWdlbnQuanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEluc3RhbnRpYXRpb24uanNvbl9kaWN0aW9ubmFyeSBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLlNpbXVsYXRpb25faW5mby5qc29uX2RpY3Rpb25uYXJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFRyYWNlLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgICAgICAgb2IgKClcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJtb2RlbFwiIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIG9iXG4gICAgICAgICAgKE1vZGVsLnRvX3lvanNvbiB0LmVudilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0cmFjZVwiIEJ1ZmZlci5hZGRfc3RyaW5nIG9iXG4gICAgICAgICAgKEJ1ZmZlci5jb250ZW50cyB0LnRyYWNlKVxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXX1cIilcbiAgICB0XG5cbmxldCBnZXRfcmF3X2FzdCB0ID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIHQuYXN0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogYWRkZCBzZWVkIHRvIHBhcmFtZXRlciAqKVxubGV0IHBhdGNoX3BhcmFtZXRlciAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogaW50ID1cbiAgbWF0Y2ggc2ltdWxhdGlvbl9wYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgIGxldCBzZWVkID0gUmFuZG9tLmJpdHMgKCkgaW5cbiAgICB7IHNpbXVsYXRpb25fcGFyYW1ldGVyIHdpdGggQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkID0gU29tZSBzZWVkIH0sIHNlZWRcbiAgfCBTb21lIHNlZWQgLT4gc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNlZWRcblxubGV0IGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIGhhbmRsZXIgPVxuICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgfCBTb21lIChfLCBzaW11bGF0aW9uKSAtPiBoYW5kbGVyIHNpbXVsYXRpb25cbiAgfCBOb25lIC0+XG4gICAgbGV0IG0gPSBcIk5vIHNpbXVsYXRpb24gYXZhaWxhYmxlXCIgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxubGV0IGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uXG4gICAgfihzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcbiAgICB+KHByb2plY3Rpb24gOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCkgOlxuICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazpcbiAgICAgICAgICAgICAgKGZ1biAoc2ltdWxhdGlvbl9kZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKHByb2plY3Rpb24gc2ltdWxhdGlvbl9kZXRhaWwpXG4gICAgICAgICAgICAgICAgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX2ZpbGVfbGluZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmlsZV9saW5lIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmlsZV9saW5lcyA6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgICAgICBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX2xpbmVfY2F0YWxvZyA6IHN0cmluZyBsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IChNb2RzLlN0cmluZ01hcC5iaW5kaW5ncyBmaWxlX2xpbmVzKVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9jYXRhbG9nXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWRcbiAgICAgICAgKHN0YXR1cyA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVfbGlzdCA9IHN0YXR1cy5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBmaWxlX2xpbmVfaWQgZmlsZV9saW5lX2xpc3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmaWxlX2xpbmVfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cbiAgICAgIHwgU29tZSBsaW5lcyAtPiBSZXN1bHRfdXRpbC5vayAoTGlzdC5yZXYgbGluZXMpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19maWxlX2xpbmVcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmx1eF9tYXAgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBpbmZvX2ZsdXhfbWFwIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwIGZzdCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZsdXhfbWFwX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9mbHV4X21hcCAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZsdXhfbWFwc19saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgaW5cbiAgICAgIHRyeSBSZXN1bHRfdXRpbC5vayAoTGlzdC5hc3NvYyBmbHV4X21hcF9pZCBmbHV4X21hcHNfbGlzdClcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmbHV4X21hcF9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjpzZWxmI2luZm9fZmx1eF9tYXBcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmx1eF9tYXAgZmx1eF9tYXBfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfbG9nX21lc3NhZ2UgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBsb2dfbWVzc2FnZSAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LmxvZ19tZXNzYWdlIEFwaS5yZXN1bHQgPVxuICAgICAgUmVzdWx0X3V0aWwub2sgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb246c2VsZiNsb2dfbWVzc2FnZVxuICBlbmRcblxubGV0IHNlbGVjdF9vYnNlcnZhYmxlcyAocGxvdF9saW1pdCA6IEFwaV90eXBlc190LnBsb3RfbGltaXQpXG4gICAgKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSA6IEFwaV90eXBlc190LnBsb3QgPVxuICBsZXQgcGxvdF90aW1lX3NlcmllcyA9IFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IHBsb3QuRGF0YS5wbG90X3NlcmllcyBpblxuICBsZXQgcGxvdF9kZXRhaWxfc2l6ZSA9IEFycmF5Lmxlbmd0aCBwbG90X3RpbWVfc2VyaWVzIGluXG4gIGxldCBwbG90X2xpbWl0X29mZnNldCA9IHBsb3RfbGltaXQuQXBpX3R5cGVzX3QucGxvdF9saW1pdF9vZmZzZXQgaW5cbiAgbGV0IHBsb3RfbGltaXRfcG9pbnRzID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X3BvaW50cyBpblxuICBsZXQgc3RhcnQsIGxlbiA9XG4gICAgbWF0Y2ggcGxvdF9saW1pdF9vZmZzZXQsIHBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMCwgcGxvdF9kZXRhaWxfc2l6ZVxuICAgIHwgU29tZSBvZmZzZXQsIE5vbmUgLT4gb2Zmc2V0LCBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldClcbiAgICB8IE5vbmUsIFNvbWUgbmIgLT4gbWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBuYiksIG1pbiBuYiBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgU29tZSBuYiAtPiBvZmZzZXQsIG1pbiBuYiAobWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBvZmZzZXQpKVxuICBpblxuICBsZXQgbmV3X3Bsb3RfdGltZV9zZXJpZXMgPVxuICAgIExpc3QucmV2IChBcnJheS50b19saXN0IChBcnJheS5zdWIgcGxvdF90aW1lX3NlcmllcyBzdGFydCBsZW4pKVxuICBpblxuICB7IHBsb3Qgd2l0aCBEYXRhLnBsb3Rfc2VyaWVzID0gbmV3X3Bsb3RfdGltZV9zZXJpZXMgfVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfcGxvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9wbG90IChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0ID1cbiAgICAgIG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgIHwgU29tZSBwbG90IC0+IFJlc3VsdF91dGlsLm9rIChzZWxlY3Rfb2JzZXJ2YWJsZXMgcGxvdF9saW1pdCBwbG90KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gXCJwbG90IG5vdCBhdmFpbGFibGVcIiBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfcGxvdCBwbG90X3BhcmFtZXRlcilcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9zbmFwc2hvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fc25hcHNob3QgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90cyA9IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgaW5cbiAgICAgIGxldCBzbmFwc2hvdF9jYXRhbG9nID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuZm9sZCAoZnVuIHggXyBhY2MgLT4geCA6OiBhY2MpIHNuYXBzaG90cyBbXVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHNuYXBzaG90X2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBzbmFwc2hvdF9saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc25hcHNob3RfaWQgc25hcHNob3RfbGlzdCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIHNuYXBzaG90X2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9zbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50KVxuICBlbmRcblxuY2xhc3MgbWFuYWdlcl9zaW11bGF0aW9uIHByb2plY3QgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHRleHQgb3ZlcndyaXRlcyA9XG4gICAgICBsZXQgYXN0ID0gdGV4dCBpblxuICAgICAgbGV0IGhhcmFraXJpLCBfID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgcHJvamVjdCNzZXRfc3RhdGVcbiAgICAgICAgICAoTHd0LnBpY2tcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUucGFyc2UgfnBhdHRlcm5TaGFyaW5nIGFzdCBvdmVyd3JpdGVzIHN5c3RlbV9wcm9jZXNzO1xuICAgICAgICAgICAgICAgKCBoYXJha2lyaSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBBcGlfY29tbW9uLmVycm9yX21zZyBcIlBhcnNlIGNhbmNlbGxlZCBieSBtb2RpZmllZCBmaWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgIF0pICk7XG4gICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3NpbXVsYXRpb25fc3RvcCA+Pj0gZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNpbXVsYXRpb24gPC0gTm9uZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyLCBzaW11bGF0aW9uX3NlZWQgPVxuICAgICAgICBwYXRjaF9wYXJhbWV0ZXIgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQ29uZmxpY3RcbiAgICAgICAgICAgICBcIkEgc2ltdWxhdGlvbiBhbHJlYWR5IGV4aXN0c1wiKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHByb2plY3QjZ2V0X3N0YXRlICgpID4+PSAoIGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgIFwiQ2Fubm90IHN0YXJ0IHNpbXVsYXRpb246IFBhcnNlIG5vdCBkb25lXCIpXG4gICAgICAgIHwgU29tZSBwYXJzZSAtPlxuICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChmYWNhZGUgOiBLYXBwYV9mYWNhZGUudCkgLT5cbiAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLnN0YXJ0IH5zeXN0ZW1fcHJvY2VzcyB+cGFyYW1ldGVyOnNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfnQ6ZmFjYWRlXG4gICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24gPC0gU29tZSAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIGZhY2FkZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpXG4gICAgICAgICAgICBwYXJzZSApXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIChwYXJhbWV0ZXIsIF8pIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHBhcmFtZXRlcilcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZ2V0X3Jhd190cmFjZSB0KSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9vdXRwdXRzX3ppcCA9XG4gICAgICBsZXQgYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUgbmFtZSBzbmFwc2hvdCA9XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmRvdFwiIHRoZW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIlxuICAgICAgICAgICAgICAgKERhdGEucHJpbnRfZG90X3NuYXBzaG90ID91dWlkOk5vbmUpXG4gICAgICAgICAgICAgICBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZSlcbiAgICAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgP2xlbjpOb25lIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmFtZScgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBcIi5rYVwiIGluXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUnKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGFkZF9kaW4gZmlsZSBmaWxlbmFtZSAoZGluX25hbWUsIGZsdXgpID1cbiAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIERhdGEucHJpbnRfaHRtbF9kaW4gZmx1eFxuICAgICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgICAgIERhdGEuc3RyaW5nX29mX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSBmbHV4KVxuICAgICAgICAgIGZpbGVcbiAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIGRpbl9uYW1lKVxuICAgICAgaW5cbiAgICAgIGxldCBwcm9qZWN0aW9uIHQgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcInNpbXVsYXRpb25fb3V0cHV0c1wiIGluXG4gICAgICAgICAgbGV0IGZpbGUgPSBGYWtlemlwLm9wZW5fb3V0IChmaWxlbmFtZSBeIFwiLnppcFwiKSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeSB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyBmaWxlXG4gICAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL2lucHV0cy5rYVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvbG9nLnR4dFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBwbG90IC0+XG4gICAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAgICAgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjpmYWxzZSBwbG90KVxuICAgICAgICAgICAgICAgIGZpbGUgKGZpbGVuYW1lIF4gXCIvZGF0YS5jc3ZcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gbmFtZSBjb250ZW50IC0+XG4gICAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QucmV2IGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyIChhZGRfZGluIGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGFkZF9zbmFwc2hvdCBmaWxlIGZpbGVuYW1lKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IEZha2V6aXAuY2xvc2Vfb3V0IGZpbGUgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayBvdXRcbiAgICAgICAgd2l0aCBGYWtlemlwLkVycm9yIChfLCBmLCBlKSAtPlxuICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyAoXCJaaXAgZXJyb3IgaW4gXCIgXiBmIF4gXCI6IFwiIF4gZSlcbiAgICAgIGluXG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb25cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnQgPj49IGZ1biBfIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2ltdWxhdGlvbl9zdG9wIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5zdG9wIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25fcGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBlcnR1cmJhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgICAgICAgIH5wZXJ0dXJiYXRpb246c2ltdWxhdGlvbl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcykpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5jb250aW51ZSB+c3lzdGVtX3Byb2Nlc3MgfnQgfnBhdXNlX2NvbmRpdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnByb2dyZXNzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcHJvZ3Jlc3MgLT5cbiAgICAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIG91dHB1dHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcGlfZGF0YS5hcGlfc2ltdWxhdGlvbl9zdGF0dXMgcHJvZ3Jlc3Mgb3V0cHV0cykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZWZmaWNpZW5jeSB0KSkpXG5cbiAgICBpbmhlcml0IG1hbmFnZXJfZmlsZV9saW5lIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2ZsdXhfbWFwIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2xvZ19tZXNzYWdlIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3Bsb3Qgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfc25hcHNob3Qgc3lzdGVtX3Byb2Nlc3NcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW5pdF9jb21wcmVzc2lvbl9tb2RlID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSBmYWxzZSB9XG4gIHwgU3RvcnlfanNvbi5XZWFrIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IGZhbHNlOyBBcGkud2VhayA9IGZhbHNlOyBBcGkuc3Ryb25nID0gdHJ1ZSB9XG5cbmxldCBhZGRfY29tcHJlc3Npb25fbW9kZSB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+IHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhayA9IHRydWU7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+IHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IHByaW50X2NvbXByZXNzaW9uX21vZGVzIGYgeyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgbGV0ICgpID0gaWYgY2F1c2FsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiQ0FVU0FMXCIgaW5cbiAgbGV0ICgpID1cbiAgICBpZiB3ZWFrIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAoaWYgY2F1c2FsIHRoZW5cbiAgICAgICAgICAgXCIsIFdFQUtcIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIldFQUtcIilcbiAgaW5cbiAgaWYgc3Ryb25nIHRoZW5cbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgIChpZiBjYXVzYWwgfHwgd2VhayB0aGVuXG4gICAgICAgICBcIiwgU1RST05HXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIlNUUk9OR1wiKVxuXG50eXBlIHN0YXRlX3QgPSB7XG4gIHJ1bm5pbmc6IGJvb2w7XG4gIHByb2dyZXNzOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb247XG4gIGxvZzogc3RyaW5nIGxpc3Q7XG4gIHN0b3JpZXM6XG4gICAgKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgIE1vZHMuSW50TWFwLnQ7XG59XG5cbnR5cGUgc3RhdGUgPSBzdGF0ZV90IHJlZlxuXG4oKmxldCBzdGF0ZV9lcSBhIGIgPVxuICBhLnJ1bm5pbmcgPSBiLnJ1bm5pbmcgJiZcbiAgT3B0aW9uX3V0aWwuZXF1YWwgKD0pIGEucHJvZ3Jlc3MgYi5wcm9ncmVzcyAmJlxuICAodHJ5IExpc3QuZm9yX2FsbDIgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMCkgYS5sb2cgYi5sb2dcbiAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBNb2RzLkludE1hcC5lcXVhbCAoPSkgYS5zdG9yaWVzIGIuc3RvcmllcyopXG5cbmxldCBpbml0aWFsX3N0YXRlID1cbiAgeyBydW5uaW5nID0gZmFsc2U7IHByb2dyZXNzID0gTm9uZTsgbG9nID0gW107IHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCBjb250cm9sbGVyIHMgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uUHJvZ3Jlc3MgcCAtPlxuICAgIHsgcnVubmluZyA9IHMucnVubmluZzsgcHJvZ3Jlc3MgPSBTb21lIHA7IGxvZyA9IHMubG9nOyBzdG9yaWVzID0gcy5zdG9yaWVzIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgcHJvZ3Jlc3MgPSBOb25lO1xuICAgICAgbG9nID0gWyBtIF07XG4gICAgICBzdG9yaWVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uRmFpbGx1cmUsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uU3RvcnkgYyAtPlxuICAgIChtYXRjaCBjLlN0b3J5X2pzb24uc3Rvcnkgd2l0aFxuICAgIHwgU3RvcnlfanNvbi5OZXcgZSAtPlxuICAgICAge1xuICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgIGxvZyA9IHMubG9nO1xuICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgZS5TdG9yeV9qc29uLmlkXG4gICAgICAgICAgICAoIGluaXRfY29tcHJlc3Npb25fbW9kZSBjLlN0b3J5X2pzb24uc3RvcnlfbW9kZSxcbiAgICAgICAgICAgICAgWyBjLlN0b3J5X2pzb24ubG9nX2luZm8gXSxcbiAgICAgICAgICAgICAgZS5TdG9yeV9qc29uLmdyYXBoIClcbiAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgIH1cbiAgICB8IFN0b3J5X2pzb24uU2FtZV9hcyBpIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBzLnN0b3JpZXMgd2l0aFxuICAgICAgfCBTb21lIChjbSwgaW5mb3MsIGdyYXBoKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgICAgc3RvcmllcyA9XG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAoIGFkZF9jb21wcmVzc2lvbl9tb2RlIGNtIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICAgIGMuU3RvcnlfanNvbi5sb2dfaW5mbyA6OiBpbmZvcyxcbiAgICAgICAgICAgICAgICBncmFwaCApXG4gICAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCByZWNlaXZlIHVwZGF0ZV9zdGF0ZSB4ID1cbiAgdXBkYXRlX3N0YXRlIChTdG9yeV9qc29uLm1lc3NhZ2Vfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG5sZXQgaW5pdF9zdGF0ZSAoKSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gcmVmIGluaXRpYWxfc3RhdGUgaW5cbiAgY3VycmVudF9zdGF0ZSwgZnVuIHggLT4gY3VycmVudF9zdGF0ZSA6PSBjb250cm9sbGVyICFjdXJyZW50X3N0YXRlIHhcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IGN1cnJlbnRfc3RhdGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBgU3RyaW5nIFwiQ09ORklHXCI7XG4gICAgICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIFwibm9uZVwiLCBgQm9vbCBjYXVzYWw7XG4gICAgICAgICAgICAgICAgICAgICAgIFwid2Vha1wiLCBgQm9vbCB3ZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICBcInN0cm9uZ1wiLCBgQm9vbCBzdHJvbmc7XG4gICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiB0cmFjZV90ZXh0ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gY3VycmVudF9zdGF0ZSA6PSB7IGluaXRpYWxfc3RhdGUgd2l0aCBydW5uaW5nID0gdHJ1ZSB9IGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgKFwiW1xcXCJSVU5cXFwiLCBcIiBeIHRyYWNlX3RleHQgXiBcIl1cIikgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nID0gIWN1cnJlbnRfc3RhdGUubG9nXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9ICFjdXJyZW50X3N0YXRlLnJ1bm5pbmdcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAhY3VycmVudF9zdGF0ZS5wcm9ncmVzc1xuICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gIWN1cnJlbnRfc3RhdGUuc3Rvcmllc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbWFpbGJveCA9XG4gICggaW50LFxuICAgIChZb2pzb24uQmFzaWMudCwgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyKSBSZXN1bHQucmVzdWx0XG4gICAgTHd0LnUgKVxuICBIYXNodGJsLnRcblxubGV0IHJlcGx5X29mX3N0cmluZyB4ID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJFUlJPUlwiKTsgKFwiZGF0YVwiLCBlcnIpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuRXJyb3IgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5vZl9qc29uIGVycilcbiAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwiY29kZVwiLCBgU3RyaW5nIFwiU1VDQ0VTU1wiKTsgKFwiZGF0YVwiLCBkYXRhKSBdIC0+XG4gICAgU29tZSBpZCwgUmVzdWx0Lk9rIGRhdGFcbiAgfCB4IC0+XG4gICAgKCBOb25lLFxuICAgICAgUmVzdWx0LkVycm9yXG4gICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIChcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBLYVNhOiBcIiBeIFlvanNvbi5CYXNpYy50b19zdHJpbmcgeClcbiAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpIClcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgbWF0Y2ggcmVwbHlfb2Zfc3RyaW5nIHggd2l0aFxuICB8IFNvbWUgaWQsIG91dCAtPlxuICAgIGxldCB0aHJlYWQgPSBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQgaW5cbiAgICBMd3Qud2FrZXVwIHRocmVhZCBvdXRcbiAgfCBOb25lLCBfIC0+ICgpXG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcbmxldCBpc19jb21wdXRpbmcgbWFpbGJveCA9IEhhc2h0YmwubGVuZ3RoIG1haWxib3ggPD4gMFxuXG5jbGFzcyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkubWFuYWdlcl9zdGF0aWNfYW5hbHlzaXMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QgPVxuICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgbGV0IG91dGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ7aWQ6XCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIChzdHJpbmdfb2ZfaW50IGlkKSBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCIsZGF0YTpcIiBpblxuICAgICAgICBsZXQgKCkgPSByZXF1ZXN0IG91dGJ1ZiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ9XCIgaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoQnVmZmVyLmNvbnRlbnRzIG91dGJ1ZikgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgZmVlZGVyIGluXG4gICAgICAgIGxldCAoKSA9IGlkIDwtIGlkICsgMSBpblxuICAgICAgICByZXN1bHRcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX2Vycm9yXG4gICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiIH5tZXNzYWdlOlwiS2FTYSBhZ2VudCBpcyBkZWFkXCIgRXhpdClcbiAgICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcilcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgcmVxdWVzdCA9XG4gICAgICBzZWxmI3Jhd19tZXNzYWdlIHBvc3QgKGZ1biBvdXRiIC0+IFlvanNvbi5CYXNpYy50b19idWZmZXIgb3V0YiByZXF1ZXN0KVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgbGV0IHJlcXVlc3Qgb3V0YnVmID1cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiWyBcXFwiSU5JVFxcXCIsIFwiIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBjb21waWwgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiXVwiXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNyYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QpIChmdW5jdGlvblxuICAgICAgICB8IGBOdWxsIC0+IFJlc3VsdC5PayAoKVxuICAgICAgICB8IHggLT5cbiAgICAgICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJDT05UQUNUX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT4gUmVzdWx0Lk9rIHgpXG5cbiAgICBtZXRob2QgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTk9ERVNfTE9DQVRJT05cIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIklORkxVRU5DRV9NQVBcIlxuICAgICAgICAgIDo6IChmdW4gYWNjdXJhY3kgbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGxcbiAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSA6OiBsKVxuICAgICAgICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgb3JpZ2luO1xuICAgICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPSBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24geCBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX09SSUdJTkFMX05PREVcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfUFJFVklPVVNfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9BTExfTk9ERVNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdKSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5ub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJERUFEX1JVTEVTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfQUdFTlRTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiQ09OU1RSQUlOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIlBPTFlNRVJTXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgICAgWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGE7IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYiBdXG4gICAgICAgICAgfCBOb25lLCBTb21lIGIgLT5cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYjtcbiAgICAgICAgICAgIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnNjY19vZl9qc29uIHgpKVxuICBlbmRcblxuY2xhc3MgbmV3X3VuaWZvcm1fY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkudW5pZm9ybV9tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIGxldCByYXcgPSBuZXcgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9jb250YWN0X21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9IHJhdyNnZXRfaW5pdGlhbF9ub2RlID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfbmV4dF9ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfcHJldmlvdXNfbm9kZSBqc29uID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPVxuICAgICAgcmF3I2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9IHJhdyNnZXRfZGVhZF9ydWxlcyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPSByYXcjZ2V0X2RlYWRfYWdlbnRzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICByYXcjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHJhdyNnZXRfY29uc3RyYWludHNfbGlzdCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHJhdyNnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjY1xuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+cG9zdCBtYWlsYm94IDogQXBpLm1hbmFnZXJfbW9kZWwgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiB0eXBlIGEuXG4gICAgICAgIGEgaGFuZGxlIC0+XG4gICAgICAgIChCdWZmZXIudCAtPiB1bml0KSAtPlxuICAgICAgICAoYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgICAgIGZ1biBoYW5kbGUgcmVxdWVzdCAtPlxuICAgICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBc3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpIF0pXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdE92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCk7XG4gICAgICAgICAgICBdKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIHNpbXVsYXRpb24gKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudClcbiAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDpcbiAgQXBpX2Vudmlyb25tZW50LnNpbXVsYXRpb24gPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfcnVudGltZV9zdGF0ZSA9IHJ1bnRpbWVfc3RhdGVcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgIG1ldGhvZCBnZXRfcnVudGltZV9zdGF0ZSAoKSA9IF9ydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2Qgc2V0X3J1bnRpbWVfc3RhdGUgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3J1bnRpbWVfc3RhdGUgPC0gcnVudGltZV9zdGF0ZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uX3BhcmFtZXRlciAoKSA9IF9zaW11bGF0aW9uX3BhcmFtZXRlclxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOiB1bml0ID1cbiAgICAgIF9zaW11bGF0aW9uX3BhcmFtZXRlciA8LSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICBlbmRcblxuY2xhc3MgcHJvamVjdCA6IEFwaV9lbnZpcm9ubWVudC5wcm9qZWN0ID1cbiAgb2JqZWN0XG4gICAgdmFsIG11dGFibGUgX3NpbXVsYXRpb24gPSBOb25lXG5cbiAgICB2YWwgbXV0YWJsZSBfc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb25cbiAgICBtZXRob2QgdW5zZXRfc2ltdWxhdGlvbiAoKSA9IF9zaW11bGF0aW9uIDwtIE5vbmVcblxuICAgIG1ldGhvZCBzZXRfc2ltdWxhdGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3NpbXVsYXRpb24gPC1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChuZXcgc2ltdWxhdGlvbiBydW50aW1lX3N0YXRlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICA6PiBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbilcblxuICAgIG1ldGhvZCBzZXRfc3RhdGUgKHN0YXRlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIEx3dC50KSA9XG4gICAgICBsZXQgKCkgPSBMd3QuY2FuY2VsIF9zdGF0ZSBpblxuICAgICAgX3N0YXRlIDwtIChzdGF0ZSA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoU29tZSB4KSlcblxuICAgIG1ldGhvZCBnZXRfc3RhdGUgKCkgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID0gX3N0YXRlXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogZ29vZCBvbGQgY2FrZSBwYXR0ZXJuICopXG5cbmNsYXNzIG1hbmFnZXIgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBsZXQgcHJvamVjdCA9IG5ldyBFbnZpcm9ubWVudF9tZW1vcnkucHJvamVjdCBpblxuICBvYmplY3RcbiAgICBpbmhlcml0IE1hbmFnZXJfc2ltdWxhdGlvbi5tYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHtcbiAgc3RhdGVfZXJyb3JfZXJyb3JzOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3Q7XG4gIF9zdGF0ZV9lcnJvcl9sb2NhdGlvbjogc3RyaW5nO1xufVxuXG5sZXQgc3RhdGVfZXJyb3IsIHNldF9zdGF0ZV9lcnJvciA9IFJlYWN0LlMuY3JlYXRlIChbXSA6IHQgbGlzdClcblxubGV0IGNsZWFyX2Vycm9ycyBsb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiQ2xlYXJfZXJyb3JzICVzIFwiIGxvY2F0aW9uKSlcbiAgaW5cbiAgc2V0X3N0YXRlX2Vycm9yIFtdXG5cbmxldCBoYXNfZXJyb3JzICgpID1cbiAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBzdGF0ZV9lcnJvciB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBfIDo6IF8gLT4gdHJ1ZVxuXG5sZXQgYWRkX2Vycm9yIChsb2NhdGlvbiA6IHN0cmluZykgKGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgPVxuICAoKiBsb2cgbG9jYXRpb24gYW5kIGVycm9ycyBpZiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCAqKVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcInNldF9lcnJvcnMgeyBsb2NhdGlvbiA6IFxcXCIlc1xcXCIgLCBlcnJvcnMgOiBbQFslYUBdXSB9XCJcbiAgICAgICAgICAgIGxvY2F0aW9uXG4gICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgZXJyb3JzKSlcbiAgaW5cbiAgbGV0IGN1cnJlbnRfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlX2Vycm9yIGluXG4gIGxldCBuZXdfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPVxuICAgIHsgc3RhdGVfZXJyb3JfZXJyb3JzID0gZXJyb3JzOyBfc3RhdGVfZXJyb3JfbG9jYXRpb24gPSBsb2NhdGlvbiB9XG4gICAgOjogY3VycmVudF9zdGF0ZV9lcnJvclxuICBpblxuICBzZXRfc3RhdGVfZXJyb3IgbmV3X3N0YXRlX2Vycm9yXG5cbmxldCBlcnJvcnMgOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QgUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5tYXBcbiAgICAoZnVuIChzdGF0ZV9lcnJvciA6IHQgbGlzdCkgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYWNjIHZhbHVlIC0+IHZhbHVlLnN0YXRlX2Vycm9yX2Vycm9ycyBAIGFjYylcbiAgICAgICAgW10gc3RhdGVfZXJyb3IpXG4gICAgc3RhdGVfZXJyb3JcblxubGV0IHdyYXAgOlxuICAgICAgJ2EuID9hcHBlbmQ6Ym9vbCAtPiBzdHJpbmcgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCAtPiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiBmdW4gPyhhcHBlbmQgPSBmYWxzZSkgbG9jIHIgLT5cbiAgclxuICA+Pj1cbiAgbGV0ICgpID0gaWYgbm90IGFwcGVuZCB0aGVuIGNsZWFyX2Vycm9ycyBsb2MgaW5cbiAgUmVzdWx0X3V0aWwuZm9sZFxuICAgIH5vazooZnVuIHIgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcikpXG4gICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICBsZXQgKCkgPSBhZGRfZXJyb3IgbG9jIGVycm9ycyBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1cmxfYXJncyA/KGRlZmF1bHQgPSBbXSkga2V5IDogc3RyaW5nIGxpc3QgPVxuICAoKiBIb3N0cyB0aGUgdXNlciBzcGVjaWZpZWQgb24gdGhlIHVybCBpbiB0aGUgZm9ybVxuICAgICBrZXk9Li4uJmtleT0uLiYuLi5cbiAgKilcbiAgbGV0IGFyZ3MgPSBVcmwuQ3VycmVudC5hcmd1bWVudHMgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrID0ga2V5KSBhcmdzKSB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IHNvbWUgLT4gc29tZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvbW1hbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhcmdzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25FcnJvciA6ICh1bml0IC0+IHVuaXQpIEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gICAgPyhvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uKSA/KG9uRXJyb3IgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pXG4gICAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBuZXclanMgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9XG4gICAgY29uZmlndXJhdGlvbiMjLmNvbW1hbmQgOj0gSnMuc3RyaW5nIGNvbW1hbmQ7XG4gICAgY29uZmlndXJhdGlvbiMjLmFyZ3MgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIEpzLnN0cmluZyBhcmdzKSk7XG4gICAgKG1hdGNoIG9uU3Rkb3V0IHdpdGhcbiAgICB8IFNvbWUgb25TdGRvdXQgLT4gY29uZmlndXJhdGlvbiMjLm9uU3Rkb3V0IDo9IG9uU3Rkb3V0XG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25TdGRlcnIgd2l0aFxuICAgIHwgU29tZSBvblN0ZGVyciAtPiBjb25maWd1cmF0aW9uIyMub25TdGRlcnIgOj0gb25TdGRlcnJcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkNsb3NlIHdpdGhcbiAgICB8IFNvbWUgb25DbG9zZSAtPiBjb25maWd1cmF0aW9uIyMub25DbG9zZSA6PSBvbkNsb3NlXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25FcnJvciB3aXRoXG4gICAgfCBTb21lIG9uRXJyb3IgLT4gY29uZmlndXJhdGlvbiMjLm9uRXJyb3IgOj0gb25FcnJvclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKClcbiAgaW5cbiAgY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIHByb2Nlc3MgPSBvYmplY3RcbiAgbWV0aG9kIHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBraWxsIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHNwYXduX3Byb2Nlc3MgKGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCkgOlxuICAgIHByb2Nlc3MgSnMudCBKcy5vcHQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzcGF3blByb2Nlc3NcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24gfF1cblxubGV0IGxhdW5jaF9hZ2VudCAob25DbG9zZSA6IHVuaXQgLT4gdW5pdCkgKG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhcilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgKGhhbmRsZXIgOiBzdHJpbmcgLT4gdW5pdCkgOlxuICAgIDwga2lsbCA6IHVuaXQgSnMubWV0aCA7IHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoID4gSnMudCA9XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgcmVjIG9uU3Rkb3V0IG1zZyA9XG4gICAgbWF0Y2ggVG9vbHMuc3RyaW5nX3NwbGl0X29uX2NoYXIgbWVzc2FnZV9kZWxpbWl0ZXIgKEpzLnRvX3N0cmluZyBtc2cpIHdpdGhcbiAgICB8IHByZWZpeCwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4XG4gICAgfCBwcmVmaXgsIFNvbWUgc3VmZml4IC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4IGluXG4gICAgICBsZXQgKCkgPSBoYW5kbGVyIChCdWZmZXIuY29udGVudHMgYnVmZmVyKSBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLnJlc2V0IGJ1ZmZlciBpblxuICAgICAgb25TdGRvdXQgKEpzLnN0cmluZyBzdWZmaXgpXG4gIGluXG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gfm9uU3Rkb3V0IH5vbkNsb3NlIGNvbW1hbmQgYXJnc1xuICBpblxuICBKcy5PcHQuY2FzZVxuICAgIChzcGF3bl9wcm9jZXNzIGNvbmZpZ3VyYXRpb24pXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gb25DbG9zZSAoKSBpblxuICAgICAgZmFpbHdpdGggKFwiTGF1bmNoaW5nICdcIiBeIGNvbW1hbmQgXiBcIicgZmFpbGVkXCIpKVxuICAgIChmdW4geCAtPiB4KVxuXG5jbGFzcyBtYW5hZ2VyID8obWVzc2FnZV9kZWxpbWl0ZXIgOiBjaGFyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyKVxuICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOlxuICBBcGkuY29uY3JldGVfbWFuYWdlciA9XG4gIGxldCBzd2l0Y2hfcmUgPSBSZS5jb21waWxlIChSZS5zdHIgXCJLYXBwYVN3aXRjaG1hblwiKSBpblxuICBsZXQgc3Rvcl9jb21tYW5kID0gUmUucmVwbGFjZV9zdHJpbmcgc3dpdGNoX3JlIH5ieTpcIkthU3RvclwiIGNvbW1hbmQgaW5cbiAgbGV0IHN3aXRjaF9tYWlsYm94ID0gU3dpdGNobWFuX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgbGV0IHJ1bm5pbmdfcmVmID0gcmVmIHRydWUgaW5cbiAgbGV0IG9uQ2xvc2UgKCkgPSBydW5uaW5nX3JlZiA6PSBmYWxzZSBpblxuICBsZXQgc3Rvcl9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBzdG9yX2NvbW1hbmQgYXJnc1xuICAgICAgKEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSlcbiAgaW5cbiAgbGV0IHN3aXRjaF9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBjb21tYW5kIGFyZ3NcbiAgICAgIChTd2l0Y2htYW5fY2xpZW50LnJlY2VpdmUgc3dpdGNoX21haWxib3gpXG4gIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSBzbGVlcCB0aW1lb3V0ID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0aW1lb3V0XG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSAhcnVubmluZ19yZWZcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0gc3dpdGNoX3Byb2Nlc3MjI2tpbGwgaW5cbiAgICAgIGxldCAoKSA9IHN0b3JfcHJvY2VzcyMja2lsbCBpblxuICAgICAgKClcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgU3dpdGNobWFuX2NsaWVudC5pc19jb21wdXRpbmcgc3dpdGNoX21haWxib3ggfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN0b3JfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICBpbmhlcml0XG4gICAgICBTd2l0Y2htYW5fY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN3aXRjaF9wcm9jZXNzIyN3cml0ZVxuICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCIlcyVjXCIgbWVzc2FnZV90ZXh0IG1lc3NhZ2VfZGVsaW1pdGVyKSkpXG4gICAgICAgIHN3aXRjaF9tYWlsYm94XG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlIG9mIE1waV9tZXNzYWdlX2oucmVzdF9yZXNwb25zZV9jb250ZW50XG5leGNlcHRpb24gQmFkUmVzcG9uc2VDb2RlIG9mIGludFxuZXhjZXB0aW9uIFRpbWVPdXRcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlcXVlc3RfdXAgdiA9IGluY3IgdlxubGV0IHJlcXVlc3RfZG93biB2ID0gZGVjciB2XG5sZXQgaXNfY29tcHV0aW5nIHYgPSAhdiA8PiAwXG5cbmxldCBzZW5kID8odGltZW91dCA6IGZsb2F0IG9wdGlvbikgcmVxdWVzdF9jb3VudCAodXJsIDogc3RyaW5nKVxuICAgIChtZXRoIDogQ29tbW9uLm1ldGgpID8oZGF0YSA6IHN0cmluZyBvcHRpb24pIChoeWRyYXRlIDogc3RyaW5nIC0+ICdhKSA6XG4gICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCByZXBseSwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGhhbmRsZXIgc3RhdHVzIHJlc3BvbnNlX3RleHQgPVxuICAgIGxldCByZXN1bHRfY29kZSA6IFJlc3VsdF91dGlsLnN0YXR1cyBvcHRpb24gPVxuICAgICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgIHwgMjAwIC0+IFNvbWUgYE9LXG4gICAgICB8IDIwMSAtPiBTb21lIGBDcmVhdGVkXG4gICAgICB8IDIwMiAtPiBTb21lIGBBY2NlcHRlZFxuICAgICAgfCA0MDAgLT4gU29tZSBgQmFkX3JlcXVlc3RcbiAgICAgIHwgNDA0IC0+IFNvbWUgYE5vdF9mb3VuZFxuICAgICAgfCA0MDggLT4gU29tZSBgUmVxdWVzdF90aW1lb3V0XG4gICAgICB8IDQwOSAtPiBTb21lIGBDb25mbGljdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggcmVzdWx0X2NvZGUgd2l0aFxuICAgICAgfCBOb25lIC0+IEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2VDb2RlIHN0YXR1cylcbiAgICAgIHwgU29tZSByZXN1bHRfY29kZSAtPlxuICAgICAgICBpZiA0MDAgPD0gc3RhdHVzICYmIHN0YXR1cyA8IDUwMCB0aGVuXG4gICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgfnJlc3VsdF9jb2RlXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2VcbiAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXNwb25zZV90ZXh0KSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlc3BvbnNlID0gaHlkcmF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgUmVzdWx0X3V0aWwub2sgcmVzcG9uc2VcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gcmVxdWVzdF9kb3duIHJlcXVlc3RfY291bnQgaW5cbiAgICBsZXQgKCkgPSBMd3Qud2FrZXVwIGZlZWRlciByZXN1bHQgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSByZXF1ZXN0X3VwIHJlcXVlc3RfY291bnQgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmFqYXhfcmVxdWVzdCB+dXJsIH5tZXRoID90aW1lb3V0ID9kYXRhIH5oYW5kbGVyIGluXG4gIHJlcGx5XG5cbmxldCBrYXNhX2Vycm9yIGwgPVxuICBMd3QucmV0dXJuX2Vycm9yXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBhY2MgbSAtPlxuICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvclxuICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwicmVzdF9hcGlcIiB+bWVzc2FnZTptLlJlc3VsdF91dGlsLnRleHQgRXhpdClcbiAgICAgICAgICAgYWNjKVxuICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyIGwpXG5cbmNsYXNzIG1hbmFnZXIgfih0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSB+dXJsIH5wcm9qZWN0X2lkIDogQXBpLnJlc3RfbWFuYWdlciA9XG4gIGxldCByZXF1ZXN0X2NvdW50ID0gcmVmIDAgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2VcbiAgICAgICAgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBgUHJvamVjdExvYWQgXyAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgICAgXCJsb3cgbGV2ZWwgcHJvamVjdF9sb2FkIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9jb250aW51ZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBQVVRcbiAgICAgICAgICB+ZGF0YTooWW9qc29uLlNhZmUudG9fc3RyaW5nIChgU3RyaW5nIHBhdXNlX2NvbmRpdGlvbikpXG4gICAgICAgICAgKGZ1biBfIC0+IGBTaW11bGF0aW9uQ29udGludWUpXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYERFTEVURVxuICAgICAgICAgIChmdW4gXyAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9maWxlbGluZXMvJXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkIGZpbGVfbGluZV9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgbGV0IGxpbmVzID1cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9saXN0IFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBsaW5lcylcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9ESU4vJXNcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgIGZsdXhfbWFwX2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiAoTXBpX21lc3NhZ2Vfai5kaW5fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2xvZ21lc3NhZ2VzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLmxvZ19tZXNzYWdlX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9saW1pdCAtPlxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBcIiZcIlxuICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAoZnVuIChrZXksIHZhbHVlKSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzPSVzXCIga2V5IHZhbHVlKVxuICAgICAgICAgICAgICAgKChtYXRjaCBwbG90X2xpbWl0LkFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICB8IFNvbWUgcGxvdF9saW1pdF9vZmZzZXQgLT5cbiAgICAgICAgICAgICAgICAgIFsgXCJwbG90X2xpbWl0X29mZnNldFwiLCBzdHJpbmdfb2ZfaW50IHBsb3RfbGltaXRfb2Zmc2V0IF0pXG4gICAgICAgICAgICAgICBAXG4gICAgICAgICAgICAgICBtYXRjaCBwbG90X2xpbWl0LkFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgfCBTb21lIHBsb3RfbGltaXRfcG9pbnRzIC0+XG4gICAgICAgICAgICAgICAgIFsgXCJwbG90X2xpbWl0X3BvaW50c1wiLCBzdHJpbmdfb2ZfaW50IHBsb3RfbGltaXRfcG9pbnRzIF0pKVxuICAgICAgICBpblxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3Bsb3RcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIH5kYXRhOmFyZ3MgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCAoTXBpX21lc3NhZ2Vfai5wbG90X29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90X2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vc25hcHNob3RzLyVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCBzbmFwc2hvdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZWZmaWNpZW5jeVwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi90cmFjZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biBzIC0+IGBTaW11bGF0aW9uVHJhY2UgcylcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vb3V0cHV0c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biBzIC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCBzKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ZpbGVsaW5lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLmZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9ESU5cIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4gKE1waV9tZXNzYWdlX2ouZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vc25hcHNob3RzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3BhdXNlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYFBVVCAoZnVuIF8gLT4gYFNpbXVsYXRpb25QYXVzZSlcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wYXJhbWV0ZXJcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9pbnRlcnZlbnRpb25cIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgUFVUXG4gICAgICAgICAgfmRhdGE6XG4gICAgICAgICAgICAoQXBpX3R5cGVzX2ouc3RyaW5nX29mX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2ludGVydmVudGlvbikgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgIChZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpKSlcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBQT1NUXG4gICAgICAgICAgfmRhdGE6XG4gICAgICAgICAgICAoQXBpX3R5cGVzX2ouc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyIHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHJlc3VsdCkpXG5cbiAgICBpbmhlcml0IE1waV9hcGkubWFuYWdlcl9iYXNlICgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZXN0X21lc3NhZ2UgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyAoTXBpX21lc3NhZ2Vfai5lbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzXCIgdXJsKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGxldCBwcm9qZWN0cyA9XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfbGlzdCBZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyBwcm9qZWN0cylcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgcHJvamVjdF9wYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzXCIgdXJsKSBgUE9TVFxuICAgICAgICAgIH5kYXRhOihBcGlfdHlwZXNfai5zdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgcHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICAgICAgKGZ1biBfIC0+IGBQcm9qZWN0Q3JlYXRlKVxuICAgICAgfCBgUHJvamVjdERlbGV0ZSBwcm9qZWN0X2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzXCIgdXJsIHByb2plY3RfaWQpIGBERUxFVEUgKGZ1biBfIC0+XG4gICAgICAgICAgICBgUHJvamVjdERlbGV0ZSlcblxuICAgIG1ldGhvZCBlbnZpcm9ubWVudF9pbmZvICgpIDogQXBpX3R5cGVzX2ouZW52aXJvbm1lbnRfaW5mbyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIGBFbnZpcm9ubWVudEluZm9cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBFbnZpcm9ubWVudEluZm8gKHJlc3VsdCA6IE1waV9tZXNzYWdlX3QuZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2RlbGV0ZSBwcm9qZWN0X2lkIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIChgUHJvamVjdERlbGV0ZSBwcm9qZWN0X2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3REZWxldGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfY2F0YWxvZyA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgYFByb2plY3RDYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdENhdGFsb2cgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9jcmVhdGUgKHByb2plY3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIChgUHJvamVjdENyZWF0ZSBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0Q3JlYXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzZWNyZXRfcHJvamVjdF9wYXJzZSA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICBcImxvdyBsZXZlbCBwcm9qZWN0X3BhcnNlIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICBcImxvdyBsZXZlbCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGUgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9wYXJzZS8lcyV0XCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHBhdHRlcm5TaGFyaW5nIHdpdGhcbiAgICAgICAgICAgfCBQYXR0ZXJuLk5vX3NoYXJpbmcgLT4gXCJub19zaGFyaW5nXCJcbiAgICAgICAgICAgfCBQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgICAgICAgICAgfCBQYXR0ZXJuLk1heF9zaGFyaW5nIC0+IFwibWF4X3NoYXJpbmdcIilcbiAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgbWF0Y2ggb3ZlcndyaXRlIHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPyVhXCJcbiAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiZcIilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmICh2ciwgdmEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlcz0lYVwiIHZyIE5ici5wcmludCB2YSkpXG4gICAgICAgICAgICAgICAgIGwpKVxuICAgICAgICBgUE9TVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSBMd3QuaWdub3JlX3Jlc3VsdCAoc2VsZiNwcm9qZWN0X2RlbGV0ZSBwcm9qZWN0X2lkKVxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gdHJ1ZSAoKlRPRE8qKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBwb3MgaWQgY29udGVudCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXMvcG9zaXRpb24vJWlcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICBpZCBwb3MpXG4gICAgICAgIGBQVVRcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKGBTdHJpbmcgY29udGVudCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCkpXG5cbiAgICBtZXRob2QgZmlsZV91cGRhdGUgaWQgY29udGVudCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYFBPU1RcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKGBTdHJpbmcgY29udGVudCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBwb3MgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzL3Bvc2l0aW9uLyVpXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgaWQgcG9zKVxuICAgICAgICBgUE9TVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYERFTEVURVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvb3ZlcndyaXRlLyVzXCIgdXJsIHByb2plY3RfaWQgZmlsZV9pZClcbiAgICAgICAgYFBPU1RcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBhc3QpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgZGF0YSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXNcIiB1cmwgcHJvamVjdF9pZCkgYFBVVCB+ZGF0YVxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgS2FTYSBJTklUIHJlc3BvbnNlOiBcIiwgeCkpKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnRhY3RfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnRhY3RfbWFwXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+IFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnNwcmludGYgXCIlcy92Mi9hbmFseXNlcy9pbmZsdWVuY2VfbWFwXCIgdXJsKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPiB4KVxuXG4gICAgbWV0aG9kIGdldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKGxldCBzID1cbiAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICAgICBcIiZhY2N1cmFjeT1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgaW5cbiAgICAgICAgIEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcD90b3RhbD0laSVzJXMlcyVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQgdG90YWxcbiAgICAgICAgICAgKG1hdGNoIG9yaWdpbiB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIiZvcmlnaW49X3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCImb3JpZ2luPV92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpXG4gICAgICAgICAgIHNcbiAgICAgICAgICAgKG1hdGNoIGZ3ZCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBpIC0+IFwiJmZ3ZD1cIiBeIHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgICAgKG1hdGNoIGJ3ZCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBpIC0+IFwiJmJ3ZD1cIiBeIHN0cmluZ19vZl9pbnQgaSkpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9pbml0aWFsX25vZGVcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUgc2hvcnRfaWRfb3B0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL25leHRfbm9kZSVzXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHNob3J0X2lkX29wdCB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIl9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiX3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIikpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBzaG9ydF9pZF9vcHQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvcHJldmlvdXNfbm9kZSVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHNob3J0X2lkX29wdCB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIl9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiX3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIikpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSB7IExvYy5saW5lOyBMb2MuY2hyIH0gPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvbm9kZV9hdD9maWxlPSVzJmxpbmU9JWkmY2hyPSVpXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWQgZmlsZW5hbWUgbGluZSBjaHIpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2FsbF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnNwcmludGYgXCIlcy92Mi9hbmFseXNlcy9hbGxfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcFwiIHVybClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5ub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2RlYWRfcnVsZXNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2RlYWRfYWdlbnRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLnNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29uc3RyYWludHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGEsIE5vbmUgLT4gXCI/YWNjdXJhY3lfY209XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICB8IE5vbmUsIFNvbWUgYSAtPiBcIj9hY2N1cmFjeV9zY2M9XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgICAgICAgXCI/YWNjdXJhY3lfY209XCJcbiAgICAgICAgICBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgICAgXiBcIiZhY2N1cmFjeV9zY2M9XCJcbiAgICAgICAgICBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBiXG4gICAgICBpblxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL3BvdGVudGlhbF9wb2x5bWVycyVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQgb3B0aW9ucykgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IGlzX2NvbXB1dGluZyByZXF1ZXN0X2NvdW50XG5cbiAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgICA6ICh1bml0LCBzdHJpbmcpIEx3dF9yZXN1bHQudCA9XG4gICAgICBsZXQgX2RvbnRjYXJlID0gY2F1c2FsIHx8IHdlYWsgfHwgc3Ryb25nIGluXG4gICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGluIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBIVFRQXCJcblxuICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIChfIDogc3RyaW5nKVxuICAgICAgICA6ICh1bml0LCBzdHJpbmcpIEx3dF9yZXN1bHQudCA9XG4gICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGluIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBIVFRQXCJcblxuICAgIG1ldGhvZCBzdG9yeV9sb2cgOiBzdHJpbmcgbGlzdCA9IFtdXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9IGZhbHNlXG4gICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzIDogU3RvcnlfanNvbi5wcm9ncmVzc19iYXIgb3B0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHN0b3J5X2xpc3RcbiAgICAgICAgOiAoQXBpLmNvbXByZXNzaW9uX21vZGVzXG4gICAgICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QgbGlzdFxuICAgICAgICAgICogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGgpXG4gICAgICAgICAgTW9kcy5JbnRNYXAudCA9XG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjbGllbnRJZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwQ2xpZW50SWRcIlxubGV0IF9jbGllbnRfaWQgOiBzdHJpbmcgcmVmID0gcmVmIFwiXCJcbmxldCBnZXRfY2xpZW50X2lkICgpIDogc3RyaW5nID0gIV9jbGllbnRfaWRcbmxldCBzZXRfY2xpZW50X2lkIChjbGllbnRfaWQgOiBzdHJpbmcpIDogdW5pdCA9IF9jbGllbnRfaWQgOj0gY2xpZW50X2lkXG5sZXQgZm9udFNpemVQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcEZvbnRTaXplXCJcbmxldCBjdXJyZW50Rm9udFNpemUgPSByZWYgMS40XG5cbmxldCBpbml0RnJvbVN0b3JhZ2UgKCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IGN1cnJlbnRGb250U2l6ZSA6PSAxLjQgaW5cbiAgICAgIF9jbGllbnRfaWQgOj0gQ29tbW9uLmd1aWQgKCkpXG4gICAgKGZ1biBzdCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgY3VycmVudEZvbnRTaXplIDo9XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBmb250U2l6ZVBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IDEuNClcbiAgICAgICAgICAgIEpzLnBhcnNlRmxvYXRcbiAgICAgIGluXG4gICAgICBfY2xpZW50X2lkIDo9XG4gICAgICAgIEpzLk9wdC5jYXNlIChzdCMjZ2V0SXRlbSBjbGllbnRJZFBhcmFtSWQpIENvbW1vbi5ndWlkIEpzLnRvX3N0cmluZylcblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIHN0IC0+XG4gICAgICAgIHN0IyNzZXRJdGVtIGZvbnRTaXplUGFyYW1JZCAoSnMuc3RyaW5nIHYnKSlcbiAgaW5cbiAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gc3QgLT5cbiAgICAgIHN0IyNzZXRJdGVtIGNsaWVudElkUGFyYW1JZCAoSnMuc3RyaW5nICFfY2xpZW50X2lkKSlcblxubGV0IHVwZGF0ZUZvbnRTaXplIH5kZWx0YSA9XG4gIGxldCAoKSA9IGN1cnJlbnRGb250U2l6ZSA6PSBtYXggMC4yIChtaW4gKCFjdXJyZW50Rm9udFNpemUgKy4gZGVsdGEpIDMuKSBpblxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSMjLnN0eWxlIyMuZm9udFNpemUgOj0gSnMuc3RyaW5nICh2JyBeIFwiZW1cIilcbiAgaW5cbiAgKClcblxubGV0IHN5bmNoLCBzZXRfc3luY2ggPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGFnZW50X2NvbG9yaW5nID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIGxldCAoKSA9IGluaXRGcm9tU3RvcmFnZSAoKSBpblxuICBsZXQgY2xpZW50X2lkcyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcImNsaWVudF9pZFwiIGluXG4gIGxldCBzeW5jaCA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcInN5bmNoXCIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjbGllbnRfaWRzIHdpdGhcbiAgICB8IGNsaWVudF9pZCA6OiBfIC0+IHNldF9jbGllbnRfaWQgY2xpZW50X2lkXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICBsZXQgKCkgPSBzZXRfc3luY2ggKFsgXCJ0cnVlXCIgXSA9IHN5bmNoKSBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5jbGFzcyBtYW5hZ2VyICgpID1cbiAgbGV0IGthc2Ffd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2FXb3JrZXIuanNcIiBpblxuICBsZXQga2FzYV9tYWlsYm94ID0gS2FzYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthbW9oYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FNb0hhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthbW9oYV9tYWlsYm94ID0gS2Ftb2hhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2FzdG9yX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVN0b3JXb3JrZXIuanNcIiBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBzaW1fd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2ltV29ya2VyLmpzXCJcbiAgICB2YWwgbXV0YWJsZSBpc19ydW5uaW5nID0gdHJ1ZVxuXG4gICAgaW5pdGlhbGl6ZXJcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzYV9jbGllbnQucmVjZWl2ZSBrYXNhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2Ftb2hhX2NsaWVudC5yZWNlaXZlIGthbW9oYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNpbV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc2VsZiNyZWNlaXZlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2ltX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgKClcblxuICAgIG1ldGhvZCBwcml2YXRlIHNsZWVwIHRpbWVvdXQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHRpbWVvdXRcblxuICAgIG1ldGhvZCBwcml2YXRlIHBvc3RfbWVzc2FnZSAobWVzc2FnZV90ZXh0IDogc3RyaW5nKSA6IHVuaXQgPVxuICAgICAgc2ltX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0XG5cbiAgICBpbmhlcml0IE1waV9hcGkubWFuYWdlciAoKVxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzYV9jbGllbnQubmV3X3VuaWZvcm1fY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2FzYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2FzYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYW1vaGFfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2Ftb2hhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYW1vaGFfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthc3Rvcl93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgdmFsIG11dGFibGUga2FzYV9sb2NhdG9yID0gW11cblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjc2VjcmV0X3Byb2plY3RfcGFyc2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYWQgPVxuICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBvdXQgb3ZlcndyaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5pdCA9IHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXIgb3V0IGluXG4gICAgICAgICAgICAgIGxldCBsb2NhdG9ycyA9XG4gICAgICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSlcbiAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGluZm9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBpbmZvcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvYWQgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+IGxvY2F0b3JzKSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgOiBfIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAoZnVuIChfLCB4KSAtPiBMb2MuaXNfaW5jbHVkZWRfaW4gZmlsZW5hbWUgcG9zIHgpXG4gICAgICAgIGthc2FfbG9jYXRvclxuICAgICAgfD4gT3B0aW9uX3V0aWwubWFwIGZzdFxuICAgICAgfD4gUmVzdWx0X3V0aWwub2sgP3N0YXR1czpOb25lXG4gICAgICB8PiBMd3QucmV0dXJuXG5cbiAgICBtZXRob2QgaXNfcnVubmluZyA9IGlzX3J1bm5pbmdcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0gc2ltX3dvcmtlciMjdGVybWluYXRlIGluXG4gICAgICBrYXNhX3dvcmtlciMjdGVybWluYXRlXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIHNlbGYjc2ltX2lzX2NvbXB1dGluZ1xuICAgICAgfHwgS2FzYV9jbGllbnQuaXNfY29tcHV0aW5nIGthc2FfbWFpbGJveFxuICAgICAgfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIGNsaSA9IHsgdXJsOiBzdHJpbmc7IGNvbW1hbmQ6IHN0cmluZzsgYXJnczogc3RyaW5nIGxpc3QgfVxudHlwZSBwcm90b2NvbCA9IEhUVFAgb2Ygc3RyaW5nIHwgQ0xJIG9mIGNsaVxudHlwZSByZW1vdGUgPSB7IGxhYmVsOiBzdHJpbmc7IHByb3RvY29sOiBwcm90b2NvbCB9XG50eXBlIHNwZWMgPSBXZWJXb3JrZXIgfCBFbWJlZGRlZCB8IFJlbW90ZSBvZiByZW1vdGVcbnR5cGUgc3RhdGUgPSB7IHN0YXRlX2N1cnJlbnQ6IHNwZWM7IHN0YXRlX3J1bnRpbWVzOiBzcGVjIGxpc3QgfVxudHlwZSBtb2RlbCA9IHsgbW9kZWxfY3VycmVudDogc3BlYzsgbW9kZWxfcnVudGltZXM6IHNwZWMgbGlzdCB9XG5cbmxldCBzcGVjX2xhYmVsIDogc3BlYyAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFdlYldvcmtlciAtPiBcIldlYldvcmtlclwiXG4gIHwgRW1iZWRkZWQgLT4gXCJFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHJlbW90ZSAtPiByZW1vdGUubGFiZWxcblxubGV0IHNwZWNfaWQgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgV2ViV29ya2VyIC0+IFwiV2ViV29ya2VyXCJcbiAgfCBFbWJlZGRlZCAtPiBcIkVtYmVkZGVkXCJcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCBodHRwIH0gLT4gaHR0cFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBDTEkgY2xpIH0gLT4gY2xpLnVybFxuXG5sZXQgcmVhZF9zcGVjIDogc3RyaW5nIC0+IHNwZWMgb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBcIldlYldvcmtlclwiIC0+IFNvbWUgV2ViV29ya2VyXG4gIHwgXCJFbWJlZGRlZFwiIC0+IFNvbWUgRW1iZWRkZWRcbiAgfCB1cmwgLT5cbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJwYXJzZV9yZW1vdGU6ICVzXCIgdXJsKSkgaW5cbiAgICBsZXQgZm9ybWF0X3VybCB1cmwgPVxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggdXJsIGluXG4gICAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgdXJsIChsZW5ndGggLSAxKSA9PSAnLycgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHVybCAwIChsZW5ndGggLSAxKVxuICAgICAgZWxzZVxuICAgICAgICB1cmxcbiAgICBpblxuICAgIGxldCBjbGVhbmVkX3VybCBodHRwID1cbiAgICAgIGxldCBjbGVhbmVkID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlczolZC8lc1wiIGh0dHAuVXJsLmh1X2hvc3QgaHR0cC5VcmwuaHVfcG9ydFxuICAgICAgICAgIGh0dHAuVXJsLmh1X3BhdGhfc3RyaW5nXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiY2xlYW5lZCA6ICVzXCIgY2xlYW5lZCkpXG4gICAgICBpblxuICAgICAgZm9ybWF0X3VybCBjbGVhbmVkXG4gICAgaW5cbiAgICAobWF0Y2ggVXJsLnVybF9vZl9zdHJpbmcgdXJsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXJzZWQgLT5cbiAgICAgIGxldCBwcm90b2NvbCA6IHByb3RvY29sID1cbiAgICAgICAgbWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IEhUVFAgKFwiaHR0cDovL1wiIF4gY2xlYW5lZF91cmwgaHR0cClcbiAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gSFRUUCAoXCJodHRwczovL1wiIF4gY2xlYW5lZF91cmwgaHR0cHMpXG4gICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPlxuICAgICAgICAgIENMSVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmwgPSBcImZpbGU6Ly9cIiBeIGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nO1xuICAgICAgICAgICAgICBjb21tYW5kID0gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbGFiZWwgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBMaXN0LmFzc29jIFwibGFiZWxcIlxuICAgICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfYXJndW1lbnRzKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIChtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9ob3N0XG4gICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gaHR0cHMuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmcpXG4gICAgICBpblxuICAgICAgU29tZSAoUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sIH0pKVxuXG5jbGFzcyBlbWJlZGRlZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IGthc2Ffd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2FXb3JrZXIuanNcIiBpblxuICBsZXQga2FzYV9tYWlsYm94ID0gS2FzYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthbW9oYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FNb0hhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthbW9oYV9tYWlsYm94ID0gS2Ftb2hhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2FzdG9yX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVN0b3JXb3JrZXIuanNcIiBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaXRpYWxpemVyXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXNhX2NsaWVudC5yZWNlaXZlIGthc2FfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2Ftb2hhX2NsaWVudC5yZWNlaXZlIGthbW9oYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICAoKVxuXG4gICAgaW5oZXJpdFxuICAgICAgQXBpX3J1bnRpbWUubWFuYWdlclxuICAgICAgICAob2JqZWN0XG4gICAgICAgICAgIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uICgpID0gMC4xXG4gICAgICAgICAgIG1ldGhvZCB5aWVsZCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMueWllbGRcblxuICAgICAgICAgICBtZXRob2QgbG9nID9leG4gKG1zZyA6IHN0cmluZykgPVxuICAgICAgICAgICAgIGxldCAoKSA9IGlnbm9yZSBleG4gaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiZW1iZWRkZWRfbWFuYWdlciNsb2c6ICVzXCIgbXNnKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgZW5kXG4gICAgICAgICAgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXNhX2NsaWVudC5uZXdfdW5pZm9ybV9jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYXNhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYXNhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthbW9oYV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYW1vaGFfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthbW9oYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2FzdG9yX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICBtZXRob2QgaXNfcnVubmluZyA9IHRydWVcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0ga2FzYV93b3JrZXIjI3Rlcm1pbmF0ZSBpblxuICAgICAgKCkgKCpUT0RPKilcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlICgqVE9ETyopXG4gICAgdmFsIG11dGFibGUga2FzYV9sb2NhdG9yID0gW11cblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjc2VjcmV0X3Byb2plY3RfcGFyc2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYWQgPVxuICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBvdXQgb3ZlcndyaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5pdCA9IHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXIgb3V0IGluXG4gICAgICAgICAgICAgIGxldCBsb2NhdG9ycyA9XG4gICAgICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSlcbiAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGluZm9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBpbmZvcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvYWQgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+IGxvY2F0b3JzKSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgOiBfIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAoZnVuIChfLCB4KSAtPiBMb2MuaXNfaW5jbHVkZWRfaW4gZmlsZW5hbWUgcG9zIHgpXG4gICAgICAgIGthc2FfbG9jYXRvclxuICAgICAgfD4gT3B0aW9uX3V0aWwubWFwIGZzdFxuICAgICAgfD4gUmVzdWx0X3V0aWwub2sgP3N0YXR1czpOb25lXG4gICAgICB8PiBMd3QucmV0dXJuXG4gIGVuZFxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9XG4gIFJlYWN0LlMuY3JlYXRlXG4gICAgeyBzdGF0ZV9jdXJyZW50ID0gV2ViV29ya2VyOyBzdGF0ZV9ydW50aW1lcyA9IFsgV2ViV29ya2VyOyBFbWJlZGRlZCBdIH1cblxubGV0IGNyZWF0ZV9tYW5hZ2VyIH5pc19uZXcgcHJvamVjdF9pZCA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zdGF0ZV9jdXJyZW50IHdpdGhcbiAgfCBXZWJXb3JrZXIgLT5cbiAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoUmVzdWx0X3V0aWwub2sgKG5ldyBXZWJfd29ya2VyX2FwaS5tYW5hZ2VyICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICB8IEVtYmVkZGVkIC0+XG4gICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG5ldyBlbWJlZGRlZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCB2ZXJzaW9uX3VybCA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X3J1bnRpbWVfdXJsOiAlc1wiIHZlcnNpb25fdXJsKSlcbiAgICBpblxuICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5wZXJmb3JtX3Jhd1xuICAgICAgfnJlc3BvbnNlX3R5cGU6WG1sSHR0cFJlcXVlc3QuVGV4dCB2ZXJzaW9uX3VybFxuICAgID4+PSBmdW4gZnJhbWUgLT5cbiAgICBsZXQgaXNfdmFsaWRfc2VydmVyIDogYm9vbCA9XG4gICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSA9IDIwMFxuICAgIGluXG4gICAgaWYgaXNfdmFsaWRfc2VydmVyIHRoZW4gKFxuICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIHRydWUgaW5cbiAgICAgIGxldCBtYW5hZ2VyID0gbmV3IFJlc3RfYXBpLm1hbmFnZXIgfnRpbWVvdXQ6Tm9uZSB+dXJsIH5wcm9qZWN0X2lkIGluXG4gICAgICAoaWYgaXNfbmV3IHRoZW5cbiAgICAgICAgIG1hbmFnZXIjcHJvamVjdF9jcmVhdGVcbiAgICAgICAgICAgeyBBcGlfdHlwZXNfai5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gcHJvamVjdF9pZCB9XG4gICAgICAgZWxzZVxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChtYW5hZ2VyIDo+IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSkpXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkJhZCBSZXNwb25zZSAlZCBmcm9tICVzIFwiXG4gICAgICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgdXJsXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICApXG4gIHwgUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+XG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKFwic2V0X3J1bnRpbWVfdXJsOiBcIiBeIGNsaS51cmwpKSBpblxuICAgICh0cnlcbiAgICAgICBsZXQganNfbm9kZV9ydW50aW1lID0gbmV3IEpzTm9kZS5tYW5hZ2VyIGNsaS5jb21tYW5kIGNsaS5hcmdzIGluXG4gICAgICAgaWYganNfbm9kZV9ydW50aW1lI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcInNldF9ydW50aW1lX3VybDpzdWNlc3NcIikgaW5cbiAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGpzX25vZGVfcnVudGltZSA6PiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gICAgICAgKSBlbHNlIChcbiAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic2V0X3J1bnRpbWVfdXJsOmZhaWx1cmVcIikgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkNvdWxkIG5vdCBzdGFydCBjbGkgcnVudGltZSAlcyBcIiBsYWJlbFxuICAgICAgICAgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgICAgKVxuICAgICB3aXRoIEZhaWx1cmUgeCAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgeCkpXG5cbmxldCBzZXRfc3BlYyBydW50aW1lID1cbiAgbGV0IGN1cnJlbnRfc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIHNldF9zdGF0ZVxuICAgIHsgc3RhdGVfY3VycmVudCA9IHJ1bnRpbWU7IHN0YXRlX3J1bnRpbWVzID0gY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcyB9XG5cbmxldCBjcmVhdGVfc3BlYyB+bG9hZCAoaWQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0ID1cbiAgbWF0Y2ggcmVhZF9zcGVjIGlkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCB0byBjcmVhdGUgc3BlYzogY291bGQgbm90IHBhcnNlIGlkZW50aWZpZXIgJXNcIiBpZFxuICAgIGluXG4gICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZ1xuICB8IFNvbWUgcnVudGltZSAtPlxuICAgIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBub3QgKExpc3QubWVtIHJ1bnRpbWUgY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcykgdGhlblxuICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0ZV9jdXJyZW50ID0gY3VycmVudF9zdGF0ZS5zdGF0ZV9jdXJyZW50O1xuICAgICAgICAgICAgc3RhdGVfcnVudGltZXMgPSBydW50aW1lIDo6IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gaWYgbG9hZCB0aGVuIHNldF9zcGVjIHJ1bnRpbWUgaW5cbiAgICBSZXN1bHRfdXRpbC5vayAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gc3RhdGUgLT5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudCA9IHN0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgIG1vZGVsX3J1bnRpbWVzID0gc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICB9KVxuICAgIHN0YXRlXG5cbigqIHJ1biBvbiBhcHBsaWNhdGlvbiBpbml0ICopXG5sZXQgaW5pdCAoKSA9XG4gICgqIGdldCB1cmwgb2YgaG9zdCAqKVxuICBsZXQgaG9zdHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJob3N0XCIgaW5cbiAgbGV0IHJlYyBhZGRfdXJscyB1cmxzIGxvYWQgPVxuICAgIG1hdGNoIHVybHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHVybCA6OiB1cmxzIC0+XG4gICAgICAobWF0Y2ggY3JlYXRlX3NwZWMgfmxvYWQgdXJsIHdpdGhcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5PayAoKTsgXyB9IC0+IGFkZF91cmxzIHVybHMgZmFsc2VcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gLT4gYWRkX3VybHMgdXJscyBsb2FkKVxuICBpblxuICBsZXQgKCkgPSBhZGRfdXJscyBob3N0cyB0cnVlIGluXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zdGF0ZV9jdXJyZW50IHdpdGhcbiAgfCBSZW1vdGUgeyBwcm90b2NvbCA9IENMSSBfOyBfIH0gfCBXZWJXb3JrZXIgfCBFbWJlZGRlZCAtPiBMd3QucmV0dXJuX25pbFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IHZlcnNpb25fdXJsIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCBpblxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24uZGVidWdcbiAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfcnVudGltZV91cmw6ICVzXCIgdmVyc2lvbl91cmwpKVxuICAgIGluXG4gICAgSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnBlcmZvcm1fcmF3XG4gICAgICB+cmVzcG9uc2VfdHlwZTpYbWxIdHRwUmVxdWVzdC5UZXh0IHZlcnNpb25fdXJsXG4gICAgPj49IGZ1biBmcmFtZSAtPlxuICAgIGxldCBpc192YWxpZF9zZXJ2ZXIgOiBib29sID1cbiAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlID0gMjAwXG4gICAgaW5cbiAgICBpZiBpc192YWxpZF9zZXJ2ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggdHJ1ZSBpblxuICAgICAgbGV0IG1hbmFnZXIgPSBuZXcgUmVzdF9hcGkubWFuYWdlciB+dGltZW91dDpOb25lIH51cmwgfnByb2plY3RfaWQ6XCJcIiBpblxuICAgICAgbWFuYWdlciNwcm9qZWN0X2NhdGFsb2dcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biBwcm9qZWN0cyAtPiBMd3QucmV0dXJuIHByb2plY3RzKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX25pbClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm5fbmlsXG5cbigqIHRvIHN5bmMgc3RhdGUgb2YgYXBwbGljYXRpb24gd2l0aCBydW50aW1lICopXG5sZXQgc3luYyAoKSA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHBsb3RQZXJpb2RQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFBsb3RQZXJpb2RcIlxubGV0IHBhdXNlQ29uZGl0aW9uUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBQYXVzZUNvbmRpdGlvblwiXG5sZXQgc2VlZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRGVmYXVsdFNlZWRcIlxubGV0IHN0b3JlVHJhY2VQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFN0b3JlVHJhY2VcIlxubGV0IHNob3dEZWFkUnVsZXNQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFNob3dEZWFkUnVsZXNcIlxubGV0IHNob3dEZWFkQWdlbnRzUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTaG93RGVhZEFnZW50c1wiXG5cbmxldCBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkID1cbiAgSnMuc3RyaW5nIFwia2FwcGFwcFNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uXCJcblxudHlwZSBwYXJhbWV0ZXJzID0ge1xuICBwbG90X3BlcmlvZDogZmxvYXQ7XG4gIHBhdXNlX2NvbmRpdGlvbjogc3RyaW5nO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICBzdG9yZV90cmFjZTogYm9vbDtcbiAgc2hvd19kZWFkX3J1bGVzOiBib29sO1xuICBzaG93X2RlYWRfYWdlbnRzOiBib29sO1xuICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uczogYm9vbDtcbn1cblxudHlwZSBhX3Byb2plY3QgPSB7XG4gIHByb2plY3RfaWQ6IHN0cmluZztcbiAgcHJvamVjdF9pc19jb21wdXRpbmc6IGJvb2wgUmVhY3QuUy50O1xuICBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsOiBib29sIHJlZjtcbiAgcHJvamVjdF9tYW5hZ2VyOiBBcGkuY29uY3JldGVfbWFuYWdlcjtcbn1cblxudHlwZSBzdGF0ZSA9IHtcbiAgcHJvamVjdF9jdXJyZW50OiBhX3Byb2plY3Qgb3B0aW9uO1xuICBwcm9qZWN0X2NhdGFsb2c6IGFfcHJvamVjdCBsaXN0O1xuICBwcm9qZWN0X3ZlcnNpb246IGludDtcbiAgZGVmYXVsdF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzO1xuICBwcm9qZWN0X3BhcmFtZXRlcnM6IHBhcmFtZXRlcnMgTW9kcy5TdHJpbmdNYXAudDtcbn1cblxudHlwZSBwcm9qZWN0X21vZGVsID0ge1xuICBtb2RlbF9wcm9qZWN0X2lkOiBzdHJpbmc7XG4gIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nOiBib29sIFJlYWN0LlMudDtcbn1cblxudHlwZSBtb2RlbCA9IHtcbiAgbW9kZWxfY3VycmVudF9pZDogc3RyaW5nIG9wdGlvbjtcbiAgbW9kZWxfY2F0YWxvZzogcHJvamVjdF9tb2RlbCBsaXN0O1xuICBtb2RlbF9wcm9qZWN0X3ZlcnNpb246IGludDtcbiAgbW9kZWxfcGFyYW1ldGVyczogcGFyYW1ldGVycztcbn1cblxubGV0IHByb2plY3RfZXF1YWwgYSBiID0gYS5wcm9qZWN0X2lkID0gYi5wcm9qZWN0X2lkXG5cbmxldCBjYXRhbG9nX2VxdWFsIHggeSA9XG4gIHRyeSBMaXN0LmZvcl9hbGwyIHByb2plY3RfZXF1YWwgeCB5IHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlXG5cbmxldCBzdGF0ZV9lcXVhbCBhIGIgPVxuICBPcHRpb25fdXRpbC5lcXVhbCBwcm9qZWN0X2VxdWFsIGEucHJvamVjdF9jdXJyZW50IGIucHJvamVjdF9jdXJyZW50XG4gICYmIGEucHJvamVjdF92ZXJzaW9uID0gYi5wcm9qZWN0X3ZlcnNpb25cbiAgJiYgYS5kZWZhdWx0X3BhcmFtZXRlcnMgPSBiLmRlZmF1bHRfcGFyYW1ldGVyc1xuICAmJiBNb2RzLlN0cmluZ01hcC5lcXVhbFxuICAgICAgIChmdW4geCB5IC0+IGNvbXBhcmUgeCB5ID0gMClcbiAgICAgICBhLnByb2plY3RfcGFyYW1ldGVycyBiLnByb2plY3RfcGFyYW1ldGVyc1xuICAmJiBjYXRhbG9nX2VxdWFsIGEucHJvamVjdF9jYXRhbG9nIGIucHJvamVjdF9jYXRhbG9nXG5cbmxldCBtb2RlbF9lcXVhbCBhIGIgPVxuICBPcHRpb25fdXRpbC5lcXVhbFxuICAgIChmdW4geCB5IC0+IFN0cmluZy5jb21wYXJlIHggeSA9IDApXG4gICAgYS5tb2RlbF9jdXJyZW50X2lkIGIubW9kZWxfY3VycmVudF9pZFxuICAmJiAodHJ5XG4gICAgICAgIExpc3QuZm9yX2FsbDJcbiAgICAgICAgICAoZnVuIHggeSAtPiB4Lm1vZGVsX3Byb2plY3RfaWQgPSB5Lm1vZGVsX3Byb2plY3RfaWQpXG4gICAgICAgICAgYS5tb2RlbF9jYXRhbG9nIGIubW9kZWxfY2F0YWxvZ1xuICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICYmIGEubW9kZWxfcHJvamVjdF92ZXJzaW9uID0gYi5tb2RlbF9wcm9qZWN0X3ZlcnNpb25cbiAgJiYgYS5tb2RlbF9wYXJhbWV0ZXJzID0gYi5tb2RlbF9wYXJhbWV0ZXJzXG5cbmxldCBpbml0X2RlZmF1bHRfcGFyYW1ldGVycyA9XG4gIHtcbiAgICBwbG90X3BlcmlvZCA9IDEuO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IFwiW2ZhbHNlXVwiO1xuICAgIHNlZWQgPSBOb25lO1xuICAgIHN0b3JlX3RyYWNlID0gZmFsc2U7XG4gICAgc2hvd19kZWFkX3J1bGVzID0gdHJ1ZTtcbiAgICBzaG93X2RlYWRfYWdlbnRzID0gdHJ1ZTtcbiAgICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IGZhbHNlO1xuICB9XG5cbmxldCBpbml0X3N0YXRlID1cbiAge1xuICAgIHByb2plY3RfY3VycmVudCA9IE5vbmU7XG4gICAgcHJvamVjdF9jYXRhbG9nID0gW107XG4gICAgcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgcHJvamVjdF9wYXJhbWV0ZXJzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIH1cblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSB+ZXE6c3RhdGVfZXF1YWwgaW5pdF9zdGF0ZVxuXG5sZXQgdXBkYXRlX3BhcmFtZXRlcnMgaGFuZGxlciA9XG4gIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgbGV0IGRlZmF1bHRfcGFyYW1ldGVycywgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBoYW5kbGVyIHN0LmRlZmF1bHRfcGFyYW1ldGVycywgc3QucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgfCBTb21lIHByb2ogLT5cbiAgICAgICggc3QuZGVmYXVsdF9wYXJhbWV0ZXJzLFxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgKGhhbmRsZXJcbiAgICAgICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0LmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnMpKVxuICAgICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVycyApXG4gIGluXG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IHN0LnByb2plY3RfY3VycmVudDtcbiAgICAgIHByb2plY3RfY2F0YWxvZyA9IHN0LnByb2plY3RfY2F0YWxvZztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbjtcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycztcbiAgICB9XG5cbmxldCBzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpID1cbiAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBsZXQgcGEgPVxuICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0LmRlZmF1bHRfcGFyYW1ldGVyc1xuICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBscyAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxzIyNzZXRJdGVtIHBsb3RQZXJpb2RQYXJhbUlkXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgcGEucGxvdF9wZXJpb2QpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxzIyNzZXRJdGVtIHBhdXNlQ29uZGl0aW9uUGFyYW1JZCAoSnMuc3RyaW5nIHBhLnBhdXNlX2NvbmRpdGlvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwYS5zZWVkIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbHMjI3JlbW92ZUl0ZW0gc2VlZFBhcmFtSWRcbiAgICAgICAgICB8IFNvbWUgdmEgLT4gbHMjI3NldEl0ZW0gc2VlZFBhcmFtSWQgKEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCB2YSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc3RvcmVUcmFjZVBhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjcmVtb3ZlSXRlbSBzdG9yZVRyYWNlUGFyYW1JZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfZGVhZF9ydWxlcyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkIChKcy5zdHJpbmcgXCJmYWxzZVwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfZGVhZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkIChKcy5zdHJpbmcgXCJmYWxzZVwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjcmVtb3ZlSXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICBpblxuICBzZXRfc3RhdGVcbiAgICB7XG4gICAgICBwcm9qZWN0X2N1cnJlbnQgPSBzdC5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICBwcm9qZWN0X2NhdGFsb2cgPSBzdC5wcm9qZWN0X2NhdGFsb2c7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb247XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPSBzdC5wcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBwYTtcbiAgICB9XG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgcGxvdF9wZXJpb2QgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBwbG90X3BlcmlvZCB9KVxuXG5sZXQgc2V0X3BhdXNlX2NvbmRpdGlvbiBwYXVzZV9jb25kaXRpb24gPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBwYXVzZV9jb25kaXRpb24gfSlcblxubGV0IHNldF9zZWVkIHNlZWQgPSB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzZWVkIH0pXG5cbmxldCBzZXRfc3RvcmVfdHJhY2Ugc3RvcmVfdHJhY2UgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzdG9yZV90cmFjZSB9KVxuXG5sZXQgc2V0X3Nob3dfZGVhZF9ydWxlcyBzaG93X2RlYWRfcnVsZXMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfcnVsZXMgfSlcblxubGV0IHNldF9zaG93X2RlYWRfYWdlbnRzIHNob3dfZGVhZF9hZ2VudHMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfYWdlbnRzIH0pXG5cbmxldCBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT5cbiAgICAgIHsgcGFyYW0gd2l0aCBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB9KVxuXG5sZXQgdXBkYXRlX3N0YXRlIG1lIHByb2plY3RfY2F0YWxvZyBkZWZhdWx0X3BhcmFtZXRlcnMgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgbWUucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICAgIFtdXG4gID4+PSBmdW4gb3V0IC0+XG4gIGxldCAoKSA9XG4gICAgc2V0X3N0YXRlXG4gICAgICB7XG4gICAgICAgIHByb2plY3RfY3VycmVudCA9IFNvbWUgbWU7XG4gICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICAgIHByb2plY3RfdmVyc2lvbiA9IDE7XG4gICAgICB9XG4gIGluXG4gIEx3dC5yZXR1cm4gb3V0XG5cbmxldCBjb21wdXRpbmdfd2F0Y2hlciBtYW5hZ2VyIHNldHRlciA9XG4gIGxldCBkZWxheSA9IDEuIGluXG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgKCkgPSBzZXR0ZXIgbWFuYWdlciNpc19jb21wdXRpbmcgaW5cbiAgICBpZiAhY2FuY2VsbGVkIHRoZW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVsc2VcbiAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgZGVsYXkgPj49IGxvb3BcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmFzeW5jIF9fTE9DX18gbG9vcCBpblxuICBjYW5jZWxsZWRcblxubGV0IGFkZF9wcm9qZWN0IGlzX25ldyBwcm9qZWN0X2lkIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHN0YXRlX3ZhID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAoKiBUT0RPOiBJcyBpdCBvayB0byBnZXQgdGhlIHZhbHVlIGxpa2UgdGhpcyA/ICopXG4gIGxldCBjYXRhbG9nID0gc3RhdGVfdmEucHJvamVjdF9jYXRhbG9nIGluXG4gICh0cnlcbiAgICAgTHd0LnJldHVyblxuICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICggTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBjYXRhbG9nLFxuICAgICAgICAgICAgY2F0YWxvZyxcbiAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVycyApKVxuICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlciB+aXNfbmV3IHByb2plY3RfaWRcbiAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHByb2plY3RfbWFuYWdlciAtPlxuICAgICAgICAgICAgIGxldCBwcm9qZWN0X2lzX2NvbXB1dGluZywgc2V0X2NvbXB1dGVzID0gUmVhY3QuUy5jcmVhdGUgdHJ1ZSBpblxuICAgICAgICAgICAgIGxldCBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsID1cbiAgICAgICAgICAgICAgIGNvbXB1dGluZ193YXRjaGVyIHByb2plY3RfbWFuYWdlciAoc2V0X2NvbXB1dGVzID9zdGVwOk5vbmUpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgbWUgPVxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X2lkO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X21hbmFnZXI7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGRlZmF1bHRfcGFyYW1ldGVycyA9IHN0YXRlX3ZhLmRlZmF1bHRfcGFyYW1ldGVycyBpblxuICAgICAgICAgICAgIGxldCBwYXJhbXMgPVxuICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2plY3RfaWQgZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG1lLCBtZSA6OiBjYXRhbG9nLCBwYXJhbXMpKSkpXG4gID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAobWUsIGNhdGFsb2csIHBhcmFtcykgLT5cbiAgICAgICAgICB1cGRhdGVfc3RhdGUgbWUgY2F0YWxvZyBzdGF0ZV92YS5kZWZhdWx0X3BhcmFtZXRlcnMgcGFyYW1zKVxuXG5sZXQgY3JlYXRlX3Byb2plY3QgcHJvamVjdF9pZCA9IGFkZF9wcm9qZWN0IHRydWUgcHJvamVjdF9pZFxubGV0IHNldF9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCBmYWxzZSBwcm9qZWN0X2lkXG5cbmxldCBkdW1teV9tb2RlbCA9XG4gIHtcbiAgICBtb2RlbF9jdXJyZW50X2lkID0gTm9uZTtcbiAgICBtb2RlbF9jYXRhbG9nID0gW107XG4gICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgbW9kZWxfcGFyYW1ldGVycyA9IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICB9XG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMubWFwIH5lcTptb2RlbF9lcXVhbFxuICAgIChmdW4gc3RhdGUgLT5cbiAgICAgIGxldCBtb2RlbF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIHAgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZCA9IHAucHJvamVjdF9pZDtcbiAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmcgPSBwLnByb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICAgIGluXG4gICAgICBsZXQgbW9kZWxfcGFyYW1ldGVycyA9XG4gICAgICAgIG1hdGNoIHN0YXRlLnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgICAgICAgfCBTb21lIHByb2ogLT5cbiAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgICAgc3RhdGUucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBtb2RlbF9jdXJyZW50X2lkID1cbiAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCkgc3RhdGUucHJvamVjdF9jdXJyZW50O1xuICAgICAgICBtb2RlbF9jYXRhbG9nO1xuICAgICAgICBtb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSBzdGF0ZS5wcm9qZWN0X3ZlcnNpb247XG4gICAgICAgIG1vZGVsX3BhcmFtZXRlcnM7XG4gICAgICB9KVxuICAgIHN0YXRlXG5cbmxldCBzeW5jICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICBjdXJyZW50LnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlXG4gICAgICB+cGF0dGVyblNoYXJpbmc6UGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zIFtdXG4gICAgPj49IGZ1biBvdXQgLT5cbiAgICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID0gc2V0X3N0YXRlIHsgc3Qgd2l0aCBwcm9qZWN0X3ZlcnNpb24gPSBzdWNjIHN0LnByb2plY3RfdmVyc2lvbiB9IGluXG4gICAgTHd0LnJldHVybiBvdXRcblxubGV0IHJlbW92ZV9maWxlcyBtYW5hZ2VyID1cbiAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICBMd3RfbGlzdC5pdGVyX3BcbiAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG0uS2ZpbGVzLmlkID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCByZW1vdmVfcHJvamVjdCBwcm9qZWN0X2lkID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICB0cnlcbiAgICBsZXQgY3VycmVudCA9XG4gICAgICBMaXN0LmZpbmQgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA9IHByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgcmVtb3ZlX2ZpbGVzIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyID4+PSBmdW4gb3V0JyAtPlxuICAgIGxldCAoKSA9IGN1cnJlbnQucHJvamVjdF93YXRjaGVyX2NhbmNlbCA6PSB0cnVlIGluXG4gICAgbGV0IHByb2plY3RfY2F0YWxvZyA9XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIHggLT4geC5wcm9qZWN0X2lkIDw+IGN1cnJlbnQucHJvamVjdF9pZClcbiAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgaW5cbiAgICBsZXQgcHJvamVjdF9jdXJyZW50ID1cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHN0YXRlLnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2LnByb2plY3RfaWQgPSBjdXJyZW50LnByb2plY3RfaWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBwcm9qZWN0X2NhdGFsb2cgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBoIDo6IF8gLT4gU29tZSBoXG4gICAgICApIGVsc2VcbiAgICAgICAgc3RhdGUucHJvamVjdF9jdXJyZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc2V0X3N0YXRlXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9qZWN0X2N1cnJlbnQ7XG4gICAgICAgICAgcHJvamVjdF9jYXRhbG9nO1xuICAgICAgICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAucmVtb3ZlIHByb2plY3RfaWQgc3RhdGUucHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgICAgIHByb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3RfbWFuYWdlciN0ZXJtaW5hdGUgaW5cbiAgICBzeW5jICgpID4+PSBmdW4gb3V0JycgLT5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgb3V0Jzsgb3V0JycgXSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAoXCJQcm9qZWN0IFwiIF4gcHJvamVjdF9pZCBeIFwiIGRvZXMgbm90IGV4aXN0c1wiKSlcblxubGV0IHJlYyBpbml0X3Bsb3RfcGVyaW9kIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogdCAtPlxuICAgICh0cnkgc2V0X3Bsb3RfcGVyaW9kIChmbG9hdF9vZl9zdHJpbmcgaClcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgaW5pdF9wbG90X3BlcmlvZCAnJXMnXCIgaCBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICBpbml0X3Bsb3RfcGVyaW9kIHQpXG5cbmxldCBpbml0X3BhdXNlX2NvbmRpdGlvbiAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3BhdXNlX2NvbmRpdGlvbiBoXG5cbmxldCByZWMgaW5pdF9tb2RlbF9zZWVkIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogdCAtPlxuICAgICh0cnkgc2V0X3Bsb3RfcGVyaW9kIChmbG9hdF9vZl9zdHJpbmcgaClcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgbW9kZWxfc2VlZCAnJXMnXCIgaCBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICBpbml0X21vZGVsX3NlZWQgdClcblxubGV0IGluaXRfc3RvcmVfdHJhY2UgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zdG9yZV90cmFjZSAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfZGVhZF9ydWxlcyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfZGVhZF9ydWxlcyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfZGVhZF9hZ2VudHMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfYWdlbnRzIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0IGV4aXN0aW5nX3Byb2plY3RzIDogdW5pdCBMd3QudCA9XG4gIGxldCBhcmdfcGxvdF9wZXJpb2QgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBwbG90UGVyaW9kUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInBsb3RfcGVyaW9kXCJcbiAgaW5cbiAgbGV0IGFyZ19wYXVzZV9jb25kaXRpb24gPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBwYXVzZUNvbmRpdGlvblBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwYXVzZV9jb25kaXRpb25cIlxuICBpblxuICBsZXQgYXJnX21vZGVsX3NlZWQgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzZWVkUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcIm1vZGVsX3NlZWRcIlxuICBpblxuICBsZXQgYXJnX3N0b3JlX3RyYWNlID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc3RvcmVUcmFjZVBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzdG9yZV90cmFjZVwiXG4gIGluXG4gIGxldCBhcmdfc2hvd19kZWFkX3J1bGVzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X2RlYWRfcnVsZXNcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9hZ2VudHMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X2RlYWRfYWdlbnRzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1wiXG4gIGluXG4gIGxldCAoKSA9IGluaXRfcGxvdF9wZXJpb2QgYXJnX3Bsb3RfcGVyaW9kIGluXG4gIGxldCAoKSA9IGluaXRfcGF1c2VfY29uZGl0aW9uIGFyZ19wYXVzZV9jb25kaXRpb24gaW5cbiAgbGV0ICgpID0gaW5pdF9tb2RlbF9zZWVkIGFyZ19tb2RlbF9zZWVkIGluXG4gIGxldCAoKSA9IGluaXRfc3RvcmVfdHJhY2UgYXJnX3N0b3JlX3RyYWNlIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX3J1bGVzIGFyZ19zaG93X2RlYWRfcnVsZXMgaW5cbiAgbGV0ICgpID0gaW5pdF9zaG93X2RlYWRfYWdlbnRzIGFyZ19zaG93X2RlYWRfYWdlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgaW5pdF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gIGluXG5cbiAgbGV0IHByb2plY3RzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0OlsgXCJkZWZhdWx0XCIgXSBcInByb2plY3RcIiBpblxuICBsZXQgcmVjIGFkZF9wcm9qZWN0cyBwcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIHByb2plY3RzIHdpdGhcbiAgICB8IFtdIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgcHJvamVjdCA6OiBwcm9qZWN0cyAtPlxuICAgICAgYWRkX3Byb2plY3RcbiAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuIHggLT4geCA8PiBwcm9qZWN0KSBleGlzdGluZ19wcm9qZWN0cylcbiAgICAgICAgcHJvamVjdFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBwcm9qZWN0ICVzIGVycm9yIEBbJWFAXVwiIHByb2plY3RcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiU3RhdGVfcHJvamVjdC5pbml0IDIgOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgaW5cbiAgYWRkX3Byb2plY3RzIGV4aXN0aW5nX3Byb2plY3RzID4+PSBmdW4gKCkgLT4gYWRkX3Byb2plY3RzIHByb2plY3RzXG5cbmxldCBldmFsX3dpdGhfcHJvamVjdCA6XG4gICAgICAnYS5cbiAgICAgIGxhYmVsOnN0cmluZyAtPlxuICAgICAgKEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQpIC0+XG4gICAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiBmdW4gfmxhYmVsIGhhbmRsZXIgLT5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgJXMgZHVlIHRvIHVuYXZhaWxhYmxlIHByb2plY3QuXCIgbGFiZWxcbiAgICBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBjdXJyZW50IC0+IGhhbmRsZXIgY3VycmVudC5wcm9qZWN0X21hbmFnZXJcblxubGV0IG9uX3Byb2plY3RfY2hhbmdlX2FzeW5jID9lcSB+b24gPyhvdGhlcnNfZXEgPSAoID0gKSkgaW5pdF9vdGhlcnMgb3RoZXJzXG4gICAgZGVmYXVsdCBoYW5kbGVyID1cbiAgbGV0IGVxX3BhaXIgPSBNb2RzLnBhaXJfZXF1YWwgc3RhdGVfZXF1YWwgb3RoZXJzX2VxIGluXG4gIFJlYWN0LlMuaG9sZCA/ZXEgZGVmYXVsdFxuICAgIChMd3RfcmVhY3QuRS5tYXBfcFxuICAgICAgIChmdW4gKHN0LCBvdGgpIC0+XG4gICAgICAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm4gZGVmYXVsdFxuICAgICAgICAgfCBTb21lIGN1cnJlbnQgLT4gaGFuZGxlciBjdXJyZW50LnByb2plY3RfbWFuYWdlciBvdGgpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIH5lcTplcV9wYWlyIG9uIChpbml0X3N0YXRlLCBpbml0X290aGVycylcbiAgICAgICAgICAgICAoUmVhY3QuUy5QYWlyLnBhaXIgfmVxOmVxX3BhaXIgc3RhdGUgb3RoZXJzKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBzbG90ID0geyBsb2NhbDogc3RyaW5nIG9wdGlvbjsgbmFtZTogc3RyaW5nIH1cbnR5cGUgYWN0aXZlID0geyByYW5rOiBpbnQ7IGN1cnNvcl9wb3M6IExvYy5wb3NpdGlvbjsgb3V0X29mX3N5bmM6IGJvb2wgfVxudHlwZSBtb2RlbCA9IHsgY3VycmVudDogYWN0aXZlIG9wdGlvbjsgZGlyZWN0b3J5OiBzbG90IE1vZHMuSW50TWFwLnQgfVxuXG5sZXQgZHVtbXlfY3Vyc29yX3BvcyA9IHsgTG9jLmxpbmUgPSAtMTsgTG9jLmNociA9IDAgfVxubGV0IGJsYW5rX3N0YXRlID0geyBjdXJyZW50ID0gTm9uZTsgZGlyZWN0b3J5ID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxubGV0IG1vZGVsLCBzZXRfZGlyZWN0b3J5X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgYmxhbmtfc3RhdGVcblxudHlwZSByZWZyZXNoID0geyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IGxpbmU6IGludCBvcHRpb24gfVxuXG5sZXQgcmVmcmVzaF9maWxlX2hvb2sgPSByZWYgW11cbmxldCByZWdpc3Rlcl9yZWZyZXNoX2ZpbGVfaG9vayB4ID0gcmVmcmVzaF9maWxlX2hvb2sgOj0geCA6OiAhcmVmcmVzaF9maWxlX2hvb2tcblxubGV0IGN1cnJlbnRfZmlsZW5hbWUgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbSAtPlxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgIChmdW4geyBuYW1lOyBfIH0gLT4gbmFtZSlcbiAgICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX29wdGlvbiB4LnJhbmsgbS5kaXJlY3RvcnkpKVxuICAgICAgICBtLmN1cnJlbnQpXG4gICAgbW9kZWxcblxubGV0IHdpdGhfY3VycmVudF9wb3MgP2VxID8ob24gPSBSZWFjdC5TLmNvbnN0IHRydWUpIGYgZGVmYXVsdCA9XG4gIFJlYWN0LlMuZm1hcCA/ZXFcbiAgICAoZnVuIG0gLT5cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBmIG5hbWUgeC5jdXJzb3JfcG9zKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBkZWZhdWx0XG4gICAgKFJlYWN0LlMub24gb24gYmxhbmtfc3RhdGUgbW9kZWwpXG5cbmxldCB3aXRoX2N1cnJlbnRfZmlsZSBmID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCBzdGF0ZS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9IFwiQXR0ZW1wdCB0byBmZXRjaCBmaWxlIHdpdGggbm9uZSBzZWxlY3RlZC5cIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBhY3RpdmUgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkludGVybmFsIGluY29uc2lzdGVudGN5OiBObyBmaWxlIGF0IHNlbGVjdGVkIHJhbmsuXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgIHwgU29tZSB4IC0+IGYgc3RhdGUgYWN0aXZlIHgpXG5cbmxldCBnZXRfZmlsZSAoKSA6IChzdHJpbmcgKiBzdHJpbmcpIEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX2N1cnJlbnRfZmlsZSAoZnVuIF9zdGF0ZSBhY3RpdmUgLT4gZnVuY3Rpb25cbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiZ2V0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZ2V0IG5hbWVcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHRleHQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgYWN0aXZlLnJhbmsgPSByYW5rJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID0gXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgZ2V0X2ZpbGUuXCIgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICAgICAgICAgICAgICkpKVxuICAgIHwgeyBsb2NhbCA9IFNvbWUgdGV4dDsgbmFtZSB9IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSkpXG5cbmxldCBzZW5kX3JlZnJlc2ggKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICgqIG9ubHkgc2VuZCByZWZyZXNoIGlmIHRoZXJlIGlzIGEgY3VycmVudCBmaWxlICopXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgeyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgaWYgb3V0X29mX3N5bmMgdGhlblxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgIFwiRmlsZSB3YXMgbm90IGluIHN5bmMuIFN3aXRjaGluZyBtYXkgbGVhZCB0byBkYXRhIGxvc3QuXCIpXG4gICAgZWxzZVxuICAgICAgZ2V0X2ZpbGUgKClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBjb250ZW50IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gZiB7IGZpbGVuYW1lOyBjb250ZW50OyBsaW5lIH0pXG4gICAgICAgICAgICAgICAgICAhcmVmcmVzaF9maWxlX2hvb2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQgY3VycmVudCBjYXRhbG9nID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBsZXQgZGlyZWN0b3J5ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IGlkIH0gLT5cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHBvc2l0aW9uIHsgbmFtZSA9IGlkOyBsb2NhbCA9IE5vbmUgfSBhY2MpXG4gICAgICAoaWYgcmVzZXQgdGhlblxuICAgICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgICAgICBlbHNlXG4gICAgICAgICBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgICBjYXRhbG9nXG4gIGluXG4gIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfVxuXG5sZXQgY3JlYXRlX2ZpbGUgfihmaWxlbmFtZSA6IHN0cmluZykgfihjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudFxuICAgID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJjcmVhdGVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIGxldCBtYXRjaGluZ19maWxlID1cbiAgICAgICAgICAgICAgICBMaXN0LmZpbHRlclxuICAgICAgICAgICAgICAgICAgKGZ1biBmaWxlX21ldGFkYXRhIC0+IGZpbGVuYW1lID0gZmlsZV9tZXRhZGF0YS5LZmlsZXMuaWQpXG4gICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBtYXRjaGluZ19maWxlIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgIGxldCBtYXhfcG9zID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHsgS2ZpbGVzLnBvc2l0aW9uOyBfIH0gLT4gbWF4IGFjYyBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgMCBjYXRhbG9nXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfY3JlYXRlIChzdWNjIG1heF9wb3MpIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZycgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5vayAoY2F0YWxvZycsIHN1Y2MgbWF4X3BvcykpKSlcbiAgICAgICAgICAgICAgfCBtZXRhZGF0YSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX3VwZGF0ZSBmaWxlbmFtZSBjb250ZW50XG4gICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5vayAoY2F0YWxvZywgbWV0YWRhdGEuS2ZpbGVzLnBvc2l0aW9uKSkpKVxuICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGNhdGFsb2csIGN1cnJlbnQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0OmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rID0gY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggTm9uZSkpKVxuXG5sZXQgcmVjIGNob29zZV9maWxlIGNob2ljZSA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkIHRvIHN3aXRjaCBmaWxlICVzLlwiIGNob2ljZVxuICAgIGluXG4gICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZ1xuICB8IHsgS2ZpbGVzLmlkOyBwb3NpdGlvbiB9IDo6IHQgLT5cbiAgICBpZiBjaG9pY2UgPSBpZCB0aGVuXG4gICAgICBSZXN1bHRfdXRpbC5vayBwb3NpdGlvblxuICAgIGVsc2VcbiAgICAgIGNob29zZV9maWxlIGNob2ljZSB0XG5cbmxldCBzZWxlY3RfZmlsZSAoZmlsZW5hbWUgOiBzdHJpbmcpIChsaW5lIDogaW50IG9wdGlvbikgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnRcbiAgICA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2VsZWN0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgIH5vazooZnVuIHJhbmsgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0OmZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBsaW5lKVxuICAgICAgICAgICAgICAgIChjaG9vc2VfZmlsZSBmaWxlbmFtZSBjYXRhbG9nKSkpXG5cbmxldCBzZXRfY29udGVudCAoY29udGVudCA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX2N1cnJlbnRfZmlsZSAoZnVuIHN0YXRlIGFjdGl2ZSAtPiBmdW5jdGlvblxuICAgIHwgeyBsb2NhbCA9IFNvbWUgXzsgbmFtZSB9IC0+XG4gICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGFjdGl2ZS5yYW5rXG4gICAgICAgICAgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9XG4gICAgICAgICAgc3RhdGUuZGlyZWN0b3J5XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQgPSBzdGF0ZS5jdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgfCB7IGxvY2FsID0gTm9uZTsgbmFtZSB9IC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICByYW5rID0gYWN0aXZlLnJhbms7XG4gICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gYWN0aXZlLmN1cnNvcl9wb3M7XG4gICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkaXJlY3RvcnkgPSBzdGF0ZS5kaXJlY3Rvcnk7XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbnRlbnRcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIG5hbWUgY29udGVudCkpXG5cbmxldCBzZXRfY29tcGlsZSBmaWxlX2lkIChjb21waWxlIDogYm9vbCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIChyYW5rLCB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuIChcbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcmFuayB7IGxvY2FsID0gTm9uZTsgbmFtZSB9IHN0YXRlLmRpcmVjdG9yeVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH0gaW5cbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfY3JlYXRlIHJhbmsgbmFtZSBjb250ZW50KVxuICAgICkgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU29tZSAocmFuaywgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSkgLT5cbiAgICBpZiBjb21waWxlIHRoZW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIGVsc2VcbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZ2V0IG5hbWVcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGNvbnRlbnQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgcmFuayA9IHJhbmsnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgcmFua1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2V0X2NvbXBpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT4gbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgc2V0X2NvbXBpbGUuXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICAgICAgICAgICAgICkpKVxuXG5sZXQgcmVtb3ZlX2ZpbGUgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX2N1cnJlbnRfZmlsZSAoZnVuIHN0YXRlIGFjdGl2ZSB7IGxvY2FsOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPSBNb2RzLkludE1hcC5yZW1vdmUgYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IGluXG4gICAgICBsZXQgY3VycmVudCA9XG4gICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgIChmdW4gKHJhbmssIF8pIC0+XG4gICAgICAgICAgICB7IHJhbms7IGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyA9IGZhbHNlIH0pXG4gICAgICAgICAgKE1vZHMuSW50TWFwLnJvb3QgZGlyZWN0b3J5KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgbGV0IHggPSBzZW5kX3JlZnJlc2ggTm9uZSBpblxuICAgICAgbWF0Y2ggbG9jYWwgd2l0aFxuICAgICAgfCBTb21lIF8gLT4geFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwicmVtb3ZlX2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9kZWxldGUgbmFtZSA+Pj0gZnVuIHkgLT5cbiAgICAgICAgICAgIHggPj49IGZ1biB4IC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyB4OyB5IF0pKSlcblxubGV0IGRvX2FfbW92ZSBzdGF0ZSBmaWxlX2lkIHJhbmsgPVxuICBtYXRjaFxuICAgIE1vZHMuSW50TWFwLmZpbHRlcl9vbmUgKGZ1biBfIHsgbmFtZTsgXyB9IC0+IG5hbWUgPSBmaWxlX2lkKSBzdGF0ZS5kaXJlY3RvcnlcbiAgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnID0gXCJJbnRlcm5hbCBpbmNvbnNpc3RlbmN5OiBObyBmaWxlIFwiIF4gZmlsZV9pZCBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaycsICh7IGxvY2FsOyBfIH0gYXMgeCkpIC0+XG4gICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICBNb2RzLkludE1hcC5hZGQgcmFuayB4IChNb2RzLkludE1hcC5yZW1vdmUgcmFuaycgc3RhdGUuZGlyZWN0b3J5KVxuICAgIGluXG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgbWF0Y2ggc3RhdGUuY3VycmVudCB3aXRoXG4gICAgICB8IFNvbWUgeyByYW5rID0gcG9zOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9IHdoZW4gcG9zID0gcmFuaycgLT5cbiAgICAgICAgU29tZSB7IHJhbms7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH1cbiAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBpZiBsb2NhbCA9IE5vbmUgdGhlblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9tb3ZlIHJhbmsgZmlsZV9pZFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSkpKVxuICAgIGVsc2VcbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHsgY3VycmVudDsgZGlyZWN0b3J5IH0pXG5cbmxldCByZWMgc2V0X3Bvc2l0aW9uIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHJhbmsgc3RhdGUuZGlyZWN0b3J5IHdpdGhcbiAgfCBTb21lIHsgbmFtZTsgXyB9IC0+XG4gICAgaWYgZmlsZV9pZCA9IG5hbWUgdGhlblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc3RhdGUpXG4gICAgZWxzZVxuICAgICAgc2V0X3Bvc2l0aW9uIHN0YXRlIG5hbWUgKHN1Y2MgcmFuaylcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgZG9fYV9tb3ZlIHN0YXRlJyBmaWxlX2lkIHJhbmspXG4gIHwgTm9uZSAtPiBkb19hX21vdmUgc3RhdGUgZmlsZV9pZCByYW5rXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHJlYyBfb3JkZXJfZmlsZSBmaWxlbmFtZXMgc3RhdGUgaW5kZXggOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgIG1hdGNoIGZpbGVuYW1lcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSBzdGF0ZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgfCBmaWxlX2lkIDo6IHRhaWwgLT5cbiAgICAgIHNldF9wb3NpdGlvbiBzdGF0ZSBmaWxlX2lkIGluZGV4XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc3RhdGUnIC0+XG4gICAgICAgICAgICAgIF9vcmRlcl9maWxlIHRhaWwgc3RhdGUnIChpbmRleCArIDEpKVxuICBpblxuICBfb3JkZXJfZmlsZSBmaWxlbmFtZXMgKFJlYWN0LlMudmFsdWUgbW9kZWwpIDBcblxubGV0IGN1cnNvcl9hY3Rpdml0eSB+bGluZSB+Y2ggPVxuICBsZXQgdiA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggdi5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB7IHJhbms7IG91dF9vZl9zeW5jOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPVxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmFuaztcbiAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IHsgTG9jLmxpbmUgPSBzdWNjIGxpbmU7IGNociA9IGNoIH07XG4gICAgICAgICAgICAgIG91dF9vZl9zeW5jO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBvdXRfb2Zfc3luYyBvdXRfb2Zfc3luYyA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgY3Vyc29yX3BvczsgXyB9IC0+XG4gICAgc2V0X2RpcmVjdG9yeV9zdGF0ZVxuICAgICAge1xuICAgICAgICBjdXJyZW50ID0gU29tZSB7IHJhbms7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH07XG4gICAgICAgIGRpcmVjdG9yeSA9IHYuZGlyZWN0b3J5O1xuICAgICAgfVxuXG5sZXQgc3luYyA/KHJlc2V0ID0gZmFsc2UpICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIGxldCBjYW5kID0gKFJlYWN0LlMudmFsdWUgbW9kZWwpLmN1cnJlbnQgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHJlc2V0XG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY2FuZCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIHsgS2ZpbGVzLnBvc2l0aW9uOyBfIH0gLT4geC5yYW5rID0gcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY2F0YWxvZyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgeyBLZmlsZXMucG9zaXRpb247IF8gfSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYW5rID0gcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgY2FuZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldCBwb3MgY2F0YWxvZyBpblxuICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggTm9uZSkpXG5cbmxldCBsb2FkX2RlZmF1bHQgKCkgOiB1bml0IEx3dC50ID1cbiAgY3JlYXRlX2ZpbGUgfmZpbGVuYW1lOlwibW9kZWwua2FcIiB+Y29udGVudDpcIlwiXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuICgpIC0+IEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgXCJTdGF0ZV9maWxlLmxvYWRfZGVmYXVsdCA6IGNyZWF0aW5nIGRlZmF1bHQgZmlsZSBlcnJvckAgQFs8dj4lYUBdXCJcbiAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0KVxuXG5sZXQgbG9hZF9tb2RlbHMgKCkgOiB1bml0IEx3dC50ID1cbiAgbGV0IG1vZGVscyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcIm1vZGVsXCIgaW5cbiAgbGV0IHJlYyBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBtb2RlbHMgd2l0aFxuICAgIHwgW10gLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBtb2RlbCA6OiBtb2RlbHMgLT5cbiAgICAgICgqIGZldGNoIG1vZGVsICopXG4gICAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuZ2V0IG1vZGVsXG4gICAgICA+Pj0gKGZ1biBjb250ZW50IC0+XG4gICAgICAgICAgICBpZiBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIDw+IDIwMCB0aGVuXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiYmFkIHJlc3BvbnNlIGNvZGUgJWQgZmV0Y2hpbmcgdXJsICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIG1vZGVsKSlcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFVybC51cmxfb2Zfc3RyaW5nIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnVybFxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImZhaWxlZCB0byByZXRyaWV2ZSB1cmwgJXNcIiBtb2RlbCkpXG4gICAgICAgICAgICAgIHwgU29tZSB1IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIExpc3RfdXRpbC5sYXN0XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB1IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBVcmwuSHR0cCBoIHwgVXJsLkh0dHBzIGggLT4gaC5VcmwuaHVfcGF0aFxuICAgICAgICAgICAgICAgICAgICB8IFVybC5GaWxlIGYgLT4gZi5VcmwuZnVfcGF0aClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBmaWxlY29udGVudCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgICBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb250ZW50XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoZmlsZW5hbWUsIGZpbGVjb250ZW50KSlcbiAgICAgICAgICAgICkpXG4gICAgICA+Pj0gKCogYWRkIGNvbnRlbnQgKilcbiAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChmaWxlbmFtZSwgY29udGVudCkgLT5cbiAgICAgICAgICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWUgfmNvbnRlbnRcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGZpbGVuYW1lKSkpXG4gICAgICA+Pj0gKCogc2VsZWN0IG1vZGVsIGlmIG5lZWRlZCAqKVxuICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICB+b2s6KGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICAgIGlmIGxvYWRfZmlsZSB0aGVuXG4gICAgICAgICAgICBzZWxlY3RfZmlsZSBmaWxlbmFtZSBOb25lXG4gICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSlcbiAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBsb2FkaW5nIHVybCAlcyBlcnJvckAgQFs8dj4lYUBdXCIgbW9kZWxcbiAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSlcbiAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiU3RhdGVfZmlsZS5sb2FkX21vZGVsICVzXCIgbXNnKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSlcbiAgaW5cbiAgbWF0Y2ggbW9kZWxzIHdpdGhcbiAgfCBbXSAtPiBsb2FkX2RlZmF1bHQgKClcbiAgfCBfIDo6IF8gLT4gYWRkX21vZGVscyBtb2RlbHMgdHJ1ZVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXQgPj49IGxvYWRfbW9kZWxzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIHNpbXVsYXRpb25fc3RhdGUgPVxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAoKiBzaW11bGF0aW9uIGlzIHVuYXZhaWxhYmxlICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAoKiBzaW11bGF0aW9uIGlzIGJsb2NrZWQgb24gYW4gb3BlcmF0aW9uICopXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBvZiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9cbigqIHRoZSBzaW11bGF0aW9uIGlzIHJlYWR5ICopXG5cbnR5cGUgdCA9IHsgc2ltdWxhdGlvbl9zdGF0ZTogc2ltdWxhdGlvbl9zdGF0ZSB9XG5cbmxldCB0X3NpbXVsYXRpb25fc3RhdGUgc2ltdWxhdGlvbiA9IHNpbXVsYXRpb24uc2ltdWxhdGlvbl9zdGF0ZVxuXG5sZXQgdF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gPVxuICBtYXRjaCBzaW11bGF0aW9uLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAtPiBOb25lXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPiBOb25lXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT4gU29tZSBzaW11bGF0aW9uX2luZm9cblxudHlwZSBzdGF0ZSA9IHRcbnR5cGUgbW9kZWwgPSBzdGF0ZVxudHlwZSBtb2RlbF9zdGF0ZSA9IFNUT1BQRUQgfCBJTklUQUxJWklORyB8IFJVTk5JTkcgfCBQQVVTRURcblxubGV0IG1vZGVsX3N0YXRlX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgU1RPUFBFRCAtPiBcIlN0b3BwZWRcIlxuICB8IElOSVRBTElaSU5HIC0+IFwiSW5pdGFsaXppbmdcIlxuICB8IFJVTk5JTkcgLT4gXCJSdW5uaW5nXCJcbiAgfCBQQVVTRUQgLT4gXCJQYXVzZWRcIlxuXG5sZXQgZHVtbXlfbW9kZWwgPSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuXG5sZXQgbW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gIHRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsXG5cbmxldCBtb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsIDogbW9kZWxfc3RhdGUgPVxuICBtYXRjaCB0X3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAtPiBTVE9QUEVEXG4gIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPiBJTklUQUxJWklOR1xuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgaWZcbiAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgIHRoZW5cbiAgICAgIFJVTk5JTkdcbiAgICBlbHNlXG4gICAgICBQQVVTRURcblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSBkdW1teV9tb2RlbFxuXG5sZXQgdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgKHNpbXVsYXRpb25fc3RhdGUgOiBzaW11bGF0aW9uX3N0YXRlKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBzZXRfc3RhdGUgeyBzaW11bGF0aW9uX3N0YXRlIH0gaW5cbiAgKClcblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID0gc3RhdGVcblxubGV0IGV2YWxfd2l0aF9zaW1fbWFuYWdlciA6XG4gICAgICAnYS5cbiAgICAgIGxhYmVsOnN0cmluZyAtPlxuICAgICAgKEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCkgLT5cbiAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+bGFiZWwgaGFuZGxlciAtPlxuICBsZXQgcHJvamVjdF9oYW5kbGVyIG1hbmFnZXIgPSBoYW5kbGVyIG1hbmFnZXIgKFJlYWN0LlMudmFsdWUgc3RhdGUpIGluXG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsIHByb2plY3RfaGFuZGxlclxuXG5sZXQgZmFpbF9sd3QgZXJyb3JfbXNnID0gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcblxubGV0IGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+KGxhYmVsIDogc3RyaW5nKVxuICAgID8oc3RvcHBlZCA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIHN0b3BwZWRcIilcbiAgICA/KGluaXRpYWxpemluZyA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIGluaXRhbGl6aW5nXCIpXG4gICAgPyhyZWFkeSA6XG4gICAgICAgIEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+XG4gICAgICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGZ1biBfIF8gLT4gZmFpbF9sd3QgXCJTaW11bGF0aW9uIHJlYWR5XCIpICgpIDogJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlciB+bGFiZWwgKGZ1biBtYW5hZ2VyIHMgLT5cbiAgICAgIG1hdGNoIHMuc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCAtPiBzdG9wcGVkIG1hbmFnZXJcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPiBpbml0aWFsaXppbmcgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyAtPiByZWFkeSBtYW5hZ2VyIHNpbXVsYXRpb25faW5mbylcblxubGV0IGV2YWxfd2hlbl9yZWFkeSB+KGxhYmVsIDogc3RyaW5nKVxuICAgID8oaGFuZGxlciA6IHVuaXQgQXBpLnJlc3VsdCAtPiB1bml0IEx3dC50ID0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgIChvcGVyYXRpb24gOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiB1bml0IEFwaS5yZXN1bHQgTHd0LnQpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWxcbiAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgLT4gb3BlcmF0aW9uIG1hbmFnZXIpXG4gICAgICAgICgpXG4gICAgICA+Pj0gaGFuZGxlcilcblxuKCogdG8gc3luY2ggc3RhdGUgb2YgYXBwbGljYXRpb24gd2l0aCBydW50aW1lICopXG5sZXQgc2xlZXBfdGltZSA9IDEuMFxuXG5sZXQgcmVjIHN5bmMgKCkgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIHwgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyAtPlxuICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgXyAtPlxuICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic3luY1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAoKiBnZXQgY3VycmVudCBkaXJlY3RvcnkgKilcbiAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm9cbiAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgc2xlZXBfdGltZSA+Pj0gc3luY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCByZWZyZXNoICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAoKiBnZXQgY3VycmVudCBkaXJlY3RvcnkgKilcbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAgICAgICAgICB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHN5bmMgKCkpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgY29udGludWVfc2ltdWxhdGlvbiAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJjb250aW51ZV9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gY29udGludWUgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NvbnRpbnVlIHBhdXNlX2NvbmRpdGlvblxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazpzeW5jKVxuICAgICgpXG5cbmxldCBwYXVzZV9zaW11bGF0aW9uICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBhdXNlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBwYXVzZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9wYXVzZSlcbiAgICAoKVxuXG5sZXQgc3RvcF9zaW11bGF0aW9uICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInN0b3Bfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0b3Agc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgKF8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGVsZXRlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4gICAgKClcblxubGV0IHN0YXJ0X3NpbXVsYXRpb24gKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDpcbiAgICB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwic3RhcnRfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgb25fZXJyb3IgZXJyb3JfbXNncyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAoKiB0dXJuIHRoZSBsaWdodHMgb2ZmICopXG4gICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGZ1biBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9yX21zZ3MpXG4gICAgICBpblxuICAgICAgTHd0LmNhdGNoXG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAoKiBzZXQgc3RhdGUgdG8gaW5pdGFsaXplICopXG4gICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9JTklUQUxJWklORyBpblxuICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9zdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzaW11bGF0aW9uX3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNpbXVsYXRpb25fc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25fc3RhdHVzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgc2ltdWxhdGlvbl9zdGF0ZSBpblxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JfbXNnIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgICAgICAgICAgIG9uX2Vycm9yIGVycm9yX21zZylcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOnN5bmMpXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiUnVudGltZSBlcnJvciAlc1wiIGVycm9yIGluXG4gICAgICAgICAgICBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIG1zZyBdXG4gICAgICAgICAgfCBTeXNfZXJyb3IgbWVzc2FnZSAtPiBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UgXVxuICAgICAgICAgIHwgXyAtPiBvbl9lcnJvciBbIEFwaV9jb21tb24uZXJyb3JfbXNnIFwiSW5pdGlhbGl6YXRpb24gZXJyb3JcIiBdKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBfIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHJ1bm5pbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgICgpXG5cbmxldCBpbnRlcnZlbmVfc2ltdWxhdGlvbiAoY29kZSA6IHN0cmluZykgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJwZXJ0dXJiX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gcnVubmluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIGNvZGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgc3luYyAoKVxuICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBvdXQpKSkpXG4gICAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZWZyZXNoIHIgPVxuICBsZXQgcicgPSBTdGF0ZV9maWxlLnN5bmMgfnJlc2V0OnRydWUgKCkgaW5cbiAgbGV0IHInJyA9IFN0YXRlX3NpbXVsYXRpb24ucmVmcmVzaCAoKSBpblxuICByJyA+Pj0gZnVuIHInIC0+XG4gIHInJyA+Pj0gZnVuIHInJyAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcic7IHInJyBdKVxuXG5sZXQgY3JlYXRlX3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfcHJvamVjdC5jcmVhdGVfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9wcm9qZWN0IChwcm9qZWN0X2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3Byb2plY3Quc2V0X3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9wcm9qZWN0IHByb2plY3RfaWQgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LnJlbW92ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X21hbmFnZXIgKHJ1bnRpbWVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3RcbiAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAoU3RhdGVfcnVudGltZS5jcmVhdGVfc3BlYyB+bG9hZDp0cnVlIHJ1bnRpbWVfaWQpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZCA9IFwic2ltdWxhdGlvbl9zZWVkX2lucHV0XCJcbmxldCBwcmVmZXJlbmNlc19tb2RhbF9pZCA9IFwicHJlZmVyZW5jZXNfbW9kYWxcIlxubGV0IHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZCA9IFwic2V0dGluZ3MtY2xpZW50LWlkLWlucHV0XCJcbmxldCBwcmVmZXJlbmNlc19idXR0b24gPSBIdG1sLmEgWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXVxuXG5sZXQgb3B0aW9uX3NlZWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgb3B0aW9uX3dpdGh0cmFjZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoZGVhZHJ1bGVzID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IGRlY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0bi1zbVwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIi1cIiBdXG5cbmxldCBpbmNyZWFzZV9mb250ID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJidG4tbGdcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCIrXCIgXVxuXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJjbGllbnQgaWRcIjtcbiAgICAgICAgSHRtbC5hX3NpemUgNDA7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20gPVxuICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0XG5cbmxldCBvcHRpb25faHR0cF9zeW5jaCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfcnVudGltZS5tb2RlbCkgPVxuICBsZXQgY3VycmVudF9pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBtb2RlbC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChzcGVjIDogU3RhdGVfcnVudGltZS5zcGVjKSAtPlxuICAgICAgbGV0IHNwZWNfaWQgPSBTdGF0ZV9ydW50aW1lLnNwZWNfaWQgc3BlYyBpblxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKEh0bWwuYV92YWx1ZSBzcGVjX2lkXG4gICAgICAgICAgOjpcbiAgICAgICAgICAoaWYgY3VycmVudF9pZCA9IHNwZWNfaWQgdGhlblxuICAgICAgICAgICAgIFsgSHRtbC5hX3NlbGVjdGVkICgpIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKSlcbiAgICAgICAgKEh0bWwudHh0IChTdGF0ZV9ydW50aW1lLnNwZWNfbGFiZWwgc3BlYykpKVxuICAgIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfcnVudGltZXNcblxubGV0IGJhY2tlbmRfb3B0aW9ucyA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcCAoZnVuIGxpc3RfdCAtPiBkcm9wZG93biBsaXN0X3QpIFN0YXRlX3J1bnRpbWUubW9kZWwpXG5cbmxldCBiYWNrZW5kX3NlbGVjdCA9XG4gIFR5eG1sX2pzLlIuSHRtbC5zZWxlY3QgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF0gXSBiYWNrZW5kX29wdGlvbnNcblxubGV0JWh0bWwgYm9kaWVzID1cbiAge3xcbiAgICA8aDQ+QXBwbGljYXRpb248L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIj5Gb250IHNpemU8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBkZWNyZWFzZV9mb250OyBpbmNyZWFzZV9mb250IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIj5CYWNrZW5kIGZvciBuZXcgcHJvamVjdHM8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBiYWNrZW5kX3NlbGVjdCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+UHJvamVjdDwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiIGZvcj1cInx9XG4gICAgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkXG4gICAge3xcIj5TZWVkPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgb3B0aW9uX3NlZWRfaW5wdXQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aHRyYWNlIF1cbiAgICB7fFN0b3JlIHRyYWNlXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+SFRUUFMgYmFja2VuZDwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiIGZvcj1cInx9XG4gICAgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkXG4gICAge3xcIj5DbGllbnQgaWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25faHR0cF9zeW5jaCBdXG4gICAge3xBdXRvIHN5bmNoXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8aDQ+U3RhdGljIGFuYWx5c2VzPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZHJ1bGVzIF1cbiAgICB7fFNob3cgZGVhZCBydWxlc1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGRlYWRhZ2VudHMgXVxuICAgIHt8U2hvdyBkZWFkIGFnZW50c1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSBdXG4gICAge3xTaG93IG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9uc1xuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG58fVxuXG5sZXQgc2V0X2J1dHRvbiA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgIFsgSHRtbC50eHQgXCJTZXRcIiBdXG5cbmxldCBzYXZlX2J1dHRvbiA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0gXVxuICAgIFsgSHRtbC50eHQgXCJTYXZlIGFzIGRlZmF1bHRcIiBdXG5cbmxldCBtb2RhbCA9XG4gIGxldCBoZWFkID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWhlYWRlclwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF07XG4gICAgICAgIEh0bWwuaDQgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLXRpdGxlXCIgXSBdIFsgSHRtbC50eHQgXCJQcmVmZXJlbmNlc1wiIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBib2R5ID0gSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9kaWVzIGluXG4gIGxldCBmb290ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWZvb3RlclwiIF0gXVxuICAgICAgW1xuICAgICAgICBzZXRfYnV0dG9uO1xuICAgICAgICBzYXZlX2J1dHRvbjtcbiAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgICAgICBIdG1sLmFfdXNlcl9kYXRhIFwiZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwudHh0IFwiQ2xvc2VcIiBdO1xuICAgICAgXVxuICBpblxuICBIdG1sLmZvcm1cbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiOyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgIFsgaGVhZDsgYm9keTsgZm9vdCBdXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIHByZWZlcmVuY2VzX2J1dHRvbjtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgICAgSHRtbC5hX2lkIHByZWZlcmVuY2VzX21vZGFsX2lkO1xuICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJkaWFsb2dcIiBdO1xuICAgICAgICAgIEh0bWwuYV90YWJpbmRleCAoLTEpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWRpYWxvZ1wiIF07IEh0bWwuYV9yb2xlIFsgXCJkb2N1bWVudFwiIF0gXVxuICAgICAgICAgIFsgbW9kYWwgXTtcbiAgICAgIF07XG4gIF1cblxubGV0IHNldF9hY3Rpb24gKCkgPVxuICBsZXQgc2V0dGluZ3NfY2xpZW50X2lkID0gSnMudG9fc3RyaW5nIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20jIy52YWx1ZSBpblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfY2xpZW50X2lkIHNldHRpbmdzX2NsaWVudF9pZCBpblxuXG4gIGxldCBzeW5jaF9jaGVja2JveF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX2h0dHBfc3luY2ggaW5cbiAgbGV0IGlzX2NoZWNrZWQgPSBKcy50b19ib29sIHN5bmNoX2NoZWNrYm94X2RvbSMjLmNoZWNrZWQgaW5cbiAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGlzX2NoZWNrZWQgaW5cblxuICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgbGV0IHZhbHVlIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGlucHV0IyMudmFsdWUgaW5cbiAgbGV0IG1vZGVsX3NlZWQgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyB2YWx1ZSkgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZSBpblxuICBsZXQgKCkgPSBTdGF0ZV9wcm9qZWN0LnNldF9zZWVkIG1vZGVsX3NlZWQgaW5cblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3N0b3JlX3RyYWNlXG4gICAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRodHJhY2UpIyMuY2hlY2tlZClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTdGF0ZV9wcm9qZWN0LnNldF9zaG93X2RlYWRfcnVsZXNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTdGF0ZV9wcm9qZWN0LnNldF9zaG93X2RlYWRfYWdlbnRzXG4gICAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZGFnZW50cykjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWQpXG4gIGluXG5cbiAgbGV0ICgpID1cbiAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLnNldF9tYW5hZ2VyXG4gICAgICAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGJhY2tlbmRfc2VsZWN0KSMjLnZhbHVlKVxuICBpblxuICAoKVxuXG5sZXQgc2V0X2FuZF9zYXZlX2FjdGlvbiAoKSA9XG4gIGxldCAoKSA9IHNldF9hY3Rpb24gKCkgaW5cblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpIGluXG4gIGxldCAoKSA9IFN0YXRlX3Byb2plY3Quc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSBpblxuXG4gICgpXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBtb2RhbCkjIy5vbnN1Ym1pdFxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biAoXyA6IF8gSnMudCkgLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwiaGlkZVwiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hY3Rpb24gKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNhdmVfYnV0dG9uKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfYW5kX3NhdmVfYWN0aW9uICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2EgcHJlZmVyZW5jZXNfYnV0dG9uKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgc3AgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgICA6PSBKcy5zdHJpbmcgKFN0YXRlX3NldHRpbmdzLmdldF9jbGllbnRfaWQgKCkpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0IGlucHV0ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9zZWVkX2lucHV0IGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaW5wdXQjIy52YWx1ZSA6PVxuICAgICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zZWVkXG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICAgIHwgU29tZSBtb2RlbF9zZWVkIC0+IHN0cmluZ19vZl9pbnQgbW9kZWxfc2VlZClcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkXG4gICAgICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2VcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZGFnZW50cykjIy5jaGVja2VkXG4gICAgICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfZGVhZF9hZ2VudHNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZHJ1bGVzKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX3J1bGVzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSkjIy5jaGVja2VkXG4gICAgICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9odHRwX3N5bmNoKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sIChSZWFjdC5TLnZhbHVlIFN0YXRlX3NldHRpbmdzLnN5bmNoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGJhY2tlbmRfc2VsZWN0KSMjLnZhbHVlXG4gICAgICAgICAgICAgOj0gSnMuc3RyaW5nXG4gICAgICAgICAgICAgICAgICAoU3RhdGVfcnVudGltZS5zcGVjX2lkXG4gICAgICAgICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9ydW50aW1lLm1vZGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcnVudGltZS5tb2RlbF9jdXJyZW50KVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcmVmZXJlbmNlc19tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIlxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy51cGRhdGVGb250U2l6ZSB+ZGVsdGE6MC4gaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBpbmNyZWFzZV9mb250KSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy51cGRhdGVGb250U2l6ZSB+ZGVsdGE6MC4yIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBkZWNyZWFzZV9mb250KSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy51cGRhdGVGb250U2l6ZSB+ZGVsdGE6KC0wLjIpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRvZ2dsZV9lbGVtZW50IChwcm9qZWN0aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBib29sKVxuICAgIChjb250ZW50IDogWzwgSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gXSBIdG1sLmVsdCBIdG1sLmxpc3Rfd3JhcCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgIChpZiBwcm9qZWN0aW9uIChTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFsgXCJzaG93XCIgXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiaGlkZGVuXCIgXSkpKTtcbiAgICAgIF1cbiAgICBjb250ZW50XG5cbmxldCBvcHRpb25fbGFiZWwgbGFiZWwgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGxhYmVsID4gMTAgdGhlblxuICAgIFN0cmluZy5zdWIgbGFiZWwgMCA3IF4gXCIuLi5cIlxuICBlbHNlXG4gICAgbGFiZWxcblxubGV0IGV4cG9ydF9jb250cm9scyB+KGV4cG9ydF9zZWxlY3RfaWQgOiBzdHJpbmcpIH4oZXhwb3J0X2ZpbGVuYW1lX2lkIDogc3RyaW5nKVxuICAgIH4oZXhwb3J0X2J1dHRvbl9pZCA6IHN0cmluZykgfihleHBvcnRfZGF0YV9sYWJlbCA6IHN0cmluZykgPVxuICBsZXQgZXhwb3J0X2Zvcm1hdHMgOiBzdHJpbmcgbGlzdCA9IFsgZXhwb3J0X2RhdGFfbGFiZWwgXSBpblxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBleHBvcnRfZmlsZW5hbWVfaWQ7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBdXG4gICAgICAoKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9idXR0b25faWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiZXhwb3J0XCIgXVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBmb3JtYXQgLT5cbiAgICAgICAgWyVodG1sXG4gICAgICAgICAge3w8b3B0aW9uIHZhbHVlPVwifH0gZm9ybWF0IHt8XCI+fH0gKEh0bWwuY2RhdGEgZm9ybWF0KSB7fDwvb3B0aW9uPnx9XSlcbiAgICAgIGV4cG9ydF9mb3JtYXRzXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBpZD1cInx9XG4gICAgICBleHBvcnRfc2VsZWN0X2lkXG4gICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJwbmdcIj5wbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwic3ZnXCI+c3ZnPC9vcHRpb24+fH1cbiAgICAgIGV4cG9ydF9mb3JtYXRzX3NlbGVjdFxuICAgICAge3w8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2ZpbGVuYW1lIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveC1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgfH1cbiAgICAgIFsgZXhwb3J0X2J1dHRvbiBdXG4gICAgICB7fFxuICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+fH1dXG5cbmxldCBkb2N1bWVudCA9IERvbV9odG1sLndpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBsYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgY291bnRlciA9XG4gIGxldCBsYXN0X3ZhbHVlID1cbiAgICByZWZcbiAgICAgIChsZXQgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgICBpblxuICAgICAgIGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvKVxuICBpblxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5sMlxuICAgICAgIChmdW4gdGFiX2FjdGl2ZSBtb2RlbCAtPlxuICAgICAgICAgaWYgdGFiX2FjdGl2ZSB0aGVuXG4gICAgICAgICAgIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHYgPSBjb3VudGVyIHNpbXVsYXRpb25faW5mbyBpblxuICAgICAgICAgICBpZiB2IDw+ICFsYXN0X3ZhbHVlICYmIHYgPiAwIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoKSA9IGxhc3RfdmFsdWUgOj0gdiBpblxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudHh0IFwiIFwiO1xuICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJsYWJlbFwiOyBcImxhYmVsLWRlZmF1bHRcIiBdIF1cbiAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIk5ld1wiIF07XG4gICAgICAgICAgICAgXVxuICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICBbXVxuICAgICAgICAgKSlcbiAgICAgICB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbmxldCBiYWRnZSAoY291bnRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gLT4gaW50KSA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICBsZXQgY291bnQgPSBjb3VudGVyIHNpbXVsYXRpb25faW5mbyBpblxuICAgICAgICAgaWYgY291bnQgPiAwIHRoZW5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHh0IFwiIFwiO1xuICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImJhZGdlXCIgXSBdXG4gICAgICAgICAgICAgICBbIEh0bWwudHh0IChzdHJpbmdfb2ZfaW50IGNvdW50KSBdO1xuICAgICAgICAgICBdXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFtdKVxuICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbmxldCBhcmd1bWVudHMgKGtleSA6IHN0cmluZykgOiBzdHJpbmcgbGlzdCA9XG4gIExpc3QubWFwIHNuZCAoTGlzdC5maWx0ZXIgKGZ1biAoaywgXykgLT4ga2V5ID0gaykgVXJsLkN1cnJlbnQuYXJndW1lbnRzKVxuXG5sZXQgdmVyc2lvbiA/KHRlc3QgOiAnYSBvcHRpb24gPSBOb25lKSB+KHByb2QgOiAnYSkgfihkZXYgOiAnYSkgOiAnYSA9XG4gIGxldCB2ZXJzaW9uIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJ2ZXJzaW9uXCIgaW5cbiAgbWF0Y2ggdGVzdCwgdmVyc2lvbiB3aXRoXG4gIHwgU29tZSB0ZXN0LCBbIFwidGVzdFwiIF0gLT4gdGVzdFxuICB8IF8sIFsgXCJkZXZcIiBdIC0+IGRldlxuICB8IF8gLT4gcHJvZFxuXG5sZXQgbmF2bGkgbGFiZWwgZm9yY2VfY2xhc3MgZGVjb3JhdGlvbnMgPVxuICBsZXQgZGVmYXVsdF9hdHRyaWJ1dGVzID1cbiAgICBbIEh0bWwuYV9pZCAoXCJuYXZcIiBeIGxhYmVsKTsgSHRtbC5hX3JvbGUgWyBcInByZXNlbnRhdGlvblwiIF0gXVxuICBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggZm9yY2VfY2xhc3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBkZWZhdWx0X2F0dHJpYnV0ZXNcbiAgICB8IFNvbWUgbCAtPiBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3MgbCA6OiBkZWZhdWx0X2F0dHJpYnV0ZXNcbiAgaW5cbiAgbGV0IHRleHQgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5jb25jYXRcbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3Quc2luZ2xldG9uIChIdG1sLmNkYXRhIGxhYmVsKSlcbiAgICAgIGRlY29yYXRpb25zXG4gIGluXG4gIEh0bWwubGkgfmE6YXR0cmlidXRlc1xuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbC5hXG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLXRvZ2dsZVwiIFwidGFiXCI7XG4gICAgICAgICAgICBIdG1sLmFfcm9sZSBbIFwidGFiXCIgXTtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWNvbnRyb2xzXCIgbGFiZWw7XG4gICAgICAgICAgICBIdG1sLmFfaHJlZiAoXCIjXCIgXiBsYWJlbCk7XG4gICAgICAgICAgXVxuICAgICAgICB0ZXh0O1xuICAgIF1cblxubGV0IG5hdnRhYnMgbmF2X3RhYl9pZCA9IGZ1bmN0aW9uXG4gIHwgW10gfCAoXywgU29tZSBfLCBfKSA6OiBfIC0+IENvbW1vbi50b3NzIFwidWlfY29tbW9uLm5hdnRhYnMgOiBtaXNzaW5nIHRhYnNcIlxuICB8ICh0aSwgTm9uZSwgbCkgOjogdCAtPlxuICAgIEh0bWwudWxcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIG5hdl90YWJfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJuYXZcIjsgXCJuYXYtdGFic1wiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInRhYmxpc3RcIjtcbiAgICAgICAgXVxuICAgICAgKG5hdmxpIHRpIChTb21lIChSZWFjdC5TLmNvbnN0IFsgXCJhY3RpdmVcIiBdKSkgbFxuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgYV9jbGFzcywgbGkpIC0+IG5hdmxpIHQgYV9jbGFzcyBsaSkgdClcblxubGV0IG9uZW5hdmNvbnRlbnQgbGFiZWwgYWN0aXZlIGNsYXNzZXMgY29udGVudCA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBsYWJlbDtcbiAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKGlmIGFjdGl2ZSB0aGVuXG4gICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIiA6OiBcInRhYi1wYW5lXCIgOjogXCJhY3RpdmVcIiA6OiBjbGFzc2VzXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBjbGFzc2VzKTtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcInRhYnBhbmVsXCI7XG4gICAgICBdXG4gICAgY29udGVudFxuXG5sZXQgbmF2Y29udGVudCA/aWQgY2xhc3NlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2Y29udGVudCA6IG1pc3NpbmcgY29udGVudFwiXG4gIHwgKHQsIGNsLCBjKSA6OiBsIC0+XG4gICAgbGV0IGlkIDogWz4gYElkIF0gSHRtbC5hdHRyaWIgbGlzdCA9XG4gICAgICBtYXRjaCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBpZCAtPiBbIEh0bWwuYV9pZCBpZCBdXG4gICAgaW5cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIChbXG4gICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgIChbIFwicGFuZWwtY29udGVudFwiOyBcInRhYi1jb250ZW50XCI7IFwiZmxleC1jb250ZW50XCIgXSBAIGNsYXNzZXMpO1xuICAgICAgICAgXVxuICAgICAgICBAIGlkKVxuICAgICAgKG9uZW5hdmNvbnRlbnQgdCB0cnVlIGNsIGNcbiAgICAgIDo6IExpc3QubWFwIChmdW4gKHQsIGNsLCBjKSAtPiBvbmVuYXZjb250ZW50IHQgZmFsc2UgY2wgYykgbClcblxubGV0IGxldmVsID9kZWJ1ZyA/aW5mbyA/bm90aWNlID93YXJuaW5nID9lcnJvciA/ZmF0YWwgKCkgOiAnYSBsaXN0ID1cbiAgbGV0IGxldmVsIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJsZXZlbFwiIGluXG4gIGxldCBleHRyYWN0IGtleSB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgaWYgTGlzdC5tZW0ga2V5IGxldmVsIHRoZW5cbiAgICAgICAgWyB2YWx1ZSBdXG4gICAgICBlbHNlXG4gICAgICAgIFtdXG4gIGluXG4gIGV4dHJhY3QgXCJkZWJ1Z1wiIGRlYnVnIEAgZXh0cmFjdCBcImluZm9cIiBpbmZvIEAgZXh0cmFjdCBcIm5vdGljZVwiIG5vdGljZVxuICBAIGV4dHJhY3QgXCJ3YXJuaW5nXCIgd2FybmluZyBAIGV4dHJhY3QgXCJlcnJvclwiIGVycm9yIEAgZXh0cmFjdCBcImZhdGFsXCIgZmF0YWxcbiAgQCBbXVxuXG5sZXQgZmVhdHVyZXMgPyhkZWZhdWx0ID0gW10pIChvcHRpb25zIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIGxpc3QgPVxuICBsZXQgZmVhdHVyZXMgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImZlYXR1cmVcIiBpblxuICBsZXQgbWF0Y2hlcyA6ICdhIGxpc3QgPVxuICAgIExpc3QubWFwIHNuZFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gKGZlYXR1cmUsIF8pIC0+IExpc3QubWVtIGZlYXR1cmUgZmVhdHVyZXMpIG9wdGlvbnMpXG4gIGluXG4gIG1hdGNoIG1hdGNoZXMgd2l0aFxuICB8IFtdIC0+IGRlZmF1bHRcbiAgfCBfIDo6IF8gLT4gbWF0Y2hlc1xuXG5sZXQgaW5wdXRfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSB0eXBlIE1lbnUgPSBzaWdcbiAgdmFsIGNvbnRlbnQgOlxuICAgIHVuaXQgLT5cbiAgICBbPiBgQnV0dG9uIHwgYERpdiB8IGBVbCB8IGBBIG9mIFs+IGBQQ0RBVEEgfCBgU3BhbiBdIF0gVHl4bWxfanMuSHRtbDUuZWx0XG4gICAgbGlzdFxuXG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBEaXYgPSBzaWdcbiAgdmFsIGlkIDogc3RyaW5nXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBUYWIgPSBzaWdcbiAgdmFsIG5hdmxpIDpcbiAgICB1bml0IC0+XG4gICAgSHRtbF90eXBlcy5mbG93NV93aXRob3V0X2ludGVyYWN0aXZlIFR5eG1sX2pzLkh0bWw1LmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudFxuXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBUeXhtbF9qcy5IdG1sNS5lbHQgbGlzdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBvbnJlc2l6ZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN1YlRhYiA9IHNpZ1xuICBpbmNsdWRlIFRhYlxuXG4gIHZhbCBwYXJlbnRfaGlkZSA6IHVuaXQgLT4gdW5pdFxuICB2YWwgcGFyZW50X3Nob3duIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgUGFuZWwgPSBzaWdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2IFR5eG1sX2pzLkh0bWw1LmVsdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBvbnJlc2l6ZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBpZF9kb20gKGlkIDogc3RyaW5nKSA6ICdhIEpzLnQgPVxuICBKcy5VbnNhZmUuY29lcmNlXG4gICAgKEpzLk9wdC5nZXRcbiAgICAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIENvbW1vbi50b3NzXG4gICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcInVpX2NvbW1vbi5pZF9kb20gOiBjb3VsZCBub3QgZmluZCBpZCAlc1wiIGlkKSlcbiAgICAgIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KVxuXG5sZXQgY3JlYXRlX21vZGFsIH4oaWQgOiBzdHJpbmcpIH4odGl0bGVfbGFiZWwgOiBzdHJpbmcpXG4gICAgfihib2R5IDogWzwgSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gXSBIdG1sLmVsdCBIdG1sLmxpc3Rfd3JhcClcbiAgICB+KHN1Ym1pdF9sYWJlbCA6IHN0cmluZykgfihzdWJtaXQgOiAoJ3NlbGYgSnMudCwgXyBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIpXG4gICAgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIEh0bWwuZWx0ID1cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLXByaW1hcnlcIiBdIF1cbiAgICAgIFsgSHRtbC50eHQgc3VibWl0X2xhYmVsIF1cbiAgaW5cbiAgbGV0IGZvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWNvbnRlbnRcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtbGFiZWxcIiBcIkNsb3NlXCI7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhpZGRlblwiIFwidHJ1ZVwiIF1cbiAgICAgICAgICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBIdG1sLmg0IFsgSHRtbC5jZGF0YSB0aXRsZV9sYWJlbCBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1ib2R5XCIgXSBdIGJvZHk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWZvb3RlclwiIF0gXVxuICAgICAgICAgIChbXG4gICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC5jZGF0YSBcIkNhbmNlbFwiIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgICBAIFsgYnV0dG9uIF0pO1xuICAgICAgXVxuICBpblxuICBsZXQgKCkgPSAoVHl4bWxfanMuVG9fZG9tLm9mX2Zvcm0gZm9ybSkjIy5vbnN1Ym1pdCA6PSBzdWJtaXQgaW5cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbFwiOyBcImZhZGVcIiBdO1xuICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0YWJpbmRleFwiIFwiLTFcIjtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRpYWxvZ1wiO1xuICAgICAgXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkb2N1bWVudFwiO1xuICAgICAgICAgIF1cbiAgICAgICAgWyBmb3JtIF07XG4gICAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJvamVjdF9pZF9tb2RhbF9pZCA9IFwibWVudS1lZGl0b3ItcHJvamVjdC1pZC1tb2RhbFwiXG5cbmxldCBwcm9qZWN0X2lkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJwcm9qZWN0IG5ld1wiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgbGlfbmV3ID0gSHRtbC5saSBbIEh0bWwuYSBbIEh0bWwuY2RhdGEgXCJOZXcgcHJvamVjdFwiIF0gXVxubGV0IGxpX3ByZWZzID0gSHRtbC5saSAoTW9kYWxfcHJlZmVyZW5jZXMuY29udGVudCAoKSlcbmxldCBwcm9qZWN0X2lkX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwcm9qZWN0X2lkX2lucHV0XG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWw1LnVsXG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJuYXZcIjsgXCJuYXYtdGFic1wiOyBcIm5hdi1qdXN0aWZpZWRcIiBdIF1cbiAgICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbF9wcm9qZWN0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBjdXJyZW50X3Byb2plY3RfaWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3Byb2plY3RfaWQgPSBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNwYW5fY2xvc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC5lbnRpdHkgXCJ0aW1lc1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBzcGFuX2Nsb3NlKSMjLm9uY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jbG9zZV9wcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IERvbV9odG1sLnN0b3BQcm9wYWdhdGlvbiBldmVudCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wdXRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJnbHlwaGljb25cIjsgXCJnbHlwaGljb24tcmVmcmVzaFwiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1va1wiIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3MgY2xhc3NlcyBdIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgYV9wcm9qZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuY2RhdGEgKFwiIFwiIF4gbW9kZWxfcHJvamVjdF9pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbl9jbG9zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBhX3Byb2plY3QpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmxpIH5hOlsgSHRtbC5hX2NsYXNzIGxpX2NsYXNzIF0gWyBhX3Byb2plY3QgXSlcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jYXRhbG9nXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBMaXN0LnJldl9hcHBlbmQgYWNjIFsgbGlfbmV3OyBsaV9wcmVmcyBdKVxuICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKSk7XG4gICAgICBVaV9jb21tb24uY3JlYXRlX21vZGFsIH5pZDpwcm9qZWN0X2lkX21vZGFsX2lkIH50aXRsZV9sYWJlbDpcIk5ldyBQcm9qZWN0XCJcbiAgICAgICAgfmJvZHk6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgWyVodG1sXG4gICAgICAgICAgICAgIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBwcm9qZWN0X2lkX2lucHV0IF0ge3w8L2Rpdj58fV07XG4gICAgICAgICAgXVxuICAgICAgICB+c3VibWl0X2xhYmVsOlwiQ3JlYXRlIFByb2plY3RcIlxuICAgICAgICB+c3VibWl0OlxuICAgICAgICAgIChEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIGxldCBzZXR0aW5nc19jbGllbnRfaWQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgICAgICBKcy50b19zdHJpbmcgcHJvamVjdF9pZF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuY3JlYXRlX3Byb2plY3Qgc2V0dGluZ3NfY2xpZW50X2lkXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwiaGlkZVwiXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gTW9kYWxfcHJlZmVyZW5jZXMub25sb2FkICgpIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vblxuICAgICAgKFwiI1wiIF4gcHJvamVjdF9pZF9tb2RhbF9pZClcbiAgICAgIFwic2hvd24uYnMubW9kYWxcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHByb2plY3RfaWRfaW5wdXRfZG9tIyNmb2N1cyBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBsaV9uZXcpIyMub25jbGlja1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJvamVjdF9pZF9tb2RhbF9pZCkgfmFjdGlvbjpcInNob3dcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbW9kZWxfaW50ZXJ2ZW50aW9uLCBzZXRfbW9kZWxfaW50ZXJ2ZW50aW9uID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGNyZWF0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBwYXJhbSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAge1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcGFyYW0uU3RhdGVfcHJvamVjdC5wYXVzZV9jb25kaXRpb247XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zZWVkID0gcGFyYW0uU3RhdGVfcHJvamVjdC5zZWVkO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlO1xuICB9XG5cbmxldCBjb250aW51ZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHBhdXNlX2NvbmRpdGlvbiA9XG4gICAgICAgIGxldCBvcGVuIFN0YXRlX3Byb2plY3QgaW5cbiAgICAgICAgKFJlYWN0LlMudmFsdWUgbW9kZWwpLm1vZGVsX3BhcmFtZXRlcnMucGF1c2VfY29uZGl0aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmNvbnRpbnVlX3NpbXVsYXRpb24gcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3NpbXVsYXRpb24ucGF1c2Vfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcInN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLnN0b3BcIikgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5zdG9wX3NpbXVsYXRpb24gKCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc3RhcnRfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX3BhcmFtZXRlciA9XG4gICAgICAgIGNyZWF0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5zdGFydF9zaW11bGF0aW9uIHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGludGVydmVuZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA9XG4gICAgICAgIFJlYWN0LlMudmFsdWUgU3RhdGVfcGVydHVyYmF0aW9uLm1vZGVsX2ludGVydmVudGlvblxuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5pbnRlcnZlbmVfc2ltdWxhdGlvbiBtb2RlbF9wZXJ0dXJiYXRpb24pXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gdGV4dCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIFN0YXRlX2Vycm9yLmFkZF9lcnJvciBfX0xPQ19fXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuSW5mbztcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgZm9jdXNfcmFuZ2UgKHJhbmdlIDogTG9jLnQpIDogdW5pdCA9XG4gIGxldCBmaWxlX2lkID0gcmFuZ2UuTG9jLmZpbGUgaW5cbiAgbGV0IGxpbmUgPSByYW5nZS5Mb2MuZnJvbV9wb3NpdGlvbi5Mb2MubGluZSBpblxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9maWxlLnNlbGVjdF9maWxlIGZpbGVfaWQgKFNvbWUgbGluZSkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2ltdWxhdGlvbl90cmFjZSAoKSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIG1hbmFnZXIjc2ltdWxhdGlvbl9yYXdfdHJhY2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkYXRhX3N0cmluZyAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyBkYXRhX3N0cmluZyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG4gICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJ0cmFjZS5qc29uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHNpbXVsYXRpb25fb3V0cHV0cyAoKSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIG1hbmFnZXIjc2ltdWxhdGlvbl9vdXRwdXRzX3ppcFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRhdGFfYmlnc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGFfYmlnc3RyaW5nIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vemlwXCJcbiAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpcInNpbXVsYXRpb25fb3V0cHV0cy56aXBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcbm9wZW4gTGlzdF91dGlsLkluZml4XG5cbmxldCB2aXNpYmxlX29uX3N0YXRlcyA/KGFfY2xhc3MgPSBbXSlcbiAgICAoc3RhdGUgOiBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3N0YXRlIGxpc3QpIDogc3RyaW5nIGxpc3QgUmVhY3Quc2lnbmFsID1cbiAgbGV0IGhpZGRlbl9jbGFzcyA9IFsgXCJoaWRkZW5cIiBdIGluXG4gIGxldCB2aXNpYmxlX2NsYXNzID0gWyBcInZpc2libGVcIiBdIGluXG4gIFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBjdXJyZW50X3N0YXRlID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsIGluXG4gICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgIChpZiBMaXN0Lm1lbSBjdXJyZW50X3N0YXRlIHN0YXRlIHRoZW5cbiAgICAgICAgICAgYV9jbGFzcyBAIHZpc2libGVfY2xhc3NcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYV9jbGFzcyBAIGhpZGRlbl9jbGFzcykpXG5cbm1vZHVsZSBGb3JtUGVydHVyYmF0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BlcnR1cmJhdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJTaW11bGF0aW9uIFBlcnR1cmJhdGlvblwiO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJpbnRlcnZlbnRpb25cIiBdXG5cbiAgbGV0IGZvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJmb3JtLWhvcml6b250YWxcIiBdXG4gICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCI7IFwiY29sLXhzLTlcIiBdIF0gWyBpbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdIF0gWyBidXR0b24gXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuXG4gIGxldCBjb250ZW50ICgpID0gWyBmb3JtIF1cblxuICBsZXQgb25sb2FkICgpIDogdW5pdCA9XG4gICAgbGV0IGZvcm1fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2Zvcm0gZm9ybSBpblxuICAgIGxldCBpbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXQgaW5cbiAgICBsZXQgaGFuZGxlciBfID1cbiAgICAgIGxldCBtb2RlbF9wZXJ0dXJiYXRpb24gOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgIGxldCAoKSA9IFN0YXRlX3BlcnR1cmJhdGlvbi5zZXRfbW9kZWxfaW50ZXJ2ZW50aW9uIG1vZGVsX3BlcnR1cmJhdGlvbiBpblxuICAgICAgSnMuX3RydWVcbiAgICBpblxuXG4gICAgbGV0ICgpID1cbiAgICAgIGZvcm1fZG9tIyMub25zdWJtaXQgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLmludGVydmVuZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PSBEb20uaGFuZGxlciBoYW5kbGVyIGluXG4gICAgKClcbmVuZFxuXG5sZXQgc2lnbmFsX2NoYW5nZSBpbnB1dF9kb20gc2lnbmFsX2hhbmRsZXIgPVxuICBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PVxuICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNpZ25hbF9oYW5kbGVyIChKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUpIGluXG4gICAgICAgIEpzLl90cnVlKVxuXG5tb2R1bGUgSW5wdXRQYXVzZUNvbmRpdGlvbiA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wYXVzZV9jb25kaXRpb25cIlxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIltUXSA+IDEwMFwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX3ZhbHVlXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbilcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBpbnB1dCBdXG4gIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXRcblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgKCkgPVxuICAgICAgc2lnbmFsX2NoYW5nZSBkb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgIGxldCB2JyA9XG4gICAgICAgICAgICBpZiB2YWx1ZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICBcIltmYWxzZV1cIlxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zZXRfcGF1c2VfY29uZGl0aW9uIHYnKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgSW5wdXRQbG90UGVyaW9kIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3Bsb3RfcGVyaW9kXCJcblxuICBsZXQgZm9ybWF0X2Zsb2F0X3N0cmluZyB2YWx1ZSA9XG4gICAgbGV0IG4gPSBzdHJpbmdfb2ZfZmxvYXQgdmFsdWUgaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBuIGluXG4gICAgaWYgbGVuZ3RoID4gMCAmJiBTdHJpbmcuZ2V0IG4gKGxlbmd0aCAtIDEpID0gJy4nIHRoZW5cbiAgICAgIG4gXiBcIjBcIlxuICAgIGVsc2VcbiAgICAgIG5cblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInRpbWUgdW5pdHNcIjtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfbWluIChgTnVtYmVyIDApO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX3ZhbHVlXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICBmb3JtYXRfZmxvYXRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgbS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZClcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICAoKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBpbnB1dCBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHJlc2V0X3ZhbHVlICgpID1cbiAgICAgICAgICAgIGxldCBvbGRfdmFsdWUgPVxuICAgICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9wcm9qZWN0Lm1vZGVsKS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlucHV0X2RvbSMjLnZhbHVlIDo9IEpzLnN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IG9sZF92YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IG5ld192YWx1ZSA9IGZsb2F0X29mX3N0cmluZyB2YWx1ZSBpblxuICAgICAgICAgICAgaWYgbmV3X3ZhbHVlIDwgMC4gdGhlblxuICAgICAgICAgICAgICByZXNldF92YWx1ZSAoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wbG90X3BlcmlvZCBuZXdfdmFsdWVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPiByZXNldF92YWx1ZSAoKSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIERpdkVycm9yTWVzc2FnZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJjb25maWd1cmF0aW9uX2Vycm9yX2RpdlwiXG4gIGxldCBtZXNzYWdlX25hdl9pbmNfaWQgPSBcInBhbmVsX3NldHRpbmdzX21lc3NhZ2VfbmF2X2luY19pZFwiXG4gIGxldCBtZXNzYWdlX25hdl9kZWNfaWQgPSBcInBhbmVsX3NldHRpbmdzX21lc3NhZ2VfbmF2X2RlY19pZFwiXG4gIGxldCBtZXNzYWdlX2ZpbGVfbGFiZWxfaWQgPSBcInBhbmVsX3NldHRpbmdzX21lc3NhZ2VfZmlsZV9sYWJlbFwiXG4gIGxldCBlcnJvcl9pbmRleCwgc2V0X2Vycm9yX2luZGV4ID0gUmVhY3QuUy5jcmVhdGUgTm9uZVxuXG4gIGxldCBkb250X2djX21lID1cbiAgICBSZWFjdC5TLmwxXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGVycm9yX2luZGV4IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0X2Vycm9yX2luZGV4IChTb21lIDApXG4gICAgICAgICAgfCBTb21lIF8gLT4gKCkpKVxuICAgICAgU3RhdGVfZXJyb3IuZXJyb3JzXG5cbiAgKCogaWYgdGhlcmUgYXJlIGxlc3Mgb3Igbm8gZXJyb3JzIHRoZSBpbmRleCBuZWVkcyB0byBiZSB1cGRhdGVkICopXG4gIGxldCBzYW5pdGl6ZV9pbmRleCAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBpbnQgb3B0aW9uID1cbiAgICBsZXQgKCkgPSBpZ25vcmUgZG9udF9nY19tZSBpblxuICAgIG1hdGNoIGluZGV4LCBlcnJvcnMgd2l0aFxuICAgIHwgTm9uZSwgW10gLT4gTm9uZVxuICAgIHwgTm9uZSwgXyA6OiBfIC0+IFNvbWUgMFxuICAgIHwgU29tZSBfLCBbXSAtPiBOb25lXG4gICAgfCBTb21lIGluZGV4LCBlcnJvciAtPlxuICAgICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGVycm9yIGluXG4gICAgICBpZiBpbmRleCA+IGxlbmd0aCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gc2V0X2Vycm9yX2luZGV4IChTb21lIDApIGluXG4gICAgICAgIFNvbWUgMFxuICAgICAgKSBlbHNlIGlmIDAgPiBpbmRleCB0aGVuIChcbiAgICAgICAgbGV0IGluZGV4ID0gU29tZSAoTGlzdC5sZW5ndGggZXJyb3IgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBzZXRfZXJyb3JfaW5kZXggaW5kZXggaW5cbiAgICAgICAgaW5kZXhcbiAgICAgICkgZWxzZVxuICAgICAgICBTb21lIGluZGV4XG5cbiAgbGV0IGdldF9tZXNzYWdlIChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IEFwaV90eXBlc190Lm1lc3NhZ2Ugb3B0aW9uID1cbiAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAoZnVuIG4gLT4gU29tZSAoTGlzdC5udGggZXJyb3JzIG4pKVxuICAgICAgKHNhbml0aXplX2luZGV4IGluZGV4IGVycm9ycylcblxuICBsZXQgbWVzYWdlX25hdl90ZXh0ID1cbiAgICBSZWFjdC5TLmwyXG4gICAgICAoZnVuIGluZGV4IGVycm9yIC0+XG4gICAgICAgIG1hdGNoIGluZGV4LCBlcnJvciB3aXRoXG4gICAgICAgIHwgTm9uZSwgW10gLT4gXCJcIlxuICAgICAgICB8IFNvbWUgXywgW10gLT4gXCJcIlxuICAgICAgICB8IE5vbmUsIF8gOjogXyAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpbmRleCwgKF8gOjogXyBhcyBlcnJvcnMpIC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlZC8lZFwiIChpbmRleCArIDEpIChMaXN0Lmxlbmd0aCBlcnJvcnMpKVxuICAgICAgZXJyb3JfaW5kZXggU3RhdGVfZXJyb3IuZXJyb3JzXG5cbiAgbGV0IGFfY2xhc3MgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBbIFwiaGlkZVwiIF1cbiAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXSkpKVxuXG4gIGxldCBtZXNzYWdlX25hdl9kZWMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9kZWNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMKrIFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXZfaW5jID1cbiAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfaWQgbWVzc2FnZV9uYXZfaW5jX2lkOyBhX2NsYXNzIF0gWyBIdG1sLnR4dCBcIiDCuyBcIiBdXG5cbiAgbGV0IG1lc3NhZ2VfbmF2ID1cbiAgICBbIG1lc3NhZ2VfbmF2X2RlYzsgVHl4bWxfanMuUi5IdG1sLnR4dCBtZXNhZ2VfbmF2X3RleHQ7IG1lc3NhZ2VfbmF2X2luYyBdXG5cbiAgbGV0IGZpbGVfbGFiZWxfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgKGdldF9tZXNzYWdlIGluZGV4IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSByYW5nZSAtPiBGb3JtYXQuc3ByaW50ZiBcIlslc11cIiByYW5nZS5Mb2MuZmlsZSlcbiAgICAgIGVycm9yX2luZGV4IFN0YXRlX2Vycm9yLmVycm9yc1xuXG4gIGxldCBmaWxlX2xhYmVsID1cbiAgICBIdG1sLnNwYW5cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIG1lc3NhZ2VfZmlsZV9sYWJlbF9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImVycm9yLXNwYW5cIjsgXCJjbGlja2FibGVcIiBdO1xuICAgICAgICBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgZmlsZV9sYWJlbF90ZXh0IF1cblxuICBsZXQgZXJyb3JfbWVzc2FnZV90ZXh0ID1cbiAgICBSZWFjdC5TLmwyXG4gICAgICAoZnVuIGluZGV4IGVycm9yIC0+XG4gICAgICAgIG1hdGNoIGdldF9tZXNzYWdlIGluZGV4IGVycm9yIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIG1lc3NhZ2UgLT4gRm9ybWF0LnNwcmludGYgXCIgJXMgXCIgbWVzc2FnZS5SZXN1bHRfdXRpbC50ZXh0KVxuICAgICAgZXJyb3JfaW5kZXggU3RhdGVfZXJyb3IuZXJyb3JzXG5cbiAgbGV0IGVycm9yX21lc3NhZ2UgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6WyBIdG1sLmFfaWQgaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiIF0gXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGVycm9yX21lc3NhZ2VfdGV4dCBdXG5cbiAgbGV0IGFsZXJ0X21lc3NhZ2VzID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiIF1cbiAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiOyBcImFsZXJ0LWRhbmdlclwiIF0pKSk7XG4gICAgICAgIF1cbiAgICAgIChtZXNzYWdlX25hdiBAIFsgZmlsZV9sYWJlbDsgZXJyb3JfbWVzc2FnZSBdKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBbIGFsZXJ0X21lc3NhZ2VzIF1cblxuICBsZXQgZmlsZV9jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gZmlsZV9sYWJlbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJmaWxlX2NsaWNrX2hhbmRsZXJcIikgaW5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlIDogQXBpX3R5cGVzX3QubWVzc2FnZSBvcHRpb24gPVxuICAgICAgICAgICAgICBnZXRfbWVzc2FnZVxuICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIGVycm9yX2luZGV4KVxuICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAgKGZ1biBtZXNzYWdlIC0+IG1lc3NhZ2UuUmVzdWx0X3V0aWwucmFuZ2UpXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHJhbmdlIC0+IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuZm9jdXNfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBpbmRleF9jbGlja19oYW5kbGVyIGRvbSBkZWx0YSA9XG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImluZGV4X2NsaWNrX2hhbmRsZXJcIikgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleFxuICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIGVycm9yX2luZGV4KVxuICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBPcHRpb25fdXRpbC5tYXAgZGVsdGEgaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleCBpbmRleCAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gc2V0X2Vycm9yX2luZGV4IGluZGV4IGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfZGVjIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCArIDEpIGluXG4gICAgKClcblxuICBsZXQgZGVjX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBtZXNzYWdlX25hdl9pbmMgaW5cbiAgICBsZXQgKCkgPSBpbmRleF9jbGlja19oYW5kbGVyIGRvbSAoZnVuIGluZGV4IC0+IGluZGV4IC0gMSkgaW5cbiAgICAoKVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9IGZpbGVfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGluY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgbGV0ICgpID0gZGVjX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25TdGFydCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19zdGFydF9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUuY3VycmVudCA9IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH07XG4gICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luY1xuICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwic3RhcnRcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IHN0YXJ0X2J1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGFydF9idXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc3RhcnRfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbkNsZWFyIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2NsZWFyX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiY2xlYXJcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnN0b3Bfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25QYXVzZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wYXVzZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInBhdXNlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnBhdXNlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uVHJhY2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfZ2V0X3RyYWNlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgICAgICAgICAgQCBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImdldCB0cmFjZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zaW11bGF0aW9uX3RyYWNlICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbk91dHB1dHMgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3Nfb3V0cHV0c19idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcIkFsbCBvdXRwdXRzXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnNpbXVsYXRpb25fb3V0cHV0cyAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25Db250aW51ZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19jb250aW51ZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNvbnRpbnVlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLmNvbnRpbnVlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2U3RhdHVzSW5kaWNhdG9yIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdfc3RhdHVzX2luZGljYXRvclwiXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBkZWJ1ZyA9XG4gICAgICBIdG1sLmRpdlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3N0YXRlX3RvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbClcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdCBsYWJlbCkpO1xuICAgICAgICBdXG4gICAgaW5cbiAgICBbIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGlkIF0gKFVpX2NvbW1vbi5sZXZlbCB+ZGVidWcgKCkpIF1cblxuICBsZXQgb25sb2FkICgpID0gKClcbmVuZFxuXG5tb2R1bGUgUnVubmluZ1BhbmVsTGF5b3V0IDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdzX3J1bmV0aW1lX2xheW91dFwiXG5cbiAgbGV0IHByb2dyZXNzX2JhciAocGVyY2VudF9zaWduYWwgOiBpbnQgVHl4bWxfanMuUi5IdG1sLndyYXApXG4gICAgICAodmFsdWVfc2lnbmFsIDogc3RyaW5nIFJlYWN0LnNpZ25hbCkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJwcm9ncmVzc2JhclwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVub3dcIiBwZXJjZW50X3NpZ25hbDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW1pblwiIDA7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtYXhcIiAxMDA7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHMgLT4gRm9ybWF0LnNwcmludGYgXCJ3aWR0aDogJWQlJTtcIiBzKVxuICAgICAgICAgICAgICAgcGVyY2VudF9zaWduYWwpO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwicHJvZ3Jlc3MtYmFyXCIgXTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMuYmluZCB2YWx1ZV9zaWduYWwgKGZ1biB2YWx1ZSAtPiBSZWFjdC5TLmNvbnN0IHZhbHVlKSk7XG4gICAgICBdXG5cbiAgbGV0IHRpbWVfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHRpbWVfcGVyY2VudCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgdGltZV9wZXJjZW50IDogaW50ID0gT3B0aW9uX3V0aWwudW5zb21lIDEwMCB0aW1lX3BlcmNlbnQgaW5cbiAgICAgICAgICAgdGltZV9wZXJjZW50KVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHRpbWUgOiBmbG9hdCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0ID0gT3B0aW9uX3V0aWwudW5zb21lIDAuMCB0aW1lIGluXG4gICAgICAgICAgIHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgZXZlbnRfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50X3BlcmNlbnRhZ2UgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50ID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgMTAwIGV2ZW50X3BlcmNlbnRhZ2VcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBldmVudCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50IDogaW50ID0gT3B0aW9uX3V0aWwudW5zb21lIDAgZXZlbnQgaW5cbiAgICAgICAgICAgc3RyaW5nX29mX2ludCBldmVudClcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzIHN0YXRlID1cbiAgICBsZXQgdHJhY2tlZF9ldmVudHMgOiBpbnQgb3B0aW9uID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzKVxuICAgICAgICBzdGF0ZVxuICAgIGluXG4gICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHRyYWNrZWRfZXZlbnRzIC0+XG4gICAgICBpZiB0cmFja2VkX2V2ZW50cyA+IDAgdGhlblxuICAgICAgICBTb21lIHRyYWNrZWRfZXZlbnRzXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcblxuICBsZXQgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHRyYWNrZWRfZXZlbnRzIC0+IHN0cmluZ19vZl9pbnQgdHJhY2tlZF9ldmVudHNcbiAgICAgICAgICAgfCBOb25lIC0+IFwiIFwiKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIF8gLT4gXCJ0cmFja2VkIGV2ZW50c1wiXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIiBcIilcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IGVmZmljaWVuY3lfZGV0YWlsIH5jdXJyZW50X2V2ZW50IHQgPVxuICAgIGxldCBhbGwgPVxuICAgICAgZmxvYXRfb2ZfaW50XG4gICAgICAgICh0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2VcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvbilcbiAgICBpblxuICAgIGxldCBldmVudHMgPSBmbG9hdF9vZl9pbnQgY3VycmVudF9ldmVudCBpblxuICAgIEh0bWwucFxuICAgICAgW1xuICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuJXRAXVwiXG4gICAgICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICAgICAgICAgICAoZnVuIGYgLT4gaWYgYWxsID4gMC4gdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQCBOdWxsIGV2ZW50IGNhdXNlOlwiKSk7XG4gICAgICBdXG4gICAgOjogKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBOb25lKVxuICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludCB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGVydHVyYmF0aW9uIGludGVycnVwdGluZyB0aW1lIGFkdmFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICAgICQkIFtdKSkpKVxuXG4gIGxldCBkb250X2djX21lID0gcmVmIFtdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBIdG1sX3R5cGVzLmRpdl9jb250ZW50IFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBzdGF0ZV9sb2csIHNldF9zdGF0ZV9sb2cgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY3JlYXRlIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbnRfZ2NfbWUgOj1cbiAgICAgICAgW1xuICAgICAgICAgIEx3dF9yZWFjdC5TLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIHN0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBlZmYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfZXZlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgZWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nIFtdIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsO1xuICAgICAgICBdXG4gICAgaW5cblxuICAgIFtcbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICA8ZGl2IGNsYXNzPVwicm93XCIgaWQ9XCJ8fVxuICAgICAgICAgIGlkXG4gICAgICAgICAge3xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIHx9XG4gICAgICAgICAgWyBldmVudF9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPmV2ZW50czwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRpbWVfcHJvZ3Jlc3NfYmFyICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj50aW1lPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ2aXNpYmxlLW1kLWJsb2NrIHZpc2libGUtbGctYmxvY2tcIj5cbnx9XG4gICAgICAgICAgWyBUeXhtbF9qcy5SLkh0bWwuZGl2IHN0YXRlX2xvZyBdXG4gICAgICAgICAge3xcbjwvZGl2PlxuPC9kaXY+XG4gICB8fV07XG4gICAgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbmxldCBzdG9wcGVkX2JvZHkgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWw1LmVsdCA9XG4gIGxldCBzdG9wcGVkX3JvdyA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgICAgfmFfY2xhc3M6WyBcImZvcm0tZ3JvdXBcIjsgXCJmb3JtLWdyb3VwLXNtXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLW1kLTIgY29sLXhzLTIgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICAgSW5wdXRQbG90UGVyaW9kLmlkXG4gICAgICAgICAge3xcIj5QbG90IHBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXhzLTNcIj58fVxuICAgICAgICAgIChJbnB1dFBsb3RQZXJpb2QuY29udGVudCAoKSlcbiAgICAgICAgICB7fDwvZGl2Pnx9XVxuICBpblxuICBsZXQgcGF1c2VkX3JvdyA9IEZvcm1QZXJ0dXJiYXRpb24uY29udGVudCAoKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQ7IFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgXVxuICAgIChbJWh0bWxcbiAgICAgICB7fFxuICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLXNtLTIgaGlkZGVuLXhzIGNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ8fVxuICAgICAgICAgSW5wdXRQYXVzZUNvbmRpdGlvbi5pZFxuICAgICAgICAge3xcIj5QYXVzZSBpZjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXNtLTMgY29sLXhzLTVcIj58fVxuICAgICAgICAgKElucHV0UGF1c2VDb25kaXRpb24uY29udGVudCAoKSlcbiAgICAgICAgIHt8PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgY29sLW1kLTggY29sLXhzLTdcIj58fVxuICAgICAgICAgKERpdkVycm9yTWVzc2FnZS5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj58fVxuICAgICAgICAgWyBzdG9wcGVkX3JvdyBdIHt8PC9mb3JtPnx9XVxuICAgIDo6IHBhdXNlZF9yb3cpXG5cbmxldCBpbml0aWFsaXppbmdfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5JTklUQUxJWklORyBdKTtcbiAgICAgIF1cbiAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF1cblxubGV0IHJ1bm5pbmdfYm9keSAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgIF1cbiAgICAoUnVubmluZ1BhbmVsTGF5b3V0LmNvbnRlbnQgKCkpXG5cbmxldCBmb290ZXIgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgfH1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblN0YXJ0LmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25Db250aW51ZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uT3V0cHV0cy5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uVHJhY2UuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy00XCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25QYXVzZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC14cy0yXCI7IFwiY29sLXNtLTFcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRDsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25DbGVhci5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIjsgXCJjb2wteHMtM1wiIF0gXVxuICAgICAgICAgIChEaXZTdGF0dXNJbmRpY2F0b3IuY29udGVudCAoKSBAIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXSk7XG4gICAgICBdXG4gICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3Byb2plY3QubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSkpO1xuICAgICAgXVxuICAgIFsgc3RvcHBlZF9ib2R5ICgpOyBpbml0aWFsaXppbmdfYm9keSAoKTsgcnVubmluZ19ib2R5ICgpOyBmb290ZXIgKCkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEZvcm1QZXJ0dXJiYXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGF1c2VDb25kaXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGxvdFBlcmlvZC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2RXJyb3JNZXNzYWdlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25TdGFydC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uUGF1c2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbkNvbnRpbnVlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25UcmFjZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uT3V0cHV0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ2xlYXIub25sb2FkICgpIGluXG4gIGxldCAoKSA9IERpdlN0YXR1c0luZGljYXRvci5vbmxvYWQgKCkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG48aDI+VGhlIEthcHBhIExhbmd1YWdlPC9oMj5cbjxwPkNvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUY8cD5cbjxwPkthcHBhIExhbmd1YWdlIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbFwiPkdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDM8L2E+LlxuIFNvdXJjZSBjb2RlIGlzIHB1Ymxpc2hlZCBvbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiPmh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW08L2E+LjwvcD5cblxuPHA+VGhpcyB1c2VyIGludGVyZmFjZSB3YXMgZGV2ZWxvcGVkIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9mb250YW5hLmhtcy5oYXJ2YXJkLmVkdVwiPkZvbnRhbmEgTGFiPC9hPiB1bmRlciBEQVJQQSBncmFudCBXOTExTkYtMTQtMS0wMzY3LiBWaXN1YWxpemF0aW9ucyB3ZXJlIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb2Rpbmcuc29lLnVjc2MuZWR1L25ld3MucGhwXCI+Q3JlYXRpdmUgQ29kaW5nIExhYjwvYT4gb2YgQW5ndXMgRm9yYmVzPC9wPlxuXG48cD5SZWZlcmVuY2UgbWFudWFsIGlzIG9ubGluZSBhdCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmdcIj5odHRwczovL3d3dy5rYXBwYWxhbmd1YWdlLm9yZzwvYT4uPC9wPlxuXG48dWw+XG48bGk+V3JpdHRlbiBpbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jYW1sLm9yZ1wiPlxuICA8IS0tPGltZyBzcmM9XCJodHRwOi8vb2NhbWwub3JnL2xvZ28vQ29sb3VyL1NWRy9jb2xvdXItbG9nby5zdmdcIlxuICAgICAgIGFsdD1cIi0tPk9DYW1sPCEtLVwiXG4gICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7IHdpZHRoOiAxNTBweDtcIiAvPiAtLT5cbjwvYT4uIENvbXBpbGVkIGJ5IDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vb2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXCI+anNfb2Zfb2NhbWw8L2E+LjwvbGk+XG48bGk+VGV4dCBlZGl0b3IgdXNlZCBpcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2NvZGVtaXJyb3IubmV0XCI+Q29kZU1pcnJvcjwvYT4uIEl0IGNvbWVzIHdpdGggYSBsb3Qgb2YgZmVhdHVyZXMuIENoZWNrIG91dCBpdHMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldC9kb2MvbWFudWFsLmh0bWwjY29tbWFuZHNcIj5tYW51YWw8L2E+LjwvbGk+XG48bGk+VmlzdWFsaXphdGlvbiByZWxpZXMgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZDNqcy5vcmdcIj5kMzwvYT4uPC9saT5cbjxsaT5MYXlvdXQgdXNlcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2dldGJvb3RzdHJhcC5jb21cIj5ib290c3RyYXA8L2E+IGFuZCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9qcXVlcnl1aS5jb21cIj5qUXVlcnk8L2E+LjwvbGk+XG48L3VsPlxuXG48aDM+Tm9taW5hbCBjb250cmlidXRpb248L2gzPlxuPGRsIGNsYXNzPVwiZGwtaG9yaXpvbnRhbFwiPjxkdD5QaWVycmUgQm91dGlsbGllcjwvZHQ+PGRkPkdlbmVyYWwgZGVzaWduIGFuZCBtYWludGVuYW5jZSwgcHJvdG9jb2xzPC9kZD48ZHQ+WGluZyBMaTwvZHQ+PGRkPk91dHB1dHMgdmlzdWFsaXphdGlvbnMsIEdlbmVyYWwgbGF5b3V0PC9kZD48ZHQ+TXV0YWFtYmEgTWFhc2hhPC9kdD48ZGQ+VHJhbnNwYXJlbnQgbXVsdGkgYmFja2VuZCBhcmNoaXRlY3R1cmUsIHByb3RvY29scywgT3V0cHV0IHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PC9kbD5cbnx9XVxuXG5sZXQgb25sb2FkICgpID0gKClcbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBKcyB1dGlsICopXG4oKiByZWZlcmVuY2VzXG4gICBodHRwOi8vdG9zcy5zb3VyY2Vmb3JnZS5uZXQvb2NhbWwuaHRtbFxuICAgaHR0cDovL3BlcHBlcm1pbnQuanAvdGVtcC9hby9hby5tbFxuKilcbmxldCBwcm90b3R5cGUgPSBKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3IucHJvdG90eXBlXCJcblxubGV0IGNyZWF0ZV9oYW5kbGVyIGxhYmVsID1cbiAgbGV0IGhlYWQgOiBjaGFyID0gQ2hhci51cHBlcmNhc2VfYXNjaWkgKFN0cmluZy5nZXQgbGFiZWwgMCkgaW5cbiAgbGV0IHRhaWwgOiBzdHJpbmcgPSBTdHJpbmcuc3ViIGxhYmVsIDEgKFN0cmluZy5sZW5ndGggbGFiZWwgLSAxKSBpblxuICBsZXQgb25fbGFiZWwgPSBcIm9uXCIgXiBDaGFyLmVzY2FwZWQgaGVhZCBeIHRhaWwgaW5cbiAgbGV0IHdyYXBwZXIgaGFuZGxlciA9IChKcy5VbnNhZmUucHVyZV9qc19leHByIFwidGhpc1wiKSMjb24gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgKCkgPSBKcy5VbnNhZmUuc2V0IHByb3RvdHlwZSAoSnMuc3RyaW5nIG9uX2xhYmVsKSB3cmFwcGVyIGluXG4gICgpXG5cbigqIGFkZCBvbiBoYW5kbGVycyB0byB0aGUgcHJvdG90eXBlcyBzbyB0aGV5IGNhbiBiZSBzdHJvbmdseSB0eXBlZCAqKVxubGV0ICgpID1cbiAgTGlzdC5pdGVyIGNyZWF0ZV9oYW5kbGVyXG4gICAgW1xuICAgICAgXCJiZWZvcmVDaGFuZ2VcIjtcbiAgICAgIFwiYmVmb3JlQ3Vyc29yRW50ZXJcIjtcbiAgICAgIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCI7XG4gICAgICBcImJsdXJcIjtcbiAgICAgIFwiY2hhbmdlc1wiO1xuICAgICAgXCJjbGVhclwiO1xuICAgICAgXCJjb250ZXh0bWVudVwiO1xuICAgICAgXCJjb3B5XCI7XG4gICAgICBcImN1cnNvckFjdGl2aXR5XCI7XG4gICAgICBcImN1dFwiO1xuICAgICAgXCJkYmxjbGlja1wiO1xuICAgICAgXCJkZWxldGVcIjtcbiAgICAgIFwiZHJhZ2VudGVyXCI7XG4gICAgICBcImRyYWdsZWF2ZVwiO1xuICAgICAgXCJkcmFnb3ZlclwiO1xuICAgICAgXCJkcmFnc3RhcnRcIjtcbiAgICAgIFwiZHJvcFwiO1xuICAgICAgXCJlbGVjdHJpY0lucHV0XCI7XG4gICAgICBcImZvY3VzXCI7XG4gICAgICBcImd1dHRlckNsaWNrXCI7XG4gICAgICBcImd1dHRlckNvbnRleHRNZW51XCI7XG4gICAgICBcImhpZGVcIjtcbiAgICAgIFwiaW5wdXRSZWFkXCI7XG4gICAgICBcImtleUhhbmRsZWRcIjtcbiAgICAgIFwia2V5cHJlc3NcIjtcbiAgICAgIFwia2V5dXBcIjtcbiAgICAgIFwibW91c2Vkb3duXCI7XG4gICAgICBcInBhc3RlXCI7XG4gICAgICBcInJlZHJhd1wiO1xuICAgICAgXCJyZW5kZXJMaW5lXCI7XG4gICAgICBcInNjcm9sbFwiO1xuICAgICAgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiO1xuICAgICAgXCJzd2FwRG9jXCI7XG4gICAgICBcInRvdWNoc3RhcnRcIjtcbiAgICAgIFwidW5oaWRlXCI7XG4gICAgICBcInVwZGF0ZVwiO1xuICAgICAgXCJ2aWV3cG9ydENoYW5nZVwiO1xuICAgICAgXCJjaGFuZ2VcIjtcbiAgICAgIFwia2V5ZG93blwiO1xuICAgIF1cblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY2ggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgbGluZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaW1lbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlZnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgcmlnaHQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgdG9wIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIGJvdHRvbSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHBvc2l0aW9uIDogKGludCAtPiBpbnQgLT4gcG9zaXRpb24gSnMudCkgSnMuY29uc3RyID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLl9Qb3NcblxudHlwZSBzZXZlcml0eSA9IEVycm9yIHwgV2FybmluZ1xuXG5jbGFzcyB0eXBlIGxpbnQgPSBvYmplY3RcbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBzZXZlcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50IDogbGludCBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnQgfihtZXNzYWdlIDogc3RyaW5nKSB+KHNldmVyaXR5IDogc2V2ZXJpdHkpXG4gICAgfihmcm9tIDogcG9zaXRpb24gSnMudCkgfih0b18gOiBwb3NpdGlvbiBKcy50KSA6IGxpbnQgSnMudCA9XG4gIGxldCByZXN1bHQgPSBuZXclanMgY29uc3RydWN0b3JfbGludCBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5tZXNzYWdlIDo9IEpzLnN0cmluZyBtZXNzYWdlIGluXG4gIGxldCAoKSA9XG4gICAgcmVzdWx0IyMuc2V2ZXJpdHkgOj1cbiAgICAgIG1hdGNoIHNldmVyaXR5IHdpdGhcbiAgICAgIHwgRXJyb3IgLT4gSnMuc3RyaW5nIFwiZXJyb3JcIlxuICAgICAgfCBXYXJuaW5nIC0+IEpzLnN0cmluZyBcIndhcm5pbmdcIlxuICBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5mcm9tIDo9IGZyb20gaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMudG9fIDo9IHRvXyBpblxuICByZXN1bHRcblxuY2xhc3MgdHlwZSBjaGFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdGV4dCA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHJlbW92ZWQgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvcmlnaW4gOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2NoYW5nZSA6IGNoYW5nZSBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxubGV0IGNyZWF0ZV9jaGFuZ2UgKCkgOiBjaGFuZ2UgSnMudCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9jaGFuZ2VcblxuY2xhc3MgdHlwZSBjb2RlbWlycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIHNldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgSnMubWV0aFxuXG4gICgqIFByb2dyYW1tYXRpY2FsbHkgc2V0IHRoZSBzaXplIG9mIHRoZSBlZGl0b3IgKG92ZXJyaWRpbmcgdGhlXG4gICAgIGFwcGxpY2FibGUgQ1NTIHJ1bGVzKS4gd2lkdGggYW5kIGhlaWdodCBjYW4gYmUgZWl0aGVyIG51bWJlcnNcbiAgICAgKGludGVycHJldGVkIGFzIHBpeGVscykgb3IgQ1NTIHVuaXRzIChcIjEwMCVcIiwgZm9yIGV4YW1wbGUpLlxuICAgICBZb3UgY2FuIHBhc3MgbnVsbCBmb3IgZWl0aGVyIG9mIHRoZW0gdG8gaW5kaWNhdGUgdGhhdCB0aGF0XG4gICAgIGRpbWVuc2lvbiBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gICopXG4gIG1ldGhvZCBzZXRTaXplIDogaW50IEpzLnQgSnMub3B0IC0+IGludCBKcy50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBTY3JvbGwgdGhlIGVkaXRvciB0byBhIGdpdmVuIChwaXhlbCkgcG9zaXRpb24uIEJvdGggYXJndW1lbnRzXG4gICAgIG1heSBiZSBsZWZ0IGFzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGhhdmUgbm8gZWZmZWN0LiAqKVxuICBtZXRob2Qgc2Nyb2xsVG8gOiBpbnQgSnMub3B0IC0+IGludCBKcy5vcHQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNoYXJDb29yZHMgOlxuICAgIHBvc2l0aW9uIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IGRpbWVuc2lvbiBKcy50IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0U2Nyb2xsZXJFbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIG9uIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gKERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZmlyZWQgd2hlbiBjb250ZW50IGlzIGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uQ2hhbmdlIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiYXRjaGVkIGNoYW5nZWQgb3BlcmF0aW9uICopXG4gIG1ldGhvZCBvbkNoYW5nZXMgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLmpzX2FycmF5IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmVmb3JlIGEgY2hhbmdlIGlzIGFwcGxpZWQgKilcbiAgbWV0aG9kIG9uQmVmb3JlQ2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGN1cnNvciBtb3Zlcywgb3IgYW55IGNoYW5nZSAqKVxuICBtZXRob2Qgb25DdXJzb3JBY3Rpdml0eSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiBuZXcgaW5wdXQgaXMgcmVhZCAqKVxuICBtZXRob2Qgb25LZXlIYW5kbGVkIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbklucHV0UmVhZCA6IChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiB0ZXh0IG1hdGNoZXMgZWxlY3RyaWMgcGF0dGVybiAqKVxuICBtZXRob2Qgb25FbGVjdHJpY0lucHV0IDogKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBzZWxlY3Rpb24gaXMgbW92ZWQgVE9ETyAqKVxuICBtZXRob2Qgb25CZWZvcmVTZWxlY3Rpb25DaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogdGhlIHZpZXcgcG9ydCBjaGFuZ2VkICopXG4gIG1ldGhvZCBvblZpZXdwb3J0Q2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqICBkb2N1bWVudCBzd2FwcGVkICopXG4gIG1ldGhvZCBvblN3YXBEb2MgOiAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGd1dHRlciBjbGlja2VkICopXG4gIG1ldGhvZCBvbkd1dHRlckNsaWNrIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogY29udGV4dCBtZW51IGV2ZW50IGZyb20gZ3V0dGVyICopXG4gIG1ldGhvZCBvbkd1dHRlckNvbnRleHRNZW51IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogZm9jdXMgKilcbiAgbWV0aG9kIG9uRm9jdXMgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJsdXIgKilcbiAgbWV0aG9kIG9uQmx1ciA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogc2Nyb2xsICopXG4gIG1ldGhvZCBvblNjcm9sbCA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIHNjcm9sbGVkIGluIHZpZXcqKVxuICBtZXRob2Qgb25TY3JvbGxDdXJzb3JJbnRvVmlldyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGRvbSB1cGRhdGVkICopXG4gIG1ldGhvZCBvblVwZGF0ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogbGluZSByZW5kZXJlZCAqKVxuICBtZXRob2Qgb25SZW5kZXJMaW5lIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uTW91c2Vkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGJsY2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ub3VjaHN0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29udGV4dG1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5cHJlc3MgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXl1cCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkN1dCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkNvcHkgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25QYXN0ZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdzdGFydCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdlbnRlciA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdvdmVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2xlYXZlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJvcCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRlbGV0ZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25CZWZvcmVDdXJzb3JFbnRlciA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25DbGVhciA6IChwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uVW5oaWRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvblJlZHJhdyA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgc2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGdldEN1cnNvciA6IHBvc2l0aW9uIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0U2VsZWN0aW9uIDogcG9zaXRpb24gSnMudCAtPiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcGVyZm9ybUxpbnQgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbnRfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIGdldEFubm90YXRpb25zIDpcbiAgICAoSnMuanNfc3RyaW5nIC0+XG4gICAgbGludF9jb25maWd1cmF0aW9uIEpzLnQgLT5cbiAgICBjb2RlbWlycm9yIEpzLnQgLT5cbiAgICBsaW50IEpzLnQgSnMuanNfYXJyYXkgSnMudClcbiAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW50T25DaGFuZ2UgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24gOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBjb25maWd1cmF0aW9uID0gb2JqZWN0XG4gICgqIFRoZSBzdGFydGluZyB2YWx1ZSBvZiB0aGUgZWRpdG9yLiAqKVxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIG1vZGUgdG8gdXNlLiAqKVxuICBtZXRob2QgbW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBFeHBsaWNpdGx5IHNldCB0aGUgbGluZSBzZXBhcmF0b3IgZm9yIHRoZSBlZGl0b3IuICAqKVxuICBtZXRob2QgbGluZVNlcGFyYXRvciA6IEpzLmpzX3N0cmluZyBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHRoZW1lIHRvIHN0eWxlIHRoZSBlZGl0b3Igd2l0aC4gKilcbiAgbWV0aG9kIHRoZW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtYW55IHNwYWNlcyBhIGJsb2NrIHNob3VsZCBiZSBpbmRlbnRlZC4gICopXG4gIG1ldGhvZCBpbmRlbnRVbml0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZXRoZXIgdG8gdXNlIHRoZSBjb250ZXh0LXNlbnNpdGl2ZSBpbmRlbnRhdGlvbiAqKVxuICBtZXRob2Qgc21hcnRJbmRlbnQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSB3aWR0aCBvZiBhIHRhYiBjaGFyYWN0ZXIuICopXG4gIG1ldGhvZCB0YWJTaXplIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBmaXJzdCBOKnRhYlNpemUgaW4gaW5kZW50YXRpb24gc2hvdWxkIE4gdGFicy4gKilcbiAgbWV0aG9kIGluZGVudFdpdGhUYWJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgZWRpdG9yIHNob3VsZCByZS1pbmRlbnQgdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbWV0aG9kIGVsZWN0cmljQ2hhcnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHNwZWNpYWwgcGxhY2Vob2xkZXIuICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhcnMgOiBKcy5yZWdFeHAgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiBpZGVudGlmaWVzIHNwZWNpYWxDaGFycyBhbmQgcHJvZHVjZXMgYSBET00gbm9kZSAqKVxuICBtZXRob2Qgc3BlY2lhbENoYXJQbGFjZWhvbGRlciA6IChpbnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50KSBKcy5wcm9wXG5cbiAgKCogSG9yaXpvbnRhbCBjdXJzb3IgbW92ZW1lbnQgdGhyb3VnaCByaWdodC10by1sZWZ0LiAqKVxuICBtZXRob2QgcnRsTW92ZVZpc3VhbGx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDb25maWd1cmVzIHRoZSBrZXkgbWFwIHRvIHVzZS4gKilcbiAgbWV0aG9kIGtleU1hcCA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBzcGVjaWZ5IGV4dHJhIGtleSBiaW5kaW5ncyBmb3IgdGhlIGVkaXRvciAqKVxuICBtZXRob2QgZXh0cmFLZXlzIDogJ2EgSnMucHJvcFxuXG4gICgqIFNjcm9sbCBvciB3cmFwIGZvciBsb25nIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV3JhcHBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqICBTaG93IGxpbmUgbnVtYmVycyB0byB0aGUgbGVmdCBvZiB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBsaW5lTnVtYmVycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQXQgd2hpY2ggbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGxpbmVzLiBEZWZhdWx0IGlzIDEuICopXG4gIG1ldGhvZCBmaXJzdExpbmVOdW1iZXIgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcm1hdCBsaW5lIG51bWJlcnMuICopXG4gIG1ldGhvZCBsaW5lTnVtYmVyRm9ybWF0dGVyIDogKGludCBKcy50IC0+IEpzLmpzX3N0cmluZykgSnMudCBKcy5wcm9wXG5cbiAgKCogQWRkIGV4dHJhIGd1dHRlcnMgKilcbiAgbWV0aG9kIGd1dHRlcnMgOiBKcy5zdHJpbmdfYXJyYXkgSnMudCBKcy5wcm9wXG5cbiAgKCogR3V0dGVyIHNjcm9sbHMgYWxvbmcgd2l0aCB0aGUgY29udGVudCBob3Jpem9udGFsbHkgKilcbiAgbWV0aG9kIGZpeGVkR3V0dGVyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDaG9vc2VzIGEgc2Nyb2xsYmFyIGltcGxlbWVudGF0aW9uLiAqKVxuICBtZXRob2Qgc2Nyb2xsYmFyU3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogY292ZXIgZ3V0dGVyIHdpdGggd2l0aCBjbGFzcyBDb2RlTWlycm9yLWd1dHRlci1maWxsZXIuICopXG4gIG1ldGhvZCBjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogU2VsZWN0cyB0aGUgd2F5IENvZGVNaXJyb3IgaGFuZGxlcyBpbnB1dCBhbmQgZm9jdXMuICopXG4gIG1ldGhvZCBpbnB1dFN0eWxlIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIGRpc2FibGUgZWRpdGluZyBvZiB0aGUgZWRpdG9yIGNvbnRlbnQgKilcbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biB3aGVuIGEgc2VsZWN0aW9uIGlzIGFjdGl2ZS4gKilcbiAgbWV0aG9kIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBjb3B5IG9yIGN1dCB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB3aWxsIGNvcHkgb3IgY3V0IHdob2xlIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV2lzZUNvcHlDdXQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZW4gcGFzdGluZyBzb21ldGhpbmcgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UgKG5vdCBmcm9tIHRoZVxuICAgICBlZGl0b3IgaXRzZWxmKSwgaWYgdGhlIG51bWJlciBvZiBsaW5lcyBtYXRjaGVzIHRoZSBudW1iZXIgb2ZcbiAgICAgc2VsZWN0aW9uLCBDb2RlTWlycm9yIHdpbGwgYnkgZGVmYXVsdCBpbnNlcnQgb25lIGxpbmUgcGVyXG4gICAgIHNlbGVjdGlvbi4gWW91IGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHRoYXRcbiAgICAgYmVoYXZpb3IuICopXG4gIG1ldGhvZCBwYXN0ZUxpbmVzUGVyU2VsZWN0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBEZXRlcm1pbmVzIHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgam9pbmVkIGFzIHNvb24gYXNcbiAgICAgdGhleSB0b3VjaCAodGhlIGRlZmF1bHQpIG9yIG9ubHkgd2hlbiB0aGV5IG92ZXJsYXAgKHRydWUpLiAqKVxuICBtZXRob2Qgc2VsZWN0aW9uc01heVRvdWNoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBtYXhpbXVtIG51bWJlciBvZiB1bmRvICopXG4gIG1ldGhvZCB1bmRvRGVwdGggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogbWlsbGlzZWNvbmRzIG9mIGluYWN0aXZpdHkgdG8gY3JlYXRlIGEgbmV3IGhpc3RvcnkgZXZlbnQgKilcbiAgbWV0aG9kIGhpc3RvcnlFdmVudERlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRhYiBpbmRleCBvZiBlZGl0b3IgKilcbiAgbWV0aG9kIHRhYmluZGV4IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIENvZGVNaXJyb3IgZm9jdXMgaXRzZWxmIG9uIGluaXRpYWxpemF0aW9uICopXG4gIG1ldGhvZCBhdXRvZm9jdXMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGVuYWJsZSBkcmFnLWFuZC1kcm9wICopXG4gIG1ldGhvZCBkcmFnRHJvcCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogd2hlbiBzZXQgZmlsZXMgd2l0IG1pbWUgdHlwZSBjYW4gYmUgZHJvcHBlZCBpbnRvIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGFsbG93RHJvcEZpbGVUeXBlcyA6IEpzLnN0cmluZ19hcnJheSBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogSGFsZi1wZXJpb2QgaW4gbWlsbGlzZWNvbmRzIHVzZWQgZm9yIGN1cnNvciBibGlua2luZy4gKilcbiAgbWV0aG9kIGN1cnNvckJsaW5rUmF0ZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBIb3cgbXVjaCBleHRyYSBzcGFjZSB0byBhbHdheXMga2VlcCBhYm92ZSBhbmQgYmVsb3cgdGhlIGN1cnNvciAqKVxuICBtZXRob2QgY3Vyc29yU2Nyb2xsTWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgY3Vyc29yLiAqKVxuICBtZXRob2QgY3Vyc29ySGVpZ2h0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjb250ZXh0IG1lbnUgaXMgb3BlbmVkIHdpdGggYSBjbGljayBvdXRzaWRlIG9mIHRoZVxuICAgICBjdXJyZW50IHNlbGVjdGlvbiwgbW92ZSBjdXJzb3IgdG8gdGhlIHBvaW50IG9mIHRoZSBjbGljayopXG4gIG1ldGhvZCByZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRpbWUgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtUaW1lIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGRlbGF5IHRvIHJ1biBoaWdobGlnaHRpbmcgdGhyZWFkICopXG4gIG1ldGhvZCB3b3JrRGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogaG93IG9mdGVuIHRvIHBvbGwgZm9yIGNoYW5nZXMgKilcbiAgbWV0aG9kIHBvbGxJbnRlcnZhbCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBjb21iaW5lIHRva2VucyB0byBhIHNpbmdsZSBzcGFuICopXG4gIG1ldGhvZCBmbGF0dGVuU3BhbnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHByZWZpeCBjc3MgKilcbiAgbWV0aG9kIGFkZE1vZGVDbGFzcyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogbGVuZ3RoIHRvIGhpZ2hsaWdodCAqKVxuICBtZXRob2QgbWF4SGlnaGxpZ2h0TGVuZ3RoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBhbW91bnQgb2YgbGluZXMgdGhhdCBhcmUgcmVuZGVyZWQgYWJvdmUgYW5kIGJlbG93IHRoZVxuICAgICB2aXNpYmxlIGRvY3VtZW50KilcbiAgbWV0aG9kIHZpZXdwb3J0TWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIHNlbGVjdGlvbi9hY3RpdmUtbGluZS5qcyAqKVxuICBtZXRob2Qgc3R5bGVBY3RpdmVMaW5lIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBsaW50L2xpbnQuanMgKilcbiAgbWV0aG9kIGxpbnQgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gZWRpdC9tYXRjaGJyYWNrZXRzLmpzICopXG4gIG1ldGhvZCBtYXRjaEJyYWNrZXRzIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50ID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmRlZmF1bHRzXG5cbmxldCBmcm9tVGV4dEFyZWEgKGRvbSA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcbiAgICAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24gSnMudCkgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAoKiBsZXQgKCkgPSBKcy5kZWJ1Z2dlcigpIGluICopXG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjI2Zyb21UZXh0QXJlYVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGRvbSlcbiAgICAoSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uKVxuXG5jbGFzcyB0eXBlIGNvbW1hbmRzID0gb2JqZWN0XG4gIG1ldGhvZCBzYXZlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbW1hbmRzIDogY29tbWFuZHMgSnMudCA9IChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5jb21tYW5kc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGNyZWF0ZV9maWxlID8odGV4dCA9IEx3dC5yZXR1cm4gKEpzLnN0cmluZyBcIlwiKSkgKGZpbGVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIHRleHQgPj49IGZ1biB0eHQgLT5cbiAgICAgICAgICBsZXQgY29udGVudCA9IEpzLnRvX3N0cmluZyB0eHQgaW5cbiAgICAgICAgICBTdGF0ZV9maWxlLmNyZWF0ZV9maWxlIH5maWxlbmFtZTpmaWxlX2lkIH5jb250ZW50XG4gICAgICAgICAgPj49ICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgICAgICBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfZmlsZSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X2ZpbGU6JXNcIiBmaWxlX2lkKSkgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCBOb25lID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9maWxlICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUucmVtb3ZlX2ZpbGUgKCkgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlX2NvbXBpbGUgcmFuayAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2V0X2NvbXBpbGUgcmFuayBjb21waWxlID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUub3JkZXJfZmlsZXMgZmlsZW5hbWVzID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBleHBvcnRfY3VycmVudF9maWxlICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChkYXRhLCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGE6KEpzLnN0cmluZyBkYXRhKVxuICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZmlsZV9uZXdfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LW1vZGFsXCJcbmxldCBmaWxlX25ld19pbnB1dF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctaW5wdXRcIlxubGV0IGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1kcm9wZG93bi1tZW51XCJcbmxldCBmaWxlX25ld19saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbGlcIlxubGV0IGZpbGVfb3Blbl9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1vcGVuLWxpXCJcbmxldCBmaWxlX29wZW5fc2VsZWN0b3JfaWQgPSBcIm1lbnUtZWRpdG9yLW9wZW4tc2VsZWN0b3ItaWRcIlxubGV0IGZpbGVfY2xvc2VfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtY2xvc2UtbGlcIlxubGV0IGZpbGVfZXhwb3J0X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWV4cG9ydC1saVwiXG5sZXQgZmlsZV9jb21waWxlX2NoZWNrYm94ID0gXCJtZW51LWVkaXRvci1maWxlLWNvbXBpbGUtY2hlY2tib3hcIlxuXG4oKiBsaXN0IGZpbGVuYW1lIGFubm90YXRpb24gKilcbmxldCBlbGVtZW50X2dldF9maWxlbmFtZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIENvbW1vbi5lbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIFwiZmlsZS1pZFwiXG5cbmxldCBlbGVtZW50X3NldF9maWxlbmFtZSAobmFtZSA6IHN0cmluZykgPVxuICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1maWxlLWlkXCIgbmFtZVxuXG5sZXQgZmlsZV9uZXdfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX25ld19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmaWxlX25ld19pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZmlsZV9uZXdfaW5wdXRcblxubGV0IGZpbGVfY2hlY2tib3ggZmlsZV9pZCBpc19jaGVja2VkID1cbiAgbGV0IGNoZWNrZWRfYXR0cmlidXRlID1cbiAgICBpZiBpc19jaGVja2VkIHRoZW5cbiAgICAgIFsgSHRtbC5hX2NoZWNrZWQgKCkgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIChbXG4gICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7XG4gICAgICAgICBIdG1sLmFfY2xhc3MgWyBmaWxlX2NvbXBpbGVfY2hlY2tib3ggXTtcbiAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIGZpbGVfaWQ7XG4gICAgICAgXVxuICAgICAgQCBjaGVja2VkX2F0dHJpYnV0ZSlcbiAgICAoKVxuXG5sZXQgb3Blbl9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfb3Blbl9zZWxlY3Rvcl9pZDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJoaWRkZW5cIiBdO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiZmlsZVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYWNjZXB0XCIgXCIua2FcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfZmlsZS5tb2RlbCkgPVxuICAoKiBkaXJlY3RvcmllcyAqKVxuICBsZXQgaGlkZV9vbl9lbXB0eSBsID1cbiAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2VcbiAgICAgIGxcbiAgaW5cbiAgbGV0IGZpbGVfbGkgPVxuICAgIGxldCBjdXJyZW50X2ZpbGVfcG9zID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHsgU3RhdGVfZmlsZS5yYW5rOyBfIH0gLT4gcmFuaylcbiAgICAgICAgbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50XG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocmFuaywgeyBTdGF0ZV9maWxlLm5hbWU7IFN0YXRlX2ZpbGUubG9jYWwgfSkgLT5cbiAgICAgICAgbGV0IGNvbXBpbGUgPSBsb2NhbCA9IE5vbmUgaW5cbiAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAoaWYgY3VycmVudF9maWxlX3BvcyA9IFNvbWUgcmFuayB0aGVuXG4gICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKVxuICAgICAgICAgIEAgWyBcInVpLXN0YXRlLXNvcnRhYmxlXCIgXVxuICAgICAgICBpblxuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3M7IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICB+YTpbIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWRpdlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBmaWxlX2NoZWNrYm94IG5hbWUgY29tcGlsZTtcbiAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1sYWJlbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXSlcbiAgICAgIChNb2RzLkludE1hcC5iaW5kaW5ncyBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSlcbiAgaW5cbiAgbGV0IHNlcGFyYXRvcl9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJzZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgWyBcImRpdmlkZXJcIjsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG5ld19saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX25ld19saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk5ld1wiIF0gXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IG9wZW5fbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX29wZW5fbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJPcGVuXCIgXTtcbiAgICAgICAgICBvcGVuX2lucHV0O1xuICAgICAgICBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgY2xvc2VfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9jbG9zZV9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkNsb3NlXCIgXSBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZXhwb3J0X2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfZXhwb3J0X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiRXhwb3J0XCIgXSBdO1xuICAgICAgXVxuICBpblxuICBbXSBAIGZpbGVfbGkgQCBzZXBhcmF0b3JfbGkgQCBuZXdfbGkgQCBvcGVuX2xpIEAgY2xvc2VfbGkgQCBleHBvcnRfbGlcblxubGV0IGNvbnRlbnQgPVxuICBsZXQgbGlfbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAoUmVhY3QuUy5tYXAgKGZ1biBtb2RlbCAtPiBkcm9wZG93biBtb2RlbCkgU3RhdGVfZmlsZS5tb2RlbClcbiAgaW5cbiAgW1xuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0biBidG4tZGVmYXVsdFwiOyBcImRyb3Bkb3duLXRvZ2dsZVwiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJkcm9wZG93blwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhhc3BvcHVwXCIgXCJ0cnVlXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtZXhwYW5kZWRcIiBcImZhbHNlXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCBmaWxlIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGZpbGUuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH0gLT4gb3V0X29mX3N5bmMpKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIkZpbGVcIjsgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjYXJldFwiIF0gXSBbXSBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbC51bFxuICAgICAgfmE6WyBIdG1sLmFfaWQgZmlsZV9kcm9wZG93bl9tZW51X2lkOyBIdG1sLmFfY2xhc3MgWyBcImRyb3Bkb3duLW1lbnVcIiBdIF1cbiAgICAgIGxpX2xpc3Q7XG4gICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbCB+aWQ6ZmlsZV9uZXdfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IEZpbGVcIlxuICAgICAgfmJvZHk6XG4gICAgICAgIFsgWyVodG1sIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBmaWxlX25ld19pbnB1dCBdIHt8PC9kaXY+fH1dIF1cbiAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgRmlsZVwiXG4gICAgICB+c3VibWl0OlxuICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZmlsZV9uZXdfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGUgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gIF1cblxubGV0IG9yZGVyX2ZpbGVzIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCBmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCA9XG4gICAgQ29tbW9uLmNoaWxkcmVuX3ZhbHVlIGVsZW1lbnQgXCJsaVtkYXRhLWZpbGUtaWRdXCIgKGZ1biBlbGVtZW50IC0+XG4gICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBlbGVtZW50IGluXG4gICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgKGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZmlsZW5hbWVcIilcbiAgICAgICAgICBKcy50b19zdHJpbmcpXG4gIGluXG4gIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5vcmRlcl9maWxlcyBmaWxlbmFtZXMgaW5cbiAgKClcblxubGV0IGZpbGVfc2VsZWN0X2hhbmRsZXIgXyBfIDogdW5pdCBMd3QudCA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCBmaWxlcyA9IEpzLk9wdGRlZi5nZXQgb3Blbl9pbnB1dF9kb20jIy5maWxlcyAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGUgPSBKcy5PcHQuZ2V0IChmaWxlcyMjaXRlbSAwKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGVfaWQgPSBKcy50b19zdHJpbmcgZmlsZSMjLm5hbWUgaW5cbiAgbGV0ICgpID1cbiAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGVcbiAgICAgIH50ZXh0OihKc19vZl9vY2FtbF9sd3QuRmlsZS5yZWFkQXNUZXh0IGZpbGUpXG4gICAgICBmaWxlX2lkXG4gIGluXG4gIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgb3Blbl9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9uZXdfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gZmlsZV9uZXdfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfb3Blbl9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgKCogY2xpY2sgOiB1bml0IEpzLm1ldGg7ICopXG4gICAgICAgICAgIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyNjbGljayBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9jbG9zZV9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmNsb3NlX2ZpbGUgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfZXhwb3J0X2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCJzcGFuW2RhdGEtZmlsZS1pZF1cIiBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgKCogbGV0ICgpID0gQ29tbW9uLmRlYnVnIGV2ZW50IGluICopXG4gICAgICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgICAgbGV0IGZpbGVfaWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICAgICAgICAgICAgIEpzLk9wdC5iaW5kIHRhcmdldCAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgICAgICBlbGVtZW50X2dldF9maWxlbmFtZSBlbGVtZW50KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGUgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uY3JlYXRlX3NvcnQgZmlsZV9kcm9wZG93bl9tZW51X2lkIChmdW4gZXZlbnQgXyAoKiB1aSAqKSAtPlxuICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgIEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgbGV0IGlkIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGVsZW1lbnQjIy5pZCBpblxuICAgICAgICAgICAgaWYgZmlsZV9kcm9wZG93bl9tZW51X2lkID0gaWQgdGhlblxuICAgICAgICAgICAgICBvcmRlcl9maWxlcyBlbGVtZW50XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyAoRm9ybWF0LnNwcmludGYgXCJ1bmV4cGVjdGVkIGlkICVzXCIgaWQpKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoRm9ybWF0LnNwcmludGYgXCJpbnB1dC4lc1wiIGZpbGVfY29tcGlsZV9jaGVja2JveClcbiAgICAgIFwiY2hhbmdlXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICAgICBsZXQgZmlsZV9pZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gICAgICAgICAgICAgSnMuT3B0LmJpbmQgdGFyZ2V0IChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBpc19jaGVja2VkIDogYm9vbCA9XG4gICAgICAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgICAgICAgKEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IEpzLl9mYWxzZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChKcy5VbnNhZmUuY29lcmNlIGVsZW1lbnQgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCkjIy5jaGVja2VkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGZpbGVfaWQgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVfY29tcGlsZVxuICAgICAgICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmNoYW5nZXNcbiAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQpXG4gICAgICAgICAgZmlsZV9zZWxlY3RfaGFuZGxlcilcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCB3aXRoX2ZpbGUgKGhhbmRsZXIgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudClcbiAgICA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfZmlsZS5nZXRfZmlsZSAoKSA+Pj0gaGFuZGxlcikgPj49IGZ1biBfIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfY29udGVudCB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGZpbGVjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgPVxuICB3aXRoX2ZpbGVcbiAgICAoQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKF8sIGN1cnJlbnRfZmlsZW5hbWUpIC0+XG4gICAgICAgICBpZiBmaWxlbmFtZSA9IGN1cnJlbnRfZmlsZW5hbWUgdGhlblxuICAgICAgICAgICBTdGF0ZV9maWxlLnNldF9jb250ZW50IGZpbGVjb250ZW50ID4+PSBmdW4gciAtPlxuICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSlcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcImZpbGUgbmFtZSBtaXNtYXRjaCAlcyAlc1wiIGZpbGVuYW1lIGN1cnJlbnRfZmlsZW5hbWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIG1zZylcbiAgICAgICAgICkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDb2RlbWlycm9yXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBlZGl0b3JfZnVsbCwgc2V0X2VkaXRvcl9mdWxsID0gUmVhY3QuUy5jcmVhdGUgKGZhbHNlIDogYm9vbClcbmxldCBmaWxlbmFtZSwgc2V0X2ZpbGVuYW1lID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IG1vdmVfY3Vyc29yX2hvb2sgPSByZWYgTm9uZVxubGV0IHNldF9tb3ZlX2N1cnNvciBsb2MgPSBPcHRpb24uaXRlciAoZnVuIGYgLT4gZiBsb2MpICFtb3ZlX2N1cnNvcl9ob29rXG5cbmxldCBmaWxlX2xhYmVsID1cbiAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgIChSZWFjdC5TLm1hcCAoT3B0aW9uX3V0aWwudW5zb21lIFwiXCIpIFN0YXRlX2ZpbGUuY3VycmVudF9maWxlbmFtZSlcblxubGV0IHRvZ2dsZV9idXR0b25faWQgPSBcInRvZ2dsZV9idXR0b25cIlxuXG5sZXQgdG9nZ2xlX2J1dHRvbiA9XG4gIEh0bWwuYVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdG9nZ2xlX2J1dHRvbl9pZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwicHVsbC1yaWdodFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLmNkYXRhIFwidG9nZ2xlXCIgXVxuXG5sZXQgcGFuZWxfaGVhZGluZ19ncm91cF9pZCA9IFwicGFuZWxfaGVhZGluZ19ncm91cFwiXG5cbmxldCBwYW5lbF9oZWFkaW5nID1cbiAgbGV0IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0bi1ncm91cFwiIF07IEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJncm91cFwiO1xuICAgICAgICBdXG4gICAgICBNZW51X2VkaXRvcl9maWxlLmNvbnRlbnRcbiAgaW5cbiAgbGV0IGJ1dHRvbnMgPSBtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQgOjogWyB0b2dnbGVfYnV0dG9uIF0gaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBpZD1cInx9XG4gICAgICBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIHt8XCIgY2xhc3M9XCJjb2wtbWQtMTAgYnRuLWdyb3VwXCI+fH0gYnV0dG9uc1xuICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBvbmVsaW5lciBmaWxlbmFtZVwiPnx9XG4gICAgICBbIGZpbGVfbGFiZWwgXVxuICAgICAge3w8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+fH1dXG5cbmxldCBjb2RlbWlycm9yX2lkID0gXCJjb2RlLW1pcnJvclwiXG5sZXQgZWRpdG9yX3BhbmVsX2lkID0gXCJlZGl0b3ItcGFuZWxcIlxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCB0ZXh0YXJlYSA9IEh0bWwudGV4dGFyZWEgfmE6WyBIdG1sLmFfaWQgY29kZW1pcnJvcl9pZCBdIChIdG1sLnR4dCBcIlwiKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIjsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdIF1cbiAgICBbXG4gICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXSBbIHBhbmVsX2hlYWRpbmcgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5oaWRlX2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJuby1wYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uc2hvd19jb2RlbWlycm9yICgpIGluXG4gICAgICAgICAgICAgICAgICAgICBbIFwicGFuZWwtYm9keVwiOyBcImZsZXgtY29udGVudFwiIF0pXG4gICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICAgICAgSHRtbC5hX2lkIGVkaXRvcl9wYW5lbF9pZDtcbiAgICAgICAgICBdXG4gICAgICAgIFsgdGV4dGFyZWEgXTtcbiAgICBdXG5cbmxldCBlcnJvcl9saW50IGVycm9ycyA6IENvZGVtaXJyb3IubGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICBsZXQgcG9zaXRpb24gcCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChwLkxvYy5saW5lIC0gMSkgcC5Mb2MuY2hyIGluXG4gIGxldCBoeWRyYXRlIChlcnJvciA6IEFwaV90eXBlc19qLm1lc3NhZ2UpIDogbGludCBKcy50IG9wdGlvbiA9XG4gICAgbWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwucmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhbmdlIC0+XG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBTdGF0ZV9maWxlLmN1cnJlbnRfZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBmaWxlX2lkIC0+XG4gICAgICAgIGlmIHJhbmdlLkxvYy5maWxlID0gZmlsZV9pZCB0aGVuXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKENvZGVtaXJyb3IuY3JlYXRlX2xpbnRcbiAgICAgICAgICAgICAgIH5tZXNzYWdlOmVycm9yLlJlc3VsdF91dGlsLnRleHRcbiAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLi4uIGkgYW0gdHJ5aW5nIHRvIGtlZXBcbiAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBtaXJyb3IgY29kZSBpbmRlcGVuZGVudCBvZiB0aGUgYXBpIGNvZGUuXG4gICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICB+c2V2ZXJpdHk6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5zZXZlcml0eSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5BcHAgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuRXJyb3IgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuV2FybmluZyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkluZm8gLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5EZWJ1ZyAtPiBDb2RlbWlycm9yLldhcm5pbmcpXG4gICAgICAgICAgICAgICB+ZnJvbToocG9zaXRpb24gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24pXG4gICAgICAgICAgICAgICB+dG9fOihwb3NpdGlvbiByYW5nZS5Mb2MudG9fcG9zaXRpb24pKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZSlcbiAgaW5cbiAgSnMuYXJyYXlcbiAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIHZhbHVlIC0+XG4gICAgICAgICAgICBtYXRjaCBoeWRyYXRlIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZSA6OiBhY2MpXG4gICAgICAgICAgW10gZXJyb3JzKSlcblxubGV0IHNldHVwX2xpbnQgXyBfIF8gPSBlcnJvcl9saW50IChSZWFjdC5TLnZhbHVlIFN0YXRlX2Vycm9yLmVycm9ycylcblxuKCogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDU3NTM0My9jb2RlbWlycm9yLWlzLWl0LXBvc3NpYmxlLXRvLXNjcm9sbC10by1hLWxpbmUtc28tdGhhdC1pdC1pcy1pbi10aGUtbWlkZGxlLW9mLXcgKilcbmxldCBqdW1wX3RvX2xpbmUgKGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQpIChsaW5lIDogaW50KSA6IHVuaXQgPVxuICBsZXQgcG9zaXRpb24gOiBwb3NpdGlvbiBKcy50ID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gbGluZSAwIGluXG4gIGxldCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID0gSnMuc29tZSAoSnMuc3RyaW5nIFwibG9jYWxcIikgaW5cbiAgbGV0IGNvb3JkcyA6IENvZGVtaXJyb3IuZGltZW5zaW9uIEpzLnQgPVxuICAgIGNvZGVtaXJyb3IjI2NoYXJDb29yZHMgcG9zaXRpb24gbW9kZVxuICBpblxuICBsZXQgdG9wIDogaW50ID0gY29vcmRzIyMudG9wIGluXG4gIGxldCBlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gY29kZW1pcnJvciMjZ2V0U2Nyb2xsZXJFbGVtZW50IGluXG4gIGxldCBtaWRkbGVIZWlnaHQgOiBpbnQgPSBlbGVtZW50IyMub2Zmc2V0SGVpZ2h0IC8gMiBpblxuICBsZXQgc2Nyb2xsTGluZSA6IGludCA9IHRvcCAtIG1pZGRsZUhlaWdodCAtIDUgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2Nyb2xsVG8gSnMubnVsbCAoSnMuc29tZSBzY3JvbGxMaW5lKSBpblxuICAoKVxuXG5sZXQgZG9udF9nY19tZV9zaWduYWxzID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZS5vbmxvYWQgKCkgaW5cbiAgbGV0IGxpbnRfY29uZmlnID0gQ29kZW1pcnJvci5jcmVhdGVfbGludF9jb25maWd1cmF0aW9uICgpIGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMuZ2V0QW5ub3RhdGlvbnMgOj0gc2V0dXBfbGludCBpblxuICBsZXQgKCkgPSBsaW50X2NvbmZpZyMjLmxpbnRPbkNoYW5nZSA6PSBKcy5fZmFsc2UgaW5cbiAgbGV0IGNvbmZpZ3VyYXRpb24gPSBDb2RlbWlycm9yLmRlZmF1bHRfY29uZmlndXJhdGlvbiBpblxuICBsZXQgZ3V0dGVyX29wdGlvbnMgPVxuICAgIEpzLnN0cmluZyBcImJyZWFrcG9pbnRzLENvZGVNaXJyb3ItbGludC1tYXJrZXJzLENvZGVNaXJyb3ItbGluZW51bWJlcnNcIlxuICBpblxuICBsZXQgZ3V0dGVyX29wdGlvbiA6IEpzLnN0cmluZ19hcnJheSBKcy50ID1cbiAgICBndXR0ZXJfb3B0aW9ucyMjc3BsaXQgKEpzLnN0cmluZyBcIixcIilcbiAgaW5cbiAgbGV0IHRleHRhcmVhIDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gVWlfY29tbW9uLmlkX2RvbSBcImNvZGUtbWlycm9yXCIgaW5cbiAgbGV0ICgpID1cbiAgICBjb25maWd1cmF0aW9uIyMubGluZU51bWJlcnMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmxpbmVXcmFwcGluZyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuc3R5bGVBY3RpdmVMaW5lIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tYXRjaEJyYWNrZXRzIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5hdXRvZm9jdXMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmd1dHRlcnMgOj0gZ3V0dGVyX29wdGlvbjtcbiAgICBjb25maWd1cmF0aW9uIyMubGludCA6PSBsaW50X2NvbmZpZztcbiAgICBjb25maWd1cmF0aW9uIyMubW9kZSA6PSBKcy5zdHJpbmcgXCJLYXBwYVwiXG4gIGluXG4gIGxldCBjb2RlbWlycm9yIDogY29kZW1pcnJvciBKcy50ID1cbiAgICBDb2RlbWlycm9yLmZyb21UZXh0QXJlYSB0ZXh0YXJlYSBjb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9IGNvZGVtaXJyb3IjI3NldFZhbHVlIChKcy5zdHJpbmcgXCJcIikgaW5cbiAgbGV0ICgpID1cbiAgICBTdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci53aXRoX2ZpbGVcbiAgICAgIChSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICB+b2s6KGZ1biAoY29udGVudCwgaWQpIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9maWxlbmFtZSAoU29tZSBpZCkgaW5cbiAgICAgICAgICAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBjb250ZW50KSBpblxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+XG4gICAgICAgICAgICgqIGlnbm9yZSBpZiBtaXNzaW5nIGZpbGUgKilcbiAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb2RlbWlycm9yLmNvbW1hbmRzIyMuc2F2ZSA6PVxuICAgICAgZnVuIF8gLT4gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmV4cG9ydF9jdXJyZW50X2ZpbGUgKClcbiAgaW5cbiAgbGV0IHRpbWVvdXQgOiBEb21faHRtbC50aW1lb3V0X2lkIG9wdGlvbiByZWYgPSByZWYgTm9uZSBpblxuICBsZXQgaGFuZGxlciBjb2RlbWlycm9yIGNoYW5nZSA9XG4gICAgbGV0ICgpID0gU3RhdGVfZmlsZS5vdXRfb2Zfc3luYyB0cnVlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoICF0aW1lb3V0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHRpbWVvdXQgLT4gRG9tX2h0bWwud2luZG93IyNjbGVhclRpbWVvdXQgdGltZW91dFxuICAgIGluXG4gICAgbGV0IGRlbGF5IDogZmxvYXQgPVxuICAgICAgaWYgKEpzLnN0cl9hcnJheSBjaGFuZ2UjIy50ZXh0KSMjLmxlbmd0aCA+IDEgfHwgU3RhdGVfZXJyb3IuaGFzX2Vycm9ycyAoKVxuICAgICAgdGhlblxuICAgICAgICAxLjAgKi4gMTAwMC4wXG4gICAgICBlbHNlXG4gICAgICAgIDUuMCAqLiAxMDAwLjBcbiAgICBpblxuICAgIGxldCBoYW5kbGVfdGltZW91dCAoKSA9XG4gICAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIGZhbHNlIGluXG4gICAgICBtYXRjaCBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGZpbGVuYW1lIC0+XG4gICAgICAgIFN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLnNldF9jb250ZW50IH5maWxlbmFtZVxuICAgICAgICAgIH5maWxlY29udGVudDooSnMudG9fc3RyaW5nIGNvZGVtaXJyb3IjI2dldFZhbHVlKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHRpbWVvdXQgOj1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChEb21faHRtbC53aW5kb3cjI3NldFRpbWVvdXRcbiAgICAgICAgICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gaGFuZGxlX3RpbWVvdXQgKCkpKVxuICAgICAgICAgICAgIGRlbGF5KVxuICAgIGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjb25DaGFuZ2UgaGFuZGxlciBpblxuICBsZXQgKCkgPVxuICAgIGNvZGVtaXJyb3IjI29uQ3Vyc29yQWN0aXZpdHkgKGZ1biBfY29kZW1pcnJvciAtPlxuICAgICAgICBsZXQgcG9zID0gY29kZW1pcnJvciMjZ2V0Q3Vyc29yIGluXG4gICAgICAgIGxldCBsaW5lID0gcG9zIyMubGluZSBpblxuICAgICAgICBsZXQgY2ggPSBwb3MjIy5jaCBpblxuICAgICAgICBTdGF0ZV9maWxlLmN1cnNvcl9hY3Rpdml0eSB+bGluZSB+Y2gpXG4gIGluXG4gIGxldCB0b2dnbGVfYnV0dG9uX2RvbSA6IERvbV9odG1sLmxpbmtFbGVtZW50IEpzLnQgPVxuICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgIChKcy5PcHQuZ2V0XG4gICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIHRvZ2dsZV9idXR0b25faWQpKVxuICAgICAgICAgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIHRvZ2dsZV9idXR0b25fZG9tIyMub25jbGlja1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgZWRpdG9yX2Z1bGwgPSBSZWFjdC5TLnZhbHVlIGVkaXRvcl9mdWxsIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNldF9lZGl0b3JfZnVsbCAobm90IGVkaXRvcl9mdWxsKSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBkb250X2djX21lX3NpZ25hbHMgOj1cbiAgICAgIFsgUmVhY3QuUy5tYXAgKGZ1biBfIC0+IGNvZGVtaXJyb3IjI3BlcmZvcm1MaW50KSBTdGF0ZV9lcnJvci5lcnJvcnMgXVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX2ZpbGUucmVnaXN0ZXJfcmVmcmVzaF9maWxlX2hvb2sgKGZ1biByZWZyZXNoIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF9maWxlbmFtZSAoU29tZSByZWZyZXNoLlN0YXRlX2ZpbGUuZmlsZW5hbWUpIGluXG4gICAgICAgIGxldCBjYW5kID0gSnMuc3RyaW5nIHJlZnJlc2guU3RhdGVfZmlsZS5jb250ZW50IGluXG4gICAgICAgIGlmIGNhbmQgPD4gY29kZW1pcnJvciMjZ2V0VmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgY2FuZCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBtYXRjaCByZWZyZXNoLlN0YXRlX2ZpbGUubGluZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBsaW5lIC0+IGp1bXBfdG9fbGluZSBjb2RlbWlycm9yIGxpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgICkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbW92ZV9jdXJzb3JfaG9vayA6PVxuICAgICAgU29tZVxuICAgICAgICAoZnVuIHBvcyAtPlxuICAgICAgICAgIGlmIFNvbWUgcG9zLkxvYy5maWxlID0gUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB0aGVuIChcbiAgICAgICAgICAgIGxldCBiZWcgPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChiZWcuTG9jLmxpbmUgLSAxKSBiZWcuTG9jLmNoclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlbiA9IHBvcy5Mb2MuZnJvbV9wb3NpdGlvbiBpblxuICAgICAgICAgICAgbGV0IGxhc3QgPVxuICAgICAgICAgICAgICBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiAoZW4uTG9jLmxpbmUgLSAxKSBlbi5Mb2MuY2hyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgY29kZW1pcnJvciMjc2V0U2VsZWN0aW9uIGZpcnN0IGxhc3RcbiAgICAgICAgICApKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJpbnRfc3RyaW5nIHMgbGlzdCA9IEh0bWwudHh0IHMgOjogbGlzdFxubGV0IHByaW50X25ld2xpbmUgbGlzdCA9IHByaW50X3N0cmluZyBcIlxcblwiIGxpc3RcblxubGV0IHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpIGxpc3QgPVxuICBsZXQgb3Blbl9yYW5nZSwgaW5mID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5taW51c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBhXG4gIGluXG4gIGxldCBjbG9zZV9yYW5nZSwgc3VwID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEucGx1c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBiIC0+IFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYlxuICBpblxuICBwcmludF9zdHJpbmcgb3Blbl9yYW5nZVxuICAgIChwcmludF9zdHJpbmcgaW5mXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgICAgKHByaW50X3N0cmluZyBzdXAgKHByaW50X3N0cmluZyBjbG9zZV9yYW5nZSBsaXN0KSkpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9zdGF0ZSAoYSwgYikgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpdGUgc2l0ZSBsaXN0ID1cbiAgbGV0IHNpdGVfbmFtZSwgcHJvcF9vcHQsIGJpbmRpbmdfb3B0LCBjb3VudGVyX29wdCA9IHNpdGUgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGJpbmRpbmdfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuRnJlZSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuZnJlZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLldpbGRjYXJkIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS53aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkJvdW5kX3RvX3Vua25vd24gLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2xcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBQdWJsaWNfZGF0YS5iaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgaW5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlXG4gICAgICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgICAgIH5zaXRlX25hbWUgKCkpXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIGkpIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSAoc3RyaW5nX29mX2ludCBpKSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBjb3VudGVyX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9jb3VudGVyX3N0YXRlIGEgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggcHJvcF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdFxuICBpblxuICBwcmludF9zdHJpbmcgc2l0ZV9uYW1lIGxpc3RcblxubGV0IHByaW50X2FnZW50IGFnZW50IGxpc3QgPVxuICBsZXQgYWdlbnRfbmFtZSwgaW50ZXJmYWNlID0gYWdlbnQgaW5cbiAgbGV0IGxpc3QgPSBwcmludF9zdHJpbmcgXCIpXCIgbGlzdCBpblxuICBsZXQgbGlzdCA9XG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKGIsIGxpc3QpIHNpdGUgLT5cbiAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBsaXN0ID0gcHJpbnRfc2l0ZSBzaXRlIGxpc3QgaW5cbiAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgIChmYWxzZSwgbGlzdCkgaW50ZXJmYWNlKVxuICBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IFwiKFwiIDo6IGxpc3QgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBhZ2VudF9uYW1lIDo6IGxpc3QgaW5cbiAgbGlzdFxuXG5sZXQgcHJpbnRfc2l0ZV9ncmFwaCBhZ2VudF9saXN0IGxpc3QgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChiLCBsaXN0KSBhZ2VudCAtPlxuICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGlzdFxuICAgICAgICAgaW5cbiAgICAgICAgIHRydWUsIHByaW50X2FnZW50IGFnZW50IGxpc3QpXG4gICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgYWdlbnRfbGlzdCkpXG5cbmxldCBwcmludF9tZXRob2RfaGFuZGxlciBtaCA9XG4gIGxldCB1bmNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBIdG1sLnBcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfY2F1Z2h0IHgpO1xuICAgICAgICBdXG4gICAgICA6OiBsKVxuICAgIGNhdWdodFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpO1xuICAgICAgICAgICBdKVxuICAgICAgIHVuY2F1Z2h0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbigqIHRvZG8gYWRkIGJ1dHRvbiB0byBzd2l0Y2ggb24vb2ZmIHRoZSBkaXNwbGF5IG9mIHRoZSBpbmZvcm1hdGlvbiBvZiBlYWNoIGFic3RyYWN0IGRvbWFpblxuICAgbGV0IG5vbl9yZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCByZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCBzaXRlX2FjY3Jvc3MgPSByZWYgdHJ1ZVxuICAgbGV0IHBhcmFsbGVsX2JvbmQgPSByZWYgdHJ1ZVxuKilcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgY29uc3RyYWludHNfZGl2ID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9jb25zdHJhaW50c19saXN0XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGNvbnN0cmFpbnRzIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFuZWxzIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKm1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHBhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+KilcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxlbW1hIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoeXAgPSBQdWJsaWNfZGF0YS5nZXRfaHlwIGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jbHVzaW9uID0gUHVibGljX2RhdGEuZ2V0X3JlZmluZW1lbnQgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbmNsdXNpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyBzaXRlX2dyYXBoIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBzaXRlX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiIF1cIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGJvb2wsIGxpc3QpIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgdiBcIiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggYSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBjb25jbHVzaW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiWyBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgID0+ICBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGh5cCBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSAoTGlzdC5yZXYgYilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgYSBdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgICAgICA6OiBwYW5lbHMpXG4gICAgICAgICAgICAgICAgICBbXSBjb25zdHJhaW50cylcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiS2FTYSBoYXMgZmFpbGVkXCIgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kYW5nZXJcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIG91dCBdKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIGNvbnN0cmFpbnRzX2Rpdik7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGNvbnRhY3RfbWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfY29udGFjdF9tYXAgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogY29udGFjdF9tYXAgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJDb250YWN0TWFwXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG50eXBlIGhhbmRsZXIgPSB7IHN1ZmZpeDogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBleHBvcnQ6IHN0cmluZyAtPiB1bml0IH1cblxudHlwZSBjb25maWd1cmF0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBoYW5kbGVyczogaGFuZGxlciBsaXN0O1xuICBzaG93OiBib29sIFJlYWN0LnNpZ25hbDtcbn1cblxubGV0IGV4cG9ydF9mb3JtYXRfaWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX3NlbGVjdFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9maWxlbmFtZV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZmlsZW5hbWVcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfYnV0dG9uX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19idXR0b25cIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZGF0YV9sYWJlbCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfbGFiZWxcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZm9ybV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZm9ybVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgPVxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgXVxuICAgICAgKClcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2J1dHRvbl9pZCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXAgbm90IGNvbmZpZ3VyYXRpb24uc2hvdyk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImV4cG9ydFwiIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXRzX3NlbGVjdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gaGFuZGxlciAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBoYW5kbGVyLmxhYmVsIHt8XCI+fH0gKEh0bWwuY2RhdGEgaGFuZGxlci5sYWJlbClcbiAgICAgICAgICAgIHt8PC9vcHRpb24+fH1dKVxuICAgICAgY29uZmlndXJhdGlvbi5oYW5kbGVyc1xuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH1cbiAgICAgIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fFwiPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9mb3JtYXRzX3NlbGVjdFxuICAgICAge3xcbiAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgPGxhYmVsIGZvcj18fVxuICAgICAgKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKVxuICAgICAge3w+PC9sYWJlbD5cbiAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9maWxlbmFtZSBdXG4gICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XVxuICBAIFsgZXhwb3J0X2J1dHRvbiBdXG5cbmxldCBjb250ZW50IGNvbmZpZ3VyYXRpb24gPVxuICBIdG1sLmZvcm1cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZm9ybV9pZCBjb25maWd1cmF0aW9uKTsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWlubGluZVwiIF07XG4gICAgICBdXG4gICAgKGlubGluZV9jb250ZW50IGNvbmZpZ3VyYXRpb24pXG5cbmxldCBvbmxvYWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfYnV0dG9uIDogRG9tX2h0bWwuYnV0dG9uRWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0IDogRG9tX2h0bWwuc2VsZWN0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSA6IHVuaXQgPVxuICAgIGxldCBpc19kaXNhYmxlZCA6IGJvb2wgSnMudCA9XG4gICAgICBKcy5ib29sXG4gICAgICAgICgobm90IChSZWFjdC5TLnZhbHVlIGNvbmZpZ3VyYXRpb24uc2hvdykpXG4gICAgICAgIHx8IGV4cG9ydF9maWxlbmFtZSMjLnZhbHVlIyN0cmltIyMubGVuZ3RoID0gMClcbiAgICBpblxuICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b24jIy5kaXNhYmxlZCA6PSBpc19kaXNhYmxlZCBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gIGxldCAoKSA9XG4gICAgZXhwb3J0X2ZpbGVuYW1lIyMub25pbnB1dCA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfYnV0dG9uIyMub25jbGljayA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgaGFuZGxlciA6IGhhbmRsZXIgPVxuICAgICAgICAgICAgTGlzdC5udGggY29uZmlndXJhdGlvbi5oYW5kbGVycyBleHBvcnRfZm9ybWF0IyMuc2VsZWN0ZWRJbmRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpbGVuYW1lIGRlZmF1bHQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IHJvb3QgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUgaW5cbiAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyByb290ICcuJyB0aGVuXG4gICAgICAgICAgICAgIHJvb3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcm9vdCBeIFwiLlwiIF4gZGVmYXVsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaGFuZGxlci5leHBvcnQgKGZpbGVuYW1lIGhhbmRsZXIuc3VmZml4KSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IGV4cG9ydF9zdmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInN2Z1wiO1xuICAgIGxhYmVsID0gXCJzdmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFNWRyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfcG5nID9zdmdfc3R5bGVfaWQgfihzdmdfZGl2X2lkIDogc3RyaW5nKSAoKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJwbmdcIjtcbiAgICBsYWJlbCA9IFwicG5nXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgQ29tbW9uLnBsb3RQTkcgP3Bsb3RTdHlsZUlkOnN2Z19zdHlsZV9pZCBzdmdfZGl2X2lkIGZpbGVuYW1lIGZpbGVuYW1lKTtcbiAgfVxuXG5sZXQgZXhwb3J0X2pzb24gfihzZXJpYWxpemVfanNvbiA6IHVuaXQgLT4gc3RyaW5nKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJqc29uXCI7XG4gICAgbGFiZWwgPSBcImpzb25cIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoc2VyaWFsaXplX2pzb24gKCkpIGluXG4gICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZGlzcGxheV9pZCA9IFwiY29udGFjdC1tYXAtZGlzcGxheVwiXG5sZXQgZXhwb3J0X2lkID0gXCJjb250YWN0LWV4cG9ydFwiXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIHRydWVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiB0cnVlXG5sZXQgYWNjdXJhY3ksIHNldF9hY2N1cmFjeSA9IFJlYWN0LlMuY3JlYXRlIChTb21lIFB1YmxpY19kYXRhLkxvdylcblxubGV0IGV4dHJhY3RfY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcImFjY3VyYWN5XCIsIGFjYyk7IChcIm1hcFwiLCBjb250YWN0KSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJtYXBcIiwgY29udGFjdCk7IChcImFjY3VyYWN5XCIsIGFjYykgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgXyAtPiBmYWlsd2l0aCBcIldyb25nIHVnbHkgY29udGFjdF9tYXAgZXh0cmFjdG9yXCJcblxubGV0IGNvbnRhY3RfbWFwX2pzIDogSnNfY29udGFjdC5jb250YWN0X21hcCBKcy50ID1cbiAgSnNfY29udGFjdC5jcmVhdGVfY29udGFjdF9tYXAgZGlzcGxheV9pZCBTdGF0ZV9zZXR0aW5ncy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgY29udGFjdF9tYXBfdGV4dCA6IHN0cmluZyBSZWFjdC5zaWduYWwgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIE5vbmUgYWNjdXJhY3kgXCJudWxsXCJcbiAgICAoZnVuXG4gICAgICAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKVxuICAgICAgKGFjYyA6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbilcbiAgICAtPlxuICAgICAgbWFuYWdlciNnZXRfY29udGFjdF9tYXAgYWNjXG4gICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfZXJyb3IuYWRkX2Vycm9yIFwidGFiX2NvbnRhY3RfbWFwXCIgbWggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICBcIm51bGxcIilcbiAgICAgICAgICAgIH5vazooZnVuIGNvbnRhY3RfanNvbiAtPlxuICAgICAgICAgICAgICBsZXQgXywgbWFwX2pzb24gPSBleHRyYWN0X2NvbnRhY3RfbWFwIGNvbnRhY3RfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFlvanNvbi5CYXNpYy50b19zdHJpbmcgbWFwX2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI3NldERhdGEgKEpzLnN0cmluZyBkYXRhKSBpblxuICAgICAgICAgICAgICBkYXRhKSlcblxubGV0IGNvbmZpZ3VyYXRpb24gOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IGV4cG9ydF9pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBSZWFjdC5TLnZhbHVlIGNvbnRhY3RfbWFwX3RleHQpO1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImNvbnRhY3RfbWFwLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgUmVhY3QuUy52YWx1ZSBhY2N1cmFjeSA9IFNvbWUgeCB0aGVuXG4gICAgICAgICAgICAgSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkgXSlcbiAgICAgIChIdG1sLnR4dCAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpKVxuICBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgYWNjdXJhY3lfY2hvb3Nlcl9pZCBdXG4gICAgKExpc3QubWFwIG9wdGlvbl9nZW4gUHVibGljX2RhdGEuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBhY2N1cmFjeV9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBcImNvbnRhY3RfbWFwX2FjY3VyYWN5X2Zvcm1cIjtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIFtcbiAgICBhY2N1cmFjeV9mb3JtO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9pZCBkaXNwbGF5X2lkOyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBjb25maWd1cmF0aW9uO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBjb25maWd1cmF0aW9uIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjY3VyYWN5IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgdmEpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBjb250YWN0X21hcF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGdyYXBoX2xvZ2dlciA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9ncmFwaF9sb2dnZXIgKGlkIDogc3RyaW5nKSAob25fY2xpY2sgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSA6XG4gICAgZ3JhcGhfbG9nZ2VyIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiR3JhcGhMb2dnZXJcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IG9uX2NsaWNrIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIG1vZGVsX2dyYXBoID0geyBmd2Q6IGludCBvcHRpb247IGJ3ZDogaW50IG9wdGlvbjsgdG90YWw6IGludCB9XG5cbnR5cGUgaW5mbHVlbmNlX3NwaGVyZSA9IHtcbiAgcG9zaXRpdmVfb246XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfb246XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgcG9zaXRpdmVfYnk6XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfYnk6XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbn1cblxubGV0IGVtcHR5X3NwaGVyZSA9XG4gIHsgcG9zaXRpdmVfb24gPSBbXTsgcG9zaXRpdmVfYnkgPSBbXTsgbmVnYXRpdmVfb24gPSBbXTsgbmVnYXRpdmVfYnkgPSBbXSB9XG5cbnR5cGUgbW9kZWxfcmVuZGVyaW5nID0gRHJhd0dyYXBoIG9mIG1vZGVsX2dyYXBoIHwgRHJhd1RhYnVsYXIgb2YgdW5pdFxuXG50eXBlIG1vZGVsID0ge1xuICByZW5kZXJpbmc6IG1vZGVsX3JlbmRlcmluZztcbiAgYWNjdXJhY3k6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbjtcbiAgb3JpZ2luOiAoaW50LCBpbnQpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvbjtcbiAgb3JpZ2luX2xhYmVsOiBzdHJpbmcgb3B0aW9uO1xufVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCB0cmFja19jdXJzb3IsIHNldF90cmFja19jdXJzb3IgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgcmVuZGVyaW5nID0gRHJhd1RhYnVsYXIgKCk7XG4gICAgYWNjdXJhY3kgPSBTb21lIFB1YmxpY19kYXRhLkxvdztcbiAgICBvcmlnaW4gPSBOb25lO1xuICAgIG9yaWdpbl9sYWJlbCA9IE5vbmU7XG4gIH1cblxubGV0IG1vZGVsLCBzZXRfbW9kZWwgPSBSZWFjdC5TLmNyZWF0ZSBkdW1teV9tb2RlbFxubGV0IHRvdGFsX2lucHV0X2lkID0gXCJ0b3RhbF9pbnB1dFwiXG5sZXQgZndkX2lucHV0X2lkID0gXCJmd2RfaW5wdXRcIlxubGV0IGJ3ZF9pbnB1dF9pZCA9IFwiYndkX2lucHV0XCJcblxubGV0IGluZmx1ZW5jZV9ub2RlX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT5cbiAgICBpZiByLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPSBcIlwiIHRoZW5cbiAgICAgIHIuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICBlbHNlXG4gICAgICByLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWxcbiAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgIGlmIHIuUHVibGljX2RhdGEudmFyX2xhYmVsID0gXCJcIiB0aGVuXG4gICAgICByLlB1YmxpY19kYXRhLnZhcl9hc3RcbiAgICBlbHNlXG4gICAgICByLlB1YmxpY19kYXRhLnZhcl9sYWJlbFxuXG5sZXQgdXBkYXRlX21vZGVsX2dyYXBoIGYgPVxuICBsZXQgbSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggbS5yZW5kZXJpbmcgd2l0aFxuICB8IERyYXdUYWJ1bGFyIF8gLT4gKClcbiAgfCBEcmF3R3JhcGggZyAtPiBzZXRfbW9kZWwgeyBtIHdpdGggcmVuZGVyaW5nID0gRHJhd0dyYXBoIChmIGcpIH1cblxubGV0IHVwZGF0ZV9tb2RlbCBmID0gc2V0X21vZGVsIChmIChSZWFjdC5TLnZhbHVlIG1vZGVsKSlcbmxldCBkaXNwbGF5X2lkID0gXCJpbmZsdWVuY2VfbWFwX2Rpc3BsYXlcIlxuXG5sZXQgaW5mbHVlbmNlbWFwID1cbiAgSnNfZ3JhcGhsb2dnZXIuY3JlYXRlX2dyYXBoX2xvZ2dlciBkaXNwbGF5X2lkIChmdW4geCAtPlxuICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIChKcy50b19zdHJpbmcgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgU3VicGFuZWxfZWRpdG9yLnNldF9tb3ZlX2N1cnNvclxuICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9yaWdpbiA9IFNvbWUgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG5vZGUpIGluXG4gICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpXG5cbmxldCB0b3RhbF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHRvdGFsX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfdmFsdWUgXCIxXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZndkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZndkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGJ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGJ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBuZXh0X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIk5leHRcIiBdXG5cbmxldCBwcmV2X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlByZXZpb3VzXCIgXVxuXG5sZXQgcmVjZW50ZXIgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlJlc2V0XCIgXVxuXG5sZXQgdHJhY2tfY3Vyc29yX3N3aXRjaCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHRjIC0+XG4gICAgICAgICAgICAgICBcImZvcm0tY29udHJvbFwiIDo6IFwiYnRuXCIgOjogXCJidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgKGlmIHRjIHRoZW5cbiAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgW10pKVxuICAgICAgICAgICAgIHRyYWNrX2N1cnNvcik7XG4gICAgICAgIEh0bWwuYV9vbmNsaWNrIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gc2V0X3RyYWNrX2N1cnNvciAobm90IChSZWFjdC5TLnZhbHVlIHRyYWNrX2N1cnNvcikpIGluXG4gICAgICAgICAgICB0cnVlKTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiVHJhY2sgY3Vyc29yXCIgXVxuXG5sZXQgZXhwb3J0X2NvbmZpZyA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gXCJpbmZsdWVuY2UtZXhwb3J0XCI7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgICAgIEx3dC5pZ25vcmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgKCBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9leHBvcnRcIlxuICAgICAgICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIGluZmx1ZW5jZXNfc3RyaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyBpbmZsdWVuY2VzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0ICkpO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IHJlbmRlcmluZ19jaG9vc2VyX2lkID0gXCJpbmZsdWVuY2UtcmVuZGVyaW5nXCJcblxubGV0IHJlbmRlcmluZ19jaG9vc2VyID1cbiAgbGV0IHsgcmVuZGVyaW5nOyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCByZW5kZXJpbmdfY2hvb3Nlcl9pZCBdXG4gICAgW1xuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBsKVxuICAgICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIFwidGFidWxhclwiIF0pXG4gICAgICAgIChIdG1sLnR4dCBcIlRhYnVsYXJcIik7XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJncmFwaFwiIF0pXG4gICAgICAgIChIdG1sLnR4dCBcIkdyYXBoXCIpO1xuICAgIF1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImluZmx1ZW5jZS1hY2N1cmFjeVwiXG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyID1cbiAgbGV0IHsgYWNjdXJhY3k7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbGV0IG9wdGlvbl9nZW4geCA9XG4gICAgSHRtbC5vcHRpb25cbiAgICAgIH5hOlxuICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgIGlmIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscylcblxubGV0IGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgPVxuICBtYXRjaCBvcmlnaW5fc2hvcnRfb3B0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIG5vZGUgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IHIuUHVibGljX2RhdGEucnVsZV9pZCA9IDBcbiAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGZhbHNlKVxuICB8IFNvbWUgb3JpZ2luIC0+XG4gICAgKG1hdGNoIG9yaWdpbiwgbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIGlkLCBQdWJsaWNfZGF0YS5SdWxlIGEgLT4gYS5QdWJsaWNfZGF0YS5ydWxlX2lkID0gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCwgUHVibGljX2RhdGEuVmFyIGEgLT4gYS5QdWJsaWNfZGF0YS52YXJfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8sIFB1YmxpY19kYXRhLlJ1bGUgX1xuICAgIHwgUHVibGljX2RhdGEuUnVsZSBfLCBQdWJsaWNfZGF0YS5WYXIgXyAtPlxuICAgICAgZmFsc2UpXG5cbmxldCBqc29uX3RvX2dyYXBoIGxvZ2dlciAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBvcmlnaW5fc2hvcnRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfcHJlYW1ibGUgbG9nZ2VyIFwiXCIgaW5cbiAgbGV0IG5vZGVzID0gaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2RlcyBpblxuICBsZXQgZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgPVxuICAgIGxldCBqc29uID0gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIG5vZGUgaW5cbiAgICBsZXQgbGFiZWwgPSBpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlIGluXG4gICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb24gaW5cbiAgICAgIGxldCBjb250ZXh0dWFsX2hlbHAgPSBMb2MudG9fc3RyaW5nIHBvcyBeIFwiIFwiIF4gci5QdWJsaWNfZGF0YS5ydWxlX2FzdCBpblxuICAgICAgbGV0IGZpbGxjb2xvciA9XG4gICAgICAgIGlmIGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgdGhlblxuICAgICAgICAgICFDb25maWcuY2VudGVyX2NvbG9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhQ29uZmlnLnJ1bGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICAgIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnZhcl9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gci5QdWJsaWNfZGF0YS52YXJfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcudmFyaWFibGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnZhcmlhYmxlX3NoYXBlO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIFsgcG9zIF07XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIGNvbnRleHR1YWxfaGVscDtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG1heF9ydWxlX2lkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBiaWdnZXN0X2lkIG4gLT5cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IG1heCBiaWdnZXN0X2lkICgxICsgci5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGJpZ2dlc3RfaWQpXG4gICAgICAoLTEpIG5vZGVzXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZV9pZCBub2RlX2lkID1cbiAgICBtYXRjaCBub2RlX2lkIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQgLT4gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCAtPiBpZCArIG1heF9ydWxlX2lkXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZSBub2RlID1cbiAgICBnZXRfaWRfb2Zfbm9kZV9pZCAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gbm9kZSAtPlxuICAgICAgICBsZXQgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNfb2Zfbm9kZSBub2RlIGluXG4gICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXIgfmRpcmVjdGl2ZXNcbiAgICAgICAgICAoc3RyaW5nX29mX2ludCAoZ2V0X2lkX29mX25vZGUgbm9kZSkpKVxuICAgICAgbm9kZXNcbiAgaW5cbiAgbGV0IHByaW50X21hcHMgPyhkaXJlY3RpdmVzID0gW10pIGxvZ2dlciBtYXAgPVxuICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgKGZ1biBzb3VyY2UgbWFwIC0+XG4gICAgICAgIGxldCBzb3VyY2VfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCBzb3VyY2UpIGluXG4gICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgICAgIChmdW4gdGFyZ2V0IGxhYmVsX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCB0YXJnZXRfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCB0YXJnZXQpIGluXG4gICAgICAgICAgICAoKmxldCBsYWJlbF9zdHJpbmcgPSBcInRvZG9cIlxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBsZXQgbGFiZWxfc3RyaW5nID0gUHVibGljX2RhdGEuc3RyaW5nX29mX2xhYmVsX2xpc3QgbGFiZWxfbGlzdCBpblxuICAgICAgICAgICAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBsYWJlbF9zdHJpbmcgOjogZGlyZWN0aXZlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXMgc291cmNlX2lkIHRhcmdldF9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIG1hcClcbiAgICAgIG1hcFxuICBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy53YWtlX3VwX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcud2FrZV91cF9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgaW5cbiAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgIFtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgXVxuICBpblxuICBsZXQgKCkgPSBwcmludF9tYXBzIH5kaXJlY3RpdmVzIGxvZ2dlciBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfZm9vdCBsb2dnZXIgaW5cbiAgKClcblxubGV0IHRhYmxlX29mX2luZmx1ZW5jZXNfanNvbiAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBuYW1lciA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5hZGRcbiAgICAgICAgICAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgZSlcbiAgICAgICAgICBlIGFjYylcbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZW1wdHkgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2Rlc1xuICBpblxuICBsZXQgb3JpZ2luX2lkX29wdCA9XG4gICAgT3B0aW9uX3V0aWwubWFwIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG9yaWdpblxuICBpblxuICBtYXRjaCBvcmlnaW5faWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5X3NwaGVyZVxuICB8IFNvbWUgb3JpZ2luX2lkIC0+XG4gICAgbGV0IHBvc2l0aXZlX29uLCBwb3NpdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIGxldCBuZWdhdGl2ZV9vbiwgbmVnYXRpdmVfYnkgPVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkIChmdW4gZHN0IGRhdGEgKChvbiwgYnkpIGFzIGFjYykgLT5cbiAgICAgICAgICAgICAgaWYgc3JjID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gZHN0IG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKHYsIGRhdGEpIDo6IG9uLCBieVxuICAgICAgICAgICAgICApIGVsc2UgaWYgZHN0ID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gc3JjIG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gb24sICh2LCBkYXRhKSA6OiBieVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpKVxuICAgICAgICBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIChbXSwgW10pXG4gICAgaW5cbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH1cblxubGV0IHBvcF9jZWxsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBIdG1sLnRkIFtdLCBbXVxuICB8ICgobm9kZSwgX21hcHBpbmdzKSwgcG9zaXRpdmUpIDo6IHQgLT5cbiAgICAoIEh0bWwudGRcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX29uY2xpY2sgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIFN1YnBhbmVsX2VkaXRvci5zZXRfbW92ZV9jdXJzb3JcbiAgICAgICAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgU29tZSAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnVlKTtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKGlmIHBvc2l0aXZlIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJkYW5nZXJcIik7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXVxuICAgICAgICBbIEh0bWwuY2RhdGEgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIF0sXG4gICAgICB0IClcblxubGV0IHJlYyBmaWxsX3RhYmxlIGFjYyBieSBvbiA9XG4gIGlmIG9uID0gW10gJiYgYnkgPSBbXSB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgKFxuICAgIGxldCBiLCBieScgPSBwb3BfY2VsbCBieSBpblxuICAgIGxldCBvLCBvbicgPSBwb3BfY2VsbCBvbiBpblxuICAgIGxldCBsaW5lID0gSHRtbC50ciBbIGI7IG8gXSBpblxuICAgIGZpbGxfdGFibGUgKGxpbmUgOjogYWNjKSBieScgb24nXG4gIClcblxubGV0IGRyYXdfdGFibGUgb3JpZ2luX2xhYmVsXG4gICAgeyBwb3NpdGl2ZV9vbjsgcG9zaXRpdmVfYnk7IG5lZ2F0aXZlX29uOyBuZWdhdGl2ZV9ieSB9ID1cbiAgbGV0IGJ5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgIG5lZ2F0aXZlX2J5XG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9ieSlcbiAgaW5cbiAgbGV0IG9uID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgIG5lZ2F0aXZlX29uXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9vbilcbiAgaW5cbiAgbGV0IG91dHMgPSBmaWxsX3RhYmxlIFtdIGJ5IG9uIGluXG4gIEh0bWwudGFibGV4XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInRhYmxlXCIgXSBdXG4gICAgfnRoZWFkOlxuICAgICAgKEh0bWwudGhlYWRcbiAgICAgICAgIFtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudGhcbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY29sc3BhbiAyIF1cbiAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIChPcHRpb25fdXRpbC51bnNvbWUgXCJvcmlnaW5cIiBvcmlnaW5fbGFiZWwpIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaXMgaW5mbHVlbmNlZCBieVwiIF07XG4gICAgICAgICAgICAgICBIdG1sLnRoIFsgSHRtbC5jZGF0YSBcImluZmx1ZW5jZXNcIiBdO1xuICAgICAgICAgICAgIF07XG4gICAgICAgICBdKVxuICAgIFsgSHRtbC50Ym9keSBvdXRzIF1cblxubGV0IGluZmx1ZW5jZV9zcGhlcmUgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIGR1bW15X21vZGVsIG1vZGVsXG4gICAgKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSlcbiAgICAoZnVuIG1hbmFnZXIgeyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2Q6Tm9uZSA/YndkOk5vbmUgP29yaWdpbiB+dG90YWw6MVxuICAgICAgICAgIGFjY3VyYWN5XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uXG4gICAgICB8IERyYXdHcmFwaCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSkpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgcmVuZGVyaW5nX2Nob29zZXJfaWQ7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiUmVuZGVyaW5nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTRcIiBdIF0gWyByZW5kZXJpbmdfY2hvb3NlciBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtM1wiIF07IEh0bWwuYV9sYWJlbF9mb3IgdG90YWxfaW5wdXRfaWQgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmF2aWdhdGVcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHByZXZfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIG5leHRfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHJlY2VudGVyIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdHJhY2tfY3Vyc29yX3N3aXRjaCBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBncmFwaF9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXSBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJTaXplIFJhZGl1c1wiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdG90YWxfaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwubGFiZWwgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xXCIgXSBdIFsgSHRtbC50eHQgXCJmd2RcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIGZ3ZF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBIdG1sLnR4dCBcImJ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYndkX2lucHV0IF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IF8gfSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IFsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBbXSlcbiAgICAgICAgICAgICAgIG1vZGVsKTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9oaWRkZW4gKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IF8gfSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgbW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIGdyYXBoX2Zvcm07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdIFtdO1xuICAgICAgXTtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgKFJlYWN0LlMubDJcbiAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IG9yaWdpbl9sYWJlbDsgXyB9IHNwaGVyZSAtPlxuICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IFtdXG4gICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgKCkgLT5cbiAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5mb2xkIHNwaGVyZVxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gc3BoZXJlIC0+IFsgZHJhd190YWJsZSBvcmlnaW5fbGFiZWwgc3BoZXJlIF0pXG4gICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yKSlcbiAgICAgICAgICAgIG1vZGVsIGluZmx1ZW5jZV9zcGhlcmUpKTtcbiAgICBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgZXhwb3J0X2NvbmZpZztcbiAgXVxuXG5sZXQgbmVpdGhlcl9nY19tZSA9XG4gIFJlYWN0LlMubDJcbiAgICAoZnVuIF8geyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHwgRHJhd0dyYXBoIHsgZndkOyBid2Q7IHRvdGFsIH0gLT5cbiAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJpbmZsdWVuY2VfbWFwXCJcbiAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5XG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mbHVlbmNlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1vZGU6TG9nZ2Vycy5Kc19HcmFwaCBmbXRcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlcl9ncmFwaCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ganNvbl90b19ncmFwaCBsb2dnZXJfZ3JhcGggaW5mbHVlbmNlcyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXJfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoX2pzb24gPSBHcmFwaF9qc29uLnRvX2pzb24gZ3JhcGggaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2VfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZW1hcCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyBncmFwaF9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluZmx1ZW5jZW1hcCMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIGUpKSkpXG4gICAgKFJlYWN0LlMub24gfmVxOlN0YXRlX3Byb2plY3QubW9kZWxfZXF1YWwgdGFiX2lzX2FjdGl2ZVxuICAgICAgIFN0YXRlX3Byb2plY3QuZHVtbXlfbW9kZWwgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgICBtb2RlbFxuXG5sZXQgbm9yX2djX21lID1cbiAgU3RhdGVfZmlsZS53aXRoX2N1cnJlbnRfcG9zXG4gICAgfm9uOihSZWFjdC5TLkJvb2wuKCAmJiApIHRhYl9pc19hY3RpdmUgdHJhY2tfY3Vyc29yKVxuICAgIChmdW4gZmlsZW5hbWUgY3Vyc29yX3BvcyAtPlxuICAgICAgU29tZVxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBjdXJzb3JfcG9zXG4gICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbicgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW4gPSBvcmlnaW4nOyBvcmlnaW5fbGFiZWwgPSBOb25lIH0pKSkpKVxuICAgIChMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5sZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gZG9udF9nY19tZSA6PSBbIG5laXRoZXJfZ2NfbWU7IG5vcl9nY19tZSBdIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGV4cG9ydF9jb25maWcgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCByZW5kZXJpbmdfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBtIHdpdGhcbiAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgKGlmIEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlID0gXCJncmFwaFwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdHcmFwaCB7IGZ3ZCA9IE5vbmU7IGJ3ZCA9IE5vbmU7IHRvdGFsID0gMSB9XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd1RhYnVsYXIgKCkpO1xuICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBhY2N1cmFjeV9jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgYWNjdXJhY3kgPVxuICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X29mX3N0cmluZyAoSnMudG9fc3RyaW5nIHZhIyMudmFsdWUpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggYWNjdXJhY3kgfSkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB0b3RhbF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggdG90YWwgPSBpbnRfb2Zfc3RyaW5nIHZhIH0pXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZndkX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgZndkID1cbiAgICAgICAgICAgICAgIGlmIHZhID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgU29tZSAoaW50X29mX3N0cmluZyB2YSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggZndkIH0pIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGJ3ZF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgICAgICBpZiB2YSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFNvbWUgKGludF9vZl9zdHJpbmcgdmEpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIGJ3ZCB9KSBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gcmVjZW50ZXIpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfcmVjZW50ZXJcIlxuICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5pdGlhbF9ub2RlXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBuZXh0X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX25leHRfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9uZXh0X25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBwcmV2X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3ByZXZfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9wcmV2aW91c19ub2RlIG9yaWdpblxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luX3JlZmluZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW5mbHVlbmNlX25vZGVfbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmluZmx1ZW5jZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgc2l0ZSBhID0gWyBhLCBOb25lLCBTb21lIChQdWJsaWNfZGF0YS5Cb3VuZF90byAxKSwgTm9uZSBdXG5cbmxldCBwcmludF9lZGdlICgoYSwgYiksIChjLCBkKSkgbGlzdCA9XG4gIFV0aWxpdHkucHJpbnRfbmV3bGluZSAoVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIFsgYSwgc2l0ZSBiOyBjLCBzaXRlIGQgXSBsaXN0KVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBzY2MgPVxuICAgIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgKClcbiAgICAgIChSZWFjdC5TLmNvbnN0ICgpKSBbXSAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpICgpIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X3BvdGVudGlhbF9wb2x5bWVycyAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAgIChTb21lIFB1YmxpY19kYXRhLkhpZ2gpXG4gICAgICAgICgqVE9ETzogbWFrZSB0aGVzZSBvcHRpb25zIHR1bmFibGUgKilcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gKF8sIF8sIHNjYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2NjID0gTGlzdC5yZXZfbWFwIExpc3QucmV2IHNjYyBpblxuICAgICAgICAgICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgaWYgc2NjID0gW10gfHwgc2NjID0gWyBbXSBdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBzaXplIG9mIGJpb21vbGVjdWxhciBjb21wb3VuZHMgaXMgdW5pZm9ybWx5IGJvdW5kZWQuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxpc3RfZWRnZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoKGEsIGIpLCAoYywgZCkpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9lZGdlICgoYSwgYiksIChjLCBkKSkgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGxpc3RfZWRnZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSBzY2NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIGZvbGxvd2luZyBib25kcyBtYXkgZm9ybSBhcmJpdHJhcnkgbG9uZyBjaGFpbnMgb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHM6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgWyBIdG1sLnAgb3V0cHV0IF0pXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgbWgpKVxuICBpblxuICBbXG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIjsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc2NjKTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHJpZ2h0c3VicGFuZWxfaWQgOiBzdHJpbmcgPSBcInJpZ2h0c3VicGFuZWxcIlxuXG5sZXQgcmlnaHRzdWJwYW5lbCAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdWJwYW5lbF9lZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwiaGlkZGVuXCIgXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJoaWRkZW4teHNcIjsgXCJoaWRkZW4tc21cIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgXVxuICAgIFtcbiAgICAgIFVpX2NvbW1vbi5uYXZ0YWJzIFwic3VibmF2dGFiXCJcbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgTm9uZSwgVGFiX2NvbnRhY3RfbWFwLm5hdmxpICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBOb25lLCBUYWJfaW5mbHVlbmNlcy5uYXZsaSAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIE5vbmUsIFRhYl9jb25zdHJhaW50cy5uYXZsaSAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIE5vbmUsIFRhYl9wb2x5bWVycy5uYXZsaSAoKTtcbiAgICAgICAgXTtcbiAgICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpyaWdodHN1YnBhbmVsX2lkIFtdXG4gICAgICAgIFtcbiAgICAgICAgICBcImNvbnRhY3RfbWFwXCIsIFtdLCBUYWJfY29udGFjdF9tYXAuY29udGVudCAoKTtcbiAgICAgICAgICBcImluZmx1ZW5jZXNcIiwgW10sIFRhYl9pbmZsdWVuY2VzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJjb25zdHJhaW50c1wiLCBbXSwgVGFiX2NvbnN0cmFpbnRzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJwb2x5bWVyc1wiLCBbXSwgVGFiX3BvbHltZXJzLmNvbnRlbnQgKCk7XG4gICAgICAgIF07XG4gICAgXVxuXG4oKiogW2NoaWxkc19oaWRlIGJdIHRyaWdnZXJzIGNoYW5nZSB0aGUgc3RhdGUgb2YgY2hpbGQgdGFicyB0byBoaWRlIGlmIGIgaXMgVHJ1ZSwgb3IgZWxzZSB0byBzaG93ICopXG5sZXQgY2hpbGRzX2hpZGUgKGIgOiBib29sKSA6IHVuaXQgPVxuICBpZiBiIHRoZW4gKFxuICAgIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5wYXJlbnRfaGlkZSAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLnBhcmVudF9oaWRlICgpIGluXG4gICAgVGFiX3BvbHltZXJzLnBhcmVudF9oaWRlICgpXG4gICkgZWxzZSAoXG4gICAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBUYWJfcG9seW1lcnMucGFyZW50X3Nob3duICgpXG4gIClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgICAgKCogY2hpbGQgaGlkaW5nIHNldCBoZXJlIHRvIGF2b2lkIFwiZ2NcIiAqKVxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBjaGlsZHNfaGlkZSBlZGl0b3JfZnVsbCBpblxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgICAgKGlmIGVkaXRvcl9mdWxsIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTEyXCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC02XCI7IFwiZmxleC1jb250ZW50XCIgXSkpKTtcbiAgICAgICAgXVxuICAgICAgWyBTdWJwYW5lbF9lZGl0b3IuY29udGVudCAoKSBdO1xuICAgIHJpZ2h0c3VicGFuZWwgKCk7XG4gIF1cblxubGV0IGluaXRfZGVhZF9ydWxlcyAoKSA9XG4gIFJlYWN0LlMubDFcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcInRhYl9lZGl0b3JfZGVhZF9ydWxlXCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX3J1bGVzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9ydWxlc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgcnVsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIHJ1bGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgJ1wiIF4gcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIF4gXCInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IHJ1bGUuUHVibGljX2RhdGEucnVsZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBpbml0X2RlYWRfYWdlbnRzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX2FnZW50XCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBhZ2VudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIGFnZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyByYW5nZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBTb21lIHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9wb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgKHJ1bGUsIGNvbnRleHRfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2hpZGRlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGhpbnQ6IHJldmVyc2libGUgcnVsZSBhcmUgYWx3YXlzIHdlYWtseSByZXZlcnNpYmxlICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwbHVyYWwsIHNraXAsIHRhYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb250ZXh0X2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFwiXCIsIFwiXCIsIFwiIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBcInNcIiwgXCJcXG5cIiwgXCJcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUnVsZSAlcyBtYXkgaW5kdWNlIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dCVzOiVzJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwgc2tpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHNraXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJXMgLT4gJXMgXCIgdGFiIGEgYikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogdG8gZG8sIGFkZCB0aGUgcG90ZW50aWFsIGNvbnRleHRzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBTdWJwYW5lbF9lZGl0b3Iub25sb2FkICgpIGluXG4gIGxldCBfID0gaW5pdF9kZWFkX3J1bGVzICgpIGluXG4gIGxldCBfID0gaW5pdF9kZWFkX2FnZW50cyAoKSBpblxuICBsZXQgXyA9IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3BvbHltZXJzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT4gY2hpbGRzX2hpZGUgZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBTdWJwYW5lbF9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcG9seW1lcnMub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgZGluX2lkLCBzZXRfZGluX2lkID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgZGluX2xpc3QgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biBkaW5faWRzIC0+XG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAtPiBIdG1sLm9wdGlvbiB+YTpbIEh0bWwuYV92YWx1ZSBpZCBdIChIdG1sLnR4dCBpZCkpXG4gICAgICAgICAgICAgICAgICAgIGRpbl9pZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgb3V0KVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluKVxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcblxubGV0IGRpbl9zZWxlY3QgPVxuICBUeXhtbF9qcy5SLkh0bWw1LnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGRpbl9saXN0XG5cbmxldCBkaW5fZGF0YSA9XG4gIFJlYWN0LlMuYmluZCAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpZ25hbCBkaW5fbGlzdCkgKGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBSZWFjdC5TLmNvbnN0IE5vbmVcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2V0X2Rpbl9pZCAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICBpblxuICAgICAgUmVhY3QuUy5iaW5kIGRpbl9pZCAoZnVuIGRpbl9pZCAtPlxuICAgICAgICAgIFJlYWN0LlMuaG9sZCBOb25lXG4gICAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZCB+b2s6KGZ1biB4IC0+IHgpIH5lcnJvcjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIE9wdGlvbi5zb21lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkKSlcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpXG5cbmxldCBkaW5faGVhZGVyID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgIChIdG1sLnRoIFsgSHRtbC50eHQgXCJhZmZlY3RzXCIgXVxuICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAoZnVuIHIgYWNjIC0+IEh0bWwudGggWyBIdG1sLnR4dCByIF0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICBkaW4uRGF0YS5kaW5fcnVsZXMgW10pO1xuICAgICAgICAgICBdKVxuICAgICAgIGRpbl9kYXRhKVxuXG5sZXQgZGluX3RhYmxlID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgbGV0IG9wZW4gRGF0YSBpblxuICAgICAgICAgICBsZXQgYWxsID0gZGluLmRpbl9kYXRhLmRpbl9raW5kID0gUHJpbWl0aXZlcy5QUk9CQUJJTElUWSBpblxuICAgICAgICAgICBsZXQgYm9keSA9XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9yaWdodGlcbiAgICAgICAgICAgICAgIChmdW4gaSBkYXRhIGFjYyAtPlxuICAgICAgICAgICAgICAgICBpZiBhbGwgfHwgZGluLmRpbl9kYXRhLmRpbl9oaXRzLihpKSA+IDAgdGhlblxuICAgICAgICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgICAgICAgIChIdG1sLnRoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpbi5kaW5fcnVsZXMuKGkpIF4gXCIgKFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIFwiIGhpdHMpXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIHYgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50ZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB2ID4gMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcInN1Y2Nlc3NcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiB2IDwgMC4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImluZm9cIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IChzdHJpbmdfb2ZfZmxvYXQgdikgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBbXSlcbiAgICAgICAgICAgICAgICAgICA6OiBhY2NcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgIGRpbi5kaW5fZGF0YS5kaW5fZmx1eHMgW11cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgWyBIdG1sLnRib2R5IGJvZHkgXSlcbiAgICAgICBkaW5fZGF0YSlcblxubGV0IGRpbiA9XG4gIGxldCB0aGVhZCA9IFJlYWN0LlMuY29uc3QgKFR5eG1sX2pzLlIuSHRtbDUudGhlYWQgZGluX2hlYWRlcikgaW5cbiAgVHl4bWxfanMuUi5IdG1sNS50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIjsgXCJ0YWJsZS1jb25kZW5zZWRcIjsgXCJ0YWJsZS1ib3JkZXJlZFwiIF0gXVxuICAgIH50aGVhZCBkaW5fdGFibGVcblxubGV0IGV4cG9ydF9jdXJyZW50X2RpbiB0b19zdHJpbmcgbWltZSBmaWxlbmFtZSA9XG4gIGxldCBkaW5faWQgPSBKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSBpblxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRpbiAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAodG9fc3RyaW5nIGRpbikgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZXhwb3J0X2NvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IFwiZGluLWV4cG9ydFwiO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpbiAoRGF0YS5zdHJpbmdfb2ZfZGluID9sZW46Tm9uZSkgXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpKVxuICAgICAgICAgICAgICBcInRleHQvdm5kLmdyYXBodml6XCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiaHRtbFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW5cbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIERhdGEucHJpbnRfaHRtbF9kaW4pXG4gICAgICAgICAgICAgIFwidGV4dC9odG1sXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICB9XG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZmxleF9jb250ZW50XCI7IFwidGFibGUtcmVzcG9uc2l2ZVwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmZvcm0gWyBkaW5fc2VsZWN0IF07XG4gICAgICAgIGRpbjtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGV4cG9ydF9jb25maWd1cmF0aW9uO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPlxuICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBzdGF0ZSAtPlxuICAgICAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X2RpbnMpXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMub25jaGFuZ2VcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBzZXRfZGluX2lkXG4gICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZ3VyYXRpb24gaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+IHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2RElOXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbmxldCBsaW5lX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXG5cbmxldCBuYXZsaSAoKSA9XG4gIFVpX2NvbW1vbi5sYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgKGZ1biBzdGF0ZSAtPiBsaW5lX2NvdW50IHN0YXRlKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBzdGF0ZV9sb2cgPVxuICAgICgqIFdlIGdldCB0aGUgc2lnbmFsIG9mIGxvZyBtZXNzYWdlcyBmb3IgY3VycmVudCBzaW11bGF0aW9uIG1vZGVsLiBUaGUgYmluZCBhbGxvd3MgdG8gY2hhbmdlIHRoZSBzaWduYWwgdG8gdGhlIG5ldyBzaW11bGF0aW9uIG1vZGVsIHdoZW4gaXQgY2hhbmdlcyAqKVxuICAgIFJlYWN0LlMuYmluZFxuICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSAoZnVuIF8gLT5cbiAgICAgICAgUmVhY3QuUy5ob2xkIFwiXCJcbiAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9sb2dfbWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBcIlwiKSlcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgID58PSBmdW4gKHggOiBzdHJpbmcgQXBpLnJlc3VsdCkgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHguUmVzdWx0X3V0aWwudmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgfCBPayB4IC0+IHhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgbGlzdCAtPlxuICAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiXFxuXCJcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biBSZXN1bHRfdXRpbC57IHRleHQ7IF8gfSAtPiB0ZXh0KSBsaXN0KSkpKVxuICBpblxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIjsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBzdGF0ZV9sb2cgXTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmxvZ1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHNlbGVjdF9pZCA9IFwib3V0cHV0LXNlbGVjdC1pZFwiXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGN1cnJlbnRfZmlsZSwgc2V0X2N1cnJlbnRfZmlsZSA9IFJlYWN0LlMuY3JlYXRlIE5vbmVcblxubGV0IHVwZGF0ZV9vdXRwdXRzIChrZXkgOiBzdHJpbmcpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUga2V5XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gbGluZXMgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X2N1cnJlbnRfZmlsZSAoU29tZSAoa2V5LCBsaW5lcykpIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBmaWxlX2NvdW50IHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuXG5sZXQgbmF2bGkgKCkgPSBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPiBmaWxlX2NvdW50IHN0YXRlKVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IHNlbGVjdCAoZmlsZV9saW5lX2lkcyA6IHN0cmluZyBsaXN0KSA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0IF0gSHRtbC5lbHQgPVxuICAgIGxldCBsaW5lcyA6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgb3B0aW9uID0gUmVhY3QuUy52YWx1ZSBjdXJyZW50X2ZpbGUgaW5cbiAgICBsZXQgY3VycmVudF9maWxlX2lkIDogc3RyaW5nID1cbiAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMsIGxpbmVzIHdpdGhcbiAgICAgIHwgW10sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGZpbGUgOjogXywgTm9uZSB8IF8gOjogXywgU29tZSAoZmlsZSwgXykgLT4gZmlsZVxuICAgIGluXG4gICAgbGV0IGZpbGVfb3B0aW9ucyA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIGtleSAtPlxuICAgICAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIGtleSBdXG4gICAgICAgICAgICAgIEBcbiAgICAgICAgICAgICAgaWYga2V5ID0gY3VycmVudF9maWxlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbXSlcbiAgICAgICAgICAgIChIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpKSlcbiAgICAgICAgZmlsZV9saW5lX2lkc1xuICAgIGluXG4gICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMgY3VycmVudF9maWxlX2lkIGluXG4gICAgVHl4bWxfanMuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgc2VsZWN0X2lkIF1cbiAgICAgIGZpbGVfb3B0aW9uc1xuICBpblxuICBsZXQgZmlsZV9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJsaXN0LWdyb3VwLWl0ZW1cIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlX2xpbmVfaWRzIDogQXBpX3R5cGVzX2ouZmlsZV9saW5lX2NhdGFsb2cpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RfZmlsZSA6IFs+IGBINCB8IGBTZWxlY3QgXSBIdG1sLmVsdCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUT0RPOiBuYW1lICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZmlsZV9saW5lX2lkcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5IDo6IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfb3V0cHV0cyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5oNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBzZWxlY3QgZmlsZV9saW5lX2lkcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNlbGVjdF9maWxlKSkpXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4geCAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IHgpXG4gICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSkpXG4gIGluXG4gIGxldCBmaWxlX2NvbnRlbnQgPVxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbC5kaXZcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiOyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICB8IFNvbWUgKF8sIGxpbmVzKSAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKGZ1biBsaW5lIC0+IEh0bWwucCBbIEh0bWwudHh0IGxpbmUgXSkgbGluZXMpXG4gICAgICAgICAgICAgIGN1cnJlbnRfZmlsZSkpO1xuICAgIF1cbiAgaW5cbiAgW1xuICAgIFslaHRtbFxuICAgICAge3w8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXItYmxvY2sgZGlzcGxheS1oZWFkZXJcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgWyBmaWxlX3NlbGVjdCBdXG4gICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgfH1cbiAgICAgICAgZmlsZV9jb250ZW50XG4gICAgICAgIHt8XG4gICAgICAgICAgICAgPC9kaXY+IHx9XTtcbiAgXVxuXG5sZXQgc2VsZWN0X291dHB1dHMgKCkgOiB1bml0ID1cbiAgbGV0IHNlbGVjdF9kb20gPSBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZCBpblxuICBsZXQgZmlsZWluZGV4ID0gSnMudG9fc3RyaW5nIHNlbGVjdF9kb20jIy52YWx1ZSBpblxuICB1cGRhdGVfb3V0cHV0cyBmaWxlaW5kZXhcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHQgLT4gZmlsZV9jb3VudCB0ID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2b3V0cHV0c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoRm9ybWF0LnNwcmludGYgXCIjJXNcIiBzZWxlY3RfaWQpIFwiY2hhbmdlXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzICgpIGluXG4gICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuKCogVE9ET1xuICAgICBsZXQgc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAgICAoKEpzLk9wdC5nZXRcbiAgICAgICAgICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZFxuICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIGluXG4gICAgIGxldCAoKSA9IHNlbGVjdF9kb20jIy5vbmNoYW5nZSA6PSBEb21faHRtbC5oYW5kbGVyXG4gICAoZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNlbGVjdF9vdXRwdXRzIHRcbiAgICAgaW4gSnMuX3RydWUpXG4gICAgIGluXG4qKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqbW9kdWxlIEFwaVR5cGVzID0gQXBpX3R5cGVzX2oqKVxuXG5jbGFzcyB0eXBlIG9ic2VydmFibGVfcGxvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX29ic2VydmFibGVfcGxvdCBtYWluX2Rpdl9pZCA6IG9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9ic2VydmFibGVQbG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1haW5fZGl2X2lkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IGRpdl9kaXNwbGF5X2lkID0gXCJwbG90LW1haW5fZGl2XCJcbmxldCBleHBvcnRfaWQgPSBcInBsb3QtZXhwb3J0XCJcblxudHlwZSBvZmZzZXQgPSB7IG9mZnNldF9jdXJyZW50OiBpbnQ7IG9mZnNldF9tYXg6IGludCB9XG5cbmxldCBvZmZzZXQsIHNldF9vZmZzZXQgPSBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IG9mZnNldCBvcHRpb24pXG5sZXQgZGVmYXVsdF9wb2ludCA9IDEwMDBcbmxldCBwb2ludCwgc2V0X3BvaW50cyA9IFJlYWN0LlMuY3JlYXRlIGRlZmF1bHRfcG9pbnRcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgcGxvdF9yZWYgPSByZWYgTm9uZVxuXG5sZXQgaGFzX3Bsb3QgKHN0YXRlIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9wbG90XG4gICAgPiAwXG5cbmxldCBleHBvcnRfanNvbiBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGV4cG9ydCBtaW1lIGZpbGVuYW1lID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBKcy5zdHJpbmcgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjoobWltZSA9IFwidGV4dC90c3ZcIikgcGxvdClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXRfaWQgPSBcInBsb3RfcG9pbnRzX2lucHV0XCJcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9wb2ludHNfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgNTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXRfaWQgPSBcInBsb3Rfb2Zmc2V0X2lucHV0XCJcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgWyBcImhpZGVcIiBdXG4gICAgICAgICAgICB8IFNvbWUgXyAtPiBSZWFjdC5TLmNvbnN0IFtdKSk7XG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2lucHV0X21heFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgb2Zmc2V0IChmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgMClcbiAgICAgICAgICAgIHwgU29tZSBtYXhfb2Zmc2V0IC0+IFJlYWN0LlMuY29uc3QgKGBOdW1iZXIgbWF4X29mZnNldC5vZmZzZXRfbWF4KSkpO1xuICAgICAgICBIdG1sLmFfaWQgcGxvdF9vZmZzZXRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBSYW5nZTtcbiAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwib2Zmc2V0XCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IChzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIDpcbiAgICBpbnQgPVxuICBsZXQgcGxvdF9zaXplID1cbiAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgaW5cbiAgbWF4IDAgKHBsb3Rfc2l6ZSAtIFJlYWN0LlMudmFsdWUgcG9pbnQpXG5cbmxldCB1cGRhdGVfb2Zmc2V0ICh1cGRhdGVfb2Zmc2V0X2lucHV0IDogYm9vbCkgOiB1bml0ID1cbiAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbl9tb2RlbCBpblxuICBtYXRjaCBzaW11bGF0aW9uX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNpbXVsYXRpb25faW5mbyAtPlxuICAgIGlmXG4gICAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcbiAgICB0aGVuXG4gICAgICAoKiBJZiBpdCBpcyBydW5uaW5nIG5vIHNsaWRlciBiZWNhdXNlIHVwZGF0ZSBjYXVzZXMgaml0dGVycy4gKilcbiAgICAgIHNldF9vZmZzZXQgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG9mZnNldF9tYXggPSBzaW11bGF0aW9uX2luZm9fb2Zmc2V0X21heCBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgIGxldCBvbGRfb2Zmc2V0ID0gUmVhY3QuUy52YWx1ZSBvZmZzZXQgaW5cbiAgICAgIGxldCBvZmZzZXRfY3VycmVudCA9XG4gICAgICAgIG1hdGNoIG9sZF9vZmZzZXQgd2l0aFxuICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+IG9mZnNldC5vZmZzZXRfY3VycmVudFxuICAgICAgICB8IE5vbmUgLT4gb2Zmc2V0X21heFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIHVwZGF0ZV9vZmZzZXRfaW5wdXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9XG4gICAgICAgICAgICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KSkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCBvZmZzZXRfY3VycmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgICgpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19vZmZzZXQgPVxuICAgICAgICBpZiBvZmZzZXRfbWF4ID4gMCB0aGVuXG4gICAgICAgICAgU29tZSB7IG9mZnNldF9jdXJyZW50OyBvZmZzZXRfbWF4IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBzZXRfb2Zmc2V0IG5ld19vZmZzZXRcbiAgICApXG5cbmxldCBwbG90X3BhcmFtZXRlciAoKSA6IEFwaV90eXBlc19qLnBsb3RfcGFyYW1ldGVyID1cbiAgbGV0IHBvaW50ID0gUmVhY3QuUy52YWx1ZSBwb2ludCBpblxuICB7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4Lm9mZnNldF9jdXJyZW50KSAoUmVhY3QuUy52YWx1ZSBvZmZzZXQpO1xuICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gU29tZSBwb2ludDtcbiAgfVxuXG5sZXQgdXBkYXRlX3Bsb3QgKGpzX3Bsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50KSA6IHVuaXQgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCAoKSA9IHVwZGF0ZV9vZmZzZXQgdHJ1ZSBpblxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90IChwbG90X3BhcmFtZXRlciAoKSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9wbG90IHBsb3QpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGpzX3Bsb3QjI3NldERhdGEgZGF0YSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IChqc19wbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCkgOiB1bml0ID1cbiAgbGV0IHBsb3RfcG9pbnRzX2lucHV0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9wb2ludHNfaW5wdXRcbiAgaW5cbiAgbGV0IGpzX3BvaW50IDogSnMuanNfc3RyaW5nIEpzLnQgPVxuICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCAoUmVhY3QuUy52YWx1ZSBwb2ludCkpXG4gIGluXG4gIGxldCAoKSA9IHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLnZhbHVlIDo9IGpzX3BvaW50IGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25rZXlwcmVzc1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuXG4gICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBwbG90X3BvaW50c19pbnB1dF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBwbG90X3BvaW50c19zdHJpbmcgOiBzdHJpbmcgPVxuICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfb3B0aW9uIDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA9IGludF9vZl9zdHJpbmcgcGxvdF9wb2ludHNfc3RyaW5nIGluXG4gICAgICAgICAgICAgICBpZiBwbG90X3BvaW50ID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWUgcGxvdF9wb2ludFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHBsb3RfcG9pbnRzX29wdGlvbiB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHBsb3RfcG9pbnRzIC0+IHNldF9wb2ludHMgcGxvdF9wb2ludHNcbiAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50IDogaW50ID0gUmVhY3QuUy52YWx1ZSBwb2ludCBpblxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRfc3RyaW5nID0gc3RyaW5nX29mX2ludCBwbG90X3BvaW50IGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgcGxvdF9wb2ludF9zdHJpbmdcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBzZXRfcG9pbnRzIGRlZmF1bHRfcG9pbnQgaW5cbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IGpzX3Bsb3QgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gICgpXG5cbmxldCBjb25maWd1cmF0aW9uICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBleHBvcnRfaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3N2ZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpdl9kaXNwbGF5X2lkICgpO1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnRfanNvbjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJjc3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJjc3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9IGV4cG9ydCBcInRleHQvY3N2XCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwidHN2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwidHN2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L3RzdlwiO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBzaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgb3V0ID0gaGFzX3Bsb3QgKFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsKSBpblxuICAgICAgICAgIGxldCAoKSA9IGlmIG91dCB0aGVuIE9wdGlvbi5pdGVyIHVwZGF0ZV9wbG90ICFwbG90X3JlZiBpblxuICAgICAgICAgIG91dClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbmxldCB4bWwgKCkgPVxuICBsZXQgZXhwb3J0X2NvbnRyb2xzID0gV2lkZ2V0X2V4cG9ydC5pbmxpbmVfY29udGVudCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgWyVodG1sXG4gICAge3xcbiAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIiBpZD1cInx9IGRpdl9kaXNwbGF5X2lkXG4gICAgICB7fFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPXx9XG4gICAgICBleHBvcnRfaWRcbiAgICAgIHt8PlxuICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiBmb3I9fH1cbiAgICAgIHBsb3RfcG9pbnRzX2lucHV0X2lkXG4gICAgICB7fD5Sb3cgdG8gcGxvdDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5Qb2ludHM8L3NwYW4+XG4gICAgICAgICAgfH1cbiAgICAgIFsgcGxvdF9wb2ludHNfaW5wdXQgXVxuICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiBmb3I9fH1cbiAgICAgIHBsb3Rfb2Zmc2V0X2lucHV0X2lkXG4gICAgICB7fD5TZWxlY3RlZCB3aW5kb3c8L2xhYmVsPlxuICAgICAgICB8fVxuICAgICAgWyBwbG90X29mZnNldF9pbnB1dCBdXG4gICAgICB7fFxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICAgIDwvZGl2PiB8fV1cblxubGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIEh0bWwuZWx0IGxpc3QgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHMgLT4gaGFzX3Bsb3QgcykgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dCBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbiAoKSkgaW5cbiAgbGV0IHBsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50ID1cbiAgICBKc19wbG90LmNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgZGl2X2Rpc3BsYXlfaWRcbiAgaW5cbiAgKCogVGhlIGVsZW1lbnRzIHNpemUgdGhlbXNlbHZlcyB1c2luZyB0aGUgZGl2J3MgaWYgdGhleSBhcmUgaGlkZGVuXG4gICAgIGl0IHdpbGwgZGVmYXVsdCB0byBzaXplIHplcm8uICBzbyB0aGV5IG5lZWQgdG8gYmUgc2l6ZWQgd2hlbiBzaG93bi5cbiAgKilcbiAgbGV0ICgpID0gb25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IHBsb3QgaW5cbiAgbGV0ICgpID0gcGxvdF9yZWYgOj0gU29tZSBwbG90IGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBsb3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb25fbW9kZWxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgaGFzX3Bsb3Qgc2ltdWxhdGlvbl9pbmZvIHRoZW5cbiAgICAgICAgICB1cGRhdGVfcGxvdCBwbG90XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBVaV9jb21tb24uaW5wdXRfY2hhbmdlIHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBzZXRfb2Zmc2V0XG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIG9mZnNldCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBvZmZzZXQgLT5cbiAgICAgICAgICAgICAgICBTb21lIHsgb2Zmc2V0IHdpdGggb2Zmc2V0X2N1cnJlbnQgPSBpbnRfb2Zfc3RyaW5nIHZhbHVlIH0pXG4gICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gdXBkYXRlX3Bsb3QgcGxvdCBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgKClcblxubGV0IHBsb3RfY291bnQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgb3BlbiBBcGlfdHlwZXNfdCBpblxuICAgIHN0YXRlLnNpbXVsYXRpb25faW5mb19vdXRwdXQuc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24ubGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIChmdW4gc3RhdGUgLT4gcGxvdF9jb3VudCBzdGF0ZSlcblxubGV0IG9ucmVzaXplICgpID1cbiAgKCogcmVjYWxjdWF0ZSBzaXplICopXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggIXBsb3RfcmVmIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcGxvdCAtPlxuICAgICAgbGV0IG1vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gICAgICAobWF0Y2ggU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiB1cGRhdGVfcGxvdCBwbG90KVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzbmFwc2hvdCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6XG4gICAgY29udGFjdF9tYXA6SnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zbmFwc2hvdCAoaWQgOiBzdHJpbmcpIChjb2xvcmluZyA6IHVuaXQgSnMudCkgOiBzbmFwc2hvdCBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlNuYXBzaG90XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcblxubGV0IGN1cnJlbnRfc25hcHNob3QsIHNldF9jdXJyZW50X3NuYXBzaG90ID1cbiAgUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiAoc3RyaW5nICogRGF0YS5zbmFwc2hvdCkgb3B0aW9uKVxuXG50eXBlIGRpc3BsYXlfZm9ybWF0ID0gS2FwcGEgfCBHcmFwaFxuXG5sZXQgc3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0ID0gZnVuY3Rpb25cbiAgfCBcIkthcHBhXCIgLT4gU29tZSBLYXBwYVxuICB8IFwiR3JhcGhcIiAtPiBTb21lIEdyYXBoXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkaXNwbGF5X2Zvcm1hdCwgc2V0X2Rpc3BsYXlfZm9ybWF0ID0gUmVhY3QuUy5jcmVhdGUgS2FwcGFcblxubGV0IHNuYXBzaG90X2NvdW50IChzdGF0ZSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24pIDogaW50ID1cbiAgbWF0Y2ggc3RhdGUgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXG5cbmxldCBuYXZsaSAoKSA9IFVpX2NvbW1vbi5iYWRnZSAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlKVxubGV0IHNlbGVjdF9pZCA9IFwic25hcHNob3Qtc2VsZWN0LWlkXCJcbmxldCBkaXNwbGF5X2lkID0gXCJzbmFwc2hvdC1tYXAtZGlzcGxheVwiXG5cbmxldCBjb25maWd1cmF0aW9uX3RlbXBsYXRlIGlkIGFkZGl0aW9uYWxfaGFuZGxlcnMgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb25cbiAgICA9XG4gIGxldCBqc29uX2hhbmRsZXIgPVxuICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X2pzb24gfnNlcmlhbGl6ZV9qc29uOihmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwibnVsbFwiXG4gICAgICAgIHwgU29tZSAoXywgcykgLT4gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgcylcbiAgaW5cbiAgbGV0IGthcHBhX2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJrYVwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwia2FwcGFcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZSk7XG4gICAgfVxuICBpblxuICBsZXQgZG90X2hhbmRsZXIgPVxuICAgIHtcbiAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImRvdFwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAoZnVuIChmaWxlbmFtZSA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSAoXywgcykgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2RvdCBzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwidGV4dC92bmQuZ3JhcGh2aXpcIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRlZmF1bHRfaGFuZGxlcnMgPSBbIGpzb25faGFuZGxlcjsga2FwcGFfaGFuZGxlcjsgZG90X2hhbmRsZXIgXSBpblxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID0gZGVmYXVsdF9oYW5kbGVycyBAIGFkZGl0aW9uYWxfaGFuZGxlcnM7XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID1cbiAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICBzbmFwc2hvdF9jb3VudCBzaW11bGF0aW9uX2luZm8gPiAwKVxuICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCk7XG4gIH1cblxuKCogT25seSBhbGxvdyB0aGUgZXhwb3J0IG9mIG5vbi1ncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2thcHBhICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2thcHBhXCIgW11cblxuKCogVGhlIG1hcHMgYXJlIHJlbmRlcmVkIHNvIGFsbG93IHRoZSBleHBvcnQgb2ZcbiAgIGdyYXBoaWNhbCBkYXRhLiAqKVxubGV0IGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICBjb25maWd1cmF0aW9uX3RlbXBsYXRlIFwic25hcHNob3RfZ3JhcGhcIlxuICAgIFtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3N2ZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfcG5nIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgXVxuXG5sZXQgZm9ybWF0X3NlbGVjdF9pZCA9IFwiZm9ybWF0X3NlbGVjdF9pZFwiXG5cbmxldCByZW5kZXJfc25hcHNob3RfZ3JhcGggKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudClcbiAgICAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHVuaXQgPVxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3Qgc25hcHNob3QpKSBpblxuICBtYXRjaCBSZWFjdC5TLnZhbHVlIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgfCBHcmFwaCAtPlxuICAgIGxldCBqc29uIDogc3RyaW5nID0gRGF0YS5zdHJpbmdfb2Zfc25hcHNob3Qgc25hcHNob3QgaW5cbiAgICBsZXQgY29udGFjdF9tYXAgPSBSZWFjdC5TLnZhbHVlIFRhYl9jb250YWN0X21hcC5jb250YWN0X21hcF90ZXh0IGluXG4gICAgc25hcHNob3RfanMjI3NldERhdGEgfmNvbnRhY3RfbWFwOihKcy5zdHJpbmcgY29udGFjdF9tYXApIChKcy5zdHJpbmcganNvbilcbiAgfCBLYXBwYSAtPiAoKVxuXG5sZXQgc2VsZWN0X3NuYXBzaG90IChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBpbmRleCA6IGludCBKcy5vcHQgPVxuICAgIEpzLk9wdC5iaW5kXG4gICAgICAoVWlfY29tbW9uLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIHNlbGVjdF9pZCkpXG4gICAgICAoZnVuIGRvbSAtPlxuICAgICAgICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGRvbVxuICAgICAgICBpblxuICAgICAgICBsZXQgZmlsZWluZGV4IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIHNuYXBzaG90X3NlbGVjdF9kb20jIy52YWx1ZSBpblxuICAgICAgICB0cnkgSnMuc29tZSAoaW50X29mX3N0cmluZyBmaWxlaW5kZXgpIHdpdGggXyAtPiBKcy5udWxsKVxuICBpblxuICBsZXQgKCkgPSBDb21tb24uZGVidWcgaW5kZXggaW5cbiAgbGV0IG1vZGVsIDogU3RhdGVfc2ltdWxhdGlvbi50ID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gIGxldCBzaW11bGF0aW9uX291dHB1dCA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBvcHRpb24gPVxuICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsXG4gIGluXG4gIG1hdGNoIHNpbXVsYXRpb25fb3V0cHV0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIGxldCBpbmRleCA6IGludCA9IEpzLk9wdC5nZXQgaW5kZXggKGZ1biBfIC0+IDApIGluXG4gICAgaWYgc25hcHNob3RfY291bnQgKFNvbWUgc3RhdGUpID4gMCB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHNuYXBzaG90X2lkIDogc3RyaW5nID0gTGlzdC5udGggc25hcHNob3RfaWRzIGluZGV4IGluXG4gICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCBzbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY3VycmVudF9zbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb21lIChzbmFwc2hvdF9pZCwgc25hcHNob3QpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaCBzbmFwc2hvdF9qcyBzbmFwc2hvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgZiAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZilcbiAgICAgICAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZikpKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgKVxuXG5sZXQgc2VsZWN0IChzbmFwc2hvdHMgOiBBcGlfdHlwZXNfai5zbmFwc2hvdF9pZCBsaXN0KSA6XG4gICAgWz4gSHRtbF90eXBlcy5zZWxlY3RvcHRpb24gXSBIdG1sLmVsdCBsaXN0ID1cbiAgTGlzdC5tYXBpXG4gICAgKGZ1biBpIHNuYXBzaG90X2lkIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoWyBIdG1sLmFfdmFsdWUgKHN0cmluZ19vZl9pbnQgaSkgXVxuICAgICAgICAgIEBcbiAgICAgICAgICBpZlxuICAgICAgICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIChmaWxlbmFtZSwgXykgLT4gZmlsZW5hbWUgPSBzbmFwc2hvdF9pZFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFsgSHRtbC5hX3NlbGVjdGVkICgpIF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXSlcbiAgICAgICAgKEh0bWwudHh0IHNuYXBzaG90X2lkKSlcbiAgICBzbmFwc2hvdHNcblxubGV0IHNuYXBzaG90X2NsYXNzIDpcbiAgICBlbXB0eToodW5pdCAtPiAnYSkgLT5cbiAgICBzaW5nbGU6KHVuaXQgLT4gJ2EpIC0+XG4gICAgbXVsdGlwbGU6KHVuaXQgLT4gJ2EpIC0+XG4gICAgJ2EgUmVhY3Quc2lnbmFsID1cbiBmdW4gfmVtcHR5IH5zaW5nbGUgfm11bHRpcGxlIC0+XG4gIFJlYWN0LlMubWFwXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICBtYXRjaCBzbmFwc2hvdF9jb3VudCBzaW11bGF0aW9uX2luZm8gd2l0aFxuICAgICAgfCAwIC0+IGVtcHR5ICgpXG4gICAgICB8IDEgLT4gc2luZ2xlICgpXG4gICAgICB8IF8gLT4gbXVsdGlwbGUgKCkpXG4gICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudCA9XG4gIEpzX3NuYXBzaG90LmNyZWF0ZV9zbmFwc2hvdCBkaXNwbGF5X2lkIFN0YXRlX3NldHRpbmdzLmFnZW50X2NvbG9yaW5nXG5cbmxldCB4bWwgKCkgPVxuICBsZXQgbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNlbGVjdF9zbmFwc2hvdCBzbmFwc2hvdF9qcyBpblxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfc25hcHNob3RcbiAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzbmFwc2hvdF9pZHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKHNlbGVjdCBzbmFwc2hvdF9pZHMpKSkpXG4gICAgICAgICAgICAgKClcbiAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgfm9rOihmdW4geCAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IHgpXG4gICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpKSlcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2xhYmVsID1cbiAgICBIdG1sLmg0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcIm9uZWxpbmVyXCI7IFwidmlzaWJsZVwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJoaWRkZW5cIiBdKSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKHNuYXBzaG90X2ZpbGUsIF8pIC0+IHNuYXBzaG90X2ZpbGUpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBzbmFwc2hvdF9zZWxlY3QgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5zZWxlY3RcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChzbmFwc2hvdF9jbGFzc1xuICAgICAgICAgICAgICAgfmVtcHR5OihmdW4gKCkgLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+c2luZ2xlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5tdWx0aXBsZTooZnVuIF8gLT4gWyBcInZpc2libGVcIjsgXCJmb3JtLWNvbnRyb2xcIiBdKSk7XG4gICAgICAgICAgSHRtbC5hX2lkIHNlbGVjdF9pZDtcbiAgICAgICAgXVxuICAgICAgbGlzdFxuICBpblxuICBsZXQgc25hcHNob3RfY2hvb3NlciA9IEh0bWwuZGl2IFsgc25hcHNob3RfbGFiZWw7IHNuYXBzaG90X3NlbGVjdCBdIGluXG4gIGxldCB0b2dnbGVfY29udHJvbHMgfmthcHBhIH5ncmFwaCA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgS2FwcGEgLT4ga2FwcGFcbiAgICAgICAgICAgfCBHcmFwaCAtPiBncmFwaClcbiAgICAgICAgIGRpc3BsYXlfZm9ybWF0KVxuICBpblxuICBsZXQgZXhwb3J0X2NvbnRyb2xzID1cbiAgICBbXG4gICAgICBIdG1sLmRpdlxuICAgICAgICB+YTpbIHRvZ2dsZV9jb250cm9scyB+a2FwcGE6WyBcInZpc2libGVcIiBdIH5ncmFwaDpbIFwiaGlkZGVuXCIgXSBdXG4gICAgICAgIFsgV2lkZ2V0X2V4cG9ydC5jb250ZW50IChjb25maWd1cmF0aW9uX2thcHBhICgpKSBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJoaWRkZW5cIiBdIH5ncmFwaDpbIFwidmlzaWJsZVwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9ncmFwaCAoKSkgXTtcbiAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9zbmFwc2hvdF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwicGFuZWwtc2Nyb2xsXCIgOjogXCJrYXBwYS1jb2RlXCIgOjogXCJmbGV4LWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggZGlzcGxheV9mb3JtYXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IEthcHBhIC0+IFsgXCJ2aXNpYmxlXCIgXVxuICAgICAgICAgICAgICAgICB8IEdyYXBoIC0+IFsgXCJoaWRkZW5cIiBdKSlcbiAgICAgICAgICAgICAgIGRpc3BsYXlfZm9ybWF0KTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgKGZ1biBzbmFwc2hvdCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgIHwgU29tZSAoXywgc25hcHNob3QpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9rYXBwYSBzbmFwc2hvdClcbiAgICAgICAgICAgICBjdXJyZW50X3NuYXBzaG90KTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGthcHBhX2dyYXBoX2Rpc3BsYXkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gZGlzcGxheV9mb3JtYXQgLT5cbiAgICAgICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggZGlzcGxheV9mb3JtYXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IEdyYXBoIC0+IFsgXCJ2aXNpYmxlXCIgXVxuICAgICAgICAgICAgICAgICB8IEthcHBhIC0+IFsgXCJoaWRkZW5cIiBdKSlcbiAgICAgICAgICAgICAgIGRpc3BsYXlfZm9ybWF0KTtcbiAgICAgICAgXVxuICAgICAgWyVodG1sXG4gICAgICAgIHt8XG4gICAgICAgIDxmb3JtICBjbGFzcz1cImZvcm0taW5saW5lXCIgaWQ9XCJzbmFwLWZvcm1cIj5cbiAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwibW9kZVwiIHZhbHVlPVwic3VtQnlNYXNzXCIgY2hlY2tlZD4gTWFzczwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5Q291bnRcIiA+IENvdW50PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwibW9kZVwiIHZhbHVlPVwic3VtQnlTaXplXCIgPiBTaXplPC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJlY2VudGVyU25hcEJ1dHRvblwiIGNsYXNzPVwic3RhdGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCI+UmVzZXQgWm9vbTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGlkPVwicm9vdEJ1dHRvblwiIGNsYXNzPVwic3RhdGVCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCI+QmFjayB0byByb290PC9idXR0b24+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGVudFwiIGlkPVwifH1cbiAgICAgICAgICBkaXNwbGF5X2lkIHt8XCI+PC9kaXY+fH1dXG4gIGluXG4gIGxldCBmb3JtYXRfY2hvb3NlciA9XG4gICAgWyVodG1sXG4gICAgICB7fCA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJ8fSBmb3JtYXRfc2VsZWN0X2lkXG4gICAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cIkthcHBhXCIgc2VsZWN0ZWQ+a2FwcGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiR3JhcGhcIj5ncmFwaDwvb3B0aW9uPjwvc2VsZWN0PiB8fV1cbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3IGZsZXgtY29udGVudFwiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbiA6IDVweDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLXhzLTRcIj5cbiAgICAgICAgIHx9XG4gICAgICBbIGZvcm1hdF9jaG9vc2VyIF1cbiAgICAgIHt8XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTAgY29sLXhzLThcIj4gfH1cbiAgICAgIFsgc25hcHNob3RfY2hvb3NlciBdXG4gICAgICB7fCA8L2Rpdj5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBrYXBwYV9zbmFwc2hvdF9kaXNwbGF5OyBrYXBwYV9ncmFwaF9kaXNwbGF5IF1cbiAgICAgIHt8XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtY29udHJvbHNcIj5cbiAgICAgICAgICB8fVxuICAgICAgZXhwb3J0X2NvbnRyb2xzXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICB8fV1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbIFVpX2NvbW1vbi50b2dnbGVfZWxlbWVudCAoZnVuIHN0YXRlIC0+IHNuYXBzaG90X2NvdW50IHN0YXRlID4gMCkgKHhtbCAoKSkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gc2VsZWN0X2lkXG4gIGluXG4gIGxldCBmb3JtYXRfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIGZvcm1hdF9zZWxlY3RfaWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBzbmFwc2hvdF9zZWxlY3RfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgXCJvbmNoYW5nZVwiIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNlbGVjdF9zbmFwc2hvdCBzbmFwc2hvdF9qcyBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0IHVwZGF0ZV9mb3JtYXQgKCkgPVxuICAgIGxldCBmb3JtYXRfdGV4dCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBmb3JtYXRfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgbWF0Y2ggc3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0IGZvcm1hdF90ZXh0IHdpdGhcbiAgICB8IFNvbWUgZm9ybWF0IC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlzcGxheV9mb3JtYXQgZm9ybWF0IGluXG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChfLCBzbmFwc2hvdCkgLT5cbiAgICAgICAgcmVuZGVyX3NuYXBzaG90X2dyYXBoXG4gICAgICAgICAgKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudClcbiAgICAgICAgICAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSlcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gICgqIGdldCBpbml0aWFsIHZhbHVlIGZvciBkaXNwbGF5IGZvcm1hdCAqKVxuICBsZXQgKCkgPSB1cGRhdGVfZm9ybWF0ICgpIGluXG4gICgqIHVwZGF0ZSB2YWx1ZSBmb3IgZGlzcGxheSBmb3JtYXQgKilcbiAgbGV0ICgpID1cbiAgICBmb3JtYXRfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX2Zvcm1hdCAoKSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnNuYXBzaG90XCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnNuYXBzaG90XCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb25fa2FwcGEgKCkpIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uX2dyYXBoICgpKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gaWYgUmVhY3QuUy52YWx1ZSB0YWJfaXNfYWN0aXZlIHRoZW4gc25hcHNob3RfanMjI3JlZHJhd1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBzdG9yeV9yZW5kZXJpbmcgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yeV9yZW5kZXJpbmcgKGlkIDogc3RyaW5nKSA6IHN0b3J5X3JlbmRlcmluZyBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIlN0b3J5UmVuZGVyaW5nXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKSB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgbm9uZV9jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgd2Vha19jaGVja2JveCA9XG4gIEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7IEh0bWwuYV9jaGVja2VkICgpIF0gKClcblxubGV0IHN0cm9uZ19jaGVja2JveCA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG5vbmVfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG5vbmVfY2hlY2tib3hcbmxldCB3ZWFrX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB3ZWFrX2NoZWNrYm94XG5sZXQgc3Ryb25nX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzdHJvbmdfY2hlY2tib3hcblxubGV0IGxhdW5jaF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07IEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0IF1cbiAgICBbIEh0bWwudHh0IFwiTGF1bmNoXCIgXVxuXG5sZXQgc3RvcnlfbGlzdCwgbGlzdF9jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cblxubGV0IHN0b3J5X2xpc3RfaHRtbCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5tYXBcbiAgICAoZnVuIChpZCwgY20pIC0+XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpbIEh0bWwuYV92YWx1ZSAoc3RyaW5nX29mX2ludCBpZCkgXVxuICAgICAgICAoSHRtbC50eHRcbiAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWkgKCVhKUBdXCIgaWRcbiAgICAgICAgICAgICAgS2FzdG9yX2NsaWVudC5wcmludF9jb21wcmVzc2lvbl9tb2RlcyBjbSkpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbGlzdClcblxubGV0IHNlbGVjdF9zdG9yaWVzID0gVHl4bWxfanMuUi5IdG1sNS5zZWxlY3Qgc3RvcnlfbGlzdF9odG1sXG5sZXQgc2VsZWN0X3N0b3JpZXNfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBzZWxlY3Rfc3Rvcmllc1xuXG5sZXQlaHRtbCBzZXR1cF9mb3JtID1cbiAge3w8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWw+Q29tcHJlc3Npb24gbGV2ZWw8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgbm9uZV9jaGVja2JveCBdXG4gICAge3wgQ2F1c2FsPC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIHdlYWtfY2hlY2tib3ggXVxuICAgIHt8IFdlYWtseTwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBzdHJvbmdfY2hlY2tib3ggXVxuICAgIHt8IFN0cm9uZ2x5PC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPnx9XG4gICAgWyBsYXVuY2hfYnV0dG9uIF1cbiAgICB7fDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPlNlbGVjdGVkIHN0b3J5PC9sYWJlbD58fVxuICAgIFsgc2VsZWN0X3N0b3JpZXMgXVxuICAgIHt8XG4gICAgPC9kaXY+XG4gICAgPC9mb3JtPnx9XG5cbmxldCBzdG9yeV9sb2csIGxvZ19jb250cm9sID0gUmVhY3QuUy5jcmVhdGUgW11cbmxldCBjdXJyZW50X2luZm8sIHNldF9pbmZvID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgc3RvcnlfbG9nX2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biBsaW5lIC0+IEh0bWwudHh0IChsaW5lIF4gXCJcXG5cIikpXG4gICAgKFJlYWN0aXZlRGF0YS5STGlzdC5yZXYgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzdG9yeV9sb2cpKVxuXG5sZXQgbG9nX2RpdiA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIiBdIF0gc3RvcnlfbG9nX2h0bWxcblxubGV0IGxvZ19wYW5lbCA9XG4gIFtcbiAgICBVaV9jb21tb24ubmF2dGFicyBcInN0b3J5bG9nbmF2dGFiXCJcbiAgICAgIFtcbiAgICAgICAgXCJzdG9yeV9jb21wdXRhdGlvbl9sb2dcIiwgTm9uZSwgUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5O1xuICAgICAgICBcInN0b3J5X2luZm9fbG9nXCIsIE5vbmUsIFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eTtcbiAgICAgIF07XG4gICAgVWlfY29tbW9uLm5hdmNvbnRlbnQgWyBcInBhbmVsLXNjcm9sbFwiIF1cbiAgICAgIFtcbiAgICAgICAgXCJzdG9yeV9jb21wdXRhdGlvbl9sb2dcIiwgW10sIFsgbG9nX2RpdiBdO1xuICAgICAgICBcInN0b3J5X2luZm9fbG9nXCIsIFsgXCJwYW5lbC1wcmVcIiBdLCBbIFR5eG1sX2pzLlIuSHRtbDUudHh0IGN1cnJlbnRfaW5mbyBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgZ3JhcGhfZGlzcGxheV9pZCA9IFwic3RvcnlfZ3JhcGhfZGlzcGxheVwiXG5sZXQgc3RvcnlfZ3JhcGggPSBKc19zdG9yeS5jcmVhdGVfc3RvcnlfcmVuZGVyaW5nIGdyYXBoX2Rpc3BsYXlfaWRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtNVwiOyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgKHNldHVwX2Zvcm0gOjogbG9nX3BhbmVsKTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZ3JhcGhfZGlzcGxheV9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC03XCI7IFwiZmxleC1jb250ZW50XCIgXTtcbiAgICAgICAgXVxuICAgICAgW107XG4gIF1cblxubGV0IGxpZnRfcmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVcblxubGV0IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiQ29uZmlnIGNvbXByZXNzaW9uXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgY2F1c2FsID0gSnMudG9fYm9vbCBub25lX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIGxldCB3ZWFrID0gSnMudG9fYm9vbCB3ZWFrX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIGxldCBzdHJvbmcgPSBKcy50b19ib29sIHN0cm9uZ19ib3gjIy5jaGVja2VkIGluXG4gICAgICBtYW5hZ2VyI2NvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgICAgID58PSBsaWZ0X3Jlc3VsdClcblxubGV0IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCA9XG4gIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICBsZXQgXyA9IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSBpblxuICAgICAgSnMuX2ZhbHNlKVxuXG5sZXQgc2V0X2Ffc3RvcnkgPVxuICBsZXQgcHJlZF9pZCA9IHJlZiBtYXhfaW50IGluXG4gIGZ1biAoKSAtPlxuICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyBzZWxlY3Rfc3Rvcmllc19kb20jIy52YWx1ZSBpblxuICAgIGlmIHZhID0gXCJcIiB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gbWF4X2ludCBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBpZCA9IGludF9vZl9zdHJpbmcgdmEgaW5cbiAgICAgIGlmICFwcmVkX2lkIDw+IGlkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcmVkX2lkIDo9IGlkIGluXG4gICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1hbmFnZXIjc3RvcnlfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IFNvbWUgKF9jbSwgZCwgdikgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfaW5mb1xuICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbaWRzOiBAWyVhQF1AIHQ9QFslYUBdQCBldmVudD1AWyVhQF1AXVwiXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmxvYXQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCkpKVxuICAgICAgICAgICAgICAgICAgICAgZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzdG9yeV9ncmFwaCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoR3JhcGhfanNvbi50b19qc29uIHYpKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIClcblxubGV0IHJlYyBpbnNwZWN0X3N0b3JpZXMgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIlN0b3JpZXMgbGlzdFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbGlzdF9jb250cm9sXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAgICAoZnVuIGlkIChjbSwgXywgXykgYWNjIC0+IChpZCwgY20pIDo6IGFjYylcbiAgICAgICAgICAgICBtYW5hZ2VyI3N0b3J5X2xpc3QgW10pXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gbG9nX2NvbnRyb2wgbWFuYWdlciNzdG9yeV9sb2cgaW5cbiAgICAgIHNldF9hX3N0b3J5ICgpKVxuICA+Pj0gZnVuIF8gLT5cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJTdG9yaWVzIGNvbXB1dGluZ1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbWFuYWdlciNpc19jb21wdXRpbmcpKVxuICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICB+b2s6KGZ1biBiIC0+XG4gICAgICAgICAgaWYgYiAmJiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlblxuICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCAzLiA+Pj0gaW5zcGVjdF9zdG9yaWVzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgICAgTHd0LmFzeW5jIGluc3BlY3Rfc3RvcmllcylcbiAgaW5cbiAgbGV0ICgpID0gbm9uZV9ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gd2Vha19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID0gc3Ryb25nX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPVxuICAgIHNlbGVjdF9zdG9yaWVzX2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPSBzZXRfYV9zdG9yeSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbGF1bmNoX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiTGF1bmNoIHN0b3JpZXNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgaWYgbWFuYWdlciNzdG9yeV9pc19jb21wdXRpbmcgdGhlblxuICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNyYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gbGlmdF9yZXN1bHQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbmF2X3RhYl9pZCA9IFwibmF2dGFic1wiXG5cbmxldCBuYXZ0YWJzICgpID1cbiAgbGV0IHN0b3J5X2NsYXNzID1cbiAgICBTb21lXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICBpZiBzLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgICBbXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpXG4gIGluXG4gIFR5eG1sX2pzLlRvX2RvbS5vZl91bFxuICBAQCBVaV9jb21tb24ubmF2dGFicyBuYXZfdGFiX2lkXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgTm9uZSwgVGFiX2VkaXRvci5uYXZsaSAoKTtcbiAgICAgICAgIFwibG9nXCIsIE5vbmUsIFRhYl9sb2cubmF2bGkgKCk7XG4gICAgICAgICBcInBsb3RcIiwgTm9uZSwgVGFiX3Bsb3QubmF2bGkgKCk7XG4gICAgICAgICBcIkRJTlwiLCBOb25lLCBUYWJfZmx1eC5uYXZsaSAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgTm9uZSwgVGFiX3NuYXBzaG90Lm5hdmxpICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIE5vbmUsIFRhYl9vdXRwdXRzLm5hdmxpICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIHN0b3J5X2NsYXNzLCBUYWJfc3Rvcmllcy5uYXZsaSAoKTtcbiAgICAgICAgIFwiYWJvdXRcIiwgTm9uZSwgVGFiX2Fib3V0Lm5hdmxpICgpO1xuICAgICAgIF1cblxubGV0IG5hdmNvbnRlbnRzX2lkIDogc3RyaW5nID0gXCJuYXZjb250ZW50c1wiXG5cbmxldCBuYXZjb250ZW50cyAoKSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9kaXZcbiAgQEAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOm5hdmNvbnRlbnRzX2lkIFtdXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgWyBcInJvd1wiIF0sIFRhYl9lZGl0b3IuY29udGVudCAoKTtcbiAgICAgICAgIFwibG9nXCIsIFtdLCBUYWJfbG9nLmNvbnRlbnQgKCk7XG4gICAgICAgICBcInBsb3RcIiwgW10sIFRhYl9wbG90LmNvbnRlbnQgKCk7XG4gICAgICAgICBcIkRJTlwiLCBbXSwgVGFiX2ZsdXguY29udGVudCAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgW10sIFRhYl9zbmFwc2hvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIFtdLCBUYWJfb3V0cHV0cy5jb250ZW50ICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIFsgXCJyb3dcIiBdLCBUYWJfc3Rvcmllcy5jb250ZW50ICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBbIFwicGFuZWwtc2Nyb2xsXCIgXSwgVGFiX2Fib3V0LmNvbnRlbnQgKCk7XG4gICAgICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9mbHV4Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc25hcHNob3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2Fib3V0Lm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICBsZXQgKCkgPSBUYWJfZWRpdG9yLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9sb2cub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2ZsdXgub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3NuYXBzaG90Lm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9hYm91dC5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgU3RhdGVfc2V0dGluZ3Muc3luYyAoKSA+Pj0gU3RhdGVfcnVudGltZS5zeW5jID4+PSBTdGF0ZV9wcm9qZWN0LnN5bmNcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX2ZpbGUuc3luYyAoKSA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0XG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIEx3dC5yZXR1cm5fdW5pdCA+Pj0gU3RhdGVfc2V0dGluZ3MuaW5pdCA+Pj0gU3RhdGVfcnVudGltZS5pbml0XG4gID4+PSBTdGF0ZV9wcm9qZWN0LmluaXQgPj49IFN0YXRlX2ZpbGUuaW5pdCA+Pj0gU3RhdGVfc2ltdWxhdGlvbi5pbml0ID4+PSBzeW5jXG5cbmxldCByZWMgbG9vcCAoaCA6IHVuaXQgLT4gdW5pdCBMd3QudCkgKHQgOiBmbG9hdCkgKCkgOiB1bml0IEx3dC50ID1cbiAgaCAoKSA+Pj0gKGZ1biBfIC0+IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdCkgPj49IGxvb3AgaCB0XG5cbmxldCBsb29wX3N5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgaWYgUmVhY3QuUy52YWx1ZSBTdGF0ZV9zZXR0aW5ncy5zeW5jaCB0aGVuIChcbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImxvb3Agc3luY1wiKSBpblxuICAgIHN5bmMgKClcbiAgKSBlbHNlXG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgTHd0LnJldHVybl91bml0ID4+PSBpbml0ID4+PSBsb29wIGxvb3Bfc3luYyAyMC4wKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9ubG9hZCAoXyA6ICdhKSA6IGJvb2wgSnMudCA9XG4gIGxldCAoKSA9IFN0YXRlX3VpLm9ubG9hZCAoKSBpblxuICBsZXQgbWFpbiA9IFVpX2NvbW1vbi5pZF9kb20gXCJtYWluXCIgaW5cbiAgbGV0ICgpID1cbiAgICBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoUGFuZWxfcHJvamVjdHMuY29udGVudCAoKSkpXG4gIGluXG4gIGxldCAoKSA9IERvbS5hcHBlbmRDaGlsZCBtYWluIChQYW5lbF90YWIubmF2dGFicyAoKSkgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYi5uYXZjb250ZW50cyAoKSkgaW5cbiAgbGV0ICgpID1cbiAgICBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoUGFuZWxfc2V0dGluZ3MuY29udGVudCAoKSkpXG4gIGluXG5cbiAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFBhbmVsX3RhYi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3Mub25sb2FkICgpIGluXG5cbiAgbGV0IF8gPVxuICAgIERvbV9odG1sLndpbmRvdyMjLm9ucmVzaXplIDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3Byb2plY3RzLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfdGFiLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3Mub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgSnMuX3RydWVcblxubGV0IF8gPSBEb21faHRtbC53aW5kb3cjIy5vbmxvYWQgOj0gRG9tX2h0bWwuaGFuZGxlciBvbmxvYWRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 diff --git a/try/KaSaWorker.js b/try/KaSaWorker.js index a6c1cd882..053561308 100644 --- a/try/KaSaWorker.js +++ b/try/KaSaWorker.js @@ -103233,7 +103233,7 @@ kE=[2,d_],kF=[2,jk],kG=[2,eB],kH=[2,cJ],kI=[0,0,[2,ks],gM,0,1],kJ=[2,bP],kK=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "5662d9f", + t = "cd2389b", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/KaStorWorker.js b/try/KaStorWorker.js index d57b48879..8afea1ee5 100644 --- a/try/KaStorWorker.js +++ b/try/KaStorWorker.js @@ -75076,7 +75076,7 @@ hU=[2,c6],hV=[2,gU],hW=[2,dt],hX=[2,bU],hY=[0,0,[2,hK],e4,0,1],hZ=[2,bb],h0=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "5662d9f", + t = "cd2389b", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/index.html b/try/index.html index 422e2aa1a..f5934b6d2 100644 --- a/try/index.html +++ b/try/index.html @@ -31,22 +31,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - +